diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-01-29 14:31:05 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-01-29 14:31:05 +0000 |
| commit | d9c0bc33b5bd2c1e107cef0d4dd283b8265d6f86 (patch) | |
| tree | 9e6130f8f4f3c2e96bb6ec669dea207036464c41 | |
| parent | 8243d56e16471a09d8e50cf45db8655685d25fbf (diff) | |
| parent | 79bc14d655b71adda447b7cf031cb6228285023d (diff) | |
Merge.
115 files changed, 7 insertions, 86237 deletions
diff --git a/asdcplib/COPYING b/asdcplib/COPYING deleted file mode 100644 index c789978..0000000 --- a/asdcplib/COPYING +++ /dev/null @@ -1,26 +0,0 @@ - -AS-DCP Lib is Copyright (c) 2003-2009, John Hurst -All rights reserved. - -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. - diff --git a/asdcplib/Makefile.am b/asdcplib/Makefile.am deleted file mode 100644 index d814bed..0000000 --- a/asdcplib/Makefile.am +++ /dev/null @@ -1,30 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -# -# $Id: Makefile.am,v 1.5 2009/04/09 19:25:39 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -SUBDIRS = src win32 - -ACLOCAL_AMFLAGS = -I m4 diff --git a/asdcplib/Makefile.in b/asdcplib/Makefile.in deleted file mode 100644 index 897c13e..0000000 --- a/asdcplib/Makefile.in +++ /dev/null @@ -1,778 +0,0 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ - -# -# $Id: Makefile.am,v 1.5 2009/04/09 19:25:39 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@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@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/configure COPYING \ - build-aux/config.guess build-aux/config.sub build-aux/depcomp \ - build-aux/install-sh build-aux/ltmain.sh build-aux/missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_expat.m4 \ - $(top_srcdir)/m4/ax_lib_openssl.m4 \ - $(top_srcdir)/m4/ax_lib_xerces.m4 \ - $(top_srcdir)/m4/az_python.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.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 = $(install_sh) -d -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -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@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -EXPAT_CFLAGS = @EXPAT_CFLAGS@ -EXPAT_LDFLAGS = @EXPAT_LDFLAGS@ -EXPAT_VERSION = @EXPAT_VERSION@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPENSSL_CPPFLAGS = @OPENSSL_CPPFLAGS@ -OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@ -OPENSSL_LIBS = @OPENSSL_LIBS@ -OPENSSL_VERSION = @OPENSSL_VERSION@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PYTHON = @PYTHON@ -PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ -PYTHON_CSPEC = @PYTHON_CSPEC@ -PYTHON_EXECDIR = @PYTHON_EXECDIR@ -PYTHON_EXECPREFIX = @PYTHON_EXECPREFIX@ -PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ -PYTHON_LSPEC = @PYTHON_LSPEC@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_SHORTVERSION = @PYTHON_SHORTVERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -XERCES_CPPFLAGS = @XERCES_CPPFLAGS@ -XERCES_LDFLAGS = @XERCES_LDFLAGS@ -XERCES_LIBS = @XERCES_LIBS@ -XERCES_VERSION = @XERCES_VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -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_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = src win32 -ACLOCAL_AMFLAGS = -I m4 -all: all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__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) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -# 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): - @fail= 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; \ - ($(am__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" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= 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; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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 || \ - set "$$@" "$$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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__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 "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -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=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(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) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(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) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(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 \ - && cd "$$am__cwd" \ - || exit 1 - $(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: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { 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: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -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: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-generic \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am 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-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-recursive uninstall uninstall-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/asdcplib/README b/asdcplib/README deleted file mode 100755 index 8a63064..0000000 --- a/asdcplib/README +++ /dev/null @@ -1,778 +0,0 @@ - -$Id: README,v 1.75 2012/03/07 19:29:06 mikey Exp $ - -The asdcplib library is a set of objects that offer -simplified access to files conforming to the sound and -picture track file formats developed by the SMPTE Working -Group DC28.20. - -This work was originally funded by Digital Cinema -Initiatives, LLC (DCI). Subsequent efforts have been funded -by Deluxe Laboratories, Doremi Labs, CineCert LLC, Avica -Technology and others. - -**The asdcplib project was originally housed on SourceForge. -The project has moved to http://www.cinecert.com/asdcplib/ - -The project formerly depended upon the mxflib project. Because -of its focus on covering the whole of the MXF specifications, -mxflib is considerably larger and more complex that what I -require for this application. For this reason I have created -a dedicated MXF implementation that is now part of this -library. Special thanks to Matt Beard and Oliver Morgan for -their great work and support. - -Thanks also to the members of the SMPTE DC28.20 packaging -ad-hoc group and the members of the MXF Interop Initiative -for their encouragement and support. Special thanks to -Jim Whittlesey and Howard Lukk at DCI for proposing and -supporting this project. - - -Design Notes - -This library is intended (but of course not limited) for -use by developers of commercial D-Cinema products. It is -designed to be easily integrated into a wide variety of -development environments. Commercial users are strongly -urged to use static linking (at least where you use this -library) to prevent malicious in-field replacement of -critical system modules. This recommendation should be -considered wherever Open Source or Free software is being -used in conjunction with critical security parameters, such -as cryptographic keys. - -The author strives mightily to provide an API that is completely -independent of operating system and other library dependencies, -and which allows selective replacement of some modules for -local needs. Specifically, the essence parsers and OpenSSL -crypto functions can be replaced by linking to alternative -implementations of the ASDCP:: objects which provide those -services. - -AS_DCP.h contains the entire API. You do not need to read -any of the other files, except maybe asdcp-test.cpp which -contains detailed usage examples of each of the API's -services. The KM_* files may be of interest for general -development support, but may be ignored if all you want -is simple AS-DCP support. - - -Build Instructions - -On more-or-less POSIX systems (OS X, Linux, and BSD), GNU make and -autotools are required to build asdcplib. The same configure script -will also build this package on Windows machines with Cygwin and -MinGW installed. For those Windows users who would prefer to build -this natively, an "nmake" build file and instructions can be found -in the win32 subdirectory. - -OpenSSL is also required, and the most recent version of v0.9.8 -is recommended. See http://www.openssl.org/ for more information -and download instructions. - -Optional support for writing Timed Text Track Files is supported by -either Xerces-C or Expat. See http://xerces.apache.org/xerces-c/ or -http://expat.sourceforge.net/ for source and build instructions. - -To configure and build, type './configure' followed by 'make'. There -are several test targets on the POSIX side, but you need to assemble -a set of test files to use them. - -I have tested this build on win32, Linux, OpenBSD, and Darwin -platforms. Others may work as well. - - - - -Utilities - -asdcp-test - Writes, reads and verifies AS-DCP (MXF) track files. - -asdcp-wrap - Writes AS-DCP (MXF) track files. - -asdcp-unwrap - Extracts essence from AS-DCP (MXF) track files. - -asdcp-info - Displays information about AS-DCP (MXF) track files. - -asdcp-util - Calculates digests and generates random numbers and UUIDs. - -kmfilegen - Writes and verifies large files using a platform- -independent format. Use it to test issues related to large files. - -kmuuidgen, kmrandgen - generate UUID values and random numbers. - -wavesplit - Splits a WAVE file into two or more output files. Used - to untangle incorrectly-paired DCDM sound files. - -blackwave - Write a WAVE file full of zeros, Used to make filler - tracks (though you would be better off modifying asdcp-test if - this is a common use case). - -j2c-test - Displays information about JP2K codestreams. - - -Documentation - -The API documentation is mostly in AS_DCP.h. Read that file for -a detailed description of the library's capabilities. Read -asdcp-test.cpp for library usage examples. The command-line -utilities all respond to -h. - - -Change History - -2012-03-06 - bug fixes, enhancements 1.9.45 - o Removed ASDCP::Timestamp, all items that were of that class are now - of class Kumu::Timestamp - o Refactored Kumu::Timestamp to use KM_tai for internal representation - (replaced public Y M D, h, m, s variables) - o Refactored Kumu::Timestamp to use KM_tai for WIN32 builds - o Added UTC offset awareness to Kumu::Timestamp - o Replaced "long GetSecondsSinceEpoch(void) const" with - "ui64_t GetCTime() const" - o Corrected UL version segment in "7.1 DS" and "WTF" audio format - labels (corresponds with publication of ST 429-2:2011). - o Exposed MXF object interface (MXF.h, Metadata.h) via ASDCP MXFReader - and MXFWriter classes. - o Added UL values from ST 377-4:2012. >>>>NOTE: These are preliminary - values, subject to change upon final publication of not only ST 377-4 - but also the relevant registries. This is a good time to compare them - to the standard and complain if you think they are wrong! - o Added MCALabelSubDescriptor, AudioChannelLabelSubDescriptor, - SoundfieldGroupLabelSubDescriptor, and - GroupOfSoundfieldGroupsLabelSubDescriptor (from ST 377-4:2012) to - Metadata.h - o Changed some internals to make MXFWriter::OPAtomHeader() work correctly. - o Split asdcp-test into several different programs to help relieve - the impenetrable-list-of-arguments problem. asdcp-wrap, asdcp-unwrap - and asdcp-info take the place of asdcp-test's -c, -x and -i options, - respectively. asdcp-util contains the remaining functions. Note that - asdcp-test is now DEPRECATED, new functionality and bug fixes will be - aimed at the new tools. Also note that some options and calling - conventions are different for the new tools as compared to asdcp-test. - Please read the synopses and make sure you understand the new idioms. - o asdcp-wrap has a new argument, -C <UL>, that writes the given UL to the - ChannelAssignment item in the WaveAudioDescriptor (only useful when - writing PCM essence). - - -2011-11-30 - bug fixes v1.8.44 - o Corrected a wrong decryption UL selection when unwrapping MXF. - - -2011-10-27 - bug fixes v1.8.43 - o Corrected broken Essence UL matching. (Thanks to Michael Loder). - - -2011-08-31 - bug fixes v1.8.42 - o Added missing HFR support for PCM essence reader/writer. - - -2011-08-30 - bug fixes, enhancements v1.8.41 - o UL version byte now ignored when comparing UL values. - o Changed the version byte in the TimedTextEssence UL to 0x01. There - is no published Essence Keys registry so it can't have a maintained - version number. - o JP2K Sequence Parser modified to skip directory entries that - are not files in the case where the parser is initialized with - a directory path. When initialized with a list of file names - this check is not performed. Based on a hint by Steve Quartly. - o Increased the size of the MPEG header parser buffer. - o Added missing FrameType() implementation to ASDCP::MPEG2::MXFReader. - o Added missing Close() implementations to MXF reader classes. - o Added missing Timestamp::Timestamp(const char* datestr) implementation. - (Thanks to Matt Sheby for this and the previous three items.) - o Fixed error in Kumu::FortunaRNG::FillRandom() that was returning the - end of the random buffer instead of the front (Thanks to Mike Radford). - o Added support for proposed sound channel format identifiers - '7.1DS' and 'WTF'. Optimistically chose version '0x0c'. - o Added support for stereoscopic images in JP2K files at edit - rates of 48, 50 and 60 eups (96, 100 and 120 fps). - - -2010.11.15 - bug fixes, enhancements v1.7.40 - o Fixed bug in long KLV packet support (Thanks to Jim Radford). - o Fixed AvgBps in PCM files, *again*. Sorry for the crazy. - o More fixes and changes in support of 25, 30, 50, 60 fps. - (Thanks to Hans K. for the TC rate bug). - o Updated KLVFill UL version element to 0x02. - o Type change to support Xerces-C 3.x. (Thanks to Matt Sheby). - o Some internal API changes to KLV types. Does not affect - operation. - o Added NetworkLocator type to MXF metadata types. - o Added file offset display to klvwalk. - - -2010.09.09 - bug fixes, enhancements, v1.7.39 - o Fixed bug in JP2K PictureDescriptor initialization in - JP2K::MXFReader::OpenRead() and JP2K::MXFSReader::OpenRead() - o Once again fiddling with AvgBbs. How can something so simple - be such a constant cause of trouble? Tested with 1-, 2- and - 6-channel input Wav files. - o asdcp-test now accepts a directory name when making PCM - files (-c). The directory name should be the only filename - argument. All files in the directory must be Wav files - (mixed channel sizes OK). Files are sorted alphabetically by - filename. Hint: use numeric name infix to define order: - my_movie_00_L.wav - my_movie_01_R.wav - my_movie_02_C.wav - my_movie_03_LFE.wav - my_movie_04_LS.wav - my_movie_05_RS.wav - - -2010.07.20 - bug fixes, v1.6.37 - o Fixed TimedTextResourceSubDescriptor UL value. - - -2010.06.16 - bug fixes, v1.6.36 - o Added support for new Edit Rates to asdcp-test.cpp. - o Expanded timed-text file reader in asdcp-test.cpp. - o Fixed large BER value encoding (plaintext) and decoding - (plaintext and ciphertext). This feature was introduced in - v1.5.31). - o Fixed AvgBps value for multi-channel Wave input. - - -2010.05.13 - bug fixes, enhancements, v1.6.34 - o ST 429-5 files have corrected ULs for DCTimedTextDescriptor and - GenericStream DataElement. Files made with previous versions of - the library are incompatible with this and future versions. - o Fixed File Package TrackNumber values. Thanks to Sankar. - o Added edit rate constants to AS_DCP.h (25, 30, 50, 60). - o Changed AudioDescriptor "SampleRate" element name to "EditRate" - to make it consistent with the other types. - o Now builds with XercesC 3.x. - o KM_memio.h has better const behavior. - o Fixed a bug in KM_memio.h string archiving. - - -2010.01.05 - bug fixes, enhancements, v1.5.32 - o Re-fixed swapped Interop and SMPTE OP Atom UL values. The swap - introduced in v1.5.31 was done in error. - o Added -z,-Z options to asdcp-test (j2c parameter checking) - o Reformed jp2k-test as j2c-test, added help and list processing, - added to standard install target. - - -2009.12.31 - bug fixes, enhancements, v1.5.31 - o Fixed swapped Interop and SMPTE OP Atom UL values. - o Added get_BER_length_for_value() subroutine. - o Modified ASDCP::h__Writer::WriteEKLVPacket() to allow larger BER - lengths for KLV packets larger than 16 MB. This was required to - support large font files in the SMPTE 429-5 implementation. - - -2009.11.06 - bug fixes, enhancements, v1.5.29 - o Fixed a bug that could cause HMAC values to be incorrectly - stored in MXF files. Files created with versions of asdcplib - prior to this version may have incorrect HMAC values. - o Improved handing of XML files for MXF wrapping. - o Jpeg2000 codestream EditRate and SampleRate mismatches - now warns instead of returning an error. - o Improved error handling in Jpeg2000 sequence parsing routines. - o Added two methods to Kumu::Timestamp, AddSeconds(), to add (or - subtract) seconds to a time value, and GetSecondsSinceEpoch() - to get the number of seconds since the unix epoch. - o Added new option to asdcp-test, '-a', to specify a UUID when - creating MXF files. - o Added support for specifying the intrinsic duration of MXF files - containing timed text. - o Added new option to wavesplit, '-i', to display WAV file metadata. - - -2009.05.21 - bug fixes, v.1.4.24 - o Fixed a bug that caused incorrect SubDescriptors UL values to be - written into interop format MXF track files. Note that this involved - a substantial reorganization of MXF internals. Please test thoroughly - in your application before using in production. Note that this is a - significant bug fix and track files created with 1.4.22 may be incompatible - with other systems. - - -2009.04.09 - SMPTE format fixes, enhancements and bug fixes, v.1.4.22 - o asdcplib now uses GNU autotools on POSIX systems to configure - and build. See "./configure" for details. Note that two options, - --enable-freedist and --with-python are not enabled in the free - version of asdcplib and should not be used. - o Added build option (CONFIG_RANDOM_UUID) to enable mixed case UUID - generation when environment variable KM_USE_RANDOM_UUID is defined. - o Fixed a condition that could cause an error to occur when wrapping - SMPTE format timed text track files that do not define a starting - frame. - o Updated ULs for SMPTE format track files. - o SampleRate added to JP2K metadata - o Support for wrapping 96kHz WAV files added. - o Updated ULs for audio channel formats (ChannelFormat) - o Updated font subdescriptor MIME Types for TimedText Trackfiles. - o Changed time implementation to support dates beyond Jan 19th, 2038. - o Xerces-C XML parser support added. - o New build method for Windows (see win32/README.txt for details). - o Added new functionality in Kumu to recursively create and delete files - and directories, and get free disk space for a given volume path. - o Added a method to Kumu::Timestamp, AddMinutes(), to add (or subtract) - minutes to a time value. - o Improved how Kumu::Timestamp parses timestamps with offsets. - o Fixed a bug that caused incorrect HMAC values to be calculated. - - -2008.02.16 - SMPTE format fixes, bug fixes v.1.3.18 - o Added correct SMPTE UL for StereoscopicPictureSubDescriptor. - o Exposed JP2K metadata parser as ParseMetadataIntoDesc(). - o Added simple stereoscopic framebuffer to support paired ReadFrame() - and WriteFrame() methods (allows simpler integration with other - single-buffer code). - o Improved detection of JPEG Interop stereoscopic files. - o Win32 build fixes (Thanks to Mike Crowe at DTS). - o Added the WITH_MD macro to the makefile. Set this value to one - to build Win32 with /MD[d] instead of /MT[d]. - o The Generic Container UL has been added to the EssenceContainers - set in the header partition pack for encrypted files. It has always - been there in plaintext files. - - Below this point the changes are internal and should not affect you - unless you use Kumu directly. - o Major refactoring of KM_log.[h|cpp]. - o Fixed buffer re-sizing issue in Kumu::ByteString. - o Replaced type IdentifierList with ArchivableList. - o Added COPYING file to the release bundle. - - -2007.12.13 - Bug fixes v.1.2.17 - o Changed Result_t implementation to use int instead of long, which - was causing trouble on some 64 bit platforms. - o Fixed EKLV HMAC. NOTE: Breaks backward compatibility with older - Interop files. To validate these files, use asdcplib-1.1.14. This - should not cause too much trouble since files with broken and - non-broken HMAC have been in the wild for years without issue. - o Fixed HMAC sequence numbering in encrypted stereoscopic files. - o Finished stereoscopic test targets in the makefile. - o Fixed the win32 build, now expects VS2005 compiler by default, - use WITH_VC6=1 top get VC6 flags. - o Stereoscopic and Timed Text modes now have SMPTE UL values. - NOTE: SMPTE 429-5 and 429-10 are not yet published. It is possible - that these UL values may change before publication. Please use - caution when using these features for production work. - o Changed a bunch of symbol names in the 429-5 implementation to - better match the spec. - o Added -U option to asdcp-test to dump the UL library to stdout. - o Fixed erroneous placement of the PictureEssenceCoding UL in JP2K - files (Interop and SMPTE modes). - - -2007.10.22 - Timed Text, Stereoscopic Picture and Bug fixes v.1.2.16 - o Significant API changes have been made. Please read all entries - in this changelog to be sure you understand the changes. Also - note that some changes have been made to LS_MXF_SMPTE files that - are incompatible with earlier releases (e.g., EKLV HMAC). If - you are looking for a stable interop release, use v.1.1.14. - o Fixed RFC 2104 HMAC implementation for LS_MXF_SMPTE only. The - broken implementation has been maintained for Interop mode. - o Added support for draft SMPTE 429-5 Timed Text Track File. This - is still waiting for official SMPTE ULs, so do not use it for - shipping products. An XML parser is needed to create a Timed - Text Track File; Expat is now an optional part of the build. - Make with WITH_XML_PARSER=1 to link with Expat. If you do not - link with expat, you will get an error when using the TimedText:: - DCSubtitleParser class. See also S429-5-cgi.cpp for an example - that shows how to serve plaintext MXF file elements directly via - HTTP. - o Added support for draft SMPTE 429-10 Stereoscopic Picture Track - File, including the JPEG Interop version. This is still waiting - for official SMPTE ULs, so do not use it with LS_MXF_SMPTE for - shipping products. - o Refactored the following files as a side-effect of the above - work: AS_DCP_JP2K.cpp AS_DCP_MPEG2.cpp AS_DCP_PCM.cpp - AS_DCP_MXF.cpp AS_DCP_internal.h MXF.[h|cpp] MXFTypes.[h|cpp] - Metadata.[h|cpp] h__Reader.cpp h__Writer.cpp klvwalk.cpp. - WARNING: While significant effort has been extended to make sure - that these changes do not affect existing stable file support, - users are cautioned to test this release thouroughly. - o Added a large set of filesystem path manglers to KM_fileio.h. See - path-test.cpp for example usage. The path manglers have not yet - been tested on win32 platforms (they are currently used only by - the Timed Text module. - o The PathIsFile(), PathIsDirectory() and FileSize() subroutines - have been modified to accept const std::string& instead of - const char*. - o Added namespace and parsing support (Expat) to Kumu::XMLElement - (currently used only for Timed Text support). Also added some - new accessors. - o Altered MXF::UTF16String to use mbtowc() and wctomb(). - - -2007.03.31 - Bug fixes v.1.1.14 - o Fixed KeyFrameOffset value in MPEG wrapping to have negative - value. This is probably not yet complete for handling all - types of GOPs. Please send chunks of MPEG-2 VES that you - find which break this. Thanks to Doremi. - ** no other file format changes in this release ** - o Fixed error in RIP interpretation when reading arbitrary (i.e., - non-MXF) files. - o Fixed a memory leak in ASDCP::MXF::OPAtomHeader when used - in read mode. Thanks to Mahesh Bajaj for pointing out this - bug and the one above. - o Removed asserts from KM_fileio, replaced with RESULT_WRITEFAIL - return value statements. - o Added -s and -p to the makefile install target. - o Altered ByteString behavior to use target Length() in copy - operations (instead of Capacity()). - o Added new Set() method to ByteString. - o Fixed a bug in ByteString::Unarchive() that caused the operation - to fail when the buffer was smaller than the read (i.e., when - Capacity() was called). - o Added IdentifierList class to KM_util.h. - o Changed some Error() messages to Debug() in Wav.cpp - o Revived jp2k-test.cpp and asdcp-mem-test.cpp (they both had - stale #includes). - - -2007.02.15 - Bug fixes v1.1.13 - o Removed 'VDescObj->SampleRate.Numerator = VDesc.FrameRate;' - from MPEG2_VDesc_to_MD() in AS_DCP_MPEG2.cpp, was line 76. - o Added KM_TEST_NULL_STR_L() and KM_TEST_NULL_L() macros to - KM_log.h. These versions log the location of the null value. - Macros are now used in any module that includes KM_log.h. - o MPEG2 VES with run of zero values at the head is now OK. - o Increased VESHeaderBufSize to 16K. - o Added makefile support for local OpenSSL in ../openssl, if - present. - o The Kumu::PathIs*() functions now return false if a null or - empty string is given (used to be an assert). - o Cleaned up the install target in the makefile. - o Fixed SMPTE 429-6 HMAC -- FIPS 186-2 implementation was - laughably incorrect. Thanks to Doremi for pointing this out. - o Removed default parameter to HMACContext::InitKey(). - o Cleaned up messages and CLI arg handling in asdcp-test. - - -2006.11.19 - Mo better stuff v1.1.12 - o Changed read-only Result_t accessor methods to const. - o Added Base64 (-B) option to kmrandgen. - o Removed 16-bit alignment restriction from kmrandgen. - o Improved WAV file extraction speed (Thanks to Jim Radford - for pointing this out). - o Added single-channel split for WAV extraction (asdcp-test -1). - o Fixed remainder bug in h__RNG::fill_rand(). - - -2006.11.03 - Bug fixes v1.1.11 - o Increased index table entry list size to 5000. - o Added length checking to TLV writer (returns error if TLV - payload exceeds 64kB). - o Fixed partition header and RIP errors related to 2-partition - files (MXF Interop mode). - o Added -t option to asdcp-test (SHA-1 digest with Base64 output - on stdout). - o Fixed Sub Descriptor reference bug (Thanks to Denis Leconte - for dogged determination). - o Added directory-of-wav detection to RawEssenceType() - o Modified MXF::Partition::AddChildObject() to only generate - a UUID if the InstanceID is unset. - o Added ComponentMaxRef & ComponentMinRef to RGBAEssenceDescriptor. - More to follow. - o Added detection of 2K/4K jp2c, writing correct 4K metadata. - - -2006.10.05 - Bug fixes v1.1.10 - o Changed RM_RELEASE to RL_RELEASE in MXFTypes.h. - o Changed the MXF writer to use RL_RELEASE (was RL_DEVELOPMENT). - o Really fixed source reference chain. - o Updated JP2K file package label. - o Changed location of JPEG2000PictureSubDescriptor in the - header (was erroneously before Preface). - o Altered LS_MXF_INTEROP to produce 2-partition files. - - -2006.09.25 - Bug fixes v1.1.9 - o Fixed SourcePackageID value. All files will be 'original', - i.e. SourcePackageID will be all zeros. Let me know if you - want to set SourcePackageID. - o Fixed compiler warnings on some Linux platforms - o Fixed the build so that BUILD_DIR is no longer created - as a dependency. - o Added duration detection to the raw essence parsers. The - MPEG parser uses a nasty approximation so don't use it - without paying close attention to the result. - o Modified PCMParserList to make it more useful as a base - class. - o Fixed bugs and re-organized command-line help in asdcp-test - and klvwalk. - o Fixed two-partition file reads. - o Fixed Win32 PRNG initialization. - o Renamed asdcp-lf-test as kmfilegen. - o Added kmrandgen and kmuuidgen. - o Added string retrieval mechanism to Result_t. - o Refactored Kumu::Identifier and its sub-classes. - o Altered Kumu::PathIsFile to return true when the path - is a symbolic link (unix only). - o Altered Kumu::FileWriter::OpenWrite to use file creation - mode 0664 (was 0644) (unix only). - o Added Kumu::WriteStringIntoFile() subroutine. - - -2006.04.05 - Bug fixes and new stuff v1.1.7 - o Fixed a bug in the MPEG parser that caused it to fail when - handling start codes spanning buffer boundaries - o Added wavesplit and blackwave utility programs - o Added support for revised SMPTE HMAC key derivation when - using LS_MXF_SMPTE - o Refactored platform compatibility and general utilities - into a new sub-library "Kumu". There are no new build - steps or dependencies, but some important things have - changed: - + Result_t is no longer an enum, it is now a class. - Library result codes are now declared as const objects - like this: - - const Kumu::Result_t RESULT_FORMAT (-101, "The file..."); - - The macros ASDCP_SUCCESS and ASDCP_FAILURE still work - the same way thanks to an operator overload for type long. - See KM_error.h for more information. - + The logging interface has been moved out of AS_DCP.h - and into KM_log.h - o Some of the command line utilities that were using headers - other than AS_DCP.h have been changed to use the Kumu - equivalents. If you have code based on those utilities, you - will have to update by hand. - o Added new types to the EssenceType_t enum. - o The guard macro for Win32 code has changed from WIN32 to - KM_WIN32. - - -2006.03.2x - new stuff - o Proper handling of stream-id byte of essence UL values - o writes 3-partition files, reads 2-part or 3-part - - -2006.03.16 - bug fixes plus - o Removed SMPTE_LABELS compile-time option. The reader will now - silently accept either SMPTE or MXF Interop labels, the writer - can be instructed which to use at runtime. Default is Interop. - o Added an AIFF reader. Support is preliminary, it works with the - AIFF files I have on hand. - o More code refactoring. More to come. - - -2006.03.09 - full read-write - o Removed ASDCP_WITHOUT_OPENSSL compile-time option. - o Full read/write now working on new MXF library - - -2005.00.00 - A New Hope - o The temporary mxf-lite has been removed. MXF files are now - managed via the objects in KLV.h, MXFTypes.h MXF.h and - Metadata.h. This release does not support writing MXF files. - o Fixed a header interpretation error in the Wav parser. - - -2005.00.00 - The Reformation - o Removed mxflib as a dependency by forking the necessary - functions and placing them in the mxf-lite subdirectory. - Please note that the very heavy modifications done here - render all comparisson to mxflib code a substantial task. - All errors are now mine and users are warned not to bug - Oliver or Matt for help with this code. The version of - mxflib at the time of the fork was: 0.5.1.3. - - -2005.06.03 - bug fixes v0.10.18 - o Updated UL batch to include GC UL. - - -2005.05.27 - bug fixes v0.10.17 - o Un-did essence container and compression descriptor changes. - The default build reflects MXF Interop decisions as of 26 May. - o Added note about build versions to README (see above). - o Added warnings to SMPTE_LABELS builds. - o Fixed JP2K essence container label. - - -2005.05.02 - bug fixes v0.10.16 - o Reorganized internal files, added file reader object, added OS - portability header, removed and renamed some files. If you have a - patch against previous versions of the source, you should check - it thoroughly. - o Added RGBA attributes to JP2K descriptor. - o Changed interface to CodestreamParser. - o Added JP2K parser implementation. It is parsing each frame but is - not yet being used to populate the descriptor. - o Added 48fps option for `asdcp-test -p`. - o Added picture rate constants to AS_DCP.h (23.976, 24, 48). - o Added sample rate constant to AS_DCP.h (48k). - o Changed asdcp-test to encrypt picture headers by default - (plaintext offset will be 0), added -E option to allow - plaintext headers. - - -2005.04.28 - bug fixes v0.9.15 - o The XML descriptors for the crypto DMS have moved in mxflib to - the file DMS_Crypto.xml (they were in DMS_DCPENC.xml). Older - installations should update the file from mxflib. - o Added Close() and Seek() to ~MyFileWriter(), cleaned up headers - o Added UUID generator output mode (-u). - o Added -S option to extract PCM essence into stereo wav files - o Added more UL testing and conformance checking. - o Added macro SMPTE_LABELS which causes the library to be built - with SMPTE (as opposed to MXF Interop) labels. This is not - set by default, and currently only affects the PCM container - label and encrypted element label. - o Cleaned up the GNUmakefile test targets, the source files - are now named with the TEST_FILE_PREFIX macro. - o enabled 23.976-framed PCM (2002 samples per frame) - o The size of the asdcp-test frame buffer for picture essence - may now be set from the command line (-b). The default is 4MB. - o h__Reader::ReadEKLVPacket() now tests the UL (duh) and switches - on the value, allowing plaintext and ciphertext frames to - be mixed in the file. - o Fixed error in UUID generator format. - o JP2K files now use the GenericPictureDescriptor to store - ContainerDuration and SampleRate. SampleRate is mapped - to EditRate in the PictureDescriptor struct. This fixes - the second caveat from the 0.8.13 release. - o Fxed bug in PCMParserList that was miscalculating the extent - of a PCM sample. This bug did not affect API users, it was - only present in asdcp-test. - o Fixed EditRate on PCM files (was showing sample rate) - o Fixed Encrypted Essence Container UL - o Fixed BlockAlign value for PCM essence - - - The following changes were provided by Jeff Loewenguth - - Thanks Jeff! - o Moved the DMS CryptographicFramework entry from the material - package to the source package - o Fixed erroneous Source Essence Container Label value - o Fixed broken sort of JP2K frames in JP2K parser - o Added FindFrameGOPStart() method to the MPEG2 MXFReader - o Added missing length values for EKLV packets without HMAC - o -x with JP2K essence writes to files with 6 digit names - (up from 5 digits). - o The Key ID may now be specified as an argument to asdcp-test - (-j <key-id-string>) - - -2004.12.30 - bug fixes + wav files v0.8.14 - o Added WAV file write to asdcp-test (uses mxflib::waveheader_t). - o Three-partition files reading properly. adscplib still writes - two-partition files. - o Changes in the mxflib WAV essence parser API had broken - asdcplib's ability to read essence from a WAV file. I have - fixed this bug, but at the expense of breaking compatibility - with older versions of mxflib. Beware! - o Removed redundant (but working) bin-text-bin conversions. - - -2004.12.23 - JPEG 2000 support v0.8.13 - o Reads/writes JPEG 2000 essence in plaintext and ciphertext - with the following caveats: - - The Picture Essence Descriptor is empty. - - Because there is no essence descriptor, the reader code - in asdcp-test has no idea how many frames are in the file - and ends with an out-of-bounds frame error. This error - is being suppressed in asdcp-test for the current release. - o Still broken when reading three-partition files. - - -2004.10.22 - fixes and UL updates v0.7.11 - WARNING: COMPATIBILITY BREAKPOINT - Files created with this and future versions of this library are - not compatible with previous versions of this library. As you - might suspect, files created with previous versions of this - library are not compatible with this and future versions. - - o h__Reader will now open a three-partitition file (untested) - o Moved DMS from Material partition to File partition - o Added length fields to appropriate places in EKLV packet - - -2004.10.22 - fixes and UL updates v0.7.10 - o fixed frame buffer handling of externally allocated buffer, - created unit test (asdcp-mem-test) - o added operator==() and operator!=() to Rational type - o fixed some type-related compiler warnings - o asdcp-test -p now works on unwrap - o updated some ULs to match documentation (thanks to Arun - for the submission) - o canonicalized line endings - - -2004.07.02 - full plaintext + ciphertext read/write v0.6.9 - o HMAC, plaintext offest and raw ciphertext read supported - o back to proper CBR index - o MPEG temporal offset working - - -2004.07.01 - plaintext + ciphertext read/write v0.5.8 - o encryption of MPEG and PCM essence supported with the - following caveats: - - no HMAC support - - no plaintext offest support - - no raw ciphertext read support - o moved to reflecting the whole KLV triplet in the CBR - index (now incompatible with mxflib, still searching - for info about what's "right") - o awaitng the following fixes/features: - - retrieve Temporal Offset from index in MPEG2::Reader - - test for correct ULs when reading frame triplets - - fix header metadata items for encrypted files - - HMAC support - - plaintext offest support - - raw ciphertext read support - - -2004.06.14 - plaintext read/write w/key generator v0.4.5 - o Project now uses OpenSSL (tested with 0.9.7d on win32, Linux, Darwin) - Use `make ASDCP_WITHOUT_OPENSSL=1` to make plaintext-only version - o Accepts interior I frames when parsing MPEG2 VES - o Improved error reporting on format errors - o Added support for encryption to asdcp-test - o Added RNG for asdcp-test (non-production use only, see notes in FortunaRNG.h) - o Implemented CBC encrypt, decrypt module - o Added partial TemporalOffset retrieval from MPEG2 parser - o Fixed win32 binmode bug - - -2004.05.12 - plaintext read/write v0.3.4 - o Full read/write of plaintext MPEG-2 VES and WAV files - (does not yet support mux from or demux to 2 channel pairs) - o Builds with autoconf-based mxflib - o Added ASDCP_ prefix to macros - o Updated documentation, fixed documentation errors - o Simplified API for MXF writer setup - o Decoupled essence parsers from MXF writers - o added raw ciphertext support to FrameBuffer - o Cleaned up Get/Set naming confusion - o Added missing const qualifiers - - -2004.04.27 - preview release v0.2.1 - o hasty release for quick review - o this release may not build with mxflib using autoconf. - o writes plaintext AS-DCP MPEG2 essence files - o tested under win32 and linux. FreeBSD and Darwin do not work - - -2004.02.04 - First release (v0.1.1): - o asdcp-test is mostly complete. It should correctly provide - access to the read and info capabilities of the library. - o The MPEG2 reader is functional but not fully tested. - o Some file format integrity tests remain to be coded. - o The PCM reader is mostly complete, I am having difficulty - getting a suitable test file from mxfwrap. - o The makefile creates a static library module. The API - will cleanly support a DSO (or DLL). Let me know if DSO - support is important to you. - o Nothing is thread safe. Thread safety was not a requirement - in the initial project definition. Thread safety may be added - above the mxflib/klvlib level. Let me know if it is important - to you. - o The files xmldict.xml and types.xml must be in the current - directory when the program is run. The files are supplied - with mxflib. Runtime location of the files is not currently - a project goal. Comments on how best to handle this situation - would be appreciated. See AS_DCP.cpp at init_mxf_types() - for a more detailed discussion. - --- diff --git a/asdcplib/aclocal.m4 b/asdcplib/aclocal.m4 deleted file mode 100644 index de62d1d..0000000 --- a/asdcplib/aclocal.m4 +++ /dev/null @@ -1,980 +0,0 @@ -# generated automatically by aclocal 1.11.3 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -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'.])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 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 1 - -# 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.11' -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.11.3], [], - [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 AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.3])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005, 2011 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 1 - -# 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, 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 9 - -# 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 -m4_define([_AM_COND_VALUE_$1], [$2])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, 2009, -# 2010, 2011 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 - -# 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'. - rm -rf conftest.dir - 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 - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - 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 - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 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 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - 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, 2009 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 16 - -# 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.62])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) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -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 -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# 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, 2008, 2011 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 1 - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -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, 2009 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_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.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 -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -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, 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 6 - -# 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 -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# 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, 2011 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 1 - -# 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, 2008, 2010 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_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], -[m4_foreach_w([_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, 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 5 - -# 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 -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# 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, 2011 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 1 - -# 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, 2008, 2010 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_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005, 2012 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. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} 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 - -m4_include([m4/ax_lib_expat.m4]) -m4_include([m4/ax_lib_openssl.m4]) -m4_include([m4/ax_lib_xerces.m4]) -m4_include([m4/az_python.m4]) -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) diff --git a/asdcplib/build-aux/config.guess b/asdcplib/build-aux/config.guess deleted file mode 100755 index 49ba16f..0000000 --- a/asdcplib/build-aux/config.guess +++ /dev/null @@ -1,1522 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-01-01' - -# 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. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to <config-patches@gnu.org> and include a 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. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -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 tuples: *-*-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 -q __ELF__ - 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'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - 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 ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - 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:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-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 <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 && - 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 <sys/systemcfg.h> - - 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:*:[4567]) - 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 <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 - 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 -q __LP64__ - 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 <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 && 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:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-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*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - 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 ;; - 8664:Windows_NT:*) - echo x86_64-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 ;; - 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 -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - 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 - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - 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:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #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; } - ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - 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 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-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 ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - 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.[02]*:*) - 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' </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 ;; - 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 i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-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; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - 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; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; 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.[02]*:*) - 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 <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes <hewes@openmarket.com>. - # 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 ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - 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 - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - 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 ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - 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 ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - 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 <<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\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 <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 && 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 <<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 - - http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -and - http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -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/asdcplib/build-aux/config.sub b/asdcplib/build-aux/config.sub deleted file mode 100755 index d6b6b3c..0000000 --- a/asdcplib/build-aux/config.sub +++ /dev/null @@ -1,1766 +0,0 @@ -#! /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, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-01-01' - -# 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 <config-patches@gnu.org>. Submit a context -# diff and a properly formatted GNU 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. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# 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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -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-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-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 | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -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 \ - | be32 | be64 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | 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 \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-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-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | 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-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | 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-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | 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-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # 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 - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - 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 - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - 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 | 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 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - 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*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 - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - 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-/'` - ;; - msys) - basic_machine=i386-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - 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 - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - 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 | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - 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 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 - ;; - tile*) - basic_machine=$basic_machine-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 - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-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[24]aeb | 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. - -auroraux) - os=-auroraux - ;; - -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* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -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* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -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* | -es*) - # 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 - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -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 - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - 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 - ;; - 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 - ;; - -cnk*|-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/asdcplib/build-aux/depcomp b/asdcplib/build-aux/depcomp deleted file mode 100755 index bd0ac08..0000000 --- a/asdcplib/build-aux/depcomp +++ /dev/null @@ -1,688 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2011-12-04.11; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011 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, see <http://www.gnu.org/licenses/>. - -# 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 outputting 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 - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -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. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## 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 "s|.*$object$||" -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. - 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.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # 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,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$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" - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/ \1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/ / - G - p -}' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # 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 - ;; - -#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 "X$1" != 'X--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 "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - 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. - -arch) - eat=yes ;; - -*|$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" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$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 "X$1" != 'X--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. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # 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 - ;; - -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-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/asdcplib/build-aux/install-sh b/asdcplib/build-aux/install-sh deleted file mode 100755 index a9244eb..0000000 --- a/asdcplib/build-aux/install-sh +++ /dev/null @@ -1,527 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2011-01-19.21; # UTC - -# 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. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -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: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -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. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; 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 "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - 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 - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 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 problematic for `test' and other utilities. - 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 "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # 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: $dst_arg: 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 - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && 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"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # 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. - { - test ! -f "$dst" || - $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 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || 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-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/asdcplib/build-aux/ltmain.sh b/asdcplib/build-aux/ltmain.sh deleted file mode 100644 index 63ae69d..0000000 --- a/asdcplib/build-aux/ltmain.sh +++ /dev/null @@ -1,9655 +0,0 @@ - -# libtool (GNU libtool) 2.4.2 -# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010, 2011 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. - -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [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 -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --no-warn don't display warning messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# 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. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to <bug-libtool@gnu.org>. -# GNU libtool home page: <http://www.gnu.org/software/libtool/>. -# General help using GNU software: <http://www.gnu.org/gethelp/>. - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.2 -TIMESTAMP="" -package_revision=1.3337 - -# 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+"$@"}'='"$@"' - 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 - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# 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" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -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 that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# 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 "$opt_dry_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" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# 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= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_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 $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_warning=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-warning|--no-warn) - opt_warning=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE 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. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# 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 () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - 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 "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # 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. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # 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 - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T <<EOF -# $write_libobj - a libtool object file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object=$write_lobj - -# Name of the non-PIC object -non_pic_object=$write_oldobj - -EOF - $MV "${write_libobj}T" "${write_libobj}" - } -} - - -################################################## -# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # -################################################## - -# func_convert_core_file_wine_to_w32 ARG -# Helper function used by file name conversion functions when $build is *nix, -# and $host is mingw, cygwin, or some other w32 environment. Relies on a -# correctly configured wine environment available, with the winepath program -# in $build's $PATH. -# -# ARG is the $build file name to be converted to w32 format. -# Result is available in $func_convert_core_file_wine_to_w32_result, and will -# be empty on error (or when ARG is empty) -func_convert_core_file_wine_to_w32 () -{ - $opt_debug - func_convert_core_file_wine_to_w32_result="$1" - if test -n "$1"; then - # Unfortunately, winepath does not exit with a non-zero error code, so we - # are forced to check the contents of stdout. On the other hand, if the - # command is not found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both error code of - # zero AND non-empty stdout, which explains the odd construction: - func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # 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= - pie_flag= - - 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) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append 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,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append 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. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # 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 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - 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 "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - 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 $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "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." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # 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 - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - 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." - - $opt_dry_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 - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - 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$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - 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." - - $opt_dry_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 - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [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: $progname [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 - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -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: $progname [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: $progname [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: $progname [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 following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [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 - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -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 - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -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] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -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: $progname [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." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - 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 - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; 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 - else - $lt_unset $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 -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - 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" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # 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. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - 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. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append 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 -e "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. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - 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 - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_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 - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append 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 - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_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 - func_basename "$file" - destfile="$func_basename_result" - 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 - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "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) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen <import library>. - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # 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/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - 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*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - 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 "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# 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. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - 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 - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $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_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - 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 - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - 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" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_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've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# 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. -sed_quote_subst='$sed_quote_subst' - -# 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+\"\$@\"}'='\"\$@\"' - 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 variables: - generated_by_libtool_version='$macro_version' - 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 - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED '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 \"\$file\" | $SED '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 \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - 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 "\ - - # 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 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # 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 \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - 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 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat <<EOF - -/* $cwrappersource - temporary wrapper executable for $objdir/$outputname - Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION - - 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. -*/ -EOF - cat <<"EOF" -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include <stdio.h> -#include <stdlib.h> -#ifdef _MSC_VER -# include <direct.h> -# include <process.h> -# include <io.h> -#else -# include <unistd.h> -# include <stdint.h> -# ifdef __CYGWIN__ -# include <io.h> -# endif -#endif -#include <malloc.h> -#include <stdarg.h> -#include <assert.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <sys/stat.h> - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#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 -# define FOPEN_WB "wb" -# 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 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <<EOF -volatile const char * MAGIC_EXE = "$magic_exe"; -const char * LIB_PATH_VARNAME = "$shlibpath_var"; -EOF - - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - func_to_host_path "$temp_rpath" - cat <<EOF -const char * LIB_PATH_VALUE = "$func_to_host_path_result"; -EOF - else - cat <<"EOF" -const char * LIB_PATH_VALUE = ""; -EOF - fi - - if test -n "$dllsearchpath"; then - func_to_host_path "$dllsearchpath:" - cat <<EOF -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "$func_to_host_path_result"; -EOF - else - cat <<"EOF" -const char * EXE_PATH_VARNAME = ""; -const char * EXE_PATH_VALUE = ""; -EOF - fi - - if test "$fast_install" = yes; then - cat <<EOF -const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ -EOF - else - cat <<EOF -const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ -EOF - fi - - - cat <<"EOF" - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - intptr_t rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (strcmp (argv[i], dumpscript_opt) == 0) - { -EOF - case "$host" in - *mingw* | *cygwin* ) - # make stdout use "unix" line endings - echo " setmode(1,_O_BINARY);" - ;; - esac - - cat <<"EOF" - lt_dump_script (stdout); - return 0; - } - if (strcmp (argv[i], debug_opt) == 0) - { - lt_debug = 1; - continue; - } - if (strcmp (argv[i], ltwrapper_option_prefix) == 0) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - -EOF - cat <<EOF - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); -EOF - cat <<"EOF" - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); -EOF - - cat <<EOF - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], "$objdir"); - strcat (newargz[0], "/"); -EOF - - cat <<"EOF" - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; -EOF - - case $host_os in - mingw*) - cat <<"EOF" - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } -EOF - ;; - esac - - cat <<"EOF" - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must - be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) - because on Windows, both *_VARNAMEs are PATH but uninstalled - libraries must come first. */ - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - -EOF - - case $host_os in - mingw*) - cat <<"EOF" - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -EOF - ;; - *) - cat <<"EOF" - execv (lt_argv_zero, newargz); - return rval; /* =127, but avoids unused variable warning */ -EOF - ;; - esac - - cat <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "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; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -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; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - 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 (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - 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 (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - 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 * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -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; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # 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= - new_inherited_linker_flags= - - avoid_version=no - bindir= - 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 - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - 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 - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append 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 - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - 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 - func_append 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. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append 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 - func_append 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" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - 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 - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - 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 - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - 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*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append 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* | *-cegcc* | *-*-haiku*) - # 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 - func_append deplibs " System.ltframework" - 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 - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - 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*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - 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 - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - 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 - func_append 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. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append 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 - func_append 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" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - 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. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'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\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - 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 $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append 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 $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append 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 dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - 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 - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - 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 "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - 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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - 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 func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - 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 - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - 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 - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - 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 - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - 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 use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - 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. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # 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 - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append 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 - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - 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. - func_append dlprefiles " $lib $dependency_libs" - else - func_append 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 - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$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 - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - 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 - func_append 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*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - 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 $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append 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 - *"$absdir:"*) ;; - *) func_append 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 "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append 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 - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && 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 "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - 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* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - 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 "$opt_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 (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; 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 - elif test -n "$old_library"; then - 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 && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$absdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append 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 - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append 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:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; 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:"*) ;; - *) func_append 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 - [\\/]*) - func_append 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*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append 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" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - 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 "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - 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 "*) ;; - *) func_append 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 "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append 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 - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - 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 - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # 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="$1" - number_minor="$2" - number_revision="$3" - # - # 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 - # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - 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]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - 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]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - 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]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - 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 - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - 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 - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - 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 - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - 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 - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - 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 - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_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 | *.gcno) - ;; - $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 - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "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 - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append 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 "*) ;; - *) func_append 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 "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-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 - func_append 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. - $opt_dry_run || $RM conftest.c - cat > conftest.c <<EOF - int main() { return 0; } -EOF - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then - ldd_output=`ldd conftest` - for i in $deplibs; do - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - func_append 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; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - func_append 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 - ;; - *) - func_append newdeplibs " $i" - ;; - esac - 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 - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $i; then - ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - func_append 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; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - func_append 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 - ;; - *) - func_append newdeplibs " $i" - ;; - esac - done - fi - ;; - file_magic*) - set dummy $deplibs_check_method; shift - file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - if test -n "$file_magic_glob"; then - libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` - else - libnameglob=$libname - fi - test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - if test "$want_nocaseglob" = yes; then - shopt -s nocaseglob - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - 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 "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append 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 - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append 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 - func_append 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 - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; 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 " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - 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 - ;; - esac - ;; - 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 with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - 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 - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - 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 " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append 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 - # Remove ${wl} instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_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 - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - 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"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append 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 "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append 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 "$opt_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 - shift - realname="$1" - 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 - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "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" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_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:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # 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 - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append 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. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - 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~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "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" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - 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\" - test "X$libobjs" = "X " && libobjs= - 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 - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( 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 "$opt_mode" = relink; then - $opt_dry_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 - func_show_eval '${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 - func_show_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 "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_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 "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${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" - # $opt_dry_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" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - 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 "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append 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 "*) ;; - *) func_append 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"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append 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"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append 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 "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - 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 - func_append 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 - func_append 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 "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - 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" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED '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 "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "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}\" || $lt_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 - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - 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 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - 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 $symfileobj" - 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" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append 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 - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # 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 - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$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 - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$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= - len=$len0 - 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 - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "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}\" || $lt_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 - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; 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 "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - 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) - func_basename "$deplib" - name="$func_basename_result" - func_resolve_sysroot "$deplib" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# 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' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_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 - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - 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) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - 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 func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append 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 - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# 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: -# vi:sw=2 - diff --git a/asdcplib/build-aux/missing b/asdcplib/build-aux/missing deleted file mode 100755 index 86a8fc3..0000000 --- a/asdcplib/build-aux/missing +++ /dev/null @@ -1,331 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2012-01-06.13; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 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, see <http://www.gnu.org/licenses/>. - -# 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 - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -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 - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# 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). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - *) - 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 $program 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 $? - 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 - ;; - - *) - 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-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/asdcplib/configure b/asdcplib/configure deleted file mode 100755 index 041db0f..0000000 --- a/asdcplib/configure +++ /dev/null @@ -1,19146 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for asdcplib 1.9.45. -# -# Report bugs to <asdcplib@cinecert.com>. -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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=: - # Pre-4.2 versions of Zsh do 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_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -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.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -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 - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do 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_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: asdcplib@cinecert.com about your system, including any -$0: error possibly output before this message. Then install -$0: a modern shell, or manually run the script under such a -$0: shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_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 || -$as_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" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -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 - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # 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" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_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 -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -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 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - 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 -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='mkdir -p "$as_dir"' -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'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 </dev/null -exec 6>&1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/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= - -# Identity of this package. -PACKAGE_NAME='asdcplib' -PACKAGE_TARNAME='asdcplib' -PACKAGE_VERSION='1.9.45' -PACKAGE_STRING='asdcplib 1.9.45' -PACKAGE_BUGREPORT='asdcplib@cinecert.com' -PACKAGE_URL='' - -ac_unique_file="src/KM_error.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -ENABLE_RANDOM_UUID_FALSE -ENABLE_RANDOM_UUID_TRUE -DEV_HEADERS_FALSE -DEV_HEADERS_TRUE -FREEDIST_FALSE -FREEDIST_TRUE -HAVE_PYTHON_FALSE -HAVE_PYTHON_TRUE -PYTHON_EXECDIR -PYTHON_EXECPREFIX -PYTHON_PREFIX -PYTHON_LDFLAGS -PYTHON_LSPEC -PYTHON_SHORTVERSION -PYTHON_CPPFLAGS -PYTHON_CSPEC -PYTHON -PYTHON_USE_FALSE -PYTHON_USE_TRUE -XERCES_VERSION -XERCES_LIBS -XERCES_LDFLAGS -XERCES_CPPFLAGS -EXPAT_VERSION -EXPAT_LDFLAGS -EXPAT_CFLAGS -OPENSSL_VERSION -OPENSSL_LIBS -OPENSSL_LDFLAGS -OPENSSL_CPPFLAGS -CXXCPP -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -OPENBSD_HOST_FALSE -OPENBSD_HOST_TRUE -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_largefile -with_openssl -with_expat -with_expat_inc -with_expat_lib -with_xerces -with_xerces_inc -with_xerces_lib -with_python -enable_freedist -enable_dev_headers -enable_random_case_UUID -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -CPP -CXXCPP -PYTHON' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# 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= ;; - *) 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_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=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_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=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 ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_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'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -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 - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -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 - $as_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 .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# 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 -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - 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 .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - 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 asdcplib 1.9.45 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/asdcplib] - --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] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of asdcplib 1.9.45:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --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 - --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-freedist ensure source distribution is of BSD-licensed code - --enable-dev-headers install development headers - --enable-random-case-UUID allow randomly cased UUID headers when the environment variable KM_USE_RANDOM_UUID is set - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - --with-openssl=[ARG] use OpenSSL from given prefix (ARG=path); check - standard prefixes (ARG=yes); disable (ARG=no) - --with-expat=[ARG] use Expat XML Parser from given prefix (ARG=path); - check standard prefixes (ARG=yes); disable (ARG=no) - --with-expat-inc=[DIR] path to Expat XML Parser headers - --with-expat-lib=[ARG] link options for Expat XML Parser libraries - --with-xerces=[ARG] use Xerces C++ Parser from given prefix (ARG=path); - check standard prefixes (ARG=yes); disable (ARG=no) - --with-xerces-inc=[DIR] path to Xerces C++ Parser headers - --with-xerces-lib=[ARG] link options for Xerces C++ Parser libraries - --with-python[=PYTHON] absolute path name of Python executable - -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> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CPP C preprocessor - CXXCPP C++ preprocessor - PYTHON Python Executable Path - -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 <asdcplib@cinecert.com>. -_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" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && 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=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_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 - $as_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 -asdcplib configure 1.9.45 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 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 - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case <limits.h> declares $2. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); 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 $2 - -/* 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 $2 (); -/* 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_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link -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 asdcplib $as_me 1.9.45, which was -generated by GNU Autoconf 2.68. 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=. - $as_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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append 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 - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset 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 - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; 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 - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_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'; as_fn_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 - -$as_echo "/* confdefs.h */" > 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 - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - 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. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_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,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_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 - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_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. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -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 build-aux "$srcdir"/build-aux; 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 - as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 -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. - - - -#AC_CONFIG_HEADER([src/config.h]) -am__api_version='1.11' - -# 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. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&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 - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$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' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# 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". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "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 $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&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" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&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 - - test -d ./--version && rmdir ./--version - 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. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - 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='asdcplib' - VERSION='1.9.45' - - -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"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - - -# Checks for programs. -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&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 && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -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 - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&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` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -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 - - -case $host_os in - openbsd*) openbsd_host=true ;; - *) openbsd_host=false ;; -esac - if test x$openbsd_host = xtrue; then - OPENBSD_HOST_TRUE= - OPENBSD_HOST_FALSE='#' -else - OPENBSD_HOST_TRUE='#' - OPENBSD_HOST_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 | *.dSYM | *.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 -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdio.h> -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -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" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -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) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_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='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&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'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - 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 - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$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= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&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'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - 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 - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$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 - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.2' -macro_revision='1.3337' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -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 delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_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 -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_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_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - 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 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_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 - as_fn_arith $ac_count + 1 && ac_count=$as_val - 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 - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - 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 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_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 - as_fn_arith $ac_count + 1 && ac_count=$as_val - 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 - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_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 fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_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_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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 </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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&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 - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&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* | cegcc*) - # 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; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - 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 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - 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 - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # 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. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$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 - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - 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 - - - - - - - - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&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. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && 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 - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -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 - ;; - -haiku*) - 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])(-bit)?( [LM]SB)? 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 glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - 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=pass_all - ;; - -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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - 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 - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -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 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&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$ac_prog" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&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="$ac_prog" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# 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 \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# 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 for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&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]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - 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 - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# 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 - -# Try without a prefix underscore, 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. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && 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 <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# 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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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*|s390*-*tpf*) - 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" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$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 - ;; -*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - 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* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # 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_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # 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_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # 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_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&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. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # 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" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -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 - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.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)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # 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 --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # 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 - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -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 - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&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 <<_LT_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 - -_LT_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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&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 <<_LT_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 - -_LT_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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -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 the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$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* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$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= - - - 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*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # 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' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - 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 - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - 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 - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # 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' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # 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='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - 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* | sunf77* | sunf90* | sunf95*) - 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 - -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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$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 - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&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 "$_lt_linker_boilerplate" | $SED '/^$/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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_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 - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # 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= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # 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 - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = 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>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [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 <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - 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 - ;; - esac - ;; - - 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* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - 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/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - 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 - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - 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* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # 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; func_echo_all \"$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' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; 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 - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; 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~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $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 <<_LT_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. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $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 - ;; - *) - # 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. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - 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 - ;; - - 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $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 - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - 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") || (\$ 2 == "W")) && (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_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - 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 - - export_dynamic_flag_spec='${wl}-bexpall' - # 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. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_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 "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -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 func_echo_all "${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. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_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 "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -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' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - 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*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - 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 - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # 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. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - 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 `func_echo_all "$deplibs" | $SED '\''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' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - 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 - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=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 $pic_flag -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 $pic_flag ${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 && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${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 - hardcode_direct_absolute=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 && test "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${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' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${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 - - ;; - 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_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - 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 - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - 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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - 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} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${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='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_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 - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${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 $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - 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' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $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 -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - 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='${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,$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 - ;; - - 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 - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 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\":${as_lineno-$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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # 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 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # 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; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -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 # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''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' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - 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~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - 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 - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - 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 - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # 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 - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # 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}${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 # correct to gnu/linux during the next big refactor - 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 - ;; - -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[23].*) 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 # correct to gnu/linux during the next big refactor - 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 - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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 glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # 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;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' - ;; - -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 # correct to gnu/linux during the next big refactor - 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=qnx - 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='ldqnx.so' - ;; - -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 # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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 - 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 # correct to gnu/linux during the next big refactor - 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 - shlibpath_overrides_runpath=yes - 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' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - 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' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = 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 - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent 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_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; 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 - - - - - - - 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* | cegcc*) - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; 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 - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; 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" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&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 <<_LT_EOF -#line $LINENO "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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$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\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&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 <<_LT_EOF -#line $LINENO "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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$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 - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&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" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "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" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -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" - - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -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 - -else - _lt_caught_CXX_error=yes -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 - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # 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_CFLAGS=$CFLAGS - 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++"} - CFLAGS=$CXXFLAGS - 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 "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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 </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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -$as_echo "$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 $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -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 -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&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_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - 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 - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # 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. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`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 "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -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 func_echo_all "${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. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`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 "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -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' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - 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 <jrb3@best.com> 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* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # 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_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - 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 - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - 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 - ld_shlibs_CXX=no - 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 - ;; - - freebsd2.*) - # 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*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - 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) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${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_direct_absolute_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; func_echo_all "$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 $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${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" && func_echo_all "-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 $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${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=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-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; func_echo_all "$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* | ecpc* ) - # 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 - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - 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' - ;; - esac - - 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; func_echo_all \"$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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # 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*) - 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::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - 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 - hardcode_direct_absolute_CXX=yes - 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=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | 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. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - 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" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - 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" && func_echo_all "-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' - ;; - esac - - 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=`func_echo_all "$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; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - 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 -v "^Configured with:" | $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* | sunCC*) - # 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='func_echo_all' - - # 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 $pic_flag -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 $pic_flag -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 -v "^Configured with:" | $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 -v "^Configured with:" | $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. - 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='${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,$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' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - 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 - ;; - - 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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # 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= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${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 - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} 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 - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$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 -CFLAGS=$_lt_libdeps_save_CFLAGS - -# 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* | sunCC*) - # 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 - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # 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*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # 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' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # 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= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_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 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - 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_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 - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # 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' - ;; - 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 | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - 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' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - 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*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - 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* | sunCC*) - # 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 - ;; - 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 - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - 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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$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 - - - - - -# -# 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\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&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 "$_lt_linker_boilerplate" | $SED '/^$/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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$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 - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_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 - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - 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 - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - 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") || (\$ 2 == "W")) && (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* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 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\":${as_lineno-$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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_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* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&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 # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''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' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - 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~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - 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 - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - 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 - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # 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 - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # 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}${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 # correct to gnu/linux during the next big refactor - 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 - ;; - -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[23].*) 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 # correct to gnu/linux during the next big refactor - 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 - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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 glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # 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;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' - ;; - -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 # correct to gnu/linux during the next big refactor - 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=qnx - 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='ldqnx.so' - ;; - -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 # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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 - 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 # correct to gnu/linux during the next big refactor - 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 - shlibpath_overrides_runpath=yes - 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' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - 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' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = 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 - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&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-existent 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_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; 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 - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - 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 -fi # test "$_lt_caught_CXX_error" != 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 - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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" - $as_echo "$as_me:${as_lineno-$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - -# Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* - fi -fi - -if test "$ac_cv_sys_largefile_CC" != no; then - CXX=$CXX$ac_cv_sys_largefile_CC -fi - - - -# Check whether --with-openssl was given. -if test "${with_openssl+set}" = set; then : - withval=$with_openssl; - if test "$withval" = "yes"; then - if test -d /var/local/ssl/include ; then - openssl_prefix=/var/local/ssl - elif test -d /var/local/include/openssl ; then - openssl_prefix=/var/local - elif test -d /usr/local/ssl/include ; then - openssl_prefix=/usr/local/ssl - elif test -d /usr/lib/ssl/include ; then - openssl_prefix=/usr/lib/ssl - elif test -d /usr/include/openssl ; then - openssl_prefix=/usr - else - openssl_prefix="" - fi - openssl_requested="yes" - elif test -d "$withval"; then - openssl_prefix="$withval" - openssl_requested="yes" - else - openssl_prefix="" - openssl_requested="no" - fi - -else - - if test -d /var/local/ssl/include ; then - openssl_prefix=/var/local/ssl - elif test -d /var/local/include/openssl ; then - openssl_prefix=/var/local - elif test -d /usr/local/ssl/include ; then - openssl_prefix=/usr/local/ssl - elif test -d /usr/lib/ssl/include ; then - openssl_prefix=/usr/lib/ssl - elif test -d /usr/include/openssl ; then - openssl_prefix=/usr - else - openssl_prefix="" - fi - - -fi - - - OPENSSL_CPPFLAGS="" - OPENSSL_LDFLAGS="" - OPENSSL_VERSION="" - - run_openssl_test="no" - - if test -n "$openssl_prefix"; then - openssl_include_dir="$openssl_prefix/include" - openssl_ldflags="-L$openssl_prefix/lib64 -L$openssl_prefix/lib" - run_openssl_test="yes" - elif test "$openssl_requested" = "yes"; then - if test -n "$openssl_include_dir" -a -n "$openssl_lib_flags"; then - run_openssl_test="yes" - fi - else - run_openssl_test="no" - fi - - openssl_libs="-lssl -lcrypto" - - if test "$run_openssl_test" = "yes"; then - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$openssl_include_dir" - - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $openssl_ldflags" - - saved_LIBS="$LIBS" - LIBS="$openssl_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL headers in $openssl_include_dir" >&5 -$as_echo_n "checking for OpenSSL headers in $openssl_include_dir... " >&6; } - - 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <openssl/opensslv.h> -#include <openssl/ssl.h> -#include <openssl/crypto.h> - -int -main () -{ - - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - OPENSSL_CPPFLAGS="-I$openssl_include_dir" - openssl_header_found="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 -$as_echo "found" >&6; } - -else - - openssl_header_found="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - - -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 "$openssl_header_found" = "yes"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL libraries" >&5 -$as_echo_n "checking for OpenSSL libraries... " >&6; } - - 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <openssl/opensslv.h> -#include <openssl/ssl.h> -#include <openssl/crypto.h> -#if (OPENSSL_VERSION_NUMBER < 0x0090700f) -#endif - -int -main () -{ - -SSL_library_init(); -SSLeay(); - - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - OPENSSL_LDFLAGS="$openssl_ldflags" - OPENSSL_LIBS="$openssl_libs" - openssl_lib_found="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 -$as_echo "found" >&6; } - -else - - openssl_lib_found="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - - -fi -rm -f core 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 - - CPPFLAGS="$saved_CPPFLAGS" - LDFLAGS="$saved_LDFLAGS" - LIBS="$saved_LIBS" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5 -$as_echo_n "checking for OpenSSL... " >&6; } - - if test "$run_openssl_test" = "yes"; then - if test "$openssl_header_found" = "yes" -a "$openssl_lib_found" = "yes"; then - - - - - - HAVE_OPENSSL="yes" - else - HAVE_OPENSSL="no" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_OPENSSL" >&5 -$as_echo "$HAVE_OPENSSL" >&6; } - - if test "$HAVE_OPENSSL" = "yes"; then - - openssl_version_req=0.9.7 - - if test -n "$openssl_version_req"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if OpenSSL version is >= $openssl_version_req" >&5 -$as_echo_n "checking if OpenSSL version is >= $openssl_version_req... " >&6; } - - if test -f "$openssl_include_dir/openssl/opensslv.h"; then - - OPENSSL_VERSION=`grep OPENSSL_VERSION_TEXT $openssl_include_dir/openssl/opensslv.h \ - | grep -v fips | grep -v PTEXT | cut -f 2 | tr -d \"` - - - openssl_version_req_major=`expr $openssl_version_req : '\([0-9]*\)'` - openssl_version_req_minor=`expr $openssl_version_req : '[0-9]*\.\([0-9]*\)'` - openssl_version_req_revision=`expr $openssl_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'` - openssl_version_req_patch=`expr $openssl_version_req : '[0-9]*\.[0-9]*\.[0-9]*\([a-z]*\)'` - if test "x$openssl_version_req_revision" = "x"; then - openssl_version_req_revision="0" - fi - if test "x$openssl_version_req_patch" = "x"; then - openssl_version_req_patch="\`" - fi - - openssl_version_req_number=`expr $openssl_version_req_major \* $((0x10000000)) \ - \+ $openssl_version_req_minor \* $((0x100000)) \ - \+ $openssl_version_req_revision \* $((0x1000)) \ - \+ $((1 + $(printf "%d" \'$openssl_version_req_patch) - $(printf "%d" \'a))) \* $((0x10)) \ - \+ $((0xf))` - - openssl_version_number=`expr $(($(grep OPENSSL_VERSION_NUMBER $openssl_include_dir/openssl/opensslv.h | cut -f 2 | tr -d L)))` - - openssl_version_check=`expr $openssl_version_number \>\= $openssl_version_req_number` - if test "$openssl_version_check" = "1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found $OPENSSL_VERSION, which is older than required. Possible compilation failure." >&5 -$as_echo "$as_me: WARNING: Found $OPENSSL_VERSION, which is older than required. Possible compilation failure." >&2;} - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Missing header openssl/opensslv.h. Unable to determine OpenSSL version." >&5 -$as_echo "$as_me: WARNING: Missing header openssl/opensslv.h. Unable to determine OpenSSL version." >&2;} - fi - fi - fi - - else - HAVE_OPENSSL="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_OPENSSL" >&5 -$as_echo "$HAVE_OPENSSL" >&6; } - - if test "$openssl_requested" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSSL support requested but headers or library not found. Specify valid prefix of OpenSSL using --with-openssl=[DIR]" >&5 -$as_echo "$as_me: WARNING: OpenSSL support requested but headers or library not found. Specify valid prefix of OpenSSL using --with-openssl=[DIR]" >&2;} - fi - fi - if test "$HAVE_OPENSSL" = "yes"; then - CPPFLAGS="$CPPFLAGS $OPENSSL_CPPFLAGS -DHAVE_SSL=1" - LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LIBS" - fi - - - -# Check whether --with-expat was given. -if test "${with_expat+set}" = set; then : - withval=$with_expat; - if test "$withval" = "yes"; then - if test -f /usr/local/include/expat.h ; then - expat_prefix=/usr/local - elif test -f /usr/include/expat.h ; then - expat_prefix=/usr - else - expat_prefix="" - fi - expat_requested="yes" - elif test -d "$withval"; then - expat_prefix="$withval" - expat_requested="yes" - else - expat_prefix="" - expat_requested="no" - fi - -else - -# dnl Default behavior is implicit yes -# if test -f /usr/local/include/expat.h ; then -# expat_prefix=/usr/local -# elif test -f /usr/include/expat.h ; then -# expat_prefix=/usr -# else -# expat_prefix="" -# fi - expat_prefix="" - expat_requested="no" - - -fi - - - -# Check whether --with-expat-inc was given. -if test "${with_expat_inc+set}" = set; then : - withval=$with_expat_inc; expat_include_dir="$withval" -else - expat_include_dir="" - -fi - - -# Check whether --with-expat-lib was given. -if test "${with_expat_lib+set}" = set; then : - withval=$with_expat_lib; expat_lib_flags="$withval" -else - expat_lib_flags="" - -fi - - - EXPAT_CFLAGS="" - EXPAT_LDFLAGS="" - EXPAT_VERSION="" - - run_expat_test="no" - - if test -n "$expat_prefix"; then - expat_include_dir="$expat_prefix/include" - expat_lib_flags="-L$expat_prefix/lib64 -L$expat_prefix/lib -lexpat" - run_expat_test="yes" - elif test "$expat_requested" = "yes"; then - if test -n "$expat_include_dir" -a -n "$expat_lib_flags"; then - run_expat_test="yes" - fi - else - run_expat_test="no" - fi - - if test "$run_expat_test" = "yes"; then - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$expat_include_dir" - - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $expat_lib_flags" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Expat XML Parser headers in $expat_include_dir" >&5 -$as_echo_n "checking for Expat XML Parser headers in $expat_include_dir... " >&6; } - - 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 - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <expat.h> - -int -main () -{ - - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - - EXPAT_CFLAGS="-I$expat_include_dir" - expat_header_found="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 -$as_echo "found" >&6; } - -else - - expat_header_found="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - - -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 "$expat_header_found" = "yes"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Expat XML Parser libraries" >&5 -$as_echo_n "checking for Expat XML Parser libraries... " >&6; } - - 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 - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <expat.h> - -int -main () -{ - -XML_Parser p = XML_ParserCreate(NULL); -XML_ParserFree(p); -p = NULL; - - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - EXPAT_LDFLAGS="$expat_lib_flags" - expat_lib_found="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 -$as_echo "found" >&6; } - -else - - expat_lib_found="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - - -fi -rm -f core 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 - - CPPFLAGS="$saved_CPPFLAGS" - LDFLAGS="$saved_LDFLAGS" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Expat XML Parser" >&5 -$as_echo_n "checking for Expat XML Parser... " >&6; } - - if test "$run_expat_test" = "yes"; then - if test "$expat_header_found" = "yes" -a "$expat_lib_found" = "yes"; then - - - - - HAVE_EXPAT="yes" - else - HAVE_EXPAT="no" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_EXPAT" >&5 -$as_echo "$HAVE_EXPAT" >&6; } - - if test "$HAVE_EXPAT" = "yes"; then - - expat_version_req= - - if test -n "$expat_version_req"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Expat XML Parser version is >= $expat_version_req" >&5 -$as_echo_n "checking if Expat XML Parser version is >= $expat_version_req... " >&6; } - - if test -f "$expat_include_dir/expat.h"; then - - expat_major=`cat $expat_include_dir/expat.h | \ - grep '^#define.*XML_MAJOR_VERSION.*[0-9]$' | \ - sed -e 's/#define XML_MAJOR_VERSION.//'` - - expat_minor=`cat $expat_include_dir/expat.h | \ - grep '^#define.*XML_MINOR_VERSION.*[0-9]$' | \ - sed -e 's/#define XML_MINOR_VERSION.//'` - - expat_revision=`cat $expat_include_dir/expat.h | \ - grep '^#define.*XML_MICRO_VERSION.*[0-9]$' | \ - sed -e 's/#define XML_MICRO_VERSION.//'` - - EXPAT_VERSION="$expat_major.$expat_minor.$expat_revision" - - - expat_version_req_major=`expr $expat_version_req : '\([0-9]*\)'` - expat_version_req_minor=`expr $expat_version_req : '[0-9]*\.\([0-9]*\)'` - expat_version_req_revision=`expr $expat_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'` - if test "x$expat_version_req_revision" = "x"; then - expat_version_req_revision="0" - fi - - expat_version_req_number=`expr $expat_version_req_major \* 10000 \ - \+ $expat_version_req_minor \* 100 \ - \+ $expat_version_req_revision` - - expat_version_number=`expr $expat_major \* 10000 \ - \+ $expat_minor \* 100 \ - \+ $expat_revision` - - expat_version_check=`expr $expat_version_number \>\= $expat_version_req_number` - if test "$expat_version_check" = "1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found Expat XML Parser $EXPAT_VERSION, which is older than required. Possible compilation failure." >&5 -$as_echo "$as_me: WARNING: Found Expat XML Parser $EXPAT_VERSION, which is older than required. Possible compilation failure." >&2;} - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Missing expat.h header. Unable to determine Expat version." >&5 -$as_echo "$as_me: WARNING: Missing expat.h header. Unable to determine Expat version." >&2;} - fi - fi - fi - - else - HAVE_EXPAT="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_EXPAT" >&5 -$as_echo "$HAVE_EXPAT" >&6; } - - if test "$expat_requested" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Expat XML Parser support requested but headers or library not found. Specify valid prefix of Expat using --with-expat=[DIR] or provide include directory and linker flags using --with-expat-inc and --with-expat-lib" >&5 -$as_echo "$as_me: WARNING: Expat XML Parser support requested but headers or library not found. Specify valid prefix of Expat using --with-expat=[DIR] or provide include directory and linker flags using --with-expat-inc and --with-expat-lib" >&2;} - fi - fi - if test "$HAVE_EXPAT" = "yes"; then - CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS -DHAVE_EXPAT=1" - LDFLAGS="$LDFLAGS $EXPAT_LDFLAGS" - fi - - -# AC_REQUIRE([ACX_PTHREAD]) - - -# Check whether --with-xerces was given. -if test "${with_xerces+set}" = set; then : - withval=$with_xerces; - if test "$withval" = "yes"; then - if test -d /usr/local/include/xercesc ; then - xerces_prefix=/usr/local - elif test -d /usr/include/xercesc ; then - xerces_prefix=/usr - else - xerces_prefix="" - fi - xerces_requested="yes" - elif test -d "$withval"; then - xerces_prefix="$withval" - xerces_requested="yes" - else - xerces_prefix="" - xerces_requested="no" - fi - -else - -# dnl Default behavior is implicit yes -# if test -d /usr/local/include/xercesc ; then -# xerces_prefix=/usr/local -# elif test -d /usr/include/xercesc ; then -# xerces_prefix=/usr -# else -# xerces_prefix="" -# fi - xerces_prefix="" - xerces_requested="no" - - -fi - - - -# Check whether --with-xerces-inc was given. -if test "${with_xerces_inc+set}" = set; then : - withval=$with_xerces_inc; xerces_include_dir="$withval" -else - xerces_include_dir="" - -fi - - -# Check whether --with-xerces-lib was given. -if test "${with_xerces_lib+set}" = set; then : - withval=$with_xerces_lib; xerces_ldflags="$withval" -else - xerces_ldflags="" - -fi - - - XERCES_CPPFLAGS="" - XERCES_LDFLAGS="" - XERCES_VERSION="" - - run_xerces_test="no" - - if test -n "$xerces_prefix"; then - xerces_include_dir="$xerces_prefix/include" - xerces_include_dir2="$xerces_prefix/include/xercesc" - xerces_ldflags="-L$xerces_prefix/lib" - run_xerces_test="yes" - elif test "$xerces_requested" = "yes"; then - if test -n "$xerces_include_dir" -a -n "$xerces_lib_flags"; then - xerces_include_dir2="$xerces_include_dir/xercesc" - run_xerces_test="yes" - fi - else - run_xerces_test="no" - fi - - xerces_libs="-lxerces-c" - - if test "$run_xerces_test" = "yes"; then - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$xerces_include_dir -I$xerces_include_dir2" - - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$xerces_ldflags $PTHREAD_LDFLAGS $LDFLAGS" - - saved_LIBS="$LIBS" - LIBS="$xerces_libs $PTHREAD_LIBS $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xerces C++ Parser headers in $xerces_include_dir and $xerces_include_dir2" >&5 -$as_echo_n "checking for Xerces C++ Parser headers in $xerces_include_dir and $xerces_include_dir2... " >&6; } - - 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 - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <xercesc/util/XercesDefs.hpp> -#include <xercesc/util/PlatformUtils.hpp> - -int -main () -{ - - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - - XERCES_CPPFLAGS="-I$xerces_include_dir -I$xerces_include_dir2" - xerces_header_found="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 -$as_echo "found" >&6; } - -else - - xerces_header_found="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - - -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 "$xerces_header_found" = "yes"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xerces C++ Parser libraries" >&5 -$as_echo_n "checking for Xerces C++ Parser libraries... " >&6; } - - 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 - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <xercesc/util/XercesDefs.hpp> -#include <xercesc/util/PlatformUtils.hpp> -#if (_XERCES_VERSION >= 20200) -XERCES_CPP_NAMESPACE_USE -#endif - -int -main () -{ - -XMLPlatformUtils::Initialize(); - - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - XERCES_LDFLAGS="$xerces_ldflags $PTHREAD_LDFLAGS" - XERCES_LIBS="$xerces_libs $PTHREAD_LIBS" - xerces_lib_found="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 -$as_echo "found" >&6; } - -else - - xerces_lib_found="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - - -fi -rm -f core 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 - - CPPFLAGS="$saved_CPPFLAGS" - LDFLAGS="$saved_LDFLAGS" - LIBS="$saved_LIBS" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xerces C++ Parser" >&5 -$as_echo_n "checking for Xerces C++ Parser... " >&6; } - - if test "$run_xerces_test" = "yes"; then - if test "$xerces_header_found" = "yes" -a "$xerces_lib_found" = "yes"; then - - - - - - HAVE_XERCES="yes" - else - HAVE_XERCES="no" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_XERCES" >&5 -$as_echo "$HAVE_XERCES" >&6; } - - if test "$HAVE_XERCES" = "yes"; then - - xerces_version_req= - - if test -n "$xerces_version_req"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Xerces C++ Parser version is >= $xerces_version_req" >&5 -$as_echo_n "checking if Xerces C++ Parser version is >= $xerces_version_req... " >&6; } - - if test -f "$xerces_include_dir2/util/XercesVersion.hpp"; then - - xerces_major=`cat $xerces_include_dir2/util/XercesVersion.hpp | \ - grep '^#define.*XERCES_VERSION_MAJOR.*[0-9]$' | \ - sed -e 's/#define XERCES_VERSION_MAJOR.//'` - - xerces_minor=`cat $xerces_include_dir2/util/XercesVersion.hpp | \ - grep '^#define.*XERCES_VERSION_MINOR.*[0-9]$' | \ - sed -e 's/#define XERCES_VERSION_MINOR.//'` - - xerces_revision=`cat $xerces_include_dir2/util/XercesVersion.hpp | \ - grep '^#define.*XERCES_VERSION_REVISION.*[0-9]$' | \ - sed -e 's/#define XERCES_VERSION_REVISION.//'` - - XERCES_VERSION="$xerces_major.$xerces_minor.$xerces_revision" - - - xerces_version_req_major=`expr $xerces_version_req : '\([0-9]*\)'` - xerces_version_req_minor=`expr $xerces_version_req : '[0-9]*\.\([0-9]*\)'` - xerces_version_req_revision=`expr $xerces_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'` - if test "x$xerces_version_req_revision" = "x"; then - xerces_version_req_revision="0" - fi - - xerces_version_req_number=`expr $xerces_version_req_major \* 10000 \ - \+ $xerces_version_req_minor \* 100 \ - \+ $xerces_version_req_revision` - - xerces_version_number=`expr $xerces_major \* 10000 \ - \+ $xerces_minor \* 100 \ - \+ $xerces_revision` - - xerces_version_check=`expr $xerces_version_number \>\= $xerces_version_req_number` - if test "$xerces_version_check" = "1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found Xerces C++ Parser $XERCES_VERSION, which is older than required. Possible compilation failure." >&5 -$as_echo "$as_me: WARNING: Found Xerces C++ Parser $XERCES_VERSION, which is older than required. Possible compilation failure." >&2;} - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Missing header XercesVersion.hpp. Unable to determine Xerces version." >&5 -$as_echo "$as_me: WARNING: Missing header XercesVersion.hpp. Unable to determine Xerces version." >&2;} - fi - fi - fi - - else - HAVE_XERCES="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_XERCES" >&5 -$as_echo "$HAVE_XERCES" >&6; } - - if test "$xerces_requested" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Xerces C++ Parser support requested but headers or library not found. Specify valid prefix of Xerces C++ using --with-xerces=[DIR] or provide include directory and linker flags using --with-xerces-inc and --with-xerces-lib" >&5 -$as_echo "$as_me: WARNING: Xerces C++ Parser support requested but headers or library not found. Specify valid prefix of Xerces C++ using --with-xerces=[DIR] or provide include directory and linker flags using --with-xerces-inc and --with-xerces-lib" >&2;} - fi - fi - if test "$HAVE_XERCES" = "yes"; then - CPPFLAGS="$CPPFLAGS $XERCES_CPPFLAGS -DHAVE_XERCES_C=1" - LDFLAGS="$LDFLAGS $XERCES_LDFLAGS $XERCES_LIBS" - fi - -#AM_PATH_PYTHON([2.3], , [:]) - - az_python_use=false - if test x"$az_python_use" = x"true"; then - PYTHON_USE_TRUE= - PYTHON_USE_FALSE='#' -else - PYTHON_USE_TRUE='#' - PYTHON_USE_FALSE= -fi - - - - - - # unless PYTHON was supplied to us (as a precious variable), - # see if --with-python[=PythonExecutablePath], --with-python, - # --without-python or --with-python=no was given. - if test -z "$PYTHON" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-python" >&5 -$as_echo_n "checking for --with-python... " >&6; } - -# Check whether --with-python was given. -if test "${with_python+set}" = set; then : - withval=$with_python; - if test "$withval" = "yes" - then - # "yes" was specified, but we don't have a path - # for the executable. - # So, let's searth the PATH Environment Variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - # Extract the first word of "python", so it can be a program name with args. -set dummy python; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PYTHON+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PYTHON in - [\\/]* | ?:[\\/]*) - ac_cv_path_PYTHON="$PYTHON" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PYTHON=$ac_cv_path_PYTHON -if test -n "$PYTHON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 -$as_echo "$PYTHON" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test -z "$PYTHON" - then - as_fn_error $? "no path to python found" "$LINENO" 5 - fi - az_python_use=true - if test x"$az_python_use" = x"true"; then - PYTHON_USE_TRUE= - PYTHON_USE_FALSE='#' -else - PYTHON_USE_TRUE='#' - PYTHON_USE_FALSE= -fi - - - - if test -n "$PYTHON" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python include directory" >&5 -$as_echo_n "checking for python include directory... " >&6; } - az_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"` - if test -z "$az_python_prefix" - then - as_fn_error $? "Python Prefix is not known" "$LINENO" 5 - fi - python_path= - az_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"` - az_python_version=`$PYTHON -c "import sys; print sys.version[:3]"` - az_python_includespec="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc();'`" - if test x"$python_prefix" != x"$python_execprefix"; then - az_python_execspec="-I${az_python_execprefix}/include/python${az_python_version}" - az_python_includespec="${az_python_includespec} $az_python_execspec" - fi - az_python_ccshared=`${PYTHON} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('CFLAGSFORSHARED')"` - az_python_cspec="${az_python_ccshared} ${az_python_includespec}" - PYTHON_CSPEC=${az_python_cspec} - - PYTHON_CPPFLAGS=${az_python_includespec} - - PYTHON_SHORTVERSION="${az_python_version}" - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5 -$as_echo "$PYTHON_CPPFLAGS" >&6; } - fi - - - - if test -n "$PYTHON" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python linker flags" >&5 -$as_echo_n "checking for python linker flags... " >&6; } - - - if test -z "$PYTHON" - then - as_fn_error $? "Python Executable not found" "$LINENO" 5 - else - cat >conftest.py <<_ACEOF - -import sys -import distutils.sysconfig -strUseFrameWork = "--enable-framework" -dictConfig = distutils.sysconfig.get_config_vars( ) -strConfigArgs = dictConfig.get("CONFIG_ARGS") -strLinkSpec = dictConfig.get('LDFLAGS') -if -1 == strConfigArgs.find(strUseFrameWork): - strLibPL = dictConfig.get("LIBPL") - if strLibPL and (strLibPL != ""): - strLinkSpec += " -L%s" % (strLibPL) - strSys = dictConfig.get("SYSLIBS") - if strSys and (strSys != ""): - strLinkSpec += " %s" % (strSys) - strSHL = dictConfig.get("SHLIBS") - if strSHL and (strSHL != ""): - strLinkSpec += " %s" % (strSHL) - # Construct the Python Library Name. - strTmplte = " -lpython%d.%d" - if (sys.platform == "win32") or (sys.platform == "os2emx"): - strTmplte = " -lpython%d%d" - strWrk = strTmplte % ( (sys.hexversion >> 24), - ((sys.hexversion >> 16) & 0xff)) - strLinkSpec += strWrk -else: - # This is not ideal since it changes the search path - # for Frameworks which could have side-effects on - # other included Frameworks. However, it is necessary - # where someone has installed more than one frameworked - # Python. Frameworks are really only used in MacOSX. - strLibFW = dictConfig.get("PYTHONFRAMEWORKPREFIX") - if strLibFW and (strLibFW != ""): - strLinkSpec += " -F%s" % (strLibFW) -strLinkSpec += " %s" % (dictConfig.get('LINKFORSHARED')) -print strLinkSpec - -_ACEOF - az_python_output=`$PYTHON conftest.py` - az_python_cc=$? - rm conftest.py - if test -f "conftest.pyc" - then - rm conftest.pyc - fi - fi - - PYTHON_LSPEC=${az_python_output} - - az_python_ldflags=`${PYTHON} -c "import distutils.sysconfig; \ - print '-L' + distutils.sysconfig.get_python_lib(), '-lpython' + \ - distutils.sysconfig.get_config_var('VERSION');"` - PYTHON_LDFLAGS=${az_python_ldflags} - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5 -$as_echo "$PYTHON_LDFLAGS" >&6; } - fi - - - if test -z "$PYTHON" - then - as_fn_error $? "Python Executable Path is not known" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python extension install directory" >&5 -$as_echo_n "checking for python extension install directory... " >&6; } - ax_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"` - ax_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"` - PYTHON_PREFIX="${ax_python_prefix}" - - PYTHON_EXECPREFIX="${ax_python_execprefix}" - - PYTHON_EXECDIR=`$PYTHON -c "import distutils.sysconfig; \ - print distutils.sysconfig.get_python_lib();"` - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXECDIR" >&5 -$as_echo "$PYTHON_EXECDIR" >&6; } - - elif test "$withval" = "no" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - az_python_use=false - if test x"$az_python_use" = x"true"; then - PYTHON_USE_TRUE= - PYTHON_USE_FALSE='#' -else - PYTHON_USE_TRUE='#' - PYTHON_USE_FALSE= -fi - - else - # $withval must be the executable path then. - PYTHON="${withval}" - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } - az_python_use=true - if test x"$az_python_use" = x"true"; then - PYTHON_USE_TRUE= - PYTHON_USE_FALSE='#' -else - PYTHON_USE_TRUE='#' - PYTHON_USE_FALSE= -fi - - - - if test -n "$PYTHON" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python include directory" >&5 -$as_echo_n "checking for python include directory... " >&6; } - az_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"` - if test -z "$az_python_prefix" - then - as_fn_error $? "Python Prefix is not known" "$LINENO" 5 - fi - python_path= - az_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"` - az_python_version=`$PYTHON -c "import sys; print sys.version[:3]"` - az_python_includespec="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc();'`" - if test x"$python_prefix" != x"$python_execprefix"; then - az_python_execspec="-I${az_python_execprefix}/include/python${az_python_version}" - az_python_includespec="${az_python_includespec} $az_python_execspec" - fi - az_python_ccshared=`${PYTHON} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('CFLAGSFORSHARED')"` - az_python_cspec="${az_python_ccshared} ${az_python_includespec}" - PYTHON_CSPEC=${az_python_cspec} - - PYTHON_CPPFLAGS=${az_python_includespec} - - PYTHON_SHORTVERSION="${az_python_version}" - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5 -$as_echo "$PYTHON_CPPFLAGS" >&6; } - fi - - - - if test -n "$PYTHON" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python linker flags" >&5 -$as_echo_n "checking for python linker flags... " >&6; } - - - if test -z "$PYTHON" - then - as_fn_error $? "Python Executable not found" "$LINENO" 5 - else - cat >conftest.py <<_ACEOF - -import sys -import distutils.sysconfig -strUseFrameWork = "--enable-framework" -dictConfig = distutils.sysconfig.get_config_vars( ) -strConfigArgs = dictConfig.get("CONFIG_ARGS") -strLinkSpec = dictConfig.get('LDFLAGS') -if -1 == strConfigArgs.find(strUseFrameWork): - strLibPL = dictConfig.get("LIBPL") - if strLibPL and (strLibPL != ""): - strLinkSpec += " -L%s" % (strLibPL) - strSys = dictConfig.get("SYSLIBS") - if strSys and (strSys != ""): - strLinkSpec += " %s" % (strSys) - strSHL = dictConfig.get("SHLIBS") - if strSHL and (strSHL != ""): - strLinkSpec += " %s" % (strSHL) - # Construct the Python Library Name. - strTmplte = " -lpython%d.%d" - if (sys.platform == "win32") or (sys.platform == "os2emx"): - strTmplte = " -lpython%d%d" - strWrk = strTmplte % ( (sys.hexversion >> 24), - ((sys.hexversion >> 16) & 0xff)) - strLinkSpec += strWrk -else: - # This is not ideal since it changes the search path - # for Frameworks which could have side-effects on - # other included Frameworks. However, it is necessary - # where someone has installed more than one frameworked - # Python. Frameworks are really only used in MacOSX. - strLibFW = dictConfig.get("PYTHONFRAMEWORKPREFIX") - if strLibFW and (strLibFW != ""): - strLinkSpec += " -F%s" % (strLibFW) -strLinkSpec += " %s" % (dictConfig.get('LINKFORSHARED')) -print strLinkSpec - -_ACEOF - az_python_output=`$PYTHON conftest.py` - az_python_cc=$? - rm conftest.py - if test -f "conftest.pyc" - then - rm conftest.pyc - fi - fi - - PYTHON_LSPEC=${az_python_output} - - az_python_ldflags=`${PYTHON} -c "import distutils.sysconfig; \ - print '-L' + distutils.sysconfig.get_python_lib(), '-lpython' + \ - distutils.sysconfig.get_config_var('VERSION');"` - PYTHON_LDFLAGS=${az_python_ldflags} - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5 -$as_echo "$PYTHON_LDFLAGS" >&6; } - fi - - - if test -z "$PYTHON" - then - as_fn_error $? "Python Executable Path is not known" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python extension install directory" >&5 -$as_echo_n "checking for python extension install directory... " >&6; } - ax_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"` - ax_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"` - PYTHON_PREFIX="${ax_python_prefix}" - - PYTHON_EXECPREFIX="${ax_python_execprefix}" - - PYTHON_EXECDIR=`$PYTHON -c "import distutils.sysconfig; \ - print distutils.sysconfig.get_python_lib();"` - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXECDIR" >&5 -$as_echo "$PYTHON_EXECDIR" >&6; } - - fi - -else - - # --with-python was not specified. - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - az_python_use=false - if test x"$az_python_use" = x"true"; then - PYTHON_USE_TRUE= - PYTHON_USE_FALSE='#' -else - PYTHON_USE_TRUE='#' - PYTHON_USE_FALSE= -fi - - - -fi - - fi - - - if test "$PYTHON" != :; then - HAVE_PYTHON_TRUE= - HAVE_PYTHON_FALSE='#' -else - HAVE_PYTHON_TRUE='#' - HAVE_PYTHON_FALSE= -fi - -# Check whether --enable-freedist was given. -if test "${enable_freedist+set}" = set; then : - enableval=$enable_freedist; case "${enableval}" in - yes) freedist=true ;; - no) freedist=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-freedist" "$LINENO" 5 ;; - esac -else - freedist=false -fi - - if test x$freedist = xtrue; then - FREEDIST_TRUE= - FREEDIST_FALSE='#' -else - FREEDIST_TRUE='#' - FREEDIST_FALSE= -fi - -# Check whether --enable-dev-headers was given. -if test "${enable_dev_headers+set}" = set; then : - enableval=$enable_dev_headers; case "${enableval}" in - yes) dev_headers=true ;; - no) dev_headers=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-dev-headers" "$LINENO" 5 ;; - esac -else - dev_headers=false -fi - - if test x$dev_headers = xtrue; then - DEV_HEADERS_TRUE= - DEV_HEADERS_FALSE='#' -else - DEV_HEADERS_TRUE='#' - DEV_HEADERS_FALSE= -fi - -# Check whether --enable-random-case-UUID was given. -if test "${enable_random_case_UUID+set}" = set; then : - enableval=$enable_random_case_UUID; case "${enableval}" in - yes) random_case_UUID=true ;; - no) random_case_UUID=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-random-case-UUID" "$LINENO" 5 ;; - esac -else - random_case_UUID=false -fi - - if test x$random_case_UUID = xtrue; then - ENABLE_RANDOM_UUID_TRUE= - ENABLE_RANDOM_UUID_FALSE='#' -else - ENABLE_RANDOM_UUID_TRUE='#' - ENABLE_RANDOM_UUID_FALSE= -fi - - -# Checks for libraries. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_create=yes -else - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPTHREAD 1 -_ACEOF - - LIBS="-lpthread $LIBS" - -fi - - -# Checks for header files. -#AC_HEADER_DIRENT -#AC_HEADER_STDC -#AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h wchar.h]) - -# Checks for typedefs, structures, and compiler characteristics. -#AC_C_CONST -#AC_C_INLINE -#AC_TYPE_OFF_T -#AC_TYPE_SIZE_T -#AC_STRUCT_TM - -# Checks for library functions. -#AC_FUNC_CLOSEDIR_VOID -#AC_FUNC_MALLOC -#AC_FUNC_MEMCMP -#AC_FUNC_STAT -#AC_CHECK_FUNCS([getcwd memset regcomp strchr strerror strrchr strstr strtol]) - -ac_config_files="$ac_config_files Makefile src/Makefile win32/Makefile win32/Makefile.mak:win32/Makefile.wmk" - -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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; 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 - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_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}' - -# 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 branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -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=`$as_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. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${OPENBSD_HOST_TRUE}" && test -z "${OPENBSD_HOST_FALSE}"; then - as_fn_error $? "conditional \"OPENBSD_HOST\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${PYTHON_USE_TRUE}" && test -z "${PYTHON_USE_FALSE}"; then - as_fn_error $? "conditional \"PYTHON_USE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${PYTHON_USE_TRUE}" && test -z "${PYTHON_USE_FALSE}"; then - as_fn_error $? "conditional \"PYTHON_USE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${PYTHON_USE_TRUE}" && test -z "${PYTHON_USE_FALSE}"; then - as_fn_error $? "conditional \"PYTHON_USE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${PYTHON_USE_TRUE}" && test -z "${PYTHON_USE_FALSE}"; then - as_fn_error $? "conditional \"PYTHON_USE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${PYTHON_USE_TRUE}" && test -z "${PYTHON_USE_FALSE}"; then - as_fn_error $? "conditional \"PYTHON_USE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then - as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${FREEDIST_TRUE}" && test -z "${FREEDIST_FALSE}"; then - as_fn_error $? "conditional \"FREEDIST\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${DEV_HEADERS_TRUE}" && test -z "${DEV_HEADERS_FALSE}"; then - as_fn_error $? "conditional \"DEV_HEADERS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_RANDOM_UUID_TRUE}" && test -z "${ENABLE_RANDOM_UUID_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_RANDOM_UUID\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $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} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## 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=: - # Pre-4.2 versions of Zsh do 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_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -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.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -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 - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -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 - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -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 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - 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 -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_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 || -$as_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" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -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 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=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 asdcplib $as_me 1.9.45, which was -generated by GNU Autoconf 2.68. 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 - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - 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 <asdcplib@cinecert.com>." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -asdcplib config.status 1.9.45 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 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' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -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=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - 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 ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_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. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append 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 || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# 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 - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;; - "win32/Makefile.mak") CONFIG_FILES="$CONFIG_FILES win32/Makefile.mak:win32/Makefile.wmk" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - 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 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= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' <conf$$subs.awk | sed ' -/^[^""]/{ - N - s/\n// -} -' >>$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[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="$ac_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 || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append 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 '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - 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 || -$as_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"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_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 || ac_write_fail=1 -# 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= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - 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 || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;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 -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_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 "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - 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 || -$as_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 || -$as_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; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # 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 - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# 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 - -# 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//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# 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 - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# 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 - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# 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 - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# 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 - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# 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 - -# 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 - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# 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 - -# 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 - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# 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 a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# 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 - -# 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 DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# 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 - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# 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 - -# 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 - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -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 - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_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 -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # 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) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# 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 - -# 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 - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# 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 a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# 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 - -# 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 DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_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 - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_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 - -# 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 - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -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 - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# 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 || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/asdcplib/configure.ac b/asdcplib/configure.ac deleted file mode 100644 index bc3b84e..0000000 --- a/asdcplib/configure.ac +++ /dev/null @@ -1,124 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. -# Copyright (c) 2007-2012 John Hurst. All rights reserved. -# -# 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. - -AC_PREREQ([2.59]) -# If you change this, you should update the libtool version number specified -# in src/Makefile.am. Read <http://www.gnu.org/software/libtool/manual.html#Versioning> -# for suggestions on doing so. - -# The version number consists of three segments: major, API minor, and -# implementation minor. Whenever a change is made to AS_DCP.h, the API minor -# version will increment. Changes made to the internal implementation will -# result in the incrementing of the implementation minor version. -# -# For example, if asdcplib version 1.0.0 were modified to accomodate changes -# in file format, and if no changes were made to AS_DCP.h, the new version would be -# 1.0.1. If changes were also required in AS_DCP.h, the new version would be 1.1.1. -AC_INIT([asdcplib], [1.9.45], [asdcplib@cinecert.com]) - -AC_CONFIG_AUX_DIR([build-aux]) -AC_CONFIG_SRCDIR([src/KM_error.h]) -#AC_CONFIG_HEADER([src/config.h]) -AM_INIT_AUTOMAKE([1.9 foreign]) - -# Checks for programs. -AC_CANONICAL_BUILD -AC_CANONICAL_HOST -case $host_os in - openbsd*) openbsd_host=true ;; - *) openbsd_host=false ;; -esac -AM_CONDITIONAL([OPENBSD_HOST], [test x$openbsd_host = xtrue]) -AC_PROG_CC -AC_PROG_CXX -AC_PROG_LIBTOOL -AC_PROG_INSTALL -AC_PROG_RANLIB - -AC_SYS_LARGEFILE -if test "$ac_cv_sys_largefile_CC" != no; then - CXX=$CXX$ac_cv_sys_largefile_CC -fi - -AX_LIB_OPENSSL([0.9.7]) -AX_LIB_EXPAT -AX_LIB_XERCES -#AM_PATH_PYTHON([2.3], , [:]) -AZ_PYTHON_DEFAULT -AZ_PYTHON_WITH -AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :]) -AC_ARG_ENABLE([freedist], - [ --enable-freedist ensure source distribution is of BSD-licensed code], - [case "${enableval}" in - yes) freedist=true ;; - no) freedist=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-freedist]) ;; - esac],[freedist=false]) - AM_CONDITIONAL([FREEDIST], [test x$freedist = xtrue]) -AC_ARG_ENABLE([dev-headers], - [ --enable-dev-headers install development headers], - [case "${enableval}" in - yes) dev_headers=true ;; - no) dev_headers=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-dev-headers]) ;; - esac],[dev_headers=false]) - AM_CONDITIONAL([DEV_HEADERS], [test x$dev_headers = xtrue]) -AC_ARG_ENABLE([random-case-UUID], - [ --enable-random-case-UUID allow randomly cased UUID headers when the environment variable KM_USE_RANDOM_UUID is set], - [case "${enableval}" in - yes) random_case_UUID=true ;; - no) random_case_UUID=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-random-case-UUID]) ;; - esac],[random_case_UUID=false]) - AM_CONDITIONAL([ENABLE_RANDOM_UUID], [test x$random_case_UUID = xtrue]) - -# Checks for libraries. -AC_CHECK_LIB([pthread], [pthread_create]) - -# Checks for header files. -#AC_HEADER_DIRENT -#AC_HEADER_STDC -#AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h wchar.h]) - -# Checks for typedefs, structures, and compiler characteristics. -#AC_C_CONST -#AC_C_INLINE -#AC_TYPE_OFF_T -#AC_TYPE_SIZE_T -#AC_STRUCT_TM - -# Checks for library functions. -#AC_FUNC_CLOSEDIR_VOID -#AC_FUNC_MALLOC -#AC_FUNC_MEMCMP -#AC_FUNC_STAT -#AC_CHECK_FUNCS([getcwd memset regcomp strchr strerror strrchr strstr strtol]) - -AC_CONFIG_FILES([Makefile - src/Makefile - win32/Makefile - win32/Makefile.mak:win32/Makefile.wmk]) -AC_OUTPUT diff --git a/asdcplib/m4/ax_lib_expat.m4 b/asdcplib/m4/ax_lib_expat.m4 deleted file mode 100644 index 1fcb0d2..0000000 --- a/asdcplib/m4/ax_lib_expat.m4 +++ /dev/null @@ -1,281 +0,0 @@ -##### http://autoconf-archive.cryp.to/ax_lib_expat.html -# -# SYNOPSIS -# -# AX_LIB_EXPAT([MINIMUM-VERSION]) -# -# DESCRIPTION -# -# This macro provides tests of availability of Expat XML Parser of -# particular version or newer. This macro checks for Expat XML Parser -# headers and libraries and defines compilation flags -# -# Macro supports following options and their values: -# -# 1) Single-option usage: -# -# --with-expat -- yes, no, or path to Expat XML Parser -# installation prefix -# -# 2) Three-options usage (all options are required): -# -# --with-expat=yes -# --with-expat-inc -- path to base directory with Expat headers -# --with-expat-lib -- linker flags for Expat -# -# This macro calls: -# -# AC_SUBST(EXPAT_CFLAGS) -# AC_SUBST(EXPAT_LDFLAGS) -# AC_SUBST(EXPAT_VERSION) -- only if version requirement is used -# -# And sets: -# -# HAVE_EXPAT -# -# LAST MODIFICATION -# -# 2007-12-05 -# -# COPYLEFT -# -# Copyright (c) 2007 Mateusz Loskot <mateusz@loskot.net> -# -# Copying and distribution of this file, with or without -# modification, are permitted in any medium without royalty provided -# the copyright notice and this notice are preserved. - -AC_DEFUN([AX_LIB_EXPAT], -[ - AC_ARG_WITH([expat], - AC_HELP_STRING([--with-expat=@<:@ARG@:>@], - [use Expat XML Parser from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)] - ), - [ - if test "$withval" = "yes"; then - if test -f /usr/local/include/expat.h ; then - expat_prefix=/usr/local - elif test -f /usr/include/expat.h ; then - expat_prefix=/usr - else - expat_prefix="" - fi - expat_requested="yes" - elif test -d "$withval"; then - expat_prefix="$withval" - expat_requested="yes" - else - expat_prefix="" - expat_requested="no" - fi - ], - [ -# dnl Default behavior is implicit yes -# if test -f /usr/local/include/expat.h ; then -# expat_prefix=/usr/local -# elif test -f /usr/include/expat.h ; then -# expat_prefix=/usr -# else -# expat_prefix="" -# fi - dnl Default behavior is implicit no - expat_prefix="" - expat_requested="no" - ] - ) - - AC_ARG_WITH([expat-inc], - AC_HELP_STRING([--with-expat-inc=@<:@DIR@:>@], - [path to Expat XML Parser headers] - ), - [expat_include_dir="$withval"], - [expat_include_dir=""] - ) - AC_ARG_WITH([expat-lib], - AC_HELP_STRING([--with-expat-lib=@<:@ARG@:>@], - [link options for Expat XML Parser libraries] - ), - [expat_lib_flags="$withval"], - [expat_lib_flags=""] - ) - - EXPAT_CFLAGS="" - EXPAT_LDFLAGS="" - EXPAT_VERSION="" - - dnl - dnl Collect include/lib paths and flags - dnl - run_expat_test="no" - - if test -n "$expat_prefix"; then - expat_include_dir="$expat_prefix/include" - expat_lib_flags="-L$expat_prefix/lib64 -L$expat_prefix/lib -lexpat" - run_expat_test="yes" - elif test "$expat_requested" = "yes"; then - if test -n "$expat_include_dir" -a -n "$expat_lib_flags"; then - run_expat_test="yes" - fi - else - run_expat_test="no" - fi - - dnl - dnl Check Expat XML Parser files - dnl - if test "$run_expat_test" = "yes"; then - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$expat_include_dir" - - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $expat_lib_flags" - - dnl - dnl Check Expat headers - dnl - AC_MSG_CHECKING([for Expat XML Parser headers in $expat_include_dir]) - - AC_LANG_PUSH([C++]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM( - [[ -@%:@include <expat.h> - ]], - [[]] - )], - [ - EXPAT_CFLAGS="-I$expat_include_dir" - expat_header_found="yes" - AC_MSG_RESULT([found]) - ], - [ - expat_header_found="no" - AC_MSG_RESULT([not found]) - ] - ) - AC_LANG_POP([C++]) - - dnl - dnl Check Expat libraries - dnl - if test "$expat_header_found" = "yes"; then - - AC_MSG_CHECKING([for Expat XML Parser libraries]) - - AC_LANG_PUSH([C++]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM( - [[ -@%:@include <expat.h> - ]], - [[ -XML_Parser p = XML_ParserCreate(NULL); -XML_ParserFree(p); -p = NULL; - ]] - )], - [ - EXPAT_LDFLAGS="$expat_lib_flags" - expat_lib_found="yes" - AC_MSG_RESULT([found]) - ], - [ - expat_lib_found="no" - AC_MSG_RESULT([not found]) - ] - ) - AC_LANG_POP([C++]) - fi - - CPPFLAGS="$saved_CPPFLAGS" - LDFLAGS="$saved_LDFLAGS" - fi - - AC_MSG_CHECKING([for Expat XML Parser]) - - if test "$run_expat_test" = "yes"; then - if test "$expat_header_found" = "yes" -a "$expat_lib_found" = "yes"; then - - AC_SUBST([EXPAT_CFLAGS]) - AC_SUBST([EXPAT_LDFLAGS]) - - HAVE_EXPAT="yes" - else - HAVE_EXPAT="no" - fi - - AC_MSG_RESULT([$HAVE_EXPAT]) - - dnl - dnl Check Expat version - dnl - if test "$HAVE_EXPAT" = "yes"; then - - expat_version_req=ifelse([$1], [], [], [$1]) - - if test -n "$expat_version_req"; then - - AC_MSG_CHECKING([if Expat XML Parser version is >= $expat_version_req]) - - if test -f "$expat_include_dir/expat.h"; then - - expat_major=`cat $expat_include_dir/expat.h | \ - grep '^#define.*XML_MAJOR_VERSION.*[0-9]$' | \ - sed -e 's/#define XML_MAJOR_VERSION.//'` - - expat_minor=`cat $expat_include_dir/expat.h | \ - grep '^#define.*XML_MINOR_VERSION.*[0-9]$' | \ - sed -e 's/#define XML_MINOR_VERSION.//'` - - expat_revision=`cat $expat_include_dir/expat.h | \ - grep '^#define.*XML_MICRO_VERSION.*[0-9]$' | \ - sed -e 's/#define XML_MICRO_VERSION.//'` - - EXPAT_VERSION="$expat_major.$expat_minor.$expat_revision" - AC_SUBST([EXPAT_VERSION]) - - dnl Decompose required version string and calculate numerical representation - expat_version_req_major=`expr $expat_version_req : '\([[0-9]]*\)'` - expat_version_req_minor=`expr $expat_version_req : '[[0-9]]*\.\([[0-9]]*\)'` - expat_version_req_revision=`expr $expat_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` - if test "x$expat_version_req_revision" = "x"; then - expat_version_req_revision="0" - fi - - expat_version_req_number=`expr $expat_version_req_major \* 10000 \ - \+ $expat_version_req_minor \* 100 \ - \+ $expat_version_req_revision` - - dnl Calculate numerical representation of detected version - expat_version_number=`expr $expat_major \* 10000 \ - \+ $expat_minor \* 100 \ - \+ $expat_revision` - - expat_version_check=`expr $expat_version_number \>\= $expat_version_req_number` - if test "$expat_version_check" = "1"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([Found Expat XML Parser $EXPAT_VERSION, which is older than required. Possible compilation failure.]) - fi - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([Missing expat.h header. Unable to determine Expat version.]) - fi - fi - fi - - else - HAVE_EXPAT="no" - AC_MSG_RESULT([$HAVE_EXPAT]) - - if test "$expat_requested" = "yes"; then - AC_MSG_WARN([Expat XML Parser support requested but headers or library not found. Specify valid prefix of Expat using --with-expat=@<:@DIR@:>@ or provide include directory and linker flags using --with-expat-inc and --with-expat-lib]) - fi - fi - if test "$HAVE_EXPAT" = "yes"; then - CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS -DHAVE_EXPAT=1" - LDFLAGS="$LDFLAGS $EXPAT_LDFLAGS" - fi -]) diff --git a/asdcplib/m4/ax_lib_openssl.m4 b/asdcplib/m4/ax_lib_openssl.m4 deleted file mode 100644 index 8a70f99..0000000 --- a/asdcplib/m4/ax_lib_openssl.m4 +++ /dev/null @@ -1,290 +0,0 @@ -# =========================================================================== -# ax_lib_openssl.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_LIB_OPENSSL([MINIMUM-VERSION]) -# -# DESCRIPTION -# -# This macro provides tests of availability of OpenSSL of a -# particular version or newer. This macros checks for OpenSSL -# headers and libraries and defines compilation flags. -# -# Macro supports following options and their values: -# -# 1) Single-option usage: -# -# --with-openssl - yes, no or path to OpenSSL installation prefix -# -# This macro calls: -# -# AC_SUBST(OPENSSL_CFLAGS) -# AC_SUBST(OPENSSL_LDFLAGS) -# AC_SUBST(OPENSSL_VERSION) - only if version requirement is used -# -# And sets: -# -# HAVE_OPENSSL -# -# Copyright (c) 2008-2009 CineCert, LLC -# All rights reserved. -# -# 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. -# - -AC_DEFUN([AX_LIB_OPENSSL], -[ - AC_ARG_WITH([openssl], - AC_HELP_STRING([--with-openssl=@<:@ARG@:>@], - [use OpenSSL from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)] - ), - [ - if test "$withval" = "yes"; then - if test -d /var/local/ssl/include ; then - openssl_prefix=/var/local/ssl - elif test -d /var/local/include/openssl ; then - openssl_prefix=/var/local - elif test -d /usr/local/ssl/include ; then - openssl_prefix=/usr/local/ssl - elif test -d /usr/lib/ssl/include ; then - openssl_prefix=/usr/lib/ssl - elif test -d /usr/include/openssl ; then - openssl_prefix=/usr - else - openssl_prefix="" - fi - openssl_requested="yes" - elif test -d "$withval"; then - openssl_prefix="$withval" - openssl_requested="yes" - else - openssl_prefix="" - openssl_requested="no" - fi - ], - [ - dnl Default behavior is implicit yes - if test -d /var/local/ssl/include ; then - openssl_prefix=/var/local/ssl - elif test -d /var/local/include/openssl ; then - openssl_prefix=/var/local - elif test -d /usr/local/ssl/include ; then - openssl_prefix=/usr/local/ssl - elif test -d /usr/lib/ssl/include ; then - openssl_prefix=/usr/lib/ssl - elif test -d /usr/include/openssl ; then - openssl_prefix=/usr - else - openssl_prefix="" - fi - ] - ) - - OPENSSL_CPPFLAGS="" - OPENSSL_LDFLAGS="" - OPENSSL_VERSION="" - - dnl - dnl Collect include/lib paths and flags - dnl - run_openssl_test="no" - - if test -n "$openssl_prefix"; then - openssl_include_dir="$openssl_prefix/include" - openssl_ldflags="-L$openssl_prefix/lib64 -L$openssl_prefix/lib" - run_openssl_test="yes" - elif test "$openssl_requested" = "yes"; then - if test -n "$openssl_include_dir" -a -n "$openssl_lib_flags"; then - run_openssl_test="yes" - fi - else - run_openssl_test="no" - fi - - openssl_libs="-lssl -lcrypto" - - dnl - dnl Check OpenSSL files - dnl - if test "$run_openssl_test" = "yes"; then - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$openssl_include_dir" - - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $openssl_ldflags" - - saved_LIBS="$LIBS" - LIBS="$openssl_libs $LIBS" - - dnl - dnl Check OpenSSL headers - dnl - AC_MSG_CHECKING([for OpenSSL headers in $openssl_include_dir]) - - AC_LANG_PUSH([C]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM( - [[ -@%:@include <openssl/opensslv.h> -@%:@include <openssl/ssl.h> -@%:@include <openssl/crypto.h> - ]], - [[]] - )], - [ - OPENSSL_CPPFLAGS="-I$openssl_include_dir" - openssl_header_found="yes" - AC_MSG_RESULT([found]) - ], - [ - openssl_header_found="no" - AC_MSG_RESULT([not found]) - ] - ) - AC_LANG_POP([C]) - - dnl - dnl Check OpenSSL libraries - dnl - if test "$openssl_header_found" = "yes"; then - - AC_MSG_CHECKING([for OpenSSL libraries]) - - AC_LANG_PUSH([C]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM( - [[ -@%:@include <openssl/opensslv.h> -@%:@include <openssl/ssl.h> -@%:@include <openssl/crypto.h> -#if (OPENSSL_VERSION_NUMBER < 0x0090700f) -#endif - ]], - [[ -SSL_library_init(); -SSLeay(); - ]] - )], - [ - OPENSSL_LDFLAGS="$openssl_ldflags" - OPENSSL_LIBS="$openssl_libs" - openssl_lib_found="yes" - AC_MSG_RESULT([found]) - ], - [ - openssl_lib_found="no" - AC_MSG_RESULT([not found]) - ] - ) - AC_LANG_POP([C]) - fi - - CPPFLAGS="$saved_CPPFLAGS" - LDFLAGS="$saved_LDFLAGS" - LIBS="$saved_LIBS" - fi - - AC_MSG_CHECKING([for OpenSSL]) - - if test "$run_openssl_test" = "yes"; then - if test "$openssl_header_found" = "yes" -a "$openssl_lib_found" = "yes"; then - - AC_SUBST([OPENSSL_CPPFLAGS]) - AC_SUBST([OPENSSL_LDFLAGS]) - AC_SUBST([OPENSSL_LIBS]) - - HAVE_OPENSSL="yes" - else - HAVE_OPENSSL="no" - fi - - AC_MSG_RESULT([$HAVE_OPENSSL]) - - dnl - dnl Check OpenSSL version - dnl - if test "$HAVE_OPENSSL" = "yes"; then - - openssl_version_req=ifelse([$1], [], [], [$1]) - - if test -n "$openssl_version_req"; then - - AC_MSG_CHECKING([if OpenSSL version is >= $openssl_version_req]) - - if test -f "$openssl_include_dir/openssl/opensslv.h"; then - - OPENSSL_VERSION=`grep OPENSSL_VERSION_TEXT $openssl_include_dir/openssl/opensslv.h \ - | grep -v fips | grep -v PTEXT | cut -f 2 | tr -d \"` - AC_SUBST([OPENSSL_VERSION]) - - dnl Decompose required version string and calculate numerical representation - openssl_version_req_major=`expr $openssl_version_req : '\([[0-9]]*\)'` - openssl_version_req_minor=`expr $openssl_version_req : '[[0-9]]*\.\([[0-9]]*\)'` - openssl_version_req_revision=`expr $openssl_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` - openssl_version_req_patch=`expr $openssl_version_req : '[[0-9]]*\.[[0-9]]*\.[[0-9]]*\([[a-z]]*\)'` - if test "x$openssl_version_req_revision" = "x"; then - openssl_version_req_revision="0" - fi - if test "x$openssl_version_req_patch" = "x"; then - openssl_version_req_patch="\`" - fi - - openssl_version_req_number=`expr $openssl_version_req_major \* $((0x10000000)) \ - \+ $openssl_version_req_minor \* $((0x100000)) \ - \+ $openssl_version_req_revision \* $((0x1000)) \ - \+ $((1 + $(printf "%d" \'$openssl_version_req_patch) - $(printf "%d" \'a))) \* $((0x10)) \ - \+ $((0xf))` - - dnl Calculate numerical representation of detected version - openssl_version_number=`expr $(($(grep OPENSSL_VERSION_NUMBER $openssl_include_dir/openssl/opensslv.h | cut -f 2 | tr -d L)))` - - openssl_version_check=`expr $openssl_version_number \>\= $openssl_version_req_number` - if test "$openssl_version_check" = "1"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([Found $OPENSSL_VERSION, which is older than required. Possible compilation failure.]) - fi - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([Missing header openssl/opensslv.h. Unable to determine OpenSSL version.]) - fi - fi - fi - - else - HAVE_OPENSSL="no" - AC_MSG_RESULT([$HAVE_OPENSSL]) - - if test "$openssl_requested" = "yes"; then - AC_MSG_WARN([OpenSSL support requested but headers or library not found. Specify valid prefix of OpenSSL using --with-openssl=@<:@DIR@:>@]) - fi - fi - if test "$HAVE_OPENSSL" = "yes"; then - CPPFLAGS="$CPPFLAGS $OPENSSL_CPPFLAGS -DHAVE_SSL=1" - LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LIBS" - fi -]) diff --git a/asdcplib/m4/ax_lib_xerces.m4 b/asdcplib/m4/ax_lib_xerces.m4 deleted file mode 100644 index a83a6d0..0000000 --- a/asdcplib/m4/ax_lib_xerces.m4 +++ /dev/null @@ -1,297 +0,0 @@ -# =========================================================================== -# http://autoconf-archive.cryp.to/ax_lib_xerces.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_LIB_XERCES([MINIMUM-VERSION]) -# -# DESCRIPTION -# -# This macro provides tests of availability of Apache Xerces C++ Parser of -# particular version or newer. This macros checks for Apache Xerces C++ -# Parser headers and libraries and defines compilation flags -# -# Macro supports following options and their values: -# -# 1) Single-option usage: -# -# --with-xerces - yes, no or path to Xerces installation prefix -# -# 2) Three-options usage (all options are required): -# -# --with-xerces=yes -# --with-xerces-inc - path to base directory with Xerces headers -# --with-xerces-lib - linker flags for Xerces -# -# This macro calls: -# -# AC_SUBST(XERCES_CFLAGS) -# AC_SUBST(XERCES_LDFLAGS) -# AC_SUBST(XERCES_VERSION) - only if version requirement is used -# -# And sets: -# -# HAVE_XERCES -# -# LAST MODIFICATION -# -# 2008-04-12 -# -# COPYLEFT -# -# Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net> -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. - -AC_DEFUN([AX_LIB_XERCES], -[ -# AC_REQUIRE([ACX_PTHREAD]) - - AC_ARG_WITH([xerces], - AC_HELP_STRING([--with-xerces=@<:@ARG@:>@], - [use Xerces C++ Parser from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)] - ), - [ - if test "$withval" = "yes"; then - if test -d /usr/local/include/xercesc ; then - xerces_prefix=/usr/local - elif test -d /usr/include/xercesc ; then - xerces_prefix=/usr - else - xerces_prefix="" - fi - xerces_requested="yes" - elif test -d "$withval"; then - xerces_prefix="$withval" - xerces_requested="yes" - else - xerces_prefix="" - xerces_requested="no" - fi - ], - [ -# dnl Default behavior is implicit yes -# if test -d /usr/local/include/xercesc ; then -# xerces_prefix=/usr/local -# elif test -d /usr/include/xercesc ; then -# xerces_prefix=/usr -# else -# xerces_prefix="" -# fi - dnl Default behavior is implicit no - xerces_prefix="" - xerces_requested="no" - ] - ) - - AC_ARG_WITH([xerces-inc], - AC_HELP_STRING([--with-xerces-inc=@<:@DIR@:>@], - [path to Xerces C++ Parser headers] - ), - [xerces_include_dir="$withval"], - [xerces_include_dir=""] - ) - AC_ARG_WITH([xerces-lib], - AC_HELP_STRING([--with-xerces-lib=@<:@ARG@:>@], - [link options for Xerces C++ Parser libraries] - ), - [xerces_ldflags="$withval"], - [xerces_ldflags=""] - ) - - XERCES_CPPFLAGS="" - XERCES_LDFLAGS="" - XERCES_VERSION="" - - dnl - dnl Collect include/lib paths and flags - dnl - run_xerces_test="no" - - if test -n "$xerces_prefix"; then - xerces_include_dir="$xerces_prefix/include" - xerces_include_dir2="$xerces_prefix/include/xercesc" - xerces_ldflags="-L$xerces_prefix/lib" - run_xerces_test="yes" - elif test "$xerces_requested" = "yes"; then - if test -n "$xerces_include_dir" -a -n "$xerces_lib_flags"; then - xerces_include_dir2="$xerces_include_dir/xercesc" - run_xerces_test="yes" - fi - else - run_xerces_test="no" - fi - - xerces_libs="-lxerces-c" - - dnl - dnl Check Xerces C++ Parser files - dnl - if test "$run_xerces_test" = "yes"; then - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$xerces_include_dir -I$xerces_include_dir2" - - saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$xerces_ldflags $PTHREAD_LDFLAGS $LDFLAGS" - - saved_LIBS="$LIBS" - LIBS="$xerces_libs $PTHREAD_LIBS $LIBS" - - dnl - dnl Check Xerces headers - dnl - AC_MSG_CHECKING([for Xerces C++ Parser headers in $xerces_include_dir and $xerces_include_dir2]) - - AC_LANG_PUSH([C++]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM( - [[ -@%:@include <xercesc/util/XercesDefs.hpp> -@%:@include <xercesc/util/PlatformUtils.hpp> - ]], - [[]] - )], - [ - XERCES_CPPFLAGS="-I$xerces_include_dir -I$xerces_include_dir2" - xerces_header_found="yes" - AC_MSG_RESULT([found]) - ], - [ - xerces_header_found="no" - AC_MSG_RESULT([not found]) - ] - ) - AC_LANG_POP([C++]) - - dnl - dnl Check Xerces libraries - dnl - if test "$xerces_header_found" = "yes"; then - - AC_MSG_CHECKING([for Xerces C++ Parser libraries]) - - AC_LANG_PUSH([C++]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM( - [[ -@%:@include <xercesc/util/XercesDefs.hpp> -@%:@include <xercesc/util/PlatformUtils.hpp> -#if (_XERCES_VERSION >= 20200) -XERCES_CPP_NAMESPACE_USE -#endif - ]], - [[ -XMLPlatformUtils::Initialize(); - ]] - )], - [ - XERCES_LDFLAGS="$xerces_ldflags $PTHREAD_LDFLAGS" - XERCES_LIBS="$xerces_libs $PTHREAD_LIBS" - xerces_lib_found="yes" - AC_MSG_RESULT([found]) - ], - [ - xerces_lib_found="no" - AC_MSG_RESULT([not found]) - ] - ) - AC_LANG_POP([C++]) - fi - - CPPFLAGS="$saved_CPPFLAGS" - LDFLAGS="$saved_LDFLAGS" - LIBS="$saved_LIBS" - fi - - AC_MSG_CHECKING([for Xerces C++ Parser]) - - if test "$run_xerces_test" = "yes"; then - if test "$xerces_header_found" = "yes" -a "$xerces_lib_found" = "yes"; then - - AC_SUBST([XERCES_CPPFLAGS]) - AC_SUBST([XERCES_LDFLAGS]) - AC_SUBST([XERCES_LIBS]) - - HAVE_XERCES="yes" - else - HAVE_XERCES="no" - fi - - AC_MSG_RESULT([$HAVE_XERCES]) - - dnl - dnl Check Xerces version - dnl - if test "$HAVE_XERCES" = "yes"; then - - xerces_version_req=ifelse([$1], [], [], [$1]) - - if test -n "$xerces_version_req"; then - - AC_MSG_CHECKING([if Xerces C++ Parser version is >= $xerces_version_req]) - - if test -f "$xerces_include_dir2/util/XercesVersion.hpp"; then - - xerces_major=`cat $xerces_include_dir2/util/XercesVersion.hpp | \ - grep '^#define.*XERCES_VERSION_MAJOR.*[0-9]$' | \ - sed -e 's/#define XERCES_VERSION_MAJOR.//'` - - xerces_minor=`cat $xerces_include_dir2/util/XercesVersion.hpp | \ - grep '^#define.*XERCES_VERSION_MINOR.*[0-9]$' | \ - sed -e 's/#define XERCES_VERSION_MINOR.//'` - - xerces_revision=`cat $xerces_include_dir2/util/XercesVersion.hpp | \ - grep '^#define.*XERCES_VERSION_REVISION.*[0-9]$' | \ - sed -e 's/#define XERCES_VERSION_REVISION.//'` - - XERCES_VERSION="$xerces_major.$xerces_minor.$xerces_revision" - AC_SUBST([XERCES_VERSION]) - - dnl Decompose required version string and calculate numerical representation - xerces_version_req_major=`expr $xerces_version_req : '\([[0-9]]*\)'` - xerces_version_req_minor=`expr $xerces_version_req : '[[0-9]]*\.\([[0-9]]*\)'` - xerces_version_req_revision=`expr $xerces_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` - if test "x$xerces_version_req_revision" = "x"; then - xerces_version_req_revision="0" - fi - - xerces_version_req_number=`expr $xerces_version_req_major \* 10000 \ - \+ $xerces_version_req_minor \* 100 \ - \+ $xerces_version_req_revision` - - dnl Calculate numerical representation of detected version - xerces_version_number=`expr $xerces_major \* 10000 \ - \+ $xerces_minor \* 100 \ - \+ $xerces_revision` - - xerces_version_check=`expr $xerces_version_number \>\= $xerces_version_req_number` - if test "$xerces_version_check" = "1"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([Found Xerces C++ Parser $XERCES_VERSION, which is older than required. Possible compilation failure.]) - fi - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([Missing header XercesVersion.hpp. Unable to determine Xerces version.]) - fi - fi - fi - - else - HAVE_XERCES="no" - AC_MSG_RESULT([$HAVE_XERCES]) - - if test "$xerces_requested" = "yes"; then - AC_MSG_WARN([Xerces C++ Parser support requested but headers or library not found. Specify valid prefix of Xerces C++ using --with-xerces=@<:@DIR@:>@ or provide include directory and linker flags using --with-xerces-inc and --with-xerces-lib]) - fi - fi - if test "$HAVE_XERCES" = "yes"; then - CPPFLAGS="$CPPFLAGS $XERCES_CPPFLAGS -DHAVE_XERCES_C=1" - LDFLAGS="$LDFLAGS $XERCES_LDFLAGS $XERCES_LIBS" - fi -]) diff --git a/asdcplib/m4/az_python.m4 b/asdcplib/m4/az_python.m4 deleted file mode 100644 index 7133a8a..0000000 --- a/asdcplib/m4/az_python.m4 +++ /dev/null @@ -1,533 +0,0 @@ -##### http://autoconf-archive.cryp.to/az_python.html -# -# SYNOPSIS -# -# AZ_PYTHON_DEFAULT -# AZ_PYTHON_ENABLE -# AZ_PYTHON_WITH -# AZ_PYTHON_PATH -# AZ_PYTHON_VERSION_ENSURE( [2.2] ) -# AZ_PYTHON_CSPEC -# AZ_PYTHON_LSPEC -# -# DESCRIPTION -# -# This file provides autoconf support for those applications that -# want to embed python. It supports all pythons >= 2.2 which is the -# first official release containing distutils. Version 2.2 of python -# was released December 21, 2001. Since it actually executes the -# python, cross platform configuration will probably not work. Also, -# most of the platforms supported are consistent until you look into -# MacOSX. The python included with it is installed as a framework -# which is a very different environment to set up the normal tools -# such as gcc and libtool to deal with. Therefore, once we establish -# which python that we are going to use, we use its distutils to -# actually compile and link our modules or applications. -# -# At this time, it does NOT support linking with Python statically. -# It does support dynamic linking. -# -# This set of macros help define $PYTHON, $PYTHON_USE, $PYTHON_CSPEC -# and $PYTHON_LSPEC. $PYTHON defines the full executable path for the -# Python being linked to and is used within these macros to determine -# if that has been specified or found. These macros do execute this -# python version so it must be present on the system at configure -# time. -# -# $PYTHON_USE is an automake variable that defines whether Python -# support should be included or not in your application. -# $PYTHON_CSPEC is a variable that supplies additional CFLAGS for the -# compilation of the application/shared library. $PYTHON_LSPEC is a -# variable that supplies additional LDFLAGS for linking the -# application/shared library. -# -# The following is an example of how to set up for python usage -# within your application in your configure.in: -# -# AZ_PYTHON_DEFAULT( ) -# AZ_PYTHON_ENABLE( ) # Optional -# AZ_PYTHON_WITH( ) # Optional -# AZ_PYTHON_PATH( ) # or AZ_PYTHON_INSIST( ) -# # if $PYTHON is not defined, then the following do nothing. -# AZ_PYTHON_VERSION_ENSURE( [2.2] ) -# AZ_PYTHON_CSPEC -# AZ_PYTHON_LSPEC -# -# The AZ_PYTHON_DEFAULT sets the $PYTHON_USE to false. Thereby, -# excluding it if it was optional. -# -# The AZ_PYTHON_ENABLE looks for the optional configure parameters of -# --enable-python/--disable-python and establishes the $PYTHON and -# $PYTHON_USE variables accordingly. -# -# The AZ_PYTHON_WITH looks for the optional configure parameters of -# --with-python/--without-python and establishes the $PYTHON and -# $PYTHON_USE variables accordingly. -# -# The AZ_PYTHON_PATH looks for python assuming that none has been -# previously found or defined and issues an error if it does not find -# it. If it does find it, it establishes the $PYTHON and $PYTHON_USE -# variables accordingly. AZ_PYTHON_INSIST could be used here instead -# if you want to insist that Python support be included using the -# --enable-python or --with-python checks previously done. -# -# The AZ_PYTHON_VERSION_ENSURE issues an error if the Python -# previously found is not of version 2.2 or greater. -# -# Once that these macros have be run, we can use PYTHON_USE within -# the makefile.am file to conditionally add the Python support such -# as: -# -# Makefile.am example showing optional inclusion of directories: -# -# if PYTHON_USE -# plugins = plugins -# src = src -# else -# plugins = -# src = -# endif -# -# SUBDIRS = . $(plugins) $(src) -# -# Makefile.am example showing optional shared library build: -# -# if PYTHON_USE -# lib_LTLIBRARIES = libElemList.la -# libElemList_la_SOURCES = libElemList.c -# libElemList_la_CFLAGS = @PYTHON_CSPEC@ -# libElemList_la_LDFLAGS = @PYTHON_LSPEC@ -# endif -# -# Makefile.am example showing optional program build: -# -# if PYTHON_USE -# bin_PROGRAMS = runFunc -# runFunc_SOURCES = runFunc.c -# runFunc_CFLAGS = @PYTHON_CSPEC@ -# runFunc_LDFLAGS = @PYTHON_LSPEC@ -# endif -# -# The above compiles the modules only if PYTHON_USE was specified as -# true. Also, the else portion of the if was optional. -# -# LAST MODIFICATION -# -# 2007-08-04 -# -# COPYLEFT -# -# Copyright (c) 2007 Robert White <kranki@mac.com> -# Copyright (c) 2007 Dustin J. Mitchell <dustin@cs.uchicago.edu> -# -# Copying and distribution of this file, with or without -# modification, are permitted in any medium without royalty provided -# the copyright notice and this notice are preserved. - -# AZ_PYTHON_DEFAULT( ) -# ----------------- -# Sets the default to not include Python support. - -AC_DEFUN([AZ_PYTHON_DEFAULT], -[ - az_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") -]) - - - -# AZ_PYTHON_ENABLE( [path] ) -# ----------------------------------------------------------------- -# Handles the various --enable-python commands. -# Input: -# $1 is the optional search path for the python executable if needed -# Ouput: -# PYTHON_USE (AM_CONDITIONAL) is true if python executable found -# and --enable-python was requested; otherwise false. -# $PYTHON contains the full executable path to python if PYTHON_ENABLE_USE -# is true. -# -# Example: -# AZ_PYTHON_ENABLE( ) -# or -# AZ_PYTHON_ENABLE( "/usr/bin" ) - -AC_DEFUN([AZ_PYTHON_ENABLE], -[ - AC_ARG_VAR([PYTHON],[Python Executable Path]) - - # unless PYTHON was supplied to us (as a precious variable), - # see if --enable-python[=PythonExecutablePath], --enable-python, - # --disable-python or --enable-python=no was given. - if test -z "$PYTHON" - then - AC_MSG_CHECKING(for --enable-python) - AC_ARG_ENABLE( - python, - AC_HELP_STRING([--enable-python@<:@=PYTHON@:>@], - [absolute path name of Python executable] - ), - [ - if test "$enableval" = "yes" - then - # "yes" was specified, but we don't have a path - # for the executable. - # So, let's searth the PATH Environment Variable. - AC_MSG_RESULT(yes) - AC_PATH_PROG( - [PYTHON], - python, - [], - $1 - ) - if test -z "$PYTHON" - then - AC_MSG_ERROR(no path to python found) - fi - az_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - AZ_PYTHON_PREFIX( ) - elif test "$enableval" = "no" - then - AC_MSG_RESULT(no) - az_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - else - # $enableval must be the executable path then. - AC_SUBST([PYTHON], ["${enableval}"]) - AC_MSG_RESULT($withval) - az_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - AZ_PYTHON_PREFIX( ) - fi - ], - [ - # --with-python was not specified. - AC_MSG_RESULT(no) - az_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - ] - ) - fi - -]) - - - -# AZ_PYTHON_CSPEC( ) -# ----------------- -# Set up the c compiler options to compile Python -# embedded programs/libraries in $PYTHON_CSPEC if -# $PYTHON has been defined. - -AC_DEFUN([AZ_PYTHON_CSPEC], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -n "$PYTHON" - then - AC_MSG_CHECKING([for python include directory]) - az_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"` - if test -z "$az_python_prefix" - then - AC_MSG_ERROR([Python Prefix is not known]) - fi - python_path= - az_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"` - az_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"` - az_python_includespec="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc();'`" - if test x"$python_prefix" != x"$python_execprefix"; then - az_python_execspec="-I${az_python_execprefix}/include/python${az_python_version}" - az_python_includespec="${az_python_includespec} $az_python_execspec" - fi - az_python_ccshared=`${PYTHON} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('CFLAGSFORSHARED')"` - az_python_cspec="${az_python_ccshared} ${az_python_includespec}" - AC_SUBST([PYTHON_CSPEC], [${az_python_cspec}]) - AC_SUBST([PYTHON_CPPFLAGS], [${az_python_includespec}]) - AC_SUBST([PYTHON_SHORTVERSION], ["${az_python_version}"]) - AC_MSG_RESULT([$PYTHON_CPPFLAGS]) - fi -]) - - - -# AZ_PYTHON_INSIST( ) -# ----------------- -# Look for Python and set the output variable 'PYTHON' -# to 'python' if found, empty otherwise. - -AC_DEFUN([AZ_PYTHON_PATH], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable not found]) - fi -]) - - - -# AZ_PYTHON_LSPEC( ) -# ----------------- -# Set up the linker options to link Python embedded -# programs/libraries in $PYTHON_LSPEC if $PYTHON -# has been defined. - -AC_DEFUN([AZ_PYTHON_LSPEC], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -n "$PYTHON" - then - AC_MSG_CHECKING([for python linker flags]) - AZ_PYTHON_RUN([ -import sys -import distutils.sysconfig -strUseFrameWork = "--enable-framework" -dictConfig = distutils.sysconfig.get_config_vars( ) -strConfigArgs = dictConfig.get("CONFIG_ARGS") -strLinkSpec = dictConfig.get('LDFLAGS') -if -1 == strConfigArgs.find(strUseFrameWork): - strLibPL = dictConfig.get("LIBPL") - if strLibPL and (strLibPL != ""): - strLinkSpec += " -L%s" % (strLibPL) - strSys = dictConfig.get("SYSLIBS") - if strSys and (strSys != ""): - strLinkSpec += " %s" % (strSys) - strSHL = dictConfig.get("SHLIBS") - if strSHL and (strSHL != ""): - strLinkSpec += " %s" % (strSHL) - # Construct the Python Library Name. - strTmplte = " -lpython%d.%d" - if (sys.platform == "win32") or (sys.platform == "os2emx"): - strTmplte = " -lpython%d%d" - strWrk = strTmplte % ( (sys.hexversion >> 24), - ((sys.hexversion >> 16) & 0xff)) - strLinkSpec += strWrk -else: - # This is not ideal since it changes the search path - # for Frameworks which could have side-effects on - # other included Frameworks. However, it is necessary - # where someone has installed more than one frameworked - # Python. Frameworks are really only used in MacOSX. - strLibFW = dictConfig.get("PYTHONFRAMEWORKPREFIX") - if strLibFW and (strLibFW != ""): - strLinkSpec += " -F%s" % (strLibFW) -strLinkSpec += " %s" % (dictConfig.get('LINKFORSHARED')) -print strLinkSpec - ]) - AC_SUBST([PYTHON_LSPEC], [${az_python_output}]) - az_python_ldflags=`${PYTHON} -c "import distutils.sysconfig; \ - print '-L' + distutils.sysconfig.get_python_lib(), '-lpython' + \ - distutils.sysconfig.get_config_var('VERSION');"` - AC_SUBST([PYTHON_LDFLAGS], [${az_python_ldflags}]) - AC_MSG_RESULT([$PYTHON_LDFLAGS]) - fi -]) - - - -# AZ_PYTHON_PATH( ) -# ----------------- -# Look for Python and set the output variable 'PYTHON' -# to 'python' if found, empty otherwise. - -AC_DEFUN([AZ_PYTHON_PATH], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - AC_PATH_PROG( PYTHON, python, [], $1 ) - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable not found]) - else - az_python_use=true - fi - AM_CONDITIONAL(PYTHON_USE, test "$az_python_use" = "true") -]) - - - -# AZ_PYTHON_PREFIX( ) -# ------------------- -# Use the values of $prefix and $exec_prefix for the corresponding -# values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. - -AC_DEFUN([AZ_PYTHON_PREFIX], -[ - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable Path is not known]) - fi - AC_MSG_CHECKING([for python extension install directory]) - ax_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"` - ax_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"` - AC_SUBST([PYTHON_PREFIX], ["${ax_python_prefix}"]) - AC_SUBST([PYTHON_EXECPREFIX], ["${ax_python_execprefix}"]) - PYTHON_EXECDIR=`$PYTHON -c "import distutils.sysconfig; \ - print distutils.sysconfig.get_python_lib();"` - AC_SUBST([PYTHON_EXECDIR]) - AC_MSG_RESULT([$PYTHON_EXECDIR]) -]) - -# AZ_PYTHON_RUN( PYTHON_PROGRAM ) -# ----------------- -# Run a Python Test Program saving its output -# in az_python_output and its condition code -# in az_python_cc. - -AC_DEFUN([AZ_PYTHON_RUN], -[ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -z "$PYTHON" - then - AC_MSG_ERROR([Python Executable not found]) - else - cat >conftest.py <<_ACEOF -$1 -_ACEOF - az_python_output=`$PYTHON conftest.py` - az_python_cc=$? - rm conftest.py - if test -f "conftest.pyc" - then - rm conftest.pyc - fi - fi -]) - - - -# AZ_PYTHON_VERSION_CHECK( VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE] ) -# ----------------------------------------------------------------------------- -# Run ACTION-IF-TRUE if the Python interpreter has version >= VERSION. -# Run ACTION-IF-FALSE otherwise. -# This test uses sys.hexversion instead of the string equivalant (first -# word of sys.version), in order to cope with versions such as 2.2c1. -# hexversion has been introduced in Python 1.5.2; it's probably not -# worth to support older versions (1.5.1 was released on October 31, 1998). - -AC_DEFUN([AZ_PYTHON_VERSION_CHECK], - [ - AC_ARG_VAR( [PYTHON], [Python Executable Path] ) - if test -n "$PYTHON" - then - AC_MSG_CHECKING([whether $PYTHON version >= $1]) - AZ_PYTHON_RUN([ -import sys, string -# split strings by '.' and convert to numeric. Append some zeros -# because we need at least 4 digits for the hex conversion. -minver = map(int, string.split('$1', '.')) + [[0, 0, 0]] -minverhex = 0 -for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]] -if sys.hexversion >= minverhex: - sys.exit( 0 ) -else: - sys.exit( 1 ) - ]) - if test $az_python_cc -eq 0 - then - $2 - m4_ifvaln( - [$3], - [else $3] - ) - fi - fi -]) - - - -# AZ_PYTHON_VERSION_ENSURE( VERSION ) -# ----------------- -# Insure that the Python Interpreter Version -# is greater than or equal to the VERSION -# parameter. - -AC_DEFUN([AZ_PYTHON_VERSION_ENSURE], -[ - AZ_PYTHON_VERSION_CHECK( - [$1], - [AC_MSG_RESULT(yes)], - [AC_MSG_ERROR(too old)] - ) -]) - - - -# AZ_PYTHON_WITH( [path] ) -# ----------------------------------------------------------------- -# Handles the various --with-python commands. -# Input: -# $1 is the optional search path for the python executable if needed -# Ouput: -# PYTHON_USE (AM_CONDITIONAL) is true if python executable found -# and --with-python was requested; otherwise false. -# $PYTHON contains the full executable path to python if PYTHON_USE -# is true. -# -# Example: -# AZ_PYTHON_WITH( ) -# or -# AZ_PYTHON_WITH("/usr/bin") - -AC_DEFUN([AZ_PYTHON_WITH], -[ - AC_ARG_VAR([PYTHON],[Python Executable Path]) - - # unless PYTHON was supplied to us (as a precious variable), - # see if --with-python[=PythonExecutablePath], --with-python, - # --without-python or --with-python=no was given. - if test -z "$PYTHON" - then - AC_MSG_CHECKING(for --with-python) - AC_ARG_WITH( - python, - AC_HELP_STRING([--with-python@<:@=PYTHON@:>@], - [absolute path name of Python executable] - ), - [ - if test "$withval" = "yes" - then - # "yes" was specified, but we don't have a path - # for the executable. - # So, let's searth the PATH Environment Variable. - AC_MSG_RESULT(yes) - AC_PATH_PROG( - [PYTHON], - python, - [], - $1 - ) - if test -z "$PYTHON" - then - AC_MSG_ERROR(no path to python found) - fi - az_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - AZ_PYTHON_CSPEC() - AZ_PYTHON_LSPEC() - AZ_PYTHON_PREFIX() - elif test "$withval" = "no" - then - AC_MSG_RESULT(no) - az_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - else - # $withval must be the executable path then. - AC_SUBST([PYTHON], ["${withval}"]) - AC_MSG_RESULT($withval) - az_python_use=true - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - AZ_PYTHON_CSPEC() - AZ_PYTHON_LSPEC() - AZ_PYTHON_PREFIX() - fi - ], - [ - # --with-python was not specified. - AC_MSG_RESULT(no) - az_python_use=false - AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true") - ] - ) - fi - -]) diff --git a/asdcplib/m4/libtool.m4 b/asdcplib/m4/libtool.m4 deleted file mode 100644 index 44e0ecf..0000000 --- a/asdcplib/m4/libtool.m4 +++ /dev/null @@ -1,7982 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# 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. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_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 "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -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 - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -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 delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# 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 - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -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 - -Report bugs to <bug-libtool@gnu.org>." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, 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 TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # 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 - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_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 -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # 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) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])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_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_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. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_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 -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - 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. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - 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" - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # 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" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_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_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_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_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}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_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_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 - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# 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. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`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 "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_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 '$LINENO' "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*|s390*-*tpf*|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*|s390*-*tpf*) - 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_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[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 - ;; -*-*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*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - 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* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# 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 \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$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:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_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 "$_lt_linker_boilerplate" | $SED '/^$/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 - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# 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* | cegcc*) - # 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; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - 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 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - 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 - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # 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. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - 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 -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_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 <<_LT_EOF -[#line $LINENO "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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_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_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_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* | cegcc*) - 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_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_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 -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_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:$LINENO: $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:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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_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 .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_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 -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_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 -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_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_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; 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 -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -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 -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # 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 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # 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; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -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 # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''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' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - 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~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - 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 - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - 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 - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # 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 - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # 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}${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 # correct to gnu/linux during the next big refactor - 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 - ;; - -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[[23]].*) 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 # correct to gnu/linux during the next big refactor - 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 - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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 glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # 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;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' - ;; - -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 # correct to gnu/linux during the next big refactor - 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=qnx - 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='ldqnx.so' - ;; - -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 # correct to gnu/linux during the next big refactor - 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 # correct to gnu/linux during the next big refactor - 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 - 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 # correct to gnu/linux during the next big refactor - 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 - shlibpath_overrides_runpath=yes - 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' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - 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' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - -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 - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[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]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_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="m4_if([$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 <<_LT_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 - -_LT_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 -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_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 - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_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])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 </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]) -_LT_PATH_LD_GNU -AC_SUBST([LD]) - -_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) -])# LT_PATH_LD - -# Old names: -AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) -AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_LD], []) -dnl AC_DEFUN([AC_PROG_LD], []) - - -# _LT_PATH_LD_GNU -#- -------------- -m4_defun([_LT_PATH_LD_GNU], -[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 lds 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 -])# _LT_PATH_LD_GNU - - -# _LT_CMD_RELOAD -# -------------- -# find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -m4_defun([_LT_CMD_RELOAD], -[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 - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - 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 -_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl -_LT_TAGDECL([], [reload_cmds], [2])dnl -])# _LT_CMD_RELOAD - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize 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 -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. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && 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 - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -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 - ;; - -haiku*) - 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])(-bit)?( [LM]SB)? 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 glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - 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=pass_all - ;; - -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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - 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 - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -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 - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (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 - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-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_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# 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]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - 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 - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# 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 - -# Try without a prefix underscore, 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. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_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 <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_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_globsym_save_LIBS - CFLAGS=$lt_globsym_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 - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # 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_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $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_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_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 - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # 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_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_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_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_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_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_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_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - 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_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - 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 - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_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_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_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_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= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # 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_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = 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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[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_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_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_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_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_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_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* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$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' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_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 - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_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~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_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. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_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_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 - ;; - *) - # 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. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_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_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_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_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_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 - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_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_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - 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_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_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_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 - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_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 func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_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_SYS_MODULE_PATH_AIX([$1]) - _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_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*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # 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. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # 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_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_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' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_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_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $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_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_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_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_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_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_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_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_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' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_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_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_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_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_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_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$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_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -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_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_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # 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]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -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 -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # 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_TAG_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_CFLAGS=$CFLAGS - 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++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_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_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_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_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 -v "^Configured with:" | $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_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_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_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - 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_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_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_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 - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_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 func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_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_SYS_MODULE_PATH_AIX([$1]) - _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_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_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # 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_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_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_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_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_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_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) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_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_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_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; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_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_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_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_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-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_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_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-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_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_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; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_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_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # 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_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_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' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_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 -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_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::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_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_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_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | 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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_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=`func_echo_all "$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; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_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 -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_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_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_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_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_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 -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_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_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$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_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - 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 -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([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. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -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... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -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 - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${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 - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} 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_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_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_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$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_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_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 -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[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. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -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 - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # 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_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_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_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # 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_TAG_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_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - 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_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # 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_TAG_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_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - 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_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_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_TAG_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_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_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_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_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_TAG_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_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# 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. # -############################################################ - -m4_defun([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]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/asdcplib/m4/ltoptions.m4 b/asdcplib/m4/ltoptions.m4 deleted file mode 100644 index 5d9acd8..0000000 --- a/asdcplib/m4/ltoptions.m4 +++ /dev/null @@ -1,384 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# 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 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_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=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_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=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_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=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/asdcplib/m4/ltsugar.m4 b/asdcplib/m4/ltsugar.m4 deleted file mode 100644 index 9000a05..0000000 --- a/asdcplib/m4/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# 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 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/asdcplib/m4/ltversion.m4 b/asdcplib/m4/ltversion.m4 deleted file mode 100644 index 07a8602..0000000 --- a/asdcplib/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# 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. - -# @configure_input@ - -# serial 3337 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/asdcplib/m4/lt~obsolete.m4 b/asdcplib/m4/lt~obsolete.m4 deleted file mode 100644 index c573da9..0000000 --- a/asdcplib/m4/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# 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 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/asdcplib/src/AS_DCP.cpp b/asdcplib/src/AS_DCP.cpp deleted file mode 100755 index 0ae9a1f..0000000 --- a/asdcplib/src/AS_DCP.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP.cpp - \version $Id: AS_DCP.cpp,v 1.6 2009/04/09 19:16:49 msheby Exp $ - \brief AS-DCP library, misc classes and subroutines -*/ - -#include "AS_DCP_internal.h" -#include <assert.h> - -const char* -ASDCP::Version() -{ - return PACKAGE_VERSION; -} - - -//------------------------------------------------------------------------------------------ -// -// frame buffer base class implementation - -ASDCP::FrameBuffer::FrameBuffer() : - m_Data(0), m_Capacity(0), m_OwnMem(false), m_Size(0), - m_FrameNumber(0), m_SourceLength(0), m_PlaintextOffset(0) -{ -} - -ASDCP::FrameBuffer::~FrameBuffer() -{ - if ( m_OwnMem && m_Data != 0 ) - free(m_Data); -} - -// Instructs the object to use an externally allocated buffer. The external -// buffer will not be cleaned up by the frame buffer when it is destroyed. -// Call with (0,0) to revert to internally allocated buffer. -// Returns error if the buf_addr argument is NULL and either buf_size is -// non-zero or internally allocated memory is in use. -ASDCP::Result_t -ASDCP::FrameBuffer::SetData(byte_t* buf_addr, ui32_t buf_size) -{ - // if buf_addr is null and we have an external memory reference, - // drop the reference and place the object in the initialized- - // but-no-buffer-allocated state - if ( buf_addr == 0 ) - { - if ( buf_size > 0 || m_OwnMem ) - return RESULT_PTR; - - m_OwnMem = false; - m_Capacity = m_Size = 0; - m_Data = 0; - return RESULT_OK; - } - - if ( m_OwnMem && m_Data != 0 ) - free(m_Data); - - m_OwnMem = false; - m_Capacity = buf_size; - m_Data = buf_addr; - m_Size = 0; - - return RESULT_OK; -} - -// Sets the size of the internally allocate buffer. Returns RESULT_CAPEXTMEM -// if the object is using an externally allocated buffer via SetData(); -// Resets content size to zero. -ASDCP::Result_t -ASDCP::FrameBuffer::Capacity(ui32_t cap_size) -{ - if ( ! m_OwnMem && m_Data != 0 ) - return RESULT_CAPEXTMEM; // cannot resize external memory - - if ( m_Capacity < cap_size ) - { - if ( m_Data != 0 ) - { - assert(m_OwnMem); - free(m_Data); - } - - m_Data = (byte_t*)malloc(cap_size); - - if ( m_Data == 0 ) - return RESULT_ALLOC; - - m_Capacity = cap_size; - m_OwnMem = true; - m_Size = 0; - } - - return RESULT_OK; -} - - -// -// end AS_DCP.cpp -// diff --git a/asdcplib/src/AS_DCP.h b/asdcplib/src/AS_DCP.h deleted file mode 100755 index eb2ce6e..0000000 --- a/asdcplib/src/AS_DCP.h +++ /dev/null @@ -1,1570 +0,0 @@ -/* -Copyright (c) 2003-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP.h - \version $Id: AS_DCP.h,v 1.43 2012/02/02 01:58:43 jhurst Exp $ - \brief AS-DCP library, public interface - -The asdcplib library is a set of file access objects that offer simplified -access to files conforming to the standards published by the SMPTE -D-Cinema Technology Committee 21DC. The file format, labeled AS-DCP, -is described in series of separate documents which include but may not -be be limited to: - - o SMPTE ST 429-2:2011 DCP Operational Constraints - o SMPTE ST 429-3:2006 Sound and Picture Track File - o SMPTE ST 429-4:2006 MXF JPEG 2000 Application - o SMPTE ST 429-5:2009 Timed Text Track File - o SMPTE ST 429-6:2006 MXF Track File Essence Encryption - o SMPTE ST 429-10:2008 Stereoscopic Picture Track File - o SMPTE ST 330:2004 - UMID - o SMPTE ST 336:2001 - KLV - o SMPTE ST 377-1:2011 - MXF - o SMPTE ST 377-4:2012 - MXF Multichannel Audio Labeling Framework - o SMPTE ST 390:2011 - MXF OP-Atom - o SMPTE ST 379-1:2009 - MXF Generic Container (GC) - o SMPTE ST 381-1:2005 - MPEG2 picture in GC - o SMPTE ST 422:2006 - JPEG 2000 picture in GC - o SMPTE ST 382:2007 - WAV/PCM sound in GC - o IETF RFC 2104 - HMAC/SHA1 - o NIST FIPS 197 - AES (Rijndael) (via OpenSSL) - - o MXF Interop Track File Specification - o MXF Interop Track File Essence Encryption Specification - o MXF Interop Operational Constraints Specification - - Note: the MXF Interop documents are not formally published. - Contact the asdcplib support address to get copies. - -The following use cases are supported by the library: - - o Write essence to a plaintext or ciphertext AS-DCP file: - MPEG2 Video Elementary Stream - JPEG 2000 codestreams - JPEG 2000 stereoscopic codestream pairs - PCM audio streams - SMPTE 429-7 Timed Text XML with font and image resources - - o Read essence from a plaintext or ciphertext AS-DCP file: - MPEG2 Video Elementary Stream - JPEG 2000 codestreams - JPEG 2000 stereoscopic codestream pairs - PCM audio streams - SMPTE 429-7 Timed Text XML with font and image resources - - o Read header metadata from an AS-DCP file - -This project depends upon the following libraries: - - OpenSSL http://www.openssl.org/ - - Expat http://expat.sourceforge.net/ or - Xerces-C http://xerces.apache.org/xerces-c/ - An XML library is not needed if you don't need support for SMPTE ST 429-5:2009. -*/ - -#ifndef _AS_DCP_H_ -#define _AS_DCP_H_ - -#include <KM_error.h> -#include <KM_platform.h> -#include <stdio.h> -#include <stdarg.h> -#include <math.h> -#include <iosfwd> -#include <string> -#include <cstring> -#include <list> - -//-------------------------------------------------------------------------------- -// common integer types -// supply your own by defining ASDCP_NO_BASE_TYPES - -#ifndef ASDCP_NO_BASE_TYPES -typedef unsigned char byte_t; -typedef char i8_t; -typedef unsigned char ui8_t; -typedef short i16_t; -typedef unsigned short ui16_t; -typedef int i32_t; -typedef unsigned int ui32_t; -#endif - - -//-------------------------------------------------------------------------------- -// convenience macros - -// Convenience macros for managing return values in predicates -#define ASDCP_SUCCESS(v) (((v) < 0) ? 0 : 1) -#define ASDCP_FAILURE(v) (((v) < 0) ? 1 : 0) - - -// Returns RESULT_PTR if the given argument is NULL. -// See Result_t below for an explanation of RESULT_* symbols. -#define ASDCP_TEST_NULL(p) \ - if ( (p) == 0 ) { \ - return ASDCP::RESULT_PTR; \ - } - -// Returns RESULT_PTR if the given argument is NULL. See Result_t -// below for an explanation of RESULT_* symbols. It then assumes -// that the argument is a pointer to a string and returns -// RESULT_NULL_STR if the first character is '\0'. -// -#define ASDCP_TEST_NULL_STR(p) \ - ASDCP_TEST_NULL(p); \ - if ( (p)[0] == '\0' ) { \ - return ASDCP::RESULT_NULL_STR; \ - } - -// Produces copy constructor boilerplate. Allows convenient private -// declatarion of copy constructors to prevent the compiler from -// silently manufacturing default methods. -#define ASDCP_NO_COPY_CONSTRUCT(T) \ - T(const T&); \ - T& operator=(const T&) - -//-------------------------------------------------------------------------------- -// All library components are defined in the namespace ASDCP -// -namespace ASDCP { - // - // The version number declaration and explanation have moved to ../configure.ac - const char* Version(); - - // UUIDs are passed around as strings of UUIDlen bytes - const ui32_t UUIDlen = 16; - - // Encryption keys are passed around as strings of KeyLen bytes - const ui32_t KeyLen = 16; - - //--------------------------------------------------------------------------------- - // return values - - using Kumu::Result_t; - - using Kumu::RESULT_FALSE; - using Kumu::RESULT_OK; - using Kumu::RESULT_FAIL; - using Kumu::RESULT_PTR; - using Kumu::RESULT_NULL_STR; - using Kumu::RESULT_ALLOC; - using Kumu::RESULT_PARAM; - using Kumu::RESULT_SMALLBUF; - using Kumu::RESULT_INIT; - using Kumu::RESULT_NOT_FOUND; - using Kumu::RESULT_NO_PERM; - using Kumu::RESULT_FILEOPEN; - using Kumu::RESULT_BADSEEK; - using Kumu::RESULT_READFAIL; - using Kumu::RESULT_WRITEFAIL; - using Kumu::RESULT_STATE; - using Kumu::RESULT_ENDOFFILE; - using Kumu::RESULT_CONFIG; - - KM_DECLARE_RESULT(FORMAT, -101, "The file format is not proper OP-Atom/AS-DCP."); - KM_DECLARE_RESULT(RAW_ESS, -102, "Unknown raw essence file type."); - KM_DECLARE_RESULT(RAW_FORMAT, -103, "Raw essence format invalid."); - KM_DECLARE_RESULT(RANGE, -104, "Frame number out of range."); - KM_DECLARE_RESULT(CRYPT_CTX, -105, "AESEncContext required when writing to encrypted file."); - KM_DECLARE_RESULT(LARGE_PTO, -106, "Plaintext offset exceeds frame buffer size."); - KM_DECLARE_RESULT(CAPEXTMEM, -107, "Cannot resize externally allocated memory."); - KM_DECLARE_RESULT(CHECKFAIL, -108, "The check value did not decrypt correctly."); - KM_DECLARE_RESULT(HMACFAIL, -109, "HMAC authentication failure."); - KM_DECLARE_RESULT(HMAC_CTX, -110, "HMAC context required."); - KM_DECLARE_RESULT(CRYPT_INIT, -111, "Error initializing block cipher context."); - KM_DECLARE_RESULT(EMPTY_FB, -112, "Empty frame buffer."); - KM_DECLARE_RESULT(KLV_CODING, -113, "KLV coding error."); - KM_DECLARE_RESULT(SPHASE, -114, "Stereoscopic phase mismatch."); - KM_DECLARE_RESULT(SFORMAT, -115, "Rate mismatch, file may contain stereoscopic essence."); - - //--------------------------------------------------------------------------------- - // file identification - - // The file accessors in this library implement a bounded set of essence types. - // This list will be expanded when support for new types is added to the library. - enum EssenceType_t { - ESS_UNKNOWN, // the file is not a supported AS-DCP essence container - ESS_MPEG2_VES, // the file contains an MPEG video elementary stream - ESS_JPEG_2000, // the file contains one or more JPEG 2000 codestreams - ESS_PCM_24b_48k, // the file contains one or more PCM audio pairs - ESS_PCM_24b_96k, // the file contains one or more PCM audio pairs - ESS_TIMED_TEXT, // the file contains an XML timed text document and one or more resources - ESS_JPEG_2000_S, // the file contains one or more JPEG 2000 codestream pairs (stereoscopic) - }; - - // Determine the type of essence contained in the given MXF file. RESULT_OK - // is returned if the file is successfully opened and contains a valid MXF - // stream. If there is an error, the result code will indicate the reason. - Result_t EssenceType(const char* filename, EssenceType_t& type); - - // Determine the type of essence contained in the given raw file. RESULT_OK - // is returned if the file is successfully opened and contains a known - // stream type. If there is an error, the result code will indicate the reason. - Result_t RawEssenceType(const char* filename, EssenceType_t& type); - - - //--------------------------------------------------------------------------------- - // base types - - // A simple container for rational numbers. - class Rational - { - public: - i32_t Numerator; - i32_t Denominator; - - Rational() : Numerator(0), Denominator(0) {} - Rational(i32_t n, i32_t d) : Numerator(n), Denominator(d) {} - - inline double Quotient() const { - return (double)Numerator / (double)Denominator; - } - - inline bool operator==(const Rational& rhs) const { - return ( rhs.Numerator == Numerator && rhs.Denominator == Denominator ); - } - - inline bool operator!=(const Rational& rhs) const { - return ( rhs.Numerator != Numerator || rhs.Denominator != Denominator ); - } - - inline bool operator<(const Rational& rhs) { - if ( Numerator < rhs.Numerator ) return true; - if ( Numerator == rhs.Numerator && Denominator < rhs.Denominator ) return true; - return false; - } - - inline bool operator>(const Rational& rhs) { - if ( Numerator > rhs.Numerator ) return true; - if ( Numerator == rhs.Numerator && Denominator > rhs.Denominator ) return true; - return false; - } - }; - - // common edit rates, use these instead of hard coded constants - const Rational EditRate_24 = Rational(24,1); - const Rational EditRate_23_98 = Rational(24000,1001); // Not a DCI-compliant value! - const Rational EditRate_48 = Rational(48,1); - const Rational SampleRate_48k = Rational(48000,1); - const Rational SampleRate_96k = Rational(96000,1); - - // Additional frame rates, see ST 428-11, ST 429-13 - // These rates are new and not supported by all systems. Do not assume that - // a package made using one of these rates will work just anywhere! - const Rational EditRate_25 = Rational(25,1); - const Rational EditRate_30 = Rational(30,1); - const Rational EditRate_50 = Rational(50,1); - const Rational EditRate_60 = Rational(60,1); - const Rational EditRate_96 = Rational(96,1); - const Rational EditRate_100 = Rational(100,1); - const Rational EditRate_120 = Rational(120,1); - - // Non-reference counting container for internal member objects. - // Please do not use this class for any other purpose. - template <class T> - class mem_ptr - { - T* m_p; // the thing we point to - mem_ptr(T&); - - public: - mem_ptr() : m_p(0) {} - mem_ptr(T* p) : m_p(p) {} - ~mem_ptr() { delete m_p; } - - inline T& operator*() const { return *m_p; } - inline T* operator->() const { return m_p; } - inline operator T*()const { return m_p; } - inline const mem_ptr<T>& operator=(T* p) { set(p); return *this; } - inline T* set(T* p) { delete m_p; m_p = p; return m_p; } - inline T* get() const { return m_p; } - inline void release() { m_p = 0; } - inline bool empty() const { return m_p == 0; } - }; - - - //--------------------------------------------------------------------------------- - // WriterInfo class - encapsulates writer identification details used for - // OpenWrite() calls. Replace these values at runtime to identify your product. - // - // MXF files use SMPTE Universal Labels to identify data items. The set of Labels - // in a file is determined by the MXF Operational Pattern and any constraining - // documentation. There are currently two flavors of AS-DCP file in use: MXF Interop - // (AKA JPEG Interop) and SMPTE. The two differ in the values of three labels: - // - // OPAtom - // Interop : 06 0e 2b 34 04 01 01 01 0d 01 02 01 10 00 00 00 - // SMPTE : 06 0e 2b 34 04 01 01 02 0d 01 02 01 10 00 00 00 - // - // EKLV Packet: - // Interop : 06 0e 2b 34 02 04 01 07 0d 01 03 01 02 7e 01 00 - // SMPTE : 06 0e 2b 34 02 04 01 01 0d 01 03 01 02 7e 01 00 - // - // GenericDescriptor/SubDescriptors: - // Interop : 06 0e 2b 34 01 01 01 02 06 01 01 04 06 10 00 00 - // SMPTE : 06 0e 2b 34 01 01 01 09 06 01 01 04 06 10 00 00 - // - // asdcplib will read any (otherwise valid) file which has any combination of the - // above values. When writing files, MXF Interop labels are used by default. To - // write a file containing SMPTE labels, replace the default label set value in - // the WriterInfo before calling OpenWrite() - // - // - enum LabelSet_t - { - LS_MXF_UNKNOWN, - LS_MXF_INTEROP, - LS_MXF_SMPTE - }; - - // - struct WriterInfo - { - byte_t ProductUUID[UUIDlen]; - byte_t AssetUUID[UUIDlen]; - byte_t ContextID[UUIDlen]; - byte_t CryptographicKeyID[UUIDlen]; - bool EncryptedEssence; // true if essence data is (or is going to be) encrypted - bool UsesHMAC; // true if HMAC exists or is to be calculated - std::string ProductVersion; - std::string CompanyName; - std::string ProductName; - LabelSet_t LabelSetType; - - WriterInfo() : EncryptedEssence(false), UsesHMAC(false), LabelSetType(LS_MXF_INTEROP) - { - static byte_t default_ProductUUID_Data[UUIDlen] = { - 0x43, 0x05, 0x9a, 0x1d, 0x04, 0x32, 0x41, 0x01, - 0xb8, 0x3f, 0x73, 0x68, 0x15, 0xac, 0xf3, 0x1d }; - - memcpy(ProductUUID, default_ProductUUID_Data, UUIDlen); - memset(AssetUUID, 0, UUIDlen); - memset(ContextID, 0, UUIDlen); - memset(CryptographicKeyID, 0, UUIDlen); - - ProductVersion = "Unreleased "; - ProductVersion += Version(); - CompanyName = "DCI"; - ProductName = "asdcplib"; - } - }; - - // Print WriterInfo to std::ostream - std::ostream& operator << (std::ostream& strm, const WriterInfo& winfo); - // Print WriterInfo to stream, stderr by default. - void WriterInfoDump(const WriterInfo&, FILE* = 0); - - //--------------------------------------------------------------------------------- - // cryptographic support - - // The following classes define interfaces to Rijndael contexts having the following properties: - // o 16 byte key - // o CBC mode with 16 byte block size - const ui32_t CBC_KEY_SIZE = 16; - const ui32_t CBC_BLOCK_SIZE = 16; - const ui32_t HMAC_SIZE = 20; - - // - class AESEncContext - { - class h__AESContext; - mem_ptr<h__AESContext> m_Context; - ASDCP_NO_COPY_CONSTRUCT(AESEncContext); - - public: - AESEncContext(); - ~AESEncContext(); - - // Initializes Rijndael CBC encryption context. - // Returns error if the key argument is NULL. - Result_t InitKey(const byte_t* key); - - // Initializes 16 byte CBC Initialization Vector. This operation may be performed - // any number of times for a given key. - // Returns error if the i_vec argument is NULL. - Result_t SetIVec(const byte_t* i_vec); - Result_t GetIVec(byte_t* i_vec) const; - - // Encrypt a block of data. The block size must be a multiple of CBC_BLOCK_SIZE. - // Returns error if either argument is NULL. - Result_t EncryptBlock(const byte_t* pt_buf, byte_t* ct_buf, ui32_t block_size); - }; - - // - class AESDecContext - { - class h__AESContext; - mem_ptr<h__AESContext> m_Context; - ASDCP_NO_COPY_CONSTRUCT(AESDecContext); - - public: - AESDecContext(); - ~AESDecContext(); - - // Initializes Rijndael CBC decryption context. - // Returns error if the key argument is NULL. - Result_t InitKey(const byte_t* key); - - // Initializes 16 byte CBC Initialization Vector. This operation may be performed - // any number of times for a given key. - // Returns error if the i_vec argument is NULL. - Result_t SetIVec(const byte_t* i_vec); - - // Decrypt a block of data. The block size must be a multiple of CBC_BLOCK_SIZE. - // Returns error if either argument is NULL. - Result_t DecryptBlock(const byte_t* ct_buf, byte_t* pt_buf, ui32_t block_size); - }; - - // - class HMACContext - { - class h__HMACContext; - mem_ptr<h__HMACContext> m_Context; - ASDCP_NO_COPY_CONSTRUCT(HMACContext); - - public: - HMACContext(); - ~HMACContext(); - - // Initializes HMAC context. The key argument must point to a binary - // key that is CBC_KEY_SIZE bytes in length. Returns error if the key - // argument is NULL. - Result_t InitKey(const byte_t* key, LabelSet_t); - - // Reset internal state, allows repeated cycles of Update -> Finalize - void Reset(); - - // Add data to the digest. Returns error if the key argument is NULL or - // if the digest has been finalized. - Result_t Update(const byte_t* buf, ui32_t buf_len); - - // Finalize digest. Returns error if the digest has already been finalized. - Result_t Finalize(); - - // Writes HMAC value to given buffer. buf must point to a writable area of - // memory that is at least HMAC_SIZE bytes in length. Returns error if the - // buf argument is NULL or if the digest has not been finalized. - Result_t GetHMACValue(byte_t* buf) const; - - // Tests the given value against the finalized value in the object. buf must - // point to a readable area of memory that is at least HMAC_SIZE bytes in length. - // Returns error if the buf argument is NULL or if the values do ot match. - Result_t TestHMACValue(const byte_t* buf) const; - }; - - //--------------------------------------------------------------------------------- - // frame buffer base class - // - // The supported essence types are stored using per-frame KLV packetization. The - // following class implements essence-neutral functionality for managing a buffer - // containing a frame of essence. - - class FrameBuffer - { - ASDCP_NO_COPY_CONSTRUCT(FrameBuffer); - - protected: - byte_t* m_Data; // pointer to memory area containing frame data - ui32_t m_Capacity; // size of memory area pointed to by m_Data - bool m_OwnMem; // if false, m_Data points to externally allocated memory - ui32_t m_Size; // size of frame data in memory area pointed to by m_Data - ui32_t m_FrameNumber; // delivery-order frame number - - // It is possible to read raw ciphertext from an encrypted AS-DCP file. - // After reading an encrypted AS-DCP file in raw mode, the frame buffer will - // contain the encrypted source value portion of the Encrypted Triplet, followed - // by the integrity pack, if it exists. - // The buffer will begin with the IV and CheckValue, followed by encrypted essence - // and optional integrity pack - // The SourceLength and PlaintextOffset values from the packet will be held in the - // following variables: - ui32_t m_SourceLength; // plaintext length (delivered plaintext+decrypted ciphertext) - ui32_t m_PlaintextOffset; // offset to first byte of ciphertext - - public: - FrameBuffer(); - virtual ~FrameBuffer(); - - // Instructs the object to use an externally allocated buffer. The external - // buffer will not be cleaned up by the frame buffer when it exits. - // Call with (0,0) to revert to internally allocated buffer. - // Returns error if the buf_addr argument is NULL and buf_size is non-zero. - Result_t SetData(byte_t* buf_addr, ui32_t buf_size); - - // Sets the size of the internally allocate buffer. Returns RESULT_CAPEXTMEM - // if the object is using an externally allocated buffer via SetData(); - // Resets content size to zero. - Result_t Capacity(ui32_t cap); - - // returns the size of the buffer - inline ui32_t Capacity() const { return m_Capacity; } - - // returns a const pointer to the essence data - inline const byte_t* RoData() const { return m_Data; } - - // returns a non-const pointer to the essence data - inline byte_t* Data() { return m_Data; } - - // set the size of the buffer's contents - inline ui32_t Size(ui32_t size) { return m_Size = size; } - - // returns the size of the buffer's contents - inline ui32_t Size() const { return m_Size; } - - // Sets the absolute frame number of this frame in the file in delivery order. - inline void FrameNumber(ui32_t num) { m_FrameNumber = num; } - - // Returns the absolute frame number of this frame in the file in delivery order. - inline ui32_t FrameNumber() const { return m_FrameNumber; } - - // Sets the length of the plaintext essence data - inline void SourceLength(ui32_t len) { m_SourceLength = len; } - - // When this value is 0 (zero), the buffer contains only plaintext. When it is - // non-zero, the buffer contains raw ciphertext and the return value is the length - // of the original plaintext. - inline ui32_t SourceLength() const { return m_SourceLength; } - - // Sets the offset into the buffer at which encrypted data begins - inline void PlaintextOffset(ui32_t ofst) { m_PlaintextOffset = ofst; } - - // Returns offset into buffer of first byte of ciphertext. - inline ui32_t PlaintextOffset() const { return m_PlaintextOffset; } - }; - - //--------------------------------------------------------------------------------- - // Accessors in the MXFReader and MXFWriter classes below return these types to - // provide direct access to MXF metadata structures declared in MXF.h and Metadata.h - - namespace MXF { - // #include<Metadata.h> to use these - class OPAtomHeader; - class OPAtomIndexFooter; - }; - - //--------------------------------------------------------------------------------- - // MPEG2 video elementary stream support - - // - namespace MPEG2 - { - // MPEG picture coding type - enum FrameType_t { - FRAME_U = 0x00, // Unknown - FRAME_I = 0x01, // I-Frame - FRAME_P = 0x02, // P-Frame - FRAME_B = 0x03 // B-Frame - }; - - // convert FrameType_t to char - inline char FrameTypeChar(FrameType_t type) - { - switch ( type ) - { - case FRAME_I: return 'I'; - case FRAME_B: return 'B'; - case FRAME_P: return 'P'; - default: return 'U'; - } - } - - // Structure represents the metadata elements in the file header's - // MPEG2VideoDescriptor object. - struct VideoDescriptor - { - Rational EditRate; // - ui32_t FrameRate; // - Rational SampleRate; // - ui8_t FrameLayout; // - ui32_t StoredWidth; // - ui32_t StoredHeight; // - Rational AspectRatio; // - ui32_t ComponentDepth; // - ui32_t HorizontalSubsampling; // - ui32_t VerticalSubsampling; // - ui8_t ColorSiting; // - ui8_t CodedContentType; // - bool LowDelay; // - ui32_t BitRate; // - ui8_t ProfileAndLevel; // - ui32_t ContainerDuration; // - }; - - // Print VideoDescriptor to std::ostream - std::ostream& operator << (std::ostream& strm, const VideoDescriptor& vdesc); - // Print VideoDescriptor to stream, stderr by default. - void VideoDescriptorDump(const VideoDescriptor&, FILE* = 0); - - // A container for MPEG frame data. - class FrameBuffer : public ASDCP::FrameBuffer - { - ASDCP_NO_COPY_CONSTRUCT(FrameBuffer); // TODO: should have copy construct - - protected: - FrameType_t m_FrameType; - ui8_t m_TemporalOffset; - bool m_ClosedGOP; - bool m_GOPStart; - - public: - FrameBuffer() : - m_FrameType(FRAME_U), m_TemporalOffset(0), - m_ClosedGOP(false), m_GOPStart(false) {} - - FrameBuffer(ui32_t size) : - m_FrameType(FRAME_U), m_TemporalOffset(0), - m_ClosedGOP(false), m_GOPStart(false) - { - Capacity(size); - } - - virtual ~FrameBuffer() {} - - // Sets the MPEG frame type of the picture data in the frame buffer. - inline void FrameType(FrameType_t type) { m_FrameType = type; } - - // Returns the MPEG frame type of the picture data in the frame buffer. - inline FrameType_t FrameType() const { return m_FrameType; } - - // Sets the MPEG temporal offset of the picture data in the frame buffer. - inline void TemporalOffset(ui8_t offset) { m_TemporalOffset = offset; } - - // Returns the MPEG temporal offset of the picture data in the frame buffer. - inline ui8_t TemporalOffset() const { return m_TemporalOffset; } - - // Sets the MPEG GOP 'start' attribute for the frame buffer. - inline void GOPStart(bool start) { m_GOPStart = start; } - - // True if the frame in the buffer is the first in the GOP (in transport order) - inline bool GOPStart() const { return m_GOPStart; } - - // Sets the MPEG GOP 'closed' attribute for the frame buffer. - inline void ClosedGOP(bool closed) { m_ClosedGOP = closed; } - - // Returns true if the frame in the buffer is from a closed GOP, false if - // the frame is from an open GOP. Always returns false unless GOPStart() - // returns true. - inline bool ClosedGOP() const { return m_ClosedGOP; } - - // Print object state to stream, include n bytes of frame data if indicated. - // Default stream is stderr. - void Dump(FILE* = 0, ui32_t dump_len = 0) const; - }; - - - // An object which opens and reads an MPEG2 Video Elementary Stream file. The call to - // OpenRead() reads metadata from the file and populates an internal VideoDescriptor object. - // Each subsequent call to ReadFrame() reads exactly one frame from the stream into the - // given FrameBuffer object. - class Parser - { - class h__Parser; - mem_ptr<h__Parser> m_Parser; - ASDCP_NO_COPY_CONSTRUCT(Parser); - - public: - Parser(); - virtual ~Parser(); - - // Opens the stream for reading, parses enough data to provide a complete - // set of stream metadata for the MXFWriter below. - Result_t OpenRead(const char* filename) const; - - // Fill a VideoDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillVideoDescriptor(VideoDescriptor&) const; - - // Rewind the stream to the beginning. - Result_t Reset() const; - - // Reads the next sequential frame in the input file and places it in the - // frame buffer. Fails if the buffer is too small or the stream is empty. - // The frame buffer's PlaintextOffset parameter will be set to the first - // data byte of the first slice. Set this value to zero if you want - // encrypted headers. - Result_t ReadFrame(FrameBuffer&) const; - }; - - // A class which creates and writes MPEG frame data to an AS-DCP format MXF file. - // Not yet implemented - class MXFWriter - { - class h__Writer; - mem_ptr<h__Writer> m_Writer; - ASDCP_NO_COPY_CONSTRUCT(MXFWriter); - - public: - MXFWriter(); - virtual ~MXFWriter(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for writing. The file must not exist. Returns error if - // the operation cannot be completed or if nonsensical data is discovered - // in the essence descriptor. - Result_t OpenWrite(const char* filename, const WriterInfo&, - const VideoDescriptor&, ui32_t HeaderSize = 16384); - - // Writes a frame of essence to the MXF file. If the optional AESEncContext - // argument is present, the essence is encrypted prior to writing. - // Fails if the file is not open, is finalized, or an operating system - // error occurs. - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - - // Closes the MXF file, writing the index and revised header. - Result_t Finalize(); - }; - - // A class which reads MPEG frame data from an AS-DCP format MXF file. - class MXFReader - { - class h__Reader; - mem_ptr<h__Reader> m_Reader; - ASDCP_NO_COPY_CONSTRUCT(MXFReader); - - public: - MXFReader(); - virtual ~MXFReader(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for reading. The file must exist. Returns error if the - // operation cannot be completed. - Result_t OpenRead(const char* filename) const; - - // Returns RESULT_INIT if the file is not open. - Result_t Close() const; - - // Fill a VideoDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillVideoDescriptor(VideoDescriptor&) const; - - // Fill a WriterInfo struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillWriterInfo(WriterInfo&) const; - - // Reads a frame of essence from the MXF file. If the optional AESEncContext - // argument is present, the essence is decrypted after reading. If the MXF - // file is encrypted and the AESDecContext argument is NULL, the frame buffer - // will contain the ciphertext frame data. If the HMACContext argument is - // not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadFrame(ui32_t frame_number, FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Calculates the first frame in transport order of the GOP in which the requested - // frame is located. Calls ReadFrame() to fetch the frame at the calculated position. - // Returns RESULT_INIT if the file is not open. - Result_t ReadFrameGOPStart(ui32_t frame_number, FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Calculates the first frame in transport order of the GOP in which the requested - // frame is located. Sets key_frame_number to the number of the frame at the calculated position. - // Returns RESULT_INIT if the file is not open. - Result_t FindFrameGOPStart(ui32_t frame_number, ui32_t& key_frame_number) const; - - // Returns the type of the frame at the given position. - // Returns RESULT_INIT if the file is not open or RESULT_RANGE if the index is out of range. - Result_t FrameType(ui32_t frame_number, FrameType_t&) const; - - // Print debugging information to stream - void DumpHeaderMetadata(FILE* = 0) const; - void DumpIndex(FILE* = 0) const; - }; - } // namespace MPEG2 - - //--------------------------------------------------------------------------------- - // - - - - namespace PCM - { - // The default value of the ChannelFormat element of the AudioDescriptor struct - // is CF_NONE. If the value is set to one of the other ChannelFormat_t enum - // values, the file's Wave Audio Descriptor will contain a Channel Assignment - // element. - // - // The channel format should be one of (CF_CFG_1, CF_CFG_2, or CF_CFG_3) for - // SMPTE 429-2 files. It should normally be CF_NONE for JPEG Interop files, but - // the 429-2 may also be used. - // - enum ChannelFormat_t { - CF_NONE, - CF_CFG_1, // 5.1 with optional HI/VI - CF_CFG_2, // 6.1 (5.1 + center surround) with optional HI/VI - CF_CFG_3, // 7.1 (SDDS) with optional HI/VI - CF_CFG_4, // Wild Track Format - CF_CFG_5, // 7.1 DS with optional HI/VI - }; - - struct AudioDescriptor - { - Rational EditRate; // rate of frame wrapping - Rational AudioSamplingRate; // rate of audio sample - ui32_t Locked; // - ui32_t ChannelCount; // number of channels - ui32_t QuantizationBits; // number of bits per single-channel sample - ui32_t BlockAlign; // number of bytes ber sample, all channels - ui32_t AvgBps; // - ui32_t LinkedTrackID; // - ui32_t ContainerDuration; // number of frames - ChannelFormat_t ChannelFormat; // audio channel arrangement - }; - - // Print AudioDescriptor to std::ostream - std::ostream& operator << (std::ostream& strm, const AudioDescriptor& adesc); - // Print debugging information to stream (stderr default) - void AudioDescriptorDump(const AudioDescriptor&, FILE* = 0); - - // Returns size in bytes of a single sample of data described by ADesc - inline ui32_t CalcSampleSize(const AudioDescriptor& ADesc) - { - return (ADesc.QuantizationBits / 8) * ADesc.ChannelCount; - } - - // Returns number of samples per frame of data described by ADesc - inline ui32_t CalcSamplesPerFrame(const AudioDescriptor& ADesc) - { - double tmpd = ADesc.AudioSamplingRate.Quotient() / ADesc.EditRate.Quotient(); - return (ui32_t)ceil(tmpd); - } - - // Returns the size in bytes of a frame of data described by ADesc - inline ui32_t CalcFrameBufferSize(const AudioDescriptor& ADesc) - { - return CalcSampleSize(ADesc) * CalcSamplesPerFrame(ADesc); - } - - // - class FrameBuffer : public ASDCP::FrameBuffer - { - public: - FrameBuffer() {} - FrameBuffer(ui32_t size) { Capacity(size); } - virtual ~FrameBuffer() {} - - // Print debugging information to stream (stderr default) - void Dump(FILE* = 0, ui32_t dump_bytes = 0) const; - }; - - // An object which opens and reads a WAV file. The call to OpenRead() reads metadata from - // the file and populates an internal AudioDescriptor object. Each subsequent call to - // ReadFrame() reads exactly one frame from the stream into the given FrameBuffer object. - // A "frame" is either 2000 or 2002 samples, depending upon the value of PictureRate. - class WAVParser - { - class h__WAVParser; - mem_ptr<h__WAVParser> m_Parser; - ASDCP_NO_COPY_CONSTRUCT(WAVParser); - - public: - WAVParser(); - virtual ~WAVParser(); - - // Opens the stream for reading, parses enough data to provide a complete - // set of stream metadata for the MXFWriter below. PictureRate controls - // ther frame rate for the MXF frame wrapping option. - Result_t OpenRead(const char* filename, const Rational& PictureRate) const; - - // Fill an AudioDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillAudioDescriptor(AudioDescriptor&) const; - - // Rewind the stream to the beginning. - Result_t Reset() const; - - // Reads the next sequential frame in the input file and places it in the - // frame buffer. Fails if the buffer is too small or the stream is empty. - Result_t ReadFrame(FrameBuffer&) const; - }; - - - // - class MXFWriter - { - class h__Writer; - mem_ptr<h__Writer> m_Writer; - ASDCP_NO_COPY_CONSTRUCT(MXFWriter); - - public: - MXFWriter(); - virtual ~MXFWriter(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for writing. The file must not exist. Returns error if - // the operation cannot be completed or if nonsensical data is discovered - // in the essence descriptor. - Result_t OpenWrite(const char* filename, const WriterInfo&, - const AudioDescriptor&, ui32_t HeaderSize = 16384); - - // Writes a frame of essence to the MXF file. If the optional AESEncContext - // argument is present, the essence is encrypted prior to writing. - // Fails if the file is not open, is finalized, or an operating system - // error occurs. - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - - // Closes the MXF file, writing the index and revised header. - Result_t Finalize(); - }; - - // - class MXFReader - { - class h__Reader; - mem_ptr<h__Reader> m_Reader; - ASDCP_NO_COPY_CONSTRUCT(MXFReader); - - public: - MXFReader(); - virtual ~MXFReader(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for reading. The file must exist. Returns error if the - // operation cannot be completed. - Result_t OpenRead(const char* filename) const; - - // Returns RESULT_INIT if the file is not open. - Result_t Close() const; - - // Fill an AudioDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillAudioDescriptor(AudioDescriptor&) const; - - // Fill a WriterInfo struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillWriterInfo(WriterInfo&) const; - - // Reads a frame of essence from the MXF file. If the optional AESEncContext - // argument is present, the essence is decrypted after reading. If the MXF - // file is encrypted and the AESDecContext argument is NULL, the frame buffer - // will contain the ciphertext frame data. If the HMACContext argument is - // not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadFrame(ui32_t frame_number, FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Print debugging information to stream - void DumpHeaderMetadata(FILE* = 0) const; - void DumpIndex(FILE* = 0) const; - }; - } // namespace PCM - - //--------------------------------------------------------------------------------- - // - namespace JP2K - { - const ui32_t MaxComponents = 3; - const ui32_t MaxPrecincts = 32; // ISO 15444-1 Annex A.6.1 - const ui32_t MaxDefaults = 256; // made up - -#pragma pack(1) - struct ImageComponent_t // ISO 15444-1 Annex A.5.1 - { - ui8_t Ssize; - ui8_t XRsize; - ui8_t YRsize; - }; - - struct CodingStyleDefault_t // ISO 15444-1 Annex A.6.1 - { - ui8_t Scod; - - struct - { - ui8_t ProgressionOrder; - ui8_t NumberOfLayers[sizeof(ui16_t)]; - ui8_t MultiCompTransform; - } SGcod; - - struct - { - ui8_t DecompositionLevels; - ui8_t CodeblockWidth; - ui8_t CodeblockHeight; - ui8_t CodeblockStyle; - ui8_t Transformation; - ui8_t PrecinctSize[MaxPrecincts]; - } SPcod; - }; - - struct QuantizationDefault_t // ISO 15444-1 Annex A.6.4 - { - ui8_t Sqcd; - ui8_t SPqcd[MaxDefaults]; - ui8_t SPqcdLength; - }; -#pragma pack() - - struct PictureDescriptor - { - Rational EditRate; - ui32_t ContainerDuration; - Rational SampleRate; - ui32_t StoredWidth; - ui32_t StoredHeight; - Rational AspectRatio; - ui16_t Rsize; - ui32_t Xsize; - ui32_t Ysize; - ui32_t XOsize; - ui32_t YOsize; - ui32_t XTsize; - ui32_t YTsize; - ui32_t XTOsize; - ui32_t YTOsize; - ui16_t Csize; - ImageComponent_t ImageComponents[MaxComponents]; - CodingStyleDefault_t CodingStyleDefault; - QuantizationDefault_t QuantizationDefault; - }; - - // Print debugging information to std::ostream - std::ostream& operator << (std::ostream& strm, const PictureDescriptor& pdesc); - // Print debugging information to stream (stderr default) - void PictureDescriptorDump(const PictureDescriptor&, FILE* = 0); - - // - class FrameBuffer : public ASDCP::FrameBuffer - { - public: - FrameBuffer() {} - FrameBuffer(ui32_t size) { Capacity(size); } - virtual ~FrameBuffer() {} - - // Print debugging information to stream (stderr default) - void Dump(FILE* = 0, ui32_t dump_bytes = 0) const; - }; - - - // An object which opens and reads a JPEG 2000 codestream file. The file is expected - // to contain exactly one complete frame of picture essence as an unwrapped (raw) - // ISO/IEC 15444 codestream. - class CodestreamParser - { - class h__CodestreamParser; - mem_ptr<h__CodestreamParser> m_Parser; - ASDCP_NO_COPY_CONSTRUCT(CodestreamParser); - - public: - CodestreamParser(); - virtual ~CodestreamParser(); - - // Opens a file for reading, parses enough data to provide a complete - // set of stream metadata for the MXFWriter below. - // The frame buffer's PlaintextOffset parameter will be set to the first - // byte of the data segment. Set this value to zero if you want - // encrypted headers. - Result_t OpenReadFrame(const char* filename, FrameBuffer&) const; - - Result_t OpenReadFrame(const unsigned char * data, unsigned int size, FrameBuffer&) const; - - // Fill a PictureDescriptor struct with the values from the file's codestream. - // Returns RESULT_INIT if the file is not open. - Result_t FillPictureDescriptor(PictureDescriptor&) const; - }; - - // Parses the data in the frame buffer to fill in the picture descriptor. Copies - // the offset of the image data into start_of_data. Returns error if the parser fails. - Result_t ParseMetadataIntoDesc(const FrameBuffer&, PictureDescriptor&, byte_t* start_of_data = 0); - - // An object which reads a sequence of files containing JPEG 2000 pictures. - class SequenceParser - { - class h__SequenceParser; - mem_ptr<h__SequenceParser> m_Parser; - ASDCP_NO_COPY_CONSTRUCT(SequenceParser); - - public: - SequenceParser(); - virtual ~SequenceParser(); - - // Opens a directory for reading. The directory is expected to contain one or - // more files, each containing the codestream for exactly one picture. The - // files must be named such that the frames are in temporal order when sorted - // alphabetically by filename. The parser will automatically parse enough data - // from the first file to provide a complete set of stream metadata for the - // MXFWriter below. If the "pedantic" parameter is given and is true, the - // parser will check the metadata for each codestream and fail if a - // mismatch is detected. - Result_t OpenRead(const char* filename, bool pedantic = false) const; - - // Opens a file sequence for reading. The sequence is expected to contain one or - // more filenames, each naming a file containing the codestream for exactly one - // picture. The parser will automatically parse enough data - // from the first file to provide a complete set of stream metadata for the - // MXFWriter below. If the "pedantic" parameter is given and is true, the - // parser will check the metadata for each codestream and fail if a - // mismatch is detected. - Result_t OpenRead(const std::list<std::string>& file_list, bool pedantic = false) const; - - // Fill a PictureDescriptor struct with the values from the first file's codestream. - // Returns RESULT_INIT if the directory is not open. - Result_t FillPictureDescriptor(PictureDescriptor&) const; - - // Rewind the directory to the beginning. - Result_t Reset() const; - - // Reads the next sequential frame in the directory and places it in the - // frame buffer. Fails if the buffer is too small or the direcdtory - // contains no more files. - // The frame buffer's PlaintextOffset parameter will be set to the first - // byte of the data segment. Set this value to zero if you want - // encrypted headers. - Result_t ReadFrame(FrameBuffer&) const; - }; - - - // - class MXFWriter - { - class h__Writer; - mem_ptr<h__Writer> m_Writer; - ASDCP_NO_COPY_CONSTRUCT(MXFWriter); - - public: - MXFWriter(); - virtual ~MXFWriter(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for writing. The file must not exist unless overwrite is true. Returns error if - // the operation cannot be completed or if nonsensical data is discovered - // in the essence descriptor. - Result_t OpenWrite(const char* filename, const WriterInfo&, - const PictureDescriptor&, ui32_t HeaderSize, bool overwrite); - - // Writes a frame of essence to the MXF file. If the optional AESEncContext - // argument is present, the essence is encrypted prior to writing. - // A MD5 hash of the data that we write is written to hash if it is not 0 - // Fails if the file is not open, is finalized, or an operating system - // error occurs. - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0, std::string* hash = 0); - - Result_t FakeWriteFrame(int size); - - // Closes the MXF file, writing the index and revised header. - Result_t Finalize(); - - // Return the current file offset in the MXF file that we are writing - ui64_t Tell() const; - }; - - // - class MXFReader - { - class h__Reader; - mem_ptr<h__Reader> m_Reader; - ASDCP_NO_COPY_CONSTRUCT(MXFReader); - - public: - MXFReader(); - virtual ~MXFReader(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for reading. The file must exist. Returns error if the - // operation cannot be completed. - Result_t OpenRead(const char* filename) const; - - // Returns RESULT_INIT if the file is not open. - Result_t Close() const; - - // Fill an AudioDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillPictureDescriptor(PictureDescriptor&) const; - - // Fill a WriterInfo struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillWriterInfo(WriterInfo&) const; - - // Reads a frame of essence from the MXF file. If the optional AESEncContext - // argument is present, the essence is decrypted after reading. If the MXF - // file is encrypted and the AESDecContext argument is NULL, the frame buffer - // will contain the ciphertext frame data. If the HMACContext argument is - // not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadFrame(ui32_t frame_number, FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Print debugging information to stream - void DumpHeaderMetadata(FILE* = 0) const; - void DumpIndex(FILE* = 0) const; - }; - - - // Stereoscopic Image support - // - - enum StereoscopicPhase_t - { - SP_LEFT, - SP_RIGHT - }; - - struct SFrameBuffer - { - JP2K::FrameBuffer Left; - JP2K::FrameBuffer Right; - - SFrameBuffer(ui32_t size) { - Left.Capacity(size); - Right.Capacity(size); - } - }; - - class MXFSWriter - { - class h__SWriter; - mem_ptr<h__SWriter> m_Writer; - ASDCP_NO_COPY_CONSTRUCT(MXFSWriter); - - public: - MXFSWriter(); - virtual ~MXFSWriter(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for writing. The file must not exist unless overwrite is true. Returns error if - // the operation cannot be completed or if nonsensical data is discovered - // in the essence descriptor. - Result_t OpenWrite(const char* filename, const WriterInfo&, - const PictureDescriptor&, ui32_t HeaderSize, bool overwrite); - - // Writes a pair of frames of essence to the MXF file. If the optional AESEncContext - // argument is present, the essence is encrypted prior to writing. - // Fails if the file is not open, is finalized, or an operating system - // error occurs. - Result_t WriteFrame(const SFrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - - // Writes a frame of essence to the MXF file. If the optional AESEncContext - // argument is present, the essence is encrypted prior to writing. - // Fails if the file is not open, is finalized, or an operating system - // error occurs. Frames must be written in the proper phase (L-R-L-R), - // RESULT_SPHASE will be returned if phase is reversed. The first frame - // written must be left eye. - Result_t WriteFrame(const FrameBuffer&, StereoscopicPhase_t phase, - AESEncContext* = 0, HMACContext* = 0, std::string* hash = 0); - - Result_t FakeWriteFrame(int size, StereoscopicPhase_t phase); - - // Closes the MXF file, writing the index and revised header. Returns - // RESULT_SPHASE if WriteFrame was called an odd number of times. - Result_t Finalize(); - - // Return the current file offset in the MXF file that we are writing - ui64_t Tell() const; - }; - - // - class MXFSReader - { - class h__SReader; - mem_ptr<h__SReader> m_Reader; - ASDCP_NO_COPY_CONSTRUCT(MXFSReader); - - public: - MXFSReader(); - virtual ~MXFSReader(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for reading. The file must exist. Returns error if the - // operation cannot be completed. - Result_t OpenRead(const char* filename) const; - - // Returns RESULT_INIT if the file is not open. - Result_t Close() const; - - // Fill an AudioDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillPictureDescriptor(PictureDescriptor&) const; - - // Fill a WriterInfo struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillWriterInfo(WriterInfo&) const; - - // Reads a pair of frames of essence from the MXF file. If the optional AESEncContext - // argument is present, the essence is decrypted after reading. If the MXF - // file is encrypted and the AESDecContext argument is NULL, the frame buffer - // will contain the ciphertext frame data. If the HMACContext argument is - // not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadFrame(ui32_t frame_number, SFrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Reads a frame of essence from the MXF file. If the optional AESEncContext - // argument is present, the essence is decrypted after reading. If the MXF - // file is encrypted and the AESDecContext argument is NULL, the frame buffer - // will contain the ciphertext frame data. If the HMACContext argument is - // not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadFrame(ui32_t frame_number, StereoscopicPhase_t phase, - FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Print debugging information to stream - void DumpHeaderMetadata(FILE* = 0) const; - void DumpIndex(FILE* = 0) const; - }; - } // namespace JP2K - - //--------------------------------------------------------------------------------- - // - namespace TimedText - { - enum MIMEType_t { MT_BIN, MT_PNG, MT_OPENTYPE }; - - struct TimedTextResourceDescriptor - { - byte_t ResourceID[UUIDlen]; - MIMEType_t Type; - - TimedTextResourceDescriptor() : Type(MT_BIN) {} - }; - - typedef std::list<TimedTextResourceDescriptor> ResourceList_t; - - struct TimedTextDescriptor - { - Rational EditRate; // - ui32_t ContainerDuration; - byte_t AssetID[UUIDlen]; - std::string NamespaceName; - std::string EncodingName; - ResourceList_t ResourceList; - - TimedTextDescriptor() : ContainerDuration(0), EncodingName("UTF-8") {} // D-Cinema format is always UTF-8 - }; - - // Print debugging information to std::ostream - std::ostream& operator << (std::ostream& strm, const TimedTextDescriptor& tinfo); - // Print debugging information to stream (stderr default) - void DescriptorDump(const TimedTextDescriptor&, FILE* = 0); - - // - class FrameBuffer : public ASDCP::FrameBuffer - { - ASDCP_NO_COPY_CONSTRUCT(FrameBuffer); // TODO: should have copy construct - - protected: - byte_t m_AssetID[UUIDlen]; - std::string m_MIMEType; - - public: - FrameBuffer() { memset(m_AssetID, 0, UUIDlen); } - FrameBuffer(ui32_t size) { Capacity(size); memset(m_AssetID, 0, UUIDlen); } - virtual ~FrameBuffer() {} - - inline const byte_t* AssetID() const { return m_AssetID; } - inline void AssetID(const byte_t* buf) { memcpy(m_AssetID, buf, UUIDlen); } - inline const char* MIMEType() const { return m_MIMEType.c_str(); } - inline void MIMEType(const std::string& s) { m_MIMEType = s; } - - // Print debugging information to stream (stderr default) - void Dump(FILE* = 0, ui32_t dump_bytes = 0) const; - }; - - // - class IResourceResolver - { - public: - virtual ~IResourceResolver() {} - virtual Result_t ResolveRID(const byte_t* uuid, FrameBuffer&) const = 0; // return data for RID - }; - - // - class DCSubtitleParser - { - class h__SubtitleParser; - mem_ptr<h__SubtitleParser> m_Parser; - ASDCP_NO_COPY_CONSTRUCT(DCSubtitleParser); - - public: - DCSubtitleParser(); - virtual ~DCSubtitleParser(); - - // Opens an XML file for reading, parses data to provide a complete - // set of stream metadata for the MXFWriter below. - Result_t OpenRead(const char* filename) const; - - // Parses an XML document to provide a complete set of stream metadata - // for the MXFWriter below. The optional filename argument is used to - // initialize the default resource resolver (see ReadAncillaryResource). - Result_t OpenRead(const std::string& xml_doc, const char* filename = 0) const; - - // Fill a TimedTextDescriptor struct with the values from the file's contents. - // Returns RESULT_INIT if the file is not open. - Result_t FillTimedTextDescriptor(TimedTextDescriptor&) const; - - // Reads the complete Timed Text Resource into the given string. - Result_t ReadTimedTextResource(std::string&) const; - - // Reads the Ancillary Resource having the given ID. Fails if the buffer - // is too small or the resource does not exist. The optional Resolver - // argument can be provided which will be used to retrieve the resource - // having a particulat UUID. If a Resolver is not supplied, the default - // internal resolver will return the contents of the file having the UUID - // as the filename. The filename must exist in the same directory as the - // XML file opened with OpenRead(). - Result_t ReadAncillaryResource(const byte_t* uuid, FrameBuffer&, - const IResourceResolver* Resolver = 0) const; - }; - - // - class MXFWriter - { - class h__Writer; - mem_ptr<h__Writer> m_Writer; - ASDCP_NO_COPY_CONSTRUCT(MXFWriter); - - public: - MXFWriter(); - virtual ~MXFWriter(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for writing. The file must not exist. Returns error if - // the operation cannot be completed or if nonsensical data is discovered - // in the essence descriptor. - Result_t OpenWrite(const char* filename, const WriterInfo&, - const TimedTextDescriptor&, ui32_t HeaderSize = 16384); - - // Writes the Timed-Text Resource to the MXF file. The file must be UTF-8 - // encoded. If the optional AESEncContext argument is present, the essence - // is encrypted prior to writing. Fails if the file is not open, is finalized, - // or an operating system error occurs. - // This method may only be called once, and it must be called before any - // call to WriteAncillaryResource(). RESULT_STATE will be returned if these - // conditions are not met. - Result_t WriteTimedTextResource(const std::string& XMLDoc, AESEncContext* = 0, HMACContext* = 0); - - // Writes an Ancillary Resource to the MXF file. If the optional AESEncContext - // argument is present, the essence is encrypted prior to writing. - // Fails if the file is not open, is finalized, or an operating system - // error occurs. RESULT_STATE will be returned if the method is called before - // WriteTimedTextResource() - Result_t WriteAncillaryResource(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - - // Closes the MXF file, writing the index and revised header. - Result_t Finalize(); - }; - - // - class MXFReader - { - class h__Reader; - mem_ptr<h__Reader> m_Reader; - ASDCP_NO_COPY_CONSTRUCT(MXFReader); - - public: - MXFReader(); - virtual ~MXFReader(); - - // Warning: direct manipulation of MXF structures can interfere - // with the normal operation of the wrapper. Caveat emptor! - virtual MXF::OPAtomHeader& OPAtomHeader(); - virtual MXF::OPAtomIndexFooter& OPAtomIndexFooter(); - - // Open the file for reading. The file must exist. Returns error if the - // operation cannot be completed. - Result_t OpenRead(const char* filename) const; - - // Returns RESULT_INIT if the file is not open. - Result_t Close() const; - - // Fill a TimedTextDescriptor struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillTimedTextDescriptor(TimedTextDescriptor&) const; - - // Fill a WriterInfo struct with the values from the file's header. - // Returns RESULT_INIT if the file is not open. - Result_t FillWriterInfo(WriterInfo&) const; - - // Reads the complete Timed Text Resource into the given string. Fails if the resource - // is encrypted and AESDecContext is NULL (use the following method to retrieve the - // raw ciphertet block). - Result_t ReadTimedTextResource(std::string&, AESDecContext* = 0, HMACContext* = 0) const; - - // Reads the complete Timed Text Resource from the MXF file. If the optional AESEncContext - // argument is present, the resource is decrypted after reading. If the MXF - // file is encrypted and the AESDecContext argument is NULL, the frame buffer - // will contain the ciphertext frame data. If the HMACContext argument is - // not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadTimedTextResource(FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Reads the timed-text resource having the given UUID from the MXF file. If the - // optional AESEncContext argument is present, the resource is decrypted after - // reading. If the MXF file is encrypted and the AESDecContext argument is NULL, - // the frame buffer will contain the ciphertext frame data. If the HMACContext - // argument is not NULL, the HMAC will be calculated (if the file supports it). - // Returns RESULT_INIT if the file is not open, failure if the frame number is - // out of range, or if optional decrypt or HAMC operations fail. - Result_t ReadAncillaryResource(const byte_t* uuid, FrameBuffer&, AESDecContext* = 0, HMACContext* = 0) const; - - // Print debugging information to stream - void DumpHeaderMetadata(FILE* = 0) const; - void DumpIndex(FILE* = 0) const; - }; - } // namespace TimedText - - -} // namespace ASDCP - - -#endif // _AS_DCP_H_ - -// -// end AS_DCP.h -// diff --git a/asdcplib/src/AS_DCP_AES.cpp b/asdcplib/src/AS_DCP_AES.cpp deleted file mode 100755 index bb2a400..0000000 --- a/asdcplib/src/AS_DCP_AES.cpp +++ /dev/null @@ -1,446 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_AES.h - \version $Id: AS_DCP_AES.cpp,v 1.13 2009/10/15 17:31:27 jhurst Exp $ - \brief AS-DCP library, AES wrapper -*/ - - -#include <assert.h> -#include <AS_DCP.h> -#include <KM_log.h> -#include <KM_prng.h> -using Kumu::DefaultLogSink; - -using namespace ASDCP; -const int KEY_SIZE_BITS = 128; - -#include <openssl/aes.h> -#include <openssl/sha.h> -#include <openssl/bn.h> -#include <openssl/err.h> - - -void -print_ssl_error() -{ - char err_buf[256]; - unsigned long errval = ERR_get_error(); - DefaultLogSink().Error("OpenSSL: %s\n", ERR_error_string(errval, err_buf)); -} - -//------------------------------------------------------------------------------------------ - -class ASDCP::AESEncContext::h__AESContext : public AES_KEY -{ -public: - byte_t m_IVec[CBC_BLOCK_SIZE]; -}; - - -ASDCP::AESEncContext::AESEncContext() {} -ASDCP::AESEncContext::~AESEncContext() {} - -// Initializes Rijndael CBC encryption context. -// Returns error if the key argument is NULL. -ASDCP::Result_t -ASDCP::AESEncContext::InitKey(const byte_t* key) -{ - KM_TEST_NULL_L(key); - - if ( m_Context ) - return RESULT_INIT; - - m_Context = new h__AESContext; - - if ( AES_set_encrypt_key(key, KEY_SIZE_BITS, m_Context) ) - { - print_ssl_error(); - return RESULT_CRYPT_INIT; - } - - return RESULT_OK; -} - - -// Set the value of the 16 byte CBC Initialization Vector. This operation may be performed -// any number of times for a given key. -// Returns error if the i_vec argument is NULL. -ASDCP::Result_t -ASDCP::AESEncContext::SetIVec(const byte_t* i_vec) -{ - KM_TEST_NULL_L(i_vec); - - if ( ! m_Context ) - return RESULT_INIT; - - memcpy(m_Context->m_IVec, i_vec, CBC_BLOCK_SIZE); - return RESULT_OK; -} - - -// Retrieve the value of the 16 byte CBC Initialization Vector. -// Returns error if the i_vec argument is NULL. -ASDCP::Result_t -ASDCP::AESEncContext::GetIVec(byte_t* i_vec) const -{ - KM_TEST_NULL_L(i_vec); - - if ( ! m_Context ) - return RESULT_INIT; - - memcpy(i_vec, m_Context->m_IVec, CBC_BLOCK_SIZE); - return RESULT_OK; -} - - -// Encrypt a 16 byte block of data. -// Returns error if either argument is NULL. -ASDCP::Result_t -ASDCP::AESEncContext::EncryptBlock(const byte_t* pt_buf, byte_t* ct_buf, ui32_t block_size) -{ - KM_TEST_NULL_L(pt_buf); - KM_TEST_NULL_L(ct_buf); - assert(block_size > 0); - assert( block_size % CBC_BLOCK_SIZE == 0 ); - - if ( m_Context.empty() ) - return RESULT_INIT; - - h__AESContext* Ctx = m_Context; - byte_t tmp_buf[CBC_BLOCK_SIZE]; - const byte_t* in_p = pt_buf; - byte_t* out_p = ct_buf; - - while ( block_size ) - { - // xor with the previous block - for ( ui32_t i = 0; i < CBC_BLOCK_SIZE; i++ ) - tmp_buf[i] = in_p[i] ^ Ctx->m_IVec[i]; - - AES_encrypt(tmp_buf, Ctx->m_IVec, Ctx); - memcpy(out_p, Ctx->m_IVec, CBC_BLOCK_SIZE); - - in_p += CBC_BLOCK_SIZE; - out_p += CBC_BLOCK_SIZE; - block_size -= CBC_BLOCK_SIZE; - } - - return RESULT_OK; -} - - -//------------------------------------------------------------------------------------------ - -class ASDCP::AESDecContext::h__AESContext : public AES_KEY -{ -public: - byte_t m_IVec[CBC_BLOCK_SIZE]; -}; - -ASDCP::AESDecContext::AESDecContext() {} -ASDCP::AESDecContext::~AESDecContext() {} - - -// Initializes Rijndael CBC decryption context. -// Returns error if the key argument is NULL. -ASDCP::Result_t -ASDCP::AESDecContext::InitKey(const byte_t* key) -{ - KM_TEST_NULL_L(key); - - if ( m_Context ) - return RESULT_INIT; - - m_Context = new h__AESContext; - - if ( AES_set_decrypt_key(key, KEY_SIZE_BITS, m_Context) ) - { - print_ssl_error(); - return RESULT_CRYPT_INIT; - } - - return RESULT_OK; -} - -// Initializes 16 byte CBC Initialization Vector. This operation may be performed -// any number of times for a given key. -// Returns error if the i_vec argument is NULL. -ASDCP::Result_t -ASDCP::AESDecContext::SetIVec(const byte_t* i_vec) -{ - KM_TEST_NULL_L(i_vec); - - if ( ! m_Context ) - return RESULT_INIT; - - memcpy(m_Context->m_IVec, i_vec, CBC_BLOCK_SIZE); - return RESULT_OK; -} - -// Decrypt a 16 byte block of data. -// Returns error if either argument is NULL. -ASDCP::Result_t -ASDCP::AESDecContext::DecryptBlock(const byte_t* ct_buf, byte_t* pt_buf, ui32_t block_size) -{ - KM_TEST_NULL_L(ct_buf); - KM_TEST_NULL_L(pt_buf); - assert(block_size > 0); - assert( block_size % CBC_BLOCK_SIZE == 0 ); - - if ( m_Context.empty() ) - return RESULT_INIT; - - register h__AESContext* Ctx = m_Context; - - const byte_t* in_p = ct_buf; - byte_t* out_p = pt_buf; - - while ( block_size ) - { - AES_decrypt(in_p, out_p, Ctx); - - for ( ui32_t i = 0; i < CBC_BLOCK_SIZE; i++ ) - out_p[i] ^= Ctx->m_IVec[i]; - - memcpy(Ctx->m_IVec, in_p, CBC_BLOCK_SIZE); - - in_p += CBC_BLOCK_SIZE; - out_p += CBC_BLOCK_SIZE; - block_size -= CBC_BLOCK_SIZE; - } - - return RESULT_OK; -} - -//------------------------------------------------------------------------------------------ - -static const ui32_t B_len = 64; // rfc 2104, Sec. 2 - -static byte_t const ipad_const = 0x36; -static byte_t const opad_const = 0x5c; - -class HMACContext::h__HMACContext -{ - SHA_CTX m_SHA; - byte_t m_key[KeyLen]; - ASDCP_NO_COPY_CONSTRUCT(h__HMACContext); - -public: - byte_t m_SHAValue[HMAC_SIZE]; - bool m_Final; - - h__HMACContext() : m_Final(false) {} - ~h__HMACContext() {} - - // SMPTE 429.6 MIC key generation - void SetKey(const byte_t* key) - { - byte_t rng_buf[SHA_DIGEST_LENGTH*2]; - Kumu::Gen_FIPS_186_Value(key, KeyLen, rng_buf, SHA_DIGEST_LENGTH*2); - - // rng_buf contains two rounds, x0 and x1 (each 160 bits). - // Use x1 per SMPTE 430-6-2006 Sec. 7.10 - memcpy(m_key, rng_buf+SHA_DIGEST_LENGTH, KeyLen); - Reset(); - } - - // MXF Interop MIC key generation - void SetInteropKey(const byte_t* key) - { - static byte_t key_nonce[KeyLen] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; - byte_t sha_buf[SHA_DIGEST_LENGTH]; - - // 7.10: MICKey = trunc( SHA1 ( key, key_nonce ) ) - SHA_CTX SHA; - SHA1_Init(&SHA); - SHA1_Update(&SHA, key, KeyLen); - SHA1_Update(&SHA, key_nonce, KeyLen); - SHA1_Final(sha_buf, &SHA); - memcpy(m_key, sha_buf, KeyLen); - Reset(); - } - - // - void - Reset() - { - byte_t xor_buf[B_len]; - memset(xor_buf, 0, B_len); - memcpy(xor_buf, m_key, KeyLen); - - memset(m_SHAValue, 0, HMAC_SIZE); - m_Final = false; - SHA1_Init(&m_SHA); - - // H(K XOR opad, H(K XOR ipad, text)) - // ^^^^^^^^^^ - for ( ui32_t i = 0; i < B_len; i++ ) - xor_buf[i] ^= ipad_const; - - SHA1_Update(&m_SHA, xor_buf, B_len); - } - - // - void - Update(const byte_t* buf, ui32_t buf_len) - { - // H(K XOR opad, H(K XOR ipad, text)) - // ^^^^ - SHA1_Update(&m_SHA, buf, buf_len); - } - - // - void - Finalize() - { - SHA_CTX SHA; - SHA1_Init(&SHA); - - byte_t xor_buf[B_len]; - memset(xor_buf, 0, B_len); - memcpy(xor_buf, m_key, KeyLen); - - SHA1_Init(&SHA); - - // H(K XOR opad, H(K XOR ipad, text)) - // ^^^^^^^^^^ - for ( ui32_t i = 0; i < B_len; i++ ) - xor_buf[i] ^= opad_const; - - SHA1_Update(&SHA, xor_buf, B_len); - - // H(K XOR opad, H(K XOR ipad, text)) - // ^ - SHA1_Final(m_SHAValue, &m_SHA); - SHA1_Update(&SHA, m_SHAValue, HMAC_SIZE); - - // H(K XOR opad, H(K XOR ipad, text)) - // ^ - SHA1_Final(m_SHAValue, &SHA); - m_Final = true; - } -}; - - -HMACContext::HMACContext() -{ -} - -HMACContext::~HMACContext() -{ -} - - -// -Result_t -HMACContext::InitKey(const byte_t* key, LabelSet_t SetType) -{ - KM_TEST_NULL_L(key); - - m_Context = new h__HMACContext; - - switch ( SetType ) - { - case LS_MXF_INTEROP: m_Context->SetInteropKey(key); break; - case LS_MXF_SMPTE: m_Context->SetKey(key); break; - default: - m_Context = 0; - return RESULT_INIT; - } - - return RESULT_OK; -} - - -// -void -HMACContext::Reset() -{ - if ( ! m_Context.empty() ) - m_Context->Reset(); -} - - -// -Result_t -HMACContext::Update(const byte_t* buf, ui32_t buf_len) -{ - KM_TEST_NULL_L(buf); - - if ( m_Context.empty() || m_Context->m_Final ) - return RESULT_INIT; - - m_Context->Update(buf, buf_len); - return RESULT_OK; -} - - -// -Result_t -HMACContext::Finalize() -{ - if ( m_Context.empty() || m_Context->m_Final ) - return RESULT_INIT; - - m_Context->Finalize(); - return RESULT_OK; -} - - -// -Result_t -HMACContext::GetHMACValue(byte_t* buf) const -{ - KM_TEST_NULL_L(buf); - - if ( m_Context.empty() || ! m_Context->m_Final ) - return RESULT_INIT; - - memcpy(buf, m_Context->m_SHAValue, HMAC_SIZE); - return RESULT_OK; -} - - -// -Result_t -HMACContext::TestHMACValue(const byte_t* buf) const -{ - KM_TEST_NULL_L(buf); - - if ( m_Context.empty() || ! m_Context->m_Final ) - return RESULT_INIT; - - return ( memcmp(buf, m_Context->m_SHAValue, HMAC_SIZE) == 0 ) ? RESULT_OK : RESULT_HMACFAIL; -} - - - -// -// end AS_DCP_AES.cpp -// diff --git a/asdcplib/src/AS_DCP_JP2K.cpp b/asdcplib/src/AS_DCP_JP2K.cpp deleted file mode 100755 index 05166d6..0000000 --- a/asdcplib/src/AS_DCP_JP2K.cpp +++ /dev/null @@ -1,1384 +0,0 @@ -/* -*- c-basic-offset: 2; -*- */ - -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_JP2k.cpp - \version $Id: AS_DCP_JP2K.cpp,v 1.54 2012/02/07 18:54:24 jhurst Exp $ - \brief AS-DCP library, JPEG 2000 essence reader and writer implementation -*/ - -#include "AS_DCP_internal.h" -#include <iostream> -#include <iomanip> - -using std::cout; -using namespace ASDCP::JP2K; -using Kumu::GenRandomValue; - -//------------------------------------------------------------------------------------------ - -static std::string JP2K_PACKAGE_LABEL = "File Package: SMPTE 429-4 frame wrapping of JPEG 2000 codestreams"; -static std::string JP2K_S_PACKAGE_LABEL = "File Package: SMPTE 429-10 frame wrapping of stereoscopic JPEG 2000 codestreams"; -static std::string PICT_DEF_LABEL = "Picture Track"; - -int s_exp_lookup[16] = { 0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,2048, 4096, 8192, 16384, 32768 }; - -// -std::ostream& -ASDCP::JP2K::operator << (std::ostream& strm, const PictureDescriptor& PDesc) -{ - strm << " AspectRatio: " << PDesc.AspectRatio.Numerator << "/" << PDesc.AspectRatio.Denominator << std::endl; - strm << " EditRate: " << PDesc.EditRate.Numerator << "/" << PDesc.EditRate.Denominator << std::endl; - strm << " SampleRate: " << PDesc.SampleRate.Numerator << "/" << PDesc.SampleRate.Denominator << std::endl; - strm << " StoredWidth: " << (unsigned) PDesc.StoredWidth << std::endl; - strm << " StoredHeight: " << (unsigned) PDesc.StoredHeight << std::endl; - strm << " Rsize: " << (unsigned) PDesc.Rsize << std::endl; - strm << " Xsize: " << (unsigned) PDesc.Xsize << std::endl; - strm << " Ysize: " << (unsigned) PDesc.Ysize << std::endl; - strm << " XOsize: " << (unsigned) PDesc.XOsize << std::endl; - strm << " YOsize: " << (unsigned) PDesc.YOsize << std::endl; - strm << " XTsize: " << (unsigned) PDesc.XTsize << std::endl; - strm << " YTsize: " << (unsigned) PDesc.YTsize << std::endl; - strm << " XTOsize: " << (unsigned) PDesc.XTOsize << std::endl; - strm << " YTOsize: " << (unsigned) PDesc.YTOsize << std::endl; - strm << " ContainerDuration: " << (unsigned) PDesc.ContainerDuration << std::endl; - - strm << "-- JPEG 2000 Metadata --" << std::endl; - strm << " ImageComponents:" << std::endl; - strm << " bits h-sep v-sep" << std::endl; - - ui32_t i; - for ( i = 0; i < PDesc.Csize; i++ ) - { - strm << " " << std::setw(4) << PDesc.ImageComponents[i].Ssize + 1 /* See ISO 15444-1, Table A11, for the origin of '+1' */ - << " " << std::setw(5) << PDesc.ImageComponents[i].XRsize - << " " << std::setw(5) << PDesc.ImageComponents[i].YRsize - << std::endl; - } - - strm << " Scod: " << (short) PDesc.CodingStyleDefault.Scod << std::endl; - strm << " ProgressionOrder: " << (short) PDesc.CodingStyleDefault.SGcod.ProgressionOrder << std::endl; - strm << " NumberOfLayers: " << (short) KM_i16_BE(Kumu::cp2i<ui16_t>(PDesc.CodingStyleDefault.SGcod.NumberOfLayers)) << std::endl; - strm << " MultiCompTransform: " << (short) PDesc.CodingStyleDefault.SGcod.MultiCompTransform << std::endl; - strm << "DecompositionLevels: " << (short) PDesc.CodingStyleDefault.SPcod.DecompositionLevels << std::endl; - strm << " CodeblockWidth: " << (short) PDesc.CodingStyleDefault.SPcod.CodeblockWidth << std::endl; - strm << " CodeblockHeight: " << (short) PDesc.CodingStyleDefault.SPcod.CodeblockHeight << std::endl; - strm << " CodeblockStyle: " << (short) PDesc.CodingStyleDefault.SPcod.CodeblockStyle << std::endl; - strm << " Transformation: " << (short) PDesc.CodingStyleDefault.SPcod.Transformation << std::endl; - - - ui32_t precinct_set_size = 0; - - for ( i = 0; PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0 && i < MaxPrecincts; i++ ) - precinct_set_size++; - - strm << " Precincts: " << (short) precinct_set_size << std::endl; - strm << "precinct dimensions:" << std::endl; - - for ( i = 0; i < precinct_set_size; i++ ) - strm << " " << i + 1 << ": " << s_exp_lookup[PDesc.CodingStyleDefault.SPcod.PrecinctSize[i]&0x0f] << " x " - << s_exp_lookup[(PDesc.CodingStyleDefault.SPcod.PrecinctSize[i]>>4)&0x0f] << std::endl; - - strm << " Sqcd: " << (short) PDesc.QuantizationDefault.Sqcd << std::endl; - - char tmp_buf[MaxDefaults*2]; - strm << " SPqcd: " << Kumu::bin2hex(PDesc.QuantizationDefault.SPqcd, PDesc.QuantizationDefault.SPqcdLength, tmp_buf, MaxDefaults*2) - << std::endl; - - return strm; -} - -// -void -ASDCP::JP2K::PictureDescriptorDump(const PictureDescriptor& PDesc, FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "\ - AspectRatio: %d/%d\n\ - EditRate: %d/%d\n\ - SampleRate: %d/%d\n\ - StoredWidth: %u\n\ - StoredHeight: %u\n\ - Rsize: %u\n\ - Xsize: %u\n\ - Ysize: %u\n\ - XOsize: %u\n\ - YOsize: %u\n\ - XTsize: %u\n\ - YTsize: %u\n\ - XTOsize: %u\n\ - YTOsize: %u\n\ - ContainerDuration: %u\n", - PDesc.AspectRatio.Numerator, PDesc.AspectRatio.Denominator, - PDesc.EditRate.Numerator, PDesc.EditRate.Denominator, - PDesc.SampleRate.Numerator, PDesc.SampleRate.Denominator, - PDesc.StoredWidth, - PDesc.StoredHeight, - PDesc.Rsize, - PDesc.Xsize, - PDesc.Ysize, - PDesc.XOsize, - PDesc.YOsize, - PDesc.XTsize, - PDesc.YTsize, - PDesc.XTOsize, - PDesc.YTOsize, - PDesc.ContainerDuration - ); - - fprintf(stream, "-- JPEG 2000 Metadata --\n"); - fprintf(stream, " ImageComponents:\n"); - fprintf(stream, " bits h-sep v-sep\n"); - - ui32_t i; - for ( i = 0; i < PDesc.Csize; i++ ) - { - fprintf(stream, " %4d %5d %5d\n", - PDesc.ImageComponents[i].Ssize + 1, // See ISO 15444-1, Table A11, for the origin of '+1' - PDesc.ImageComponents[i].XRsize, - PDesc.ImageComponents[i].YRsize - ); - } - - fprintf(stream, " Scod: %hd\n", PDesc.CodingStyleDefault.Scod); - fprintf(stream, " ProgressionOrder: %hd\n", PDesc.CodingStyleDefault.SGcod.ProgressionOrder); - fprintf(stream, " NumberOfLayers: %hd\n", - KM_i16_BE(Kumu::cp2i<ui16_t>(PDesc.CodingStyleDefault.SGcod.NumberOfLayers))); - - fprintf(stream, " MultiCompTransform: %hd\n", PDesc.CodingStyleDefault.SGcod.MultiCompTransform); - fprintf(stream, "DecompositionLevels: %hd\n", PDesc.CodingStyleDefault.SPcod.DecompositionLevels); - fprintf(stream, " CodeblockWidth: %hd\n", PDesc.CodingStyleDefault.SPcod.CodeblockWidth); - fprintf(stream, " CodeblockHeight: %hd\n", PDesc.CodingStyleDefault.SPcod.CodeblockHeight); - fprintf(stream, " CodeblockStyle: %hd\n", PDesc.CodingStyleDefault.SPcod.CodeblockStyle); - fprintf(stream, " Transformation: %hd\n", PDesc.CodingStyleDefault.SPcod.Transformation); - - - ui32_t precinct_set_size = 0; - - for ( i = 0; PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0 && i < MaxPrecincts; i++ ) - precinct_set_size++; - - fprintf(stream, " Precincts: %hd\n", precinct_set_size); - fprintf(stream, "precinct dimensions:\n"); - - for ( i = 0; i < precinct_set_size; i++ ) - fprintf(stream, " %d: %d x %d\n", i + 1, - s_exp_lookup[PDesc.CodingStyleDefault.SPcod.PrecinctSize[i]&0x0f], - s_exp_lookup[(PDesc.CodingStyleDefault.SPcod.PrecinctSize[i]>>4)&0x0f] - ); - - fprintf(stream, " Sqcd: %hd\n", PDesc.QuantizationDefault.Sqcd); - - char tmp_buf[MaxDefaults*2]; - fprintf(stream, " SPqcd: %s\n", - Kumu::bin2hex(PDesc.QuantizationDefault.SPqcd, PDesc.QuantizationDefault.SPqcdLength, - tmp_buf, MaxDefaults*2) - ); -} - - -//------------------------------------------------------------------------------------------ -// -// hidden, internal implementation of JPEG 2000 reader - - -class lh__Reader : public ASDCP::h__Reader -{ - RGBAEssenceDescriptor* m_EssenceDescriptor; - JPEG2000PictureSubDescriptor* m_EssenceSubDescriptor; - ASDCP::Rational m_EditRate; - ASDCP::Rational m_SampleRate; - EssenceType_t m_Format; - - ASDCP_NO_COPY_CONSTRUCT(lh__Reader); - -public: - PictureDescriptor m_PDesc; // codestream parameter list - - lh__Reader(const Dictionary& d) : - ASDCP::h__Reader(d), m_EssenceDescriptor(0), m_EssenceSubDescriptor(0), m_Format(ESS_UNKNOWN) {} - Result_t OpenRead(const char*, EssenceType_t); - Result_t ReadFrame(ui32_t, JP2K::FrameBuffer&, AESDecContext*, HMACContext*); - Result_t MD_to_JP2K_PDesc(JP2K::PictureDescriptor& PDesc); -}; - -// -ASDCP::Result_t -lh__Reader::MD_to_JP2K_PDesc(JP2K::PictureDescriptor& PDesc) -{ - memset(&PDesc, 0, sizeof(PDesc)); - MXF::RGBAEssenceDescriptor* PDescObj = (MXF::RGBAEssenceDescriptor*)m_EssenceDescriptor; - - PDesc.EditRate = m_EditRate; - PDesc.SampleRate = m_SampleRate; - assert(PDescObj->ContainerDuration <= 0xFFFFFFFFL); - PDesc.ContainerDuration = (ui32_t) PDescObj->ContainerDuration; - PDesc.StoredWidth = PDescObj->StoredWidth; - PDesc.StoredHeight = PDescObj->StoredHeight; - PDesc.AspectRatio = PDescObj->AspectRatio; - - if ( m_EssenceSubDescriptor != 0 ) - { - PDesc.Rsize = m_EssenceSubDescriptor->Rsize; - PDesc.Xsize = m_EssenceSubDescriptor->Xsize; - PDesc.Ysize = m_EssenceSubDescriptor->Ysize; - PDesc.XOsize = m_EssenceSubDescriptor->XOsize; - PDesc.YOsize = m_EssenceSubDescriptor->YOsize; - PDesc.XTsize = m_EssenceSubDescriptor->XTsize; - PDesc.YTsize = m_EssenceSubDescriptor->YTsize; - PDesc.XTOsize = m_EssenceSubDescriptor->XTOsize; - PDesc.YTOsize = m_EssenceSubDescriptor->YTOsize; - PDesc.Csize = m_EssenceSubDescriptor->Csize; - - // PictureComponentSizing - ui32_t tmp_size = m_EssenceSubDescriptor->PictureComponentSizing.Length(); - - if ( tmp_size == 17 ) // ( 2 * sizeof(ui32_t) ) + 3 components * 3 byte each - memcpy(&PDesc.ImageComponents, m_EssenceSubDescriptor->PictureComponentSizing.RoData() + 8, tmp_size - 8); - - else - DefaultLogSink().Error("Unexpected PictureComponentSizing size: %u, should be 17\n", tmp_size); - - // CodingStyleDefault - memset(&PDesc.CodingStyleDefault, 0, sizeof(CodingStyleDefault_t)); - memcpy(&PDesc.CodingStyleDefault, - m_EssenceSubDescriptor->CodingStyleDefault.RoData(), - m_EssenceSubDescriptor->CodingStyleDefault.Length()); - - // QuantizationDefault - memset(&PDesc.QuantizationDefault, 0, sizeof(QuantizationDefault_t)); - memcpy(&PDesc.QuantizationDefault, - m_EssenceSubDescriptor->QuantizationDefault.RoData(), - m_EssenceSubDescriptor->QuantizationDefault.Length()); - - PDesc.QuantizationDefault.SPqcdLength = m_EssenceSubDescriptor->QuantizationDefault.Length() - 1; - } - - return RESULT_OK; -} - -// -// -ASDCP::Result_t -lh__Reader::OpenRead(const char* filename, EssenceType_t type) -{ - Result_t result = OpenMXFRead(filename); - - if( ASDCP_SUCCESS(result) ) - { - InterchangeObject* tmp_iobj = 0; - m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(RGBAEssenceDescriptor), &tmp_iobj); - m_EssenceDescriptor = static_cast<RGBAEssenceDescriptor*>(tmp_iobj); - - m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(JPEG2000PictureSubDescriptor), &tmp_iobj); - m_EssenceSubDescriptor = static_cast<JPEG2000PictureSubDescriptor*>(tmp_iobj); - - std::list<InterchangeObject*> ObjectList; - m_HeaderPart.GetMDObjectsByType(OBJ_TYPE_ARGS(Track), ObjectList); - - if ( ObjectList.empty() ) - { - DefaultLogSink().Error("MXF Metadata contains no Track Sets.\n"); - return RESULT_FORMAT; - } - - m_EditRate = ((Track*)ObjectList.front())->EditRate; - m_SampleRate = m_EssenceDescriptor->SampleRate; - - if ( type == ASDCP::ESS_JPEG_2000 ) - { - if ( m_EditRate != m_SampleRate ) - { - DefaultLogSink().Warn("EditRate and SampleRate do not match (%.03f, %.03f).\n", - m_EditRate.Quotient(), m_SampleRate.Quotient()); - - if ( (m_EditRate == EditRate_24 && m_SampleRate == EditRate_48) || - (m_EditRate == EditRate_25 && m_SampleRate == EditRate_50) || - (m_EditRate == EditRate_30 && m_SampleRate == EditRate_60) || - (m_EditRate == EditRate_48 && m_SampleRate == EditRate_96) || - (m_EditRate == EditRate_50 && m_SampleRate == EditRate_100) || - (m_EditRate == EditRate_60 && m_SampleRate == EditRate_120) ) - { - DefaultLogSink().Debug("File may contain JPEG Interop stereoscopic images.\n"); - return RESULT_SFORMAT; - } - - return RESULT_FORMAT; - } - } - else if ( type == ASDCP::ESS_JPEG_2000_S ) - { - if ( m_EditRate == EditRate_24 ) - { - if ( m_SampleRate != EditRate_48 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 24/48 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_25 ) - { - if ( m_SampleRate != EditRate_50 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 25/50 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_30 ) - { - if ( m_SampleRate != EditRate_60 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 30/60 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_48 ) - { - if ( m_SampleRate != EditRate_96 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 48/96 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_50 ) - { - if ( m_SampleRate != EditRate_100 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 50/100 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else if ( m_EditRate == EditRate_60 ) - { - if ( m_SampleRate != EditRate_120 ) - { - DefaultLogSink().Error("EditRate and SampleRate not correct for 60/120 stereoscopic essence.\n"); - return RESULT_FORMAT; - } - } - else - { - DefaultLogSink().Error("EditRate not correct for stereoscopic essence: %d/%d.\n", - m_EditRate.Numerator, m_EditRate.Denominator); - return RESULT_FORMAT; - } - } - else - { - DefaultLogSink().Error("'type' argument unexpected: %x\n", type); - return RESULT_STATE; - } - - result = MD_to_JP2K_PDesc(m_PDesc); - } - - if( ASDCP_SUCCESS(result) ) - result = InitMXFIndex(); - - if( ASDCP_SUCCESS(result) ) - result = InitInfo(); - - return result; -} - -// -// -ASDCP::Result_t -lh__Reader::ReadFrame(ui32_t FrameNum, JP2K::FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - assert(m_Dict); - return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_JPEG2000Essence), Ctx, HMAC); -} - - -// -class ASDCP::JP2K::MXFReader::h__Reader : public lh__Reader -{ - ASDCP_NO_COPY_CONSTRUCT(h__Reader); - h__Reader(); - -public: - h__Reader(const Dictionary& d) : lh__Reader(d) {} -}; - - - -//------------------------------------------------------------------------------------------ - - -// -void -ASDCP::JP2K::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "Frame: %06u, %7u bytes", m_FrameNumber, m_Size); - - fputc('\n', stream); - - if ( dump_len > 0 ) - Kumu::hexdump(m_Data, dump_len, stream); -} - - -//------------------------------------------------------------------------------------------ - -ASDCP::JP2K::MXFReader::MXFReader() -{ - m_Reader = new h__Reader(DefaultCompositeDict()); -} - - -ASDCP::JP2K::MXFReader::~MXFReader() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::JP2K::MXFReader::OPAtomHeader() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Reader->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::JP2K::MXFReader::OPAtomIndexFooter() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Reader->m_FooterPart; -} - -// Open the file for reading. The file must exist. Returns error if the -// operation cannot be completed. -ASDCP::Result_t -ASDCP::JP2K::MXFReader::OpenRead(const char* filename) const -{ - return m_Reader->OpenRead(filename, ASDCP::ESS_JPEG_2000); -} - -// -ASDCP::Result_t -ASDCP::JP2K::MXFReader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadFrame(FrameNum, FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::JP2K::MXFReader::FillPictureDescriptor(PictureDescriptor& PDesc) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - PDesc = m_Reader->m_PDesc; - return RESULT_OK; - } - - return RESULT_INIT; -} - - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::JP2K::MXFReader::FillWriterInfo(WriterInfo& Info) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - Info = m_Reader->m_Info; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// -void -ASDCP::JP2K::MXFReader::DumpHeaderMetadata(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_HeaderPart.Dump(stream); -} - - -// -void -ASDCP::JP2K::MXFReader::DumpIndex(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_FooterPart.Dump(stream); -} - -// -ASDCP::Result_t -ASDCP::JP2K::MXFReader::Close() const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - m_Reader->Close(); - return RESULT_OK; - } - - return RESULT_INIT; -} - - -//------------------------------------------------------------------------------------------ - - -class ASDCP::JP2K::MXFSReader::h__SReader : public lh__Reader -{ - ui32_t m_StereoFrameReady; - -public: - h__SReader(const Dictionary& d) : lh__Reader(d), m_StereoFrameReady(0xffffffff) {} - - // - Result_t ReadFrame(ui32_t FrameNum, StereoscopicPhase_t phase, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) - { - // look up frame index node - IndexTableSegment::IndexEntry TmpEntry; - - if ( ASDCP_FAILURE(m_FooterPart.Lookup(FrameNum, TmpEntry)) ) - { - DefaultLogSink().Error("Frame value out of range: %u\n", FrameNum); - return RESULT_RANGE; - } - - // get frame position - Kumu::fpos_t FilePosition = m_EssenceStart + TmpEntry.StreamOffset; - Result_t result = RESULT_OK; - - if ( phase == SP_LEFT ) - { - if ( FilePosition != m_LastPosition ) - { - m_LastPosition = FilePosition; - result = m_File.Seek(FilePosition); - } - - // the call to ReadEKLVPacket() will leave the file on an R frame - m_StereoFrameReady = FrameNum; - } - else if ( phase == SP_RIGHT ) - { - if ( m_StereoFrameReady != FrameNum ) - { - // the file is not already positioned, we must do some work - // seek to the companion SP_LEFT frame and read the frame's key and length - if ( FilePosition != m_LastPosition ) - { - m_LastPosition = FilePosition; - result = m_File.Seek(FilePosition); - } - - KLReader Reader; - result = Reader.ReadKLFromFile(m_File); - - if ( ASDCP_SUCCESS(result) ) - { - // skip over the companion SP_LEFT frame - Kumu::fpos_t new_pos = FilePosition + SMPTE_UL_LENGTH + Reader.KLLength() + Reader.Length(); - result = m_File.Seek(new_pos); - } - } - - // the call to ReadEKLVPacket() will leave the file not on an R frame - m_StereoFrameReady = 0xffffffff; - } - else - { - DefaultLogSink().Error("Unexpected stereoscopic phase value: %u\n", phase); - return RESULT_STATE; - } - - if( ASDCP_SUCCESS(result) ) - { - ui32_t SequenceNum = FrameNum * 2; - SequenceNum += ( phase == SP_RIGHT ) ? 2 : 1; - assert(m_Dict); - result = ReadEKLVPacket(FrameNum, SequenceNum, FrameBuf, m_Dict->ul(MDD_JPEG2000Essence), Ctx, HMAC); - } - - return result; - } -}; - - - -ASDCP::JP2K::MXFSReader::MXFSReader() -{ - m_Reader = new h__SReader(DefaultCompositeDict()); -} - - -ASDCP::JP2K::MXFSReader::~MXFSReader() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::JP2K::MXFSReader::OPAtomHeader() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Reader->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::JP2K::MXFSReader::OPAtomIndexFooter() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Reader->m_FooterPart; -} - -// Open the file for reading. The file must exist. Returns error if the -// operation cannot be completed. -ASDCP::Result_t -ASDCP::JP2K::MXFSReader::OpenRead(const char* filename) const -{ - return m_Reader->OpenRead(filename, ASDCP::ESS_JPEG_2000_S); -} - -// -ASDCP::Result_t -ASDCP::JP2K::MXFSReader::ReadFrame(ui32_t FrameNum, SFrameBuffer& FrameBuf, AESDecContext* Ctx, HMACContext* HMAC) const -{ - Result_t result = RESULT_INIT; - - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - result = m_Reader->ReadFrame(FrameNum, SP_LEFT, FrameBuf.Left, Ctx, HMAC); - - if ( ASDCP_SUCCESS(result) ) - result = m_Reader->ReadFrame(FrameNum, SP_RIGHT, FrameBuf.Right, Ctx, HMAC); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::JP2K::MXFSReader::ReadFrame(ui32_t FrameNum, StereoscopicPhase_t phase, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadFrame(FrameNum, phase, FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::JP2K::MXFSReader::FillPictureDescriptor(PictureDescriptor& PDesc) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - PDesc = m_Reader->m_PDesc; - return RESULT_OK; - } - - return RESULT_INIT; -} - - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::JP2K::MXFSReader::FillWriterInfo(WriterInfo& Info) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - Info = m_Reader->m_Info; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// -void -ASDCP::JP2K::MXFSReader::DumpHeaderMetadata(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_HeaderPart.Dump(stream); -} - - -// -void -ASDCP::JP2K::MXFSReader::DumpIndex(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_FooterPart.Dump(stream); -} - -// -ASDCP::Result_t -ASDCP::JP2K::MXFSReader::Close() const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - m_Reader->Close(); - return RESULT_OK; - } - - return RESULT_INIT; -} - - -//------------------------------------------------------------------------------------------ - - -// -class lh__Writer : public ASDCP::h__Writer -{ - ASDCP_NO_COPY_CONSTRUCT(lh__Writer); - lh__Writer(); - - JPEG2000PictureSubDescriptor* m_EssenceSubDescriptor; - -public: - PictureDescriptor m_PDesc; - byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - - lh__Writer(const Dictionary& d) : ASDCP::h__Writer(d), m_EssenceSubDescriptor(0) { - memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); - } - - ~lh__Writer(){} - - Result_t OpenWrite(const char*, EssenceType_t type, ui32_t HeaderSize, bool); - Result_t SetSourceStream(const PictureDescriptor&, const std::string& label, - ASDCP::Rational LocalEditRate = ASDCP::Rational(0,0)); - Result_t WriteFrame(const JP2K::FrameBuffer&, bool add_index, AESEncContext*, HMACContext*, std::string* hash = 0); - Result_t FakeWriteFrame(int size, bool add_index); - Result_t Finalize(); - Result_t JP2K_PDesc_to_MD(JP2K::PictureDescriptor& PDesc); -}; - -const int VideoLineMapSize = 16; // See SMPTE 377M D.2.1 -const int PixelLayoutSize = 8*2; // See SMPTE 377M D.2.3 -static const byte_t s_PixelLayoutXYZ[PixelLayoutSize] = { 0xd8, 0x0c, 0xd9, 0x0c, 0xda, 0x0c, 0x00 }; - -// -ASDCP::Result_t -lh__Writer::JP2K_PDesc_to_MD(JP2K::PictureDescriptor& PDesc) -{ - assert(m_EssenceDescriptor); - assert(m_EssenceSubDescriptor); - MXF::RGBAEssenceDescriptor* PDescObj = (MXF::RGBAEssenceDescriptor*)m_EssenceDescriptor; - - PDescObj->ContainerDuration = PDesc.ContainerDuration; - PDescObj->SampleRate = PDesc.EditRate; - PDescObj->FrameLayout = 0; - PDescObj->StoredWidth = PDesc.StoredWidth; - PDescObj->StoredHeight = PDesc.StoredHeight; - PDescObj->AspectRatio = PDesc.AspectRatio; - - // if ( m_Info.LabelSetType == LS_MXF_SMPTE ) - // { - // PictureEssenceCoding UL = - // Video Line Map ui32_t[VideoLineMapSize] = { 2, 4, 0, 0 } - // CaptureGamma UL = - // ComponentMaxRef ui32_t = 4095 - // ComponentMinRef ui32_t = 0 - // PixelLayout byte_t[PixelLayoutSize] = s_PixelLayoutXYZ - // } - - assert(m_Dict); - if ( PDesc.StoredWidth < 2049 ) - { - PDescObj->PictureEssenceCoding.Set(m_Dict->ul(MDD_JP2KEssenceCompression_2K)); - m_EssenceSubDescriptor->Rsize = 3; - } - else - { - PDescObj->PictureEssenceCoding.Set(m_Dict->ul(MDD_JP2KEssenceCompression_4K)); - m_EssenceSubDescriptor->Rsize = 4; - } - - m_EssenceSubDescriptor->Xsize = PDesc.Xsize; - m_EssenceSubDescriptor->Ysize = PDesc.Ysize; - m_EssenceSubDescriptor->XOsize = PDesc.XOsize; - m_EssenceSubDescriptor->YOsize = PDesc.YOsize; - m_EssenceSubDescriptor->XTsize = PDesc.XTsize; - m_EssenceSubDescriptor->YTsize = PDesc.YTsize; - m_EssenceSubDescriptor->XTOsize = PDesc.XTOsize; - m_EssenceSubDescriptor->YTOsize = PDesc.YTOsize; - m_EssenceSubDescriptor->Csize = PDesc.Csize; - - const ui32_t tmp_buffer_len = 1024; - byte_t tmp_buffer[tmp_buffer_len]; - - ui32_t* tmp_buffer_ui32 = (ui32_t*) tmp_buffer; - *tmp_buffer_ui32 = KM_i32_BE(MaxComponents); // three components - - *(ui32_t*)(tmp_buffer+4) = KM_i32_BE(sizeof(ASDCP::JP2K::ImageComponent_t)); - memcpy(tmp_buffer + 8, &PDesc.ImageComponents, sizeof(ASDCP::JP2K::ImageComponent_t) * MaxComponents); - - const ui32_t pcomp_size = (sizeof(int) * 2) + (sizeof(ASDCP::JP2K::ImageComponent_t) * MaxComponents); - memcpy(m_EssenceSubDescriptor->PictureComponentSizing.Data(), tmp_buffer, pcomp_size); - m_EssenceSubDescriptor->PictureComponentSizing.Length(pcomp_size); - - ui32_t precinct_set_size = 0, i; - for ( i = 0; PDesc.CodingStyleDefault.SPcod.PrecinctSize[i] != 0 && i < MaxPrecincts; i++ ) - precinct_set_size++; - - ui32_t csd_size = sizeof(CodingStyleDefault_t) - MaxPrecincts + precinct_set_size; - memcpy(m_EssenceSubDescriptor->CodingStyleDefault.Data(), &PDesc.CodingStyleDefault, csd_size); - m_EssenceSubDescriptor->CodingStyleDefault.Length(csd_size); - - ui32_t qdflt_size = PDesc.QuantizationDefault.SPqcdLength + 1; - memcpy(m_EssenceSubDescriptor->QuantizationDefault.Data(), &PDesc.QuantizationDefault, qdflt_size); - m_EssenceSubDescriptor->QuantizationDefault.Length(qdflt_size); - - return RESULT_OK; -} - - -// Open the file for writing. The file must not exist unless overwrite is true. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -lh__Writer::OpenWrite(const char* filename, EssenceType_t type, ui32_t HeaderSize, bool overwrite) -{ - if ( ! m_State.Test_BEGIN() ) - return RESULT_STATE; - - Result_t result = RESULT_OK; - if (overwrite) { - result = m_File.OpenModify(filename); - m_File.Seek(0); - } else { - result = m_File.OpenWrite(filename); - } - - if ( ASDCP_SUCCESS(result) ) - { - m_HeaderSize = HeaderSize; - RGBAEssenceDescriptor* tmp_rgba = new RGBAEssenceDescriptor(m_Dict); - tmp_rgba->ComponentMaxRef = 4095; - tmp_rgba->ComponentMinRef = 0; - - m_EssenceDescriptor = tmp_rgba; - m_EssenceSubDescriptor = new JPEG2000PictureSubDescriptor(m_Dict); - m_EssenceSubDescriptorList.push_back((InterchangeObject*)m_EssenceSubDescriptor); - - GenRandomValue(m_EssenceSubDescriptor->InstanceUID); - m_EssenceDescriptor->SubDescriptors.push_back(m_EssenceSubDescriptor->InstanceUID); - - if ( type == ASDCP::ESS_JPEG_2000_S && m_Info.LabelSetType == LS_MXF_SMPTE ) - { - InterchangeObject* StereoSubDesc = new StereoscopicPictureSubDescriptor(m_Dict); - m_EssenceSubDescriptorList.push_back(StereoSubDesc); - GenRandomValue(StereoSubDesc->InstanceUID); - m_EssenceDescriptor->SubDescriptors.push_back(StereoSubDesc->InstanceUID); - } - - result = m_State.Goto_INIT(); - } - - return result; -} - -// Automatically sets the MXF file's metadata from the first jpeg codestream stream. -ASDCP::Result_t -lh__Writer::SetSourceStream(const PictureDescriptor& PDesc, const std::string& label, ASDCP::Rational LocalEditRate) -{ - assert(m_Dict); - if ( ! m_State.Test_INIT() ) - return RESULT_STATE; - - if ( LocalEditRate == ASDCP::Rational(0,0) ) - LocalEditRate = PDesc.EditRate; - - m_PDesc = PDesc; - Result_t result = JP2K_PDesc_to_MD(m_PDesc); - - if ( ASDCP_SUCCESS(result) ) - { - memcpy(m_EssenceUL, m_Dict->ul(MDD_JPEG2000Essence), SMPTE_UL_LENGTH); - m_EssenceUL[SMPTE_UL_LENGTH-1] = 1; // first (and only) essence container - result = m_State.Goto_READY(); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t TCFrameRate = ( m_PDesc.EditRate == EditRate_23_98 ) ? 24 : m_PDesc.EditRate.Numerator; - - result = WriteMXFHeader(label, UL(m_Dict->ul(MDD_JPEG_2000Wrapping)), - PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)), - LocalEditRate, TCFrameRate); - } - - return result; -} - -// Writes a frame of essence to the MXF file. If the optional AESEncContext -// argument is present, the essence is encrypted prior to writing. -// Fails if the file is not open, is finalized, or an operating system -// error occurs. -// -ASDCP::Result_t -lh__Writer::WriteFrame(const JP2K::FrameBuffer& FrameBuf, bool add_index, - AESEncContext* Ctx, HMACContext* HMAC, std::string* hash) -{ - Result_t result = RESULT_OK; - - if ( m_State.Test_READY() ) - result = m_State.Goto_RUNNING(); // first time through - - ui64_t StreamOffset = m_StreamOffset; - - if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC, hash); - - if ( ASDCP_SUCCESS(result) && add_index ) - { - IndexTableSegment::IndexEntry Entry; - Entry.StreamOffset = StreamOffset; - m_FooterPart.PushIndexEntry(Entry); - } - - m_FramesWritten++; - return result; -} - -Result_t -lh__Writer::FakeWriteFrame(int size, bool add_index) -{ - Result_t result = RESULT_OK; - - if ( m_State.Test_READY() ) - result = m_State.Goto_RUNNING(); - - ui64_t StreamOffset = m_StreamOffset; - - if ( ASDCP_SUCCESS(result) ) - result = FakeWriteEKLVPacket(size); - - if ( ASDCP_SUCCESS(result) && add_index ) - { - IndexTableSegment::IndexEntry Entry; - Entry.StreamOffset = StreamOffset; - m_FooterPart.PushIndexEntry(Entry); - } - - m_FramesWritten++; - return result; -} - - -// Closes the MXF file, writing the index and other closing information. -// -ASDCP::Result_t -lh__Writer::Finalize() -{ - if ( ! m_State.Test_RUNNING() ) - return RESULT_STATE; - - m_State.Goto_FINAL(); - - return WriteMXFFooter(); -} - - -// -class ASDCP::JP2K::MXFWriter::h__Writer : public lh__Writer -{ - ASDCP_NO_COPY_CONSTRUCT(h__Writer); - h__Writer(); - -public: - h__Writer(const Dictionary& d) : lh__Writer(d) {} -}; - - -//------------------------------------------------------------------------------------------ - - - -ASDCP::JP2K::MXFWriter::MXFWriter() -{ -} - -ASDCP::JP2K::MXFWriter::~MXFWriter() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::JP2K::MXFWriter::OPAtomHeader() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Writer->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::JP2K::MXFWriter::OPAtomIndexFooter() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Writer->m_FooterPart; -} - -// Open the file for writing. The file must not exist unless overwrite is true. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::JP2K::MXFWriter::OpenWrite(const char* filename, const WriterInfo& Info, - const PictureDescriptor& PDesc, ui32_t HeaderSize, bool overwrite) -{ - if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__Writer(DefaultSMPTEDict()); - else - m_Writer = new h__Writer(DefaultInteropDict()); - - m_Writer->m_Info = Info; - - Result_t result = m_Writer->OpenWrite(filename, ASDCP::ESS_JPEG_2000, HeaderSize, overwrite); - - if ( ASDCP_SUCCESS(result) ) - result = m_Writer->SetSourceStream(PDesc, JP2K_PACKAGE_LABEL); - - if ( ASDCP_FAILURE(result) ) - m_Writer.release(); - - return result; -} - - -// Writes a frame of essence to the MXF file. If the optional AESEncContext -// argument is present, the essence is encrypted prior to writing. -// Fails if the file is not open, is finalized, or an operating system -// error occurs. -ASDCP::Result_t -ASDCP::JP2K::MXFWriter::WriteFrame(const FrameBuffer& FrameBuf, AESEncContext* Ctx, HMACContext* HMAC, std::string* hash) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->WriteFrame(FrameBuf, true, Ctx, HMAC, hash); -} - -ASDCP::Result_t -ASDCP::JP2K::MXFWriter::FakeWriteFrame(int size) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->FakeWriteFrame(size, true); -} - -// Closes the MXF file, writing the index and other closing information. -ASDCP::Result_t -ASDCP::JP2K::MXFWriter::Finalize() -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->Finalize(); -} - -ui64_t -ASDCP::JP2K::MXFWriter::Tell() const -{ - return m_Writer->m_File.Tell(); -} - - -//------------------------------------------------------------------------------------------ -// - -// -class ASDCP::JP2K::MXFSWriter::h__SWriter : public lh__Writer -{ - ASDCP_NO_COPY_CONSTRUCT(h__SWriter); - h__SWriter(); - StereoscopicPhase_t m_NextPhase; - -public: - h__SWriter(const Dictionary& d) : lh__Writer(d), m_NextPhase(SP_LEFT) {} - - // - Result_t WriteFrame(const FrameBuffer& FrameBuf, StereoscopicPhase_t phase, - AESEncContext* Ctx, HMACContext* HMAC, std::string* hash) - { - if ( m_NextPhase != phase ) - return RESULT_SPHASE; - - if ( phase == SP_LEFT ) - { - m_NextPhase = SP_RIGHT; - return lh__Writer::WriteFrame(FrameBuf, true, Ctx, HMAC, hash); - } - - m_NextPhase = SP_LEFT; - return lh__Writer::WriteFrame(FrameBuf, false, Ctx, HMAC, hash); - } - - Result_t FakeWriteFrame(int size, StereoscopicPhase_t phase) - { - if (m_NextPhase != phase) - { - return RESULT_SPHASE; - } - - if (phase == SP_LEFT) - { - m_NextPhase = SP_RIGHT; - return lh__Writer::FakeWriteFrame(size, true); - } - - m_NextPhase = SP_LEFT; - return lh__Writer::FakeWriteFrame(size, false); - } - - // - Result_t Finalize() - { - if ( m_NextPhase != SP_LEFT ) - return RESULT_SPHASE; - - assert( m_FramesWritten % 2 == 0 ); - m_FramesWritten /= 2; - return lh__Writer::Finalize(); - } -}; - - -// -ASDCP::JP2K::MXFSWriter::MXFSWriter() -{ -} - -ASDCP::JP2K::MXFSWriter::~MXFSWriter() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::JP2K::MXFSWriter::OPAtomHeader() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Writer->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::JP2K::MXFSWriter::OPAtomIndexFooter() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Writer->m_FooterPart; -} - -// Open the file for writing. The file must not exist. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::JP2K::MXFSWriter::OpenWrite(const char* filename, const WriterInfo& Info, - const PictureDescriptor& PDesc, ui32_t HeaderSize, bool overwrite) -{ - if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__SWriter(DefaultSMPTEDict()); - else - m_Writer = new h__SWriter(DefaultInteropDict()); - - if ( PDesc.EditRate != ASDCP::EditRate_24 - && PDesc.EditRate != ASDCP::EditRate_25 - && PDesc.EditRate != ASDCP::EditRate_30 - && PDesc.EditRate != ASDCP::EditRate_48 - && PDesc.EditRate != ASDCP::EditRate_50 - && PDesc.EditRate != ASDCP::EditRate_60 ) - { - DefaultLogSink().Error("Stereoscopic wrapping requires 24, 25, 30, 48, 50 or 60 fps input streams.\n"); - return RESULT_FORMAT; - } - - if ( PDesc.StoredWidth > 2048 ) - DefaultLogSink().Warn("Wrapping non-standard 4K stereoscopic content. I hope you know what you are doing!\n"); - - m_Writer->m_Info = Info; - - Result_t result = m_Writer->OpenWrite(filename, ASDCP::ESS_JPEG_2000_S, HeaderSize, overwrite); - - if ( ASDCP_SUCCESS(result) ) - { - PictureDescriptor TmpPDesc = PDesc; - - if ( PDesc.EditRate == ASDCP::EditRate_24 ) - TmpPDesc.EditRate = ASDCP::EditRate_48; - - else if ( PDesc.EditRate == ASDCP::EditRate_25 ) - TmpPDesc.EditRate = ASDCP::EditRate_50; - - else if ( PDesc.EditRate == ASDCP::EditRate_30 ) - TmpPDesc.EditRate = ASDCP::EditRate_60; - - else if ( PDesc.EditRate == ASDCP::EditRate_48 ) - TmpPDesc.EditRate = ASDCP::EditRate_96; - - else if ( PDesc.EditRate == ASDCP::EditRate_50 ) - TmpPDesc.EditRate = ASDCP::EditRate_100; - - else if ( PDesc.EditRate == ASDCP::EditRate_60 ) - TmpPDesc.EditRate = ASDCP::EditRate_120; - - result = m_Writer->SetSourceStream(TmpPDesc, JP2K_S_PACKAGE_LABEL, PDesc.EditRate); - } - - if ( ASDCP_FAILURE(result) ) - m_Writer.release(); - - return result; -} - -ASDCP::Result_t -ASDCP::JP2K::MXFSWriter::WriteFrame(const SFrameBuffer& FrameBuf, AESEncContext* Ctx, HMACContext* HMAC) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - Result_t result = m_Writer->WriteFrame(FrameBuf.Left, SP_LEFT, Ctx, HMAC, 0); - - if ( ASDCP_SUCCESS(result) ) - result = m_Writer->WriteFrame(FrameBuf.Right, SP_RIGHT, Ctx, HMAC, 0); - - return result; -} - -// Writes a frame of essence to the MXF file. If the optional AESEncContext -// argument is present, the essence is encrypted prior to writing. -// Fails if the file is not open, is finalized, or an operating system -// error occurs. -ASDCP::Result_t -ASDCP::JP2K::MXFSWriter::WriteFrame(const FrameBuffer& FrameBuf, StereoscopicPhase_t phase, - AESEncContext* Ctx, HMACContext* HMAC, std::string* hash) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->WriteFrame(FrameBuf, phase, Ctx, HMAC, hash); -} - -ASDCP::Result_t -ASDCP::JP2K::MXFSWriter::FakeWriteFrame(int size, StereoscopicPhase_t phase) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->FakeWriteFrame(size, phase); -} - -// Closes the MXF file, writing the index and other closing information. -ASDCP::Result_t -ASDCP::JP2K::MXFSWriter::Finalize() -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->Finalize(); -} - -ui64_t -ASDCP::JP2K::MXFSWriter::Tell() const -{ - return m_Writer->m_File.Tell(); -} - -// -// end AS_DCP_JP2K.cpp -// diff --git a/asdcplib/src/AS_DCP_MPEG2.cpp b/asdcplib/src/AS_DCP_MPEG2.cpp deleted file mode 100755 index bc64c1e..0000000 --- a/asdcplib/src/AS_DCP_MPEG2.cpp +++ /dev/null @@ -1,727 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_MPEG2.cpp - \version $Id: AS_DCP_MPEG2.cpp,v 1.34 2012/02/07 18:54:24 jhurst Exp $ - \brief AS-DCP library, MPEG2 essence reader and writer implementation -*/ - -#include "AS_DCP_internal.h" -#include <iostream> -#include <iomanip> - - -//------------------------------------------------------------------------------------------ - -static std::string MPEG_PACKAGE_LABEL = "File Package: SMPTE 381M frame wrapping of MPEG2 video elementary stream"; -static std::string PICT_DEF_LABEL = "Picture Track"; - -// -ASDCP::Result_t -MD_to_MPEG2_VDesc(MXF::MPEG2VideoDescriptor* VDescObj, MPEG2::VideoDescriptor& VDesc) -{ - ASDCP_TEST_NULL(VDescObj); - - VDesc.SampleRate = VDescObj->SampleRate; - VDesc.EditRate = VDescObj->SampleRate; - VDesc.FrameRate = VDescObj->SampleRate.Numerator; - assert(VDescObj->ContainerDuration <= 0xFFFFFFFFL); - VDesc.ContainerDuration = (ui32_t) VDescObj->ContainerDuration; - - VDesc.FrameLayout = VDescObj->FrameLayout; - VDesc.StoredWidth = VDescObj->StoredWidth; - VDesc.StoredHeight = VDescObj->StoredHeight; - VDesc.AspectRatio = VDescObj->AspectRatio; - - VDesc.ComponentDepth = VDescObj->ComponentDepth; - VDesc.HorizontalSubsampling = VDescObj->HorizontalSubsampling; - VDesc.VerticalSubsampling = VDescObj->VerticalSubsampling; - VDesc.ColorSiting = VDescObj->ColorSiting; - VDesc.CodedContentType = VDescObj->CodedContentType; - - VDesc.LowDelay = VDescObj->LowDelay == 0 ? false : true; - VDesc.BitRate = VDescObj->BitRate; - VDesc.ProfileAndLevel = VDescObj->ProfileAndLevel; - return RESULT_OK; -} - - -// -ASDCP::Result_t -MPEG2_VDesc_to_MD(MPEG2::VideoDescriptor& VDesc, MXF::MPEG2VideoDescriptor* VDescObj) -{ - ASDCP_TEST_NULL(VDescObj); - - VDescObj->SampleRate = VDesc.SampleRate; - VDescObj->ContainerDuration = VDesc.ContainerDuration; - - VDescObj->FrameLayout = VDesc.FrameLayout; - VDescObj->StoredWidth = VDesc.StoredWidth; - VDescObj->StoredHeight = VDesc.StoredHeight; - VDescObj->AspectRatio = VDesc.AspectRatio; - - VDescObj->ComponentDepth = VDesc.ComponentDepth; - VDescObj->HorizontalSubsampling = VDesc.HorizontalSubsampling; - VDescObj->VerticalSubsampling = VDesc.VerticalSubsampling; - VDescObj->ColorSiting = VDesc.ColorSiting; - VDescObj->CodedContentType = VDesc.CodedContentType; - - VDescObj->LowDelay = VDesc.LowDelay ? 1 : 0; - VDescObj->BitRate = VDesc.BitRate; - VDescObj->ProfileAndLevel = VDesc.ProfileAndLevel; - return RESULT_OK; -} - -// -std::ostream& -ASDCP::MPEG2::operator << (std::ostream& strm, const VideoDescriptor& VDesc) -{ - strm << " SampleRate: " << VDesc.SampleRate.Numerator << "/" << VDesc.SampleRate.Denominator << std::endl; - strm << " FrameLayout: " << (unsigned) VDesc.FrameLayout << std::endl; - strm << " StoredWidth: " << (unsigned) VDesc.StoredWidth << std::endl; - strm << " StoredHeight: " << (unsigned) VDesc.StoredHeight << std::endl; - strm << " AspectRatio: " << VDesc.AspectRatio.Numerator << "/" << VDesc.AspectRatio.Denominator << std::endl; - strm << " ComponentDepth: " << (unsigned) VDesc.ComponentDepth << std::endl; - strm << " HorizontalSubsmpl: " << (unsigned) VDesc.HorizontalSubsampling << std::endl; - strm << " VerticalSubsmpl: " << (unsigned) VDesc.VerticalSubsampling << std::endl; - strm << " ColorSiting: " << (unsigned) VDesc.ColorSiting << std::endl; - strm << " CodedContentType: " << (unsigned) VDesc.CodedContentType << std::endl; - strm << " LowDelay: " << (unsigned) VDesc.LowDelay << std::endl; - strm << " BitRate: " << (unsigned) VDesc.BitRate << std::endl; - strm << " ProfileAndLevel: " << (unsigned) VDesc.ProfileAndLevel << std::endl; - strm << " ContainerDuration: " << (unsigned) VDesc.ContainerDuration << std::endl; - - return strm; -} - -// -void -ASDCP::MPEG2::VideoDescriptorDump(const VideoDescriptor& VDesc, FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "\ - SampleRate: %d/%d\n\ - FrameLayout: %u\n\ - StoredWidth: %u\n\ - StoredHeight: %u\n\ - AspectRatio: %d/%d\n\ - ComponentDepth: %u\n\ - HorizontalSubsmpl: %u\n\ - VerticalSubsmpl: %u\n\ - ColorSiting: %u\n\ - CodedContentType: %u\n\ - LowDelay: %u\n\ - BitRate: %u\n\ - ProfileAndLevel: %u\n\ - ContainerDuration: %u\n", - VDesc.SampleRate.Numerator ,VDesc.SampleRate.Denominator, - VDesc.FrameLayout, - VDesc.StoredWidth, - VDesc.StoredHeight, - VDesc.AspectRatio.Numerator ,VDesc.AspectRatio.Denominator, - VDesc.ComponentDepth, - VDesc.HorizontalSubsampling, - VDesc.VerticalSubsampling, - VDesc.ColorSiting, - VDesc.CodedContentType, - VDesc.LowDelay, - VDesc.BitRate, - VDesc.ProfileAndLevel, - VDesc.ContainerDuration - ); -} - -//------------------------------------------------------------------------------------------ -// -// hidden, internal implementation of MPEG2 reader - -class ASDCP::MPEG2::MXFReader::h__Reader : public ASDCP::h__Reader -{ - ASDCP_NO_COPY_CONSTRUCT(h__Reader); - h__Reader(); - -public: - VideoDescriptor m_VDesc; // video parameter list - - h__Reader(const Dictionary& d) : ASDCP::h__Reader(d) {} - ~h__Reader() {} - Result_t OpenRead(const char*); - Result_t ReadFrame(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); - Result_t ReadFrameGOPStart(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); - Result_t FindFrameGOPStart(ui32_t, ui32_t&); - Result_t FrameType(ui32_t FrameNum, FrameType_t& type); -}; - - -// -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::h__Reader::OpenRead(const char* filename) -{ - Result_t result = OpenMXFRead(filename); - - if( ASDCP_SUCCESS(result) ) - { - InterchangeObject* Object; - if ( ASDCP_SUCCESS(m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(MPEG2VideoDescriptor), &Object)) ) - { - assert(Object); - result = MD_to_MPEG2_VDesc((MXF::MPEG2VideoDescriptor*)Object, m_VDesc); - } - } - - if( ASDCP_SUCCESS(result) ) - result = InitMXFIndex(); - - if( ASDCP_SUCCESS(result) ) - result = InitInfo(); - - return result; -} - - -// -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::h__Reader::ReadFrameGOPStart(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - ui32_t KeyFrameNum; - - Result_t result = FindFrameGOPStart(FrameNum, KeyFrameNum); - - if ( ASDCP_SUCCESS(result) ) - result = ReadFrame(KeyFrameNum, FrameBuf, Ctx, HMAC); - - return result; -} - - -// -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::h__Reader::FindFrameGOPStart(ui32_t FrameNum, ui32_t& KeyFrameNum) -{ - KeyFrameNum = 0; - - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - // look up frame index node - IndexTableSegment::IndexEntry TmpEntry; - - if ( ASDCP_FAILURE(m_FooterPart.Lookup(FrameNum, TmpEntry)) ) - { - DefaultLogSink().Error("Frame value out of range: %u\n", FrameNum); - return RESULT_RANGE; - } - - KeyFrameNum = FrameNum - TmpEntry.KeyFrameOffset; - - return RESULT_OK; -} - -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::h__Reader::FrameType(ui32_t FrameNum, FrameType_t& type) -{ - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - // look up frame index node - IndexTableSegment::IndexEntry TmpEntry; - - if ( ASDCP_FAILURE(m_FooterPart.Lookup(FrameNum, TmpEntry)) ) - { - DefaultLogSink().Error("Frame value out of range: %u\n", FrameNum); - return RESULT_RANGE; - } - - type = ( (TmpEntry.Flags & 0x0f) == 3 ) ? FRAME_B : ( (TmpEntry.Flags & 0x0f) == 2 ) ? FRAME_P : FRAME_I; - return RESULT_OK; -} - - -// -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - assert(m_Dict); - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - Result_t result = ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_MPEG2Essence), Ctx, HMAC); - - if ( ASDCP_FAILURE(result) ) - return result; - - IndexTableSegment::IndexEntry TmpEntry; - m_FooterPart.Lookup(FrameNum, TmpEntry); - - switch ( ( TmpEntry.Flags >> 4 ) & 0x03 ) - { - case 0: FrameBuf.FrameType(FRAME_I); break; - case 2: FrameBuf.FrameType(FRAME_P); break; - case 3: FrameBuf.FrameType(FRAME_B); break; - default: FrameBuf.FrameType(FRAME_U); - } - - FrameBuf.TemporalOffset(TmpEntry.TemporalOffset); - FrameBuf.GOPStart(TmpEntry.Flags & 0x40 ? true : false); - FrameBuf.ClosedGOP(TmpEntry.Flags & 0x80 ? true : false); - - return RESULT_OK; -} - -//------------------------------------------------------------------------------------------ - - -// -void -ASDCP::MPEG2::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "Frame: %06u, %c%-2hu, %7u bytes", - m_FrameNumber, FrameTypeChar(m_FrameType), m_TemporalOffset, m_Size); - - if ( m_GOPStart ) - fprintf(stream, " (start %s GOP)", ( m_ClosedGOP ? "closed" : "open")); - - fputc('\n', stream); - - if ( dump_len > 0 ) - Kumu::hexdump(m_Data, dump_len, stream); -} - - -//------------------------------------------------------------------------------------------ - -ASDCP::MPEG2::MXFReader::MXFReader() -{ - m_Reader = new h__Reader(DefaultCompositeDict()); -} - - -ASDCP::MPEG2::MXFReader::~MXFReader() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::MPEG2::MXFReader::OPAtomHeader() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Reader->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::MPEG2::MXFReader::OPAtomIndexFooter() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Reader->m_FooterPart; -} - -// Open the file for reading. The file must exist. Returns error if the -// operation cannot be completed. -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::OpenRead(const char* filename) const -{ - return m_Reader->OpenRead(filename); -} - -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadFrame(FrameNum, FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - - -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::ReadFrameGOPStart(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadFrameGOPStart(FrameNum, FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - - -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::FindFrameGOPStart(ui32_t FrameNum, ui32_t& KeyFrameNum) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->FindFrameGOPStart(FrameNum, KeyFrameNum); - - return RESULT_INIT; -} - - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::FillVideoDescriptor(VideoDescriptor& VDesc) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - VDesc = m_Reader->m_VDesc; - return RESULT_OK; - } - - return RESULT_INIT; -} - - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::FillWriterInfo(WriterInfo& Info) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - Info = m_Reader->m_Info; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// -void -ASDCP::MPEG2::MXFReader::DumpHeaderMetadata(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_HeaderPart.Dump(stream); -} - - -// -void -ASDCP::MPEG2::MXFReader::DumpIndex(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_FooterPart.Dump(stream); -} - -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::Close() const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - m_Reader->Close(); - return RESULT_OK; - } - - return RESULT_INIT; -} - -// -ASDCP::Result_t -ASDCP::MPEG2::MXFReader::FrameType(ui32_t FrameNum, FrameType_t& type) const -{ - if ( ! m_Reader ) - return RESULT_INIT; - - return m_Reader->FrameType(FrameNum, type); -} - - -//------------------------------------------------------------------------------------------ - -// -class ASDCP::MPEG2::MXFWriter::h__Writer : public ASDCP::h__Writer -{ - ASDCP_NO_COPY_CONSTRUCT(h__Writer); - h__Writer(); - -public: - VideoDescriptor m_VDesc; - ui32_t m_GOPOffset; - byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - - h__Writer(const Dictionary& d) : ASDCP::h__Writer(d), m_GOPOffset(0) { - memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); - } - - ~h__Writer(){} - - Result_t OpenWrite(const char*, ui32_t HeaderSize); - Result_t SetSourceStream(const VideoDescriptor&); - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - Result_t Finalize(); -}; - - -// Open the file for writing. The file must not exist. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::h__Writer::OpenWrite(const char* filename, ui32_t HeaderSize) -{ - if ( ! m_State.Test_BEGIN() ) - return RESULT_STATE; - - Result_t result = m_File.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - { - m_HeaderSize = HeaderSize; - m_EssenceDescriptor = new MPEG2VideoDescriptor(m_Dict); - result = m_State.Goto_INIT(); - } - - return result; -} - -// Automatically sets the MXF file's metadata from the MPEG stream. -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::h__Writer::SetSourceStream(const VideoDescriptor& VDesc) -{ - assert(m_Dict); - if ( ! m_State.Test_INIT() ) - return RESULT_STATE; - - m_VDesc = VDesc; - Result_t result = MPEG2_VDesc_to_MD(m_VDesc, (MPEG2VideoDescriptor*)m_EssenceDescriptor); - - if ( ASDCP_SUCCESS(result) ) - { - memcpy(m_EssenceUL, m_Dict->ul(MDD_MPEG2Essence), SMPTE_UL_LENGTH); - m_EssenceUL[SMPTE_UL_LENGTH-1] = 1; // first (and only) essence container - result = m_State.Goto_READY(); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t TCFrameRate = ( m_VDesc.EditRate == EditRate_23_98 ) ? 24 : m_VDesc.EditRate.Numerator; - - result = WriteMXFHeader(MPEG_PACKAGE_LABEL, UL(m_Dict->ul(MDD_MPEG2_VESWrapping)), - PICT_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_PictureDataDef)), - m_VDesc.EditRate, TCFrameRate); - } - - return result; -} - -// Writes a frame of essence to the MXF file. If the optional AESEncContext -// argument is present, the essence is encrypted prior to writing. -// Fails if the file is not open, is finalized, or an operating system -// error occurs. -// -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, AESEncContext* Ctx, - HMACContext* HMAC) -{ - Result_t result = RESULT_OK; - - if ( m_State.Test_READY() ) - result = m_State.Goto_RUNNING(); // first time through, get the body location - - IndexTableSegment::IndexEntry Entry; - Entry.StreamOffset = m_StreamOffset; - - if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC); - - if ( ASDCP_FAILURE(result) ) - return result; - - // create mxflib flags - int Flags = 0; - - switch ( FrameBuf.FrameType() ) - { - case FRAME_I: Flags = 0x00; break; - case FRAME_P: Flags = 0x22; break; - case FRAME_B: Flags = 0x33; break; - /* Keep gcc quiet */ - case FRAME_U: break; - } - - if ( FrameBuf.GOPStart() ) - { - m_GOPOffset = 0; - Flags |= 0x40; - - if ( FrameBuf.ClosedGOP() ) - Flags |= 0x80; - } - - // update the index manager - Entry.TemporalOffset = - FrameBuf.TemporalOffset(); - Entry.KeyFrameOffset = 0 - m_GOPOffset; - Entry.Flags = Flags; - /* - fprintf(stderr, "to: %4hd ko: %4hd c1: %4hd c2: %4hd fl: 0x%02x\n", - Entry.TemporalOffset, Entry.KeyFrameOffset, - m_GOPOffset + Entry.TemporalOffset, - Entry.KeyFrameOffset - Entry.TemporalOffset, - Entry.Flags); - */ - m_FooterPart.PushIndexEntry(Entry); - m_FramesWritten++; - m_GOPOffset++; - - return RESULT_OK; -} - - -// Closes the MXF file, writing the index and other closing information. -// -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::h__Writer::Finalize() -{ - if ( ! m_State.Test_RUNNING() ) - return RESULT_STATE; - - m_State.Goto_FINAL(); - - return WriteMXFFooter(); -} - - -//------------------------------------------------------------------------------------------ - - - -ASDCP::MPEG2::MXFWriter::MXFWriter() -{ -} - -ASDCP::MPEG2::MXFWriter::~MXFWriter() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::MPEG2::MXFWriter::OPAtomHeader() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Writer->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::MPEG2::MXFWriter::OPAtomIndexFooter() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Writer->m_FooterPart; -} - -// Open the file for writing. The file must not exist. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::OpenWrite(const char* filename, const WriterInfo& Info, - const VideoDescriptor& VDesc, ui32_t HeaderSize) -{ - if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__Writer(DefaultSMPTEDict()); - else - m_Writer = new h__Writer(DefaultInteropDict()); - - m_Writer->m_Info = Info; - - Result_t result = m_Writer->OpenWrite(filename, HeaderSize); - - if ( ASDCP_SUCCESS(result) ) - result = m_Writer->SetSourceStream(VDesc); - - if ( ASDCP_FAILURE(result) ) - m_Writer.release(); - - return result; -} - - -// Writes a frame of essence to the MXF file. If the optional AESEncContext -// argument is present, the essence is encrypted prior to writing. -// Fails if the file is not open, is finalized, or an operating system -// error occurs. -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::WriteFrame(const FrameBuffer& FrameBuf, AESEncContext* Ctx, HMACContext* HMAC) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->WriteFrame(FrameBuf, Ctx, HMAC); -} - -// Closes the MXF file, writing the index and other closing information. -ASDCP::Result_t -ASDCP::MPEG2::MXFWriter::Finalize() -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->Finalize(); -} - - -// -// end AS_DCP_MPEG2.cpp -// diff --git a/asdcplib/src/AS_DCP_MXF.cpp b/asdcplib/src/AS_DCP_MXF.cpp deleted file mode 100755 index da5232f..0000000 --- a/asdcplib/src/AS_DCP_MXF.cpp +++ /dev/null @@ -1,542 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_MXF.cpp - \version $Id: AS_DCP_MXF.cpp,v 1.31 2009/08/04 18:43:10 jhurst Exp $ - \brief AS-DCP library, misc classes and subroutines -*/ - -#include <KM_fileio.h> -#include <KM_xml.h> -#include "AS_DCP_internal.h" -#include "JP2K.h" -#include "MPEG.h" -#include "Wav.h" -#include <iostream> -#include <iomanip> - - -//------------------------------------------------------------------------------------------ -// misc subroutines - - -// -std::ostream& -ASDCP::operator << (std::ostream& strm, const WriterInfo& Info) -{ - char str_buf[40]; - - strm << " ProductUUID: " << UUID(Info.ProductUUID).EncodeHex(str_buf, 40) << std::endl; - strm << " ProductVersion: " << Info.ProductVersion << std::endl; - strm << " CompanyName: " << Info.CompanyName << std::endl; - strm << " ProductName: " << Info.ProductName << std::endl; - strm << " EncryptedEssence: " << (Info.EncryptedEssence ? "Yes" : "No") << std::endl; - - if ( Info.EncryptedEssence ) - { - strm << " HMAC: " << (Info.UsesHMAC ? "Yes" : "No") << std::endl; - strm << " ContextID: " << UUID(Info.ContextID).EncodeHex(str_buf, 40) << std::endl; - strm << "CryptographicKeyID: " << UUID(Info.CryptographicKeyID).EncodeHex(str_buf, 40) << std::endl; - } - - strm << " AssetUUID: " << UUID(Info.AssetUUID).EncodeHex(str_buf, 40) << std::endl; - strm << " Label Set Type: " << (Info.LabelSetType == LS_MXF_SMPTE ? "SMPTE" : - (Info.LabelSetType == LS_MXF_INTEROP ? "MXF Interop" : - "Unknown")) << std::endl; - return strm; -} - -// -void -ASDCP::WriterInfoDump(const WriterInfo& Info, FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - char str_buf[40]; - - fprintf(stream," ProductUUID: %s\n", UUID(Info.ProductUUID).EncodeHex(str_buf, 40)); - fprintf(stream,"\ - ProductVersion: %s\n\ - CompanyName: %s\n\ - ProductName: %s\n\ - EncryptedEssence: %s\n", - Info.ProductVersion.c_str(), - Info.CompanyName.c_str(), - Info.ProductName.c_str(), - ( Info.EncryptedEssence ? "Yes" : "No" ) - ); - - if ( Info.EncryptedEssence ) - { - fprintf(stream, " HMAC: %s\n", ( Info.UsesHMAC ? "Yes" : "No")); - fprintf(stream, " ContextID: %s\n", UUID(Info.ContextID).EncodeHex(str_buf, 40)); - fprintf(stream, "CryptographicKeyID: %s\n", UUID(Info.CryptographicKeyID).EncodeHex(str_buf, 40)); - } - - fprintf(stream," AssetUUID: %s\n", UUID(Info.AssetUUID).EncodeHex(str_buf, 40)); - fprintf(stream," Label Set Type: %s\n", ( Info.LabelSetType == LS_MXF_SMPTE ? "SMPTE" : - ( Info.LabelSetType == LS_MXF_INTEROP ? "MXF Interop" : - "Unknown" ) )); -} - -// -Result_t -ASDCP::MD_to_WriterInfo(Identification* InfoObj, WriterInfo& Info) -{ - ASDCP_TEST_NULL(InfoObj); - char tmp_str[IdentBufferLen]; - - Info.ProductName = "Unknown Product"; - Info.ProductVersion = "Unknown Version"; - Info.CompanyName = "Unknown Company"; - memset(Info.ProductUUID, 0, UUIDlen); - - InfoObj->ProductName.EncodeString(tmp_str, IdentBufferLen); - if ( *tmp_str ) Info.ProductName = tmp_str; - - InfoObj->VersionString.EncodeString(tmp_str, IdentBufferLen); - if ( *tmp_str ) Info.ProductVersion = tmp_str; - - InfoObj->CompanyName.EncodeString(tmp_str, IdentBufferLen); - if ( *tmp_str ) Info.CompanyName = tmp_str; - - memcpy(Info.ProductUUID, InfoObj->ProductUID.Value(), UUIDlen); - - return RESULT_OK; -} - - -// -Result_t -ASDCP::MD_to_CryptoInfo(CryptographicContext* InfoObj, WriterInfo& Info, const Dictionary& Dict) -{ - ASDCP_TEST_NULL(InfoObj); - - Info.EncryptedEssence = true; - memcpy(Info.ContextID, InfoObj->ContextID.Value(), UUIDlen); - memcpy(Info.CryptographicKeyID, InfoObj->CryptographicKeyID.Value(), UUIDlen); - - UL MIC_SHA1(Dict.ul(MDD_MICAlgorithm_HMAC_SHA1)); - UL MIC_NONE(Dict.ul(MDD_MICAlgorithm_NONE)); - - if ( InfoObj->MICAlgorithm == MIC_SHA1 ) - Info.UsesHMAC = true; - - else if ( InfoObj->MICAlgorithm == MIC_NONE ) - Info.UsesHMAC = false; - - else - { - DefaultLogSink().Error("Unexpected MICAlgorithm UL.\n"); - return RESULT_FORMAT; - } - - return RESULT_OK; -} - -// -// -ASDCP::Result_t -ASDCP::EssenceType(const char* filename, EssenceType_t& type) -{ - const Dictionary* m_Dict = &DefaultCompositeDict(); - assert(m_Dict); - - ASDCP_TEST_NULL_STR(filename); - Kumu::FileReader Reader; - OPAtomHeader TestHeader(m_Dict); - - Result_t result = Reader.OpenRead(filename); - - if ( ASDCP_SUCCESS(result) ) - result = TestHeader.InitFromFile(Reader); // test UL and OP - - if ( ASDCP_SUCCESS(result) ) - { - type = ESS_UNKNOWN; - if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(RGBAEssenceDescriptor))) ) - { - if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(StereoscopicPictureSubDescriptor))) ) - type = ESS_JPEG_2000_S; - else - type = ESS_JPEG_2000; - } - else if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(WaveAudioDescriptor))) ) - type = ESS_PCM_24b_48k; - else if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(MPEG2VideoDescriptor))) ) - type = ESS_MPEG2_VES; - else if ( ASDCP_SUCCESS(TestHeader.GetMDObjectByType(OBJ_TYPE_ARGS(TimedTextDescriptor))) ) - type = ESS_TIMED_TEXT; - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::RawEssenceType(const char* filename, EssenceType_t& type) -{ - ASDCP_TEST_NULL_STR(filename); - type = ESS_UNKNOWN; - ASDCP::FrameBuffer FB; - Kumu::FileReader Reader; - ASDCP::Wav::SimpleWaveHeader WavHeader; - ASDCP::AIFF::SimpleAIFFHeader AIFFHeader; - Kumu::XMLElement TmpElement("Tmp"); - - ui32_t data_offset; - ui32_t read_count; - Result_t result = FB.Capacity(Wav::MaxWavHeader); // using Wav max because everything else is much smaller - - if ( Kumu::PathIsFile(filename) ) - { - result = Reader.OpenRead(filename); - - if ( ASDCP_SUCCESS(result) ) - { - result = Reader.Read(FB.Data(), FB.Capacity(), &read_count); - Reader.Close(); - } - - if ( ASDCP_SUCCESS(result) ) - { - const byte_t* p = FB.RoData(); - FB.Size(read_count); - - ui32_t i = 0; - while ( p[i] == 0 ) i++; - - if ( i > 1 && p[i] == 1 && (p[i+1] == ASDCP::MPEG2::SEQ_START || p[i+1] == ASDCP::MPEG2::PIC_START) ) - { - type = ESS_MPEG2_VES; - } - else if ( memcmp(FB.RoData(), ASDCP::JP2K::Magic, sizeof(ASDCP::JP2K::Magic)) == 0 ) - { - type = ESS_JPEG_2000; - } - else if ( ASDCP_SUCCESS(WavHeader.ReadFromBuffer(FB.RoData(), read_count, &data_offset)) ) - { - switch ( WavHeader.samplespersec ) - { - case 48000: type = ESS_PCM_24b_48k; break; - case 96000: type = ESS_PCM_24b_96k; break; - default: - return RESULT_FORMAT; - } - } - else if ( ASDCP_SUCCESS(AIFFHeader.ReadFromBuffer(FB.RoData(), read_count, &data_offset)) ) - { - type = ESS_PCM_24b_48k; - } - else if ( Kumu::StringIsXML((const char*)FB.RoData(), FB.Size()) ) - { - type = ESS_TIMED_TEXT; - } - } - } - else if ( Kumu::PathIsDirectory(filename) ) - { - char next_file[Kumu::MaxFilePath]; - Kumu::DirScanner Scanner; - Result_t result = Scanner.Open(filename); - - if ( ASDCP_SUCCESS(result) ) - { - while ( ASDCP_SUCCESS(Scanner.GetNext(next_file)) ) - { - if ( next_file[0] == '.' ) // no hidden files or internal links - continue; - - std::string Str(filename); - Str += "/"; - Str += next_file; - result = Reader.OpenRead(Str.c_str()); - - if ( ASDCP_SUCCESS(result) ) - { - result = Reader.Read(FB.Data(), FB.Capacity(), &read_count); - Reader.Close(); - } - - if ( ASDCP_SUCCESS(result) ) - { - if ( memcmp(FB.RoData(), ASDCP::JP2K::Magic, sizeof(ASDCP::JP2K::Magic)) == 0 ) - { - type = ESS_JPEG_2000; - } - else if ( ASDCP_SUCCESS(WavHeader.ReadFromBuffer(FB.RoData(), read_count, &data_offset)) ) - { - switch ( WavHeader.samplespersec ) - { - case 48000: type = ESS_PCM_24b_48k; break; - case 96000: type = ESS_PCM_24b_96k; break; - default: - return RESULT_FORMAT; - } - } - } - - break; - } - } - } - - return result; -} - -// -Result_t -ASDCP::EncryptFrameBuffer(const ASDCP::FrameBuffer& FBin, ASDCP::FrameBuffer& FBout, AESEncContext* Ctx) -{ - ASDCP_TEST_NULL(Ctx); - FBout.Size(0); - - // size the buffer - Result_t result = FBout.Capacity(calc_esv_length(FBin.Size(), FBin.PlaintextOffset())); - - // write the IV - byte_t* p = FBout.Data(); - - // write the IV to the frame buffer - Ctx->GetIVec(p); - p += CBC_BLOCK_SIZE; - - - // encrypt the check value to the frame buffer - if ( ASDCP_SUCCESS(result) ) - { - result = Ctx->EncryptBlock(ESV_CheckValue, p, CBC_BLOCK_SIZE); - p += CBC_BLOCK_SIZE; - } - - // write optional plaintext region - if ( FBin.PlaintextOffset() > 0 ) - { - assert(FBin.PlaintextOffset() <= FBin.Size()); - memcpy(p, FBin.RoData(), FBin.PlaintextOffset()); - p += FBin.PlaintextOffset(); - } - - ui32_t ct_size = FBin.Size() - FBin.PlaintextOffset(); - ui32_t diff = ct_size % CBC_BLOCK_SIZE; - ui32_t block_size = ct_size - diff; - assert((block_size % CBC_BLOCK_SIZE) == 0); - - // encrypt the ciphertext region essence data - if ( ASDCP_SUCCESS(result) ) - { - result = Ctx->EncryptBlock(FBin.RoData() + FBin.PlaintextOffset(), p, block_size); - p += block_size; - } - - // construct and encrypt the padding - if ( ASDCP_SUCCESS(result) ) - { - byte_t the_last_block[CBC_BLOCK_SIZE]; - - if ( diff > 0 ) - memcpy(the_last_block, FBin.RoData() + FBin.PlaintextOffset() + block_size, diff); - - for (ui32_t i = 0; diff < CBC_BLOCK_SIZE; diff++, i++ ) - the_last_block[diff] = i; - - result = Ctx->EncryptBlock(the_last_block, p, CBC_BLOCK_SIZE); - } - - if ( ASDCP_SUCCESS(result) ) - FBout.Size(calc_esv_length(FBin.Size(), FBin.PlaintextOffset())); - - return result; -} - -// -Result_t -ASDCP::DecryptFrameBuffer(const ASDCP::FrameBuffer& FBin, ASDCP::FrameBuffer& FBout, AESDecContext* Ctx) -{ - ASDCP_TEST_NULL(Ctx); - assert(FBout.Capacity() >= FBin.SourceLength()); - - ui32_t ct_size = FBin.SourceLength() - FBin.PlaintextOffset(); - ui32_t diff = ct_size % CBC_BLOCK_SIZE; - ui32_t block_size = ct_size - diff; - assert(block_size); - assert((block_size % CBC_BLOCK_SIZE) == 0); - - const byte_t* buf = FBin.RoData(); - - // get ivec - Ctx->SetIVec(buf); - buf += CBC_BLOCK_SIZE; - - // decrypt and test check value - byte_t CheckValue[CBC_BLOCK_SIZE]; - Result_t result = Ctx->DecryptBlock(buf, CheckValue, CBC_BLOCK_SIZE); - buf += CBC_BLOCK_SIZE; - - if ( memcmp(CheckValue, ESV_CheckValue, CBC_BLOCK_SIZE) != 0 ) - return RESULT_CHECKFAIL; - - // copy plaintext region - if ( FBin.PlaintextOffset() > 0 ) - { - memcpy(FBout.Data(), buf, FBin.PlaintextOffset()); - buf += FBin.PlaintextOffset(); - } - - // decrypt all but last block - if ( ASDCP_SUCCESS(result) ) - { - result = Ctx->DecryptBlock(buf, FBout.Data() + FBin.PlaintextOffset(), block_size); - buf += block_size; - } - - // decrypt last block - if ( ASDCP_SUCCESS(result) ) - { - byte_t the_last_block[CBC_BLOCK_SIZE]; - result = Ctx->DecryptBlock(buf, the_last_block, CBC_BLOCK_SIZE); - - if ( the_last_block[diff] != 0 ) - { - DefaultLogSink().Error("Unexpected non-zero padding value.\n"); - return RESULT_FORMAT; - } - - if ( diff > 0 ) - memcpy(FBout.Data() + FBin.PlaintextOffset() + block_size, the_last_block, diff); - } - - if ( ASDCP_SUCCESS(result) ) - FBout.Size(FBin.SourceLength()); - - return result; -} - - -// -Result_t -ASDCP::IntegrityPack::CalcValues(const ASDCP::FrameBuffer& FB, byte_t* AssetID, - ui32_t sequence, HMACContext* HMAC) -{ - ASDCP_TEST_NULL(AssetID); - ASDCP_TEST_NULL(HMAC); - byte_t* p = Data; - HMAC->Reset(); - - static byte_t ber_4[MXF_BER_LENGTH] = {0x83, 0, 0, 0}; - - // update HMAC with essence data - HMAC->Update(FB.RoData(), FB.Size()); - - // track file ID length - memcpy(p, ber_4, MXF_BER_LENGTH); - *(p+3) = UUIDlen;; - p += MXF_BER_LENGTH; - - // track file ID - memcpy(p, AssetID, UUIDlen); - p += UUIDlen; - - // sequence length - memcpy(p, ber_4, MXF_BER_LENGTH); - *(p+3) = sizeof(ui64_t); - p += MXF_BER_LENGTH; - - // sequence number - Kumu::i2p<ui64_t>(KM_i64_BE(sequence), p); - p += sizeof(ui64_t); - - // HMAC length - memcpy(p, ber_4, MXF_BER_LENGTH); - *(p+3) = HMAC_SIZE; - p += MXF_BER_LENGTH; - - // update HMAC with intpack values - HMAC->Update(Data, klv_intpack_size - HMAC_SIZE); - - // finish & write HMAC - HMAC->Finalize(); - HMAC->GetHMACValue(p); - - assert(p + HMAC_SIZE == Data + klv_intpack_size); - - return RESULT_OK; -} - - -Result_t -ASDCP::IntegrityPack::TestValues(const ASDCP::FrameBuffer& FB, byte_t* AssetID, - ui32_t sequence, HMACContext* HMAC) -{ - ASDCP_TEST_NULL(AssetID); - ASDCP_TEST_NULL(HMAC); - - // find the start of the intpack - byte_t* p = (byte_t*)FB.RoData() + ( FB.Size() - klv_intpack_size ); - - // test the AssetID length - if ( ! Kumu::read_test_BER(&p, UUIDlen) ) - return RESULT_HMACFAIL; - - // test the AssetID - if ( memcmp(p, AssetID, UUIDlen) != 0 ) - { - DefaultLogSink().Error("IntegrityPack failure: AssetID mismatch.\n"); - return RESULT_HMACFAIL; - } - p += UUIDlen; - - // test the sequence length - if ( ! Kumu::read_test_BER(&p, sizeof(ui64_t)) ) - return RESULT_HMACFAIL; - - ui32_t test_sequence = (ui32_t)KM_i64_BE(Kumu::cp2i<ui64_t>(p)); - - // test the sequence value - if ( test_sequence != sequence ) - { - DefaultLogSink().Error("IntegrityPack failure: sequence is %u, expecting %u.\n", test_sequence, sequence); - return RESULT_HMACFAIL; - } - - p += sizeof(ui64_t); - - // test the HMAC length - if ( ! Kumu::read_test_BER(&p, HMAC_SIZE) ) - return RESULT_HMACFAIL; - - // test the HMAC - HMAC->Reset(); - HMAC->Update(FB.RoData(), FB.Size() - HMAC_SIZE); - HMAC->Finalize(); - - return HMAC->TestHMACValue(p); -} - -// -// end AS_DCP_MXF.cpp -// diff --git a/asdcplib/src/AS_DCP_PCM.cpp b/asdcplib/src/AS_DCP_PCM.cpp deleted file mode 100755 index 385d903..0000000 --- a/asdcplib/src/AS_DCP_PCM.cpp +++ /dev/null @@ -1,671 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_PCM.cpp - \version $Id: AS_DCP_PCM.cpp,v 1.36 2012/02/07 18:54:25 jhurst Exp $ - \brief AS-DCP library, PCM essence reader and writer implementation -*/ - -#include "AS_DCP_internal.h" -#include <map> -#include <iostream> -#include <iomanip> - -//------------------------------------------------------------------------------------------ - -static std::string PCM_PACKAGE_LABEL = "File Package: SMPTE 382M frame wrapping of wave audio"; -static std::string SOUND_DEF_LABEL = "Sound Track"; - -// -Result_t -PCM_ADesc_to_MD(PCM::AudioDescriptor& ADesc, MXF::WaveAudioDescriptor* ADescObj) -{ - ASDCP_TEST_NULL(ADescObj); - ADescObj->SampleRate = ADesc.EditRate; - ADescObj->AudioSamplingRate = ADesc.AudioSamplingRate; - ADescObj->Locked = ADesc.Locked; - ADescObj->ChannelCount = ADesc.ChannelCount; - ADescObj->QuantizationBits = ADesc.QuantizationBits; - ADescObj->BlockAlign = ADesc.BlockAlign; - ADescObj->AvgBps = ADesc.AvgBps; - ADescObj->LinkedTrackID = ADesc.LinkedTrackID; - ADescObj->ContainerDuration = ADesc.ContainerDuration; - - ADescObj->ChannelAssignment.Reset(); - - switch ( ADesc.ChannelFormat ) - { - case PCM::CF_CFG_1: - ADescObj->ChannelAssignment = DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_1_5p1).ul; - break; - - case PCM::CF_CFG_2: - ADescObj->ChannelAssignment = DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_2_6p1).ul; - break; - - case PCM::CF_CFG_3: - ADescObj->ChannelAssignment = DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_3_7p1).ul; - break; - - case PCM::CF_CFG_4: - ADescObj->ChannelAssignment = DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_4_WTF).ul; - break; - - case PCM::CF_CFG_5: - ADescObj->ChannelAssignment = DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_5_7p1_DS).ul; - break; - - case PCM::CF_NONE: - /* Keep gcc quiet */ - break; - } - - return RESULT_OK; -} - -// -ASDCP::Result_t -MD_to_PCM_ADesc(MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor& ADesc) -{ - ASDCP_TEST_NULL(ADescObj); - ADesc.EditRate = ADescObj->SampleRate; - ADesc.AudioSamplingRate = ADescObj->AudioSamplingRate; - ADesc.Locked = ADescObj->Locked; - ADesc.ChannelCount = ADescObj->ChannelCount; - ADesc.QuantizationBits = ADescObj->QuantizationBits; - ADesc.BlockAlign = ADescObj->BlockAlign; - ADesc.AvgBps = ADescObj->AvgBps; - ADesc.LinkedTrackID = ADescObj->LinkedTrackID; - assert(ADescObj->ContainerDuration <= 0xFFFFFFFFL); - ADesc.ContainerDuration = (ui32_t) ADescObj->ContainerDuration; - - ADesc.ChannelFormat = PCM::CF_NONE; - - if ( ADescObj->ChannelAssignment.HasValue() ) - { - if ( ADescObj->ChannelAssignment == DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_1_5p1).ul ) - ADesc.ChannelFormat = PCM::CF_CFG_1; - - else if ( ADescObj->ChannelAssignment == DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_2_6p1).ul ) - ADesc.ChannelFormat = PCM::CF_CFG_2; - - else if ( ADescObj->ChannelAssignment == DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_3_7p1).ul ) - ADesc.ChannelFormat = PCM::CF_CFG_3; - - else if ( ADescObj->ChannelAssignment == DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_4_WTF).ul ) - ADesc.ChannelFormat = PCM::CF_CFG_4; - - else if ( ADescObj->ChannelAssignment == DefaultSMPTEDict().Type(MDD_DCAudioChannelCfg_5_7p1_DS).ul ) - ADesc.ChannelFormat = PCM::CF_CFG_5; - } - - return RESULT_OK; -} - -// -std::ostream& -ASDCP::PCM::operator << (std::ostream& strm, const AudioDescriptor& ADesc) -{ - strm << " SampleRate: " << ADesc.EditRate.Numerator << "/" << ADesc.EditRate.Denominator << std::endl; - strm << " AudioSamplingRate: " << ADesc.AudioSamplingRate.Numerator << "/" << ADesc.AudioSamplingRate.Denominator << std::endl; - strm << " Locked: " << (unsigned) ADesc.Locked << std::endl; - strm << " ChannelCount: " << (unsigned) ADesc.ChannelCount << std::endl; - strm << " QuantizationBits: " << (unsigned) ADesc.QuantizationBits << std::endl; - strm << " BlockAlign: " << (unsigned) ADesc.BlockAlign << std::endl; - strm << " AvgBps: " << (unsigned) ADesc.AvgBps << std::endl; - strm << " LinkedTrackID: " << (unsigned) ADesc.LinkedTrackID << std::endl; - strm << " ContainerDuration: " << (unsigned) ADesc.ContainerDuration << std::endl; - - return strm; -} - -// -void -ASDCP::PCM::AudioDescriptorDump(const AudioDescriptor& ADesc, FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "\ - EditRate: %d/%d\n\ - AudioSamplingRate: %d/%d\n\ - Locked: %u\n\ - ChannelCount: %u\n\ - QuantizationBits: %u\n\ - BlockAlign: %u\n\ - AvgBps: %u\n\ - LinkedTrackID: %u\n\ - ContainerDuration: %u\n", - ADesc.EditRate.Numerator, ADesc.EditRate.Denominator, - ADesc.AudioSamplingRate.Numerator, ADesc.AudioSamplingRate.Denominator, - ADesc.Locked, - ADesc.ChannelCount, - ADesc.QuantizationBits, - ADesc.BlockAlign, - ADesc.AvgBps, - ADesc.LinkedTrackID, - ADesc.ContainerDuration - ); -} - - -// -// -static ui32_t -calc_CBR_frame_size(ASDCP::WriterInfo& Info, const ASDCP::PCM::AudioDescriptor& ADesc) -{ - ui32_t CBR_frame_size = 0; - - if ( Info.EncryptedEssence ) - { - CBR_frame_size = - SMPTE_UL_LENGTH - + MXF_BER_LENGTH - + klv_cryptinfo_size - + calc_esv_length(ASDCP::PCM::CalcFrameBufferSize(ADesc), 0) - + ( Info.UsesHMAC ? klv_intpack_size : (MXF_BER_LENGTH * 3) ); - } - else - { - CBR_frame_size = ASDCP::PCM::CalcFrameBufferSize(ADesc) + SMPTE_UL_LENGTH + MXF_BER_LENGTH; - } - - return CBR_frame_size; -} - - -//------------------------------------------------------------------------------------------ - - -class ASDCP::PCM::MXFReader::h__Reader : public ASDCP::h__Reader -{ - ASDCP_NO_COPY_CONSTRUCT(h__Reader); - h__Reader(); - -public: - AudioDescriptor m_ADesc; - - h__Reader(const Dictionary& d) : ASDCP::h__Reader(d) {} - ~h__Reader() {} - Result_t OpenRead(const char*); - Result_t ReadFrame(ui32_t, FrameBuffer&, AESDecContext*, HMACContext*); -}; - - -// -// -ASDCP::Result_t -ASDCP::PCM::MXFReader::h__Reader::OpenRead(const char* filename) -{ - Result_t result = OpenMXFRead(filename); - - if( ASDCP_SUCCESS(result) ) - { - InterchangeObject* Object; - if ( ASDCP_SUCCESS(m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(WaveAudioDescriptor), &Object)) ) - { - assert(Object); - result = MD_to_PCM_ADesc((MXF::WaveAudioDescriptor*)Object, m_ADesc); - } - } - - /* This check has been removed so that DCP-o-matic can use any edit rate - it wants. - */ -#if 0 - // check for sample/frame rate sanity - if ( ASDCP_SUCCESS(result) - && m_ADesc.EditRate != EditRate_24 - && m_ADesc.EditRate != EditRate_25 - && m_ADesc.EditRate != EditRate_30 - && m_ADesc.EditRate != EditRate_48 - && m_ADesc.EditRate != EditRate_50 - && m_ADesc.EditRate != EditRate_60 - && m_ADesc.EditRate != EditRate_96 - && m_ADesc.EditRate != EditRate_100 - && m_ADesc.EditRate != EditRate_120 - && m_ADesc.EditRate != EditRate_23_98 ) - { - DefaultLogSink().Error("PCM file EditRate is not a supported value: %d/%d\n", // lu - m_ADesc.EditRate.Numerator, m_ADesc.EditRate.Denominator); - - // oh, they gave us the audio sampling rate instead, assume 24/1 - if ( m_ADesc.EditRate == SampleRate_48k ) - { - DefaultLogSink().Warn("adjusting EditRate to 24/1\n"); - m_ADesc.EditRate = EditRate_24; - } - else - { - // or we just drop the hammer - return RESULT_FORMAT; - } - } -#endif - - if( ASDCP_SUCCESS(result) ) - result = InitMXFIndex(); - - if( ASDCP_SUCCESS(result) ) - result = InitInfo(); - - // TODO: test file for sane CBR index BytesPerEditUnit - - return result; -} - - -// -// -ASDCP::Result_t -ASDCP::PCM::MXFReader::h__Reader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - assert(m_Dict); - return ReadEKLVFrame(FrameNum, FrameBuf, m_Dict->ul(MDD_WAVEssence), Ctx, HMAC); -} - -//------------------------------------------------------------------------------------------ - - -// -void -ASDCP::PCM::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "Frame: %06u, %7u bytes\n", - m_FrameNumber, m_Size); - - if ( dump_len ) - Kumu::hexdump(m_Data, dump_len, stream); -} - -//------------------------------------------------------------------------------------------ - -ASDCP::PCM::MXFReader::MXFReader() -{ - m_Reader = new h__Reader(DefaultCompositeDict()); -} - - -ASDCP::PCM::MXFReader::~MXFReader() -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - m_Reader->Close(); -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::PCM::MXFReader::OPAtomHeader() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Reader->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::PCM::MXFReader::OPAtomIndexFooter() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Reader->m_FooterPart; -} - -// Open the file for reading. The file must exist. Returns error if the -// operation cannot be completed. -ASDCP::Result_t -ASDCP::PCM::MXFReader::OpenRead(const char* filename) const -{ - return m_Reader->OpenRead(filename); -} - -// Reads a frame of essence from the MXF file. If the optional AESEncContext -// argument is present, the essence is decrypted after reading. If the MXF -// file is encrypted and the AESDecContext argument is NULL, the frame buffer -// will contain the ciphertext frame data. -ASDCP::Result_t -ASDCP::PCM::MXFReader::ReadFrame(ui32_t FrameNum, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadFrame(FrameNum, FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::PCM::MXFReader::FillAudioDescriptor(AudioDescriptor& ADesc) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - ADesc = m_Reader->m_ADesc; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::PCM::MXFReader::FillWriterInfo(WriterInfo& Info) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - Info = m_Reader->m_Info; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// -void -ASDCP::PCM::MXFReader::DumpHeaderMetadata(FILE* stream) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - m_Reader->m_HeaderPart.Dump(stream); -} - - -// -void -ASDCP::PCM::MXFReader::DumpIndex(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_FooterPart.Dump(stream); -} - -// -ASDCP::Result_t -ASDCP::PCM::MXFReader::Close() const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - m_Reader->Close(); - return RESULT_OK; - } - - return RESULT_INIT; -} - - -//------------------------------------------------------------------------------------------ - -// -class ASDCP::PCM::MXFWriter::h__Writer : public ASDCP::h__Writer -{ - ASDCP_NO_COPY_CONSTRUCT(h__Writer); - h__Writer(); - -public: - AudioDescriptor m_ADesc; - byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - - h__Writer(const Dictionary& d) : ASDCP::h__Writer(d) { - memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); - } - - ~h__Writer(){} - - Result_t OpenWrite(const char*, ui32_t HeaderSize); - Result_t SetSourceStream(const AudioDescriptor&); - Result_t WriteFrame(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - Result_t Finalize(); -}; - - - -// Open the file for writing. The file must not exist. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::PCM::MXFWriter::h__Writer::OpenWrite(const char* filename, ui32_t HeaderSize) -{ - if ( ! m_State.Test_BEGIN() ) - return RESULT_STATE; - - Result_t result = m_File.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - { - m_HeaderSize = HeaderSize; - m_EssenceDescriptor = new WaveAudioDescriptor(m_Dict); - result = m_State.Goto_INIT(); - } - - return result; -} - - -// Automatically sets the MXF file's metadata from the WAV parser info. -ASDCP::Result_t -ASDCP::PCM::MXFWriter::h__Writer::SetSourceStream(const AudioDescriptor& ADesc) -{ - if ( ! m_State.Test_INIT() ) - return RESULT_STATE; - -#if 0 - /* This check has been removed so that DCP-o-matic can use anye dit rate - it wants. - */ - if ( ADesc.EditRate != EditRate_24 - && ADesc.EditRate != EditRate_25 - && ADesc.EditRate != EditRate_30 - && ADesc.EditRate != EditRate_48 - && ADesc.EditRate != EditRate_50 - && ADesc.EditRate != EditRate_60 - && ADesc.EditRate != EditRate_96 - && ADesc.EditRate != EditRate_100 - && ADesc.EditRate != EditRate_120 - && ADesc.EditRate != EditRate_23_98 ) - { - DefaultLogSink().Error("AudioDescriptor.EditRate is not a supported value: %d/%d\n", - ADesc.EditRate.Numerator, ADesc.EditRate.Denominator); - return RESULT_RAW_FORMAT; - } -#endif - - if ( ADesc.AudioSamplingRate != SampleRate_48k && ADesc.AudioSamplingRate != SampleRate_96k ) - { - DefaultLogSink().Error("AudioDescriptor.AudioSamplingRate is not 48000/1 or 96000/1: %d/%d\n", - ADesc.AudioSamplingRate.Numerator, ADesc.AudioSamplingRate.Denominator); - return RESULT_RAW_FORMAT; - } - - assert(m_Dict); - m_ADesc = ADesc; - - Result_t result = PCM_ADesc_to_MD(m_ADesc, (WaveAudioDescriptor*)m_EssenceDescriptor); - - if ( ASDCP_SUCCESS(result) ) - { - memcpy(m_EssenceUL, m_Dict->ul(MDD_WAVEssence), SMPTE_UL_LENGTH); - m_EssenceUL[SMPTE_UL_LENGTH-1] = 1; // first (and only) essence container - result = m_State.Goto_READY(); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t TCFrameRate = ( m_ADesc.EditRate == EditRate_23_98 ) ? 24 : m_ADesc.EditRate.Numerator; - - result = WriteMXFHeader(PCM_PACKAGE_LABEL, UL(m_Dict->ul(MDD_WAVWrapping)), - SOUND_DEF_LABEL, UL(m_EssenceUL), UL(m_Dict->ul(MDD_SoundDataDef)), - m_ADesc.EditRate, TCFrameRate, calc_CBR_frame_size(m_Info, m_ADesc)); - } - - return result; -} - - -// -// -ASDCP::Result_t -ASDCP::PCM::MXFWriter::h__Writer::WriteFrame(const FrameBuffer& FrameBuf, AESEncContext* Ctx, - HMACContext* HMAC) -{ - Result_t result = RESULT_OK; - - if ( m_State.Test_READY() ) - result = m_State.Goto_RUNNING(); // first time through - - if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC); - - if ( ASDCP_SUCCESS(result) ) - m_FramesWritten++; - - return result; -} - -// Closes the MXF file, writing the index and other closing information. -// -ASDCP::Result_t -ASDCP::PCM::MXFWriter::h__Writer::Finalize() -{ - if ( ! m_State.Test_RUNNING() ) - return RESULT_STATE; - - m_State.Goto_FINAL(); - - return WriteMXFFooter(); -} - - -//------------------------------------------------------------------------------------------ -// - - - -ASDCP::PCM::MXFWriter::MXFWriter() -{ -} - -ASDCP::PCM::MXFWriter::~MXFWriter() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::PCM::MXFWriter::OPAtomHeader() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Writer->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::PCM::MXFWriter::OPAtomIndexFooter() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Writer->m_FooterPart; -} - -// Open the file for writing. The file must not exist. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::PCM::MXFWriter::OpenWrite(const char* filename, const WriterInfo& Info, - const AudioDescriptor& ADesc, ui32_t HeaderSize) -{ - if ( Info.LabelSetType == LS_MXF_SMPTE ) - m_Writer = new h__Writer(DefaultSMPTEDict()); - else - m_Writer = new h__Writer(DefaultInteropDict()); - - m_Writer->m_Info = Info; - - Result_t result = m_Writer->OpenWrite(filename, HeaderSize); - - if ( ASDCP_SUCCESS(result) ) - result = m_Writer->SetSourceStream(ADesc); - - if ( ASDCP_FAILURE(result) ) - m_Writer.release(); - - return result; -} - -// Writes a frame of essence to the MXF file. If the optional AESEncContext -// argument is present, the essence is encrypted prior to writing. -// Fails if the file is not open, is finalized, or an operating system -// error occurs. -ASDCP::Result_t -ASDCP::PCM::MXFWriter::WriteFrame(const FrameBuffer& FrameBuf, AESEncContext* Ctx, HMACContext* HMAC) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->WriteFrame(FrameBuf, Ctx, HMAC); -} - -// Closes the MXF file, writing the index and other closing information. -ASDCP::Result_t -ASDCP::PCM::MXFWriter::Finalize() -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->Finalize(); -} - -// -// end AS_DCP_PCM.cpp -// - diff --git a/asdcplib/src/AS_DCP_TimedText.cpp b/asdcplib/src/AS_DCP_TimedText.cpp deleted file mode 100644 index 98ecce1..0000000 --- a/asdcplib/src/AS_DCP_TimedText.cpp +++ /dev/null @@ -1,770 +0,0 @@ -/* -Copyright (c) 2008-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_TimedText.cpp - \version $Id: AS_DCP_TimedText.cpp,v 1.26 2012/02/07 18:54:25 jhurst Exp $ - \brief AS-DCP library, PCM essence reader and writer implementation -*/ - - -#include "AS_DCP_internal.h" -#include "KM_xml.h" -#include <iostream> -#include <iomanip> - -using Kumu::GenRandomValue; - -static std::string TIMED_TEXT_PACKAGE_LABEL = "File Package: SMPTE 429-5 clip wrapping of D-Cinema Timed Text data"; -static std::string TIMED_TEXT_DEF_LABEL = "Timed Text Track"; - - -//------------------------------------------------------------------------------------------ - -const char* -MIME2str(TimedText::MIMEType_t m) -{ - if ( m == TimedText::MT_PNG ) - return "image/png"; - - else if ( m == TimedText::MT_OPENTYPE ) - return "application/x-font-opentype"; - - return "application/octet-stream"; -} - -// -std::ostream& -ASDCP::TimedText::operator << (std::ostream& strm, const TimedTextDescriptor& TDesc) -{ - UUID TmpID(TDesc.AssetID); - char buf[64]; - - strm << " EditRate: " << (unsigned) TDesc.EditRate.Numerator << "/" << (unsigned) TDesc.EditRate.Denominator << std::endl; - strm << "ContainerDuration: " << (unsigned) TDesc.ContainerDuration << std::endl; - strm << " AssetID: " << TmpID.EncodeHex(buf, 64) << std::endl; - strm << " NamespaceName: " << TDesc.NamespaceName << std::endl; - strm << " ResourceCount: " << (unsigned long) TDesc.ResourceList.size() << std::endl; - - TimedText::ResourceList_t::const_iterator ri; - for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end(); ri++ ) - { - TmpID.Set((*ri).ResourceID); - strm << " " << TmpID.EncodeHex(buf, 64) << ": " << MIME2str((*ri).Type) << std::endl; - } - - return strm; -} - -// -void -ASDCP::TimedText::DescriptorDump(ASDCP::TimedText::TimedTextDescriptor const& TDesc, FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - UUID TmpID(TDesc.AssetID); - char buf[64]; - - fprintf(stream, " EditRate: %u/%u\n", TDesc.EditRate.Numerator, TDesc.EditRate.Denominator); - fprintf(stream, "ContainerDuration: %u\n", TDesc.ContainerDuration); - fprintf(stream, " AssetID: %s\n", TmpID.EncodeHex(buf, 64)); - fprintf(stream, " NamespaceName: %s\n", TDesc.NamespaceName.c_str()); - fprintf(stream, " ResourceCount: %zu\n", TDesc.ResourceList.size()); - - TimedText::ResourceList_t::const_iterator ri; - for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end(); ri++ ) - { - TmpID.Set((*ri).ResourceID); - fprintf(stream, " %s: %s\n", - TmpID.EncodeHex(buf, 64), - MIME2str((*ri).Type)); - } -} - -// -void -ASDCP::TimedText::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const -{ - if ( stream == 0 ) - stream = stderr; - - UUID TmpID(m_AssetID); - char buf[64]; - fprintf(stream, "%s | %s | %u\n", TmpID.EncodeHex(buf, 64), m_MIMEType.c_str(), Size()); - - if ( dump_len > 0 ) - Kumu::hexdump(m_Data, dump_len, stream); -} - -//------------------------------------------------------------------------------------------ - -typedef std::map<UUID, UUID> ResourceMap_t; - -class ASDCP::TimedText::MXFReader::h__Reader : public ASDCP::h__Reader -{ - MXF::TimedTextDescriptor* m_EssenceDescriptor; - ResourceMap_t m_ResourceMap; - - ASDCP_NO_COPY_CONSTRUCT(h__Reader); - -public: - TimedTextDescriptor m_TDesc; - - h__Reader(const Dictionary& d) : ASDCP::h__Reader(d), m_EssenceDescriptor(0) { - memset(&m_TDesc.AssetID, 0, UUIDlen); - } - - Result_t OpenRead(const char*); - Result_t MD_to_TimedText_TDesc(TimedText::TimedTextDescriptor& TDesc); - Result_t ReadTimedTextResource(FrameBuffer& FrameBuf, AESDecContext* Ctx, HMACContext* HMAC); - Result_t ReadAncillaryResource(const byte_t*, FrameBuffer& FrameBuf, AESDecContext* Ctx, HMACContext* HMAC); -}; - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::h__Reader::MD_to_TimedText_TDesc(TimedText::TimedTextDescriptor& TDesc) -{ - assert(m_EssenceDescriptor); - memset(&m_TDesc.AssetID, 0, UUIDlen); - MXF::TimedTextDescriptor* TDescObj = (MXF::TimedTextDescriptor*)m_EssenceDescriptor; - - TDesc.EditRate = TDescObj->SampleRate; - assert(TDescObj->ContainerDuration <= 0xFFFFFFFFL); - TDesc.ContainerDuration = (ui32_t) TDescObj->ContainerDuration; - memcpy(TDesc.AssetID, TDescObj->ResourceID.Value(), UUIDlen); - TDesc.NamespaceName = TDescObj->NamespaceURI; - TDesc.EncodingName = TDescObj->UCSEncoding; - - Batch<UUID>::const_iterator sdi = TDescObj->SubDescriptors.begin(); - TimedTextResourceSubDescriptor* DescObject = 0; - Result_t result = RESULT_OK; - - for ( ; sdi != TDescObj->SubDescriptors.end() && KM_SUCCESS(result); sdi++ ) - { - InterchangeObject* tmp_iobj = 0; - result = m_HeaderPart.GetMDObjectByID(*sdi, &tmp_iobj); - DescObject = static_cast<TimedTextResourceSubDescriptor*>(tmp_iobj); - - if ( KM_SUCCESS(result) ) - { - TimedTextResourceDescriptor TmpResource; - memcpy(TmpResource.ResourceID, DescObject->AncillaryResourceID.Value(), UUIDlen); - - if ( DescObject->MIMEMediaType.find("application/x-font-opentype") != std::string::npos - || DescObject->MIMEMediaType.find("application/x-opentype") != std::string::npos - || DescObject->MIMEMediaType.find("font/opentype") != std::string::npos ) - TmpResource.Type = MT_OPENTYPE; - - else if ( DescObject->MIMEMediaType.find("image/png") != std::string::npos ) - TmpResource.Type = MT_PNG; - - else - TmpResource.Type = MT_BIN; - - TDesc.ResourceList.push_back(TmpResource); - m_ResourceMap.insert(ResourceMap_t::value_type(DescObject->AncillaryResourceID, *sdi)); - } - else - { - DefaultLogSink().Error("Broken sub-descriptor link\n"); - return RESULT_FORMAT; - } - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::h__Reader::OpenRead(char const* filename) -{ - Result_t result = OpenMXFRead(filename); - - if( ASDCP_SUCCESS(result) ) - { - if ( m_EssenceDescriptor == 0 ) - { - InterchangeObject* tmp_iobj = 0; - result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(TimedTextDescriptor), &tmp_iobj); - m_EssenceDescriptor = static_cast<MXF::TimedTextDescriptor*>(tmp_iobj); - } - - if( ASDCP_SUCCESS(result) ) - result = MD_to_TimedText_TDesc(m_TDesc); - } - - if( ASDCP_SUCCESS(result) ) - result = InitMXFIndex(); - - if( ASDCP_SUCCESS(result) ) - result = InitInfo(); - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::h__Reader::ReadTimedTextResource(FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - assert(m_Dict); - Result_t result = ReadEKLVFrame(0, FrameBuf, m_Dict->ul(MDD_TimedTextEssence), Ctx, HMAC); - - if( ASDCP_SUCCESS(result) ) - { - FrameBuf.AssetID(m_TDesc.AssetID); - FrameBuf.MIMEType("text/xml"); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::h__Reader::ReadAncillaryResource(const byte_t* uuid, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) -{ - KM_TEST_NULL_L(uuid); - UUID RID(uuid); - - ResourceMap_t::const_iterator ri = m_ResourceMap.find(RID); - if ( ri == m_ResourceMap.end() ) - { - char buf[64]; - DefaultLogSink().Error("No such resource: %s\n", RID.EncodeHex(buf, 64)); - return RESULT_RANGE; - } - - TimedTextResourceSubDescriptor* DescObject = 0; - // get the subdescriptor - InterchangeObject* tmp_iobj = 0; - Result_t result = m_HeaderPart.GetMDObjectByID((*ri).second, &tmp_iobj); - DescObject = static_cast<TimedTextResourceSubDescriptor*>(tmp_iobj); - - if ( KM_SUCCESS(result) ) - { - Array<RIP::Pair>::const_iterator pi; - RIP::Pair TmpPair; - ui32_t sequence = 1; - - // Look up the partition start in the RIP using the SID. - // Count the sequence length in because this is the sequence - // value needed to complete the HMAC. - for ( pi = m_HeaderPart.m_RIP.PairArray.begin(); pi != m_HeaderPart.m_RIP.PairArray.end(); pi++, sequence++ ) - { - if ( (*pi).BodySID == DescObject->EssenceStreamID ) - { - TmpPair = *pi; - break; - } - } - - if ( TmpPair.ByteOffset == 0 ) - { - DefaultLogSink().Error("Body SID not found in RIP set: %d\n", DescObject->EssenceStreamID); - return RESULT_FORMAT; - } - - if ( KM_SUCCESS(result) ) - { - FrameBuf.AssetID(uuid); - FrameBuf.MIMEType(DescObject->MIMEMediaType); - - // seek tp the start of the partition - if ( (Kumu::fpos_t)TmpPair.ByteOffset != m_LastPosition ) - { - m_LastPosition = TmpPair.ByteOffset; - result = m_File.Seek(TmpPair.ByteOffset); - } - - // read the partition header - MXF::Partition GSPart(m_Dict); - result = GSPart.InitFromFile(m_File); - - if( ASDCP_SUCCESS(result) ) - { - // check the SID - if ( DescObject->EssenceStreamID != GSPart.BodySID ) - { - char buf[64]; - DefaultLogSink().Error("Generic stream partition body differs: %s\n", RID.EncodeHex(buf, 64)); - return RESULT_FORMAT; - } - - // read the essence packet - assert(m_Dict); - if( ASDCP_SUCCESS(result) ) - result = ReadEKLVPacket(0, 1, FrameBuf, m_Dict->ul(MDD_GenericStream_DataElement), Ctx, HMAC); - } - } - } - - return result; -} - - -//------------------------------------------------------------------------------------------ - -ASDCP::TimedText::MXFReader::MXFReader() -{ - m_Reader = new h__Reader(DefaultSMPTEDict()); -} - - -ASDCP::TimedText::MXFReader::~MXFReader() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::TimedText::MXFReader::OPAtomHeader() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Reader->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::TimedText::MXFReader::OPAtomIndexFooter() -{ - if ( m_Reader.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Reader->m_FooterPart; -} - -// Open the file for reading. The file must exist. Returns error if the -// operation cannot be completed. -ASDCP::Result_t -ASDCP::TimedText::MXFReader::OpenRead(const char* filename) const -{ - return m_Reader->OpenRead(filename); -} - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::TimedText::MXFReader::FillTimedTextDescriptor(TimedText::TimedTextDescriptor& TDesc) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - TDesc = m_Reader->m_TDesc; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// Fill the struct with the values from the file's header. -// Returns RESULT_INIT if the file is not open. -ASDCP::Result_t -ASDCP::TimedText::MXFReader::FillWriterInfo(WriterInfo& Info) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - Info = m_Reader->m_Info; - return RESULT_OK; - } - - return RESULT_INIT; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::ReadTimedTextResource(std::string& s, AESDecContext* Ctx, HMACContext* HMAC) const -{ - FrameBuffer FrameBuf(2*Kumu::Megabyte); - - Result_t result = ReadTimedTextResource(FrameBuf, Ctx, HMAC); - - if ( ASDCP_SUCCESS(result) ) - s.assign((char*)FrameBuf.Data(), FrameBuf.Size()); - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::ReadTimedTextResource(FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadTimedTextResource(FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::ReadAncillaryResource(const byte_t* uuid, FrameBuffer& FrameBuf, - AESDecContext* Ctx, HMACContext* HMAC) const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - return m_Reader->ReadAncillaryResource(uuid, FrameBuf, Ctx, HMAC); - - return RESULT_INIT; -} - - -// -void -ASDCP::TimedText::MXFReader::DumpHeaderMetadata(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_HeaderPart.Dump(stream); -} - - -// -void -ASDCP::TimedText::MXFReader::DumpIndex(FILE* stream) const -{ - if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_FooterPart.Dump(stream); -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFReader::Close() const -{ - if ( m_Reader && m_Reader->m_File.IsOpen() ) - { - m_Reader->Close(); - return RESULT_OK; - } - - return RESULT_INIT; -} - - -//------------------------------------------------------------------------------------------ - - -// -class ASDCP::TimedText::MXFWriter::h__Writer : public ASDCP::h__Writer -{ - ASDCP_NO_COPY_CONSTRUCT(h__Writer); - h__Writer(); - -public: - TimedTextDescriptor m_TDesc; - byte_t m_EssenceUL[SMPTE_UL_LENGTH]; - ui32_t m_EssenceStreamID; - - h__Writer(const Dictionary& d) : ASDCP::h__Writer(d), m_EssenceStreamID(10) { - memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); - } - - ~h__Writer(){} - - Result_t OpenWrite(const char*, ui32_t HeaderSize); - Result_t SetSourceStream(const TimedTextDescriptor&); - Result_t WriteTimedTextResource(const std::string& XMLDoc, AESEncContext* = 0, HMACContext* = 0); - Result_t WriteAncillaryResource(const FrameBuffer&, AESEncContext* = 0, HMACContext* = 0); - Result_t Finalize(); - Result_t TimedText_TDesc_to_MD(TimedText::TimedTextDescriptor& TDesc); -}; - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::h__Writer::TimedText_TDesc_to_MD(TimedText::TimedTextDescriptor& TDesc) -{ - assert(m_EssenceDescriptor); - MXF::TimedTextDescriptor* TDescObj = (MXF::TimedTextDescriptor*)m_EssenceDescriptor; - - TDescObj->SampleRate = TDesc.EditRate; - TDescObj->ContainerDuration = TDesc.ContainerDuration; - TDescObj->ResourceID.Set(TDesc.AssetID); - TDescObj->NamespaceURI = TDesc.NamespaceName; - TDescObj->UCSEncoding = TDesc.EncodingName; - - return RESULT_OK; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::h__Writer::OpenWrite(char const* filename, ui32_t HeaderSize) -{ - if ( ! m_State.Test_BEGIN() ) - return RESULT_STATE; - - Result_t result = m_File.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - { - m_HeaderSize = HeaderSize; - m_EssenceDescriptor = new MXF::TimedTextDescriptor(m_Dict); - result = m_State.Goto_INIT(); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::h__Writer::SetSourceStream(ASDCP::TimedText::TimedTextDescriptor const& TDesc) -{ - if ( ! m_State.Test_INIT() ) - return RESULT_STATE; - - m_TDesc = TDesc; - ResourceList_t::const_iterator ri; - Result_t result = TimedText_TDesc_to_MD(m_TDesc); - - for ( ri = m_TDesc.ResourceList.begin() ; ri != m_TDesc.ResourceList.end() && ASDCP_SUCCESS(result); ri++ ) - { - TimedTextResourceSubDescriptor* resourceSubdescriptor = new TimedTextResourceSubDescriptor(m_Dict); - GenRandomValue(resourceSubdescriptor->InstanceUID); - resourceSubdescriptor->AncillaryResourceID.Set((*ri).ResourceID); - resourceSubdescriptor->MIMEMediaType = MIME2str((*ri).Type); - resourceSubdescriptor->EssenceStreamID = m_EssenceStreamID++; - m_EssenceSubDescriptorList.push_back((FileDescriptor*)resourceSubdescriptor); - m_EssenceDescriptor->SubDescriptors.push_back(resourceSubdescriptor->InstanceUID); - } - - m_EssenceStreamID = 10; - assert(m_Dict); - - if ( ASDCP_SUCCESS(result) ) - { - InitHeader(); - AddDMSegment(m_TDesc.EditRate, 24, TIMED_TEXT_DEF_LABEL, - UL(m_Dict->ul(MDD_PictureDataDef)), TIMED_TEXT_PACKAGE_LABEL); - - AddEssenceDescriptor(UL(m_Dict->ul(MDD_TimedTextWrapping))); - - result = m_HeaderPart.WriteToFile(m_File, m_HeaderSize); - - if ( KM_SUCCESS(result) ) - result = CreateBodyPart(m_TDesc.EditRate); - } - - if ( ASDCP_SUCCESS(result) ) - { - memcpy(m_EssenceUL, m_Dict->ul(MDD_TimedTextEssence), SMPTE_UL_LENGTH); - m_EssenceUL[SMPTE_UL_LENGTH-1] = 1; // first (and only) essence container - result = m_State.Goto_READY(); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::h__Writer::WriteTimedTextResource(const std::string& XMLDoc, - ASDCP::AESEncContext* Ctx, ASDCP::HMACContext* HMAC) -{ - Result_t result = m_State.Goto_RUNNING(); - - if ( ASDCP_SUCCESS(result) ) - { - // TODO: make sure it's XML - - ui32_t str_size = XMLDoc.size(); - FrameBuffer FrameBuf(str_size); - - memcpy(FrameBuf.Data(), XMLDoc.c_str(), str_size); - FrameBuf.Size(str_size); - - IndexTableSegment::IndexEntry Entry; - Entry.StreamOffset = m_StreamOffset; - - if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, m_EssenceUL, Ctx, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - m_FooterPart.PushIndexEntry(Entry); - m_FramesWritten++; - } - } - - return result; -} - - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::h__Writer::WriteAncillaryResource(const ASDCP::TimedText::FrameBuffer& FrameBuf, - ASDCP::AESEncContext* Ctx, ASDCP::HMACContext* HMAC) -{ - if ( ! m_State.Test_RUNNING() ) - return RESULT_STATE; - - Kumu::fpos_t here = m_File.Tell(); - assert(m_Dict); - - // create generic stream partition header - static UL GenericStream_DataElement(m_Dict->ul(MDD_GenericStream_DataElement)); - MXF::Partition GSPart(m_Dict); - - GSPart.ThisPartition = here; - GSPart.PreviousPartition = m_HeaderPart.m_RIP.PairArray.back().ByteOffset; - GSPart.BodySID = m_EssenceStreamID; - GSPart.OperationalPattern = m_HeaderPart.OperationalPattern; - - m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(m_EssenceStreamID++, here)); - GSPart.EssenceContainers.push_back(UL(m_Dict->ul(MDD_TimedTextEssence))); - UL TmpUL(m_Dict->ul(MDD_GenericStreamPartition)); - Result_t result = GSPart.WriteToFile(m_File, TmpUL); - - if ( ASDCP_SUCCESS(result) ) - result = WriteEKLVPacket(FrameBuf, GenericStream_DataElement.Value(), Ctx, HMAC); - - m_FramesWritten++; - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::h__Writer::Finalize() -{ - if ( ! m_State.Test_RUNNING() ) - return RESULT_STATE; - - m_FramesWritten = m_TDesc.ContainerDuration; - m_State.Goto_FINAL(); - - return WriteMXFFooter(); -} - - -//------------------------------------------------------------------------------------------ - -ASDCP::TimedText::MXFWriter::MXFWriter() -{ -} - -ASDCP::TimedText::MXFWriter::~MXFWriter() -{ -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomHeader& -ASDCP::TimedText::MXFWriter::OPAtomHeader() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; - } - - return m_Writer->m_HeaderPart; -} - -// Warning: direct manipulation of MXF structures can interfere -// with the normal operation of the wrapper. Caveat emptor! -// -ASDCP::MXF::OPAtomIndexFooter& -ASDCP::TimedText::MXFWriter::OPAtomIndexFooter() -{ - if ( m_Writer.empty() ) - { - assert(g_OPAtomIndexFooter); - return *g_OPAtomIndexFooter; - } - - return m_Writer->m_FooterPart; -} - -// Open the file for writing. The file must not exist. Returns error if -// the operation cannot be completed. -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::OpenWrite(const char* filename, const WriterInfo& Info, - const TimedTextDescriptor& TDesc, ui32_t HeaderSize) -{ - if ( Info.LabelSetType != LS_MXF_SMPTE ) - { - DefaultLogSink().Error("Timed Text support requires LS_MXF_SMPTE\n"); - return RESULT_FORMAT; - } - - m_Writer = new h__Writer(DefaultSMPTEDict()); - m_Writer->m_Info = Info; - - Result_t result = m_Writer->OpenWrite(filename, HeaderSize); - - if ( ASDCP_SUCCESS(result) ) - result = m_Writer->SetSourceStream(TDesc); - - if ( ASDCP_FAILURE(result) ) - m_Writer.release(); - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::WriteTimedTextResource(const std::string& XMLDoc, AESEncContext* Ctx, HMACContext* HMAC) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->WriteTimedTextResource(XMLDoc, Ctx, HMAC); -} - -// -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::WriteAncillaryResource(const FrameBuffer& FrameBuf, AESEncContext* Ctx, HMACContext* HMAC) -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->WriteAncillaryResource(FrameBuf, Ctx, HMAC); -} - -// Closes the MXF file, writing the index and other closing information. -ASDCP::Result_t -ASDCP::TimedText::MXFWriter::Finalize() -{ - if ( m_Writer.empty() ) - return RESULT_INIT; - - return m_Writer->Finalize(); -} - - - -// -// end AS_DCP_timedText.cpp -// diff --git a/asdcplib/src/AS_DCP_internal.h b/asdcplib/src/AS_DCP_internal.h deleted file mode 100755 index 73106a2..0000000 --- a/asdcplib/src/AS_DCP_internal.h +++ /dev/null @@ -1,274 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_internal.h - \version $Id: AS_DCP_internal.h,v 1.27 2012/02/07 18:54:25 jhurst Exp $ - \brief AS-DCP library, non-public common elements -*/ - -#ifndef _AS_DCP_INTERNAL_H_ -#define _AS_DCP_INTERNAL_H_ - -#include <KM_platform.h> -#include <KM_util.h> -#include <KM_log.h> -#include "Metadata.h" - -using Kumu::DefaultLogSink; -// using namespace std; -using namespace ASDCP; -using namespace ASDCP::MXF; - -#ifdef DEFAULT_MD_DECL -ASDCP::MXF::OPAtomHeader *g_OPAtomHeader; -ASDCP::MXF::OPAtomIndexFooter *g_OPAtomIndexFooter; -#else -extern MXF::OPAtomHeader *g_OPAtomHeader; -extern MXF::OPAtomIndexFooter *g_OPAtomIndexFooter; -#endif - - -namespace ASDCP -{ - void default_md_object_init(); - - - // constant values used to calculate KLV and EKLV packet sizes - static const ui32_t klv_cryptinfo_size = - MXF_BER_LENGTH - + UUIDlen /* ContextID */ - + MXF_BER_LENGTH - + sizeof(ui64_t) /* PlaintextOffset */ - + MXF_BER_LENGTH - + SMPTE_UL_LENGTH /* SourceKey */ - + MXF_BER_LENGTH - + sizeof(ui64_t) /* SourceLength */ - + MXF_BER_LENGTH /* ESV length */ ; - - static const ui32_t klv_intpack_size = - MXF_BER_LENGTH - + UUIDlen /* TrackFileID */ - + MXF_BER_LENGTH - + sizeof(ui64_t) /* SequenceNumber */ - + MXF_BER_LENGTH - + 20; /* HMAC length*/ - - // calculate size of encrypted essence with IV, CheckValue, and padding - inline ui32_t - calc_esv_length(ui32_t source_length, ui32_t plaintext_offset) - { - ui32_t ct_size = source_length - plaintext_offset; - ui32_t diff = ct_size % CBC_BLOCK_SIZE; - ui32_t block_size = ct_size - diff; - return plaintext_offset + block_size + (CBC_BLOCK_SIZE * 3); - } - - // the check value for EKLV packets - // CHUKCHUKCHUKCHUK - static const byte_t ESV_CheckValue[CBC_BLOCK_SIZE] = - { 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b, - 0x43, 0x48, 0x55, 0x4b, 0x43, 0x48, 0x55, 0x4b }; - - //------------------------------------------------------------------------------------------ - // - - Result_t MD_to_WriterInfo(MXF::Identification*, WriterInfo&); - Result_t MD_to_CryptoInfo(MXF::CryptographicContext*, WriterInfo&, const Dictionary&); - Result_t EncryptFrameBuffer(const ASDCP::FrameBuffer&, ASDCP::FrameBuffer&, AESEncContext*); - Result_t DecryptFrameBuffer(const ASDCP::FrameBuffer&, ASDCP::FrameBuffer&, AESDecContext*); - - // - class KLReader : public ASDCP::KLVPacket - { - ASDCP_NO_COPY_CONSTRUCT(KLReader); - byte_t m_KeyBuf[SMPTE_UL_LENGTH*2]; - - public: - KLReader() {} - ~KLReader() {} - - inline byte_t* Key() { return m_KeyBuf; } - inline ui64_t Length() { return m_ValueLength; } - inline ui64_t KLLength() { return m_KLLength; } - - Result_t ReadKLFromFile(Kumu::FileReader& Reader); - }; - - // - class h__Reader - { - ASDCP_NO_COPY_CONSTRUCT(h__Reader); - h__Reader(); - - public: - const Dictionary* m_Dict; - Kumu::FileReader m_File; - OPAtomHeader m_HeaderPart; - Partition m_BodyPart; - OPAtomIndexFooter m_FooterPart; - ui64_t m_EssenceStart; - WriterInfo m_Info; - ASDCP::FrameBuffer m_CtFrameBuf; - Kumu::fpos_t m_LastPosition; - - h__Reader(const Dictionary&); - virtual ~h__Reader(); - - Result_t InitInfo(); - Result_t OpenMXFRead(const char* filename); - Result_t InitMXFIndex(); - - // positions file before reading - Result_t ReadEKLVFrame(ui32_t FrameNum, ASDCP::FrameBuffer& FrameBuf, - const byte_t* EssenceUL, AESDecContext* Ctx, HMACContext* HMAC); - - // reads from current position - Result_t ReadEKLVPacket(ui32_t FrameNum, ui32_t SequenceNum, ASDCP::FrameBuffer& FrameBuf, - const byte_t* EssenceUL, AESDecContext* Ctx, HMACContext* HMAC); - void Close(); - }; - - - // state machine for mxf writer - enum WriterState_t { - ST_BEGIN, // waiting for Open() - ST_INIT, // waiting for SetSourceStream() - ST_READY, // ready to write frames - ST_RUNNING, // one or more frames written - ST_FINAL, // index written, file closed - }; - - // implementation of h__WriterState class Goto_* methods -#define Goto_body(s1,s2) if ( m_State != (s1) ) \ - return RESULT_STATE; \ - m_State = (s2); \ - return RESULT_OK - // - class h__WriterState - { - ASDCP_NO_COPY_CONSTRUCT(h__WriterState); - - public: - WriterState_t m_State; - h__WriterState() : m_State(ST_BEGIN) {} - ~h__WriterState() {} - - inline bool Test_BEGIN() { return m_State == ST_BEGIN; } - inline bool Test_INIT() { return m_State == ST_INIT; } - inline bool Test_READY() { return m_State == ST_READY;} - inline bool Test_RUNNING() { return m_State == ST_RUNNING; } - inline bool Test_FINAL() { return m_State == ST_FINAL; } - inline Result_t Goto_INIT() { Goto_body(ST_BEGIN, ST_INIT); } - inline Result_t Goto_READY() { Goto_body(ST_INIT, ST_READY); } - inline Result_t Goto_RUNNING() { Goto_body(ST_READY, ST_RUNNING); } - inline Result_t Goto_FINAL() { Goto_body(ST_RUNNING, ST_FINAL); } - }; - - typedef std::list<ui64_t*> DurationElementList_t; - - // - class h__Writer - { - ASDCP_NO_COPY_CONSTRUCT(h__Writer); - h__Writer(); - - public: - const Dictionary* m_Dict; - Kumu::FileWriter m_File; - ui32_t m_HeaderSize; - OPAtomHeader m_HeaderPart; - Partition m_BodyPart; - OPAtomIndexFooter m_FooterPart; - ui64_t m_EssenceStart; - - MaterialPackage* m_MaterialPackage; - SourcePackage* m_FilePackage; - - FileDescriptor* m_EssenceDescriptor; - std::list<InterchangeObject*> m_EssenceSubDescriptorList; - - ui32_t m_FramesWritten; - ui64_t m_StreamOffset; - ASDCP::FrameBuffer m_CtFrameBuf; - h__WriterState m_State; - WriterInfo m_Info; - DurationElementList_t m_DurationUpdateList; - - h__Writer(const Dictionary&); - virtual ~h__Writer(); - - void InitHeader(); - void AddSourceClip(const MXF::Rational& EditRate, ui32_t TCFrameRate, - const std::string& TrackName, const UL& EssenceUL, - const UL& DataDefinition, const std::string& PackageLabel); - void AddDMSegment(const MXF::Rational& EditRate, ui32_t TCFrameRate, - const std::string& TrackName, const UL& DataDefinition, - const std::string& PackageLabel); - void AddEssenceDescriptor(const UL& WrappingUL); - Result_t CreateBodyPart(const MXF::Rational& EditRate, ui32_t BytesPerEditUnit = 0); - - // all the above for a single source clip - Result_t WriteMXFHeader(const std::string& PackageLabel, const UL& WrappingUL, - const std::string& TrackName, const UL& EssenceUL, - const UL& DataDefinition, const MXF::Rational& EditRate, - ui32_t TCFrameRate, ui32_t BytesPerEditUnit = 0); - - Result_t WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf, - const byte_t* EssenceUL, AESEncContext* Ctx, HMACContext* HMAC, std::string* hash = 0); - - Result_t FakeWriteEKLVPacket(int size); - - Result_t WriteMXFFooter(); - - }; - - - // helper class for calculating Integrity Packs, used by WriteEKLVPacket() below. - // - class IntegrityPack - { - public: - byte_t Data[klv_intpack_size]; - - IntegrityPack() { - memset(Data, 0, klv_intpack_size); - } - - ~IntegrityPack() {} - - Result_t CalcValues(const ASDCP::FrameBuffer&, byte_t* AssetID, ui32_t sequence, HMACContext* HMAC); - Result_t TestValues(const ASDCP::FrameBuffer&, byte_t* AssetID, ui32_t sequence, HMACContext* HMAC); - }; - - -} // namespace ASDCP - -#endif // _AS_DCP_INTERNAL_H_ - - -// -// end AS_DCP_internal.h -// diff --git a/asdcplib/src/Dict.cpp b/asdcplib/src/Dict.cpp deleted file mode 100755 index c046aa7..0000000 --- a/asdcplib/src/Dict.cpp +++ /dev/null @@ -1,321 +0,0 @@ -/* -Copyright (c) 2006-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file Dict.cpp - \version $Id: Dict.cpp,v 1.15 2012/02/08 02:59:21 jhurst Exp $ - \brief MXF dictionary -*/ - - -#include "KM_mutex.h" -#include "KM_log.h" -#include "KLV.h" -#include "MDD.cpp" - -//------------------------------------------------------------------------------------------ - -// The composite dict is the union of the SMPTE and Interop dicts -// -static ASDCP::Dictionary s_CompositeDict; -static Kumu::Mutex s_CompositeDictLock; -static bool s_CompositeDictInit = false; - -// -const ASDCP::Dictionary& -ASDCP::DefaultCompositeDict() -{ - if ( ! s_CompositeDictInit ) - { - Kumu::AutoMutex AL(s_CompositeDictLock); - - if ( ! s_CompositeDictInit ) - { - s_CompositeDict.Init(); - s_CompositeDictInit = true; - } - } - - return s_CompositeDict; -} - -// -// -static ASDCP::Dictionary s_InteropDict; -static Kumu::Mutex s_InteropDictLock; -static bool s_InteropDictInit = false; - -// -const ASDCP::Dictionary& -ASDCP::DefaultInteropDict() -{ - if ( ! s_InteropDictInit ) - { - Kumu::AutoMutex AL(s_InteropDictLock); - - if ( ! s_InteropDictInit ) - { - s_InteropDict.Init(); - - s_InteropDict.DeleteEntry(MDD_MXFInterop_OPAtom); - s_InteropDict.DeleteEntry(MDD_MXFInterop_CryptEssence); - s_InteropDict.DeleteEntry(MDD_MXFInterop_GenericDescriptor_SubDescriptors); - - s_InteropDict.AddEntry(s_MDD_Table[MDD_MXFInterop_OPAtom], MDD_OPAtom); - s_InteropDict.AddEntry(s_MDD_Table[MDD_MXFInterop_CryptEssence], MDD_CryptEssence); - s_InteropDict.AddEntry(s_MDD_Table[MDD_MXFInterop_GenericDescriptor_SubDescriptors], - MDD_GenericDescriptor_SubDescriptors); - - s_InteropDictInit = true; - } - } - - return s_InteropDict; -} - -// -// -static ASDCP::Dictionary s_SMPTEDict; -static Kumu::Mutex s_SMPTEDictLock; -static bool s_SMPTEDictInit = false; - -// -const ASDCP::Dictionary& -ASDCP::DefaultSMPTEDict() -{ - if ( ! s_SMPTEDictInit ) - { - Kumu::AutoMutex AL(s_SMPTEDictLock); - - if ( ! s_SMPTEDictInit ) - { - s_SMPTEDict.Init(); - - s_SMPTEDict.DeleteEntry(MDD_MXFInterop_OPAtom); - s_SMPTEDict.DeleteEntry(MDD_MXFInterop_CryptEssence); - s_SMPTEDict.DeleteEntry(MDD_MXFInterop_GenericDescriptor_SubDescriptors); - - s_SMPTEDictInit = true; - } - } - - return s_SMPTEDict; -} - -// -const ASDCP::MDDEntry& -ASDCP::MXFInterop_OPAtom_Entry() { - return s_MDD_Table[MDD_MXFInterop_OPAtom]; -} - -// -const ASDCP::MDDEntry& -ASDCP::SMPTE_390_OPAtom_Entry() { - return s_MDD_Table[MDD_OPAtom]; -} - - -//------------------------------------------------------------------------------------------ -// - -ASDCP::Dictionary::Dictionary() {} -ASDCP::Dictionary::~Dictionary() {} - -// -void -ASDCP::Dictionary::Init() -{ - m_md_lookup.clear(); - memset(m_MDD_Table, 0, sizeof(m_MDD_Table)); - - for ( ui32_t x = 0; x < (ui32_t)ASDCP::MDD_Max; x++ ) - { - if ( x == MDD_PartitionMetadata_IndexSID_DEPRECATED // 30 - || x == MDD_PartitionMetadata_BodySID_DEPRECATED // 32 - || x == MDD_PartitionMetadata_EssenceContainers_DEPRECATED // 34 - || x == MDD_IndexTableSegmentBase_IndexSID_DEPRECATED // 56 - || x == MDD_IndexTableSegmentBase_BodySID_DEPRECATED // 57 - || x == MDD_PartitionArray_RandomIndexMetadata_BodySID_DEPRECATED // 73 - || x == MDD_Preface_EssenceContainers_DEPRECATED // 85 - || x == MDD_EssenceContainerData_IndexSID_DEPRECATED // 103 - || x == MDD_EssenceContainerData_BodySID_DEPRECATED // 104 - || x == MDD_DMSegment_DataDefinition_DEPRECATED // 266 - || x == MDD_DMSegment_Duration_DEPRECATED // 267 - || x == MDD_PartitionMetadata_OperationalPattern_DEPRECATED // 33 - || x == MDD_Preface_OperationalPattern_DEPRECATED // 84 - || x == MDD_TimedTextResourceSubDescriptor_EssenceStreamID_DEPRECATED // 264 - ) - continue; - - AddEntry(s_MDD_Table[x], x); - } -} - -// -bool -ASDCP::Dictionary::AddEntry(const MDDEntry& Entry, ui32_t index) -{ - if ( index >= (ui32_t)MDD_Max ) - { - Kumu::DefaultLogSink().Warn("UL Dictionary: index exceeds maximum: %d\n", index); - return false; - } - - bool result = true; - // is this index already there? - std::map<ui32_t, ASDCP::UL>::iterator rii = m_md_rev_lookup.find(index); - - if ( rii != m_md_rev_lookup.end() ) - { - DeleteEntry(index); - result = false; - } - - UL TmpUL(Entry.ul); - -#ifdef MDD_AUTHORING_MODE - char buf[64]; - std::map<ASDCP::UL, ui32_t>::iterator ii = m_md_lookup.find(TmpUL); - if ( ii != m_md_lookup.end() ) - { - fprintf(stderr, "DUPE! %s (%02x, %02x) %s | (%02x, %02x) %s\n", - TmpUL.EncodeString(buf, 64), - m_MDD_Table[ii->second].tag.a, m_MDD_Table[ii->second].tag.b, - m_MDD_Table[ii->second].name, - Entry.tag.a, Entry.tag.b, Entry.name); - } -#endif - - m_md_lookup.insert(std::map<UL, ui32_t>::value_type(TmpUL, index)); - m_md_rev_lookup.insert(std::map<ui32_t, UL>::value_type(index, TmpUL)); - m_md_sym_lookup.insert(std::map<std::string, ui32_t>::value_type(Entry.name, index)); - m_MDD_Table[index] = Entry; - - return result; -} - -// -bool -ASDCP::Dictionary::DeleteEntry(ui32_t index) -{ - std::map<ui32_t, ASDCP::UL>::iterator rii = m_md_rev_lookup.find(index); - if ( rii != m_md_rev_lookup.end() ) - { - std::map<ASDCP::UL, ui32_t>::iterator ii = m_md_lookup.find(rii->second); - assert(ii != m_md_lookup.end()); - - MDDEntry NilEntry; - memset(&NilEntry, 0, sizeof(NilEntry)); - - m_md_lookup.erase(ii); - m_md_rev_lookup.erase(rii); - m_MDD_Table[index] = NilEntry; - return true; - } - - return false; -} - -// -const ASDCP::MDDEntry& -ASDCP::Dictionary::Type(MDD_t type_id) const -{ - assert(m_MDD_Table[0].name[0]); - std::map<ui32_t, ASDCP::UL>::const_iterator rii = m_md_rev_lookup.find(type_id); - - if ( rii == m_md_rev_lookup.end() ) - Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL type_id: %d\n", type_id); - - return m_MDD_Table[type_id]; -} - -// -const ASDCP::MDDEntry* -ASDCP::Dictionary::FindUL(const byte_t* ul_buf) const -{ - assert(m_MDD_Table[0].name[0]); - std::map<UL, ui32_t>::const_iterator i = m_md_lookup.find(UL(ul_buf)); - - if ( i == m_md_lookup.end() ) - { - byte_t tmp_ul[SMPTE_UL_LENGTH]; - memcpy(tmp_ul, ul_buf, SMPTE_UL_LENGTH); - tmp_ul[SMPTE_UL_LENGTH-1] = 0; - - i = m_md_lookup.find(UL(tmp_ul)); - - if ( i == m_md_lookup.end() ) - { - char buf[64]; - UL TmpUL(ul_buf); - Kumu::DefaultLogSink().Warn("UL Dictionary: unknown UL: %s\n", TmpUL.EncodeString(buf, 64)); - return 0; - } - } - - return &m_MDD_Table[i->second]; -} - -// -const ASDCP::MDDEntry* -ASDCP::Dictionary::FindSymbol(const std::string& str) const -{ - assert(m_MDD_Table[0].name[0]); - std::map<std::string, ui32_t>::const_iterator i = m_md_sym_lookup.find(str); - - if ( i == m_md_sym_lookup.end() ) - { - Kumu::DefaultLogSink().Warn("UL Dictionary: unknown symbol: %s\n", str.c_str()); - return 0; - } - - return &m_MDD_Table[i->second]; -} - -// -void -ASDCP::Dictionary::Dump(FILE* stream) const -{ - if ( stream == 0 ) - stream = stderr; - - MDD_t di = (MDD_t)0; - char str_buf[64]; - - while ( di < MDD_Max ) - { - if ( m_MDD_Table[di].name != 0 ) - { - UL TmpUL(m_MDD_Table[di].ul); - fprintf(stream, "%s: %s\n", TmpUL.EncodeString(str_buf, 64), m_MDD_Table[di].name); - } - - di = (MDD_t)(di + 1); - } -} - -// -// end Dict.cpp -// diff --git a/asdcplib/src/Index.cpp b/asdcplib/src/Index.cpp deleted file mode 100755 index 702b185..0000000 --- a/asdcplib/src/Index.cpp +++ /dev/null @@ -1,243 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file Index.cpp - \version $Id: Index.cpp,v 1.21 2012/02/03 19:49:56 jhurst Exp $ - \brief MXF index segment objects -*/ - -#include "MXF.h" -const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; - - -// -ASDCP::MXF::IndexTableSegment::IndexTableSegment(const Dictionary*& d) : - InterchangeObject(d), m_Dict(d), - IndexStartPosition(0), IndexDuration(0), EditUnitByteCount(0), - IndexSID(129), BodySID(1), SliceCount(0), PosTableCount(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_IndexTableSegment); -} - -// -ASDCP::MXF::IndexTableSegment::~IndexTableSegment() -{ -} - -// -void -ASDCP::MXF::IndexTableSegment::Copy(const IndexTableSegment& rhs) -{ - InterchangeObject::Copy(rhs); - IndexEditRate = rhs.IndexEditRate; - IndexStartPosition = rhs.IndexStartPosition; - IndexDuration = rhs.IndexDuration; - EditUnitByteCount = rhs.EditUnitByteCount; - IndexSID = rhs.IndexSID; - BodySID = rhs.BodySID; - SliceCount = rhs.SliceCount; - PosTableCount = rhs.PosTableCount; - DeltaEntryArray = rhs.DeltaEntryArray; - IndexEntryArray = rhs.IndexEntryArray; -} - -// -ASDCP::Result_t -ASDCP::MXF::IndexTableSegment::InitFromTLVSet(TLVReader& TLVSet) -{ - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(IndexTableSegmentBase, IndexEditRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(IndexTableSegmentBase, IndexStartPosition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(IndexTableSegmentBase, IndexDuration)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(IndexTableSegmentBase, EditUnitByteCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(IndexTableSegmentBase, IndexSID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(IndexTableSegmentBase, SliceCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(IndexTableSegmentBase, PosTableCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(IndexTableSegment, DeltaEntryArray)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(IndexTableSegment, IndexEntryArray)); - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::IndexTableSegment::WriteToTLVSet(TLVWriter& TLVSet) -{ - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(IndexTableSegmentBase, IndexEditRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(IndexTableSegmentBase, IndexStartPosition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(IndexTableSegmentBase, IndexDuration)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(IndexTableSegmentBase, EditUnitByteCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(IndexTableSegmentBase, IndexSID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(IndexTableSegmentBase, SliceCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(IndexTableSegmentBase, PosTableCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(IndexTableSegment, DeltaEntryArray)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(IndexTableSegment, IndexEntryArray)); - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::IndexTableSegment::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -ASDCP::MXF::IndexTableSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -// -void -ASDCP::MXF::IndexTableSegment::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " IndexEditRate = %s\n", IndexEditRate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " IndexStartPosition = %s\n", i64sz(IndexStartPosition, identbuf)); - fprintf(stream, " IndexDuration = %s\n", i64sz(IndexDuration, identbuf)); - fprintf(stream, " EditUnitByteCount = %u\n", EditUnitByteCount); - fprintf(stream, " IndexSID = %u\n", IndexSID); - fprintf(stream, " BodySID = %u\n", BodySID); - fprintf(stream, " SliceCount = %hu\n", SliceCount); - fprintf(stream, " PosTableCount = %hu\n", PosTableCount); - - fprintf(stream, " DeltaEntryArray:\n"); DeltaEntryArray.Dump(stream); - - if ( IndexEntryArray.size() < 100 ) - { - fprintf(stream, " IndexEntryArray:\n"); - IndexEntryArray.Dump(stream); - } - else - { - fprintf(stream, " IndexEntryArray: %zu entries\n", IndexEntryArray.size()); - } -} - -//------------------------------------------------------------------------------------------ -// - -// -const char* -ASDCP::MXF::IndexTableSegment::DeltaEntry::EncodeString(char* str_buf, ui32_t buf_len) const -{ - snprintf(str_buf, buf_len, "%3d %-3hu %-3u", PosTableIndex, Slice, ElementData); - return str_buf; -} - -// -bool -ASDCP::MXF::IndexTableSegment::DeltaEntry::Unarchive(Kumu::MemIOReader* Reader) -{ - if ( ! Reader->ReadUi8((ui8_t*)&PosTableIndex) ) return false; - if ( ! Reader->ReadUi8(&Slice) ) return false; - if ( ! Reader->ReadUi32BE(&ElementData) ) return false; - return true; -} - -// -bool -ASDCP::MXF::IndexTableSegment::DeltaEntry::Archive(Kumu::MemIOWriter* Writer) const -{ - if ( ! Writer->WriteUi8((ui8_t)PosTableIndex) ) return false; - if ( ! Writer->WriteUi8(Slice) ) return false; - if ( ! Writer->WriteUi32BE(ElementData) ) return false; - return true; -} - -//------------------------------------------------------------------------------------------ -// - -// Flags: -// Bit 7: Random Access -// Bit 6: Sequence Header -// Bit 5: forward prediction flag -// Bit 4: backward prediction flag -// e.g. -// 00== I frame (no prediction) -// 10== P frame(forward prediction from previous frame) -// 01== B frame (backward prediction from future frame) -// 11== B frame (forward & backward prediction) -// Bits 0-3: reserved [RP210 Flags to indicate coding of elements in this edit unit] - -// -const char* -ASDCP::MXF::IndexTableSegment::IndexEntry::EncodeString(char* str_buf, ui32_t buf_len) const -{ - char intbuf[IntBufferLen]; - char txt_flags[6]; - - txt_flags[0] = ( (Flags & 0x80) != 0 ) ? 'r' : ' '; - txt_flags[1] = ( (Flags & 0x40) != 0 ) ? 's' : ' '; - txt_flags[2] = ( (Flags & 0x20) != 0 ) ? 'f' : ' '; - txt_flags[3] = ( (Flags & 0x10) != 0 ) ? 'b' : ' '; - txt_flags[4] = ( (Flags & 0x0f) == 3 ) ? 'B' : ( (Flags & 0x0f) == 2 ) ? 'P' : 'I'; - txt_flags[5] = 0; - - snprintf(str_buf, buf_len, "%3i %-3hu %s %s", - TemporalOffset, KeyFrameOffset, txt_flags, - i64sz(StreamOffset, intbuf)); - - return str_buf; -} - -// -bool -ASDCP::MXF::IndexTableSegment::IndexEntry::Unarchive(Kumu::MemIOReader* Reader) -{ - if ( ! Reader->ReadUi8((ui8_t*)&TemporalOffset) ) return false; - if ( ! Reader->ReadUi8((ui8_t*)&KeyFrameOffset) ) return false; - if ( ! Reader->ReadUi8(&Flags) ) return false; - if ( ! Reader->ReadUi64BE(&StreamOffset) ) return false; - return true; -} - -// -bool -ASDCP::MXF::IndexTableSegment::IndexEntry::Archive(Kumu::MemIOWriter* Writer) const -{ - if ( ! Writer->WriteUi8((ui8_t)TemporalOffset) ) return false; - if ( ! Writer->WriteUi8((ui8_t)KeyFrameOffset) ) return false; - if ( ! Writer->WriteUi8(Flags) ) return false; - if ( ! Writer->WriteUi64BE(StreamOffset) ) return false; - return true; -} - - -// -// end Index.cpp -// - diff --git a/asdcplib/src/JP2K.cpp b/asdcplib/src/JP2K.cpp deleted file mode 100755 index 4cc0e50..0000000 --- a/asdcplib/src/JP2K.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file JP2K.cpp - \version $Id: JP2K.cpp,v 1.8 2010/06/17 03:33:17 jhurst Exp $ - \brief JPEG 2000 parser implementation - - This is not a complete implementation of all things JP2K. There is just enough here to - support parsing picture metadata from a codestream header. -*/ - -#include <JP2K.h> -#include <KM_log.h> -using Kumu::DefaultLogSink; - - -// when indexed with the second byte of a marker code, this table will procuce one of -// two values: -// 0 - the marker is a standalone marker -// 1 - the marker designates a marker segment -// -const byte_t MarkerSegmentMap[] = - { - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - /* 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - /* 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1 - /* 2 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2 - /* 3 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3 - /* 4 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4 - /* 5 */ 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, // 5 - /* 6 */ 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6 - /* 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7 - /* 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8 - /* 9 */ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9 - /* a */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // a - /* b */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // b - /* c */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // c - /* d */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // d - /* e */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // e - /* f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // f - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - }; - - -// -ASDCP::Result_t -ASDCP::JP2K::GetNextMarker(const byte_t** buf, JP2K::Marker& Marker) -{ - assert((buf != 0) && (*buf != 0 )); - - if ( **buf != 0xff ) - return ASDCP::RESULT_FAIL; - - Marker.m_IsSegment = (MarkerSegmentMap[*(++(*buf))] == 1); - Marker.m_Type = (Marker_t)(0xff00 | *(*buf)++); - - if ( Marker.m_IsSegment ) - { - Marker.m_DataSize = *(*buf)++ << 8; - Marker.m_DataSize |= *(*buf)++; - Marker.m_DataSize -= 2; - Marker.m_Data = *buf; - *buf += Marker.m_DataSize; - } - - - if ( Marker.m_DataSize != 0 && Marker.m_DataSize < 3 ) - { - DefaultLogSink().Error("Illegal data size: %u\n", Marker.m_DataSize); - return ASDCP::RESULT_FAIL; - } - - return ASDCP::RESULT_OK; -} - - -//------------------------------------------------------------------------------------------------------- -// - -// -void -ASDCP::JP2K::Accessor::SIZ::ReadComponent(ui32_t index, ASDCP::JP2K::ImageComponent_t& IC) -{ - assert ( index < Csize() ); - const byte_t* p = m_MarkerData + 36 + (index * 3); - IC.Ssize = *p++; - IC.XRsize = *p++; - IC.YRsize = *p; -} - -// -void -ASDCP::JP2K::Accessor::SIZ::Dump(FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "SIZ: \n"); - fprintf(stream, " Rsize: %hu\n", Rsize()); - fprintf(stream, " Xsize: %u\n", Xsize()); - fprintf(stream, " Ysize: %u\n", Ysize()); - fprintf(stream, " XOsize: %u\n", XOsize()); - fprintf(stream, " YOsize: %u\n", YOsize()); - fprintf(stream, " XTsize: %u\n", XTsize()); - fprintf(stream, " YTsize: %u\n", YTsize()); - fprintf(stream, "XTOsize: %u\n", XTOsize()); - fprintf(stream, "YTOsize: %u\n", YTOsize()); - fprintf(stream, " Csize: %u\n", Csize()); - - if ( Csize() > 0 ) - { - fprintf(stream, "Components\n"); - - for ( ui32_t i = 0; i < Csize(); i++ ) - { - ImageComponent_t TmpComp; - ReadComponent(i, TmpComp); - fprintf(stream, "%u: ", i); - fprintf(stream, "%u, %u, %u\n", TmpComp.Ssize, TmpComp.XRsize, TmpComp.YRsize); - } - } -} - -// -void -ASDCP::JP2K::Accessor::COM::Dump(FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - if ( IsText() ) - { - char* t_str = (char*)malloc(CommentSize() + 1); - assert( t_str != 0 ); - ui32_t cs = CommentSize(); - memcpy(t_str, CommentData(), cs); - t_str[cs] = 0; - fprintf(stream, "COM:%s\n", t_str); - } - else - { - fprintf(stream, "COM:\n"); - Kumu::hexdump(CommentData(), CommentSize(), stream); - } -} - - -//------------------------------------------------------------------------------------------------------- -// - - -// -void -ASDCP::JP2K::Marker::Dump(FILE* stream) const -{ - if ( stream == 0 ) - stream = stderr; - - fprintf(stream, "Marker%s 0x%04x: %s", (m_IsSegment ? " segment" : ""), m_Type, GetMarkerString(m_Type)); - - if ( m_IsSegment ) - fprintf(stream, ", 0x%0x bytes", m_DataSize); - - fputc('\n', stream); -} - -// -const char* -ASDCP::JP2K::GetMarkerString(Marker_t m) -{ - switch ( m ) - { - case MRK_NIL: return "NIL"; break; - case MRK_SOC: return "SOC: Start of codestream"; break; - case MRK_SOT: return "SOT: Start of tile-part"; break; - case MRK_SOD: return "SOD: Start of data"; break; - case MRK_EOC: return "EOC: End of codestream"; break; - case MRK_SIZ: return "SIZ: Image and tile size"; break; - case MRK_COD: return "COD: Coding style default"; break; - case MRK_COC: return "COC: Coding style component"; break; - case MRK_RGN: return "RGN: Region of interest"; break; - case MRK_QCD: return "QCD: Quantization default"; break; - case MRK_QCC: return "QCC: Quantization component"; break; - case MRK_POC: return "POC: Progression order change"; break; - case MRK_TLM: return "TLM: Tile-part lengths"; break; - case MRK_PLM: return "PLM: Packet length, main header"; break; - case MRK_PLT: return "PLT: Packet length, tile-part header"; break; - case MRK_PPM: return "PPM: Packed packet headers, main header"; break; - case MRK_PPT: return "PPT: Packed packet headers, tile-part header"; break; - case MRK_SOP: return "SOP: Start of packet"; break; - case MRK_EPH: return "EPH: End of packet header"; break; - case MRK_CRG: return "CRG: Component registration"; break; - case MRK_COM: return "COM: Comment"; break; - } - - return "Unknown marker code"; -} - -// -// end JP2K.cpp -// diff --git a/asdcplib/src/JP2K.h b/asdcplib/src/JP2K.h deleted file mode 100755 index d30dbad..0000000 --- a/asdcplib/src/JP2K.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file JP2K.h - \version $Id: JP2K.h,v 1.4 2009/04/09 19:24:14 msheby Exp $ - \brief JPEG 2000 constants and data structures - - This is not a complete enumeration of all things JP2K. There is just enough here to - support parsing picture metadata from a codestream header. -*/ - -#ifndef _JP2K_H_ -#define _JP2K_H_ - -// AS_DCP.h is included only for it's base type definitions. -#include <KM_platform.h> -#include <KM_util.h> -#include <AS_DCP.h> -#include <assert.h> - -namespace ASDCP -{ -namespace JP2K -{ - const byte_t Magic[] = {0xff, 0x4f, 0xff}; - - enum Marker_t - { - MRK_NIL = 0, - MRK_SOC = 0xff4f, // Start of codestream - MRK_SOT = 0xff90, // Start of tile-part - MRK_SOD = 0xff93, // Start of data - MRK_EOC = 0xffd9, // End of codestream - MRK_SIZ = 0xff51, // Image and tile size - MRK_COD = 0xff52, // Coding style default - MRK_COC = 0xff53, // Coding style component - MRK_RGN = 0xff5e, // Region of interest - MRK_QCD = 0xff5c, // Quantization default - MRK_QCC = 0xff5d, // Quantization component - MRK_POC = 0xff5f, // Progression order change - MRK_TLM = 0xff55, // Tile-part lengths - MRK_PLM = 0xff57, // Packet length, main header - MRK_PLT = 0xff58, // Packet length, tile-part header - MRK_PPM = 0xff60, // Packed packet headers, main header - MRK_PPT = 0xff61, // Packed packet headers, tile-part header - MRK_SOP = 0xff91, // Start of packet - MRK_EPH = 0xff92, // End of packet header - MRK_CRG = 0xff63, // Component registration - MRK_COM = 0xff64, // Comment - }; - - const char* GetMarkerString(Marker_t m); - - // - class Marker - { - KM_NO_COPY_CONSTRUCT(Marker); - - public: - Marker_t m_Type; - bool m_IsSegment; - ui32_t m_DataSize; - const byte_t* m_Data; - - Marker() : m_Type(MRK_NIL), m_IsSegment(false), m_DataSize(0), m_Data(0) {} - ~Marker() {} - - void Dump(FILE* stream = 0) const; - }; - - // - ASDCP::Result_t GetNextMarker(const byte_t**, Marker&); - - // accessor objects for marker segments - namespace Accessor - { - // image size - class SIZ - { - const byte_t* m_MarkerData; - KM_NO_COPY_CONSTRUCT(SIZ); - SIZ(); - - public: - SIZ(const Marker& M) - { - assert(M.m_Type == MRK_SIZ); - m_MarkerData = M.m_Data; - } - - ~SIZ() {} - - inline ui16_t Rsize() { return KM_i16_BE(*(ui16_t*)m_MarkerData); } - inline ui32_t Xsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 2)); } - inline ui32_t Ysize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 6)); } - inline ui32_t XOsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 10)); } - inline ui32_t YOsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 14)); } - inline ui32_t XTsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 18)); } - inline ui32_t YTsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 22)); } - inline ui32_t XTOsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 26)); } - inline ui32_t YTOsize() { return KM_i32_BE(*(ui32_t*)(m_MarkerData + 30)); } - inline ui16_t Csize() { return KM_i16_BE(*(ui16_t*)(m_MarkerData + 34)); } - void ReadComponent(ui32_t index, ImageComponent_t& IC); - void Dump(FILE* stream = 0); - }; - - // a comment - class COM - { - bool m_IsText; - const byte_t* m_MarkerData; - ui32_t m_DataSize; - - KM_NO_COPY_CONSTRUCT(COM); - COM(); - - public: - COM(const Marker& M) - { - assert(M.m_Type == MRK_COM); - m_IsText = M.m_Data[1] == 1; - m_MarkerData = M.m_Data + 2; - m_DataSize = M.m_DataSize - 2; - } - - ~COM() {} - - inline bool IsText() { return m_IsText; } - inline const byte_t* CommentData() { return m_MarkerData; } - inline ui32_t CommentSize() { return m_DataSize; } - void Dump(FILE* stream = 0); - }; - } // namespace Accessor -} // namespace JP2K -} // namespace ASDCP - -#endif // _JP2K_H_ - -// -// end JP2K.h -// diff --git a/asdcplib/src/JP2K_Codestream_Parser.cpp b/asdcplib/src/JP2K_Codestream_Parser.cpp deleted file mode 100755 index 5ab7a32..0000000 --- a/asdcplib/src/JP2K_Codestream_Parser.cpp +++ /dev/null @@ -1,270 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file Codestream_Parser.cpp - \version $Id: JP2K_Codestream_Parser.cpp,v 1.7 2009/04/09 19:16:49 msheby Exp $ - \brief AS-DCP library, JPEG 2000 codestream essence reader implementation -*/ - -#include <KM_fileio.h> -#include <AS_DCP.h> -#include <JP2K.h> -#include <assert.h> -#include <KM_log.h> -using Kumu::DefaultLogSink; - -//------------------------------------------------------------------------------------------ - -class ASDCP::JP2K::CodestreamParser::h__CodestreamParser -{ - ASDCP_NO_COPY_CONSTRUCT(h__CodestreamParser); - -public: - PictureDescriptor m_PDesc; - Kumu::FileReader m_File; - - h__CodestreamParser() - { - memset(&m_PDesc, 0, sizeof(m_PDesc)); - m_PDesc.EditRate = Rational(24,1); - m_PDesc.SampleRate = m_PDesc.EditRate; - } - - ~h__CodestreamParser() {} - - Result_t OpenReadFrame(const char* filename, FrameBuffer& FB) - { - ASDCP_TEST_NULL_STR(filename); - m_File.Close(); - Result_t result = m_File.OpenRead(filename); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::fsize_t file_size = m_File.Size(); - - if ( FB.Capacity() < file_size ) - { - DefaultLogSink().Error("FrameBuf.Capacity: %u frame length: %u\n", FB.Capacity(), (ui32_t)file_size); - return RESULT_SMALLBUF; - } - } - - ui32_t read_count; - - if ( ASDCP_SUCCESS(result) ) - result = m_File.Read(FB.Data(), FB.Capacity(), &read_count); - - if ( ASDCP_SUCCESS(result) ) - FB.Size(read_count); - - if ( ASDCP_SUCCESS(result) ) - { - byte_t start_of_data = 0; // out param - result = ParseMetadataIntoDesc(FB, m_PDesc, &start_of_data); - - if ( ASDCP_SUCCESS(result) ) - FB.PlaintextOffset(start_of_data); - } - - return result; - } - - Result_t OpenReadFrame(const unsigned char * data, unsigned int size, FrameBuffer& FB) - { - if ( FB.Capacity() < size ) - { - DefaultLogSink().Error("FrameBuf.Capacity: %u frame length: %u\n", FB.Capacity(), (ui32_t) size); - return RESULT_SMALLBUF; - } - - memcpy (FB.Data(), data, size); - FB.Size(size); - - byte_t start_of_data = 0; // out param - const Result_t result = ParseMetadataIntoDesc(FB, m_PDesc, &start_of_data); - - if ( ASDCP_SUCCESS(result) ) - FB.PlaintextOffset(start_of_data); - - return result; - } -}; - -ASDCP::Result_t -ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDesc, byte_t* start_of_data) -{ - Result_t result = RESULT_OK; - Marker NextMarker; - ui32_t i; - const byte_t* p = FB.RoData(); - const byte_t* end_p = p + FB.Size(); - - while ( p < end_p && ASDCP_SUCCESS(result) ) - { - result = GetNextMarker(&p, NextMarker); - - if ( ASDCP_FAILURE(result) ) - { - result = RESULT_RAW_ESS; - break; - } - - switch ( NextMarker.m_Type ) - { - case MRK_SOD: - if ( start_of_data != 0 ) - *start_of_data = p - FB.RoData(); - - p = end_p; - break; - - case MRK_SIZ: - { - Accessor::SIZ SIZ_(NextMarker); - PDesc.StoredWidth = SIZ_.Xsize(); - PDesc.StoredHeight = SIZ_.Ysize(); - PDesc.AspectRatio = Rational(SIZ_.Xsize(), SIZ_.Ysize()); - PDesc.Rsize = SIZ_.Rsize(); - PDesc.Xsize = SIZ_.Xsize(); - PDesc.Ysize = SIZ_.Ysize(); - PDesc.XOsize = SIZ_.XOsize(); - PDesc.YOsize = SIZ_.YOsize(); - PDesc.XTsize = SIZ_.XTsize(); - PDesc.YTsize = SIZ_.YTsize(); - PDesc.XTOsize = SIZ_.XTOsize(); - PDesc.YTOsize = SIZ_.YTOsize(); - PDesc.Csize = SIZ_.Csize(); - - if ( PDesc.Csize != 3 ) - { - DefaultLogSink().Error("Unexpected number of components: %u\n", PDesc.Csize); - return RESULT_RAW_FORMAT; - } - - for ( i = 0; i < PDesc.Csize; i++ ) - SIZ_.ReadComponent(i, PDesc.ImageComponents[i]); - } - break; - - case MRK_COD: - memset(&PDesc.CodingStyleDefault, 0, sizeof(CodingStyleDefault_t)); - - if ( NextMarker.m_DataSize > sizeof(CodingStyleDefault_t) ) - { - DefaultLogSink().Error("Unexpectedly large CodingStyle data: %u\n", NextMarker.m_DataSize); - return RESULT_RAW_FORMAT; - } - - memcpy(&PDesc.CodingStyleDefault, NextMarker.m_Data, NextMarker.m_DataSize); - break; - - case MRK_QCD: - memset(&PDesc.QuantizationDefault, 0, sizeof(QuantizationDefault_t)); - - if ( NextMarker.m_DataSize < 16 ) - { - DefaultLogSink().Error("No quantization signaled\n"); - return RESULT_RAW_FORMAT; - } - - if ( NextMarker.m_DataSize > MaxDefaults ) - { - DefaultLogSink().Error("Quantization Default length exceeds maximum %d\n", NextMarker.m_DataSize); - return RESULT_RAW_FORMAT; - } - - memcpy(&PDesc.QuantizationDefault, NextMarker.m_Data, NextMarker.m_DataSize); - PDesc.QuantizationDefault.SPqcdLength = NextMarker.m_DataSize - 1; - break; - - case MRK_NIL: - case MRK_SOC: - case MRK_SOT: - case MRK_EOC: - case MRK_COC: - case MRK_RGN: - case MRK_QCC: - case MRK_POC: - case MRK_TLM: - case MRK_PLM: - case MRK_PLT: - case MRK_PPM: - case MRK_PPT: - case MRK_SOP: - case MRK_EPH: - case MRK_CRG: - case MRK_COM: - /* Keep gcc quiet */ - break; - } - } - - return result; -} - -//------------------------------------------------------------------------------------------ - -ASDCP::JP2K::CodestreamParser::CodestreamParser() -{ -} - -ASDCP::JP2K::CodestreamParser::~CodestreamParser() -{ -} - -// Opens the stream for reading, parses enough data to provide a complete -// set of stream metadata for the MXFWriter below. -ASDCP::Result_t -ASDCP::JP2K::CodestreamParser::OpenReadFrame(const char* filename, FrameBuffer& FB) const -{ - const_cast<ASDCP::JP2K::CodestreamParser*>(this)->m_Parser = new h__CodestreamParser; - return m_Parser->OpenReadFrame(filename, FB); -} - -// Opens the stream for reading, parses enough data to provide a complete -// set of stream metadata for the MXFWriter below. -ASDCP::Result_t -ASDCP::JP2K::CodestreamParser::OpenReadFrame(const unsigned char* data, unsigned int size, FrameBuffer& FB) const -{ - const_cast<ASDCP::JP2K::CodestreamParser*>(this)->m_Parser = new h__CodestreamParser; - return m_Parser->OpenReadFrame(data, size, FB); -} - -// -ASDCP::Result_t -ASDCP::JP2K::CodestreamParser::FillPictureDescriptor(PictureDescriptor& PDesc) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - PDesc = m_Parser->m_PDesc; - return RESULT_OK; -} - - -// -// end Codestream_Parser.cpp -// diff --git a/asdcplib/src/JP2K_Sequence_Parser.cpp b/asdcplib/src/JP2K_Sequence_Parser.cpp deleted file mode 100755 index 3b422d4..0000000 --- a/asdcplib/src/JP2K_Sequence_Parser.cpp +++ /dev/null @@ -1,392 +0,0 @@ -/* -Copyright (c) 2004-2011, John Hurst -All rights reserved. - -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. -*/ -/*! \file JP2K_Sequence_Parser.cpp - \version $Id: JP2K_Sequence_Parser.cpp,v 1.8 2011/05/13 01:50:19 jhurst Exp $ - \brief AS-DCP library, JPEG 2000 codestream essence reader implementation -*/ - -#include <AS_DCP.h> -#include <KM_fileio.h> -#include <KM_log.h> -#include <list> -#include <string> -#include <algorithm> -#include <string.h> -#include <assert.h> - -using namespace ASDCP; - - -//------------------------------------------------------------------------------------------ - -class FileList : public std::list<std::string> -{ - std::string m_DirName; - -public: - FileList() {} - ~FileList() {} - - const FileList& operator=(const std::list<std::string>& pathlist) { - std::list<std::string>::const_iterator i; - for ( i = pathlist.begin(); i != pathlist.end(); i++ ) - push_back(*i); - return *this; - } - - // - Result_t InitFromDirectory(const char* path) - { - char next_file[Kumu::MaxFilePath]; - Kumu::DirScanner Scanner; - - Result_t result = Scanner.Open(path); - - if ( ASDCP_SUCCESS(result) ) - { - m_DirName = path; - - while ( ASDCP_SUCCESS(Scanner.GetNext(next_file)) ) - { - if ( next_file[0] == '.' ) // no hidden files or internal links - continue; - - std::string Str(m_DirName); - Str += "/"; - Str += next_file; - - if ( ! Kumu::PathIsDirectory(Str) ) - push_back(Str); - } - - sort(); - } - - return result; - } -}; - -//------------------------------------------------------------------------------------------ - -class ASDCP::JP2K::SequenceParser::h__SequenceParser -{ - ui32_t m_FramesRead; - Rational m_PictureRate; - FileList m_FileList; - FileList::iterator m_CurrentFile; - CodestreamParser m_Parser; - bool m_Pedantic; - - Result_t OpenRead(); - - ASDCP_NO_COPY_CONSTRUCT(h__SequenceParser); - -public: - PictureDescriptor m_PDesc; - - h__SequenceParser() : m_FramesRead(0), m_Pedantic(false) - { - memset(&m_PDesc, 0, sizeof(m_PDesc)); - m_PDesc.EditRate = Rational(24,1); - } - - ~h__SequenceParser() - { - Close(); - } - - Result_t OpenRead(const char* filename, bool pedantic); - Result_t OpenRead(const std::list<std::string>& file_list, bool pedantic); - void Close() {} - - Result_t Reset() - { - m_FramesRead = 0; - m_CurrentFile = m_FileList.begin(); - return RESULT_OK; - } - - Result_t ReadFrame(FrameBuffer&); -}; - - -// -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::h__SequenceParser::OpenRead() -{ - if ( m_FileList.empty() ) - return RESULT_ENDOFFILE; - - m_CurrentFile = m_FileList.begin(); - CodestreamParser Parser; - FrameBuffer TmpBuffer; - - Kumu::fsize_t file_size = Kumu::FileSize((*m_CurrentFile).c_str()); - - if ( file_size == 0 ) - return RESULT_NOT_FOUND; - - assert(file_size <= 0xFFFFFFFFL); - Result_t result = TmpBuffer.Capacity((ui32_t) file_size); - - if ( ASDCP_SUCCESS(result) ) - result = Parser.OpenReadFrame((*m_CurrentFile).c_str(), TmpBuffer); - - if ( ASDCP_SUCCESS(result) ) - result = Parser.FillPictureDescriptor(m_PDesc); - - // how big is it? - if ( ASDCP_SUCCESS(result) ) - m_PDesc.ContainerDuration = m_FileList.size(); - - return result; -} - -// -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::h__SequenceParser::OpenRead(const char* filename, bool pedantic) -{ - ASDCP_TEST_NULL_STR(filename); - m_Pedantic = pedantic; - - Result_t result = m_FileList.InitFromDirectory(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OpenRead(); - - return result; -} - - -// -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::h__SequenceParser::OpenRead(const std::list<std::string>& file_list, bool pedantic) -{ - m_Pedantic = pedantic; - m_FileList = file_list; - return OpenRead(); -} - - -// -bool -operator==(const ASDCP::JP2K::ImageComponent_t& lhs, const ASDCP::JP2K::ImageComponent_t& rhs) -{ - if ( lhs.Ssize != rhs.Ssize ) return false; - if ( lhs.XRsize != rhs.XRsize ) return false; - if ( lhs.YRsize != rhs.YRsize ) return false; - return true; -} - -// -bool -operator==(const ASDCP::JP2K::QuantizationDefault_t& lhs, const ASDCP::JP2K::QuantizationDefault_t& rhs) -{ - if ( lhs.Sqcd != rhs.Sqcd ) return false; - if ( lhs.SPqcdLength != rhs.SPqcdLength ) return false; - - for ( ui32_t i = 0; i < JP2K::MaxDefaults; i++ ) - { - if ( lhs.SPqcd[i] != rhs.SPqcd[i] ) - return false; - } - - return true; -} - -// -bool -operator==(const ASDCP::JP2K::CodingStyleDefault_t& lhs, const ASDCP::JP2K::CodingStyleDefault_t& rhs) -{ - if ( lhs.Scod != rhs.Scod ) return false; - - // SGcod - if ( lhs.SGcod.ProgressionOrder != rhs.SGcod.ProgressionOrder ) return false; - if ( lhs.SGcod.MultiCompTransform != rhs.SGcod.MultiCompTransform ) return false; - - for ( ui32_t i = 0; i < sizeof(ui16_t); i++ ) - { - if ( lhs.SGcod.NumberOfLayers[i] != lhs.SGcod.NumberOfLayers[i] ) - return false; - } - - // SPcod - if ( lhs.SPcod.DecompositionLevels != rhs.SPcod.DecompositionLevels ) return false; - if ( lhs.SPcod.CodeblockWidth != rhs.SPcod.CodeblockWidth ) return false; - if ( lhs.SPcod.CodeblockHeight != rhs.SPcod.CodeblockHeight ) return false; - if ( lhs.SPcod.CodeblockStyle != rhs.SPcod.CodeblockStyle ) return false; - if ( lhs.SPcod.Transformation != rhs.SPcod.Transformation ) return false; - - for ( ui32_t i = 0; i < JP2K::MaxPrecincts; i++ ) - { - if ( lhs.SPcod.PrecinctSize[i] != rhs.SPcod.PrecinctSize[i] ) - return false; - } - - return true; -} - -// -bool -operator==(const ASDCP::JP2K::PictureDescriptor& lhs, const ASDCP::JP2K::PictureDescriptor& rhs) -{ - if ( lhs.EditRate != rhs.EditRate ) return false; - // if ( lhs.ContainerDuration != rhs.ContainerDuration ) return false; - if ( lhs.SampleRate != rhs.SampleRate ) return false; - if ( lhs.StoredWidth != rhs.StoredWidth ) return false; - if ( lhs.StoredHeight != rhs.StoredHeight ) return false; - if ( lhs.AspectRatio != rhs.AspectRatio ) return false; - if ( lhs.Rsize != rhs.Rsize ) return false; - if ( lhs.Xsize != rhs.Xsize ) return false; - if ( lhs.Ysize != rhs.Ysize ) return false; - if ( lhs.XOsize != rhs.XOsize ) return false; - if ( lhs.YOsize != rhs.YOsize ) return false; - if ( lhs.XTsize != rhs.XTsize ) return false; - if ( lhs.YTsize != rhs.YTsize ) return false; - if ( lhs.XTOsize != rhs.XTOsize ) return false; - if ( lhs.YTOsize != rhs.YTOsize ) return false; - if ( lhs.Csize != rhs.Csize ) return false; - if ( ! ( lhs.CodingStyleDefault == rhs.CodingStyleDefault ) ) return false; - if ( ! ( lhs.QuantizationDefault == rhs.QuantizationDefault ) ) return false; - - for ( ui32_t i = 0; i < JP2K::MaxComponents; i++ ) - { - if ( ! ( lhs.ImageComponents[i] == rhs.ImageComponents[i] ) ) - return false; - } - - return true; -} - -// -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::h__SequenceParser::ReadFrame(FrameBuffer& FB) -{ - if ( m_CurrentFile == m_FileList.end() ) - return RESULT_ENDOFFILE; - - // open the file - Result_t result = m_Parser.OpenReadFrame((*m_CurrentFile).c_str(), FB); - - if ( ASDCP_SUCCESS(result) && m_Pedantic ) - { - PictureDescriptor PDesc; - result = m_Parser.FillPictureDescriptor(PDesc); - - if ( ASDCP_SUCCESS(result) && ! ( m_PDesc == PDesc ) ) - { - Kumu::DefaultLogSink().Error("JPEG-2000 codestream parameters do not match at frame %d\n", m_FramesRead + 1); - result = RESULT_RAW_FORMAT; - } - } - - if ( ASDCP_SUCCESS(result) ) - { - FB.FrameNumber(m_FramesRead++); - m_CurrentFile++; - } - - return result; -} - - -//------------------------------------------------------------------------------------------ - -ASDCP::JP2K::SequenceParser::SequenceParser() -{ -} - -ASDCP::JP2K::SequenceParser::~SequenceParser() -{ -} - -// Opens the stream for reading, parses enough data to provide a complete -// set of stream metadata for the MXFWriter below. -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::OpenRead(const char* filename, bool pedantic) const -{ - const_cast<ASDCP::JP2K::SequenceParser*>(this)->m_Parser = new h__SequenceParser; - - Result_t result = m_Parser->OpenRead(filename, pedantic); - - if ( ASDCP_FAILURE(result) ) - const_cast<ASDCP::JP2K::SequenceParser*>(this)->m_Parser.release(); - - return result; -} - -// -Result_t -ASDCP::JP2K::SequenceParser::OpenRead(const std::list<std::string>& file_list, bool pedantic) const -{ - const_cast<ASDCP::JP2K::SequenceParser*>(this)->m_Parser = new h__SequenceParser; - - Result_t result = m_Parser->OpenRead(file_list, pedantic); - - if ( ASDCP_FAILURE(result) ) - const_cast<ASDCP::JP2K::SequenceParser*>(this)->m_Parser.release(); - - return result; -} - - -// Rewinds the stream to the beginning. -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::Reset() const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->Reset(); -} - -// Places a frame of data in the frame buffer. Fails if the buffer is too small -// or the stream is empty. -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::ReadFrame(FrameBuffer& FB) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->ReadFrame(FB); -} - -// -ASDCP::Result_t -ASDCP::JP2K::SequenceParser::FillPictureDescriptor(PictureDescriptor& PDesc) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - PDesc = m_Parser->m_PDesc; - return RESULT_OK; -} - - -// -// end JP2K_Sequence_Parser.cpp -// diff --git a/asdcplib/src/KLV.cpp b/asdcplib/src/KLV.cpp deleted file mode 100755 index 46a8a7a..0000000 --- a/asdcplib/src/KLV.cpp +++ /dev/null @@ -1,319 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file KLV.cpp - \version $Id: KLV.cpp,v 1.13 2012/02/03 19:49:56 jhurst Exp $ - \brief KLV objects -*/ - -#include "KLV.h" -#include <KM_log.h> -using Kumu::DefaultLogSink; - - -// This is how much we read when we're reading from a file and we don't know -// how long the packet is. This gives us the K (16 bytes) and L (4-9 bytes) -// and the remaining bytes for an even read (tmp_read_size % 16 == 0) -const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; -const ui32_t tmp_read_size = 32; - -//------------------------------------------------------------------------------------------ -// - -// -ASDCP::Result_t -ASDCP::KLVPacket::InitFromBuffer(const byte_t* buf, ui32_t buf_len, const UL& label) -{ - Result_t result = KLVPacket::InitFromBuffer(buf, buf_len); - - if ( ASDCP_SUCCESS(result) ) - result = ( UL(m_KeyStart) == label ) ? RESULT_OK : RESULT_FAIL; - - return result; -} - -// -ASDCP::UL -ASDCP::KLVPacket::GetUL() -{ - if ( m_KeyStart != 0 ) - return UL(m_KeyStart); - - return m_UL; -} - -// -bool -ASDCP::KLVPacket::SetUL(const UL& new_ul) -{ - if ( m_KeyStart != 0 ) - return false; - - m_UL = new_ul; - return true; -} - -// -ASDCP::Result_t -ASDCP::KLVPacket::InitFromBuffer(const byte_t* buf, ui32_t buf_len) -{ - m_KeyStart = m_ValueStart = 0; - m_KLLength = m_ValueLength = 0; - - if ( memcmp(buf, SMPTE_UL_START, 4) != 0 ) - { - DefaultLogSink().Error("Unexpected UL preamble: %02x.%02x.%02x.%02x\n", - buf[0], buf[1], buf[2], buf[3]); - return RESULT_FAIL; - } - - ui32_t ber_len = Kumu::BER_length(buf + SMPTE_UL_LENGTH); - - if ( ber_len > ( buf_len - SMPTE_UL_LENGTH ) ) - { - DefaultLogSink().Error("BER encoding length exceeds buffer size\n"); - return RESULT_FAIL; - } - - if ( ber_len == 0 ) - { - DefaultLogSink().Error("KLV format error, zero BER length not allowed\n"); - return RESULT_FAIL; - } - - ui64_t tmp_size; - if ( ! Kumu::read_BER(buf + SMPTE_UL_LENGTH, &tmp_size) ) - return RESULT_FAIL; - - assert (tmp_size <= 0xFFFFFFFFL); - m_ValueLength = (ui32_t) tmp_size; - m_KLLength = SMPTE_UL_LENGTH + Kumu::BER_length(buf + SMPTE_UL_LENGTH); - m_KeyStart = buf; - m_ValueStart = buf + m_KLLength; - return RESULT_OK; -} - -// -bool -ASDCP::KLVPacket::HasUL(const byte_t* ul) -{ - if ( m_KeyStart != 0 ) - { - return ( memcmp(ul, m_KeyStart, SMPTE_UL_LENGTH) == 0 ) ? true : false; - } - - if ( m_UL.HasValue() ) - { - return UL(ul) == m_UL; - } - - return false; -} - -// -ASDCP::Result_t -ASDCP::KLVPacket::WriteKLToBuffer(ASDCP::FrameBuffer& Buffer, const UL& label, ui32_t length) -{ - assert(label.HasValue()); - - if ( Buffer.Size() + kl_length > Buffer.Capacity() ) - { - DefaultLogSink().Error("Small write buffer\n"); - return RESULT_FAIL; - } - - memcpy(Buffer.Data() + Buffer.Size(), label.Value(), label.Size()); - - if ( ! Kumu::write_BER(Buffer.Data() + Buffer.Size() + SMPTE_UL_LENGTH, length, MXF_BER_LENGTH) ) - return RESULT_FAIL; - - Buffer.Size(Buffer.Size() + kl_length); - return RESULT_OK; -} - -// -void -ASDCP::KLVPacket::Dump(FILE* stream, const Dictionary& Dict, bool show_value) -{ - char buf[64]; - - if ( stream == 0 ) - stream = stderr; - - if ( m_KeyStart != 0 ) - { - assert(m_ValueStart); - UL TmpUL(m_KeyStart); - fprintf(stream, "%s", TmpUL.EncodeString(buf, 64)); - - const MDDEntry* Entry = Dict.FindUL(m_KeyStart); - fprintf(stream, " len: %7u (%s)\n", m_ValueLength, (Entry ? Entry->name : "Unknown")); - - if ( show_value && m_ValueLength < 1000 ) - Kumu::hexdump(m_ValueStart, Kumu::xmin(m_ValueLength, (ui32_t)128), stream); - } - else if ( m_UL.HasValue() ) - { - fprintf(stream, "%s\n", m_UL.EncodeString(buf, 64)); - } - else - { - fprintf(stream, "*** Malformed KLV packet ***\n"); - } -} - -// -ASDCP::Result_t -ASDCP::KLVFilePacket::InitFromFile(const Kumu::FileReader& Reader, const UL& label) -{ - Result_t result = KLVFilePacket::InitFromFile(Reader); - - if ( ASDCP_SUCCESS(result) ) - result = ( UL(m_KeyStart) == label ) ? RESULT_OK : RESULT_FAIL; - - return result; -} - -// TODO: refactor to use InitFromBuffer -ASDCP::Result_t -ASDCP::KLVFilePacket::InitFromFile(const Kumu::FileReader& Reader) -{ - ui32_t read_count; - byte_t tmp_data[tmp_read_size]; - ui64_t tmp_size; - m_KeyStart = m_ValueStart = 0; - m_KLLength = m_ValueLength = 0; - m_Buffer.Size(0); - - Result_t result = Reader.Read(tmp_data, tmp_read_size, &read_count); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( read_count < (SMPTE_UL_LENGTH + 1) ) - { - DefaultLogSink().Error("Short read of Key and Length got %u\n", read_count); - return RESULT_READFAIL; - } - - if ( memcmp(tmp_data, SMPTE_UL_START, 4) != 0 ) - { - DefaultLogSink().Error("Unexpected UL preamble: %02x.%02x.%02x.%02x\n", - tmp_data[0], tmp_data[1], tmp_data[2], tmp_data[3]); - return RESULT_FAIL; - } - - if ( ! Kumu::read_BER(tmp_data + SMPTE_UL_LENGTH, &tmp_size) ) - { - DefaultLogSink().Error("BER Length decoding error\n"); - return RESULT_FAIL; - } - - if ( tmp_size > MAX_KLV_PACKET_LENGTH ) - { - Kumu::ui64Printer tmp_size_str(tmp_size); - DefaultLogSink().Error("Packet length %s exceeds internal limit\n", tmp_size_str.c_str()); - return RESULT_FAIL; - } - - ui32_t remainder = 0; - ui32_t ber_len = Kumu::BER_length(tmp_data + SMPTE_UL_LENGTH); - m_KLLength = SMPTE_UL_LENGTH + ber_len; - assert(tmp_size <= 0xFFFFFFFFL); - m_ValueLength = (ui32_t) tmp_size; - ui32_t packet_length = m_ValueLength + m_KLLength; - - result = m_Buffer.Capacity(packet_length); - - if ( ASDCP_FAILURE(result) ) - return result; - - m_KeyStart = m_Buffer.Data(); - m_ValueStart = m_Buffer.Data() + m_KLLength; - m_Buffer.Size(packet_length); - - // is the whole packet in the tmp buf? - if ( packet_length <= tmp_read_size ) - { - assert(packet_length <= read_count); - memcpy(m_Buffer.Data(), tmp_data, packet_length); - - if ( (remainder = read_count - packet_length) != 0 ) - { - DefaultLogSink().Warn("Repositioning pointer for short packet\n"); - Kumu::fpos_t pos = Reader.Tell(); - assert(pos > remainder); - result = Reader.Seek(pos - remainder); - } - } - else - { - if ( read_count < tmp_read_size ) - { - DefaultLogSink().Error("Short read of packet body, expecting %u, got %u\n", - m_Buffer.Size(), read_count); - return RESULT_READFAIL; - } - - memcpy(m_Buffer.Data(), tmp_data, tmp_read_size); - remainder = m_Buffer.Size() - tmp_read_size; - - if ( remainder > 0 ) - { - result = Reader.Read(m_Buffer.Data() + tmp_read_size, remainder, &read_count); - - if ( read_count != remainder ) - { - DefaultLogSink().Error("Short read of packet body, expecting %u, got %u\n", - remainder+tmp_read_size, read_count+tmp_read_size); - result = RESULT_READFAIL; - } - } - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::KLVFilePacket::WriteKLToFile(Kumu::FileWriter& Writer, const UL& label, ui32_t length) -{ - byte_t buffer[kl_length]; - memcpy(buffer, label.Value(), label.Size()); - - if ( ! Kumu::write_BER(buffer+SMPTE_UL_LENGTH, length, MXF_BER_LENGTH) ) - return RESULT_FAIL; - - ui32_t write_count; - Writer.Write(buffer, kl_length, &write_count); - assert(write_count == kl_length); - return RESULT_OK; -} - - -// -// end KLV.cpp -// diff --git a/asdcplib/src/KLV.h b/asdcplib/src/KLV.h deleted file mode 100755 index ec34321..0000000 --- a/asdcplib/src/KLV.h +++ /dev/null @@ -1,256 +0,0 @@ -/* -Copyright (c) 2005-2011, John Hurst -All rights reserved. - -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. -*/ -/*! \file KLV.h - \version $Id: KLV.h,v 1.25 2012/02/08 02:59:21 jhurst Exp $ - \brief KLV objects -*/ - -#ifndef _KLV_H_ -#define _KLV_H_ - -#include <KM_fileio.h> -#include <KM_memio.h> -#include "AS_DCP.h" -#include "MDD.h" -#include <map> - - -namespace ASDCP -{ - const ui32_t MXF_BER_LENGTH = 4; - const ui32_t MXF_TAG_LENGTH = 2; - const ui32_t SMPTE_UL_LENGTH = 16; - const ui32_t SMPTE_UMID_LENGTH = 32; - const byte_t SMPTE_UL_START[4] = { 0x06, 0x0e, 0x2b, 0x34 }; - -#ifndef MAX_KLV_PACKET_LENGTH - const ui32_t MAX_KLV_PACKET_LENGTH = 1024*1024*64; -#endif - - const ui32_t IdentBufferLen = 128; - const ui32_t IntBufferLen = 64; - -inline const char* i64sz(i64_t i, char* buf) -{ - assert(buf); -#ifdef WIN32 - snprintf(buf, IntBufferLen, "%I64d", i); -#else - snprintf(buf, IntBufferLen, "%lld", i); -#endif - return buf; -} - -inline const char* ui64sz(ui64_t i, char* buf) -{ - assert(buf); -#ifdef WIN32 - snprintf(buf, IntBufferLen, "%I64u", i); -#else - snprintf(buf, IntBufferLen, "%llu", i); -#endif - return buf; -} - - struct TagValue - { - byte_t a; - byte_t b; - - inline bool operator<(const TagValue& rhs) const { - if ( a < rhs.a ) return true; - if ( a == rhs.a && b < rhs.b ) return true; - return false; - } - - inline bool operator==(const TagValue& rhs) const { - if ( a != rhs.a ) return false; - if ( b != rhs.b ) return false; - return true; - } - }; - - using Kumu::UUID; - - // Universal Label - class UL : public Kumu::Identifier<SMPTE_UL_LENGTH> - { - public: - UL() {} - UL(const UL& rhs) : Kumu::Identifier<SMPTE_UL_LENGTH>(rhs) {} - UL(const byte_t* value) : Kumu::Identifier<SMPTE_UL_LENGTH>(value) {} - virtual ~UL() {} - - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - bool operator==(const UL& rhs) const; - bool MatchIgnoreStream(const UL& rhs) const; - bool ExactMatch(const UL& rhs) const; - }; - - // UMID - class UMID : public Kumu::Identifier<SMPTE_UMID_LENGTH> - { - public: - UMID() {} - UMID(const UMID& rhs) : Kumu::Identifier<SMPTE_UMID_LENGTH>(rhs) {} - UMID(const byte_t* value) : Kumu::Identifier<SMPTE_UMID_LENGTH>(value) {} - virtual ~UMID() {} - - void MakeUMID(int Type); - void MakeUMID(int Type, const UUID& ID); - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - }; - - const byte_t nil_UMID[SMPTE_UMID_LENGTH] = {0}; - const UMID NilUMID(nil_UMID); - - // - struct MDDEntry - { - byte_t ul[SMPTE_UL_LENGTH]; - TagValue tag; - bool optional; - const char* name; - }; - - const MDDEntry& MXFInterop_OPAtom_Entry(); - const MDDEntry& SMPTE_390_OPAtom_Entry(); - - // - class Dictionary - { - std::map<ASDCP::UL, ui32_t> m_md_lookup; - std::map<std::string, ui32_t> m_md_sym_lookup; - std::map<ui32_t, ASDCP::UL> m_md_rev_lookup; - MDDEntry m_MDD_Table[(ui32_t)ASDCP::MDD_Max]; - - ASDCP_NO_COPY_CONSTRUCT(Dictionary); - - public: - Dictionary(); - ~Dictionary(); - - // bool operator==(const Dictionary& rhs) const { return this == &rhs; } - - void Init(); - bool AddEntry(const MDDEntry& Entry, ui32_t index); - bool DeleteEntry(ui32_t index); - - const MDDEntry* FindUL(const byte_t*) const; - const MDDEntry* FindSymbol(const std::string&) const; - const MDDEntry& Type(MDD_t type_id) const; - - inline const byte_t* ul(MDD_t type_id) const { - return Type(type_id).ul; - } - - void Dump(FILE* = 0) const; - }; - - - const Dictionary& DefaultSMPTEDict(); - const Dictionary& DefaultInteropDict(); - const Dictionary& DefaultCompositeDict(); - - - // - class IPrimerLookup - { - public: - virtual ~IPrimerLookup() {} - virtual void ClearTagList() = 0; - virtual Result_t InsertTag(const MDDEntry& Entry, ASDCP::TagValue& Tag) = 0; - virtual Result_t TagForKey(const ASDCP::UL& Key, ASDCP::TagValue& Tag) = 0; - }; - - // - class KLVPacket - { - ASDCP_NO_COPY_CONSTRUCT(KLVPacket); - - protected: - const byte_t* m_KeyStart; - ui32_t m_KLLength; - const byte_t* m_ValueStart; - ui32_t m_ValueLength; - UL m_UL; - - public: - KLVPacket() : m_KeyStart(0), m_KLLength(0), m_ValueStart(0), m_ValueLength(0) {} - virtual ~KLVPacket() {} - - ui32_t PacketLength() { - return m_KLLength + m_ValueLength; - } - - ui32_t ValueLength() { - return m_ValueLength; - } - - ui32_t KLLength() { - return m_KLLength; - } - - virtual UL GetUL(); - virtual bool SetUL(const UL&); - virtual bool HasUL(const byte_t*); - virtual Result_t InitFromBuffer(const byte_t*, ui32_t); - virtual Result_t InitFromBuffer(const byte_t*, ui32_t, const UL& label); - virtual Result_t WriteKLToBuffer(ASDCP::FrameBuffer&, const UL& label, ui32_t length); - virtual Result_t WriteKLToBuffer(ASDCP::FrameBuffer& fb, ui32_t length) { - if ( ! m_UL.HasValue() ) - return RESULT_STATE; - return WriteKLToBuffer(fb, m_UL, length); } - - virtual void Dump(FILE*, const Dictionary& Dict, bool show_value); - }; - - // - class KLVFilePacket : public KLVPacket - { - ASDCP_NO_COPY_CONSTRUCT(KLVFilePacket); - - protected: - ASDCP::FrameBuffer m_Buffer; - - public: - KLVFilePacket() {} - virtual ~KLVFilePacket() {} - - virtual Result_t InitFromFile(const Kumu::FileReader&); - virtual Result_t InitFromFile(const Kumu::FileReader&, const UL& label); - virtual Result_t WriteKLToFile(Kumu::FileWriter& Writer, const UL& label, ui32_t length); - }; - -} // namespace ASDCP - -#endif // _KLV_H_ - - -// -// end KLV.h -// diff --git a/asdcplib/src/KM_error.h b/asdcplib/src/KM_error.h deleted file mode 100755 index 7639797..0000000 --- a/asdcplib/src/KM_error.h +++ /dev/null @@ -1,171 +0,0 @@ -/* -Copyright (c) 2004-2011, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_error.h - \version $Id: KM_error.h,v 1.12 2011/05/16 04:33:31 jhurst Exp $ - \brief error reporting support - */ - - - -#ifndef _KM_ERROR_H_ -#define _KM_ERROR_H_ - -#define KM_DECLARE_RESULT(sym, i, l) const Result_t RESULT_##sym = Result_t(i, #sym, l); - -namespace Kumu -{ - // Result code container. Both a signed integer and a text string are stored in the object. - // When defining your own codes your choice of integer values is mostly unconstrained, but pay - // attention to the numbering in the other libraries that use Kumu. Values between -99 and 99 - // are reserved for Kumu. - - class Result_t - { - int value; - const char* label; - const char* symbol; - Result_t(); - - public: - // Return registered Result_t for the given "value" code. - static const Result_t& Find(int value); - - // Unregister the Result_t matching the given "value" code. Returns - // RESULT_FALSE if "value" does not match a registered Result_t. - // Returns RESULT_FAIL if ( value < -99 || value > 99 ) (Kumu core - // codes may not be deleted). - static Result_t Delete(int value); - - // Iteration through registered result codes, not thread safe. - // Get accepts contiguous values from 0 to End() - 1. - static unsigned int End(); - static const Result_t& Get(unsigned int); - - Result_t(int v, const char* s, const char* l); - ~Result_t(); - - inline bool operator==(const Result_t& rhs) const { return value == rhs.value; } - inline bool operator!=(const Result_t& rhs) const { return value != rhs.value; } - inline bool Success() const { return ( value >= 0 ); } - inline bool Failure() const { return ( value < 0 ); } - - inline int Value() const { return value; } - inline operator int() const { return value; } - - inline const char* Label() const { return label; } - inline operator const char*() const { return label; } - - inline const char* Symbol() const { return symbol; } - }; - - KM_DECLARE_RESULT(FALSE, 1, "Successful but not true."); - KM_DECLARE_RESULT(OK, 0, "Success."); - KM_DECLARE_RESULT(FAIL, -1, "An undefined error was detected."); - KM_DECLARE_RESULT(PTR, -2, "An unexpected NULL pointer was given."); - KM_DECLARE_RESULT(NULL_STR, -3, "An unexpected empty string was given."); - KM_DECLARE_RESULT(ALLOC, -4, "Error allocating memory."); - KM_DECLARE_RESULT(PARAM, -5, "Invalid parameter."); - KM_DECLARE_RESULT(NOTIMPL, -6, "Unimplemented Feature."); - KM_DECLARE_RESULT(SMALLBUF, -7, "The given buffer is too small."); - KM_DECLARE_RESULT(INIT, -8, "The object is not yet initialized."); - KM_DECLARE_RESULT(NOT_FOUND, -9, "The requested file does not exist on the system."); - KM_DECLARE_RESULT(NO_PERM, -10, "Insufficient privilege exists to perform the operation."); - KM_DECLARE_RESULT(STATE, -11, "Object state error."); - KM_DECLARE_RESULT(CONFIG, -12, "Invalid configuration option detected."); - KM_DECLARE_RESULT(FILEOPEN, -13, "File open failure."); - KM_DECLARE_RESULT(BADSEEK, -14, "An invalid file location was requested."); - KM_DECLARE_RESULT(READFAIL, -15, "File read error."); - KM_DECLARE_RESULT(WRITEFAIL, -16, "File write error."); - KM_DECLARE_RESULT(ENDOFFILE, -17, "Attempt to read past end of file."); - KM_DECLARE_RESULT(FILEEXISTS, -18, "Filename already exists."); - KM_DECLARE_RESULT(NOTAFILE, -19, "Filename not found."); - KM_DECLARE_RESULT(UNKNOWN, -20, "Unknown result code."); - KM_DECLARE_RESULT(DIR_CREATE, -21, "Unable to create directory."); - // -22 is reserved - -} // namespace Kumu - -//-------------------------------------------------------------------------------- -// convenience macros - -// Convenience macros for managing return values in predicates -# define KM_SUCCESS(v) (((v) < 0) ? 0 : 1) -# define KM_FAILURE(v) (((v) < 0) ? 1 : 0) - - -// Returns RESULT_PTR if the given argument is NULL. -// See Result_t above for an explanation of RESULT_* symbols. -# define KM_TEST_NULL(p) \ - if ( (p) == 0 ) { \ - return Kumu::RESULT_PTR; \ - } - -// Returns RESULT_PTR if the given argument is NULL. See Result_t -// in WaimeaCore for an explanation of RESULT_* symbols. It then assumes -// that the argument is a pointer to a string and returns -// RESULT_NULL_STR if the first character is '\0'. -// -# define KM_TEST_NULL_STR(p) \ - KM_TEST_NULL(p); \ - if ( (p)[0] == '\0' ) { \ - return Kumu::RESULT_NULL_STR; \ - } - -namespace Kumu -{ - // simple tracing mechanism - class DTrace_t - { - DTrace_t(); - - protected: - const char* m_Label; - Result_t* m_Watch; - int m_Line; - const char* m_File; - int m_Sequence; - - public: - DTrace_t(const char* Label, Result_t* Watch, int Line, const char* File); - ~DTrace_t(); - }; -} - -#ifdef KM_TRACE -#define WDTRACE(l) DTrace_t __wl__Trace__((l), 0, __LINE__, __FILE__) -#define WDTRACER(l,r) DTrace_t __wl__Trace__((l), &(r), __LINE__, __FILE__) -#else -#define WDTRACE(l) -#define WDTRACER(l,r) -#endif - - -#endif // _KM_ERROR_H_ - -// -// end KM_error.h -// diff --git a/asdcplib/src/KM_fileio.cpp b/asdcplib/src/KM_fileio.cpp deleted file mode 100644 index b20ff7f..0000000 --- a/asdcplib/src/KM_fileio.cpp +++ /dev/null @@ -1,1546 +0,0 @@ -/* -Copyright (c) 2004-2011, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_fileio.cpp - \version $Id: KM_fileio.cpp,v 1.31 2011/03/08 19:03:47 jhurst Exp $ - \brief portable file i/o - */ - -#include <KM_fileio.h> -#include <KM_log.h> -#include <fcntl.h> -#include <sstream> -#include <iomanip> - -#include <assert.h> - -#ifdef KM_WIN32 -#include <direct.h> -#else -#define _getcwd getcwd -#define _unlink unlink -#define _rmdir rmdir -#endif - -using namespace Kumu; - -#ifdef KM_WIN32 -typedef struct _stati64 fstat_t; -#define S_IFLNK 0 - -// win32 has WriteFileGather() and ReadFileScatter() but they -// demand page alignment and page sizing, making them unsuitable -// for use with arbitrary buffer sizes. -struct iovec { - char* iov_base; // stupid iovec uses char* - int iov_len; -}; -#else -# if defined(__linux__) -# include <sys/statfs.h> -# else -# include <sys/param.h> -# include <sys/mount.h> -# endif - -#include <sys/stat.h> -#include <sys/uio.h> -typedef struct stat fstat_t; -#endif - -// -static void -split(const std::string& str, char separator, std::list<std::string>& components) -{ - const char* pstr = str.c_str(); - const char* r = strchr(pstr, separator); - - while ( r != 0 ) - { - assert(r >= pstr); - if ( r > pstr ) - { - std::string tmp_str; - tmp_str.assign(pstr, (r - pstr)); - components.push_back(tmp_str); - } - - pstr = r + 1; - r = strchr(pstr, separator); - } - - if( strlen(pstr) > 0 ) - components.push_back(std::string(pstr)); -} - - -// -static Kumu::Result_t -do_stat(const char* path, fstat_t* stat_info) -{ - KM_TEST_NULL_STR_L(path); - KM_TEST_NULL_L(stat_info); - - Kumu::Result_t result = Kumu::RESULT_OK; - -#ifdef KM_WIN32 - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - - int const wn = MultiByteToWideChar (CP_UTF8, 0, path, -1, 0, 0); - wchar_t* buffer = new wchar_t[wn]; - if (MultiByteToWideChar (CP_UTF8, 0, path, -1, buffer, wn) == 0) { - delete[] buffer; - return Kumu::RESULT_FAIL; - } - - if ( _wstati64(buffer, stat_info) == (__int64)-1 ) - result = Kumu::RESULT_FILEOPEN; - - delete[] buffer; - - ::SetErrorMode( prev ); -#else - if ( stat(path, stat_info) == -1L ) - result = Kumu::RESULT_FILEOPEN; - - if ( (stat_info->st_mode & (S_IFREG|S_IFLNK|S_IFDIR)) == 0 ) - result = Kumu::RESULT_FILEOPEN; -#endif - - return result; -} - -#ifndef KM_WIN32 - -// -static Kumu::Result_t -do_fstat(FileHandle handle, fstat_t* stat_info) -{ - KM_TEST_NULL_L(stat_info); - - Kumu::Result_t result = Kumu::RESULT_OK; - - if ( fstat(handle, stat_info) == -1L ) - result = Kumu::RESULT_FILEOPEN; - - if ( (stat_info->st_mode & (S_IFREG|S_IFLNK|S_IFDIR)) == 0 ) - result = Kumu::RESULT_FILEOPEN; - - return result; -} - -#endif - - -// -bool -Kumu::PathExists(const std::string& pathname) -{ - if ( pathname.empty() ) - return false; - - fstat_t info; - - if ( KM_SUCCESS(do_stat(pathname.c_str(), &info)) ) - return true; - - return false; -} - -// -bool -Kumu::PathIsFile(const std::string& pathname) -{ - if ( pathname.empty() ) - return false; - - fstat_t info; - - if ( KM_SUCCESS(do_stat(pathname.c_str(), &info)) ) - { - if ( info.st_mode & ( S_IFREG|S_IFLNK ) ) - return true; - } - - return false; -} - - -// -bool -Kumu::PathIsDirectory(const std::string& pathname) -{ - if ( pathname.empty() ) - return false; - - fstat_t info; - - if ( KM_SUCCESS(do_stat(pathname.c_str(), &info)) ) - { - if ( info.st_mode & S_IFDIR ) - return true; - } - - return false; -} - -// -Kumu::fsize_t -Kumu::FileSize(const std::string& pathname) -{ - if ( pathname.empty() ) - return 0; - - fstat_t info; - - if ( KM_SUCCESS(do_stat(pathname.c_str(), &info)) ) - { - if ( info.st_mode & ( S_IFREG|S_IFLNK ) ) - return(info.st_size); - } - - return 0; -} - -// -static PathCompList_t& -s_PathMakeCanonical(PathCompList_t& CList, bool is_absolute) -{ - PathCompList_t::iterator ci, ri; // component and removal iterators - - for ( ci = CList.begin(); ci != CList.end(); ci++ ) - { - if ( *ci == "." && ( CList.size() > 1 || is_absolute ) ) - { - ri = ci++; - CList.erase(ri); - } - else if ( *ci == ".." && ci != CList.begin() ) - { - ri = ci; - ri--; - - if ( *ri != ".." ) - { - CList.erase(ri); - ri = ci++; - CList.erase(ri); - } - } - } - - return CList; -} - -// -std::string -Kumu::PathMakeCanonical(const std::string& Path, char separator) -{ - PathCompList_t CList; - bool is_absolute = PathIsAbsolute(Path, separator); - s_PathMakeCanonical(PathToComponents(Path, CList, separator), is_absolute); - - if ( is_absolute ) - return ComponentsToAbsolutePath(CList, separator); - - return ComponentsToPath(CList, separator); -} - -// -bool -Kumu::PathsAreEquivalent(const std::string& lhs, const std::string& rhs) -{ - return PathMakeCanonical(lhs) == PathMakeCanonical(rhs); -} - -// -Kumu::PathCompList_t& -Kumu::PathToComponents(const std::string& Path, PathCompList_t& CList, char separator) -{ - split(Path, separator, CList); - return CList; -} - -// -std::string -Kumu::ComponentsToPath(const PathCompList_t& CList, char separator) -{ - if ( CList.empty() ) - return ""; - - PathCompList_t::const_iterator ci = CList.begin(); - std::string out_path = *ci; - - for ( ci++; ci != CList.end(); ci++ ) - out_path += separator + *ci; - - return out_path; -} - -// -std::string -Kumu::ComponentsToAbsolutePath(const PathCompList_t& CList, char separator) -{ - std::string out_path; - - if ( CList.empty() ) - out_path = separator; - else - { - PathCompList_t::const_iterator ci; - - for ( ci = CList.begin(); ci != CList.end(); ci++ ) - out_path += separator + *ci; - } - - return out_path; -} - -// -bool -Kumu::PathHasComponents(const std::string& Path, char separator) -{ - if ( strchr(Path.c_str(), separator) == 0 ) - return false; - - return true; -} - -// -bool -Kumu::PathIsAbsolute(const std::string& Path, char separator) -{ - if ( Path.empty() ) - return false; - - if ( Path[0] == separator) - return true; - - return false; -} - -// -std::string -Kumu::PathMakeAbsolute(const std::string& Path, char separator) -{ - if ( Path.empty() ) - { - std::string out_path; - out_path = separator; - return out_path; - } - - if ( PathIsAbsolute(Path, separator) ) - return Path; - - char cwd_buf [MaxFilePath]; - if ( _getcwd(cwd_buf, MaxFilePath) == 0 ) - { - DefaultLogSink().Error("Error retrieving current working directory."); - return ""; - } - - PathCompList_t CList; - PathToComponents(cwd_buf, CList); - CList.push_back(Path); - - return ComponentsToAbsolutePath(s_PathMakeCanonical(CList, true), separator); -} - -// -std::string -Kumu::PathMakeLocal(const std::string& Path, const std::string& Parent) -{ - size_t pos = Path.find(Parent); - - if ( pos == 0 ) // Parent found at offset 0 - return Path.substr(Parent.size()+1); - - return Path; -} - -// -std::string -Kumu::PathBasename(const std::string& Path, char separator) -{ - PathCompList_t CList; - PathToComponents(Path, CList, separator); - - if ( CList.empty() ) - return ""; - - return CList.back(); -} - -// -std::string -Kumu::PathDirname(const std::string& Path, char separator) -{ - PathCompList_t CList; - bool is_absolute = PathIsAbsolute(Path, separator); - PathToComponents(Path, CList, separator); - - if ( CList.empty() ) - return is_absolute ? "/" : ""; - - CList.pop_back(); - - if ( is_absolute ) - return ComponentsToAbsolutePath(CList, separator); - - return ComponentsToPath(CList, separator); -} - -// -std::string -Kumu::PathGetExtension(const std::string& Path) -{ - std::string Basename = PathBasename(Path); - const char* p = strrchr(Basename.c_str(), '.'); - - if ( p++ == 0 ) - return ""; - - return p; -} - -// -std::string -Kumu::PathSetExtension(const std::string& Path, const std::string& Extension) // empty extension removes -{ - std::string Basename = PathBasename(Path); - const char* p = strrchr(Basename.c_str(), '.'); - - if ( p != 0 ) - Basename = Basename.substr(0, p - Basename.c_str()); - - if ( Extension.empty() ) - return Basename; - - return Basename + "." + Extension; -} - -// -std::string -Kumu::PathJoin(const std::string& Path1, const std::string& Path2, char separator) -{ - return Path1 + separator + Path2; -} - -// -std::string -Kumu::PathJoin(const std::string& Path1, const std::string& Path2, const std::string& Path3, char separator) -{ - return Path1 + separator + Path2 + separator + Path3; -} - -// -std::string -Kumu::PathJoin(const std::string& Path1, const std::string& Path2, - const std::string& Path3, const std::string& Path4, char separator) -{ - return Path1 + separator + Path2 + separator + Path3 + separator + Path4; -} - -// -Kumu::PathList_t& -Kumu::FindInPaths(const IPathMatch& Pattern, const Kumu::PathList_t& SearchPaths, - Kumu::PathList_t& FoundPaths, bool one_shot, char separator) -{ - PathList_t::const_iterator si; - for ( si = SearchPaths.begin(); si != SearchPaths.end(); si++ ) - { - FindInPath(Pattern, *si, FoundPaths, one_shot, separator); - - if ( one_shot && ! FoundPaths.empty() ) - break; - } - - return FoundPaths; -} - -// -Kumu::PathList_t& -Kumu::FindInPath(const IPathMatch& Pattern, const std::string& SearchDir, - Kumu::PathList_t& FoundPaths, bool one_shot, char separator) -{ - char name_buf[MaxFilePath]; - DirScanner Dir; - - if ( KM_SUCCESS(Dir.Open(SearchDir.c_str())) ) - { - while ( KM_SUCCESS(Dir.GetNext(name_buf)) ) - { - if ( name_buf[0] == '.' ) continue; // no hidden files - std::string tmp_path = SearchDir + separator + name_buf; - - if ( PathIsDirectory(tmp_path.c_str()) ) - FindInPath(Pattern, tmp_path, FoundPaths, one_shot, separator); - - else if ( Pattern.Match(name_buf) ) - { - FoundPaths.push_back(SearchDir + separator + name_buf); - if ( one_shot ) - break; - } - } - } - - return FoundPaths; -} - - -#ifndef KM_WIN32 - -// -Kumu::PathMatchRegex::PathMatchRegex(const std::string& s) -{ - int result = regcomp(&m_regex, s.c_str(), REG_NOSUB); // (REG_EXTENDED|REG_NOSUB|REG_NEWLINE)); - - if ( result ) - { - char buf[128]; - regerror(result, &m_regex, buf, 128); - DefaultLogSink().Error("PathMatchRegex: %s\n", buf); - regfree(&m_regex); - } -} - -Kumu::PathMatchRegex::PathMatchRegex(const PathMatchRegex& rhs) : IPathMatch() { - m_regex = rhs.m_regex; -} - -Kumu::PathMatchRegex::~PathMatchRegex() { - regfree(&m_regex); -} - -bool -Kumu::PathMatchRegex::Match(const std::string& s) const { - return ( regexec(&m_regex, s.c_str(), 0, 0, 0) == 0 ); -} - - - -// -Kumu::PathMatchGlob::PathMatchGlob(const std::string& glob) -{ - std::string regex; // convert glob to regex - - for ( const char* p = glob.c_str(); *p != 0; p++ ) - { - switch (*p) - { - case '.': regex += "\\."; break; - case '*': regex += ".*"; break; - case '?': regex += ".?"; break; - default: regex += *p; - } - } - regex += '$'; - - int result = regcomp(&m_regex, regex.c_str(), REG_NOSUB); - - if ( result ) - { - char buf[128]; - regerror(result, &m_regex, buf, 128); - DefaultLogSink().Error("PathMatchRegex: %s\n", buf); - regfree(&m_regex); - } -} - -Kumu::PathMatchGlob::PathMatchGlob(const PathMatchGlob& rhs) : IPathMatch() { - m_regex = rhs.m_regex; -} - -Kumu::PathMatchGlob::~PathMatchGlob() { - regfree(&m_regex); -} - -bool -Kumu::PathMatchGlob::Match(const std::string& s) const { - return ( regexec(&m_regex, s.c_str(), 0, 0, 0) == 0 ); -} - -#endif - -//------------------------------------------------------------------------------------------ -// portable aspects of the file classes - -const int IOVecMaxEntries = 32; // we never use more that 3, but that number seems somehow small... - -// -class Kumu::FileWriter::h__iovec -{ -public: - int m_Count; - struct iovec m_iovec[IOVecMaxEntries]; - h__iovec() : m_Count(0) {} -}; - - - -// -Kumu::fsize_t -Kumu::FileReader::Size() const -{ -#ifdef KM_WIN32 - return FileSize(m_Filename.c_str()); -#else - fstat_t info; - - if ( KM_SUCCESS(do_fstat(m_Handle, &info)) ) - { - if ( info.st_mode & ( S_IFREG|S_IFLNK ) ) - return(info.st_size); - } -#endif - - return 0; -} - -// these are declared here instead of in the header file -// because we have a mem_ptr that is managing a hidden class -Kumu::FileWriter::FileWriter() - : m_Hashing (false) -{} - -Kumu::FileWriter::~FileWriter() {} - -// -Kumu::Result_t -Kumu::FileWriter::Writev(const byte_t* buf, ui32_t buf_len) -{ - assert( ! m_IOVec.empty() ); - register h__iovec* iov = m_IOVec; - KM_TEST_NULL_L(buf); - - if ( iov->m_Count >= IOVecMaxEntries ) - { - DefaultLogSink().Error("The iovec is full! Only %u entries allowed before a flush.\n", - IOVecMaxEntries); - return RESULT_WRITEFAIL; - } - - iov->m_iovec[iov->m_Count].iov_base = (char*)buf; // stupid iovec uses char* - iov->m_iovec[iov->m_Count].iov_len = buf_len; - iov->m_Count++; - - return RESULT_OK; -} - -void -Kumu::FileWriter::StartHashing() -{ - m_Hashing = true; - MD5_Init (&m_MD5Context); -} - -void -Kumu::FileWriter::MaybeHash(void const * data, int size) -{ - if (m_Hashing) { - MD5_Update (&m_MD5Context, data, size); - } -} - -std::string -Kumu::FileWriter::StopHashing() -{ - m_Hashing = false; - - unsigned char digest[MD5_DIGEST_LENGTH]; - MD5_Final (digest, &m_MD5Context); - - std::stringstream s; - for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) { - s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]); - } - - return s.str (); -} - - -#ifdef KM_WIN32 -//------------------------------------------------------------------------------------------ -// - -/** @param filename File name (UTF-8 encoded) */ -Kumu::Result_t -Kumu::FileReader::OpenRead(const char* filename) const -{ - KM_TEST_NULL_STR_L(filename); - const_cast<FileReader*>(this)->m_Filename = filename; - - // suppress popup window on error - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - - int const wn = MultiByteToWideChar (CP_UTF8, 0, filename, -1, 0, 0); - wchar_t* buffer = new wchar_t[wn]; - if (MultiByteToWideChar (CP_UTF8, 0, filename, -1, buffer, wn) == 0) { - delete[] buffer; - return Kumu::RESULT_FAIL; - } - const_cast<FileReader*>(this)->m_Handle = ::CreateFileW(buffer, - (GENERIC_READ), // open for reading - FILE_SHARE_READ, // share for reading - NULL, // no security - OPEN_EXISTING, // read - FILE_ATTRIBUTE_NORMAL, // normal file - NULL // no template file - ); - - delete[] buffer; - - ::SetErrorMode(prev); - - return ( m_Handle == INVALID_HANDLE_VALUE ) ? - Kumu::RESULT_FILEOPEN : Kumu::RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Close() const -{ - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_FILEOPEN; - - // suppress popup window on error - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - BOOL result = ::CloseHandle(m_Handle); - ::SetErrorMode(prev); - const_cast<FileReader*>(this)->m_Handle = INVALID_HANDLE_VALUE; - - return ( result == 0 ) ? Kumu::RESULT_FAIL : Kumu::RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Seek(Kumu::fpos_t position, SeekPos_t whence) const -{ - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_STATE; - - LARGE_INTEGER in; - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - in.QuadPart = position; - in.LowPart = ::SetFilePointer(m_Handle, in.LowPart, &in.HighPart, whence); - HRESULT LastError = GetLastError(); - ::SetErrorMode(prev); - - if ( (LastError != NO_ERROR - && (in.LowPart == INVALID_SET_FILE_POINTER - || in.LowPart == ERROR_NEGATIVE_SEEK )) ) - return Kumu::RESULT_READFAIL; - - return Kumu::RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Tell(Kumu::fpos_t* pos) const -{ - KM_TEST_NULL_L(pos); - - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_FILEOPEN; - - LARGE_INTEGER in; - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - in.QuadPart = (__int64)0; - in.LowPart = ::SetFilePointer(m_Handle, in.LowPart, &in.HighPart, FILE_CURRENT); - HRESULT LastError = GetLastError(); - ::SetErrorMode(prev); - - if ( (LastError != NO_ERROR - && (in.LowPart == INVALID_SET_FILE_POINTER - || in.LowPart == ERROR_NEGATIVE_SEEK )) ) - return Kumu::RESULT_READFAIL; - - *pos = (Kumu::fpos_t)in.QuadPart; - return Kumu::RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Read(byte_t* buf, ui32_t buf_len, ui32_t* read_count) const -{ - KM_TEST_NULL_L(buf); - Result_t result = Kumu::RESULT_OK; - DWORD tmp_count; - ui32_t tmp_int; - - if ( read_count == 0 ) - read_count = &tmp_int; - - *read_count = 0; - - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_FILEOPEN; - - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - if ( ::ReadFile(m_Handle, buf, buf_len, &tmp_count, NULL) == 0 ) - result = Kumu::RESULT_READFAIL; - - ::SetErrorMode(prev); - - if ( tmp_count == 0 ) /* EOF */ - result = Kumu::RESULT_ENDOFFILE; - - if ( KM_SUCCESS(result) ) - *read_count = tmp_count; - - return result; -} - - - -//------------------------------------------------------------------------------------------ -// - -/** @param filename File name (UTF-8 encoded) */ -Kumu::Result_t -Kumu::FileWriter::OpenWrite(const char* filename) -{ - KM_TEST_NULL_STR_L(filename); - m_Filename = filename; - - // suppress popup window on error - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - - int const wn = MultiByteToWideChar (CP_UTF8, 0, filename, -1, 0, 0); - wchar_t* buffer = new wchar_t[wn]; - if (MultiByteToWideChar (CP_UTF8, 0, filename, -1, buffer, wn) == 0) { - delete[] buffer; - return Kumu::RESULT_FAIL; - } - - m_Handle = ::CreateFileW(buffer, - (GENERIC_WRITE|GENERIC_READ), // open for reading - FILE_SHARE_READ, // share for reading - NULL, // no security - CREATE_ALWAYS, // overwrite (beware!) - FILE_ATTRIBUTE_NORMAL, // normal file - NULL // no template file - ); - - delete[] buffer; - - ::SetErrorMode(prev); - - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_FILEOPEN; - - m_IOVec = new h__iovec; - return Kumu::RESULT_OK; -} - -/** @param filename File name (UTF-8 encoded) */ -Kumu::Result_t -Kumu::FileWriter::OpenModify(const char* filename) -{ - KM_TEST_NULL_STR_L(filename); - m_Filename = filename; - - // suppress popup window on error - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - - int const wn = MultiByteToWideChar (CP_UTF8, 0, filename, -1, 0, 0); - wchar_t* buffer = new wchar_t[wn]; - if (MultiByteToWideChar (CP_UTF8, 0, filename, -1, buffer, wn) == 0) { - delete[] buffer; - return Kumu::RESULT_FAIL; - } - - m_Handle = ::CreateFileW(buffer, - (GENERIC_WRITE|GENERIC_READ), // open for reading - FILE_SHARE_READ, // share for reading - NULL, // no security - OPEN_ALWAYS, // don't truncate existing - FILE_ATTRIBUTE_NORMAL, // normal file - NULL // no template file - ); - - delete[] buffer; - - ::SetErrorMode(prev); - - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_FILEOPEN; - - m_IOVec = new h__iovec; - return Kumu::RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileWriter::Writev(ui32_t* bytes_written) -{ - assert( ! m_IOVec.empty() ); - register h__iovec* iov = m_IOVec; - ui32_t tmp_int; - - if ( bytes_written == 0 ) - bytes_written = &tmp_int; - - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_STATE; - - *bytes_written = 0; - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - Result_t result = Kumu::RESULT_OK; - - // AFAIK, there is no writev() equivalent in the win32 API - for ( register int i = 0; i < iov->m_Count; i++ ) - { - ui32_t tmp_count = 0; - BOOL wr_result = ::WriteFile(m_Handle, - iov->m_iovec[i].iov_base, - iov->m_iovec[i].iov_len, - (DWORD*)&tmp_count, - NULL); - - if ( wr_result == 0 || tmp_count != iov->m_iovec[i].iov_len) - { - result = Kumu::RESULT_WRITEFAIL; - break; - } - - MaybeHash (iov->m_iovec[i].iov_base, iov->m_iovec[i].iov_len); - *bytes_written += tmp_count; - } - - ::SetErrorMode(prev); - iov->m_Count = 0; // error nor not, all is lost - - return result; -} - -// -Kumu::Result_t -Kumu::FileWriter::Write(const byte_t* buf, ui32_t buf_len, ui32_t* bytes_written) -{ - KM_TEST_NULL_L(buf); - ui32_t tmp_int; - - if ( bytes_written == 0 ) - bytes_written = &tmp_int; - - if ( m_Handle == INVALID_HANDLE_VALUE ) - return Kumu::RESULT_STATE; - - // suppress popup window on error - UINT prev = ::SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); - BOOL result = ::WriteFile(m_Handle, buf, buf_len, (DWORD*)bytes_written, NULL); - ::SetErrorMode(prev); - - if ( result == 0 || *bytes_written != buf_len ) - return Kumu::RESULT_WRITEFAIL; - - MaybeHash (buf, buf_len); - - return Kumu::RESULT_OK; -} - -#else // KM_WIN32 -//------------------------------------------------------------------------------------------ -// POSIX - -// -Kumu::Result_t -Kumu::FileReader::OpenRead(const char* filename) const -{ - KM_TEST_NULL_STR_L(filename); - const_cast<FileReader*>(this)->m_Filename = filename; - const_cast<FileReader*>(this)->m_Handle = open(filename, O_RDONLY, 0); - return ( m_Handle == -1L ) ? RESULT_FILEOPEN : RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Close() const -{ - if ( m_Handle == -1L ) - return RESULT_FILEOPEN; - - close(m_Handle); - const_cast<FileReader*>(this)->m_Handle = -1L; - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Seek(Kumu::fpos_t position, SeekPos_t whence) const -{ - if ( m_Handle == -1L ) - return RESULT_FILEOPEN; - - if ( lseek(m_Handle, position, whence) == -1L ) - return RESULT_BADSEEK; - - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Tell(Kumu::fpos_t* pos) const -{ - KM_TEST_NULL_L(pos); - - if ( m_Handle == -1L ) - return RESULT_FILEOPEN; - - Kumu::fpos_t tmp_pos; - - if ( (tmp_pos = lseek(m_Handle, 0, SEEK_CUR)) == -1 ) - return RESULT_READFAIL; - - *pos = tmp_pos; - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileReader::Read(byte_t* buf, ui32_t buf_len, ui32_t* read_count) const -{ - KM_TEST_NULL_L(buf); - i32_t tmp_count = 0; - ui32_t tmp_int = 0; - - if ( read_count == 0 ) - read_count = &tmp_int; - - *read_count = 0; - - if ( m_Handle == -1L ) - return RESULT_FILEOPEN; - - if ( (tmp_count = read(m_Handle, buf, buf_len)) == -1L ) - return RESULT_READFAIL; - - *read_count = tmp_count; - return (tmp_count == 0 ? RESULT_ENDOFFILE : RESULT_OK); -} - - -//------------------------------------------------------------------------------------------ -// - -// -Kumu::Result_t -Kumu::FileWriter::OpenWrite(const char* filename) -{ - KM_TEST_NULL_STR_L(filename); - m_Filename = filename; - m_Handle = open(filename, O_RDWR|O_CREAT|O_TRUNC, 0664); - - if ( m_Handle == -1L ) - { - DefaultLogSink().Error("Error opening file %s: %s\n", filename, strerror(errno)); - return RESULT_FILEOPEN; - } - - m_IOVec = new h__iovec; - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileWriter::OpenModify(const char* filename) -{ - KM_TEST_NULL_STR_L(filename); - m_Filename = filename; - m_Handle = open(filename, O_RDWR|O_CREAT, 0664); - - if ( m_Handle == -1L ) - { - DefaultLogSink().Error("Error opening file %s: %s\n", filename, strerror(errno)); - return RESULT_FILEOPEN; - } - - m_IOVec = new h__iovec; - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileWriter::Writev(ui32_t* bytes_written) -{ - assert( ! m_IOVec.empty() ); - register h__iovec* iov = m_IOVec; - ui32_t tmp_int; - - if ( bytes_written == 0 ) - bytes_written = &tmp_int; - - if ( m_Handle == -1L ) - return RESULT_STATE; - - int total_size = 0; - for ( int i = 0; i < iov->m_Count; i++ ) - total_size += iov->m_iovec[i].iov_len; - - int write_size = writev(m_Handle, iov->m_iovec, iov->m_Count); - - if ( write_size == -1L || write_size != total_size ) - return RESULT_WRITEFAIL; - - for (int i = 0; i < iov->m_Count; ++i) { - MaybeHash (iov->m_iovec[i].iov_base, iov->m_iovec[i].iov_len); - } - - iov->m_Count = 0; - *bytes_written = write_size; - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::FileWriter::Write(const byte_t* buf, ui32_t buf_len, ui32_t* bytes_written) -{ - KM_TEST_NULL_L(buf); - ui32_t tmp_int; - - if ( bytes_written == 0 ) - bytes_written = &tmp_int; - - if ( m_Handle == -1L ) - return RESULT_STATE; - - int write_size = write(m_Handle, buf, buf_len); - MaybeHash (buf, buf_len); - - if ( write_size == -1L || (ui32_t)write_size != buf_len ) - return RESULT_WRITEFAIL; - - *bytes_written = write_size; - return RESULT_OK; -} - - -#endif - -//------------------------------------------------------------------------------------------ - - -// -Kumu::Result_t -Kumu::ReadFileIntoString(const char* filename, std::string& outString, ui32_t max_size) -{ - fsize_t fsize = 0; - ui32_t read_size = 0; - FileReader File; - ByteString ReadBuf; - - KM_TEST_NULL_STR_L(filename); - - Result_t result = File.OpenRead(filename); - - if ( KM_SUCCESS(result) ) - { - fsize = File.Size(); - - if ( fsize > (Kumu::fpos_t)max_size ) - { - DefaultLogSink().Error("%s: exceeds available buffer size (%u)\n", filename, max_size); - return RESULT_ALLOC; - } - - if ( fsize == 0 ) - { - DefaultLogSink().Error("%s: zero file size\n", filename); - return RESULT_READFAIL; - } - - result = ReadBuf.Capacity((ui32_t)fsize); - } - - if ( KM_SUCCESS(result) ) - result = File.Read(ReadBuf.Data(), ReadBuf.Capacity(), &read_size); - - if ( KM_SUCCESS(result) ) - outString.assign((const char*)ReadBuf.RoData(), read_size); - - return result; -} - - -// -Kumu::Result_t -Kumu::WriteStringIntoFile(const char* filename, const std::string& inString) -{ - FileWriter File; - ui32_t write_count = 0; - KM_TEST_NULL_STR_L(filename); - - Result_t result = File.OpenWrite(filename); - - if ( KM_SUCCESS(result) ) - result = File.Write((byte_t*)inString.c_str(), inString.length(), &write_count); - - return result; -} - -//------------------------------------------------------------------------------------------ - - -// -Kumu::Result_t -Kumu::ReadFileIntoObject(const std::string& Filename, Kumu::IArchive& Object, ui32_t) -{ - ByteString Buffer; - ui32_t file_size = static_cast<ui32_t>(FileSize(Filename)); - Result_t result = Buffer.Capacity(file_size); - - if ( KM_SUCCESS(result) ) - { - ui32_t read_count = 0; - FileWriter Reader; - - result = Reader.OpenRead(Filename.c_str()); - - if ( KM_SUCCESS(result) ) - result = Reader.Read(Buffer.Data(), file_size, &read_count); - - if ( KM_SUCCESS(result) ) - { - assert(file_size == read_count); - Buffer.Length(read_count); - MemIOReader MemReader(&Buffer); - result = Object.Unarchive(&MemReader) ? RESULT_OK : RESULT_READFAIL; - } - } - - return result; -} - -// -Kumu::Result_t -Kumu::WriteObjectIntoFile(const Kumu::IArchive& Object, const std::string& Filename) -{ - ByteString Buffer; - Result_t result = Buffer.Capacity(Object.ArchiveLength()); - - if ( KM_SUCCESS(result) ) - { - ui32_t write_count = 0; - FileWriter Writer; - MemIOWriter MemWriter(&Buffer); - - result = Object.Archive(&MemWriter) ? RESULT_OK : RESULT_WRITEFAIL; - - if ( KM_SUCCESS(result) ) - { - Buffer.Length(MemWriter.Length()); - result = Writer.OpenWrite(Filename.c_str()); - } - - if ( KM_SUCCESS(result) ) - result = Writer.Write(Buffer.RoData(), Buffer.Length(), &write_count); - } - - return result; -} - -//------------------------------------------------------------------------------------------ -// - -// -Result_t -Kumu::ReadFileIntoBuffer(const std::string& Filename, Kumu::ByteString& Buffer, ui32_t) -{ - ui32_t file_size = FileSize(Filename); - Result_t result = Buffer.Capacity(file_size); - - if ( KM_SUCCESS(result) ) - { - ui32_t read_count = 0; - FileWriter Reader; - - result = Reader.OpenRead(Filename.c_str()); - - if ( KM_SUCCESS(result) ) - result = Reader.Read(Buffer.Data(), file_size, &read_count); - - if ( KM_SUCCESS(result) ) - { - if ( file_size != read_count) - return RESULT_READFAIL; - - Buffer.Length(read_count); - } - } - - return result; -} - -// -Result_t -Kumu::WriteBufferIntoFile(const Kumu::ByteString& Buffer, const std::string& Filename) -{ - ui32_t write_count = 0; - FileWriter Writer; - - Result_t result = Writer.OpenWrite(Filename.c_str()); - - if ( KM_SUCCESS(result) ) - result = Writer.Write(Buffer.RoData(), Buffer.Length(), &write_count); - - if ( KM_SUCCESS(result) && Buffer.Length() != write_count) - return RESULT_WRITEFAIL; - - return result; -} - -//------------------------------------------------------------------------------------------ -// - -Kumu::DirScanner::DirScanner() -{ - -} - -Result_t -Kumu::DirScanner::Open (const char* filename) -{ - KM_TEST_NULL_L (filename); - - if (!boost::filesystem::is_directory(filename)) { - return RESULT_NOT_FOUND; - } - - _iterator = boost::filesystem::directory_iterator (filename); - return RESULT_OK; -} - -Result_t -Kumu::DirScanner::GetNext (char* filename) -{ - KM_TEST_NULL_L (filename); - - if (_iterator == boost::filesystem::directory_iterator()) { - return RESULT_ENDOFFILE; - } - -#if BOOST_FILESYSTEM_VERSION == 3 - std::string f = boost::filesystem::path(*_iterator).filename().generic_string(); -#else - std::string f = boost::filesystem::path(*_iterator).filename(); -#endif - strncpy (filename, f.c_str(), MaxFilePath); - ++_iterator; - return RESULT_OK; -} - -//------------------------------------------------------------------------------------------ - -// -// Attention Windows users: make sure to use the proper separator character -// with these functions. -// - -// given a path string, create any missing directories so that PathIsDirectory(Path) is true. -// -Result_t -Kumu::CreateDirectoriesInPath(const std::string& Path) -{ - bool abs = PathIsAbsolute(Path); - PathCompList_t PathComps, TmpPathComps; - - PathToComponents(Path, PathComps); - - while ( ! PathComps.empty() ) - { - TmpPathComps.push_back(PathComps.front()); - PathComps.pop_front(); - std::string tmp_path = abs ? ComponentsToAbsolutePath(TmpPathComps) : ComponentsToPath(TmpPathComps); - - if ( ! PathIsDirectory(tmp_path) ) - { -#ifdef KM_WIN32 - if ( _mkdir(tmp_path.c_str()) != 0 ) -#else // KM_WIN32 - if ( mkdir(tmp_path.c_str(), 0775) != 0 ) -#endif // KM_WIN32 - { - DefaultLogSink().Error("CreateDirectoriesInPath mkdir %s: %s\n", - tmp_path.c_str(), strerror(errno)); - return RESULT_DIR_CREATE; - } - } - } - - return RESULT_OK; -} - - -// -Result_t -Kumu::DeleteFile(const std::string& filename) -{ - if ( _unlink(filename.c_str()) == 0 ) - return RESULT_OK; - - switch ( errno ) - { - case ENOENT: - case ENOTDIR: return RESULT_NOTAFILE; - - case EROFS: - case EBUSY: - case EACCES: - case EPERM: return RESULT_NO_PERM; - } - - DefaultLogSink().Error("DeleteFile %s: %s\n", filename.c_str(), strerror(errno)); - return RESULT_FAIL; -} - -// -Result_t -h__DeletePath(const std::string& pathname) -{ - if ( pathname.empty() ) - return RESULT_NULL_STR; - - Result_t result = RESULT_OK; - - if ( ! PathIsDirectory(pathname) ) - { - result = DeleteFile(pathname); - } - else - { - { - DirScanner TestDir; - char next_file[Kumu::MaxFilePath]; - result = TestDir.Open(pathname.c_str()); - - while ( KM_SUCCESS(result) && KM_SUCCESS(TestDir.GetNext(next_file)) ) - { - if ( next_file[0] == '.' ) - { - if ( next_file[1] == 0 ) - continue; // don't delete 'this' - - if ( next_file[1] == '.' && next_file[2] == 0 ) - continue; // don't delete 'this' parent - } - - result = h__DeletePath(pathname + std::string("/") + next_file); - } - } - - if ( _rmdir(pathname.c_str()) != 0 ) - { - switch ( errno ) - { - case ENOENT: - case ENOTDIR: - result = RESULT_NOTAFILE; - break; - - case EROFS: - case EBUSY: - case EACCES: - case EPERM: - result = RESULT_NO_PERM; - break; - - default: - DefaultLogSink().Error("DeletePath %s: %s\n", pathname.c_str(), strerror(errno)); - result = RESULT_FAIL; - } - } - } - - return result; -} - -// -Result_t -Kumu::DeletePath(const std::string& pathname) -{ - std::string c_pathname = PathMakeAbsolute(PathMakeCanonical(pathname)); - DefaultLogSink().Debug("DeletePath (%s) c(%s)\n", pathname.c_str(), c_pathname.c_str()); - return h__DeletePath(c_pathname); -} - - -//------------------------------------------------------------------------------------------ -// - - -Result_t -Kumu::FreeSpaceForPath(const std::string& path, Kumu::fsize_t& free_space, Kumu::fsize_t& total_space) -{ -#ifdef KM_WIN32 - ULARGE_INTEGER lTotalNumberOfBytes; - ULARGE_INTEGER lTotalNumberOfFreeBytes; - - BOOL fResult = ::GetDiskFreeSpaceExA(path.c_str(), NULL, &lTotalNumberOfBytes, &lTotalNumberOfFreeBytes); - if (fResult) { - free_space = static_cast<Kumu::fsize_t>(lTotalNumberOfFreeBytes.QuadPart); - total_space = static_cast<Kumu::fsize_t>(lTotalNumberOfBytes.QuadPart); - return RESULT_OK; - } - HRESULT LastError = ::GetLastError(); - - DefaultLogSink().Error("FreeSpaceForPath GetDiskFreeSpaceEx %s: %lu\n", path.c_str(), ::GetLastError()); - return RESULT_FAIL; -#else // KM_WIN32 - struct statfs s; - - if ( statfs(path.c_str(), &s) == 0 ) - { - if ( s.f_blocks < 1 ) - { - DefaultLogSink().Error("File system %s has impossible size: %ld\n", - path.c_str(), s.f_blocks); - return RESULT_FAIL; - } - - free_space = (Kumu::fsize_t)s.f_bsize * (Kumu::fsize_t)s.f_bavail; - total_space = (Kumu::fsize_t)s.f_bsize * (Kumu::fsize_t)s.f_blocks; - return RESULT_OK; - } - - switch ( errno ) - { - case ENOENT: - case ENOTDIR: return RESULT_NOTAFILE; - case EACCES: return RESULT_NO_PERM; - } - - DefaultLogSink().Error("FreeSpaceForPath statfs %s: %s\n", path.c_str(), strerror(errno)); - return RESULT_FAIL; -#endif // KM_WIN32 -} - - -// -// end KM_fileio.cpp -// diff --git a/asdcplib/src/KM_fileio.h b/asdcplib/src/KM_fileio.h deleted file mode 100755 index cb00acc..0000000 --- a/asdcplib/src/KM_fileio.h +++ /dev/null @@ -1,342 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_fileio.h - \version $Id: KM_fileio.h,v 1.17 2009/06/22 05:49:02 jhurst Exp $ - \brief portable file i/o - */ - -#ifndef _KM_FILEIO_H_ -#define _KM_FILEIO_H_ - -#include <KM_util.h> -#include <string> -#include <boost/filesystem.hpp> -#include <openssl/md5.h> - -#ifdef KM_WIN32 -# include <io.h> -#else -# include <dirent.h> -# include <unistd.h> -# include <time.h> -# include <sys/types.h> -#include <regex.h> -#endif - -#include <sys/stat.h> - - - -namespace Kumu -{ - class DirScanner - { - public: - DirScanner(); - Result_t Open(const char *); - Result_t GetNext(char *); - Result_t Close(); - private: - boost::filesystem::directory_iterator _iterator; - }; - -#ifdef KM_WIN32 - typedef __int64 fsize_t; - typedef __int64 fpos_t; - typedef HANDLE FileHandle; - - enum SeekPos_t { - SP_BEGIN = FILE_BEGIN, - SP_POS = FILE_CURRENT, - SP_END = FILE_END - }; -#else - typedef off_t fsize_t; - typedef off_t fpos_t; - typedef int FileHandle; - const FileHandle INVALID_HANDLE_VALUE = -1L; - - enum SeekPos_t { - SP_BEGIN = SEEK_SET, - SP_POS = SEEK_CUR, - SP_END = SEEK_END - }; -#endif - - // -#ifndef KM_SMALL_FILES_OK - template <bool sizecheck> void compile_time_size_checker(); - template <> inline void compile_time_size_checker<false>() {} - // - // READ THIS if your compiler is complaining about a previously declared implementation of - // compile_time_size_checker(). For example, GCC 4.0.1 looks like this: - // - // error: 'void Kumu::compile_time_size_checker() [with bool sizecheck = false]' previously declared here - // - // This is happening because the equality being tested below is false. The reason for this - // will depend on your OS, but on Linux it is probably because you have not used -D_FILE_OFFSET_BITS=64 - // Adding this magic macro to your CFLAGS will get you going again. If you are on a system that - // does not support 64-bit files, you can disable this check by using -DKM_SMALL_FILES_OK. You - // will then of course be limited to file sizes < 4GB. - // - template <> inline void compile_time_size_checker<sizeof(Kumu::fsize_t)==sizeof(ui64_t)>() {} -#endif - // - - const ui32_t Kilobyte = 1024; - const ui32_t Megabyte = Kilobyte * Kilobyte; - const ui32_t Gigabyte = Megabyte * Kilobyte; - - const ui32_t MaxFilePath = Kilobyte; - - - //------------------------------------------------------------------------------------------ - // Path Manglers - //------------------------------------------------------------------------------------------ - - // types - typedef std::list<std::string> PathCompList_t; // a list of path components - typedef std::list<std::string> PathList_t; // a list of paths - - // tests - bool PathExists(const std::string& Path); // true if the path exists in the filesystem - bool PathIsFile(const std::string& Path); // true if the path exists in the filesystem and is a file - bool PathIsDirectory(const std::string& Path); // true if the path exists in the filesystem and is a directory - fsize_t FileSize(const std::string& Path); // returns the size of a regular file, 0 for a directory or device - bool PathsAreEquivalent(const std::string& lhs, const std::string& rhs); // true if paths point to the same filesystem entry - - // Returns free space and total space available for the given path - Result_t FreeSpaceForPath(const std::string& path, Kumu::fsize_t& free_space, Kumu::fsize_t& total_space); - - // split and reassemble paths as lists of path components - PathCompList_t& PathToComponents(const std::string& Path, PathCompList_t& CList, char separator = '/'); // removes '//' - std::string ComponentsToPath(const PathCompList_t& CList, char separator = '/'); - std::string ComponentsToAbsolutePath(const PathCompList_t& CList, char separator = '/'); // add separator to the front - bool PathHasComponents(const std::string& Path, char separator = '/'); // true if paths starts with separator - - bool PathIsAbsolute(const std::string& Path, char separator = '/'); // true if path begins with separator - std::string PathMakeAbsolute(const std::string& Path, char separator = '/'); // compute position of relative path using getcwd() - std::string PathMakeLocal(const std::string& Path, const std::string& Parent); // remove Parent from front of Path, if it exists - std::string PathMakeCanonical(const std::string& Path, char separator = '/'); // remove '.' and '..' - - // common operations - std::string PathBasename(const std::string& Path, char separator = '/'); // returns right-most path element (list back()) - std::string PathDirname(const std::string& Path, char separator = '/'); // returns everything but the right-most element - std::string PathGetExtension(const std::string& Path); // returns everything in the right-most element following the right-most '.' - std::string PathSetExtension(const std::string& Path, const std::string& Extension); // empty extension removes '.' as well - - std::string PathJoin(const std::string& Path1, const std::string& Path2, char separator = '/'); - std::string PathJoin(const std::string& Path1, const std::string& Path2, const std::string& Path3, char separator = '/'); - std::string PathJoin(const std::string& Path1, const std::string& Path2, - const std::string& Path3, const std::string& Path4, char separator = '/'); - - - //------------------------------------------------------------------------------------------ - // Path Search - //------------------------------------------------------------------------------------------ - - // An interface for a path matching function, used by FindInPath() and FindInPaths() below - // - class IPathMatch - { - public: - virtual ~IPathMatch() {} - virtual bool Match(const std::string& s) const = 0; - }; - - // matches any pathname - class PathMatchAny : public IPathMatch - { - public: - virtual ~PathMatchAny() {} - inline bool Match(const std::string&) const { return true; } - }; - -#ifndef KM_WIN32 - // matches pathnames using a regular expression - class PathMatchRegex : public IPathMatch - { - regex_t m_regex; - PathMatchRegex(); - const PathMatchRegex& operator=(const PathMatchRegex&); - - public: - PathMatchRegex(const std::string& Pattern); - PathMatchRegex(const PathMatchRegex&); - virtual ~PathMatchRegex(); - bool Match(const std::string& s) const; - }; - - // matches pathnames using a Bourne shell glob expression - class PathMatchGlob : public IPathMatch - { - regex_t m_regex; - PathMatchGlob(); - const PathMatchGlob& operator=(const PathMatchGlob&); - - public: - PathMatchGlob(const std::string& Pattern); - PathMatchGlob(const PathMatchGlob&); - virtual ~PathMatchGlob(); - bool Match(const std::string& s) const; - }; -#endif /* !KM_WIN32 */ - - // Search all paths in SearchPaths for filenames matching Pattern (no directories are returned). - // Put results in FoundPaths. Returns after first find if one_shot is true. - PathList_t& FindInPath(const IPathMatch& Pattern, const std::string& SearchDir, - PathList_t& FoundPaths, bool one_shot = false, char separator = '/'); - - PathList_t& FindInPaths(const IPathMatch& Pattern, const PathList_t& SearchPaths, - PathList_t& FoundPaths, bool one_shot = false, char separator = '/'); - - //------------------------------------------------------------------------------------------ - // Directory Manipulation - //------------------------------------------------------------------------------------------ - - // Create a directory, creates intermediate directories as necessary - Result_t CreateDirectoriesInPath(const std::string& Path); - - // Delete a file (fails if the path points to a directory) - Result_t DeleteFile(const std::string& filename); - - // Recursively remove a file or directory - Result_t DeletePath(const std::string& pathname); - - //------------------------------------------------------------------------------------------ - // File I/O Wrappers - //------------------------------------------------------------------------------------------ - - // Instant IO for strings - // - // Reads an entire file into a string. - Result_t ReadFileIntoString(const char* filename, std::string& outString, ui32_t max_size = 8 * Megabyte); - - // Writes a string to a file, overwrites the existing file if present. - Result_t WriteStringIntoFile(const char* filename, const std::string& inString); - - // Instant IO for archivable objects - // - // Unarchives a file into an object - Result_t ReadFileIntoObject(const std::string& Filename, IArchive& Object, ui32_t max_size = 8 * Kumu::Megabyte); - - // Archives an object into a file - Result_t WriteObjectIntoFile(const IArchive& Object, const std::string& Filename); - - // Instant IO for memory buffers - // - // Unarchives a file into a buffer - Result_t ReadFileIntoBuffer(const std::string& Filename, Kumu::ByteString& Buffer, - ui32_t max_size = 8 * Kumu::Megabyte); - - // Archives a buffer into a file - Result_t WriteBufferIntoFile(const Kumu::ByteString& Buffer, const std::string& Filename); - - - //------------------------------------------------------------------------------------------ - // File I/O - //------------------------------------------------------------------------------------------ - - // - class FileReader - { - KM_NO_COPY_CONSTRUCT(FileReader); - - protected: - std::string m_Filename; - FileHandle m_Handle; - - public: - FileReader() : m_Handle(INVALID_HANDLE_VALUE) {} - virtual ~FileReader() { Close(); } - - Result_t OpenRead(const char*) const; // open the file for reading - Result_t Close() const; // close the file - fsize_t Size() const; // returns the file's current size - Result_t Seek(Kumu::fpos_t = 0, SeekPos_t = SP_BEGIN) const; // move the file pointer - Result_t Tell(Kumu::fpos_t* pos) const; // report the file pointer's location - Result_t Read(byte_t*, ui32_t, ui32_t* = 0) const; // read a buffer of data - - inline Kumu::fpos_t Tell() const // report the file pointer's location - { - Kumu::fpos_t tmp_pos; - Tell(&tmp_pos); - return tmp_pos; - } - - inline bool IsOpen() { // returns true if the file is open - return (m_Handle != INVALID_HANDLE_VALUE); - } - }; - - // - class FileWriter : public FileReader - { - class h__iovec; - mem_ptr<h__iovec> m_IOVec; - KM_NO_COPY_CONSTRUCT(FileWriter); - bool m_Hashing; - MD5_CTX m_MD5Context; - - public: - FileWriter(); - virtual ~FileWriter(); - - Result_t OpenWrite(const char*); // open a new file, overwrites existing - Result_t OpenModify(const char*); // open a file for read/write - - // this part of the interface takes advantage of the iovec structure on - // platforms that support it. For each call to Writev(const byte_t*, ui32_t, ui32_t*), - // the given buffer is added to an internal iovec struct. All items on the list - // are written to disk by a call to Writev(); - Result_t Writev(const byte_t*, ui32_t); // queue buffer for "gather" write - Result_t Writev(ui32_t* = 0); // write all queued buffers - - // if you call this while there are unwritten items on the iovec list, - // the iovec list will be written to disk before the given buffer,as though - // you had called Writev() first. - Result_t Write(const byte_t*, ui32_t, ui32_t* = 0); // write buffer to disk - - void StartHashing(); - void MaybeHash(void const *, int); - std::string StopHashing(); - }; - - Result_t CreateDirectoriesInPath(const std::string& Path); - Result_t FreeSpaceForPath(const std::string& path, Kumu::fsize_t& free_space, Kumu::fsize_t& total_space); - Result_t DeleteFile(const std::string& filename); - Result_t DeletePath(const std::string& pathname); - -} // namespace Kumu - - -#endif // _KM_FILEIO_H_ - - -// -// end KM_fileio.h -// diff --git a/asdcplib/src/KM_log.cpp b/asdcplib/src/KM_log.cpp deleted file mode 100755 index 7bd5926..0000000 --- a/asdcplib/src/KM_log.cpp +++ /dev/null @@ -1,379 +0,0 @@ -/* -Copyright (c) 2004-2011, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_log.cpp - \version $Id: KM_log.cpp,v 1.15 2011/03/08 19:03:47 jhurst Exp $ - \brief message logging API - */ - -#include <KM_util.h> -#include <KM_log.h> -#include <KM_mutex.h> -#include <sys/types.h> -#include <string.h> -#include <stdarg.h> -#include <iostream> -#include <sstream> - -#ifdef KM_WIN32 -#define getpid GetCurrentProcessId -#else -#include <unistd.h> -#endif - -//------------------------------------------------------------------------------------------ -// - -void -Kumu::ILogSink::vLogf(LogType_t type, const char* fmt, va_list* list) -{ - char buf[MaxLogLength]; - vsnprintf(buf, MaxLogLength, fmt, *list); - - WriteEntry(LogEntry(getpid(), type, buf)); -} - -//------------------------------------------------------------------------------------------ -// - -static Kumu::Mutex s_DefaultLogSinkLock; -static Kumu::ILogSink* s_DefaultLogSink = 0; -static Kumu::StdioLogSink s_StderrLogSink; - -// -void -Kumu::SetDefaultLogSink(ILogSink* Sink) -{ - AutoMutex L(s_DefaultLogSinkLock); - s_DefaultLogSink = Sink; -} - -// Returns the internal default sink. -Kumu::ILogSink& -Kumu::DefaultLogSink() -{ - AutoMutex L(s_DefaultLogSinkLock); - - if ( s_DefaultLogSink == 0 ) - s_DefaultLogSink = &s_StderrLogSink; - - return *s_DefaultLogSink; -} - - -//------------------------------------------------------------------------------------------ -// - -void -Kumu::EntryListLogSink::WriteEntry(const LogEntry& Entry) -{ - AutoMutex L(m_Lock); - - if ( Entry.TestFilter(m_filter) ) - m_Target.push_back(Entry); -} - -//------------------------------------------------------------------------------------------ -// - -void -Kumu::StdioLogSink::WriteEntry(const LogEntry& Entry) -{ - AutoMutex L(m_Lock); - std::string buf; - - if ( Entry.TestFilter(m_filter) ) - { - Entry.CreateStringWithOptions(buf, m_options); - fputs(buf.c_str(), m_stream); - } -} - -//--------------------------------------------------------------------------------- - -#ifdef KM_WIN32 -// -// http://www.codeguru.com/forum/showthread.php?t=231165 -// -void -Kumu::WinDbgLogSink::WriteEntry(const LogEntry& Entry) -{ - AutoMutex L(m_Lock); - std::string buf; - - if ( Entry.TestFilter(m_filter) ) - { - Entry.CreateStringWithOptions(buf, m_options); - ::OutputDebugStringA(buf.c_str()); - } -} -#endif - -//------------------------------------------------------------------------------------------ -// - -#ifndef KM_WIN32 -// -void -Kumu::StreamLogSink::WriteEntry(const LogEntry& Entry) -{ - AutoMutex L(m_Lock); - std::string buf; - - if ( Entry.TestFilter(m_filter) ) - { - Entry.CreateStringWithOptions(buf, m_options); - write(m_fd, buf.c_str(), buf.size()); - } -} - -// foolin with symbols -//------------------------------------------------------------------------------------------ -#include <syslog.h> -int const SYSLOG_ALERT = LOG_ALERT; -int const SYSLOG_CRIT = LOG_CRIT; -int const SYSLOG_ERR = LOG_ERR; -int const SYSLOG_WARNING = LOG_WARNING; -int const SYSLOG_NOTICE = LOG_NOTICE; -int const SYSLOG_INFO = LOG_INFO; -int const SYSLOG_DEBUG = LOG_DEBUG; -#undef LOG_ALERT -#undef LOG_CRIT -#undef LOG_ERR -#undef LOG_WARNING -#undef LOG_NOTICE -#undef LOG_INFO -#undef LOG_DEBUG -//------------------------------------------------------------------------------------------ - -Kumu::SyslogLogSink::SyslogLogSink(const std::string& source_name, int facility) -{ - if ( facility == 0 ) - facility = LOG_DAEMON; - - openlog(source_name.c_str(), LOG_CONS|LOG_NDELAY||LOG_PID, facility); -} - -Kumu::SyslogLogSink::~SyslogLogSink() -{ - closelog(); -} - -// -void -Kumu::SyslogLogSink::WriteEntry(const LogEntry& Entry) -{ - int priority = 0; - - switch ( Entry.Type ) - { - case Kumu::LOG_ALERT: priority = SYSLOG_ALERT; break; - case Kumu::LOG_CRIT: priority = SYSLOG_CRIT; break; - case Kumu::LOG_ERROR: priority = SYSLOG_ERR; break; - case Kumu::LOG_WARN: priority = SYSLOG_WARNING; break; - case Kumu::LOG_NOTICE: priority = SYSLOG_NOTICE; break; - case Kumu::LOG_INFO: priority = SYSLOG_INFO; break; - case Kumu::LOG_DEBUG: priority = SYSLOG_DEBUG; break; - } - - AutoMutex L(m_Lock); - - if ( Entry.TestFilter(m_filter) ) - { - syslog(priority, "%s", Entry.Msg.substr(0, Entry.Msg.size() - 1).c_str()); - } -} - -// -int -Kumu::SyslogNameToFacility(const std::string& facility_name) -{ - if ( facility_name == "LOG_DAEMON" ) return LOG_DAEMON; - if ( facility_name == "LOG_LOCAL0" ) return LOG_LOCAL0; - if ( facility_name == "LOG_LOCAL1" ) return LOG_LOCAL1; - if ( facility_name == "LOG_LOCAL2" ) return LOG_LOCAL2; - if ( facility_name == "LOG_LOCAL3" ) return LOG_LOCAL3; - if ( facility_name == "LOG_LOCAL4" ) return LOG_LOCAL4; - if ( facility_name == "LOG_LOCAL5" ) return LOG_LOCAL5; - if ( facility_name == "LOG_LOCAL6" ) return LOG_LOCAL6; - if ( facility_name == "LOG_LOCAL7" ) return LOG_LOCAL7; - - DefaultLogSink().Error("Unsupported facility name: %s, using default value LOG_DAEMON\n", facility_name.c_str()); - return LOG_DAEMON; -} - -#endif - -//------------------------------------------------------------------------------------------ - -// -std::basic_ostream<char, std::char_traits<char> >& -Kumu::operator<<(std::basic_ostream<char, std::char_traits<char> >& strm, LogEntry const& Entry) -{ - std::basic_ostringstream<char, std::char_traits<char> > s; - s.copyfmt(strm); - s.width(0); - std::string buf; - - s << Entry.CreateStringWithOptions(buf, LOG_OPTION_ALL); - - strm << s.str(); - return strm; -} - -//------------------------------------------------------------------------------------------ - - -// -bool -Kumu::LogEntry::TestFilter(i32_t filter) const -{ - switch ( Type ) - { - case LOG_CRIT: - if ( (filter & LOG_ALLOW_CRIT) == 0 ) - return false; - break; - - case LOG_ALERT: - if ( (filter & LOG_ALLOW_ALERT) == 0 ) - return false; - break; - - case LOG_NOTICE: - if ( (filter & LOG_ALLOW_NOTICE) == 0 ) - return false; - break; - - case LOG_ERROR: - if ( (filter & LOG_ALLOW_ERROR) == 0 ) - return false; - break; - - case LOG_WARN: - if ( (filter & LOG_ALLOW_WARN) == 0 ) - return false; - break; - - case LOG_INFO: - if ( (filter & LOG_ALLOW_INFO) == 0 ) - return false; - break; - - case LOG_DEBUG: - if ( (filter & LOG_ALLOW_DEBUG) == 0 ) - return false; - break; - - } - - return true; -} - -// -std::string& -Kumu::LogEntry::CreateStringWithOptions(std::string& out_buf, i32_t opt) const -{ - out_buf.erase(); - - if ( opt != 0 ) - { - char buf[64]; - - if ( (opt & LOG_OPTION_TIMESTAMP) != 0 ) - { - Timestamp Now; - out_buf += Now.EncodeString(buf, 64); - } - - if ( (opt & LOG_OPTION_PID) != 0 ) - { - if ( ! out_buf.empty() ) out_buf += " "; - snprintf(buf, 64, "%d", PID); - out_buf += buf; - } - - if ( (opt & LOG_OPTION_TYPE) != 0 ) - { - if ( ! out_buf.empty() ) out_buf += " "; - - switch ( Type ) - { - case LOG_CRIT: out_buf += "CRT"; break; - case LOG_ALERT: out_buf += "ALR"; break; - case LOG_NOTICE: out_buf += "NTC"; break; - case LOG_ERROR: out_buf += "ERR"; break; - case LOG_WARN: out_buf += "WRN"; break; - case LOG_INFO: out_buf += "INF"; break; - case LOG_DEBUG: out_buf += "DBG"; break; - default: out_buf += "DFL"; break; - } - } - - out_buf.insert(0, "["); - out_buf += "]: "; - } - - out_buf += Msg; - return out_buf; -} - - -// -ui32_t -Kumu::LogEntry::ArchiveLength() const -{ - return sizeof(ui32_t) - + EventTime.ArchiveLength() - + sizeof(ui32_t) - + sizeof(ui32_t) + Msg.size(); -} - -// -bool -Kumu::LogEntry::Archive(Kumu::MemIOWriter* Writer) const -{ - if ( ! Writer->WriteUi32BE(PID) ) return false; - if ( ! EventTime.Archive(Writer) ) return false; - if ( ! Writer->WriteUi32BE(Type) ) return false; - if ( ! ArchiveString(*Writer, Msg) ) return false; - return true; -} - -// -bool -Kumu::LogEntry::Unarchive(Kumu::MemIOReader* Reader) -{ - if ( ! Reader->ReadUi32BE(&PID) ) return false; - if ( ! EventTime.Unarchive(Reader) ) return false; - if ( ! Reader->ReadUi32BE((ui32_t*)&Type) ) return false; - if ( ! UnarchiveString(*Reader, Msg) ) return false; - return true; -} - -// -// end -// diff --git a/asdcplib/src/KM_log.h b/asdcplib/src/KM_log.h deleted file mode 100755 index 4981b17..0000000 --- a/asdcplib/src/KM_log.h +++ /dev/null @@ -1,321 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_log.h - \version $Id: KM_log.h,v 1.13 2011/03/05 19:15:35 jhurst Exp $ - \brief message logging API - */ - - -#ifndef _KM_LOG_H_ -#define _KM_LOG_H_ - -#include <KM_platform.h> -#include <KM_mutex.h> -#include <KM_util.h> -#include <stdarg.h> -#include <errno.h> -#include <iosfwd> - -#define LOG_MSG_IMPL(t) \ - va_list args; \ - va_start(args, fmt); \ - vLogf((t), fmt, &args); \ - va_end(args) - -// Returns RESULT_PTR if the given argument is NULL. -# define KM_TEST_NULL_L(p) \ - if ( (p) == 0 ) { \ - DefaultLogSink().Error("NULL pointer in file %s, line %d\n", __FILE__, __LINE__); \ - return Kumu::RESULT_PTR; \ - } - -// Returns RESULT_PTR if the given argument is NULL. It then -// assumes that the argument is a pointer to a string and returns -// RESULT_NULL_STR if the first character is '\0'. -// -# define KM_TEST_NULL_STR_L(p) \ - KM_TEST_NULL_L(p); \ - if ( (p)[0] == '\0' ) { \ - DefaultLogSink().Error("Empty string in file %s, line %d\n", __FILE__, __LINE__); \ - return Kumu::RESULT_NULL_STR; \ - } - - -namespace Kumu -{ - // no log message will exceed this length - const ui32_t MaxLogLength = 512; - - //--------------------------------------------------------------------------------- - // message logging - - // Log messages are recorded by objects which implement the interface given - // in the class ILogSink below. The library maintains a pointer to a default - // log sink which is used by the library to report messages. - // - - // types of log messages - enum LogType_t { - LOG_DEBUG, // detailed developer info - LOG_INFO, // developer info - LOG_WARN, // library non-fatal or near-miss error - LOG_ERROR, // library fatal error - LOG_NOTICE, // application user info - LOG_ALERT, // application non-fatal or near-miss error - LOG_CRIT, // application fatal error - }; - - - // OR these values together to come up with sink filter flags. - // The default mask is LOG_ALLOW_ALL (all messages). - const i32_t LOG_ALLOW_DEBUG = 0x00000001; - const i32_t LOG_ALLOW_INFO = 0x00000002; - const i32_t LOG_ALLOW_WARN = 0x00000004; - const i32_t LOG_ALLOW_ERROR = 0x00000008; - const i32_t LOG_ALLOW_NOTICE = 0x00000010; - const i32_t LOG_ALLOW_ALERT = 0x00000020; - const i32_t LOG_ALLOW_CRIT = 0x00000040; - const i32_t LOG_ALLOW_NONE = 0x00000000; - const i32_t LOG_ALLOW_ALL = 0x000fffff; - - // options are used to control display format default is 0. - const i32_t LOG_OPTION_TYPE = 0x01000000; - const i32_t LOG_OPTION_TIMESTAMP = 0x02000000; - const i32_t LOG_OPTION_PID = 0x04000000; - const i32_t LOG_OPTION_NONE = 0x00000000; - const i32_t LOG_OPTION_ALL = 0xfff00000; - - // A log message with environmental metadata - class LogEntry : public IArchive - { - public: - ui32_t PID; - Timestamp EventTime; - LogType_t Type; - std::string Msg; - - LogEntry() {} - LogEntry(ui32_t pid, LogType_t t, const char* m) : PID(pid), Type(t), Msg(m) { assert(m); } - virtual ~LogEntry() {} - - // returns true if the message Type is present in the mask - bool TestFilter(i32_t mask_value) const; - - // renders the message into outstr using the given dispaly options - // returns outstr& - std::string& CreateStringWithOptions(std::string& outstr, i32_t mask_value) const; - - // IArchive - bool HasValue() const { return ! Msg.empty(); } - ui32_t ArchiveLength() const; - bool Archive(MemIOWriter* Writer) const; - bool Unarchive(MemIOReader* Reader); - }; - - // - std::basic_ostream<char, std::char_traits<char> >& - operator<<(std::basic_ostream<char, std::char_traits<char> >& strm, LogEntry const& Entry); - - - typedef ArchivableList<LogEntry> LogEntryList; - - // - class ILogSink - { - protected: - i32_t m_filter; - i32_t m_options; - - public: - ILogSink() : m_filter(LOG_ALLOW_ALL), m_options(LOG_OPTION_NONE) {} - virtual ~ILogSink() {} - - void SetFilterFlag(i32_t f) { m_filter |= f; } - void UnsetFilterFlag(i32_t f) { m_filter &= ~f; } - bool TestFilterFlag(i32_t f) const { return ((m_filter & f) == f); } - - void SetOptionFlag(i32_t o) { m_options |= o; } - void UnsetOptionFlag(i32_t o) { m_options &= ~o; } - bool TestOptionFlag(i32_t o) const { return ((m_options & o) == o); } - - // library messages - void Error(const char* fmt, ...) { LOG_MSG_IMPL(LOG_ERROR); } - void Warn(const char* fmt, ...) { LOG_MSG_IMPL(LOG_WARN); } - void Info(const char* fmt, ...) { LOG_MSG_IMPL(LOG_INFO); } - void Debug(const char* fmt, ...) { LOG_MSG_IMPL(LOG_DEBUG); } - - // application messages - void Critical(const char* fmt, ...) { LOG_MSG_IMPL(LOG_CRIT); } - void Alert(const char* fmt, ...) { LOG_MSG_IMPL(LOG_ALERT); } - void Notice(const char* fmt, ...) { LOG_MSG_IMPL(LOG_NOTICE); } - - // message with type - void Logf(LogType_t type, const char* fmt, ...) { LOG_MSG_IMPL(type); } - - // actual log sink input - virtual void vLogf(LogType_t, const char*, va_list*); - virtual void WriteEntry(const LogEntry&) = 0; - }; - - - // Sets the internal default sink to the given receiver. If the given value - // is zero, sets the default sink to the internally allocated stderr sink. - void SetDefaultLogSink(ILogSink* = 0); - - // Returns the internal default sink. - ILogSink& DefaultLogSink(); - - - // Sets a log sink as the default until the object is destroyed. - // The original default sink is saved and then restored on delete. - class LogSinkContext - { - KM_NO_COPY_CONSTRUCT(LogSinkContext); - LogSinkContext(); - ILogSink* m_orig; - - public: - LogSinkContext(ILogSink& sink) { - m_orig = &DefaultLogSink(); - SetDefaultLogSink(&sink); - } - - ~LogSinkContext() { - SetDefaultLogSink(m_orig); - } - }; - - //------------------------------------------------------------------------------------------ - // - - // write messages to two subordinate log sinks - class TeeLogSink : public ILogSink - { - KM_NO_COPY_CONSTRUCT(TeeLogSink); - TeeLogSink(); - - ILogSink& m_a; - ILogSink& m_b; - - public: - TeeLogSink(ILogSink& a, ILogSink& b) : m_a(a), m_b(b) {} - virtual ~TeeLogSink() {} - - void WriteEntry(const LogEntry& Entry) { - m_a.WriteEntry(Entry); - m_b.WriteEntry(Entry); - } - }; - - // collect log messages into the given list, does not test filter - class EntryListLogSink : public ILogSink - { - Mutex m_Lock; - LogEntryList& m_Target; - KM_NO_COPY_CONSTRUCT(EntryListLogSink); - EntryListLogSink(); - - public: - EntryListLogSink(LogEntryList& target) : m_Target(target) {} - virtual ~EntryListLogSink() {} - - void WriteEntry(const LogEntry& Entry); - }; - - - // write messages to a POSIX stdio stream - class StdioLogSink : public ILogSink - { - Mutex m_Lock; - FILE* m_stream; - KM_NO_COPY_CONSTRUCT(StdioLogSink); - - public: - StdioLogSink() : m_stream(stderr) {} - StdioLogSink(FILE* stream) : m_stream(stream) {} - virtual ~StdioLogSink() {} - - void WriteEntry(const LogEntry&); - }; - -#ifdef KM_WIN32 - // write messages to the Win32 debug stream - class WinDbgLogSink : public ILogSink - { - Mutex m_Lock; - KM_NO_COPY_CONSTRUCT(WinDbgLogSink); - - public: - WinDbgLogSink() {} - virtual ~WinDbgLogSink() {} - - void WriteEntry(const LogEntry&); - }; -#endif - -#ifndef KM_WIN32 - // write messages to a POSIX file descriptor - class StreamLogSink : public ILogSink - { - Mutex m_Lock; - int m_fd; - KM_NO_COPY_CONSTRUCT(StreamLogSink); - StreamLogSink(); - - public: - StreamLogSink(int fd) : m_fd(fd) {} - virtual ~StreamLogSink() {} - - void WriteEntry(const LogEntry&); - }; - - // write messages to the syslog facility - class SyslogLogSink : public ILogSink - { - Mutex m_Lock; - KM_NO_COPY_CONSTRUCT(SyslogLogSink); - SyslogLogSink(); - - public: - SyslogLogSink(const std::string& source_name, int facility); - virtual ~SyslogLogSink(); - void WriteEntry(const LogEntry&); - }; - - // convert a string into the appropriate syslog facility id - int SyslogNameToFacility(const std::string& facility_name); - -#endif - - -} // namespace Kumu - -#endif // _KM_LOG_H_ - -// -// end KM_log.h -// diff --git a/asdcplib/src/KM_memio.h b/asdcplib/src/KM_memio.h deleted file mode 100755 index 69942c7..0000000 --- a/asdcplib/src/KM_memio.h +++ /dev/null @@ -1,249 +0,0 @@ -/* -Copyright (c) 2006-2011, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_memio.h - \version $Id: KM_memio.h,v 1.9 2011/03/07 06:46:36 jhurst Exp $ - \brief abstraction for byte-oriented conversion of integers and objects - */ - -#ifndef _KM_MEMIO_H_ -#define _KM_MEMIO_H_ - -#include <KM_platform.h> -#include <string> -#include <cstring> - -namespace Kumu -{ - class ByteString; - - // - class MemIOWriter - { - KM_NO_COPY_CONSTRUCT(MemIOWriter); - MemIOWriter(); - - protected: - byte_t* m_p; - ui32_t m_capacity; - ui32_t m_size; - - public: - MemIOWriter(byte_t* p, ui32_t c) : m_p(p), m_capacity(c), m_size(0) { - assert(m_p); assert(m_capacity); - } - - MemIOWriter(ByteString* Buf); - ~MemIOWriter() {} - - inline void Reset() { m_size = 0; } - inline byte_t* Data() { return m_p; } - inline const byte_t* RoData() const { return m_p; } - inline byte_t* CurrentData() { return m_p + m_size; } - inline ui32_t Length() const { return m_size; } - inline ui32_t Remainder() const { return m_capacity - m_size; } - - inline bool AddOffset(ui32_t offset) { - if ( ( m_size + offset ) > m_capacity ) - return false; - - m_size += offset; - return true; - - } - - inline bool WriteRaw(const byte_t* p, ui32_t buf_len) { - if ( ( m_size + buf_len ) > m_capacity ) - return false; - - memcpy(m_p + m_size, p, buf_len); - m_size += buf_len; - return true; - } - - bool WriteBER(ui64_t i, ui32_t ber_len); - - inline bool WriteUi8(ui8_t i) { - if ( ( m_size + 1 ) > m_capacity ) - return false; - - *(m_p + m_size) = i; - m_size++; - return true; - } - - inline bool WriteUi16BE(ui16_t i) { - if ( ( m_size + sizeof(ui16_t) ) > m_capacity ) - return false; - - i2p<ui16_t>(KM_i16_BE(i), m_p + m_size); - m_size += sizeof(ui16_t); - return true; - } - - inline bool WriteUi32BE(ui32_t i) { - if ( ( m_size + sizeof(ui32_t) ) > m_capacity ) - return false; - - i2p<ui32_t>(KM_i32_BE(i), m_p + m_size); - m_size += sizeof(ui32_t); - return true; - } - - inline bool WriteUi64BE(ui64_t i) { - if ( ( m_size + sizeof(ui64_t) ) > m_capacity ) - return false; - - i2p<ui64_t>(KM_i64_BE(i), m_p + m_size); - m_size += sizeof(ui64_t); - return true; - } - - inline bool WriteString(const std::string& str) { - ui32_t len = static_cast<ui32_t>(str.length()); - if ( ! WriteUi32BE(len) ) return false; - if ( ! WriteRaw((const byte_t*)str.c_str(), len) ) return false; - return true; - } - }; - - // - class MemIOReader - { - KM_NO_COPY_CONSTRUCT(MemIOReader); - MemIOReader(); - - protected: - const byte_t* m_p; - ui32_t m_capacity; - ui32_t m_size; // this is sort of a misnomer, when we are reading it measures offset - - public: - MemIOReader(const byte_t* p, ui32_t c) : - m_p(p), m_capacity(c), m_size(0) { - assert(m_p); assert(m_capacity); - } - - MemIOReader(const ByteString* Buf); - ~MemIOReader() {} - - inline void Reset() { m_size = 0; } - inline const byte_t* Data() const { return m_p; } - inline const byte_t* CurrentData() const { return m_p + m_size; } - inline ui32_t Offset() const { return m_size; } - inline ui32_t Remainder() const { return m_capacity - m_size; } - - inline bool SkipOffset(ui32_t offset) { - if ( ( m_size + offset ) > m_capacity ) - return false; - - m_size += offset; - return true; - } - - inline bool ReadRaw(byte_t* p, ui32_t buf_len) { - if ( ( m_size + buf_len ) > m_capacity ) - return false; - - memcpy(p, m_p + m_size, buf_len); - m_size += buf_len; - return true; - } - - bool ReadBER(ui64_t* i, ui32_t* ber_len); - - inline bool ReadUi8(ui8_t* i) { - assert(i); - if ( ( m_size + 1 ) > m_capacity ) - return false; - - *i = *(m_p + m_size); - m_size++; - return true; - } - - inline bool ReadUi16BE(ui16_t* i) { - assert(i); - if ( ( m_size + sizeof(ui16_t) ) > m_capacity ) - return false; - - *i = KM_i16_BE(cp2i<ui16_t>(m_p + m_size)); - m_size += sizeof(ui16_t); - return true; - } - - inline bool ReadUi32BE(ui32_t* i) { - assert(i); - if ( ( m_size + sizeof(ui32_t) ) > m_capacity ) - return false; - - *i = KM_i32_BE(cp2i<ui32_t>(m_p + m_size)); - m_size += sizeof(ui32_t); - return true; - } - - inline bool ReadUi64BE(ui64_t* i) { - assert(i); - if ( ( m_size + sizeof(ui64_t) ) > m_capacity ) - return false; - - *i = KM_i64_BE(cp2i<ui64_t>(m_p + m_size)); - m_size += sizeof(ui64_t); - return true; - } - - inline bool ReadString(std::string& str) - { - ui32_t str_length; - if ( ! ReadUi32BE(&str_length) ) return false; - if ( ( m_size + str_length ) > m_capacity ) return false; - str.assign((const char*)CurrentData(), str_length); - if ( ! SkipOffset(str_length) ) return false; - return true; - } - }; - - // - inline bool - UnarchiveString(MemIOReader& Reader, std::string& str) { - return Reader.ReadString(str); - } - - // - inline bool - ArchiveString(MemIOWriter& Writer, const std::string& str) - { - return Writer.WriteString(str); - } - - -} // namespace Kumu - -#endif // _KM_MEMIO_H_ - -// -// end KM_memio.h -// diff --git a/asdcplib/src/KM_mutex.h b/asdcplib/src/KM_mutex.h deleted file mode 100755 index 396531d..0000000 --- a/asdcplib/src/KM_mutex.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_mutex.h - \version $Id: KM_mutex.h,v 1.2 2009/04/09 19:16:49 msheby Exp $ - \brief platform portability - */ - -#ifndef _KM_MUTEX_H_ -#define _KM_MUTEX_H_ - -#include <KM_platform.h> - -#ifndef KM_WIN32 -# include <pthread.h> -#endif - -namespace Kumu -{ -#ifdef KM_WIN32 - class Mutex - { - CRITICAL_SECTION m_Mutex; - KM_NO_COPY_CONSTRUCT(Mutex); - - public: - inline Mutex() { ::InitializeCriticalSection(&m_Mutex); } - inline ~Mutex() { ::DeleteCriticalSection(&m_Mutex); } - inline void Lock() { ::EnterCriticalSection(&m_Mutex); } - inline void Unlock() { ::LeaveCriticalSection(&m_Mutex); } - }; -#else // KM_WIN32 - class Mutex - { - pthread_mutex_t m_Mutex; - KM_NO_COPY_CONSTRUCT(Mutex); - - public: - inline Mutex() { pthread_mutex_init(&m_Mutex, 0); } - inline ~Mutex() { pthread_mutex_destroy(&m_Mutex); } - inline void Lock() { pthread_mutex_lock(&m_Mutex); } - inline void Unlock() { pthread_mutex_unlock(&m_Mutex); } - }; -#endif // KM_WIN32 - - // automatic Mutex management within a block - - // the mutex is created by the constructor and - // released by the destructor - class AutoMutex - { - Mutex& m_Mutex; - AutoMutex(); - KM_NO_COPY_CONSTRUCT(AutoMutex); - - public: - AutoMutex(Mutex& Mtx) : m_Mutex(Mtx) { m_Mutex.Lock(); } - ~AutoMutex() { m_Mutex.Unlock(); } - }; - -} // namespace Kumu - -#endif // _KM_MUTEX_H_ - -// -// end KM_mutex.h -// diff --git a/asdcplib/src/KM_platform.h b/asdcplib/src/KM_platform.h deleted file mode 100644 index 266c01a..0000000 --- a/asdcplib/src/KM_platform.h +++ /dev/null @@ -1,270 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_platform.h - \version $Id: KM_platform.h,v 1.6 2010/09/14 19:21:47 msheby Exp $ - \brief platform portability - */ - -#ifndef _KM_PLATFORM_H_ -# define _KM_PLATFORM_H_ - -# ifdef __APPLE__ -# ifdef __BIG_ENDIAN__ -# define KM_BIG_ENDIAN -# endif -# endif - -# ifdef KM_WIN32 -# define WIN32_LEAN_AND_MEAN -# define VC_EXTRALEAN -# include <windows.h> -/* we like the "SendMessage" name, so get rid of the preprocessor define - * and replace with an inline function */ -# undef SendMessage -#ifdef UNICODE
-inline
-WINUSERAPI
-LRESULT
-WINAPI
-SendMessage(
- HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam)
-{
- return SendMessageW(hWnd, Msg, wParam, lParam);
-}
-#else
-inline
-WINUSERAPI
-LRESULT
-WINAPI
-SendMessage(
- HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam)
-{
- return SendMessageA(hWnd, Msg, wParam, lParam);
-}
-#endif // !UNICODE
- -# include <stdlib.h> -# include <stdio.h> -# include <stdarg.h> -# pragma warning(disable:4786) // Ignore "identifer > 255 characters" warning - -typedef unsigned __int64 ui64_t; -typedef __int64 i64_t; -# define i64_C(c) (i64_t)(c) -# define ui64_C(c) (ui64_t)(c) -# define snprintf _snprintf -# define vsnprintf _vsnprintf - -# else // KM_WIN32 -typedef unsigned long long ui64_t; -typedef long long i64_t; -# define i64_C(c) c##LL -# define ui64_C(c) c##ULL - -# endif // KM_WIN32 - -# include <stdio.h> -# include <assert.h> -# include <stdlib.h> -# include <limits.h> - -typedef unsigned char byte_t; -typedef char i8_t; -typedef unsigned char ui8_t; -typedef short i16_t; -typedef unsigned short ui16_t; -typedef int i32_t; -typedef unsigned int ui32_t; - - -namespace Kumu -{ - inline ui16_t Swap2(ui16_t i) - { - return ( (i << 8) | (( i & 0xff00) >> 8) ); - } - - inline ui32_t Swap4(ui32_t i) - { - return - ( (i & 0x000000ffUL) << 24 ) | - ( (i & 0xff000000UL) >> 24 ) | - ( (i & 0x0000ff00UL) << 8 ) | - ( (i & 0x00ff0000UL) >> 8 ); - } - - inline ui64_t Swap8(ui64_t i) - { - return - ( (i & ui64_C(0x00000000000000FF)) << 56 ) | - ( (i & ui64_C(0xFF00000000000000)) >> 56 ) | - ( (i & ui64_C(0x000000000000FF00)) << 40 ) | - ( (i & ui64_C(0x00FF000000000000)) >> 40 ) | - ( (i & ui64_C(0x0000000000FF0000)) << 24 ) | - ( (i & ui64_C(0x0000FF0000000000)) >> 24 ) | - ( (i & ui64_C(0x00000000FF000000)) << 8 ) | - ( (i & ui64_C(0x000000FF00000000)) >> 8 ); - } - - // - template<class T> - inline T xmin(T lhs, T rhs) { - return (lhs < rhs) ? lhs : rhs; - } - - // - template<class T> - inline T xmax(T lhs, T rhs) { - return (lhs > rhs) ? lhs : rhs; - } - - // - template<class T> - inline T xclamp(T v, T l, T h) { - if ( v < l ) return l; - if ( v > h ) return h; - return v; - } - - - // read an integer from byte-structured storage - template<class T> - inline T cp2i(const byte_t* p) { return *(T*)p; } - - // write an integer to byte-structured storage - template<class T> - inline void i2p(T i, byte_t* p) { *(T*)p = i; } - -# ifdef KM_BIG_ENDIAN -# define KM_i16_LE(i) Kumu::Swap2(i) -# define KM_i32_LE(i) Kumu::Swap4(i) -# define KM_i64_LE(i) Kumu::Swap8(i) -# define KM_i16_BE(i) (i) -# define KM_i32_BE(i) (i) -# define KM_i64_BE(i) (i) -# else -# define KM_i16_LE(i) (i) -# define KM_i32_LE(i) (i) -# define KM_i64_LE(i) (i) -# define KM_i16_BE(i) Kumu::Swap2(i) -# define KM_i32_BE(i) Kumu::Swap4(i) -# define KM_i64_BE(i) Kumu::Swap8(i) -# endif // KM_BIG_ENDIAN - - // A non-reference counting, auto-delete container for internal - // member object pointers. - template <class T> - class mem_ptr - { - mem_ptr(T&); - - protected: - T* m_p; // the thing we point to - - public: - mem_ptr() : m_p(0) {} - mem_ptr(T* p) : m_p(p) {} - ~mem_ptr() { delete m_p; } - - inline T& operator*() const { return *m_p; } - inline T* operator->() const { return m_p; } - inline operator T*()const { return m_p; } - inline const mem_ptr<T>& operator=(T* p) { this->set(p); return *this; } - inline T* set(T* p) { delete m_p; m_p = p; return m_p; } - inline T* get() const { return m_p; } - inline void release() { m_p = 0; } - inline bool empty() const { return m_p == 0; } - }; - -} // namespace Kumu - -// Produces copy constructor boilerplate. Allows convenient private -// declatarion of copy constructors to prevent the compiler from -// silently manufacturing default methods. -# define KM_NO_COPY_CONSTRUCT(T) \ - T(const T&); \ - T& operator=(const T&) - -/* -// Example - class foo - { - KM_NO_COPY_CONSTRUCT(foo); // accessing private mthods will cause compile time error - public: - // ... - }; -*/ - -// Produces copy constructor boilerplate. Implements -// copy and assignment, see example below -# define KM_EXPLICIT_COPY_CONSTRUCT(T) \ - T(const T&); \ - const T& operator=(const T&) - -# define KM_EXPLICIT_COPY_CONSTRUCT_IMPL_START(N, T) \ - void T##_copy_impl(N::T& lhs, const N::T& rhs) \ - { - -#define KM_COPY_ITEM(I) lhs.I = rhs.I; - -# define KM_EXPLICIT_COPY_CONSTRUCT_IMPL_END(N, T) \ - } \ - N::T::T(const N::T& rhs) { T##_copy_impl(*this, rhs); } \ - const N::T& N::T::operator=(const N::T& rhs) { T##_copy_impl(*this, rhs); return *this; } - -/* -// Example -namespace bar { - class foo - { - public: - std::string param_a; - int param_b; - - KM_EXPLICIT_COPY_CONSTRUCT(foo); - // ... - }; -} - -// -KM_EXPLICIT_COPY_CONSTRUCT_IMPL_START(bar, foo) -KM_COPY_ITEM(param_a) -KM_COPY_ITEM(param_b) -KM_EXPLICIT_COPY_CONSTRUCT_IMPL_END(bar, foo) -*/ - -#endif // _KM_PLATFORM_H_ - -// -// KM_platform.h -// diff --git a/asdcplib/src/KM_prng.cpp b/asdcplib/src/KM_prng.cpp deleted file mode 100755 index 4e85cc5..0000000 --- a/asdcplib/src/KM_prng.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* -*- c-basic-offset: 2; -*- */ - -/* -Copyright (c) 2006-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_prng.cpp - \version $Id: KM_prng.cpp,v 1.9 2011/06/14 23:38:33 jhurst Exp $ - \brief Fortuna pseudo-random number generator - */ - -#include <KM_prng.h> -#include <KM_log.h> -#include <KM_mutex.h> -#include <string.h> -#include <assert.h> -#include <openssl/aes.h> -#include <openssl/sha.h> -#include <openssl/bn.h> - -using namespace Kumu; - - -#ifdef KM_WIN32 -# include <wincrypt.h> -#else // KM_WIN32 -# include <KM_fileio.h> -const char* DEV_URANDOM = "/dev/urandom"; -#endif // KM_WIN32 - -const ui32_t RNG_KEY_SIZE = 512UL; -const ui32_t RNG_KEY_SIZE_BITS = 256UL; -const ui32_t RNG_BLOCK_SIZE = 16UL; -const ui32_t MAX_SEQUENCE_LEN = 0x00040000UL; - - -// internal implementation class -class h__RNG -{ - KM_NO_COPY_CONSTRUCT(h__RNG); - -public: - AES_KEY m_Context; - byte_t m_ctr_buf[RNG_BLOCK_SIZE]; - Mutex m_Lock; - unsigned int m_libdcp_test_rng_state; - - h__RNG() - { - memset(m_ctr_buf, 0, RNG_BLOCK_SIZE); - byte_t rng_key[RNG_KEY_SIZE]; - - { // this block scopes the following AutoMutex so that it will be - // released before the call to set_key() below. - AutoMutex Lock(m_Lock); - -#ifdef KM_WIN32 - HCRYPTPROV hProvider = 0; - CryptAcquireContext(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); - CryptGenRandom(hProvider, RNG_KEY_SIZE, rng_key); -#else // KM_WIN32 - // on POSIX systems we simply read some seed from /dev/urandom - FileReader URandom; - - Result_t result = URandom.OpenRead(DEV_URANDOM); - - if ( KM_SUCCESS(result) ) - { - ui32_t read_count; - result = URandom.Read(rng_key, RNG_KEY_SIZE, &read_count); - } - - if ( KM_FAILURE(result) ) - DefaultLogSink().Error("Error opening random device: %s\n", DEV_URANDOM); - -#endif // KM_WIN32 - } // end AutoMutex context - - set_key(rng_key); - } - - // - void - set_key(const byte_t* key_fodder) - { - assert(key_fodder); - byte_t sha_buf[20]; - SHA_CTX SHA; - SHA1_Init(&SHA); - - SHA1_Update(&SHA, (byte_t*)&m_Context, sizeof(m_Context)); - SHA1_Update(&SHA, key_fodder, RNG_KEY_SIZE); - SHA1_Final(sha_buf, &SHA); - - AutoMutex Lock(m_Lock); - AES_set_encrypt_key(sha_buf, RNG_KEY_SIZE_BITS, &m_Context); - *(ui32_t*)(m_ctr_buf + 12) = 1; - } - - // - void - fill_rand(byte_t* buf, ui32_t len) - { - assert(len <= MAX_SEQUENCE_LEN); - ui32_t gen_count = 0; - AutoMutex Lock(m_Lock); - - while ( gen_count + RNG_BLOCK_SIZE <= len ) - { - AES_encrypt(m_ctr_buf, buf + gen_count, &m_Context); - *(ui32_t*)(m_ctr_buf + 12) += 1; - gen_count += RNG_BLOCK_SIZE; - } - - if ( len != gen_count ) // partial count needed? - { - byte_t tmp[RNG_BLOCK_SIZE]; - AES_encrypt(m_ctr_buf, tmp, &m_Context); - memcpy(buf + gen_count, tmp, len - gen_count); - } - - } -}; - - -static h__RNG* s_RNG = 0; - - -//------------------------------------------------------------------------------------------ -// -// Fortuna public interface - -Kumu::FortunaRNG::FortunaRNG() -{ - if ( s_RNG == 0 ) - s_RNG = new h__RNG; -} - -Kumu::FortunaRNG::~FortunaRNG() {} - -// -const byte_t* -Kumu::FortunaRNG::FillRandom(byte_t* buf, ui32_t len) -{ - assert(buf); - assert(s_RNG); - const byte_t* front_of_buffer = buf; - - while ( len ) - { - // 2^20 bytes max per seeding, use 2^19 to save - // room for generating reseed values - ui32_t gen_size = xmin(len, MAX_SEQUENCE_LEN); - s_RNG->fill_rand(buf, gen_size); - buf += gen_size; - len -= gen_size; - - // re-seed the generator - byte_t rng_key[RNG_KEY_SIZE]; - s_RNG->fill_rand(rng_key, RNG_KEY_SIZE); - s_RNG->set_key(rng_key); - } - - return front_of_buffer; -} - -// -const byte_t* -Kumu::FortunaRNG::FillRandom(Kumu::ByteString& Buffer) -{ - FillRandom(Buffer.Data(), Buffer.Capacity()); - Buffer.Length(Buffer.Capacity()); - return Buffer.Data(); -} - -//------------------------------------------------------------------------------------------ - -// -// FIPS 186-2 Sec. 3.1 as modified by Change 1, section entitled "General Purpose Random Number Generation" -void -Kumu::Gen_FIPS_186_Value(const byte_t* key, ui32_t key_size, byte_t* out_buf, ui32_t out_buf_len) -{ - byte_t sha_buf[SHA_DIGEST_LENGTH]; - ui32_t const xkey_len = 64; // 512/8 - byte_t xkey[xkey_len]; - BN_CTX* ctx1 = BN_CTX_new(); // used by BN_* functions - assert(ctx1); - - if ( key_size > xkey_len ) - DefaultLogSink().Warn("Key too large for FIPS 186 seed, truncating to 64 bytes.\n"); - - // init key - memset(xkey, 0, xkey_len); - memcpy(xkey, key, xmin<ui32_t>(key_size, xkey_len)); - - if ( key_size < SHA_DIGEST_LENGTH ) - key_size = SHA_DIGEST_LENGTH; // pad short key ( b < 160 ) - - // create the 2^b constant - BIGNUM c_2powb, c_2, c_b; - BN_init(&c_2powb); BN_init(&c_2); BN_init(&c_b); - BN_set_word(&c_2, 2); - BN_set_word(&c_b, key_size * 8); - BN_exp(&c_2powb, &c_2, &c_b, ctx1); - - for (;;) - { - SHA_CTX SHA; - - // step c -- x = G(t,xkey) - SHA1_Init(&SHA); // set t - SHA1_Update(&SHA, xkey, xkey_len); - - ui32_t* buf_p = (ui32_t*)sha_buf; - *buf_p++ = KM_i32_BE(SHA.h0); - *buf_p++ = KM_i32_BE(SHA.h1); - *buf_p++ = KM_i32_BE(SHA.h2); - *buf_p++ = KM_i32_BE(SHA.h3); - *buf_p++ = KM_i32_BE(SHA.h4); - memcpy(out_buf, sha_buf, xmin<ui32_t>(out_buf_len, SHA_DIGEST_LENGTH)); - - if ( out_buf_len <= SHA_DIGEST_LENGTH ) - break; - - out_buf_len -= SHA_DIGEST_LENGTH; - out_buf += SHA_DIGEST_LENGTH; - - // step d -- XKEY = (1 + XKEY + x) mod 2^b - BIGNUM bn_tmp, bn_xkey, bn_x_n; - BN_init(&bn_tmp); BN_init(&bn_xkey); BN_init(&bn_x_n); - - BN_bin2bn(xkey, key_size, &bn_xkey); - BN_bin2bn(sha_buf, SHA_DIGEST_LENGTH, &bn_x_n); - BN_add_word(&bn_xkey, 1); // xkey += 1 - BN_add(&bn_tmp, &bn_xkey, &bn_x_n); // xkey += x - BN_mod(&bn_xkey, &bn_tmp, &c_2powb, ctx1); // xkey = xkey mod (2^b) - - memset(xkey, 0, xkey_len); - ui32_t bn_buf_len = BN_num_bytes(&bn_xkey); - ui32_t idx = ( bn_buf_len < key_size ) ? key_size - bn_buf_len : 0; - BN_bn2bin(&bn_xkey, &xkey[idx]); - } - - BN_CTX_free(ctx1); -} - -// -// end KM_prng.cpp -// diff --git a/asdcplib/src/KM_prng.h b/asdcplib/src/KM_prng.h deleted file mode 100755 index 0b941f3..0000000 --- a/asdcplib/src/KM_prng.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright (c) 2006-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_prng.h - \version $Id: KM_prng.h,v 1.4 2009/04/09 19:24:14 msheby Exp $ - \brief Fortuna pseudo-random number generator - */ - -#ifndef _KM_PRNG_H_ -#define _KM_PRNG_H_ - -#include <KM_util.h> - -namespace Kumu -{ - class FortunaRNG - { - KM_NO_COPY_CONSTRUCT(FortunaRNG); - - public: - FortunaRNG(); - ~FortunaRNG(); - const byte_t* FillRandom(byte_t* buf, ui32_t len); - const byte_t* FillRandom(ByteString&); -#ifdef LIBDCP_POSIX - void Reset(); -#endif - }; - - - // key_len must be <= 64 (larger values will be truncated) - void Gen_FIPS_186_Value(const byte_t* key_in, ui32_t key_len, byte_t* buf, ui32_t buf_len); -} // namespace Kumu - - - -#endif // _KM_PRNG_H_ - -// -// end KM_prng.h -// diff --git a/asdcplib/src/KM_tai.cpp b/asdcplib/src/KM_tai.cpp deleted file mode 100644 index 2cbd125..0000000 --- a/asdcplib/src/KM_tai.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* - -THIS IS A SUBSET OF THE FULL LIBTAI. CHANGES HAVE BEEN MADE TO SUIT -LIBKUMU STYLE AND TYPE CONVENTIONS. ALL BUGS BELONG TO JOHN HURST. -THE FOLLOWING IS FOR ATTRIBUTION, THANK YOU MR. BERNSTEIN FOR WRITING -AND DISTRIBUTING SUCH GREAT SOFTWARE: - -libtai 0.60, alpha. -19981013 -Copyright 1998 -D. J. Bernstein, djb@pobox.com -http://pobox.com/~djb/libtai.html - - -libtai is a library for storing and manipulating dates and times. - -libtai supports two time scales: (1) TAI64, covering a few hundred -billion years with 1-second precision; (2) TAI64NA, covering the same -period with 1-attosecond precision. Both scales are defined in terms of -TAI, the current international real time standard. - -libtai provides an internal format for TAI64, struct tai, designed for -fast time manipulations. The tai_pack() and tai_unpack() routines -convert between struct tai and a portable 8-byte TAI64 storage format. -libtai provides similar internal and external formats for TAI64NA. - -libtai provides struct caldate to store dates in year-month-day form. It -can convert struct caldate, under the Gregorian calendar, to a modified -Julian day number for easy date arithmetic. - -libtai provides struct caltime to store calendar dates and times along -with UTC offsets. It can convert from struct tai to struct caltime in -UTC, accounting for leap seconds, for accurate date and time display. It -can also convert back from struct caltime to struct tai for user input. -Its overall UTC-to-TAI conversion speed is 100x better than the usual -UNIX mktime() implementation. - -This version of libtai requires a UNIX system with gettimeofday(). It -will be easy to port to other operating systems with compilers -supporting 64-bit arithmetic. - -The libtai source code is in the public domain. - -*/ - - /*! \file KM_tai.cpp - \version $Id: KM_tai.cpp,v 1.5 2012/03/07 17:30:52 mikey Exp $ - \brief portable time functions - */ - -#include <KM_tai.h> -#ifdef KM_WIN32 -#include <time.h> -#else -#include <sys/time.h> -#endif - -// -void -caldate_frommjd(Kumu::TAI::caldate* cd, i32_t day) -{ - assert(cd); - i32_t year, month, yday; - - year = day / 146097L; - day %= 146097L; - day += 678881L; - while (day >= 146097L) { day -= 146097L; ++year; } - - /* year * 146097 + day - 678881 is MJD; 0 <= day < 146097 */ - /* 2000-03-01, MJD 51604, is year 5, day 0 */ - - year *= 4; - if (day == 146096L) { year += 3; day = 36524L; } - else { year += day / 36524L; day %= 36524L; } - year *= 25; - year += day / 1461; - day %= 1461; - year *= 4; - - yday = (day < 306); - if (day == 1460) { year += 3; day = 365; } - else { year += day / 365; day %= 365; } - yday += day; - - day *= 10; - month = (day + 5) / 306; - day = (day + 5) % 306; - day /= 10; - if (month >= 10) { yday -= 306; ++year; month -= 10; } - else { yday += 59; month += 2; } - - cd->year = year; - cd->month = month + 1; - cd->day = day + 1; -} - -// -static ui32_t times365[4] = { 0, 365, 730, 1095 } ; -static ui32_t times36524[4] = { 0, 36524UL, 73048UL, 109572UL } ; -static ui32_t montab[12] = -{ 0, 31, 61, 92, 122, 153, 184, 214, 245, 275, 306, 337 } ; -/* month length after february is (306 * m + 5) / 10 */ - -// -i32_t -caldate_mjd(const Kumu::TAI::caldate* cd) -{ - assert(cd); - i32_t y, m, d; - - d = cd->day - 678882L; - m = cd->month - 1; - y = cd->year; - - d += 146097L * (y / 400); - y %= 400; - - if (m >= 2) m -= 2; else { m += 10; --y; } - - y += (m / 12); - m %= 12; - if (m < 0) { m += 12; --y; } - - d += montab[m]; - - d += 146097L * (y / 400); - y %= 400; - if (y < 0) { y += 400; d -= 146097L; } - - d += times365[y & 3]; - y >>= 2; - - d += 1461L * (y % 25); - y /= 25; - - d += times36524[y & 3]; - - return d; -} - - -// -void -caltime_utc(Kumu::TAI::caltime* ct, const Kumu::TAI::tai* t) -{ - assert(ct&&t); - Kumu::TAI::tai t2 = *t; - ui64_t u = t2.x + 58486; - i32_t s = (i32_t)(u % ui64_C(86400)); - - ct->second = (s % 60); s /= 60; - ct->minute = s % 60; s /= 60; - ct->hour = s; - - u /= ui64_C(86400); - caldate_frommjd(&ct->date,/*XXX*/(i32_t) (u - ui64_C(53375995543064))); - - ct->offset = 0; -} - -// -void -caltime_tai(const Kumu::TAI::caltime* ct, Kumu::TAI::tai* t) -{ - assert(ct&&t); - i32_t day, s; - - /* XXX: check for overflow? */ - - day = caldate_mjd(&ct->date); - - s = ct->hour * 60 + ct->minute; - s = (s - ct->offset) * 60 + ct->second; - - t->x = day * ui64_C(86400) + ui64_C(4611686014920671114) + (i64_t)s; -} - -// -void -Kumu::TAI::tai::now() -{ -#ifdef KM_WIN32 - SYSTEMTIME st; - ::GetSystemTime(&st); - TAI::caltime ct; - ct.date.year = st.wYear; - ct.date.month = st.wMonth; - ct.date.day = st.wDay; - ct.hour = st.wHour; - ct.minute = st.wMinute; - ct.second = st.wSecond; - caltime_tai(&ct, this); -#else - struct timeval now; - gettimeofday(&now, 0); - x = ui64_C(4611686018427387914) + (ui64_t)now.tv_sec; -#endif -} - - -// -const Kumu::TAI::tai& -Kumu::TAI::tai::operator=(const Kumu::TAI::caltime& rhs) -{ - caltime_tai(&rhs, this); - return *this; -} - -// -const Kumu::TAI::caltime& -Kumu::TAI::caltime::operator=(const Kumu::TAI::tai& rhs) -{ - caltime_utc(this, &rhs); - return *this; -} - - -// -// end KM_tai.cpp -// diff --git a/asdcplib/src/KM_tai.h b/asdcplib/src/KM_tai.h deleted file mode 100644 index a274e8d..0000000 --- a/asdcplib/src/KM_tai.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - -THIS IS A SUBSET OF THE FULL LIBTAI. CHANGES HAVE BEEN MADE TO SUIT -LIBKUMU STYLE AND TYPE CONVENTIONS. ALL BUGS BELONG TO JOHN HURST. -THE FOLLOWING IS FOR ATTRIBUTION, THANK YOU MR. BERNSTEIN FOR WRITING -AND DISTRIBUTING SUCH GREAT SOFTWARE: - -libtai 0.60, alpha. -19981013 -Copyright 1998 -D. J. Bernstein, djb@pobox.com -http://pobox.com/~djb/libtai.html - - -libtai is a library for storing and manipulating dates and times. - -libtai supports two time scales: (1) TAI64, covering a few hundred -billion years with 1-second precision; (2) TAI64NA, covering the same -period with 1-attosecond precision. Both scales are defined in terms of -TAI, the current international real time standard. - -libtai provides an internal format for TAI64, struct tai, designed for -fast time manipulations. The tai_pack() and tai_unpack() routines -convert between struct tai and a portable 8-byte TAI64 storage format. -libtai provides similar internal and external formats for TAI64NA. - -libtai provides struct caldate to store dates in year-month-day form. It -can convert struct caldate, under the Gregorian calendar, to a modified -Julian day number for easy date arithmetic. - -libtai provides struct caltime to store calendar dates and times along -with UTC offsets. It can convert from struct tai to struct caltime in -UTC, accounting for leap seconds, for accurate date and time display. It -can also convert back from struct caltime to struct tai for user input. -Its overall UTC-to-TAI conversion speed is 100x better than the usual -UNIX mktime() implementation. - -This version of libtai requires a UNIX system with gettimeofday(). It -will be easy to port to other operating systems with compilers -supporting 64-bit arithmetic. - -The libtai source code is in the public domain. - -*/ - - /*! \file KM_tai.h - \version $Id: KM_tai.h,v 1.5 2012/02/21 02:09:30 jhurst Exp $ - \brief portable time functions - */ - -#ifndef _KUMU_TAI_H_ -#define _KUMU_TAI_H_ - -#include <KM_platform.h> - -// -namespace Kumu -{ - namespace TAI - { - class caltime; - - // - struct tai - { - ui64_t x; - inline void add_seconds(i32_t s) { x += s; } - inline void add_minutes(i32_t m) { x += m * 60; } - inline void add_hours(i32_t h) { x += h * 3600; } - inline void add_days(i32_t d) { x += d * 86400; } - void now(); - - const tai& operator=(const caltime& rhs); - }; - - // - struct caldate - { - i32_t year; - i32_t month; - i32_t day; - }; - - // - class caltime - { - public: - caldate date; - i32_t hour; - i32_t minute; - i32_t second; - i32_t offset; - - const caltime& operator=(const tai& rhs); - }; - - - } // namespace TAI - -} // namespace Kumu - - -#endif // _KUMU_TAI_H_ - -// -// end KM_tai.h -// diff --git a/asdcplib/src/KM_util.cpp b/asdcplib/src/KM_util.cpp deleted file mode 100755 index 325bd2d..0000000 --- a/asdcplib/src/KM_util.cpp +++ /dev/null @@ -1,1123 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_util.cpp - \version $Id: KM_util.cpp,v 1.40 2012/02/22 19:20:33 jhurst Exp $ - \brief Utility functions - */ - -#include <KM_util.h> -#include <KM_prng.h> -#include <KM_memio.h> -#include <KM_fileio.h> -#include <KM_log.h> -#include <KM_mutex.h> -#include <ctype.h> -#include <list> -#include <map> -#include <string> - -const char* -Kumu::Version() -{ - return PACKAGE_VERSION; -} - - -//------------------------------------------------------------------------------------------ - -// Result_t Internals - -struct map_entry_t -{ - int rcode; - Kumu::Result_t* result; -}; - - -// WIN32 does not init this in time for use with Result_t(...) below, so it is -// now a pointer that Result_t(...) fills in when it needs it. -static Kumu::Mutex* s_MapLock = 0; - -static ui32_t s_MapSize = 0; -static const ui32_t MapMax = 2048; -static struct map_entry_t s_ResultMap[MapMax]; - - -// -const Kumu::Result_t& -Kumu::Result_t::Find(int v) -{ - if ( v == 0 ) - return RESULT_OK; - - assert(s_MapLock); - AutoMutex L(*s_MapLock); - - for ( ui32_t i = 0; i < s_MapSize; ++i ) - { - if ( s_ResultMap[i].rcode == v ) - return *s_ResultMap[i].result; - } - - return RESULT_UNKNOWN; -} - -// -Kumu::Result_t -Kumu::Result_t::Delete(int v) -{ - if ( v < -99 || v > 99 ) - { - DefaultLogSink().Error("Cannot delete core result code: %ld\n", v); - return RESULT_FAIL; - } - - assert(s_MapLock); - AutoMutex L(*s_MapLock); - - for ( ui32_t i = 0; i < s_MapSize; ++i ) - { - if ( s_ResultMap[i].rcode == v ) - { - for ( ++i; i < s_MapSize; ++i ) - s_ResultMap[i-1] = s_ResultMap[i]; - - --s_MapSize; - return RESULT_OK; - } - } - - return RESULT_FALSE; -} - -// -unsigned int -Kumu::Result_t::End() -{ - return s_MapSize; -} - -// -const Kumu::Result_t& -Kumu::Result_t::Get(unsigned int i) -{ - return *s_ResultMap[i].result; -} - -// -Kumu::Result_t::Result_t(int v, const char* s, const char* l) : value(v), label(l), symbol(s) -{ - assert(l); - assert(s); - - if ( v == 0 ) - return; - - // This may seem tricky, but it is certain that the static values declared in KM_error.h will - // be created (and thus this method will be called) before main(...) is called. It is not - // until then that threads could be created, thus the mutex will exist before multi-threaded - // access could occur. - if ( s_MapLock == 0 ) - s_MapLock = new Kumu::Mutex; - - assert(s_MapLock); - AutoMutex L(*s_MapLock); - - for ( ui32_t i = 0; i < s_MapSize; ++i ) - { - if ( s_ResultMap[i].rcode == v ) - return; - } - - assert(s_MapSize+1 < MapMax); - - s_ResultMap[s_MapSize].rcode = v; - s_ResultMap[s_MapSize].result = this; - ++s_MapSize; - - return; -} - -Kumu::Result_t::~Result_t() {} - - -//------------------------------------------------------------------------------------------ -// DTrace internals - -static int s_DTraceSequence = 0; - -Kumu::DTrace_t::DTrace_t(const char* Label, Kumu::Result_t* Watch, int Line, const char* File) - : m_Label(Label), m_Watch(Watch), m_Line(Line), m_File(File) -{ - m_Sequence = s_DTraceSequence++; - DefaultLogSink().Debug("@enter %s[%d] (%s at %d)\n", m_Label, m_Sequence, m_File, m_Line); -} - -Kumu::DTrace_t::~DTrace_t() -{ - if ( m_Watch != 0 ) - DefaultLogSink().Debug("@exit %s[%d]: %s\n", m_Label, m_Sequence, m_Watch->Label()); - else - DefaultLogSink().Debug("@exit %s[%d]\n", m_Label, m_Sequence); -} - -//------------------------------------------------------------------------------------------ - - -const char fill = '='; -const char* base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -const byte_t decode_map[] = -{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 62, 0xff, 0xff, 0xff, 63, - 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, - 0xff, 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, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - - -// Convert a binary string to NULL-terminated UTF-8 hexadecimal, returns the buffer -// if the binary buffer was large enough to hold the result. If the output buffer -// is too small or any of the pointer arguments are NULL, the subroutine will -// return 0. -// -const char* -Kumu::base64encode(const byte_t* buf, ui32_t buf_len, char* strbuf, ui32_t strbuf_len) -{ - ui32_t out_char = 0; - ui32_t i, block_len, diff; - - if ( buf == 0 || strbuf == 0 ) - return 0; - - if ( strbuf_len < base64_encode_length(buf_len) + 1 ) - return 0; - - block_len = buf_len; - - while ( block_len % 3 ) - block_len--; - - for ( i = 0; i < block_len; i += 3 ) - { - strbuf[out_char++] = base64_chars[( buf[0] >> 2 )]; - strbuf[out_char++] = base64_chars[( ( ( buf[0] & 0x03 ) << 4 ) | ( buf[1] >> 4 ) )]; - strbuf[out_char++] = base64_chars[( ( ( buf[1] & 0x0f ) << 2 ) | ( buf[2] >> 6 ) )]; - strbuf[out_char++] = base64_chars[( buf[2] & 0x3f )]; - buf += 3; - } - - if ( i < buf_len ) - { - diff = buf_len - i; - assert(diff > 0); - assert(diff < 3); - - strbuf[out_char++] = base64_chars[( buf[0] >> 2 )]; - - if ( diff == 1 ) - { - strbuf[out_char++] = base64_chars[( ( ( buf[0] & 0x03 ) << 4 ) )]; - strbuf[out_char++] = fill; - } - else if ( diff == 2 ) - { - strbuf[out_char++] = base64_chars[( ( ( buf[0] & 0x03 ) << 4 ) | ( buf[1] >> 4 ) )]; - strbuf[out_char++] = base64_chars[( ( ( buf[1] & 0x0f ) << 2 ) )]; - } - - strbuf[out_char++] = fill; - } - - strbuf[out_char] = 0; - return strbuf;; -} - - - - -// Convert NULL-terminated UTF-8 Base64 string to binary, returns 0 if -// the binary buffer was large enough to hold the result. The output parameter -// 'char_count' will contain the length of the converted string. If the output -// buffer is too small or any of the pointer arguments are NULL, the subroutine -// will return -1 and set 'char_count' to the required buffer size. No data will -// be written to 'buf' if the subroutine fails. -// -i32_t -Kumu::base64decode(const char* str, byte_t* buf, ui32_t buf_len, ui32_t* char_count) -{ - register byte_t c = 0, d = 0; - register ui32_t phase = 0, i = 0; - - if ( str == 0 || buf == 0 || char_count == 0 ) - return -1; - - while ( *str != 0 && i < buf_len ) - { - c = decode_map[(int)*str++]; - if ( c == 0xff ) continue; - if ( c == 0xfe ) break; - - switch ( phase++ ) - { - case 0: - buf[i++] = c << 2; - break; - - case 1: - buf[i - 1] |= c >> 4; - d = c; - break; - - case 2: - buf[i++] = ( d << 4 ) | ( c >> 2 ); - d = c; - break; - - case 3: - buf[i++] = ( d << 6 ) | c; - phase = 0; - break; - } - } - - *char_count = i; - return 0; -} - -//------------------------------------------------------------------------------------------ - -// convert utf-8 hext string to bin -i32_t -Kumu::hex2bin(const char* str, byte_t* buf, ui32_t buf_len, ui32_t* conv_size) -{ - KM_TEST_NULL_L(str); - KM_TEST_NULL_L(buf); - KM_TEST_NULL_L(conv_size); - - *conv_size = 0; - - if ( str[0] == 0 ) // nothing to convert - return 0; - - for ( int j = 0; str[j]; j++ ) - { - if ( isxdigit(str[j]) ) - (*conv_size)++; - } - - if ( *conv_size & 0x01 ) (*conv_size)++; - *conv_size /= 2; - - if ( *conv_size > buf_len )// maximum possible data size - return -1; - - *conv_size = 0; - - int phase = 0; // track high/low nybble - - // for each character, fill in the high nybble then the low - for ( int i = 0; str[i]; i++ ) - { - if ( ! isxdigit(str[i]) ) - continue; - - byte_t val = str[i] - ( isdigit(str[i]) ? 0x30 : ( isupper(str[i]) ? 0x37 : 0x57 ) ); - - if ( phase == 0 ) - { - buf[*conv_size] = val << 4; - phase++; - } - else - { - buf[*conv_size] |= val; - phase = 0; - (*conv_size)++; - } - } - - return 0; -} - -#ifdef CONFIG_RANDOM_UUID - -// convert a memory region to a NULL-terminated hexadecimal string -// -static const char* -bin2hex_rand(const byte_t* bin_buf, ui32_t bin_len, char* str_buf, ui32_t str_len) -{ - if ( bin_buf == 0 - || str_buf == 0 - || ((bin_len * 2) + 1) > str_len ) - return 0; - - char* p = str_buf; - Kumu::mem_ptr<byte_t> rand_buf = new byte_t[bin_len]; - Kumu::FortunaRNG RNG; - RNG.FillRandom(rand_buf, bin_len); - - for ( ui32_t i = 0; i < bin_len; i++ ) - { - *p = (bin_buf[i] >> 4) & 0x0f; - *p += *p < 10 ? 0x30 : (( ((rand_buf[i] & 0x01) == 0) ? 0x61 : 0x41 ) - 10); - p++; - - *p = bin_buf[i] & 0x0f; - *p += *p < 10 ? 0x30 : (( (((rand_buf[i] >> 1) & 0x01) == 0) ? 0x61 : 0x41 ) - 10); - p++; - } - - *p = '\0'; - return str_buf; -} -#endif - -// convert a memory region to a NULL-terminated hexadecimal string -// -const char* -Kumu::bin2hex(const byte_t* bin_buf, ui32_t bin_len, char* str_buf, ui32_t str_len) -{ - if ( bin_buf == 0 - || str_buf == 0 - || ((bin_len * 2) + 1) > str_len ) - return 0; - -#ifdef CONFIG_RANDOM_UUID - const char* use_random_uuid = getenv("KM_USE_RANDOM_UUID"); - if ( use_random_uuid != 0 && use_random_uuid[0] != 0 && use_random_uuid[0] != '0' ) - return bin2hex_rand(bin_buf, bin_len, str_buf, str_len); -#endif - - char* p = str_buf; - - for ( ui32_t i = 0; i < bin_len; i++ ) - { - *p = (bin_buf[i] >> 4) & 0x0f; - *p += *p < 10 ? 0x30 : 0x61 - 10; - p++; - - *p = bin_buf[i] & 0x0f; - *p += *p < 10 ? 0x30 : 0x61 - 10; - p++; - } - - *p = '\0'; - return str_buf; -} - - -// spew a range of bin data as hex -void -Kumu::hexdump(const byte_t* buf, ui32_t dump_len, FILE* stream) -{ - if ( buf == 0 ) - return; - - if ( stream == 0 ) - stream = stderr; - - static ui32_t row_len = 16; - const byte_t* p = buf; - const byte_t* end_p = p + dump_len; - - for ( ui32_t line = 0; p < end_p; line++ ) - { - fprintf(stream, " %06x: ", line); - ui32_t i; - const byte_t* pp; - - for ( pp = p, i = 0; i < row_len && pp < end_p; i++, pp++ ) - fprintf(stream, "%02x ", *pp); - - while ( i++ < row_len ) - fputs(" ", stream); - - for ( pp = p, i = 0; i < row_len && pp < end_p; i++, pp++ ) - fputc((isprint(*pp) ? *pp : '.'), stream); - - fputc('\n', stream); - p += row_len; - } -} - -// -const char* -Kumu::bin2UUIDhex(const byte_t* bin_buf, ui32_t bin_len, char* str_buf, ui32_t str_len) -{ - ui32_t i, j, k; - - if ( str_len < 34 || bin_len != UUID_Length ) - return 0; - - if ( bin2hex(bin_buf, bin_len, str_buf, str_len) == 0 ) - return 0; - - // shift the node id - for ( k = 19, i = 12; i > 0; i-- ) - str_buf[k+i+4] = str_buf[k+i]; - - // shift the time (mid+hi+clk) - for ( k = 15, j = 3; k > 6; k -= 4, j-- ) - { - for ( i = 4; i > 0; i-- ) - str_buf[k+i+j] = str_buf[k+i]; - } - - // add in the hyphens and trainling null - for ( i = 8; i < 24; i += 5 ) - str_buf[i] = '-'; - - str_buf[36] = 0; - return str_buf; -} - -// -void -Kumu::GenRandomValue(UUID& ID) -{ - byte_t tmp_buf[UUID_Length]; - GenRandomUUID(tmp_buf); - ID.Set(tmp_buf); -} - -// -void -Kumu::GenRandomUUID(byte_t* buf) -{ - FortunaRNG RNG; - RNG.FillRandom(buf, UUID_Length); - buf[6] &= 0x0f; // clear bits 4-7 - buf[6] |= 0x40; // set UUID version - buf[8] &= 0x3f; // clear bits 6&7 - buf[8] |= 0x80; // set bit 7 -} - -// -void -Kumu::GenRandomValue(SymmetricKey& Key) -{ - byte_t tmp_buf[SymmetricKey_Length]; - FortunaRNG RNG; - RNG.FillRandom(tmp_buf, SymmetricKey_Length); - Key.Set(tmp_buf); -} - - -//------------------------------------------------------------------------------------------ -// read a ber value from the buffer and compare with test value. -// Advances buffer to first character after BER value. -// -bool -Kumu::read_test_BER(byte_t **buf, ui64_t test_value) -{ - if ( buf == 0 ) - return false; - - if ( ( **buf & 0x80 ) == 0 ) - return false; - - ui64_t val = 0; - ui8_t ber_size = ( **buf & 0x0f ) + 1; - - if ( ber_size > 9 ) - return false; - - for ( ui8_t i = 1; i < ber_size; i++ ) - { - if ( (*buf)[i] > 0 ) - val |= (ui64_t)((*buf)[i]) << ( ( ( ber_size - 1 ) - i ) * 8 ); - } - - *buf += ber_size; - return ( val == test_value ); -} - - -// -bool -Kumu::read_BER(const byte_t* buf, ui64_t* val) -{ - ui8_t ber_size, i; - - if ( buf == 0 || val == 0 ) - return false; - - if ( ( *buf & 0x80 ) == 0 ) - return false; - - *val = 0; - ber_size = ( *buf & 0x0f ) + 1; - - if ( ber_size > 9 ) - return false; - - for ( i = 1; i < ber_size; i++ ) - { - if ( buf[i] > 0 ) - *val |= (ui64_t)buf[i] << ( ( ( ber_size - 1 ) - i ) * 8 ); - } - - return true; -} - - -static const ui64_t ber_masks[9] = - { ui64_C(0xffffffffffffffff), ui64_C(0xffffffffffffff00), - ui64_C(0xffffffffffff0000), ui64_C(0xffffffffff000000), - ui64_C(0xffffffff00000000), ui64_C(0xffffff0000000000), - ui64_C(0xffff000000000000), ui64_C(0xff00000000000000), - 0 - }; - -// -ui32_t -Kumu::get_BER_length_for_value(ui64_t val) -{ - for ( ui32_t i = 0; i < 9; i++ ) - { - if ( ( val & ber_masks[i] ) == 0 ) - return i + 1; - } - - ui64Printer tmp_i(val); - DefaultLogSink().Error("BER integer encoding not supported for large value %s\n", tmp_i.c_str()); - return 0; -} - -// -bool -Kumu::write_BER(byte_t* buf, ui64_t val, ui32_t ber_len) -{ - if ( buf == 0 ) - return false; - - if ( ber_len == 0 ) - { // calculate default length - if ( val < 0x01000000L ) - ber_len = 4; - else if ( val < ui64_C(0x0100000000000000) ) - ber_len = 8; - else - ber_len = 9; - } - else - { // sanity check BER length - if ( ber_len > 9 ) - { - DefaultLogSink().Error("BER integer length %u exceeds maximum size of 9\n", ber_len); - return false; - } - - if ( ( val & ber_masks[ber_len - 1] ) != 0 ) - { - ui64Printer tmp_i(val); - DefaultLogSink().Error("BER integer length %u too small for value %s\n", ber_len, tmp_i.c_str()); - return false; - } - } - - buf[0] = 0x80 + ( ber_len - 1 ); - - for ( ui32_t i = ber_len - 1; i > 0; i-- ) - { - buf[i] = (ui8_t)(val & 0xff); - val >>= 8; - } - - return true; -} - - -//------------------------------------------------------------------------------------------ - -#ifndef KM_WIN32 -#include <time.h> -#endif - -// -Kumu::Timestamp::Timestamp() : m_TZOffsetMinutes(0) { - m_Timestamp.now(); -} - -Kumu::Timestamp::Timestamp(const Timestamp& rhs) { - m_Timestamp = rhs.m_Timestamp; - m_TZOffsetMinutes = rhs.m_TZOffsetMinutes; -} - -Kumu::Timestamp::Timestamp(const char* datestr) : m_TZOffsetMinutes(0) { - DecodeString(datestr); -} - -Kumu::Timestamp::~Timestamp() { -} - -// -const Kumu::Timestamp& -Kumu::Timestamp::operator=(const Timestamp& rhs) -{ - m_Timestamp = rhs.m_Timestamp; - m_TZOffsetMinutes = rhs.m_TZOffsetMinutes; - return *this; -} - -bool Kumu::Timestamp::operator<(const Timestamp& rhs) const { - return m_Timestamp.x < rhs.m_Timestamp.x; -} - -bool Kumu::Timestamp::operator>(const Timestamp& rhs) const { - return m_Timestamp.x > rhs.m_Timestamp.x; -} - -bool Kumu::Timestamp::operator==(const Timestamp& rhs) const { - return m_Timestamp.x == rhs.m_Timestamp.x; -} - -bool Kumu::Timestamp::operator!=(const Timestamp& rhs) const { - return m_Timestamp.x != rhs.m_Timestamp.x; -} - -// -void -Kumu::Timestamp::GetComponents(ui16_t& Year, ui8_t& Month, ui8_t& Day, - ui8_t& Hour, ui8_t& Minute, ui8_t& Second) const -{ - TAI::caltime ct; - ct = m_Timestamp; - Year = ct.date.year; - Month = ct.date.month; - Day = ct.date.day; - Hour = ct.hour; - Minute = ct.minute; - Second = ct.second; -} - -// -void -Kumu::Timestamp::SetComponents(const ui16_t& Year, const ui8_t& Month, const ui8_t& Day, - const ui8_t& Hour, const ui8_t& Minute, const ui8_t& Second) -{ - TAI::caltime ct; - ct.date.year = Year; - ct.date.month = Month; - ct.date.day = Day; - ct.hour = Hour; - ct.minute = Minute; - ct.second = Second; - ct.offset = 0; - m_Timestamp = ct; - m_TZOffsetMinutes = 0; -} - -// returns false if the requested adjustment is out of range -bool -Kumu::Timestamp::SetTZOffsetMinutes(const i32_t& minutes) -{ - static const i32_t tz_limit = 14 * 60 * 60; - - if ( minutes < ( - tz_limit) || minutes > tz_limit ) - return false; - - m_TZOffsetMinutes = minutes; - return true; -} - -// -const char* -Kumu::Timestamp::EncodeString(char* str_buf, ui32_t buf_len) const -{ - if ( buf_len < ( DateTimeLen + 1 ) ) - return 0; - - ui16_t year; - ui8_t month, day, hour, minute, second; - ui32_t ofst_hours = 0, ofst_minutes = 0; - char direction = '+'; - - if ( m_TZOffsetMinutes == 0 ) - { - GetComponents(year, month, day, hour, minute, second); - } - else - { - // calculate local time - Kumu::Timestamp tmp_t(*this); - tmp_t.AddMinutes(m_TZOffsetMinutes); - tmp_t.GetComponents(year, month, day, hour, minute, second); - - ofst_hours = abs(m_TZOffsetMinutes) / 60; - ofst_minutes = abs(m_TZOffsetMinutes) % 60; - - if ( m_TZOffsetMinutes < 0 ) - direction = '-'; - } - - // 2004-05-01T13:20:00+00:00 - snprintf(str_buf, buf_len, - "%04hu-%02hu-%02huT%02hu:%02hu:%02hu%c%02hu:%02hu", - year, month, day, hour, minute, second, - direction, ofst_hours, ofst_minutes); - - return str_buf; -} - -// -bool -Kumu::Timestamp::DecodeString(const char* datestr) -{ - if ( ! ( isdigit(datestr[0]) && isdigit(datestr[1]) && isdigit(datestr[2]) && isdigit(datestr[3]) ) - || datestr[4] != '-' - || ! ( isdigit(datestr[5]) && isdigit(datestr[6]) ) - || datestr[7] != '-' - || ! ( isdigit(datestr[8]) && isdigit(datestr[9]) ) ) - return false; - - ui32_t char_count = 10; - TAI::caltime YMDhms; - YMDhms.offset = 0; - YMDhms.date.year = atoi(datestr); - YMDhms.date.month = atoi(datestr + 5); - YMDhms.date.day = atoi(datestr + 8); - - if ( datestr[10] == 'T' ) - { - if ( ! ( isdigit(datestr[11]) && isdigit(datestr[12]) ) - || datestr[13] != ':' - || ! ( isdigit(datestr[14]) && isdigit(datestr[15]) ) ) - return false; - - char_count += 6; - YMDhms.hour = atoi(datestr + 11); - YMDhms.minute = atoi(datestr + 14); - - if ( datestr[16] == ':' ) - { - if ( ! ( isdigit(datestr[17]) && isdigit(datestr[18]) ) ) - return false; - - char_count += 3; - YMDhms.second = atoi(datestr + 17); - } - - if ( datestr[19] == '.' ) - { - if ( ! ( isdigit(datestr[20]) && isdigit(datestr[21]) && isdigit(datestr[22]) ) ) - return false; - - // we don't carry the ms value - datestr += 4; - } - - if ( datestr[19] == '-' || datestr[19] == '+' ) - { - if ( ! ( isdigit(datestr[20]) && isdigit(datestr[21]) ) - || datestr[22] != ':' - || ! ( isdigit(datestr[23]) && isdigit(datestr[24]) ) ) - return false; - - char_count += 6; - - ui32_t TZ_hh = atoi(datestr + 20); - ui32_t TZ_mm = atoi(datestr + 23); - if ((TZ_hh > 14) || (TZ_mm > 59) || ((TZ_hh == 14) && (TZ_mm > 0))) - return false; - - i32_t TZ_offset = 60 * TZ_hh + TZ_mm; - if (datestr[19] == '-') - TZ_offset = -TZ_offset; - /* at this point, TZ_offset reflects the contents of the string */ - - /* a negative offset is behind UTC and so needs to increment to - * convert, while a positive offset must do the reverse */ - YMDhms.offset = TZ_offset; - } - else if (datestr[19] == 'Z') - { - /* act as if the offset were +00:00 */ - char_count++; - } - } - - if ( datestr[char_count] != 0 ) - { - Kumu::DefaultLogSink().Error("Unexpected extra characters in string: %s (%ld)\n", - datestr, char_count); - return false; - } - - m_Timestamp = YMDhms; - m_TZOffsetMinutes = YMDhms.offset; - return true; -} - -// -bool -Kumu::Timestamp::HasValue() const -{ - return true; -} - -// -bool -Kumu::Timestamp::Unarchive(MemIOReader* Reader) -{ - ui16_t year; - ui8_t month, day, hour, minute, second, tick; - - assert(Reader); - if ( ! Reader->ReadUi16BE(&year) ) return false; - if ( ! Reader->ReadUi8(&month) ) return false; - if ( ! Reader->ReadUi8(&day) ) return false; - if ( ! Reader->ReadUi8(&hour) ) return false; - if ( ! Reader->ReadUi8(&minute) ) return false; - if ( ! Reader->ReadUi8(&second) ) return false; - if ( ! Reader->ReadUi8(&tick) ) return false; - SetComponents(year, month, day, hour, minute, second); - return true; -} - -// -bool -Kumu::Timestamp::Archive(MemIOWriter* Writer) const -{ - assert(Writer); - - ui16_t year; - ui8_t month, day, hour, minute, second, tick = 0; - GetComponents(year, month, day, hour, minute, second); - - if ( ! Writer->WriteUi16BE(year) ) return false; - if ( ! Writer->WriteUi8(month) ) return false; - if ( ! Writer->WriteUi8(day) ) return false; - if ( ! Writer->WriteUi8(hour) ) return false; - if ( ! Writer->WriteUi8(minute) ) return false; - if ( ! Writer->WriteUi8(second) ) return false; - if ( ! Writer->WriteUi8(tick) ) return false; - return true; -} - -// -ui64_t -Kumu::Timestamp::GetCTime() const -{ - return m_Timestamp.x - ui64_C(4611686018427387914); -} - - -//------------------------------------------------------------------------------------------ - -Kumu::MemIOWriter::MemIOWriter(ByteString* Buf) - : m_p(0), m_capacity(0), m_size(0) -{ - m_p = Buf->Data(); - m_capacity = Buf->Capacity(); - assert(m_p); assert(m_capacity); -} - -bool -Kumu::MemIOWriter:: WriteBER(ui64_t i, ui32_t ber_len) -{ - if ( ( m_size + ber_len ) > m_capacity ) - return false; - - if ( ! write_BER(m_p + m_size, i, ber_len) ) - return false; - - m_size += ber_len; - return true; -} - - -Kumu::MemIOReader::MemIOReader(const ByteString* Buf) - : m_p(0), m_capacity(0), m_size(0) -{ - m_p = Buf->RoData(); - m_capacity = Buf->Length(); - assert(m_p); assert(m_capacity); -} - -bool -Kumu::MemIOReader::ReadBER(ui64_t* i, ui32_t* ber_len) -{ - if ( i == 0 || ber_len == 0 ) return false; - - if ( ( *ber_len = BER_length(m_p + m_size) ) == 0 ) - return false; - - if ( ( m_size + *ber_len ) > m_capacity ) - return false; - - if ( ! read_BER(m_p + m_size, i) ) - return false; - - m_size += *ber_len; - return true; -} - -//------------------------------------------------------------------------------------------ - -Kumu::ByteString::ByteString() : m_Data(0), m_Capacity(0), m_Length(0) {} - -Kumu::ByteString::ByteString(ui32_t cap) : m_Data(0), m_Capacity(0), m_Length(0) -{ - Capacity(cap); -} - -Kumu::ByteString::~ByteString() -{ - if ( m_Data != 0 ) - free(m_Data); -} - - -// copy the given data into the ByteString, set Length value. -// Returns error if the ByteString is too small. -Kumu::Result_t -Kumu::ByteString::Set(const byte_t* buf, ui32_t buf_len) -{ - if ( m_Capacity < buf_len ) - return RESULT_ALLOC; - - memcpy(m_Data, buf, buf_len); - m_Length = buf_len; - return RESULT_OK; -} - - -// copy the given data into the ByteString, set Length value. -// Returns error if the ByteString is too small. -Kumu::Result_t -Kumu::ByteString::Set(const ByteString& Buf) -{ - if ( m_Capacity < Buf.m_Capacity ) - return RESULT_ALLOC; - - memcpy(m_Data, Buf.m_Data, Buf.m_Length); - m_Length = Buf.m_Length; - return RESULT_OK; -} - - -// Sets the size of the internally allocate buffer. -Kumu::Result_t -Kumu::ByteString::Capacity(ui32_t cap_size) -{ - if ( m_Capacity >= cap_size ) - return RESULT_OK; - - byte_t* tmp_data = 0; - if ( m_Data != 0 ) - { - if ( m_Length > 0 ) - tmp_data = m_Data; - else - free(m_Data); - } - - if ( ( m_Data = (byte_t*)malloc(cap_size) ) == 0 ) - return RESULT_ALLOC; - - if ( tmp_data != 0 ) - { - assert(m_Length > 0); - memcpy(m_Data, tmp_data, m_Length); - free(tmp_data); - } - - m_Capacity = cap_size; - return RESULT_OK; -} - -// -Kumu::Result_t -Kumu::ByteString::Append(const ByteString& Buf) -{ - Result_t result = RESULT_OK; - ui32_t diff = m_Capacity - m_Length; - - if ( diff < Buf.Length() ) - result = Capacity(m_Capacity + Buf.Length()); - - if ( KM_SUCCESS(result) ) - { - memcpy(m_Data + m_Length, Buf.RoData(), Buf.Length()); - m_Length += Buf.Length(); - } - - return result; -} - -// -Kumu::Result_t -Kumu::ByteString::Append(const byte_t* buf, ui32_t buf_len) -{ - Result_t result = RESULT_OK; - ui32_t diff = m_Capacity - m_Length; - - if ( diff < buf_len ) - result = Capacity(m_Capacity + buf_len); - - if ( KM_SUCCESS(result) ) - { - memcpy(m_Data + m_Length, buf, buf_len); - m_Length += buf_len; - } - - return result; -} - - -// -// end KM_util.cpp -// diff --git a/asdcplib/src/KM_util.h b/asdcplib/src/KM_util.h deleted file mode 100755 index 78f0739..0000000 --- a/asdcplib/src/KM_util.h +++ /dev/null @@ -1,542 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ - /*! \file KM_util.h - \version $Id: KM_util.h,v 1.32 2012/02/21 02:09:30 jhurst Exp $ - \brief Utility functions - */ - -#ifndef _KM_UTIL_H_ -#define _KM_UTIL_H_ - -#include <KM_memio.h> -#include <KM_error.h> -#include <KM_tai.h> -#include <string.h> -#include <string> -#include <list> - -namespace Kumu -{ - // The version number declaration and explanation are in ../configure.ac - const char* Version(); - - // a class that represents the string form of a value - template <class T, int SIZE = 16> - class IntPrinter : public std::string - { - KM_NO_COPY_CONSTRUCT(IntPrinter); - IntPrinter(); - - protected: - const char* m_format; - char m_strbuf[SIZE]; - - public: - IntPrinter(const char* format, T value) { - assert(format); - m_format = format; - snprintf(m_strbuf, SIZE, m_format, value); - } - - inline operator const char*() { return m_strbuf; } - inline const char* c_str() { return m_strbuf; } - inline const char* set_value(T value) { - snprintf(m_strbuf, SIZE, m_format, value); - return m_strbuf; - } - }; - - struct i8Printer : public IntPrinter<i8_t> { - i8Printer(i8_t value) : IntPrinter<i8_t>("%hd", value) {} - }; - - struct ui8Printer : public IntPrinter<ui8_t> { - ui8Printer(ui8_t value) : IntPrinter<ui8_t>("%hu", value) {} - }; - - struct i16Printer : public IntPrinter<i16_t> { - i16Printer(i16_t value) : IntPrinter<i16_t>("%hd", value) {} - }; - - struct ui16Printer : public IntPrinter<ui16_t> { - ui16Printer(ui16_t value) : IntPrinter<ui16_t>("%hu", value) {} - }; - - struct i32Printer : public IntPrinter<i32_t> { - i32Printer(i32_t value) : IntPrinter<i32_t>("%d", value) {} - }; - - struct ui32Printer : public IntPrinter<ui32_t> { - ui32Printer(ui32_t value) : IntPrinter<ui32_t>("%u", value) {} - }; - -#ifdef KM_WIN32 - struct i64Printer : public IntPrinter<i64_t, 32> { - i64Printer(i64_t value) : IntPrinter<i64_t, 32>("%I64d", value) {} - }; - - struct ui64Printer : public IntPrinter<ui64_t, 32> { - ui64Printer(ui64_t value) : IntPrinter<ui64_t, 32>("%I64u", value) {} - }; -#else - struct i64Printer : public IntPrinter<i64_t, 32> { - i64Printer(i64_t value) : IntPrinter<i64_t, 32>("%qd", value) {} - }; - - struct ui64Printer : public IntPrinter<ui64_t, 32> { - ui64Printer(ui64_t value) : IntPrinter<ui64_t, 32>("%qu", value) {} - }; -#endif - - // Convert NULL-terminated UTF-8 hexadecimal string to binary, returns 0 if - // the binary buffer was large enough to hold the result. The output parameter - // 'char_count' will contain the length of the converted string. If the output - // buffer is too small or any of the pointer arguments are NULL, the subroutine - // will return -1 and set 'char_count' to the required buffer size. No data will - // be written to 'buf' if the subroutine fails. - i32_t hex2bin(const char* str, byte_t* buf, ui32_t buf_len, ui32_t* char_count); - - // Convert a binary string to NULL-terminated UTF-8 hexadecimal, returns the buffer - // if the output buffer was large enough to hold the result. If the output buffer - // is too small or any of the pointer arguments are NULL, the subroutine will - // return 0. - // - const char* bin2hex(const byte_t* bin_buf, ui32_t bin_len, char* str_buf, ui32_t str_len); - - const char* bin2UUIDhex(const byte_t* bin_buf, ui32_t bin_len, char* str_buf, ui32_t str_len); - - // same as above for base64 text - i32_t base64decode(const char* str, byte_t* buf, ui32_t buf_len, ui32_t* char_count); - const char* base64encode(const byte_t* bin_buf, ui32_t bin_len, char* str_buf, ui32_t str_len); - - // returns the length of a Base64 encoding of a buffer of the given length - inline ui32_t base64_encode_length(ui32_t length) { - while ( ( length % 3 ) != 0 ) - length++; - - return ( length / 3 ) * 4; - } - - // print buffer contents to a stream as hexadecimal values in numbered - // rows of 16-bytes each. - // - void hexdump(const byte_t* buf, ui32_t dump_len, FILE* stream = 0); - - // Return the length in bytes of a BER encoded value - inline ui32_t BER_length(const byte_t* buf) - { - if ( buf == 0 || (*buf & 0xf0) != 0x80 ) - return 0; - - return (*buf & 0x0f) + 1; - } - - // Return the BER length required to encode value. A return value of zero - // indicates a value too large for this library. - ui32_t get_BER_length_for_value(ui64_t valuse); - - // read a BER value - bool read_BER(const byte_t* buf, ui64_t* val); - - // decode a ber value and compare it to a test value - bool read_test_BER(byte_t **buf, ui64_t test_value); - - // create BER encoding of integer value - bool write_BER(byte_t* buf, ui64_t val, ui32_t ber_len = 0); - - //---------------------------------------------------------------- - // - - // an abstract base class that objects implement to serialize state - // to and from a binary stream. - class IArchive - { - public: - virtual ~IArchive(){} - virtual bool HasValue() const = 0; - virtual ui32_t ArchiveLength() const = 0; - virtual bool Archive(MemIOWriter* Writer) const = 0; - virtual bool Unarchive(MemIOReader* Reader) = 0; - }; - - // - template <class T> - class ArchivableList : public std::list<T>, public IArchive - { - public: - ArchivableList() {} - virtual ~ArchivableList() {} - - bool HasValue() const { return ! this->empty(); } - - ui32_t ArchiveLength() const - { - ui32_t arch_size = sizeof(ui32_t); - - typename ArchivableList<T>::const_iterator i = this->begin(); - for ( ; i != this->end(); i++ ) - arch_size += i->ArchiveLength(); - - return arch_size; - } - - bool Unarchive(Kumu::MemIOReader* Reader) - { - if ( Reader == 0 ) return false; - ui32_t read_size = 0; - if ( ! Reader->ReadUi32BE(&read_size) ) return false; - for ( ui32_t i = 0; i < read_size; i++ ) - { - T TmpTP; - if ( ! TmpTP.Unarchive(Reader) ) return false; - this->push_back(TmpTP); - } - - return true; - } - - bool Archive(Kumu::MemIOWriter* Writer) const - { - if ( Writer == 0 ) return false; - if ( ! Writer->WriteUi32BE(static_cast<ui32_t>(this->size())) ) return false; - typename ArchivableList<T>::const_iterator i = this->begin(); - for ( ; i != this->end(); i++ ) - if ( ! i->Archive(Writer) ) return false; - - return true; - } - }; - - // archivable version of std::string - - // - class ArchivableString : public std::string, public Kumu::IArchive - { - - public: - ArchivableString() {} - ArchivableString(const char* sz) : std::string(sz) {} - ArchivableString(const std::string& s) : std::string(s) {} - virtual ~ArchivableString() {} - - bool HasValue() const { return ! this->empty(); } - ui32_t ArchiveLength() const { return static_cast<ui32_t>((sizeof(ui32_t) + this->size())|0xffffffff); } - - bool Archive(MemIOWriter* Writer) const { - if ( Writer == 0 ) return false; - return Writer->WriteString(*this); - } - - bool Unarchive(MemIOReader* Reader) { - if ( Reader == 0 ) return false; - return Reader->ReadString(*this); - } - }; - - // - typedef Kumu::ArchivableList<ArchivableString> StringList; - - // - // the base of all identifier classes, Identifier is not usually used directly - // see UUID and SymmetricKey below for more detail. - // - template <ui32_t SIZE> - class Identifier : public IArchive - { - protected: - bool m_HasValue; - byte_t m_Value[SIZE]; - - public: - Identifier() : m_HasValue(false) { memset(m_Value, 0, SIZE); } - Identifier(const byte_t* value) : m_HasValue(true) { memcpy(m_Value, value, SIZE); } - Identifier(const Identifier& rhs) : IArchive() { - m_HasValue = rhs.m_HasValue; - memcpy(m_Value, rhs.m_Value, SIZE); - } - - virtual ~Identifier() {} - - const Identifier& operator=(const Identifier& rhs) { - m_HasValue = rhs.m_HasValue; - memcpy(m_Value, rhs.m_Value, SIZE); - return *this; - } - - inline void Set(const byte_t* value) { m_HasValue = true; memcpy(m_Value, value, SIZE); } - inline void Reset() { m_HasValue = false; memset(m_Value, 0, SIZE); } - inline const byte_t* Value() const { return m_Value; } - inline ui32_t Size() const { return SIZE; } - - inline bool operator<(const Identifier& rhs) const { - ui32_t test_size = xmin(rhs.Size(), SIZE); - - for ( ui32_t i = 0; i < test_size; i++ ) - { - if ( m_Value[i] != rhs.m_Value[i] ) - return m_Value[i] < rhs.m_Value[i]; - } - - return false; - } - - inline bool operator==(const Identifier& rhs) const { - if ( rhs.Size() != SIZE ) return false; - return ( memcmp(m_Value, rhs.m_Value, SIZE) == 0 ); - } - - inline bool operator!=(const Identifier& rhs) const { - if ( rhs.Size() != SIZE ) return true; - return ( memcmp(m_Value, rhs.m_Value, SIZE) != 0 ); - } - - inline bool DecodeHex(const char* str) { - ui32_t char_count; - m_HasValue = ( hex2bin(str, m_Value, SIZE, &char_count) == 0 ); - if ( m_HasValue && char_count != SIZE ) - m_HasValue = false; - return m_HasValue; - } - - inline const char* EncodeHex(char* buf, ui32_t buf_len) const { - return bin2hex(m_Value, SIZE, buf, buf_len); - } - - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - return EncodeHex(str_buf, buf_len); - } - - inline bool DecodeBase64(const char* str) { - ui32_t char_count; - m_HasValue = ( base64decode(str, m_Value, SIZE, &char_count) == 0 ); - if ( m_HasValue && char_count != SIZE ) - m_HasValue = false; - return m_HasValue; - } - - inline const char* EncodeBase64(char* buf, ui32_t buf_len) const { - return base64encode(m_Value, SIZE, buf, buf_len); - } - - inline bool HasValue() const { return m_HasValue; } - - inline ui32_t ArchiveLength() const { return SIZE; } - - inline bool Unarchive(Kumu::MemIOReader* Reader) { - m_HasValue = Reader->ReadRaw(m_Value, SIZE); - return m_HasValue; - } - - inline bool Archive(Kumu::MemIOWriter* Writer) const { - return Writer->WriteRaw(m_Value, SIZE); - } - }; - - - // UUID - // - const ui32_t UUID_Length = 16; - class UUID : public Identifier<UUID_Length> - { - public: - UUID() {} - UUID(const byte_t* value) : Identifier<UUID_Length>(value) {} - UUID(const UUID& rhs) : Identifier<UUID_Length>(rhs) {} - virtual ~UUID() {} - - inline const char* EncodeString(char* buf, ui32_t buf_len) const { - return bin2UUIDhex(m_Value, Size(), buf, buf_len); - } - - inline const char* EncodeHex(char* buf, ui32_t buf_len) const { - return bin2UUIDhex(m_Value, Size(), buf, buf_len); - } - }; - - void GenRandomUUID(byte_t* buf); // buf must be UUID_Length or longer - void GenRandomValue(UUID&); - - typedef ArchivableList<UUID> UUIDList; - - // a self-wiping key container - // - const ui32_t SymmetricKey_Length = 16; - const byte_t NilKey[SymmetricKey_Length] = { - 0xfa, 0xce, 0xfa, 0xce, 0xfa, 0xce, 0xfa, 0xce, - 0xfa, 0xce, 0xfa, 0xce, 0xfa, 0xce, 0xfa, 0xce - }; - - class SymmetricKey : public Identifier<SymmetricKey_Length> - { - public: - SymmetricKey() {} - SymmetricKey(const byte_t* value) : Identifier<SymmetricKey_Length>(value) {} - SymmetricKey(const UUID& rhs) : Identifier<SymmetricKey_Length>(rhs) {} - virtual ~SymmetricKey() { memcpy(m_Value, NilKey, 16); m_HasValue = false; } - }; - - void GenRandomValue(SymmetricKey&); - - // - // 2004-05-01T13:20:00+00:00 - const ui32_t DateTimeLen = 25; // the number of chars in the xs:dateTime format (sans milliseconds) - - // UTC time+date representation - class Timestamp : public IArchive - { - TAI::tai m_Timestamp; // always UTC - i32_t m_TZOffsetMinutes; - - public: - Timestamp(); - Timestamp(const Timestamp& rhs); - Timestamp(const char* datestr); - Timestamp(const ui16_t& Year, const ui8_t& Month, const ui8_t& Day); - Timestamp(const ui16_t& Year, const ui8_t& Month, const ui8_t& Day, - const ui8_t& Hour, const ui8_t& Minute, const ui8_t& Second); - virtual ~Timestamp(); - - const Timestamp& operator=(const Timestamp& rhs); - bool operator<(const Timestamp& rhs) const; - bool operator>(const Timestamp& rhs) const; - bool operator==(const Timestamp& rhs) const; - bool operator!=(const Timestamp& rhs) const; - - // always UTC - void GetComponents(ui16_t& Year, ui8_t& Month, ui8_t& Day, - ui8_t& Hour, ui8_t& Minute, ui8_t& Second) const; - void SetComponents(const ui16_t& Year, const ui8_t& Month, const ui8_t& Day, - const ui8_t& Hour, const ui8_t& Minute, const ui8_t& Second); - - // Write the timestamp value to the given buffer in the form 2004-05-01T13:20:00+00:00 - // returns 0 if the buffer is smaller than DateTimeLen - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - - // decode and set value from string formatted by EncodeString - bool DecodeString(const char* datestr); - - // Add the given number of days, hours, minutes, or seconds to the timestamp value. - // Values less than zero will cause the timestamp to decrease - inline void AddDays(const i32_t& d) { m_Timestamp.add_days(d); } - inline void AddHours(const i32_t& h) { m_Timestamp.add_hours(h); } - inline void AddMinutes(const i32_t& m) { m_Timestamp.add_minutes(m); } - inline void AddSeconds(const i32_t& s) { m_Timestamp.add_seconds(s); } - - // returns false if the requested adjustment is out of range - bool SetTZOffsetMinutes(const i32_t& minutes); - inline i32_t GetTZOffsetMinutes() const { return m_TZOffsetMinutes; } - - // Return the number of seconds since the Unix epoch UTC (1970-01-01T00:00:00+00:00) - ui64_t GetCTime() const; - - // Read and write the timestamp (always UTC) value as a byte string having - // the following format: - // | 16 bits int, big-endian | 8 bits | 8 bits | 8 bits | 8 bits | 8 bits | - // | Year A.D | Month(1-12) | Day(1-31) | Hour(0-23) | Minute(0-59) | Second(0-59) | - // - virtual bool HasValue() const; - virtual ui32_t ArchiveLength() const { return 8L; } - virtual bool Archive(MemIOWriter* Writer) const; - virtual bool Unarchive(MemIOReader* Reader); - }; - - // - class ByteString : public IArchive - { - KM_NO_COPY_CONSTRUCT(ByteString); - - protected: - byte_t* m_Data; // pointer to memory area containing frame data - ui32_t m_Capacity; // size of memory area pointed to by m_Data - ui32_t m_Length; // length of byte string in memory area pointed to by m_Data - - public: - ByteString(); - ByteString(ui32_t cap); - virtual ~ByteString(); - - // Sets or resets the size of the internally allocated buffer. - Result_t Capacity(ui32_t cap); - - Result_t Append(const ByteString&); - Result_t Append(const byte_t* buf, ui32_t buf_len); - - // returns the size of the buffer - inline ui32_t Capacity() const { return m_Capacity; } - - // returns a const pointer to the essence data - inline const byte_t* RoData() const { assert(m_Data); return m_Data; } - - // returns a non-const pointer to the essence data - inline byte_t* Data() { assert(m_Data); return m_Data; } - - // set the length of the buffer's contents - inline ui32_t Length(ui32_t l) { return m_Length = l; } - - // returns the length of the buffer's contents - inline ui32_t Length() const { return m_Length; } - - // copy the given data into the ByteString, set Length value. - // Returns error if the ByteString is too small. - Result_t Set(const byte_t* buf, ui32_t buf_len); - Result_t Set(const ByteString& Buf); - - inline virtual bool HasValue() const { return m_Length > 0; } - - inline virtual ui32_t ArchiveLength() const { return m_Length; } - - inline virtual bool Archive(MemIOWriter* Writer) const { - assert(Writer); - if ( ! Writer->WriteUi32BE(m_Length) ) return false; - if ( ! Writer->WriteRaw(m_Data, m_Length) ) return false; - return true; - } - - inline virtual bool Unarchive(MemIOReader* Reader) { - assert(Reader); - ui32_t tmp_len; - if ( ! Reader->ReadUi32BE(&tmp_len) ) return false; - if ( KM_FAILURE(Capacity(tmp_len)) ) return false; - if ( ! Reader->ReadRaw(m_Data, tmp_len) ) return false; - m_Length = tmp_len; - return true; - } - }; - - inline void hexdump(const ByteString& buf, FILE*) { - hexdump(buf.RoData(), buf.Length()); - } - - -} // namespace Kumu - - -#endif // _KM_UTIL_H_ - -// -// end KM_util.h -// diff --git a/asdcplib/src/KM_xml.cpp b/asdcplib/src/KM_xml.cpp deleted file mode 100644 index 98dccc4..0000000 --- a/asdcplib/src/KM_xml.cpp +++ /dev/null @@ -1,1012 +0,0 @@ -/* -Copyright (c) 2005-2010, John Hurst -All rights reserved. - -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. -*/ -/*! \file KM_xml.cpp - \version $Id: KM_xml.cpp,v 1.19 2011/12/01 18:42:39 jhurst Exp $ - \brief XML writer -*/ - -#include <KM_xml.h> -#include <KM_log.h> -#include <KM_mutex.h> -#include <stack> -#include <map> - -#ifdef HAVE_EXPAT -# ifdef HAVE_XERCES_C -# error "Both HAVE_EXPAT and HAVE_XERCES_C defined" -# endif -#include <expat.h> -#endif - -#ifdef HAVE_XERCES_C -# ifdef HAVE_EXPAT -# error "Both HAVE_EXPAT and HAVE_XERCES_C defined" -# endif - -#include <xercesc/util/PlatformUtils.hpp> -#include <xercesc/util/XMLString.hpp> -#include <xercesc/util/TransService.hpp> -#include <xercesc/sax/AttributeList.hpp> -#include <xercesc/sax/HandlerBase.hpp> -#include <xercesc/sax/ErrorHandler.hpp> -#include <xercesc/sax/SAXParseException.hpp> -#include <xercesc/parsers/SAXParser.hpp> -#include <xercesc/framework/MemBufInputSource.hpp> -#include <xercesc/framework/XMLPScanToken.hpp> - - -XERCES_CPP_NAMESPACE_USE - -namespace Kumu { - void init_xml_dom(); - typedef std::basic_string<XMLCh> XercesString; - bool UTF_8_to_XercesString(const std::string& in_str, XercesString& out_str); - bool UTF_8_to_XercesString(const char* in_str, XercesString& out_str); - bool XercesString_to_UTF_8(const XercesString& in_str, std::string& out_str); - bool XercesString_to_UTF_8(const XMLCh* in_str, std::string& out_str); -} - -#endif - -using namespace Kumu; - - -class ns_map : public std::map<std::string, XMLNamespace*> -{ -public: - ~ns_map() - { - while ( ! empty() ) - { - ns_map::iterator ni = begin(); - delete ni->second; - erase(ni); - } - } -}; - - -Kumu::XMLElement::XMLElement(const char* name) : m_Namespace(0), m_NamespaceOwner(0) -{ - m_Name = name; -} - -Kumu::XMLElement::~XMLElement() -{ - for ( Elem_i i = m_ChildList.begin(); i != m_ChildList.end(); i++ ) - delete *i; - - delete (ns_map*)m_NamespaceOwner; -} - -// -void -Kumu::XMLElement::SetAttr(const char* name, const char* value) -{ - NVPair TmpVal; - TmpVal.name = name; - TmpVal.value = value; - - m_AttrList.push_back(TmpVal); -} - -// -Kumu::XMLElement* -Kumu::XMLElement::AddChild(Kumu::XMLElement* element) -{ - m_ChildList.push_back(element); // takes posession! - return element; -} - -// -Kumu::XMLElement* -Kumu::XMLElement::AddChild(const char* name) -{ - XMLElement* tmpE = new XMLElement(name); - m_ChildList.push_back(tmpE); - return tmpE; -} - -// -Kumu::XMLElement* -Kumu::XMLElement::AddChildWithContent(const char* name, const std::string& value) -{ - return AddChildWithContent(name, value.c_str()); -} - -// -void -Kumu::XMLElement::AppendBody(const std::string& value) -{ - m_Body += value; -} - -// -void -Kumu::XMLElement::SetBody(const std::string& value) -{ - m_Body = value; -} - -// -Kumu::XMLElement* -Kumu::XMLElement::AddChildWithContent(const char* name, const char* value) -{ - assert(name); - assert(value); - XMLElement* tmpE = new XMLElement(name); - tmpE->m_Body = value; - m_ChildList.push_back(tmpE); - return tmpE; -} - -// -Kumu::XMLElement* -Kumu::XMLElement::AddChildWithPrefixedContent(const char* name, const char* prefix, const char* value) -{ - XMLElement* tmpE = new XMLElement(name); - tmpE->m_Body = prefix; - tmpE->m_Body += value; - m_ChildList.push_back(tmpE); - return tmpE; -} - -// -void -Kumu::XMLElement::AddComment(const char* value) -{ - m_Body += " <!-- "; - m_Body += value; - m_Body += " -->\n"; -} - -// -void -Kumu::XMLElement::Render(std::string& outbuf) const -{ - outbuf = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; - RenderElement(outbuf, 0); -} - -// -inline void -add_spacer(std::string& outbuf, i32_t depth) -{ - while ( depth-- ) - outbuf+= " "; -} - -// -void -Kumu::XMLElement::RenderElement(std::string& outbuf, ui32_t depth) const -{ - add_spacer(outbuf, depth); - - outbuf += "<"; - outbuf += m_Name; - - // render attributes - for ( Attr_i i = m_AttrList.begin(); i != m_AttrList.end(); i++ ) - { - outbuf += " "; - outbuf += (*i).name; - outbuf += "=\""; - outbuf += (*i).value; - outbuf += "\""; - } - - outbuf += ">"; - - // body contents and children - if ( ! m_ChildList.empty() ) - { - outbuf += "\n"; - - // render body - if ( m_Body.length() > 0 ) - outbuf += m_Body; - - for ( Elem_i i = m_ChildList.begin(); i != m_ChildList.end(); i++ ) - (*i)->RenderElement(outbuf, depth + 1); - - add_spacer(outbuf, depth); - } - else if ( m_Body.length() > 0 ) - { - outbuf += m_Body; - } - - outbuf += "</"; - outbuf += m_Name; - outbuf += ">\n"; -} - -// -bool -Kumu::XMLElement::HasName(const char* name) const -{ - if ( name == 0 || *name == 0 ) - return false; - - return (m_Name == name); -} - - -void -Kumu::XMLElement::SetName(const char* name) -{ - if ( name != 0) - m_Name = name; -} - -// -const char* -Kumu::XMLElement::GetAttrWithName(const char* name) const -{ - for ( Attr_i i = m_AttrList.begin(); i != m_AttrList.end(); i++ ) - { - if ( (*i).name == name ) - return (*i).value.c_str(); - } - - return 0; -} - -// -Kumu::XMLElement* -Kumu::XMLElement::GetChildWithName(const char* name) const -{ - for ( Elem_i i = m_ChildList.begin(); i != m_ChildList.end(); i++ ) - { - if ( (*i)->HasName(name) ) - return *i; - } - - return 0; -} - -// -const Kumu::ElementList& -Kumu::XMLElement::GetChildrenWithName(const char* name, ElementList& outList) const -{ - assert(name); - for ( Elem_i i = m_ChildList.begin(); i != m_ChildList.end(); i++ ) - { - if ( (*i)->HasName(name) ) - outList.push_back(*i); - - if ( ! (*i)->m_ChildList.empty() ) - (*i)->GetChildrenWithName(name, outList); - } - - return outList; -} - -// -void -Kumu::XMLElement::DeleteAttributes() -{ - m_AttrList.clear(); -} - -// -void -Kumu::XMLElement::DeleteAttrWithName(const char* name) -{ - assert(name); - AttributeList::iterator i = m_AttrList.begin(); - - while ( i != m_AttrList.end() ) - { - if ( i->name == std::string(name) ) - m_AttrList.erase(i++); - else - ++i; - } -} - -// -void -Kumu::XMLElement::DeleteChildren() -{ - while ( ! m_ChildList.empty() ) - { - delete m_ChildList.back(); - m_ChildList.pop_back(); - } -} - -// -void -Kumu::XMLElement::DeleteChild(const XMLElement* element) -{ - if ( element != 0 ) - { - for ( ElementList::iterator i = m_ChildList.begin(); i != m_ChildList.end(); i++ ) - { - if ( *i == element ) - { - delete *i; - m_ChildList.erase(i); - return; - } - } - } -} - -// -void -Kumu::XMLElement::ForgetChild(const XMLElement* element) -{ - if ( element != 0 ) - { - for ( ElementList::iterator i = m_ChildList.begin(); i != m_ChildList.end(); i++ ) - { - if ( *i == element ) - { - m_ChildList.erase(i); - return; - } - } - } -} - -// -bool -Kumu::XMLElement::ParseString(const ByteString& document) -{ - return ParseString((const char*)document.RoData(), document.Length()); -} - -// -bool -Kumu::XMLElement::ParseString(const std::string& document) -{ - return ParseString(document.c_str(), document.size()); -} - - -//---------------------------------------------------------------------------------------------------- - -#ifdef HAVE_EXPAT - - -class ExpatParseContext -{ - KM_NO_COPY_CONSTRUCT(ExpatParseContext); - ExpatParseContext(); -public: - ns_map* Namespaces; - std::stack<XMLElement*> Scope; - XMLElement* Root; - - ExpatParseContext(XMLElement* root) : Root(root) { - Namespaces = new ns_map; - assert(Root); - } - - ~ExpatParseContext() {} -}; - -// expat wrapper functions -// -static void -xph_start(void* p, const XML_Char* name, const XML_Char** attrs) -{ - assert(p); assert(name); assert(attrs); - ExpatParseContext* Ctx = (ExpatParseContext*)p; - XMLElement* Element; - - const char* ns_root = name; - const char* local_name = strchr(name, '|'); - if ( local_name != 0 ) - name = local_name + 1; - - if ( Ctx->Scope.empty() ) - { - Ctx->Scope.push(Ctx->Root); - } - else - { - Element = Ctx->Scope.top(); - Ctx->Scope.push(Element->AddChild(name)); - } - - Element = Ctx->Scope.top(); - Element->SetName(name); - - // map the namespace - std::string key; - if ( ns_root != name ) - key.assign(ns_root, name - ns_root - 1); - - ns_map::iterator ni = Ctx->Namespaces->find(key); - if ( ni != Ctx->Namespaces->end() ) - Element->SetNamespace(ni->second); - - // set attributes - for ( int i = 0; attrs[i] != 0; i += 2 ) - { - if ( ( local_name = strchr(attrs[i], '|') ) == 0 ) - local_name = attrs[i]; - else - local_name++; - - Element->SetAttr(local_name, attrs[i+1]); - } -} - -// -static void -xph_end(void* p, const XML_Char* name) -{ - assert(p); assert(name); - ExpatParseContext* Ctx = (ExpatParseContext*)p; - Ctx->Scope.pop(); -} - -// -static void -xph_char(void* p, const XML_Char* data, int len) -{ - assert(p); assert(data); - ExpatParseContext* Ctx = (ExpatParseContext*)p; - - if ( len > 0 ) - { - std::string tmp_str; - tmp_str.assign(data, len); - Ctx->Scope.top()->AppendBody(tmp_str); - } -} - -// -void -xph_namespace_start(void* p, const XML_Char* ns_prefix, const XML_Char* ns_name) -{ - assert(p); assert(ns_name); - ExpatParseContext* Ctx = (ExpatParseContext*)p; - - if ( ns_prefix == 0 ) - ns_prefix = ""; - - ns_map::iterator ni = Ctx->Namespaces->find(ns_name); - - if ( ni != Ctx->Namespaces->end() ) - { - if ( ni->second->Name() != std::string(ns_name) ) - { - DefaultLogSink().Error("Duplicate prefix: %s\n", ns_prefix); - return; - } - } - else - { - XMLNamespace* Namespace = new XMLNamespace(ns_prefix, ns_name); - Ctx->Namespaces->insert(ns_map::value_type(ns_name, Namespace)); - } -} - -// -bool -Kumu::XMLElement::ParseString(const char* document, ui32_t doc_len) -{ - XML_Parser Parser = XML_ParserCreateNS("UTF-8", '|'); - - if ( Parser == 0 ) - { - DefaultLogSink().Error("Error allocating memory for XML parser.\n"); - return false; - } - - ExpatParseContext Ctx(this); - XML_SetUserData(Parser, (void*)&Ctx); - XML_SetElementHandler(Parser, xph_start, xph_end); - XML_SetCharacterDataHandler(Parser, xph_char); - XML_SetStartNamespaceDeclHandler(Parser, xph_namespace_start); - - if ( ! XML_Parse(Parser, document, doc_len, 1) ) - { - XML_ParserFree(Parser); - DefaultLogSink().Error("XML Parse error on line %d: %s\n", - XML_GetCurrentLineNumber(Parser), - XML_ErrorString(XML_GetErrorCode(Parser))); - return false; - } - - XML_ParserFree(Parser); - - if ( ! Ctx.Namespaces->empty() ) - m_NamespaceOwner = (void*)Ctx.Namespaces; - - return true; -} - -//------------------------------------------------------------------------------------------ - -struct xph_test_wrapper -{ - XML_Parser Parser; - bool Status; - - xph_test_wrapper(XML_Parser p) : Parser(p), Status(false) {} -}; - -// expat wrapper functions, map callbacks to IASAXHandler -// -static void -xph_test_start(void* p, const XML_Char*, const XML_Char**) -{ - assert(p); - xph_test_wrapper* Wrapper = (xph_test_wrapper*)p; - - Wrapper->Status = true; - XML_StopParser(Wrapper->Parser, false); -} - - -// -bool -Kumu::StringIsXML(const char* document, ui32_t len) -{ - if ( document == 0 ) - return false; - - if ( len == 0 ) - len = strlen(document); - - XML_Parser Parser = XML_ParserCreate("UTF-8"); - - if ( Parser == 0 ) - { - DefaultLogSink().Error("Error allocating memory for XML parser.\n"); - return false; - } - - xph_test_wrapper Wrapper(Parser); - XML_SetUserData(Parser, (void*)&Wrapper); - XML_SetStartElementHandler(Parser, xph_test_start); - - XML_Parse(Parser, document, len, 1); - XML_ParserFree(Parser); - return Wrapper.Status; -} - -#endif - -//---------------------------------------------------------------------------------------------------- - -#ifdef HAVE_XERCES_C - -static Mutex sg_xerces_init_lock; // protect the xerces initialized -static bool sg_xml_init = false; // signal initialization -static Mutex sg_coder_lock; // protect the transcoder context -static XMLTranscoder* sg_coder = 0; -static const int sg_coder_buf_len = 128 * 1024; -static char sg_coder_buf[sg_coder_buf_len + 8]; -static unsigned char sg_coder_counts[sg_coder_buf_len / sizeof(XMLCh)]; // see XMLTranscoder::transcodeFrom - -static const XMLCh sg_LS[] = { chLatin_L, chLatin_S, chNull }; -static const XMLCh sg_label_UTF_8[] = { chLatin_U, chLatin_T, chLatin_F, - chDash, chDigit_8, chNull}; - -// -void -Kumu::init_xml_dom() -{ - if ( ! sg_xml_init ) - { - AutoMutex AL(sg_xerces_init_lock); - - if ( ! sg_xml_init ) - { - try - { - XMLPlatformUtils::Initialize(); - sg_xml_init = true; - - XMLTransService::Codes ret; - sg_coder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor(sg_label_UTF_8, ret, sg_coder_buf_len); - - if ( ret != XMLTransService::Ok ) - { - const char* message = "Undefined Error"; - - switch ( ret ) - { - case XMLTransService::UnsupportedEncoding: message = "Unsupported encoding"; break; - case XMLTransService::InternalFailure: message = "Internal failure"; break; - case XMLTransService::SupportFilesNotFound: message = "Support files not found"; break; - } - - DefaultLogSink().Error("Xerces transform initialization error: %s\n", message); - } - } - catch (const XMLException &e) - { - DefaultLogSink().Error("Xerces initialization error: %s\n", e.getMessage()); - } - } - } -} - -// -bool -Kumu::XercesString_to_UTF_8(const Kumu::XercesString& in_str, std::string& out_str) { - return XercesString_to_UTF_8(in_str.c_str(), out_str); -} - -// -bool -Kumu::XercesString_to_UTF_8(const XMLCh* in_str, std::string& out_str) -{ - assert(in_str); - assert(sg_xml_init); - AutoMutex AL(sg_coder_lock); - ui32_t str_len = XMLString::stringLen(in_str); - ui32_t read_total = 0; - - try - { - while ( str_len > 0 ) - { -#if XERCES_VERSION_MAJOR < 3 - ui32_t read_count = 0; -#else - XMLSize_t read_count = 0; -#endif - ui32_t write_count = sg_coder->transcodeTo(in_str + read_total, str_len, - (XMLByte*)sg_coder_buf, sg_coder_buf_len, - read_count, XMLTranscoder::UnRep_Throw); - - out_str.append(sg_coder_buf, write_count); - str_len -= read_count; - read_total += read_count; - assert(str_len >= 0); - } - } - catch (...) - { - return false; - } - - return true; -} - -// -bool -Kumu::UTF_8_to_XercesString(const std::string& in_str, Kumu::XercesString& out_str) { - return UTF_8_to_XercesString(in_str.c_str(), out_str); -} - -// -bool -Kumu::UTF_8_to_XercesString(const char* in_str, Kumu::XercesString& out_str) -{ - assert(in_str); - assert(sg_xml_init); - AutoMutex AL(sg_coder_lock); - ui32_t str_len = strlen(in_str); - ui32_t read_total = 0; - - try - { - while ( str_len > 0 ) - { -#if XERCES_VERSION_MAJOR < 3 - ui32_t read_count = 0; -#else - XMLSize_t read_count = 0; -#endif - ui32_t write_count = sg_coder->transcodeFrom((const XMLByte*)(in_str + read_total), str_len, - (XMLCh*)sg_coder_buf, sg_coder_buf_len / sizeof(XMLCh), - read_count, sg_coder_counts); - - out_str.append((XMLCh*)sg_coder_buf, write_count * sizeof(XMLCh)); - str_len -= read_count; - read_total += read_count; - assert(str_len >= 0); - } - } - catch (...) - { - return false; - } - - return true; -} - -// -class MyTreeHandler : public HandlerBase -{ - ns_map* m_Namespaces; - std::stack<XMLElement*> m_Scope; - XMLElement* m_Root; - bool m_HasEncodeErrors; - -public: - MyTreeHandler(XMLElement* root) : m_Namespaces(0), m_Root(root), m_HasEncodeErrors(false) - { - assert(m_Root); - m_Namespaces = new ns_map; - } - - ~MyTreeHandler() { - delete m_Namespaces; - } - - bool HasEncodeErrors() const { return m_HasEncodeErrors; } - - ns_map* TakeNamespaceMap() - { - if ( m_Namespaces == 0 || m_Namespaces->empty() ) - return 0; - - ns_map* ret = m_Namespaces; - m_Namespaces = 0; - return ret; - } - - // - void AddNamespace(const char* ns_prefix, const char* ns_name) - { - assert(ns_prefix); - assert(ns_name); - - if ( ns_prefix[0] == ':' ) - { - ns_prefix++; - } - else - { - assert(ns_prefix[0] == 0); - ns_prefix = ""; - } - - ns_map::iterator ni = m_Namespaces->find(ns_name); - - if ( ni != m_Namespaces->end() ) - { - if ( ni->second->Name() != std::string(ns_name) ) - { - DefaultLogSink().Error("Duplicate prefix: %s\n", ns_prefix); - return; - } - } - else - { - XMLNamespace* Namespace = new XMLNamespace(ns_prefix, ns_name); - m_Namespaces->insert(ns_map::value_type(ns_prefix, Namespace)); - } - - assert(!m_Namespaces->empty()); - } - - // - void startElement(const XMLCh* const x_name, - XERCES_CPP_NAMESPACE::AttributeList& attributes) - { - assert(x_name); - std::string tx_name; - - if ( ! XercesString_to_UTF_8(x_name, tx_name) ) - m_HasEncodeErrors = true; - - const char* name = tx_name.c_str(); - XMLElement* Element; - const char* ns_root = name; - const char* local_name = strchr(name, ':'); - - if ( local_name != 0 ) - name = local_name + 1; - - if ( m_Scope.empty() ) - { - m_Scope.push(m_Root); - } - else - { - Element = m_Scope.top(); - m_Scope.push(Element->AddChild(name)); - } - - Element = m_Scope.top(); - Element->SetName(name); - - // set attributes - ui32_t a_len = attributes.getLength(); - - for ( ui32_t i = 0; i < a_len; i++) - { - std::string aname, value; - if ( ! XercesString_to_UTF_8(attributes.getName(i), aname) ) - m_HasEncodeErrors = true; - - if ( ! XercesString_to_UTF_8(attributes.getValue(i), value) ) - m_HasEncodeErrors = true; - - const char* x_aname = aname.c_str(); - const char* x_value = value.c_str(); - - if ( strncmp(x_aname, "xmlns", 5) == 0 ) - AddNamespace(x_aname+5, x_value); - - if ( ( local_name = strchr(x_aname, ':') ) == 0 ) - local_name = x_aname; - else - local_name++; - - Element->SetAttr(local_name, x_value); - } - - // map the namespace - std::string key; - if ( ns_root != name ) - key.assign(ns_root, name - ns_root - 1); - - ns_map::iterator ni = m_Namespaces->find(key); - if ( ni != m_Namespaces->end() ) - Element->SetNamespace(ni->second); - } - - void endElement(const XMLCh *const name) { - m_Scope.pop(); - } - - void characters(const XMLCh *const chars, const unsigned int length) - { - if ( length > 0 ) - { - std::string tmp; - if ( ! XercesString_to_UTF_8(chars, tmp) ) - m_HasEncodeErrors = true; - - m_Scope.top()->AppendBody(tmp); - } - } -}; - -// -bool -Kumu::XMLElement::ParseString(const char* document, ui32_t doc_len) -{ - if ( doc_len == 0 ) - return false; - - init_xml_dom(); - - int errorCount = 0; - SAXParser* parser = new SAXParser(); - - parser->setValidationScheme(SAXParser::Val_Always); - parser->setDoNamespaces(true); // optional - - MyTreeHandler* docHandler = new MyTreeHandler(this); - parser->setDocumentHandler(docHandler); - parser->setErrorHandler(docHandler); - - try - { - MemBufInputSource xmlSource(reinterpret_cast<const XMLByte*>(document), - static_cast<const unsigned int>(doc_len), - "pidc_rules_file"); - - parser->parse(xmlSource); - } - catch (const XMLException& e) - { - char* message = XMLString::transcode(e.getMessage()); - DefaultLogSink().Error("Parser error: %s\n", message); - XMLString::release(&message); - errorCount++; - } - catch (const SAXParseException& e) - { - char* message = XMLString::transcode(e.getMessage()); - DefaultLogSink().Error("Parser error: %s at line %d\n", message, e.getLineNumber()); - XMLString::release(&message); - errorCount++; - } - catch (...) - { - DefaultLogSink().Error("Unexpected XML parser error\n"); - errorCount++; - } - - if ( errorCount == 0 ) - m_NamespaceOwner = (void*)docHandler->TakeNamespaceMap(); - - delete parser; - delete docHandler; - - return errorCount > 0 ? false : true; -} - -// -bool -Kumu::StringIsXML(const char* document, ui32_t len) -{ - if ( document == 0 || *document == 0 ) - return false; - - init_xml_dom(); - - if ( len == 0 ) - len = strlen(document); - - SAXParser parser; - XMLPScanToken token; - bool status = false; - - try - { - MemBufInputSource xmlSource(reinterpret_cast<const XMLByte*>(document), - static_cast<const unsigned int>(len), - "pidc_rules_file"); - - if ( parser.parseFirst(xmlSource, token) ) - { - if ( parser.parseNext(token) ) - status = true; - } - } - catch (...) - { - } - - return status; -} - - -#endif - -//---------------------------------------------------------------------------------------------------- - -#if ! defined(HAVE_EXPAT) && ! defined(HAVE_XERCES_C) - -// -bool -Kumu::XMLElement::ParseString(const char*, ui32_t) -{ - DefaultLogSink().Error("Kumu compiled without XML parser support.\n"); - return false; -} - -// -bool -Kumu::StringIsXML(const char*, ui32_t) -{ - DefaultLogSink().Error("Kumu compiled without XML parser support.\n"); - return false; -} - -#endif - - -// -// end KM_xml.cpp -// diff --git a/asdcplib/src/KM_xml.h b/asdcplib/src/KM_xml.h deleted file mode 100644 index cf77366..0000000 --- a/asdcplib/src/KM_xml.h +++ /dev/null @@ -1,141 +0,0 @@ -/* -Copyright (c) 2005-2011, John Hurst -All rights reserved. - -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. -*/ -/*! \file KM_xml.h - \version $Id: KM_xml.h,v 1.8 2011/08/15 23:03:26 jhurst Exp $ - \brief XML writer -*/ - - -#ifndef _KM_XML_H_ -#define _KM_XML_H_ - -#include <KM_util.h> -#include <list> -#include <string> - -namespace Kumu -{ - class XMLElement; - - // Return true if the given string contains an XML document (or the start of one). - bool StringIsXML(const char* document, ui32_t len = 0); - - // - struct NVPair - { - std::string name; - std::string value; - }; - - // - typedef std::list<NVPair> AttributeList; - typedef AttributeList::const_iterator Attr_i; - typedef std::list<XMLElement*> ElementList; - typedef ElementList::const_iterator Elem_i; - - // - class XMLNamespace - { - std::string m_Prefix; - std::string m_Name; - - KM_NO_COPY_CONSTRUCT(XMLNamespace); - XMLNamespace(); - - public: - XMLNamespace(const char* prefix, const char* name) : m_Prefix(prefix), m_Name(name) {} - ~XMLNamespace() {} - - inline const std::string& Prefix() const { return m_Prefix; } - inline const std::string& Name() const { return m_Name; } - }; - - // - class XMLElement - { - KM_NO_COPY_CONSTRUCT(XMLElement); - XMLElement(); - - protected: - AttributeList m_AttrList; - ElementList m_ChildList; - const XMLNamespace* m_Namespace; - void* m_NamespaceOwner; - - std::string m_Name; - std::string m_Body; - - public: - XMLElement(const char* name); - ~XMLElement(); - - inline const XMLNamespace* Namespace() const { return m_Namespace; } - inline void SetNamespace(const XMLNamespace* ns) { assert(ns); m_Namespace = ns; } - - bool ParseString(const char* document, ui32_t doc_len); - bool ParseString(const ByteString& document); - bool ParseString(const std::string& document); - - // building - void SetName(const char* name); - void SetBody(const std::string& value); - void AppendBody(const std::string& value); - void SetAttr(const char* name, const char* value); - void SetAttr(const char* name, const std::string& value) { SetAttr(name, value.c_str()); } - XMLElement* AddChild(XMLElement* element); - XMLElement* AddChild(const char* name); - XMLElement* AddChildWithContent(const char* name, const char* value); - XMLElement* AddChildWithContent(const char* name, const std::string& value); - XMLElement* AddChildWithPrefixedContent(const char* name, const char* prefix, const char* value); - void AddComment(const char* value); - void Render(std::string&) const; - void RenderElement(std::string& outbuf, ui32_t depth) const; - - // querying - inline const std::string& GetBody() const { return m_Body; } - inline const ElementList& GetChildren() const { return m_ChildList; } - inline const std::string& GetName() const { return m_Name; } - inline const AttributeList& GetAttributes() const { return m_AttrList; } - const char* GetAttrWithName(const char* name) const; - XMLElement* GetChildWithName(const char* name) const; - const ElementList& GetChildrenWithName(const char* name, ElementList& outList) const; - bool HasName(const char* name) const; - - // altering - void DeleteAttributes(); - void DeleteAttrWithName(const char* name); - void DeleteChildren(); - void DeleteChild(const XMLElement* element); - void ForgetChild(const XMLElement* element); - }; -} // namespace Kumu - -#endif // _KM_XML_H_ - -// -// end KM_xml.h -// diff --git a/asdcplib/src/MDD.cpp b/asdcplib/src/MDD.cpp deleted file mode 100644 index ac8f0dd..0000000 --- a/asdcplib/src/MDD.cpp +++ /dev/null @@ -1,925 +0,0 @@ -/* -Copyright (c) 2006-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file MDD.[h|cpp] - \version $Id: MDD.cpp,v 1.34 2012/02/02 01:58:43 jhurst Exp $ - \brief MXF Metadata Dictionary -*/ -// -// MDD.cpp -// - -#include "KLV.h" - -static const ASDCP::MDDEntry s_MDD_Table[] = { - { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MICAlgorithm_NONE" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 1 - 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MXFInterop_OPAtom" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, // 2 - 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0, 0}, false, "OPAtom" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 3 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00 }, - {0, 0}, false, "OP1a" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x03, // 4 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7f, 0x01, 0x00 }, - {0, 0}, false, "GCMulti" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 5 - 0x01, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PictureDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 6 - 0x01, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "SoundDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 7 - 0x01, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimecodeDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 8 - 0x01, 0x03, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DescriptiveMetaDataDef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, // 9 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x06, 0x01, 0x00 }, - {0, 0}, false, "WAVWrapping" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, // 10 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x04, 0x60, 0x00 }, - {0, 0}, false, "MPEG2_VESWrapping" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 11 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0c, 0x01, 0x00 }, - {0, 0}, false, "JPEG_2000Wrapping" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 12 - 0x0d, 0x01, 0x03, 0x01, 0x15, 0x01, 0x08, 0x00 }, - {0, 0}, false, "JPEG2000Essence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 13 - 0x0d, 0x01, 0x03, 0x01, 0x15, 0x01, 0x05, 0x00 }, - {0, 0}, false, "MPEG2Essence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x04, 0x01, 0x07, // 14 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7e, 0x01, 0x00 }, - {0, 0}, false, "MXFInterop_CryptEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x04, 0x01, 0x01, // 15 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x7e, 0x01, 0x00 }, - {0, 0}, false, "CryptEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 16 - 0x0d, 0x01, 0x03, 0x01, 0x16, 0x01, 0x01, 0x00 }, - {0, 0}, false, "WAVEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09, // 17 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x03 }, - {0, 0}, false, "JP2KEssenceCompression_2K" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09, // 18 - 0x04, 0x01, 0x02, 0x02, 0x03, 0x01, 0x01, 0x04 }, - {0, 0}, false, "JP2KEssenceCompression_4K" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 19 - 0x02, 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "CipherAlgorithm_AES" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 20 - 0x02, 0x09, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MICAlgorithm_HMAC_SHA1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 21 - 0x03, 0x01, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "KLVFill" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 22 - 0x03, 0x01, 0x02, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_MajorVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 23 - 0x03, 0x01, 0x02, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_MinorVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 24 - 0x03, 0x01, 0x02, 0x01, 0x09, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_KAGSize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 25 - 0x06, 0x10, 0x10, 0x03, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_ThisPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 26 - 0x06, 0x10, 0x10, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_PreviousPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 27 - 0x06, 0x10, 0x10, 0x05, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_FooterPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 28 - 0x04, 0x06, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_HeaderByteCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 29 - 0x04, 0x06, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_IndexByteCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 30 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 31 - 0x06, 0x08, 0x01, 0x02, 0x01, 0x03, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_BodyOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 32 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 33 - 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_OperationalPattern" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 34 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, - {0, 0}, false, "PartitionMetadata_EssenceContainers" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 35 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00 }, - {0, 0}, false, "OpenHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 36 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00 }, - {0, 0}, false, "OpenCompleteHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 37 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x00 }, - {0, 0}, false, "ClosedHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 38 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04, 0x00 }, - {0, 0}, false, "ClosedCompleteHeader" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 39 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00 }, - {0, 0}, false, "OpenBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 40 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x03, 0x00 }, - {0, 0}, false, "OpenCompleteBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 41 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x00 }, - {0, 0}, false, "ClosedBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 42 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x04, 0x00 }, - {0, 0}, false, "ClosedCompleteBodyPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 43 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x00 }, - {0, 0}, false, "Footer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 44 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x04, 0x04, 0x00 }, - {0, 0}, false, "CompleteFooter" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 45 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x05, 0x01, 0x00 }, - {0, 0}, false, "Primer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 46 - 0x06, 0x01, 0x01, 0x07, 0x15, 0x00, 0x00, 0x00 }, - {0, 0}, false, "Primer_LocalTagEntryBatch" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 47 - 0x01, 0x03, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "LocalTagEntryBatch_Primer_LocalTag" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 48 - 0x01, 0x03, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "LocalTagEntryBatch_Primer_UID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 49 - 0x01, 0x01, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x3c, 0x0a}, false, "InterchangeObject_InstanceUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 50 - 0x05, 0x20, 0x07, 0x01, 0x08, 0x00, 0x00, 0x00 }, - {0x01, 0x02}, true, "GenerationInterchangeObject_GenerationUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 51 - 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DefaultObject" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 52 - 0x05, 0x30, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x0b}, false, "IndexTableSegmentBase_IndexEditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 53 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x0a, 0x00, 0x00 }, - {0x3f, 0x0c}, false, "IndexTableSegmentBase_IndexStartPosition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 54 - 0x07, 0x02, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00 }, - {0x3f, 0x0d}, false, "IndexTableSegmentBase_IndexDuration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 55 - 0x04, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x05}, false, "IndexTableSegmentBase_EditUnitByteCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 56 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x06}, false, "IndexTableSegmentBase_IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 57 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x07}, false, "IndexTableSegmentBase_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 58 - 0x04, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x3f, 0x08}, false, "IndexTableSegmentBase_SliceCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 59 - 0x04, 0x04, 0x04, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0x3f, 0x0e}, true, "IndexTableSegmentBase_PosTableCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 60 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x10, 0x01, 0x00 }, - {0, 0}, false, "IndexTableSegment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 61 - 0x04, 0x04, 0x04, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0x3f, 0x09}, true, "IndexTableSegment_DeltaEntryArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 62 - 0x04, 0x04, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DeltaEntryArray_IndexTableSegment_PosTableIndex" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 63 - 0x04, 0x04, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DeltaEntryArray_IndexTableSegment_Slice" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 64 - 0x04, 0x04, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DeltaEntryArray_IndexTableSegment_ElementDelta" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 65 - 0x04, 0x04, 0x04, 0x02, 0x05, 0x00, 0x00, 0x00 }, - {0x3f, 0x0a}, false, "IndexTableSegment_IndexEntryArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 66 - 0x04, 0x04, 0x04, 0x02, 0x03, 0x00, 0x00, 0x00 }, - {0, 0}, false, "IndexEntryArray_IndexTableSegment_TemporalOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 67 - 0x04, 0x04, 0x04, 0x02, 0x04, 0x00, 0x00, 0x00 }, - {0, 0}, false, "IndexEntryArray_IndexTableSegment_AnchorOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 68 - 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "IndexEntryArray_IndexTableSegment_Flags" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 69 - 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "IndexEntryArray_IndexTableSegment_StreamOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 70 - 0x04, 0x04, 0x04, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0, 0}, false, "IndexEntryArray_IndexTableSegment_SliceOffsetArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 71 - 0x04, 0x04, 0x04, 0x01, 0x08, 0x00, 0x00, 0x00 }, - {0, 0}, false, "IndexEntryArray_IndexTableSegment_PosTableArray" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 72 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x11, 0x01, 0x00 }, - {0, 0}, false, "RandomIndexMetadata" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 73 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionArray_RandomIndexMetadata_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 74 - 0x06, 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "PartitionArray_RandomIndexMetadata_ByteOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 75 - 0x04, 0x06, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "RandomIndexMetadata_Length" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 76 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x11, 0x00, 0x00 }, - {0, 0}, false, "RandomIndexMetadataV10" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 77 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2f, 0x00 }, - {0, 0}, false, "Preface" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 78 - 0x07, 0x02, 0x01, 0x10, 0x02, 0x04, 0x00, 0x00 }, - {0x3b, 0x02}, false, "Preface_LastModifiedDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 79 - 0x03, 0x01, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x3b, 0x05}, false, "Preface_Version" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 80 - 0x03, 0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3b, 0x07}, true, "Preface_ObjectModelVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 81 - 0x06, 0x01, 0x01, 0x04, 0x01, 0x08, 0x00, 0x00 }, - {0x3b, 0x08}, true, "Preface_PrimaryPackage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 82 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x04, 0x00, 0x00 }, - {0x3b, 0x06}, false, "Preface_Identifications" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 83 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x01, 0x00, 0x00 }, - {0x3b, 0x03}, false, "Preface_ContentStorage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 84 - 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x3b, 0x09}, false, "Preface_OperationalPattern" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 85 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, - {0x3b, 0x0a}, false, "Preface_EssenceContainers" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 86 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x02, 0x00, 0x00 }, - {0x3b, 0x0b}, false, "Preface_DMSchemes" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 87 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x30, 0x00 }, - {0, 0}, false, "Identification" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 88 - 0x05, 0x20, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x3c, 0x09}, false, "Identification_ThisGenerationUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 89 - 0x05, 0x20, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00 }, - {0x3c, 0x01}, false, "Identification_CompanyName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 90 - 0x05, 0x20, 0x07, 0x01, 0x03, 0x01, 0x00, 0x00 }, - {0x3c, 0x02}, false, "Identification_ProductName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 91 - 0x05, 0x20, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3c, 0x03}, true, "Identification_ProductVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 92 - 0x05, 0x20, 0x07, 0x01, 0x05, 0x01, 0x00, 0x00 }, - {0x3c, 0x04}, false, "Identification_VersionString" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 93 - 0x05, 0x20, 0x07, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0x3c, 0x05}, false, "Identification_ProductUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 94 - 0x07, 0x02, 0x01, 0x10, 0x02, 0x03, 0x00, 0x00 }, - {0x3c, 0x06}, false, "Identification_ModificationDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 95 - 0x05, 0x20, 0x07, 0x01, 0x0a, 0x00, 0x00, 0x00 }, - {0x3c, 0x07}, true, "Identification_ToolkitVersion" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 96 - 0x05, 0x20, 0x07, 0x01, 0x06, 0x01, 0x00, 0x00 }, - {0x3c, 0x08}, true, "Identification_Platform" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 97 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x00 }, - {0, 0}, false, "ContentStorage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 98 - 0x06, 0x01, 0x01, 0x04, 0x05, 0x01, 0x00, 0x00 }, - {0x19, 0x01}, false, "ContentStorage_Packages" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 99 - 0x06, 0x01, 0x01, 0x04, 0x05, 0x02, 0x00, 0x00 }, - {0x19, 0x02}, true, "ContentStorage_EssenceContainerData" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 100 - 0x06, 0x01, 0x01, 0x04, 0x05, 0x00, 0x00, 0x00 }, - {0x19, 0x01}, false, "ContentStorageKludge_V10Packages" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 101 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x23, 0x00 }, - {0, 0}, false, "EssenceContainerData" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 102 - 0x06, 0x01, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00 }, - {0x27, 0x01}, false, "EssenceContainerData_LinkedPackageUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 103 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x06}, true, "EssenceContainerData_IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 104 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x07}, false, "EssenceContainerData_BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 105 - 0x01, 0x01, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00 }, - {0x44, 0x01}, false, "GenericPackage_PackageUID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 106 - 0x01, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x44, 0x02}, true, "GenericPackage_Name" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 107 - 0x07, 0x02, 0x01, 0x10, 0x01, 0x03, 0x00, 0x00 }, - {0x44, 0x05}, false, "GenericPackage_PackageCreationDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 108 - 0x07, 0x02, 0x01, 0x10, 0x02, 0x05, 0x00, 0x00 }, - {0x44, 0x04}, false, "GenericPackage_PackageModifiedDate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 109 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x05, 0x00, 0x00 }, - {0x44, 0x03}, false, "GenericPackage_Tracks" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 110 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x32, 0x00 }, - {0, 0}, false, "NetworkLocator" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 111 - 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x40, 0x01}, false, "NetworkLocator_URLString" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 112 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x33, 0x00 }, - {0, 0}, false, "TextLocator" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 113 - 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x41, 0x01}, false, "TextLocator_LocatorName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 114 - 0x01, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x48, 0x01}, false, "GenericTrack_TrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 115 - 0x01, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x48, 0x04}, false, "GenericTrack_TrackNumber" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 116 - 0x01, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x48, 0x02}, true, "GenericTrack_TrackName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 117 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x04, 0x00, 0x00 }, - {0x48, 0x03}, false, "GenericTrack_Sequence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 118 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3a, 0x00 }, - {0, 0}, false, "StaticTrack" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 119 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3b, 0x00 }, - {0, 0}, false, "Track" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 120 - 0x05, 0x30, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x4b, 0x01}, false, "Track_EditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 121 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00 }, - {0x4b, 0x02}, false, "Track_Origin" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 122 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x39, 0x00 }, - {0, 0}, false, "EventTrack" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 123 - 0x05, 0x30, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x49, 0x01}, false, "EventTrack_EventEditRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 124 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x0b, 0x00, 0x00 }, - {0x49, 0x02}, true, "EventTrack_EventOrigin" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 125 - 0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0x02, 0x01}, false, "StructuralComponent_DataDefinition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 126 - 0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00 }, - {0x02, 0x02}, false, "StructuralComponent_Duration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 127 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0f, 0x00 }, - {0, 0}, false, "Sequence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 128 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x09, 0x00, 0x00 }, - {0x10, 0x01}, false, "Sequence_StructuralComponents" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 129 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x00 }, - {0, 0}, false, "TimecodeComponent" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 130 - 0x04, 0x04, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00 }, - {0x15, 0x02}, false, "TimecodeComponent_RoundedTimecodeBase" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 131 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x05, 0x00, 0x00 }, - {0x15, 0x01}, false, "TimecodeComponent_StartTimecode" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 132 - 0x04, 0x04, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x15, 0x03}, false, "TimecodeComponent_DropFrame" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 133 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x00 }, - {0, 0}, false, "SourceClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 134 - 0x07, 0x02, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00 }, - {0x12, 0x01}, false, "SourceClip_StartPosition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 135 - 0x06, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00 }, - {0x11, 0x01}, false, "SourceClip_SourcePackageID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 136 - 0x06, 0x01, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00 }, - {0x11, 0x02}, false, "SourceClip_SourceTrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 137 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x41, 0x00 }, - {0, 0}, false, "DMSegment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 138 - 0x07, 0x02, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00 }, - {0x06, 0x01}, false, "DMSegment_EventStartPosition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 139 - 0x05, 0x30, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00 }, - {0x06, 0x02}, true, "DMSegment_EventComment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 140 - 0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x61, 0x02}, false, "DMSegment_TrackIDs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 141 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x0c, 0x00, 0x00 }, - {0x61, 0x01}, false, "DMSegment_DMFramework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 142 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x45, 0x00 }, - {0, 0}, false, "DMSourceClip" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 143 - 0x01, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00 }, - {0x61, 0x03}, true, "DMSourceClip_DMSourceClipTrackIDs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 144 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x36, 0x00 }, - {0, 0}, false, "MaterialPackage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 145 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x37, 0x00 }, - {0, 0}, false, "SourcePackage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 146 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x03, 0x00, 0x00 }, - {0x47, 0x01}, false, "SourcePackage_Descriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 147 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x03, 0x00, 0x00 }, - {0x2f, 0x01}, true, "GenericDescriptor_Locators" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 148 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, - {0, 0}, true, "GenericDescriptor_SubDescriptors" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 149 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x25, 0x00 }, - {0, 0}, false, "FileDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 150 - 0x06, 0x01, 0x01, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0x30, 0x06}, true, "FileDescriptor_LinkedTrackID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 151 - 0x04, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x30, 0x01}, false, "FileDescriptor_SampleRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 152 - 0x04, 0x06, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x30, 0x02}, true, "FileDescriptor_ContainerDuration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 153 - 0x06, 0x01, 0x01, 0x04, 0x01, 0x02, 0x00, 0x00 }, - {0x30, 0x04}, false, "FileDescriptor_EssenceContainer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 154 - 0x06, 0x01, 0x01, 0x04, 0x01, 0x03, 0x00, 0x00 }, - {0x30, 0x05}, true, "FileDescriptor_Codec" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 155 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x27, 0x00 }, - {0, 0}, false, "GenericPictureEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 156 - 0x04, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x15}, true, "GenericPictureEssenceDescriptor_SignalStandard" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 157 - 0x04, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x32, 0x0c}, false, "GenericPictureEssenceDescriptor_FrameLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 158 - 0x04, 0x01, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0x32, 0x03}, false, "GenericPictureEssenceDescriptor_StoredWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 159 - 0x04, 0x01, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x32, 0x02}, false, "GenericPictureEssenceDescriptor_StoredHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 160 - 0x04, 0x01, 0x03, 0x02, 0x08, 0x00, 0x00, 0x00 }, - {0x32, 0x16}, true, "GenericPictureEssenceDescriptor_StoredF2Offset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 161 - 0x04, 0x01, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00 }, - {0x32, 0x05}, true, "GenericPictureEssenceDescriptor_SampledWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 162 - 0x04, 0x01, 0x05, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0x32, 0x04}, true, "GenericPictureEssenceDescriptor_SampledHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 163 - 0x04, 0x01, 0x05, 0x01, 0x09, 0x00, 0x00, 0x00 }, - {0x32, 0x06}, true, "GenericPictureEssenceDescriptor_SampledXOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 164 - 0x04, 0x01, 0x05, 0x01, 0x0a, 0x00, 0x00, 0x00 }, - {0x32, 0x07}, true, "GenericPictureEssenceDescriptor_SampledYOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 165 - 0x04, 0x01, 0x05, 0x01, 0x0b, 0x00, 0x00, 0x00 }, - {0x32, 0x08}, true, "GenericPictureEssenceDescriptor_DisplayHeight" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 166 - 0x04, 0x01, 0x05, 0x01, 0x0c, 0x00, 0x00, 0x00 }, - {0x32, 0x09}, true, "GenericPictureEssenceDescriptor_DisplayWidth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 167 - 0x04, 0x01, 0x05, 0x01, 0x0d, 0x00, 0x00, 0x00 }, - {0x32, 0x0a}, true, "GenericPictureEssenceDescriptor_DisplayXOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 168 - 0x04, 0x01, 0x05, 0x01, 0x0e, 0x00, 0x00, 0x00 }, - {0x32, 0x0b}, true, "GenericPictureEssenceDescriptor_DisplayYOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 169 - 0x04, 0x01, 0x03, 0x02, 0x07, 0x00, 0x00, 0x00 }, - {0x32, 0x17}, true, "GenericPictureEssenceDescriptor_DisplayF2Offset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 170 - 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x32, 0x0e}, false, "GenericPictureEssenceDescriptor_AspectRatio" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 171 - 0x04, 0x01, 0x03, 0x02, 0x09, 0x00, 0x00, 0x00 }, - {0x32, 0x18}, true, "GenericPictureEssenceDescriptor_ActiveFormatDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 172 - 0x04, 0x01, 0x03, 0x02, 0x05, 0x00, 0x00, 0x00 }, - {0x32, 0x0d}, false, "GenericPictureEssenceDescriptor_VideoLineMap" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 173 - 0x05, 0x20, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x0f}, true, "GenericPictureEssenceDescriptor_AlphaTransparency" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 174 - 0x04, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00 }, - {0x32, 0x10}, true, "GenericPictureEssenceDescriptor_Gamma" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 175 - 0x04, 0x18, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x11}, true, "GenericPictureEssenceDescriptor_ImageAlignmentOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 176 - 0x04, 0x18, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x13}, true, "GenericPictureEssenceDescriptor_ImageStartOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 177 - 0x04, 0x18, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x14}, true, "GenericPictureEssenceDescriptor_ImageEndOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 178 - 0x04, 0x01, 0x03, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0x32, 0x12}, true, "GenericPictureEssenceDescriptor_FieldDominance" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 179 - 0x04, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x32, 0x01}, false, "GenericPictureEssenceDescriptor_PictureEssenceCoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 180 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x28, 0x00 }, - {0, 0}, false, "CDCIEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 181 - 0x04, 0x01, 0x05, 0x03, 0x0a, 0x00, 0x00, 0x00 }, - {0x33, 0x01}, false, "CDCIEssenceDescriptor_ComponentDepth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 182 - 0x04, 0x01, 0x05, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x33, 0x02}, false, "CDCIEssenceDescriptor_HorizontalSubsampling" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 183 - 0x04, 0x01, 0x05, 0x01, 0x10, 0x00, 0x00, 0x00 }, - {0x33, 0x08}, true, "CDCIEssenceDescriptor_VerticalSubsampling" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 184 - 0x04, 0x01, 0x05, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0x33, 0x03}, true, "CDCIEssenceDescriptor_ColorSiting" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 185 - 0x03, 0x01, 0x02, 0x01, 0x0a, 0x00, 0x00, 0x00 }, - {0x33, 0x0b}, true, "CDCIEssenceDescriptor_ReversedByteOrder" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 186 - 0x04, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x33, 0x07}, true, "CDCIEssenceDescriptor_PaddingBits" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 187 - 0x04, 0x01, 0x05, 0x03, 0x07, 0x00, 0x00, 0x00 }, - {0x33, 0x09}, true, "CDCIEssenceDescriptor_AlphaSampleDepth" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 188 - 0x04, 0x01, 0x05, 0x03, 0x03, 0x00, 0x00, 0x00 }, - {0x33, 0x04}, true, "CDCIEssenceDescriptor_BlackRefLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 189 - 0x04, 0x01, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00 }, - {0x33, 0x05}, true, "CDCIEssenceDescriptor_WhiteReflevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 190 - 0x04, 0x01, 0x05, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0x33, 0x06}, true, "CDCIEssenceDescriptor_ColorRange" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 191 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x29, 0x00 }, - {0, 0}, false, "RGBAEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 192 - 0x04, 0x01, 0x05, 0x03, 0x0b, 0x00, 0x00, 0x00 }, - {0x34, 0x06}, true, "RGBAEssenceDescriptor_ComponentMaxRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 193 - 0x04, 0x01, 0x05, 0x03, 0x0c, 0x00, 0x00, 0x00 }, - {0x34, 0x07}, true, "RGBAEssenceDescriptor_ComponentMinRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 194 - 0x04, 0x01, 0x05, 0x03, 0x0d, 0x00, 0x00, 0x00 }, - {0x34, 0x08}, true, "RGBAEssenceDescriptor_AlphaMaxRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 195 - 0x04, 0x01, 0x05, 0x03, 0x0e, 0x00, 0x00, 0x00 }, - {0x34, 0x09}, true, "RGBAEssenceDescriptor_AlphaMinRef" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 196 - 0x04, 0x01, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00 }, - {0x34, 0x05}, true, "RGBAEssenceDescriptor_ScanningDirection" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 197 - 0x04, 0x01, 0x05, 0x03, 0x06, 0x00, 0x00, 0x00 }, - {0x34, 0x01}, false, "RGBAEssenceDescriptor_PixelLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 198 - 0x04, 0x01, 0x05, 0x03, 0x08, 0x00, 0x00, 0x00 }, - {0x34, 0x03}, true, "RGBAEssenceDescriptor_Palette" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 199 - 0x04, 0x01, 0x05, 0x03, 0x09, 0x00, 0x00, 0x00 }, - {0x34, 0x04}, true, "RGBAEssenceDescriptor_PaletteLayout" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 200 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42, 0x00 }, - {0, 0}, false, "GenericSoundEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 201 - 0x04, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00 }, - {0x3d, 0x03}, false, "GenericSoundEssenceDescriptor_AudioSamplingRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 202 - 0x04, 0x02, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3d, 0x02}, false, "GenericSoundEssenceDescriptor_Locked" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 203 - 0x04, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0x3d, 0x04}, true, "GenericSoundEssenceDescriptor_AudioRefLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, // 204 - 0x04, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0x3d, 0x05}, true, "GenericSoundEssenceDescriptor_ElectroSpatialFormulation" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 205 - 0x04, 0x02, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0x3d, 0x07}, false, "GenericSoundEssenceDescriptor_ChannelCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 206 - 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0x00 }, - {0x3d, 0x01}, false, "GenericSoundEssenceDescriptor_QuantizationBits" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 207 - 0x04, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0x3d, 0x0c}, true, "GenericSoundEssenceDescriptor_DialNorm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 208 - 0x04, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x3d, 0x06}, false, "GenericSoundEssenceDescriptor_SoundEssenceCompression" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 209 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x43, 0x00 }, - {0, 0}, false, "GenericDataEssenceDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 210 - 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00 }, - {0x3e, 0x01}, false, "GenericDataEssenceDescriptor_DataEssenceCoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 211 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x44, 0x00 }, - {0, 0}, false, "MultipleDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 212 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x0b, 0x00, 0x00 }, - {0x3f, 0x01}, false, "MultipleDescriptor_SubDescriptorUIDs" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 213 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x51, 0x00 }, - {0, 0}, false, "MPEG2VideoDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 214 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x02, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_SingleSequence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 215 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x03, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_ConstantBFrames" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 216 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x04, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_CodedContentType" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 217 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x05, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_LowDelay" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 218 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x06, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_ClosedGOP" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 219 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x07, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_IdenticalGOP" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 220 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x08, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_MaxGOP" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 221 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x09, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_BPictureCount" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 222 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x0b, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_BitRate" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 223 - 0x04, 0x01, 0x06, 0x02, 0x01, 0x0a, 0x00, 0x00 }, - {0, 0}, true, "MPEG2VideoDescriptor_ProfileAndLevel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 224 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x48, 0x00 }, - {0, 0}, false, "WaveAudioDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 225 - 0x04, 0x02, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0x3d, 0x0a}, false, "WaveAudioDescriptor_BlockAlign" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 226 - 0x04, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0x3d, 0x0b}, true, "WaveAudioDescriptor_SequenceOffset" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 227 - 0x04, 0x02, 0x03, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0x3d, 0x09}, false, "WaveAudioDescriptor_AvgBps" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 228 - 0x04, 0x02, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x00 }, - {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelope" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 229 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x5a, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 230 - 0x04, 0x01, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_Rsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 231 - 0x04, 0x01, 0x06, 0x03, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_Xsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 232 - 0x04, 0x01, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_Ysize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 233 - 0x04, 0x01, 0x06, 0x03, 0x04, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_XOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 234 - 0x04, 0x01, 0x06, 0x03, 0x05, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_YOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 235 - 0x04, 0x01, 0x06, 0x03, 0x06, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_XTsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 236 - 0x04, 0x01, 0x06, 0x03, 0x07, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_YTsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 237 - 0x04, 0x01, 0x06, 0x03, 0x08, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_XTOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 238 - 0x04, 0x01, 0x06, 0x03, 0x09, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_YTOsize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 239 - 0x04, 0x01, 0x06, 0x03, 0x0a, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_Csize" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 240 - 0x04, 0x01, 0x06, 0x03, 0x0b, 0x00, 0x00, 0x00 }, - {0, 0}, false, "JPEG2000PictureSubDescriptor_PictureComponentSizing" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 241 - 0x04, 0x01, 0x06, 0x03, 0x0c, 0x00, 0x00, 0x00 }, - {0, 0}, true, "JPEG2000PictureSubDescriptor_CodingStyleDefault" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0a, // 242 - 0x04, 0x01, 0x06, 0x03, 0x0d, 0x00, 0x00, 0x00 }, - {0, 0}, true, "JPEG2000PictureSubDescriptor_QuantizationDefault" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 243 - 0x0d, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DM_Framework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 244 - 0x0d, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "DM_Set" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 245 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x0b, 0x01, 0x00 }, - {0, 0}, false, "EncryptedContainerLabel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, // 246 - 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01, 0x01, 0x00 }, - {0, 0}, false, "CryptographicFrameworkLabel" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 247 - 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00 }, - {0, 0}, false, "CryptographicFramework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 248 - 0x06, 0x01, 0x01, 0x04, 0x02, 0x0d, 0x00, 0x00 }, - {0, 0}, false, "CryptographicFramework_ContextSR" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 249 - 0x0d, 0x01, 0x04, 0x01, 0x02, 0x02, 0x00, 0x00 }, - {0, 0}, false, "CryptographicContext" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 250 - 0x01, 0x01, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "CryptographicContext_ContextID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 251 - 0x06, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "CryptographicContext_SourceEssenceContainer" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 252 - 0x02, 0x09, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "CryptographicContext_CipherAlgorithm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 253 - 0x02, 0x09, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "CryptographicContext_MICAlgorithm" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x09, // 254 - 0x02, 0x09, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "CryptographicContext_CryptographicKeyID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0a, // 255 - 0x0d, 0x01, 0x03, 0x01, 0x02, 0x13, 0x01, 0x01 }, - {0, 0}, false, "TimedTextWrapping" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x02, 0x01, 0x01, // 256 - 0x0d, 0x01, 0x03, 0x01, 0x17, 0x01, 0x0b, 0x01 }, - {0, 0}, false, "TimedTextEssence" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 257 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x64, 0x00 }, - {0, 0}, false, "TimedTextDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 258 - 0x01, 0x01, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimedTextDescriptor_ResourceID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 259 - 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimedTextDescriptor_UCSEncoding" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, // 260 - 0x01, 0x02, 0x01, 0x05, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimedTextDescriptor_NamespaceURI" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 261 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x65, 0x00 }, - {0, 0}, false, "TimedTextResourceSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 262 - 0x01, 0x01, 0x15, 0x13, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimedTextResourceSubDescriptor_AncillaryResourceID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, // 263 - 0x04, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimedTextResourceSubDescriptor_MIMEMediaType" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 264 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "TimedTextResourceSubDescriptor_EssenceStreamID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x05, 0x01, 0x01, // 265 - 0x0d, 0x01, 0x02, 0x01, 0x01, 0x03, 0x11, 0x00 }, - {0, 0}, false, "GenericStreamPartition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 266 - 0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, - {0x02, 0x01}, false, "DMSegment_DataDefinition" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 267 - 0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00 }, - {0x02, 0x02}, true, "DMSegment_Duration" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 268 - 0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x61, 0x02}, false, "DMSegment_TrackIDList" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x0c, // 269 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x63, 0x00 }, - {0, 0}, false, "StereoscopicPictureSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, // 270 - 0x04, 0x02, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0x3d, 0x32}, true, "WaveAudioDescriptor_ChannelAssignment" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0c, // 271 - 0x0d, 0x01, 0x05, 0x09, 0x01, 0x00, 0x00, 0x00 }, - {0x00, 0x00}, false, "GenericStream_DataElement" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, // 272 - 0x06, 0x01, 0x01, 0x04, 0x06, 0x10, 0x00, 0x00 }, - {0, 0}, true, "MXFInterop_GenericDescriptor_SubDescriptors" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 273 - 0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x07}, false, "BodySID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, // 274 - 0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00 }, - {0x3f, 0x06}, false, "IndexSID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 275 - 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 }, - {0x3b, 0x09}, false, "OperationalPattern" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 276 - 0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00 }, - {0x3b, 0x0a}, false, "EssenceContainers" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 277 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x01, 0x00 }, - {0, 0}, false, "DCAudioChannelCfg_1_5p1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 278 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x02, 0x00 }, - {0, 0}, false, "DCAudioChannelCfg_2_6p1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 279 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x03, 0x00 }, - {0, 0}, false, "DCAudioChannelCfg_3_7p1" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 280 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x04, 0x00 }, - {0, 0}, false, "DCAudioChannelCfg_4_WTF" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0b, // 281 - 0x04, 0x02, 0x02, 0x10, 0x03, 0x01, 0x05, 0x00 }, - {0, 0}, false, "DCAudioChannelCfg_5_7p1_DS" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 282 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6a, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 283 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6b, 0x00 }, - {0, 0}, false, "AudioChannelLabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 284 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6c, 0x00 }, - {0, 0}, false, "SoundfieldGroupLabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 285 - 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x6d, 0x00 }, - {0, 0}, false, "GroupOfSoundfieldGroupsLabelSubDescriptor" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 286 - 0x01, 0x03, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor_MCALabelDictionaryID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 287 - 0x01, 0x03, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor_MCALinkID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 288 - 0x01, 0x03, 0x07, 0x01, 0x02, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor_MCATagSymbol" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 289 - 0x01, 0x03, 0x07, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor_MCATagName" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 290 - 0x01, 0x03, 0x04, 0x0a, 0x00, 0x00, 0x00, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor_MCAChannelID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0d, // 291 - 0x03, 0x01, 0x01, 0x02, 0x03, 0x15, 0x00, 0x00 }, - {0, 0}, false, "MCALabelSubDescriptor_RFC5646SpokenLanguage" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0d, // 292 - 0x01, 0x03, 0x07, 0x01, 0x03, 0x00, 0x00, 0x00 }, - {0, 0}, false, "AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0d, // 293 - 0x01, 0x03, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00 }, - {0, 0}, false, "SoundfieldGroupLabelSubDescriptor_GroupOfSoundfieldGroupsLinkID" }, - { {0, 0}, {0, 0}, false, 0 } -}; - -// -// end MDD.cpp -// diff --git a/asdcplib/src/MDD.h b/asdcplib/src/MDD.h deleted file mode 100755 index 595fd54..0000000 --- a/asdcplib/src/MDD.h +++ /dev/null @@ -1,353 +0,0 @@ -/* -Copyright (c) 2006-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file MDD.[h|cpp] - \version $Id: MDD.h,v 1.25 2012/02/02 01:58:43 jhurst Exp $ - \brief MXF Metadata Dictionary -*/ - -#ifndef _MDD_H_ -#define _MDD_H_ - -// -namespace ASDCP { - enum MDD_t { - MDD_MICAlgorithm_NONE, // 0 - MDD_MXFInterop_OPAtom, // 1 - MDD_OPAtom, // 2 - MDD_OP1a, // 3 - MDD_GCMulti, // 4 - MDD_PictureDataDef, // 5 - MDD_SoundDataDef, // 6 - MDD_TimecodeDataDef, // 7 - MDD_DescriptiveMetaDataDef, // 8 - MDD_WAVWrapping, // 9 - MDD_MPEG2_VESWrapping, // 10 - MDD_JPEG_2000Wrapping, // 11 - MDD_JPEG2000Essence, // 12 - MDD_MPEG2Essence, // 13 - MDD_MXFInterop_CryptEssence, // 14 - MDD_CryptEssence, // 15 - MDD_WAVEssence, // 16 - MDD_JP2KEssenceCompression_2K, // 17 - MDD_JP2KEssenceCompression_4K, // 18 - MDD_CipherAlgorithm_AES, // 19 - MDD_MICAlgorithm_HMAC_SHA1, // 20 - MDD_KLVFill, // 21 - MDD_PartitionMetadata_MajorVersion, // 22 - MDD_PartitionMetadata_MinorVersion, // 23 - MDD_PartitionMetadata_KAGSize, // 24 - MDD_PartitionMetadata_ThisPartition, // 25 - MDD_PartitionMetadata_PreviousPartition, // 26 - MDD_PartitionMetadata_FooterPartition, // 27 - MDD_PartitionMetadata_HeaderByteCount, // 28 - MDD_PartitionMetadata_IndexByteCount, // 29 - MDD_PartitionMetadata_IndexSID_DEPRECATED, // 30 - MDD_PartitionMetadata_BodyOffset, // 31 - MDD_PartitionMetadata_BodySID_DEPRECATED, // 32 - MDD_PartitionMetadata_OperationalPattern_DEPRECATED, // 33 - MDD_PartitionMetadata_EssenceContainers_DEPRECATED, // 34 - MDD_OpenHeader, // 35 - MDD_OpenCompleteHeader, // 36 - MDD_ClosedHeader, // 37 - MDD_ClosedCompleteHeader, // 38 - MDD_OpenBodyPartition, // 39 - MDD_OpenCompleteBodyPartition, // 40 - MDD_ClosedBodyPartition, // 41 - MDD_ClosedCompleteBodyPartition, // 42 - MDD_Footer, // 43 - MDD_CompleteFooter, // 44 - MDD_Primer, // 45 - MDD_Primer_LocalTagEntryBatch, // 46 - MDD_LocalTagEntryBatch_Primer_LocalTag, // 47 - MDD_LocalTagEntryBatch_Primer_UID, // 48 - MDD_InterchangeObject_InstanceUID, // 49 - MDD_GenerationInterchangeObject_GenerationUID, // 50 - MDD_DefaultObject, // 51 - MDD_IndexTableSegmentBase_IndexEditRate, // 52 - MDD_IndexTableSegmentBase_IndexStartPosition, // 53 - MDD_IndexTableSegmentBase_IndexDuration, // 54 - MDD_IndexTableSegmentBase_EditUnitByteCount, // 55 - MDD_IndexTableSegmentBase_IndexSID_DEPRECATED, // 56 - MDD_IndexTableSegmentBase_BodySID_DEPRECATED, // 57 - MDD_IndexTableSegmentBase_SliceCount, // 58 - MDD_IndexTableSegmentBase_PosTableCount, // 59 - MDD_IndexTableSegment, // 60 - MDD_IndexTableSegment_DeltaEntryArray, // 61 - MDD_DeltaEntryArray_IndexTableSegment_PosTableIndex, // 62 - MDD_DeltaEntryArray_IndexTableSegment_Slice, // 63 - MDD_DeltaEntryArray_IndexTableSegment_ElementDelta, // 64 - MDD_IndexTableSegment_IndexEntryArray, // 65 - MDD_IndexEntryArray_IndexTableSegment_TemporalOffset, // 66 - MDD_IndexEntryArray_IndexTableSegment_AnchorOffset, // 67 - MDD_IndexEntryArray_IndexTableSegment_Flags, // 68 - MDD_IndexEntryArray_IndexTableSegment_StreamOffset, // 69 - MDD_IndexEntryArray_IndexTableSegment_SliceOffsetArray, // 70 - MDD_IndexEntryArray_IndexTableSegment_PosTableArray, // 71 - MDD_RandomIndexMetadata, // 72 - MDD_PartitionArray_RandomIndexMetadata_BodySID_DEPRECATED, // 73 - MDD_PartitionArray_RandomIndexMetadata_ByteOffset, // 74 - MDD_RandomIndexMetadata_Length, // 75 - MDD_RandomIndexMetadataV10, // 76 - MDD_Preface, // 77 - MDD_Preface_LastModifiedDate, // 78 - MDD_Preface_Version, // 79 - MDD_Preface_ObjectModelVersion, // 80 - MDD_Preface_PrimaryPackage, // 81 - MDD_Preface_Identifications, // 82 - MDD_Preface_ContentStorage, // 83 - MDD_Preface_OperationalPattern_DEPRECATED, // 84 - MDD_Preface_EssenceContainers_DEPRECATED, // 85 - MDD_Preface_DMSchemes, // 86 - MDD_Identification, // 87 - MDD_Identification_ThisGenerationUID, // 88 - MDD_Identification_CompanyName, // 89 - MDD_Identification_ProductName, // 90 - MDD_Identification_ProductVersion, // 91 - MDD_Identification_VersionString, // 92 - MDD_Identification_ProductUID, // 93 - MDD_Identification_ModificationDate, // 94 - MDD_Identification_ToolkitVersion, // 95 - MDD_Identification_Platform, // 96 - MDD_ContentStorage, // 97 - MDD_ContentStorage_Packages, // 98 - MDD_ContentStorage_EssenceContainerData, // 99 - MDD_ContentStorageKludge_V10Packages, // 100 - MDD_EssenceContainerData, // 101 - MDD_EssenceContainerData_LinkedPackageUID, // 102 - MDD_EssenceContainerData_IndexSID_DEPRECATED, // 103 - MDD_EssenceContainerData_BodySID_DEPRECATED, // 104 - MDD_GenericPackage_PackageUID, // 105 - MDD_GenericPackage_Name, // 106 - MDD_GenericPackage_PackageCreationDate, // 107 - MDD_GenericPackage_PackageModifiedDate, // 108 - MDD_GenericPackage_Tracks, // 109 - MDD_NetworkLocator, // 110 - MDD_NetworkLocator_URLString, // 111 - MDD_TextLocator, // 112 - MDD_TextLocator_LocatorName, // 113 - MDD_GenericTrack_TrackID, // 114 - MDD_GenericTrack_TrackNumber, // 115 - MDD_GenericTrack_TrackName, // 116 - MDD_GenericTrack_Sequence, // 117 - MDD_StaticTrack, // 118 - MDD_Track, // 119 - MDD_Track_EditRate, // 120 - MDD_Track_Origin, // 121 - MDD_EventTrack, // 122 - MDD_EventTrack_EventEditRate, // 123 - MDD_EventTrack_EventOrigin, // 124 - MDD_StructuralComponent_DataDefinition, // 125 - MDD_StructuralComponent_Duration, // 126 - MDD_Sequence, // 127 - MDD_Sequence_StructuralComponents, // 128 - MDD_TimecodeComponent, // 129 - MDD_TimecodeComponent_RoundedTimecodeBase, // 130 - MDD_TimecodeComponent_StartTimecode, // 131 - MDD_TimecodeComponent_DropFrame, // 132 - MDD_SourceClip, // 133 - MDD_SourceClip_StartPosition, // 134 - MDD_SourceClip_SourcePackageID, // 135 - MDD_SourceClip_SourceTrackID, // 136 - MDD_DMSegment, // 137 - MDD_DMSegment_EventStartPosition, // 138 - MDD_DMSegment_EventComment, // 139 - MDD_DMSegment_TrackIDs, // 140 - MDD_DMSegment_DMFramework, // 141 - MDD_DMSourceClip, // 142 - MDD_DMSourceClip_DMSourceClipTrackIDs, // 143 - MDD_MaterialPackage, // 144 - MDD_SourcePackage, // 145 - MDD_SourcePackage_Descriptor, // 146 - MDD_GenericDescriptor_Locators, // 147 - MDD_GenericDescriptor_SubDescriptors, // 148 - MDD_FileDescriptor, // 149 - MDD_FileDescriptor_LinkedTrackID, // 150 - MDD_FileDescriptor_SampleRate, // 151 - MDD_FileDescriptor_ContainerDuration, // 152 - MDD_FileDescriptor_EssenceContainer, // 153 - MDD_FileDescriptor_Codec, // 154 - MDD_GenericPictureEssenceDescriptor, // 155 - MDD_GenericPictureEssenceDescriptor_SignalStandard, // 156 - MDD_GenericPictureEssenceDescriptor_FrameLayout, // 157 - MDD_GenericPictureEssenceDescriptor_StoredWidth, // 158 - MDD_GenericPictureEssenceDescriptor_StoredHeight, // 159 - MDD_GenericPictureEssenceDescriptor_StoredF2Offset, // 160 - MDD_GenericPictureEssenceDescriptor_SampledWidth, // 161 - MDD_GenericPictureEssenceDescriptor_SampledHeight, // 162 - MDD_GenericPictureEssenceDescriptor_SampledXOffset, // 163 - MDD_GenericPictureEssenceDescriptor_SampledYOffset, // 164 - MDD_GenericPictureEssenceDescriptor_DisplayHeight, // 165 - MDD_GenericPictureEssenceDescriptor_DisplayWidth, // 166 - MDD_GenericPictureEssenceDescriptor_DisplayXOffset, // 167 - MDD_GenericPictureEssenceDescriptor_DisplayYOffset, // 168 - MDD_GenericPictureEssenceDescriptor_DisplayF2Offset, // 169 - MDD_GenericPictureEssenceDescriptor_AspectRatio, // 170 - MDD_GenericPictureEssenceDescriptor_ActiveFormatDescriptor, // 171 - MDD_GenericPictureEssenceDescriptor_VideoLineMap, // 172 - MDD_GenericPictureEssenceDescriptor_AlphaTransparency, // 173 - MDD_GenericPictureEssenceDescriptor_Gamma, // 174 - MDD_GenericPictureEssenceDescriptor_ImageAlignmentOffset, // 175 - MDD_GenericPictureEssenceDescriptor_ImageStartOffset, // 176 - MDD_GenericPictureEssenceDescriptor_ImageEndOffset, // 177 - MDD_GenericPictureEssenceDescriptor_FieldDominance, // 178 - MDD_GenericPictureEssenceDescriptor_PictureEssenceCoding, // 179 - MDD_CDCIEssenceDescriptor, // 180 - MDD_CDCIEssenceDescriptor_ComponentDepth, // 181 - MDD_CDCIEssenceDescriptor_HorizontalSubsampling, // 182 - MDD_CDCIEssenceDescriptor_VerticalSubsampling, // 183 - MDD_CDCIEssenceDescriptor_ColorSiting, // 184 - MDD_CDCIEssenceDescriptor_ReversedByteOrder, // 185 - MDD_CDCIEssenceDescriptor_PaddingBits, // 186 - MDD_CDCIEssenceDescriptor_AlphaSampleDepth, // 187 - MDD_CDCIEssenceDescriptor_BlackRefLevel, // 188 - MDD_CDCIEssenceDescriptor_WhiteReflevel, // 189 - MDD_CDCIEssenceDescriptor_ColorRange, // 190 - MDD_RGBAEssenceDescriptor, // 191 - MDD_RGBAEssenceDescriptor_ComponentMaxRef, // 192 - MDD_RGBAEssenceDescriptor_ComponentMinRef, // 193 - MDD_RGBAEssenceDescriptor_AlphaMaxRef, // 194 - MDD_RGBAEssenceDescriptor_AlphaMinRef, // 195 - MDD_RGBAEssenceDescriptor_ScanningDirection, // 196 - MDD_RGBAEssenceDescriptor_PixelLayout, // 197 - MDD_RGBAEssenceDescriptor_Palette, // 198 - MDD_RGBAEssenceDescriptor_PaletteLayout, // 199 - MDD_GenericSoundEssenceDescriptor, // 200 - MDD_GenericSoundEssenceDescriptor_AudioSamplingRate, // 201 - MDD_GenericSoundEssenceDescriptor_Locked, // 202 - MDD_GenericSoundEssenceDescriptor_AudioRefLevel, // 203 - MDD_GenericSoundEssenceDescriptor_ElectroSpatialFormulation, // 204 - MDD_GenericSoundEssenceDescriptor_ChannelCount, // 205 - MDD_GenericSoundEssenceDescriptor_QuantizationBits, // 206 - MDD_GenericSoundEssenceDescriptor_DialNorm, // 207 - MDD_GenericSoundEssenceDescriptor_SoundEssenceCompression, // 208 - MDD_GenericDataEssenceDescriptor, // 209 - MDD_GenericDataEssenceDescriptor_DataEssenceCoding, // 210 - MDD_MultipleDescriptor, // 211 - MDD_MultipleDescriptor_SubDescriptorUIDs, // 212 - MDD_MPEG2VideoDescriptor, // 213 - MDD_MPEG2VideoDescriptor_SingleSequence, // 214 - MDD_MPEG2VideoDescriptor_ConstantBFrames, // 215 - MDD_MPEG2VideoDescriptor_CodedContentType, // 216 - MDD_MPEG2VideoDescriptor_LowDelay, // 217 - MDD_MPEG2VideoDescriptor_ClosedGOP, // 218 - MDD_MPEG2VideoDescriptor_IdenticalGOP, // 219 - MDD_MPEG2VideoDescriptor_MaxGOP, // 220 - MDD_MPEG2VideoDescriptor_BPictureCount, // 221 - MDD_MPEG2VideoDescriptor_BitRate, // 222 - MDD_MPEG2VideoDescriptor_ProfileAndLevel, // 223 - MDD_WaveAudioDescriptor, // 224 - MDD_WaveAudioDescriptor_BlockAlign, // 225 - MDD_WaveAudioDescriptor_SequenceOffset, // 226 - MDD_WaveAudioDescriptor_AvgBps, // 227 - MDD_WaveAudioDescriptor_PeakEnvelope, // 228 - MDD_JPEG2000PictureSubDescriptor, // 229 - MDD_JPEG2000PictureSubDescriptor_Rsize, // 230 - MDD_JPEG2000PictureSubDescriptor_Xsize, // 231 - MDD_JPEG2000PictureSubDescriptor_Ysize, // 232 - MDD_JPEG2000PictureSubDescriptor_XOsize, // 233 - MDD_JPEG2000PictureSubDescriptor_YOsize, // 234 - MDD_JPEG2000PictureSubDescriptor_XTsize, // 235 - MDD_JPEG2000PictureSubDescriptor_YTsize, // 236 - MDD_JPEG2000PictureSubDescriptor_XTOsize, // 237 - MDD_JPEG2000PictureSubDescriptor_YTOsize, // 238 - MDD_JPEG2000PictureSubDescriptor_Csize, // 239 - MDD_JPEG2000PictureSubDescriptor_PictureComponentSizing, // 240 - MDD_JPEG2000PictureSubDescriptor_CodingStyleDefault, // 241 - MDD_JPEG2000PictureSubDescriptor_QuantizationDefault, // 242 - MDD_DM_Framework, // 243 - MDD_DM_Set, // 244 - MDD_EncryptedContainerLabel, // 245 - MDD_CryptographicFrameworkLabel, // 246 - MDD_CryptographicFramework, // 247 - MDD_CryptographicFramework_ContextSR, // 248 - MDD_CryptographicContext, // 249 - MDD_CryptographicContext_ContextID, // 250 - MDD_CryptographicContext_SourceEssenceContainer, // 251 - MDD_CryptographicContext_CipherAlgorithm, // 252 - MDD_CryptographicContext_MICAlgorithm, // 253 - MDD_CryptographicContext_CryptographicKeyID, // 254 - MDD_TimedTextWrapping, // 255 - MDD_TimedTextEssence, // 256 - MDD_TimedTextDescriptor, // 257 - MDD_TimedTextDescriptor_ResourceID, // 258 - MDD_TimedTextDescriptor_UCSEncoding, // 259 - MDD_TimedTextDescriptor_NamespaceURI, // 260 - MDD_TimedTextResourceSubDescriptor, // 261 - MDD_TimedTextResourceSubDescriptor_AncillaryResourceID, // 262 - MDD_TimedTextResourceSubDescriptor_MIMEMediaType, // 263 - MDD_TimedTextResourceSubDescriptor_EssenceStreamID_DEPRECATED, // 264 - MDD_GenericStreamPartition, // 265 - MDD_DMSegment_DataDefinition_DEPRECATED, // 266 - MDD_DMSegment_Duration_DEPRECATED, // 267 - MDD_DMSegment_TrackIDList, // 268 - MDD_StereoscopicPictureSubDescriptor, // 269 - MDD_WaveAudioDescriptor_ChannelAssignment, // 270 - MDD_GenericStream_DataElement, // 271 - MDD_MXFInterop_GenericDescriptor_SubDescriptors, // 272 - MDD_Core_BodySID, // 273 - MDD_Core_IndexSID, // 274 - MDD_Core_OperationalPattern, // 275 - MDD_Core_EssenceContainers, // 276 - MDD_DCAudioChannelCfg_1_5p1, // 277 - MDD_DCAudioChannelCfg_2_6p1, // 278 - MDD_DCAudioChannelCfg_3_7p1, // 279 - MDD_DCAudioChannelCfg_4_WTF, // 280 - MDD_DCAudioChannelCfg_5_7p1_DS, // 281 - MDD_MCALabelSubDescriptor, // 282 - MDD_AudioChannelLabelSubDescriptor, // 283 - MDD_SoundfieldGroupLabelSubDescriptor, // 284 - MDD_GroupOfSoundfieldGroupsLabelSubDescriptor, // 285 - MDD_MCALabelSubDescriptor_MCALabelDictionaryID, // 286 - MDD_MCALabelSubDescriptor_MCALinkID, // 287 - MDD_MCALabelSubDescriptor_MCATagSymbol, // 288 - MDD_MCALabelSubDescriptor_MCATagName, // 289 - MDD_MCALabelSubDescriptor_MCAChannelID, // 290 - MDD_MCALabelSubDescriptor_RFC5646SpokenLanguage, // 291 - MDD_AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID, // 292 - MDD_SoundfieldGroupLabelSubDescriptor_GroupOfSoundfieldGroupsLinkID, // 293 - MDD_Max - - }; // enum MDD_t - - // - const MDD_t MDD_EssenceContainerData_BodySID = MDD_Core_BodySID; - const MDD_t MDD_IndexTableSegmentBase_IndexSID = MDD_Core_IndexSID; - const MDD_t MDD_EssenceContainerData_IndexSID = MDD_Core_IndexSID; - const MDD_t MDD_DMSegment_DataDefinition = MDD_StructuralComponent_DataDefinition; - const MDD_t MDD_DMSegment_Duration = MDD_StructuralComponent_Duration; - const MDD_t MDD_Preface_EssenceContainers = MDD_Core_EssenceContainers; - const MDD_t MDD_Preface_OperationalPattern = MDD_Core_OperationalPattern; - const MDD_t MDD_TimedTextResourceSubDescriptor_EssenceStreamID = MDD_Core_BodySID; - -} // namespaceASDCP - - -#endif // _MDD_H_ - -// -// end MDD.h -// diff --git a/asdcplib/src/MPEG.cpp b/asdcplib/src/MPEG.cpp deleted file mode 100755 index 918b16d..0000000 --- a/asdcplib/src/MPEG.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file MPEG.cpp - \version $Id: MPEG.cpp,v 1.4 2009/04/09 19:16:49 msheby Exp $ - \brief MPEG2 VES parser -*/ - -#include <MPEG.h> -#include <KM_log.h> -using Kumu::DefaultLogSink; - -// walk a buffer stopping at the end of the buffer or the end of a VES -// start code '00 00 01'. If successful, returns address of first byte -// of start code -ASDCP::Result_t -ASDCP::MPEG2::FindVESStartCode(const byte_t* buf, ui32_t buf_len, StartCode_t* sc, const byte_t** new_pos) -{ - ASDCP_TEST_NULL(buf); - ASDCP_TEST_NULL(new_pos); - - ui32_t zero_i = 0; - const byte_t* p = buf; - const byte_t* end_p = buf + buf_len; - - for ( ; p < end_p; p++ ) - { - if ( *p == 0 ) - zero_i++; - - else if ( *p == 1 && zero_i > 1 ) - { - // 2 or more 0 bytes followed by a 1, start code is next - if ( ++p == end_p ) - return RESULT_FAIL; - - *new_pos = p - 3; - *sc = (StartCode_t)*p; - return RESULT_OK; - } - else - zero_i = 0; - } - - *new_pos = buf + buf_len; - return RESULT_FAIL; -} - - -//------------------------------------------------------------------------------------------ - -// -ASDCP::Rational -ASDCP::MPEG2::Accessor::Sequence::AspectRatio() -{ - switch ( m_p[3] & 0xf0 ) - { - case 0x10: return Rational(1,1); - case 0x20: return Rational(4,3); - case 0x30: return Rational(16,9); - case 0x40: return Rational(221,100); - } - - DefaultLogSink().Error("Unknown AspectRatio value: %02x\n", m_p[3]); - return Rational(0,0); -} - -//------------------------------------------------------------------------------------------ - -enum State_t { - ST_IDLE, - ST_START_HEADER, - ST_IN_HEADER, -}; - - -// -class ASDCP::MPEG2::VESParser::h__StreamState -{ -public: - State_t m_State; - h__StreamState() : m_State(ST_IDLE) {} - ~h__StreamState() {} - - void Goto_START_HEADER() { m_State = ST_START_HEADER; } - void Goto_IN_HEADER() { m_State = ST_IN_HEADER; } - void Goto_IDLE() { m_State = ST_IDLE; } - bool Test_IDLE() { return m_State == ST_IDLE; } - bool Test_START_HEADER() { return m_State == ST_START_HEADER; } - bool Test_IN_HEADER() { return m_State == ST_IN_HEADER; } -}; - -//------------------------------------------------------------------------------------------ - - -ASDCP::MPEG2::VESParser::VESParser() : - m_Delegate(0), m_HBufLen(0), m_ZeroCount(0) -{ - m_State = new h__StreamState; -} - -ASDCP::MPEG2::VESParser::~VESParser() -{ -} - - -// -void -ASDCP::MPEG2::VESParser::SetDelegate(VESParserDelegate* Delegate) -{ - m_Delegate = Delegate; -} - -// -void -ASDCP::MPEG2::VESParser::Reset() -{ - m_State->Goto_IDLE(); - m_HBufLen = 0; - m_ZeroCount = 0; -} - -// -ASDCP::Result_t -ASDCP::MPEG2::VESParser::Parse(const byte_t* buf, ui32_t buf_len) -{ - ASDCP_TEST_NULL(buf); - ASDCP_TEST_NULL(m_Delegate); - - Result_t result = RESULT_OK; - register const byte_t* end_p = buf + buf_len; - register const byte_t* run_pos = buf; // track runs of uninteresting data using a position and count - register ui32_t run_len = 0; - - // search for MPEG2 headers - // copy interesting data to a buffer and pass to delegate for processing - for ( register const byte_t* p = buf; p < end_p; p++ ) - { - if ( m_State->Test_IN_HEADER() ) - { - assert(run_len==0); - m_HBuf[m_HBufLen++] = *p; - assert(m_HBufLen < VESHeaderBufSize); - } - else - { - run_len++; - } - - if ( m_State->Test_START_HEADER() ) // *p is a start code - { - if ( m_HBufLen == 0) // not already collecting a header - { - m_HBuf[0] = m_HBuf[1] = 0; m_HBuf[2] = 1; m_HBuf[3] = *p; - - // is this one we want? - if ( *p == PIC_START || *p == SEQ_START || *p == EXT_START || *p == GOP_START ) - { - m_HBufLen = 4; - m_State->Goto_IN_HEADER(); - - switch ( run_len ) - { - case 1: // we suppressed writing 001 when exiting from the last call - case 4: // we have exactly 001x - break; - case 2: // we have 1x - case 3: // we have 01x - m_Delegate->Data(this, run_pos, (run_len == 2 ? -2 : -1)); - break; - - default: - m_Delegate->Data(this, run_pos, run_len - 4); - } - - run_len = 0; - } - else - { - m_State->Goto_IDLE(); - - if ( run_len == 1 ) // did we suppress writing 001 when exiting from the last call? - { - m_Delegate->Data(this, m_HBuf, 4); - run_len = 0; - } - } - } - else // currently collecting a header, requires a flush before handling - { - m_HBufLen -= 3; // remove the current partial start code - - // let the delegate handle the header - switch( m_HBuf[3] ) - { - case PIC_START: result = m_Delegate->Picture(this, m_HBuf, m_HBufLen); break; - case EXT_START: result = m_Delegate->Extension(this, m_HBuf, m_HBufLen); break; - case SEQ_START: result = m_Delegate->Sequence(this, m_HBuf, m_HBufLen); break; - case GOP_START: result = m_Delegate->GOP(this, m_HBuf, m_HBufLen); break; - - default: - DefaultLogSink().Error("Unexpected start code: %02x at byte %u\n", - m_HBuf[3], (ui32_t)(p - buf)); - result = RESULT_RAW_FORMAT; - } - - // Parser handlers return RESULT_FALSE to teriminate without error - if ( result != RESULT_OK ) - { - m_State->Goto_IDLE(); - return result; - } - - m_HBuf[0] = m_HBuf[1] = 0; m_HBuf[2] = 1; m_HBuf[3] = *p; // 001x - run_len = 0; - - // is this a header we want? - if ( *p == PIC_START || *p == SEQ_START || *p == EXT_START || *p == GOP_START ) - { - m_HBufLen = 4; - m_State->Goto_IN_HEADER(); - } - else - { - m_HBufLen = 0; - m_State->Goto_IDLE(); - - if ( *p >= FIRST_SLICE && *p <= LAST_SLICE ) - { - result = m_Delegate->Slice(this, *p); - - if ( result != RESULT_OK ) - return result; - } - - m_Delegate->Data(this, m_HBuf, 4); - run_pos = p+1; - } - } - } - else if ( *p == 0 ) - { - m_ZeroCount++; - } - else - { - if ( *p == 1 && m_ZeroCount > 1 ) - m_State->Goto_START_HEADER(); - - m_ZeroCount = 0; - } - } - - if ( run_len > 0 ) - { - if ( m_State->Test_START_HEADER() && run_len != 0 ) - { - assert(run_len > 2); - run_len -= 3; - } - - // flush the current run - m_Delegate->Data(this, run_pos, run_len); - } - - return RESULT_OK; -} - - -// -// end MPEG.cpp -// diff --git a/asdcplib/src/MPEG.h b/asdcplib/src/MPEG.h deleted file mode 100755 index b629b62..0000000 --- a/asdcplib/src/MPEG.h +++ /dev/null @@ -1,244 +0,0 @@ -/* -Copyright (c) 2005-2011, John Hurst -All rights reserved. - -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. -*/ -/*! \file MPEG.h - \version $Id: MPEG.h,v 1.5 2011/08/30 17:04:25 jhurst Exp $ - \brief MPEG2 VES parser interface -*/ - -#ifndef _MPEG_H_ -#define _MPEG_H_ - -#include <KM_platform.h> -#include "AS_DCP.h" -#include <stdio.h> -#include <assert.h> - - -namespace ASDCP -{ - namespace MPEG2 - { - // - enum StartCode_t { - PIC_START = 0x00, - SEQ_START = 0xb3, - EXT_START = 0xb5, - GOP_START = 0xb8, - FIRST_SLICE = 0x01, - LAST_SLICE = 0xaf, - INVALID = 0xff - }; - - // - enum RateCode_t { - RATE_23_976 = 0x01, - RATE_24 = 0x02, - RATE_25 = 0x03, - RATE_29_97 = 0x04, - RATE_30 = 0x05 - }; - - // - enum ExtCode_t { - EXT_SEQ = 0x01 - }; - - //------------------------------------------------------------------------------------------ - // VES Parser - - // find the location in the buffer of the next VES packet, returns RESULT_FAIL - // if no start code is found - Result_t FindVESStartCode(const byte_t* buf, ui32_t buf_len, StartCode_t* sc, const byte_t** new_pos); - - // return the extension code of an extension header - inline ExtCode_t ParseExtensionCode(const byte_t* buf) - { - assert(buf); - return (ExtCode_t)(buf[4] >> 4); - } - - // - class VESParserDelegate; // the delegate is declared later - const ui32_t VESHeaderBufSize = 1024*32; // should be larger than any expected header - - // MPEG VES parser class - call Parse() as many times as you want with buffers - // of any size. State is maintained between calls. When complete headers are - // available for examination, the respective delegate method will be called. - // All other data is given to the delegate's Data() method. - class VESParser - { - class h__StreamState; - Kumu::mem_ptr<h__StreamState> m_State; - VESParserDelegate* m_Delegate; - - ui32_t m_HBufLen; // temp space for partial header contents - byte_t m_HBuf[VESHeaderBufSize]; - ui32_t m_ZeroCount; - bool m_Partial; - - ASDCP_NO_COPY_CONSTRUCT(VESParser); - - public: - VESParser(); - ~VESParser(); - - void SetDelegate(VESParserDelegate*); // you must call this before Parse() - Result_t Parse(const byte_t*, ui32_t); // call repeatedly - void Reset(); // resets the internal state machine and counters, return to the top of the file - }; - - // Parser Event Delegate Interface - // - // Create a concrete subclass and give it to the parser by calling SetDelegate(). - // The respective method will be called when a header of the named type is found. - // Handler methods should return RESULT_OK to continue processing or RESULT_FALSE - // to terminate parsing without signaling an error. - // - class VESParserDelegate - { - public: - virtual ~VESParserDelegate() {} - - // header handlers - virtual Result_t Picture(VESParser* Caller, const byte_t* header_buf, ui32_t header_len) = 0; - virtual Result_t Extension(VESParser*, const byte_t*, ui32_t) = 0; - virtual Result_t Sequence(VESParser*, const byte_t*, ui32_t) = 0; - virtual Result_t GOP(VESParser*, const byte_t*, ui32_t) = 0; - - // this is not a header handler, it is a signal that actual picture data - // has started. All Slice data is reported via the Data() method. - virtual Result_t Slice(VESParser*, byte_t slice_id) = 0; - - // Any data not given to the header handlers above is reported here - // This method may be called with a value of -1 or -2. This will happen - // when processing a start code that has one or two leading zeros - // in the preceding buffer - virtual Result_t Data(VESParser*, const byte_t*, i32_t) = 0; - }; - - - //------------------------------------------------------------------------------------------ - // VES header accessor objects - // - // For use within parser delegate methods. The constructor expects a pointer to a buffer - // containing two zero bytes, a one byte, a start code and some number of header bytes. - // They are not documented further as it is hoped that they are self-explanatory. - - // - namespace Accessor - { - // decoding tables - static i16_t FrameRateLUT[] = { 0, 24, 24, 25, 30, 30, 50, 60, 60}; - static bool PulldownLUT[] = { false, true, false, false, true, false, false, true, false}; - - // - class Sequence - { - const byte_t* m_p; - ASDCP_NO_COPY_CONSTRUCT(Sequence); - - public: - Sequence(const byte_t* p) { assert(p); m_p = p + 4; } - inline ui16_t HorizontalSize() { return (ui16_t)( ( m_p[0] << 4 ) | ( m_p[1] >> 4 ) ); } - inline ui16_t VerticalSize() { return (ui16_t)( ( ( m_p[1] & 0x0f ) << 8 ) | m_p[2] ); } - inline RateCode_t RateCode() { return (RateCode_t)( m_p[3] & 0x0f ); } - inline ui16_t FrameRate() { return FrameRateLUT[RateCode()]; } - inline bool Pulldown() { return PulldownLUT[RateCode()] != 0; } - inline i32_t BitRate() { - return ( ( (i32_t)m_p[4] << 10 ) + ( (i32_t)m_p[5] << 2 ) + ( m_p[6] >> 6 ) ) * 400; - } - - Rational AspectRatio(); - }; - - // - class SequenceEx // tension - { - const byte_t* m_p; - ASDCP_NO_COPY_CONSTRUCT(SequenceEx); - - public: - SequenceEx(const byte_t* p) - { - assert(p); - assert(ParseExtensionCode(p) == EXT_SEQ); - m_p = p + 4; - } - - inline ui16_t ProfileAndLevel() { return ( m_p[0] << 4) | ( m_p[1] >> 4 ); } - inline ui8_t ChromaFormat() { return ( m_p[1] >> 1 ) & 0x03; } - inline bool Progressive() { return ( ( m_p[1] >> 3 ) & 0x01 ) > 0; } - inline ui32_t HorizontalSizeExt() { - return ( ( m_p[1] & 0x01 ) << 13 ) | ( ( m_p[2] & 0x80 ) << 5 ); - } - inline ui32_t VerticalSizeExt() { return ( m_p[2] & 0x60 ) << 7; } - inline ui32_t BitRateExt() { - return ( ( m_p[2] & 0x1f ) << 25 ) | ( ( m_p[3] & 0xfe ) << 17 ); - } - - inline bool LowDelay() { return ( m_p[5] & 0x80 ) > 0; } - }; - - // - class GOP - { - const byte_t* m_p; - ASDCP_NO_COPY_CONSTRUCT(GOP); - - public: - GOP(const byte_t* p) { assert(p); m_p = p + 4; } - inline bool Closed() { return ( ( m_p[3] ) >> 6 ) & 0x01; } - }; - - // - class Picture - { - const byte_t* m_p; - ASDCP_NO_COPY_CONSTRUCT(Picture); - - public: - Picture(const byte_t* p) { assert(p); m_p = p + 4; } - inline i16_t TemporalRef() { - return ( (i16_t)( m_p[0] << 2 ) ) | ( ( (i16_t)m_p[1] & 0x00c0 ) >> 6 ); - } - - inline FrameType_t FrameType() { - return (FrameType_t)( ( m_p[1] & 0x38 ) >> 3 ); - } - }; - - } // namespace Accessor - - } // namespace MPEG2 - -} // namespace ASDCP - -#endif // _MPEG_H_ - -// -// end MPEG.h -// diff --git a/asdcplib/src/MPEG2_Parser.cpp b/asdcplib/src/MPEG2_Parser.cpp deleted file mode 100755 index 3b81f5a..0000000 --- a/asdcplib/src/MPEG2_Parser.cpp +++ /dev/null @@ -1,639 +0,0 @@ -/* -Copyright (c) 2004-2011, John Hurst -All rights reserved. - -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. -*/ -/*! \file MPEG2_Parser.cpp - \version $Id: MPEG2_Parser.cpp,v 1.11 2011/08/30 17:04:25 jhurst Exp $ - \brief AS-DCP library, MPEG2 raw essence reader implementation -*/ - -#include <KM_fileio.h> -#include <MPEG.h> - -#include <KM_log.h> -using Kumu::DefaultLogSink; - -using namespace ASDCP; -using namespace ASDCP::MPEG2; - -// data will be read from a VES file in chunks of this size -const ui32_t VESReadSize = 4 * Kumu::Kilobyte; - - -//------------------------------------------------------------------------------------------ - -// -enum ParserState_t { - ST_INIT, - ST_SEQ, - ST_PIC, - ST_GOP, - ST_EXT, - ST_SLICE, -}; - -const char* -StringParserState(ParserState_t state) -{ - switch ( state ) - { - case ST_INIT: return "INIT"; - case ST_SEQ: return "SEQ"; - case ST_PIC: return "PIC"; - case ST_GOP: return "GOP"; - case ST_EXT: return "EXT"; - case ST_SLICE: return "SLICE"; - } - - return "*UNKNOWN*"; -} - - - -// -class h__ParserState -{ - ParserState_t m_State; - ASDCP_NO_COPY_CONSTRUCT(h__ParserState); - - public: - h__ParserState() : m_State(ST_INIT) {} - ~h__ParserState() {} - - inline bool Test_SLICE() { return m_State == ST_SLICE; } - inline void Reset() { m_State = ST_INIT; } - - // - inline Result_t Goto_SEQ() - { - switch ( m_State ) - { - case ST_INIT: - case ST_EXT: - m_State = ST_SEQ; - return RESULT_OK; - case ST_SEQ: - case ST_PIC: - case ST_GOP: - case ST_SLICE: - /* Keep gcc quiet */ - break; - } - - DefaultLogSink().Error("SEQ follows %s\n", StringParserState(m_State)); - return RESULT_STATE; - } - - - // - inline Result_t Goto_SLICE() - { - switch ( m_State ) - { - case ST_PIC: - case ST_EXT: - m_State = ST_SLICE; - return RESULT_OK; - case ST_INIT: - case ST_SEQ: - case ST_GOP: - case ST_SLICE: - /* Keep gcc quiet */ - break; - } - - DefaultLogSink().Error("Slice follows %s\n", StringParserState(m_State)); - return RESULT_STATE; - } - - - // - inline Result_t Goto_PIC() - { - switch ( m_State ) - { - case ST_INIT: - case ST_SEQ: - case ST_GOP: - case ST_EXT: - m_State = ST_PIC; - return RESULT_OK; - case ST_PIC: - case ST_SLICE: - /* Keep gcc quiet */ - break; - } - - DefaultLogSink().Error("PIC follows %s\n", StringParserState(m_State)); - return RESULT_STATE; - } - - - // - inline Result_t Goto_GOP() - { - switch ( m_State ) - { - case ST_EXT: - case ST_SEQ: - m_State = ST_GOP; - return RESULT_OK; - case ST_INIT: - case ST_PIC: - case ST_GOP: - case ST_SLICE: - /* Keep gcc quiet */ - break; - } - - DefaultLogSink().Error("GOP follows %s\n", StringParserState(m_State)); - return RESULT_STATE; - } - - // - inline Result_t Goto_EXT() - { - switch ( m_State ) - { - case ST_PIC: - case ST_EXT: - case ST_SEQ: - case ST_GOP: - m_State = ST_EXT; - return RESULT_OK; - case ST_INIT: - case ST_SLICE: - /* Keep gcc quiet */ - break; - } - - DefaultLogSink().Error("EXT follows %s\n", StringParserState(m_State)); - return RESULT_STATE; - } -}; - -//------------------------------------------------------------------------------------------ - -// This is a parser delagate that reads the stream params from a -// sequence header and sequence extension header. The parser is -// commanded to return after processing the sequence extension -// header. -class StreamParams : public VESParserDelegate -{ - h__ParserState m_State; - - ASDCP_NO_COPY_CONSTRUCT(StreamParams); - -public: - VideoDescriptor m_VDesc; - - StreamParams() - { - m_VDesc.ContainerDuration = 0; - m_VDesc.ComponentDepth = 8; - } - - ~StreamParams() {} - - // - Result_t Sequence(VESParser*, const byte_t* b, ui32_t) - { - Result_t result = m_State.Goto_SEQ(); - - if ( ASDCP_FAILURE(result) ) - return result; - - Accessor::Sequence SEQ(b); - m_VDesc.AspectRatio = SEQ.AspectRatio(); - m_VDesc.FrameRate = SEQ.FrameRate(); - m_VDesc.StoredWidth = SEQ.HorizontalSize(); - m_VDesc.StoredHeight = SEQ.VerticalSize(); - m_VDesc.BitRate = SEQ.BitRate(); - m_VDesc.EditRate = SEQ.Pulldown() ? Rational(SEQ.FrameRate() * 1000, 1001) : Rational(SEQ.FrameRate(), 1); - m_VDesc.SampleRate = m_VDesc.EditRate; - return RESULT_OK; - } - - // - Result_t Extension(VESParser*, const byte_t* b, ui32_t) - { - Result_t result = m_State.Goto_EXT(); - - if ( ASDCP_FAILURE(result) ) - return result; - - Accessor::SequenceEx SEQX(b); - m_VDesc.ProfileAndLevel = SEQX.ProfileAndLevel(); - m_VDesc.FrameLayout = SEQX.Progressive() ? 0 : 1; - m_VDesc.CodedContentType = SEQX.Progressive() ? 1 : 2; - m_VDesc.LowDelay = SEQX.LowDelay(); - m_VDesc.HorizontalSubsampling = SEQX.ChromaFormat() == 3 ? 1 : 2; - m_VDesc.VerticalSubsampling = SEQX.ChromaFormat() >= 3 ? 1 : 2; - - if ( ( m_VDesc.HorizontalSubsampling == 2 ) && ( m_VDesc.VerticalSubsampling == 2 ) ) - m_VDesc.ColorSiting = 3; // 4:2:0 - - else if ( ( m_VDesc.HorizontalSubsampling == 2 ) && ( m_VDesc.VerticalSubsampling == 1 ) ) - m_VDesc.ColorSiting = 4; // 4:2:2 - - else if ( ( m_VDesc.HorizontalSubsampling == 1 ) && ( m_VDesc.VerticalSubsampling == 1 ) ) - m_VDesc.ColorSiting = 0; // 4:4:4 - - // TODO: get H&V size and bit rate extensions - - return RESULT_FALSE; - } - - Result_t GOP(VESParser*, const byte_t*, ui32_t) { return RESULT_FALSE; } - Result_t Picture(VESParser*, const byte_t*, ui32_t) { return RESULT_FALSE; } - Result_t Slice(VESParser*, byte_t) { return RESULT_FALSE; } - Result_t Data(VESParser*, const byte_t*, i32_t) { return RESULT_OK; } -}; - - -//------------------------------------------------------------------------------------------ - -// This is a parser delagate that reads a VES stream and sets public -// instance variables to indicate state. It is used below to read an -// entire frame into a buffer. The delegate retains metadata about the -// frame for later access. -// -class FrameParser : public VESParserDelegate -{ - h__ParserState m_State; - ASDCP_NO_COPY_CONSTRUCT(FrameParser); - -public: - ui32_t m_FrameSize; - bool m_CompletePicture; - bool m_HasGOP; - bool m_ClosedGOP; - ui8_t m_TemporalRef; - ui32_t m_PlaintextOffset; - FrameType_t m_FrameType; - - FrameParser() - { - Reset(); - } - - ~FrameParser() {} - - void Reset() - { - m_FrameSize = 0; - m_HasGOP = m_ClosedGOP = false; - m_CompletePicture = false; - m_TemporalRef = 0; - m_PlaintextOffset = 0; - m_FrameType = FRAME_U; - m_State.Reset(); - } - - Result_t Sequence(VESParser*, const byte_t*, ui32_t s) - { - if ( m_State.Test_SLICE() ) - { - m_CompletePicture = true; - return RESULT_FALSE; - } - - m_FrameSize += s; - return m_State.Goto_SEQ(); - } - - Result_t Picture(VESParser*, const byte_t* b, ui32_t s) - { - if ( m_State.Test_SLICE() ) - { - m_CompletePicture = true; - return RESULT_FALSE; - } - - Accessor::Picture pic(b); - m_TemporalRef = pic.TemporalRef(); - m_FrameType = pic.FrameType(); - m_FrameSize += s; - return m_State.Goto_PIC(); - } - - Result_t Slice(VESParser*, byte_t slice_id) - { - if ( slice_id == FIRST_SLICE ) - { - m_PlaintextOffset = m_FrameSize; - return m_State.Goto_SLICE(); - } - - return m_State.Test_SLICE() ? RESULT_OK : RESULT_FAIL; - } - - Result_t Extension(VESParser*, const byte_t*, ui32_t s) - { - m_FrameSize += s; - return m_State.Goto_EXT(); - } - - Result_t GOP(VESParser*, const byte_t* b, ui32_t s) - { - Accessor::GOP GOP(b); - m_ClosedGOP = GOP.Closed(); - m_HasGOP = true; - m_FrameSize += s; - return m_State.Goto_GOP(); - } - - Result_t Data(VESParser*, const byte_t*, i32_t s) - { - m_FrameSize += s; - return RESULT_OK; - } -}; - -//------------------------------------------------------------------------------------------ - -// The following code assumes the following things: -// - each frame will begin with a picture header or a sequence header -// - any frame that begins with a sequence header is an I frame and is -// assumed to contain a GOP header, a picture header and complete picture data -// - any frame that begins with a picture header is either an I, B or P frame -// and is assumed to contain a complete picture header and picture data - -class ASDCP::MPEG2::Parser::h__Parser -{ - StreamParams m_ParamsDelegate; - FrameParser m_ParserDelegate; - VESParser m_Parser; - Kumu::FileReader m_FileReader; - ui32_t m_FrameNumber; - bool m_EOF; - ASDCP::MPEG2::FrameBuffer m_TmpBuffer; - - ASDCP_NO_COPY_CONSTRUCT(h__Parser); - -public: - h__Parser() : m_TmpBuffer(VESReadSize*8) {} - ~h__Parser() { Close(); } - - Result_t OpenRead(const char* filename); - void Close(); - Result_t Reset(); - Result_t ReadFrame(FrameBuffer&); - Result_t FillVideoDescriptor(VideoDescriptor&); -}; - - -// -Result_t -ASDCP::MPEG2::Parser::h__Parser::Reset() -{ - m_FrameNumber = 0; - m_EOF = false; - m_FileReader.Seek(0); - m_ParserDelegate.Reset(); - return RESULT_OK; -} - -// -void -ASDCP::MPEG2::Parser::h__Parser::Close() -{ - m_FileReader.Close(); -} - -// -ASDCP::Result_t -ASDCP::MPEG2::Parser::h__Parser::OpenRead(const char* filename) -{ - ASDCP_TEST_NULL_STR(filename) - ui32_t read_count = 0; - - Result_t result = m_FileReader.OpenRead(filename); - - if ( ASDCP_SUCCESS(result) ) - result = m_FileReader.Read(m_TmpBuffer.Data(), m_TmpBuffer.Capacity(), &read_count); - - if ( ASDCP_SUCCESS(result) ) - { - const byte_t* p = m_TmpBuffer.RoData(); - - // the mxflib parser demanded the file start with a sequence header. - // Since no one complained and that's the easiest thing to implement, - // I have left it that way. Let me know if you want to be able to - // locate the first GOP in the stream. - ui32_t i = 0; - while ( p[i] == 0 ) i++; - - if ( i < 2 || p[i] != 1 || ! ( p[i+1] == SEQ_START || p[i+1] == PIC_START ) ) - { - DefaultLogSink().Error("Frame buffer does not begin with a PIC or SEQ start code.\n"); - return RESULT_RAW_FORMAT; - } - - if ( ASDCP_SUCCESS(result) ) - { - m_Parser.SetDelegate(&m_ParamsDelegate); - result = m_Parser.Parse(p, read_count); - } - } - - if ( ASDCP_SUCCESS(result) ) - { - ui64_t tmp = m_FileReader.Size() / 65536; // a gross approximation - m_ParamsDelegate.m_VDesc.ContainerDuration = (ui32_t) tmp; - m_Parser.SetDelegate(&m_ParserDelegate); - m_FileReader.Seek(0); - } - - if ( ASDCP_FAILURE(result) ) - { - DefaultLogSink().Error("Unable to identify a wrapping mode for the essence in file \"%s\"\n", filename); - m_FileReader.Close(); - } - - return result;} - - -// -// -ASDCP::Result_t -ASDCP::MPEG2::Parser::h__Parser::ReadFrame(FrameBuffer& FB) -{ - Result_t result = RESULT_OK; - ui32_t write_offset = 0; - ui32_t read_count = 0; - - FB.Size(0); - - if ( m_EOF ) - return RESULT_ENDOFFILE; - - // Data is read in VESReadSize chunks. Each chunk is parsed, and the - // process is stopped when a Sequence or Picture header is found or when - // the input file is exhausted. The partial next frame is cached for the - // next call. - m_ParserDelegate.Reset(); - m_Parser.Reset(); - - if ( m_TmpBuffer.Size() > 0 ) - { - memcpy(FB.Data(), m_TmpBuffer.RoData(), m_TmpBuffer.Size()); - result = m_Parser.Parse(FB.RoData(), m_TmpBuffer.Size()); - write_offset = m_TmpBuffer.Size(); - m_TmpBuffer.Size(0); - } - - while ( ! m_ParserDelegate.m_CompletePicture && result == RESULT_OK ) - { - if ( FB.Capacity() < ( write_offset + VESReadSize ) ) - { - DefaultLogSink().Error("FrameBuf.Capacity: %u FrameLength: %u\n", - FB.Capacity(), ( write_offset + VESReadSize )); - return RESULT_SMALLBUF; - } - - result = m_FileReader.Read(FB.Data() + write_offset, VESReadSize, &read_count); - - if ( result == RESULT_ENDOFFILE || read_count == 0 ) - { - m_EOF = true; - - if ( write_offset > 0 ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) ) - { - result = m_Parser.Parse(FB.RoData() + write_offset, read_count); - write_offset += read_count; - } - - if ( m_EOF ) - break; - } - assert(m_ParserDelegate.m_FrameSize <= write_offset); - - if ( ASDCP_SUCCESS(result) - && m_ParserDelegate.m_FrameSize < write_offset ) - { - assert(m_TmpBuffer.Size() == 0); - ui32_t diff = write_offset - m_ParserDelegate.m_FrameSize; - assert(diff <= m_TmpBuffer.Capacity()); - - memcpy(m_TmpBuffer.Data(), FB.RoData() + m_ParserDelegate.m_FrameSize, diff); - m_TmpBuffer.Size(diff); - } - - if ( ASDCP_SUCCESS(result) ) - { - const byte_t* p = FB.RoData(); - if ( p[0] != 0 || p[1] != 0 || p[2] != 1 || ! ( p[3] == SEQ_START || p[3] == PIC_START ) ) - { - DefaultLogSink().Error("Frame buffer does not begin with a PIC or SEQ start code.\n"); - return RESULT_RAW_FORMAT; - } - } - - if ( ASDCP_SUCCESS(result) ) - { - FB.Size(m_ParserDelegate.m_FrameSize); - FB.TemporalOffset(m_ParserDelegate.m_TemporalRef); - FB.FrameType(m_ParserDelegate.m_FrameType); - FB.PlaintextOffset(m_ParserDelegate.m_PlaintextOffset); - FB.FrameNumber(m_FrameNumber++); - FB.GOPStart(m_ParserDelegate.m_HasGOP); - FB.ClosedGOP(m_ParserDelegate.m_ClosedGOP); - } - - return result; -} - - -// Fill a VideoDescriptor struct with the values from the file's header. -ASDCP::Result_t -ASDCP::MPEG2::Parser::h__Parser::FillVideoDescriptor(VideoDescriptor& VDesc) -{ - VDesc = m_ParamsDelegate.m_VDesc; - return RESULT_OK; -} - -//------------------------------------------------------------------------------------------ - -ASDCP::MPEG2::Parser::Parser() -{ -} - -ASDCP::MPEG2::Parser::~Parser() -{ -} - -// Opens the stream for reading, parses enough data to provide a complete -// set of stream metadata for the MXFWriter below. -ASDCP::Result_t -ASDCP::MPEG2::Parser::OpenRead(const char* filename) const -{ - const_cast<ASDCP::MPEG2::Parser*>(this)->m_Parser = new h__Parser; - - Result_t result = m_Parser->OpenRead(filename); - - if ( ASDCP_FAILURE(result) ) - const_cast<ASDCP::MPEG2::Parser*>(this)->m_Parser.release(); - - return result; -} - -// Rewinds the stream to the beginning. -ASDCP::Result_t -ASDCP::MPEG2::Parser::Reset() const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->Reset(); -} - -// Places a frame of data in the frame buffer. Fails if the buffer is too small -// or the stream is empty. -ASDCP::Result_t -ASDCP::MPEG2::Parser::ReadFrame(FrameBuffer& FB) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->ReadFrame(FB); -} - -ASDCP::Result_t -ASDCP::MPEG2::Parser::FillVideoDescriptor(VideoDescriptor& VDesc) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->FillVideoDescriptor(VDesc); -} - -// -// end MPEG2_Parser.cpp -// diff --git a/asdcplib/src/MXF.cpp b/asdcplib/src/MXF.cpp deleted file mode 100755 index c35c1d2..0000000 --- a/asdcplib/src/MXF.cpp +++ /dev/null @@ -1,1489 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file MXF.cpp - \version $Id: MXF.cpp,v 1.62 2012/03/05 13:11:47 jhurst Exp $ - \brief MXF objects -*/ - -#include "MXF.h" -#include "Metadata.h" -#include <KM_log.h> - -using Kumu::DefaultLogSink; -using Kumu::GenRandomValue; - -// index segments must be < 64K -// NOTE: this value may too high if advanced index entry elements are used. -const ui32_t CBRIndexEntriesPerSegment = 5000; - -//------------------------------------------------------------------------------------------ -// - -const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; - -// -ASDCP::Result_t -ASDCP::MXF::SeekToRIP(const Kumu::FileReader& Reader) -{ - Kumu::fpos_t end_pos; - - // go to the end - 4 bytes - Result_t result = Reader.Seek(0, Kumu::SP_END); - - if ( ASDCP_SUCCESS(result) ) - result = Reader.Tell(&end_pos); - - if ( ASDCP_SUCCESS(result) - && end_pos < (SMPTE_UL_LENGTH+MXF_BER_LENGTH) ) - result = RESULT_FAIL; // File is smaller than an empty packet! - - if ( ASDCP_SUCCESS(result) ) - result = Reader.Seek(end_pos - 4); - - // get the ui32_t RIP length - ui32_t read_count; - byte_t intbuf[MXF_BER_LENGTH]; - ui32_t rip_size = 0; - - if ( ASDCP_SUCCESS(result) ) - { - result = Reader.Read(intbuf, MXF_BER_LENGTH, &read_count); - - if ( ASDCP_SUCCESS(result) && read_count != 4 ) - result = RESULT_FAIL; - } - - if ( ASDCP_SUCCESS(result) ) - { - rip_size = KM_i32_BE(Kumu::cp2i<ui32_t>(intbuf)); - - if ( rip_size > end_pos ) // RIP can't be bigger than the file - return RESULT_FAIL; - } - - // reposition to start of RIP - if ( ASDCP_SUCCESS(result) ) - result = Reader.Seek(end_pos - rip_size); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::RIP::GetPairBySID(ui32_t SID, Pair& outPair) const -{ - Array<Pair>::const_iterator pi = PairArray.begin(); - for ( ; pi != PairArray.end(); pi++ ) - { - if ( (*pi).BodySID == SID ) - { - outPair = *pi; - return RESULT_OK; - } - } - - return RESULT_FAIL; -} - -// -ASDCP::Result_t -ASDCP::MXF::RIP::InitFromFile(const Kumu::FileReader& Reader) -{ - assert(m_Dict); - Result_t result = KLVFilePacket::InitFromFile(Reader, m_Dict->ul(MDD_RandomIndexMetadata)); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::MemIOReader MemRDR(m_ValueStart, m_ValueLength - 4); - result = PairArray.Unarchive(&MemRDR) ? RESULT_OK : RESULT_KLV_CODING; - } - - if ( ASDCP_FAILURE(result) ) - DefaultLogSink().Error("Failed to initialize RIP\n"); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::RIP::WriteToFile(Kumu::FileWriter& Writer) -{ - assert(m_Dict); - ASDCP::FrameBuffer Buffer; - ui32_t RIPSize = ( PairArray.size() * (sizeof(ui32_t) + sizeof(ui64_t)) ) + 4; - Result_t result = Buffer.Capacity(RIPSize); - - if ( ASDCP_SUCCESS(result) ) - result = WriteKLToFile(Writer, m_Dict->ul(MDD_RandomIndexMetadata), RIPSize); - - if ( ASDCP_SUCCESS(result) ) - { - result = RESULT_KLV_CODING; - - Kumu::MemIOWriter MemWRT(Buffer.Data(), Buffer.Capacity()); - if ( PairArray.Archive(&MemWRT) ) - if ( MemWRT.WriteUi32BE(RIPSize + 20) ) - { - Buffer.Size(MemWRT.Length()); - result = RESULT_OK; - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.Write(Buffer.RoData(), Buffer.Size()); - - return result; -} - -// -void -ASDCP::MXF::RIP::Dump(FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - KLVFilePacket::Dump(stream, *m_Dict, false); - PairArray.Dump(stream, false); -} - -//------------------------------------------------------------------------------------------ -// - -// -class ASDCP::MXF::Partition::h__PacketList -{ -public: - std::list<InterchangeObject*> m_List; - std::map<UUID, InterchangeObject*> m_Map; - - ~h__PacketList() { - while ( ! m_List.empty() ) - { - delete m_List.back(); - m_List.pop_back(); - } - } - - // - void AddPacket(InterchangeObject* ThePacket) // takes ownership - { - assert(ThePacket); - m_Map.insert(std::map<UUID, InterchangeObject*>::value_type(ThePacket->InstanceUID, ThePacket)); - m_List.push_back(ThePacket); - } - - // - Result_t GetMDObjectByID(const UUID& ObjectID, InterchangeObject** Object) - { - ASDCP_TEST_NULL(Object); - - std::map<UUID, InterchangeObject*>::iterator mi = m_Map.find(ObjectID); - - if ( mi == m_Map.end() ) - { - *Object = 0; - return RESULT_FAIL; - } - - *Object = (*mi).second; - return RESULT_OK; - } - - // - Result_t GetMDObjectByType(const byte_t* ObjectID, InterchangeObject** Object) - { - ASDCP_TEST_NULL(ObjectID); - ASDCP_TEST_NULL(Object); - std::list<InterchangeObject*>::iterator li; - *Object = 0; - - for ( li = m_List.begin(); li != m_List.end(); li++ ) - { - if ( (*li)->HasUL(ObjectID) ) - { - *Object = *li; - return RESULT_OK; - } - } - - return RESULT_FAIL; - } - - // - Result_t GetMDObjectsByType(const byte_t* ObjectID, std::list<InterchangeObject*>& ObjectList) - { - ASDCP_TEST_NULL(ObjectID); - std::list<InterchangeObject*>::iterator li; - - for ( li = m_List.begin(); li != m_List.end(); li++ ) - { - if ( (*li)->HasUL(ObjectID) ) - ObjectList.push_back(*li); - } - - return ObjectList.empty() ? RESULT_FAIL : RESULT_OK; - } -}; - -//------------------------------------------------------------------------------------------ -// - - -ASDCP::MXF::Partition::Partition(const Dictionary*& d) : - m_Dict(d), - MajorVersion(1), MinorVersion(2), - KAGSize(1), ThisPartition(0), PreviousPartition(0), - FooterPartition(0), HeaderByteCount(0), IndexByteCount(0), IndexSID(0), - BodyOffset(0), BodySID(0) -{ - m_PacketList = new h__PacketList; -} - -ASDCP::MXF::Partition::~Partition() -{ -} - -// takes ownership -void -ASDCP::MXF::Partition::AddChildObject(InterchangeObject* Object) -{ - assert(Object); - - if ( ! Object->InstanceUID.HasValue() ) - GenRandomValue(Object->InstanceUID); - - m_PacketList->AddPacket(Object); -} - -// -ASDCP::Result_t -ASDCP::MXF::Partition::InitFromFile(const Kumu::FileReader& Reader) -{ - Result_t result = KLVFilePacket::InitFromFile(Reader); - // test the UL - // could be one of several values - if ( ASDCP_SUCCESS(result) ) - result = ASDCP::MXF::Partition::InitFromBuffer(m_ValueStart, m_ValueLength); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Partition::InitFromBuffer(const byte_t* p, ui32_t l) -{ - Kumu::MemIOReader MemRDR(p, l); - Result_t result = RESULT_KLV_CODING; - - if ( MemRDR.ReadUi16BE(&MajorVersion) ) - if ( MemRDR.ReadUi16BE(&MinorVersion) ) - if ( MemRDR.ReadUi32BE(&KAGSize) ) - if ( MemRDR.ReadUi64BE(&ThisPartition) ) - if ( MemRDR.ReadUi64BE(&PreviousPartition) ) - if ( MemRDR.ReadUi64BE(&FooterPartition) ) - if ( MemRDR.ReadUi64BE(&HeaderByteCount) ) - if ( MemRDR.ReadUi64BE(&IndexByteCount) ) - if ( MemRDR.ReadUi32BE(&IndexSID) ) - if ( MemRDR.ReadUi64BE(&BodyOffset) ) - if ( MemRDR.ReadUi32BE(&BodySID) ) - if ( OperationalPattern.Unarchive(&MemRDR) ) - if ( EssenceContainers.Unarchive(&MemRDR) ) - result = RESULT_OK; - - if ( ASDCP_FAILURE(result) ) - DefaultLogSink().Error("Failed to initialize Partition\n"); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Partition::WriteToFile(Kumu::FileWriter& Writer, UL& PartitionLabel) -{ - ASDCP::FrameBuffer Buffer; - Result_t result = Buffer.Capacity(1024); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::MemIOWriter MemWRT(Buffer.Data(), Buffer.Capacity()); - result = RESULT_KLV_CODING; - if ( MemWRT.WriteUi16BE(MajorVersion) ) - if ( MemWRT.WriteUi16BE(MinorVersion) ) - if ( MemWRT.WriteUi32BE(KAGSize) ) - if ( MemWRT.WriteUi64BE(ThisPartition) ) - if ( MemWRT.WriteUi64BE(PreviousPartition) ) - if ( MemWRT.WriteUi64BE(FooterPartition) ) - if ( MemWRT.WriteUi64BE(HeaderByteCount) ) - if ( MemWRT.WriteUi64BE(IndexByteCount) ) - if ( MemWRT.WriteUi32BE(IndexSID) ) - if ( MemWRT.WriteUi64BE(BodyOffset) ) - if ( MemWRT.WriteUi32BE(BodySID) ) - if ( OperationalPattern.Archive(&MemWRT) ) - if ( EssenceContainers.Archive(&MemWRT) ) - { - Buffer.Size(MemWRT.Length()); - result = RESULT_OK; - } - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t write_count; - result = WriteKLToFile(Writer, PartitionLabel.Value(), Buffer.Size()); - - if ( ASDCP_SUCCESS(result) ) - result = Writer.Write(Buffer.RoData(), Buffer.Size(), &write_count); - } - - return result; -} - -// -ui32_t -ASDCP::MXF::Partition::ArchiveSize() -{ - return ( kl_length - + sizeof(ui16_t) + sizeof(ui16_t) - + sizeof(ui32_t) - + sizeof(ui64_t) + sizeof(ui64_t) + sizeof(ui64_t) + sizeof(ui64_t) + sizeof(ui64_t) - + sizeof(ui32_t) - + sizeof(ui64_t) - + sizeof(ui32_t) - + SMPTE_UL_LENGTH - + sizeof(ui32_t) + sizeof(ui32_t) + ( UUIDlen * EssenceContainers.size() ) ); -} - -// -void -ASDCP::MXF::Partition::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - KLVFilePacket::Dump(stream, *m_Dict, false); - fprintf(stream, " MajorVersion = %hu\n", MajorVersion); - fprintf(stream, " MinorVersion = %hu\n", MinorVersion); - fprintf(stream, " KAGSize = %u\n", KAGSize); - fprintf(stream, " ThisPartition = %s\n", ui64sz(ThisPartition, identbuf)); - fprintf(stream, " PreviousPartition = %s\n", ui64sz(PreviousPartition, identbuf)); - fprintf(stream, " FooterPartition = %s\n", ui64sz(FooterPartition, identbuf)); - fprintf(stream, " HeaderByteCount = %s\n", ui64sz(HeaderByteCount, identbuf)); - fprintf(stream, " IndexByteCount = %s\n", ui64sz(IndexByteCount, identbuf)); - fprintf(stream, " IndexSID = %u\n", IndexSID); - fprintf(stream, " BodyOffset = %s\n", ui64sz(BodyOffset, identbuf)); - fprintf(stream, " BodySID = %u\n", BodySID); - fprintf(stream, " OperationalPattern = %s\n", OperationalPattern.EncodeString(identbuf, IdentBufferLen)); - fputs("Essence Containers:\n", stream); EssenceContainers.Dump(stream); -} - - -//------------------------------------------------------------------------------------------ -// - -class ASDCP::MXF::Primer::h__PrimerLookup : public std::map<UL, TagValue> -{ -public: - void InitWithBatch(ASDCP::MXF::Batch<ASDCP::MXF::Primer::LocalTagEntry>& Batch) - { - ASDCP::MXF::Batch<ASDCP::MXF::Primer::LocalTagEntry>::iterator i = Batch.begin(); - - for ( ; i != Batch.end(); i++ ) - insert(std::map<UL, TagValue>::value_type((*i).UL, (*i).Tag)); - } -}; - - -// -ASDCP::MXF::Primer::Primer(const Dictionary*& d) : m_LocalTag(0xff), m_Dict(d) { - m_UL = m_Dict->ul(MDD_Primer); -} - -// -ASDCP::MXF::Primer::~Primer() {} - -// -void -ASDCP::MXF::Primer::ClearTagList() -{ - LocalTagEntryBatch.clear(); - m_Lookup = new h__PrimerLookup; -} - -// -ASDCP::Result_t -ASDCP::MXF::Primer::InitFromBuffer(const byte_t* p, ui32_t l) -{ - assert(m_Dict); - Result_t result = KLVPacket::InitFromBuffer(p, l, m_Dict->ul(MDD_Primer)); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::MemIOReader MemRDR(m_ValueStart, m_ValueLength); - result = LocalTagEntryBatch.Unarchive(&MemRDR) ? RESULT_OK : RESULT_KLV_CODING; - } - - if ( ASDCP_SUCCESS(result) ) - { - m_Lookup = new h__PrimerLookup; - m_Lookup->InitWithBatch(LocalTagEntryBatch); - } - - if ( ASDCP_FAILURE(result) ) - DefaultLogSink().Error("Failed to initialize Primer\n"); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Primer::WriteToFile(Kumu::FileWriter& Writer) -{ - ASDCP::FrameBuffer Buffer; - Result_t result = Buffer.Capacity(128*1024); - - if ( ASDCP_SUCCESS(result) ) - result = WriteToBuffer(Buffer); - - if ( ASDCP_SUCCESS(result) ) - result = Writer.Write(Buffer.RoData(), Buffer.Size()); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Primer::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - assert(m_Dict); - ASDCP::FrameBuffer LocalTagBuffer; - Kumu::MemIOWriter MemWRT(Buffer.Data() + kl_length, Buffer.Capacity() - kl_length); - Result_t result = LocalTagEntryBatch.Archive(&MemWRT) ? RESULT_OK : RESULT_KLV_CODING; - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t packet_length = MemWRT.Length(); - result = WriteKLToBuffer(Buffer, packet_length); - - if ( ASDCP_SUCCESS(result) ) - Buffer.Size(Buffer.Size() + packet_length); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Primer::InsertTag(const MDDEntry& Entry, ASDCP::TagValue& Tag) -{ - assert(m_Lookup); - UL TestUL(Entry.ul); - std::map<UL, TagValue>::iterator i = m_Lookup->find(TestUL); - - if ( i == m_Lookup->end() ) - { - if ( Entry.tag.a == 0 && Entry.tag.b == 0 ) - { - Tag.a = 0xff; - Tag.b = m_LocalTag--; - } - else - { - Tag.a = Entry.tag.a; - Tag.b = Entry.tag.b; - } - - LocalTagEntry TmpEntry; - TmpEntry.UL = TestUL; - TmpEntry.Tag = Tag; - - LocalTagEntryBatch.push_back(TmpEntry); - m_Lookup->insert(std::map<UL, TagValue>::value_type(TmpEntry.UL, TmpEntry.Tag)); - } - else - { - Tag = (*i).second; - } - - return RESULT_OK; -} - -// -ASDCP::Result_t -ASDCP::MXF::Primer::TagForKey(const ASDCP::UL& Key, ASDCP::TagValue& Tag) -{ - assert(m_Lookup); - if ( m_Lookup.empty() ) - { - DefaultLogSink().Error("Primer lookup is empty\n"); - return RESULT_FAIL; - } - - std::map<UL, TagValue>::iterator i = m_Lookup->find(Key); - - if ( i == m_Lookup->end() ) - return RESULT_FALSE; - - Tag = (*i).second; - return RESULT_OK; -} - -// -void -ASDCP::MXF::Primer::Dump(FILE* stream) -{ - assert(m_Dict); - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - KLVPacket::Dump(stream, *m_Dict, false); - fprintf(stream, "Primer: %u %s\n", - (ui32_t)LocalTagEntryBatch.size(), - ( LocalTagEntryBatch.size() == 1 ? "entry" : "entries" )); - - Batch<LocalTagEntry>::iterator i = LocalTagEntryBatch.begin(); - for ( ; i != LocalTagEntryBatch.end(); i++ ) - { - const MDDEntry* Entry = m_Dict->FindUL((*i).UL.Value()); - fprintf(stream, " %s %s\n", (*i).EncodeString(identbuf, IdentBufferLen), (Entry ? Entry->name : "Unknown")); - } -} - - -//------------------------------------------------------------------------------------------ -// - -// -ASDCP::MXF::Preface::Preface(const Dictionary*& d) : - InterchangeObject(d), m_Dict(d), Version(258), ObjectModelVersion(0) -{ - assert(m_Dict); - m_UL = m_Dict->Type(MDD_Preface).ul; -} - -// -void -ASDCP::MXF::Preface::Copy(const Preface& rhs) -{ - InterchangeObject::Copy(rhs); - - LastModifiedDate = rhs.LastModifiedDate; - Version = rhs.Version; - ObjectModelVersion = rhs.ObjectModelVersion; - PrimaryPackage = rhs.PrimaryPackage; - Identifications = rhs.Identifications; - ContentStorage = rhs.ContentStorage; - OperationalPattern = rhs.OperationalPattern; - EssenceContainers = rhs.EssenceContainers; - DMSchemes = rhs.DMSchemes; -} - -// -ASDCP::Result_t -ASDCP::MXF::Preface::InitFromTLVSet(TLVReader& TLVSet) -{ - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, LastModifiedDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(Preface, Version)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(Preface, ObjectModelVersion)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, PrimaryPackage)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, Identifications)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, ContentStorage)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, OperationalPattern)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, EssenceContainers)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Preface, DMSchemes)); - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Preface::WriteToTLVSet(TLVWriter& TLVSet) -{ - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, LastModifiedDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(Preface, Version)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(Preface, ObjectModelVersion)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, PrimaryPackage)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, Identifications)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, ContentStorage)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, OperationalPattern)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, EssenceContainers)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Preface, DMSchemes)); - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::Preface::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -ASDCP::MXF::Preface::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -// -void -ASDCP::MXF::Preface::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "LastModifiedDate", LastModifiedDate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %hu\n", "Version", Version); - fprintf(stream, " %22s = %u\n", "ObjectModelVersion", ObjectModelVersion); - fprintf(stream, " %22s = %s\n", "PrimaryPackage", PrimaryPackage.EncodeHex(identbuf, IdentBufferLen)); - fprintf(stream, " %22s:\n", "Identifications"); Identifications.Dump(stream); - fprintf(stream, " %22s = %s\n", "ContentStorage", ContentStorage.EncodeHex(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "OperationalPattern", OperationalPattern.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s:\n", "EssenceContainers"); EssenceContainers.Dump(stream); - fprintf(stream, " %22s:\n", "DMSchemes"); DMSchemes.Dump(stream); -} - -//------------------------------------------------------------------------------------------ -// - -ASDCP::MXF::OPAtomHeader::OPAtomHeader(const Dictionary*& d) : Partition(d), m_Dict(d), m_RIP(d), m_Primer(d), m_Preface(0), m_HasRIP(false) {} -ASDCP::MXF::OPAtomHeader::~OPAtomHeader() {} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::InitFromFile(const Kumu::FileReader& Reader) -{ - m_HasRIP = false; - Result_t result = SeekToRIP(Reader); - - if ( ASDCP_SUCCESS(result) ) - { - result = m_RIP.InitFromFile(Reader); - ui32_t test_s = m_RIP.PairArray.size(); - - if ( ASDCP_FAILURE(result) ) - { - DefaultLogSink().Error("File contains no RIP\n"); - result = RESULT_OK; - } - else if ( test_s == 0 ) - { - DefaultLogSink().Error("RIP contains no Pairs.\n"); - result = RESULT_FORMAT; - } - else - { - if ( test_s < 2 ) - { - // OP-Atom states that there will be either two or three partitions: - // one closed header and one closed footer with an optional body - // SMPTE 429-5 files may have many partitions, see SMPTE 410M - DefaultLogSink().Warn("RIP count is less than 2: %u\n", test_s); - } - - m_HasRIP = true; - - if ( m_RIP.PairArray.front().ByteOffset != 0 ) - { - DefaultLogSink().Error("First Partition in RIP is not at offset 0.\n"); - result = RESULT_FORMAT; - } - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Reader.Seek(0); - - if ( ASDCP_SUCCESS(result) ) - result = Partition::InitFromFile(Reader); // test UL and OP - - if ( ASDCP_FAILURE(result) ) - return result; - - // is it really OP-Atom? - assert(m_Dict); - UL OPAtomUL(SMPTE_390_OPAtom_Entry().ul); - UL InteropOPAtomUL(MXFInterop_OPAtom_Entry().ul); - - if ( OperationalPattern.ExactMatch(OPAtomUL) ) // SMPTE - { - if ( m_Dict == &DefaultCompositeDict() ) - m_Dict = &DefaultSMPTEDict(); - } - else if ( OperationalPattern.ExactMatch(InteropOPAtomUL) ) // Interop - { - if ( m_Dict == &DefaultCompositeDict() ) - m_Dict = &DefaultInteropDict(); - } - else - { - char strbuf[IdentBufferLen]; - const MDDEntry* Entry = m_Dict->FindUL(OperationalPattern.Value()); - if ( Entry == 0 ) - DefaultLogSink().Warn("Operational pattern is not OP-Atom: %s\n", - OperationalPattern.EncodeString(strbuf, IdentBufferLen)); - else - DefaultLogSink().Warn("Operational pattern is not OP-Atom: %s\n", Entry->name); - } - - // slurp up the remainder of the header - if ( HeaderByteCount < 1024 ) - DefaultLogSink().Warn("Improbably small HeaderByteCount value: %u\n", HeaderByteCount); - - assert (HeaderByteCount <= 0xFFFFFFFFL); - result = m_Buffer.Capacity((ui32_t) HeaderByteCount); - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t read_count; - result = Reader.Read(m_Buffer.Data(), m_Buffer.Capacity(), &read_count); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( read_count != m_Buffer.Capacity() ) - { - DefaultLogSink().Error("Short read of OP-Atom header metadata; wanted %u, got %u\n", - m_Buffer.Capacity(), read_count); - return RESULT_KLV_CODING; - } - } - - if ( ASDCP_SUCCESS(result) ) - result = InitFromBuffer(m_Buffer.RoData(), m_Buffer.Capacity()); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::InitFromPartitionBuffer(const byte_t* p, ui32_t l) -{ - Result_t result = KLVPacket::InitFromBuffer(p, l); - - if ( ASDCP_SUCCESS(result) ) - result = Partition::InitFromBuffer(m_ValueStart, m_ValueLength); // test UL and OP - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t pp_len = KLVPacket::PacketLength(); - result = InitFromBuffer(p + pp_len, l - pp_len); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::InitFromBuffer(const byte_t* p, ui32_t l) -{ - assert(m_Dict); - Result_t result = RESULT_OK; - const byte_t* end_p = p + l; - - while ( ASDCP_SUCCESS(result) && p < end_p ) - { - // parse the packets and index them by uid, discard KLVFill items - InterchangeObject* object = CreateObject(m_Dict, p); - assert(object); - - object->m_Lookup = &m_Primer; - result = object->InitFromBuffer(p, end_p - p); - const byte_t* redo_p = p; - p += object->PacketLength(); - // hexdump(p, object->PacketLength()); - - if ( ASDCP_SUCCESS(result) ) - { - if ( object->IsA(m_Dict->ul(MDD_KLVFill)) ) - { - delete object; - } - else if ( object->IsA(m_Dict->ul(MDD_Primer)) ) // TODO: only one primer should be found - { - delete object; - result = m_Primer.InitFromBuffer(redo_p, end_p - redo_p); - } - else - { - m_PacketList->AddPacket(object); // takes ownership - - if ( object->IsA(m_Dict->ul(MDD_Preface)) && m_Preface == 0 ) - m_Preface = (Preface*)object; - } - } - else - { - DefaultLogSink().Error("Error initializing packet\n"); - delete object; - } - } - - return result; -} - -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::GetMDObjectByID(const UUID& ObjectID, InterchangeObject** Object) -{ - return m_PacketList->GetMDObjectByID(ObjectID, Object); -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::GetMDObjectByType(const byte_t* ObjectID, InterchangeObject** Object) -{ - InterchangeObject* TmpObject; - - if ( Object == 0 ) - Object = &TmpObject; - - return m_PacketList->GetMDObjectByType(ObjectID, Object); -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::GetMDObjectsByType(const byte_t* ObjectID, std::list<InterchangeObject*>& ObjectList) -{ - return m_PacketList->GetMDObjectsByType(ObjectID, ObjectList); -} - -// -ASDCP::MXF::Identification* -ASDCP::MXF::OPAtomHeader::GetIdentification() -{ - InterchangeObject* Object; - - if ( ASDCP_SUCCESS(GetMDObjectByType(OBJ_TYPE_ARGS(Identification), &Object)) ) - return (Identification*)Object; - - return 0; -} - -// -ASDCP::MXF::SourcePackage* -ASDCP::MXF::OPAtomHeader::GetSourcePackage() -{ - InterchangeObject* Object; - - if ( ASDCP_SUCCESS(GetMDObjectByType(OBJ_TYPE_ARGS(SourcePackage), &Object)) ) - return (SourcePackage*)Object; - - return 0; -} - -// -ASDCP::MXF::RIP& -ASDCP::MXF::OPAtomHeader::GetRIP() { return m_RIP; } - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomHeader::WriteToFile(Kumu::FileWriter& Writer, ui32_t HeaderSize) -{ - assert(m_Dict); - if ( m_Preface == 0 ) - return RESULT_STATE; - - if ( HeaderSize < 4096 ) - { - DefaultLogSink().Error("HeaderSize %u is too small. Must be >= 4096\n", HeaderSize); - return RESULT_FAIL; - } - - ASDCP::FrameBuffer HeaderBuffer; - HeaderByteCount = HeaderSize - ArchiveSize(); - assert (HeaderByteCount <= 0xFFFFFFFFL); - Result_t result = HeaderBuffer.Capacity((ui32_t) HeaderByteCount); - m_Preface->m_Lookup = &m_Primer; - - std::list<InterchangeObject*>::iterator pl_i = m_PacketList->m_List.begin(); - for ( ; pl_i != m_PacketList->m_List.end() && ASDCP_SUCCESS(result); pl_i++ ) - { - InterchangeObject* object = *pl_i; - object->m_Lookup = &m_Primer; - - ASDCP::FrameBuffer WriteWrapper; - WriteWrapper.SetData(HeaderBuffer.Data() + HeaderBuffer.Size(), - HeaderBuffer.Capacity() - HeaderBuffer.Size()); - result = object->WriteToBuffer(WriteWrapper); - HeaderBuffer.Size(HeaderBuffer.Size() + WriteWrapper.Size()); - } - - if ( ASDCP_SUCCESS(result) ) - { - UL TmpUL(m_Dict->ul(MDD_ClosedCompleteHeader)); - result = Partition::WriteToFile(Writer, TmpUL); - } - - if ( ASDCP_SUCCESS(result) ) - result = m_Primer.WriteToFile(Writer); - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t write_count; - Writer.Write(HeaderBuffer.RoData(), HeaderBuffer.Size(), &write_count); - assert(write_count == HeaderBuffer.Size()); - } - - // KLV Fill - if ( ASDCP_SUCCESS(result) ) - { - Kumu::fpos_t pos = Writer.Tell(); - - if ( pos > (Kumu::fpos_t)HeaderByteCount ) - { - char intbuf[IntBufferLen]; - DefaultLogSink().Error("Header size %s exceeds specified value %u\n", - ui64sz(pos, intbuf), - HeaderSize); - return RESULT_FAIL; - } - - ASDCP::FrameBuffer NilBuf; - ui32_t klv_fill_length = HeaderSize - (ui32_t)pos; - - if ( klv_fill_length < kl_length ) - { - DefaultLogSink().Error("Remaining region too small for KLV Fill header\n"); - return RESULT_FAIL; - } - - klv_fill_length -= kl_length; - result = WriteKLToFile(Writer, m_Dict->ul(MDD_KLVFill), klv_fill_length); - - if ( ASDCP_SUCCESS(result) ) - result = NilBuf.Capacity(klv_fill_length); - - if ( ASDCP_SUCCESS(result) ) - { - memset(NilBuf.Data(), 0, klv_fill_length); - ui32_t write_count; - Writer.Write(NilBuf.RoData(), klv_fill_length, &write_count); - assert(write_count == klv_fill_length); - } - } - - return result; -} - -// -void -ASDCP::MXF::OPAtomHeader::Dump(FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - Partition::Dump(stream); - m_Primer.Dump(stream); - - if ( m_Preface == 0 ) - fputs("No Preface loaded\n", stream); - - std::list<InterchangeObject*>::iterator i = m_PacketList->m_List.begin(); - for ( ; i != m_PacketList->m_List.end(); i++ ) - (*i)->Dump(stream); -} - -//------------------------------------------------------------------------------------------ -// - -ASDCP::MXF::OPAtomIndexFooter::OPAtomIndexFooter(const Dictionary*& d) : - Partition(d), - m_CurrentSegment(0), m_BytesPerEditUnit(0), m_BodySID(0), m_Dict(d), - m_ECOffset(0), m_Lookup(0) -{ - BodySID = 0; - IndexSID = 129; -} - -ASDCP::MXF::OPAtomIndexFooter::~OPAtomIndexFooter() {} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::InitFromFile(const Kumu::FileReader& Reader) -{ - Result_t result = Partition::InitFromFile(Reader); // test UL and OP - - // slurp up the remainder of the footer - ui32_t read_count; - - if ( ASDCP_SUCCESS(result) ) - { - assert (IndexByteCount <= 0xFFFFFFFFL); - result = m_Buffer.Capacity((ui32_t) IndexByteCount); - } - - if ( ASDCP_SUCCESS(result) ) - result = Reader.Read(m_Buffer.Data(), m_Buffer.Capacity(), &read_count); - - if ( ASDCP_SUCCESS(result) && read_count != m_Buffer.Capacity() ) - { - DefaultLogSink().Error("Short read of footer partition: got %u, expecting %u\n", - read_count, m_Buffer.Capacity()); - return RESULT_FAIL; - } - - if ( ASDCP_SUCCESS(result) ) - result = InitFromBuffer(m_Buffer.RoData(), m_Buffer.Capacity()); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::InitFromPartitionBuffer(const byte_t* p, ui32_t l) -{ - Result_t result = KLVPacket::InitFromBuffer(p, l); - - if ( ASDCP_SUCCESS(result) ) - result = Partition::InitFromBuffer(m_ValueStart, m_ValueLength); // test UL and OP - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t pp_len = KLVPacket::PacketLength(); - result = InitFromBuffer(p + pp_len, l - pp_len); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::InitFromBuffer(const byte_t* p, ui32_t l) -{ - Result_t result = RESULT_OK; - const byte_t* end_p = p + l; - - while ( ASDCP_SUCCESS(result) && p < end_p ) - { - // parse the packets and index them by uid, discard KLVFill items - InterchangeObject* object = CreateObject(m_Dict, p); - assert(object); - - object->m_Lookup = m_Lookup; - result = object->InitFromBuffer(p, end_p - p); - p += object->PacketLength(); - - if ( ASDCP_SUCCESS(result) ) - { - m_PacketList->AddPacket(object); // takes ownership - } - else - { - DefaultLogSink().Error("Error initializing packet\n"); - delete object; - } - } - - if ( ASDCP_FAILURE(result) ) - DefaultLogSink().Error("Failed to initialize OPAtomIndexFooter\n"); - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::WriteToFile(Kumu::FileWriter& Writer, ui64_t duration) -{ - assert(m_Dict); - ASDCP::FrameBuffer FooterBuffer; - ui32_t footer_size = m_PacketList->m_List.size() * MaxIndexSegmentSize; // segment-count * max-segment-size - Result_t result = FooterBuffer.Capacity(footer_size); - ui32_t iseg_count = 0; - - if ( m_CurrentSegment != 0 ) - { - m_CurrentSegment->IndexDuration = m_CurrentSegment->IndexEntryArray.size(); - m_CurrentSegment = 0; - } - - std::list<InterchangeObject*>::iterator pl_i = m_PacketList->m_List.begin(); - for ( ; pl_i != m_PacketList->m_List.end() && ASDCP_SUCCESS(result); pl_i++ ) - { - if ( (*pl_i)->IsA(OBJ_TYPE_ARGS(IndexTableSegment)) ) - { - iseg_count++; - IndexTableSegment* Segment = (IndexTableSegment*)(*pl_i); - - if ( m_BytesPerEditUnit != 0 ) - { - if ( iseg_count != 1 ) - return RESULT_STATE; - - Segment->IndexDuration = duration; - } - } - - InterchangeObject* object = *pl_i; - object->m_Lookup = m_Lookup; - - ASDCP::FrameBuffer WriteWrapper; - WriteWrapper.SetData(FooterBuffer.Data() + FooterBuffer.Size(), - FooterBuffer.Capacity() - FooterBuffer.Size()); - result = object->WriteToBuffer(WriteWrapper); - FooterBuffer.Size(FooterBuffer.Size() + WriteWrapper.Size()); - } - - if ( ASDCP_SUCCESS(result) ) - { - IndexByteCount = FooterBuffer.Size(); - UL FooterUL(m_Dict->ul(MDD_CompleteFooter)); - result = Partition::WriteToFile(Writer, FooterUL); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t write_count = 0; - result = Writer.Write(FooterBuffer.RoData(), FooterBuffer.Size(), &write_count); - assert(write_count == FooterBuffer.Size()); - } - - return result; -} - -// -void -ASDCP::MXF::OPAtomIndexFooter::Dump(FILE* stream) -{ - if ( stream == 0 ) - stream = stderr; - - Partition::Dump(stream); - - std::list<InterchangeObject*>::iterator i = m_PacketList->m_List.begin(); - for ( ; i != m_PacketList->m_List.end(); i++ ) - (*i)->Dump(stream); -} - -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::GetMDObjectByID(const UUID& ObjectID, InterchangeObject** Object) -{ - return m_PacketList->GetMDObjectByID(ObjectID, Object); -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::GetMDObjectByType(const byte_t* ObjectID, InterchangeObject** Object) -{ - InterchangeObject* TmpObject; - - if ( Object == 0 ) - Object = &TmpObject; - - return m_PacketList->GetMDObjectByType(ObjectID, Object); -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::GetMDObjectsByType(const byte_t* ObjectID, std::list<InterchangeObject*>& ObjectList) -{ - return m_PacketList->GetMDObjectsByType(ObjectID, ObjectList); -} - -// -ASDCP::Result_t -ASDCP::MXF::OPAtomIndexFooter::Lookup(ui32_t frame_num, IndexTableSegment::IndexEntry& Entry) const -{ - std::list<InterchangeObject*>::iterator li; - for ( li = m_PacketList->m_List.begin(); li != m_PacketList->m_List.end(); li++ ) - { - if ( (*li)->IsA(OBJ_TYPE_ARGS(IndexTableSegment)) ) - { - IndexTableSegment* Segment = (IndexTableSegment*)(*li); - ui64_t start_pos = Segment->IndexStartPosition; - - if ( Segment->EditUnitByteCount > 0 ) - { - if ( m_PacketList->m_List.size() > 1 ) - DefaultLogSink().Error("Unexpected multiple IndexTableSegment in CBR file\n"); - - if ( ! Segment->IndexEntryArray.empty() ) - DefaultLogSink().Error("Unexpected IndexEntryArray contents in CBR file\n"); - - Entry.StreamOffset = (ui64_t)frame_num * Segment->EditUnitByteCount; - return RESULT_OK; - } - else if ( (ui64_t)frame_num >= start_pos - && (ui64_t)frame_num < (start_pos + Segment->IndexDuration) ) - { - ui64_t tmp = frame_num - start_pos; - assert(tmp <= 0xFFFFFFFFL); - Entry = Segment->IndexEntryArray[(ui32_t) tmp]; - return RESULT_OK; - } - } - } - - return RESULT_FAIL; -} - -// -void -ASDCP::MXF::OPAtomIndexFooter::SetIndexParamsCBR(IPrimerLookup* lookup, ui32_t size, const Rational& Rate) -{ - assert(lookup); - m_Lookup = lookup; - m_BytesPerEditUnit = size; - m_EditRate = Rate; - - IndexTableSegment* Index = new IndexTableSegment(m_Dict); - AddChildObject(Index); - Index->EditUnitByteCount = m_BytesPerEditUnit; - Index->IndexEditRate = Rate; -} - -// -void -ASDCP::MXF::OPAtomIndexFooter::SetIndexParamsVBR(IPrimerLookup* lookup, const Rational& Rate, Kumu::fpos_t offset) -{ - assert(lookup); - m_Lookup = lookup; - m_BytesPerEditUnit = 0; - m_EditRate = Rate; - m_ECOffset = offset; -} - -// -void -ASDCP::MXF::OPAtomIndexFooter::PushIndexEntry(const IndexTableSegment::IndexEntry& Entry) -{ - if ( m_BytesPerEditUnit != 0 ) // are we CBR? that's bad - { - DefaultLogSink().Error("Call to PushIndexEntry() failed: index is CBR\n"); - return; - } - - // do we have an available segment? - if ( m_CurrentSegment == 0 ) - { // no, set up a new segment - m_CurrentSegment = new IndexTableSegment(m_Dict); - assert(m_CurrentSegment); - AddChildObject(m_CurrentSegment); - m_CurrentSegment->DeltaEntryArray.push_back(IndexTableSegment::DeltaEntry()); - m_CurrentSegment->IndexEditRate = m_EditRate; - m_CurrentSegment->IndexStartPosition = 0; - } - else if ( m_CurrentSegment->IndexEntryArray.size() >= CBRIndexEntriesPerSegment ) - { // no, this one is full, start another - m_CurrentSegment->IndexDuration = m_CurrentSegment->IndexEntryArray.size(); - ui64_t StartPosition = m_CurrentSegment->IndexStartPosition + m_CurrentSegment->IndexDuration; - - m_CurrentSegment = new IndexTableSegment(m_Dict); - assert(m_CurrentSegment); - AddChildObject(m_CurrentSegment); - m_CurrentSegment->DeltaEntryArray.push_back(IndexTableSegment::DeltaEntry()); - m_CurrentSegment->IndexEditRate = m_EditRate; - m_CurrentSegment->IndexStartPosition = StartPosition; - } - - m_CurrentSegment->IndexEntryArray.push_back(Entry); -} - -//------------------------------------------------------------------------------------------ -// - -// -void -ASDCP::MXF::InterchangeObject::Copy(const InterchangeObject& rhs) -{ - m_UL = rhs.m_UL; - InstanceUID = rhs.InstanceUID; - GenerationUID = rhs.GenerationUID; -} - -// -ASDCP::Result_t -ASDCP::MXF::InterchangeObject::InitFromTLVSet(TLVReader& TLVSet) -{ - Result_t result = TLVSet.ReadObject(OBJ_READ_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) - result = TLVSet.ReadObject(OBJ_READ_ARGS(GenerationInterchangeObject, GenerationUID)); - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::InterchangeObject::WriteToTLVSet(TLVWriter& TLVSet) -{ - Result_t result = TLVSet.WriteObject(OBJ_WRITE_ARGS(InterchangeObject, InstanceUID)); - if ( ASDCP_SUCCESS(result) ) - result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenerationInterchangeObject, GenerationUID)); - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::InterchangeObject::InitFromBuffer(const byte_t* p, ui32_t l) -{ - ASDCP_TEST_NULL(p); - Result_t result = RESULT_FALSE; - - if ( m_UL.HasValue() ) - { - result = KLVPacket::InitFromBuffer(p, l, m_UL); - - if ( ASDCP_SUCCESS(result) ) - { - TLVReader MemRDR(m_ValueStart, m_ValueLength, m_Lookup); - result = InitFromTLVSet(MemRDR); - } - } - else - { - result = KLVPacket::InitFromBuffer(p, l); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::InterchangeObject::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - if ( ! m_UL.HasValue() ) - return RESULT_STATE; - - TLVWriter MemWRT(Buffer.Data() + kl_length, Buffer.Capacity() - kl_length, m_Lookup); - Result_t result = WriteToTLVSet(MemWRT); - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t packet_length = MemWRT.Length(); - result = WriteKLToBuffer(Buffer, packet_length); - - if ( ASDCP_SUCCESS(result) ) - Buffer.Size(Buffer.Size() + packet_length); - } - - return result; -} - -// -void -ASDCP::MXF::InterchangeObject::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - - fputc('\n', stream); - KLVPacket::Dump(stream, *m_Dict, false); - fprintf(stream, " InstanceUID = %s\n", InstanceUID.EncodeHex(identbuf, IdentBufferLen)); - fprintf(stream, " GenerationUID = %s\n", GenerationUID.EncodeHex(identbuf, IdentBufferLen)); -} - -// -bool -ASDCP::MXF::InterchangeObject::IsA(const byte_t* label) -{ - if ( m_KLLength == 0 ) - return false; - - return ( memcmp(label, m_KeyStart, SMPTE_UL_LENGTH) == 0 ); -} - - -//------------------------------------------------------------------------------------------ - - -typedef std::map<ASDCP::UL, ASDCP::MXF::MXFObjectFactory_t>FactoryMap_t; -typedef FactoryMap_t::iterator FLi_t; - -// -class FactoryList : public FactoryMap_t -{ - Kumu::Mutex m_Lock; - -public: - FactoryList() {} - ~FactoryList() {} - - bool Empty() { - Kumu::AutoMutex BlockLock(m_Lock); - return empty(); - } - - FLi_t Find(const byte_t* label) { - Kumu::AutoMutex BlockLock(m_Lock); - return find(label); - } - - FLi_t End() { - Kumu::AutoMutex BlockLock(m_Lock); - return end(); - } - - void Insert(ASDCP::UL label, ASDCP::MXF::MXFObjectFactory_t factory) { - Kumu::AutoMutex BlockLock(m_Lock); - insert(FactoryList::value_type(label, factory)); - } -}; - -// -static FactoryList s_FactoryList; -static Kumu::Mutex s_InitLock; -static bool s_TypesInit = false; - - -// -void -ASDCP::MXF::SetObjectFactory(ASDCP::UL label, ASDCP::MXF::MXFObjectFactory_t factory) -{ - s_FactoryList.Insert(label, factory); -} - -// -ASDCP::MXF::InterchangeObject* -ASDCP::MXF::CreateObject(const Dictionary*& Dict, const UL& label) -{ - if ( ! s_TypesInit ) - { - Kumu::AutoMutex BlockLock(s_InitLock); - - if ( ! s_TypesInit ) - { - MXF::Metadata_InitTypes(Dict); - s_TypesInit = true; - } - } - - FLi_t i = s_FactoryList.find(label.Value()); - - if ( i == s_FactoryList.end() ) - return new InterchangeObject(Dict); - - return i->second(Dict); -} - - -// -// end MXF.cpp -// diff --git a/asdcplib/src/MXF.h b/asdcplib/src/MXF.h deleted file mode 100755 index c170a2d..0000000 --- a/asdcplib/src/MXF.h +++ /dev/null @@ -1,410 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file MXF.h - \version $Id: MXF.h,v 1.42 2012/03/05 13:11:47 jhurst Exp $ - \brief MXF objects -*/ - -#ifndef _MXF_H_ -#define _MXF_H_ - -#include "MXFTypes.h" - -namespace ASDCP -{ - namespace MXF - { - class InterchangeObject; - - // - typedef ASDCP::MXF::InterchangeObject* (*MXFObjectFactory_t)(const Dictionary*&); - - // - void SetObjectFactory(UL label, MXFObjectFactory_t factory); - - // - InterchangeObject* CreateObject(const Dictionary*& Dict, const UL& label); - - - // seek an open file handle to the start of the RIP KLV packet - Result_t SeekToRIP(const Kumu::FileReader&); - - // - class RIP : public ASDCP::KLVFilePacket - { - ASDCP_NO_COPY_CONSTRUCT(RIP); - RIP(); - - public: - // - class Pair : public Kumu::IArchive - { - public: - ui32_t BodySID; - ui64_t ByteOffset; - - Pair() : BodySID(0), ByteOffset(0) {} - Pair(ui32_t sid, ui64_t offset) : BodySID(sid), ByteOffset(offset) {} - virtual ~Pair() {} - - ui32_t Size() { return sizeof(ui32_t) + sizeof(ui64_t); } - - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - Kumu::ui64Printer offset_str(ByteOffset); - snprintf(str_buf, buf_len, "%-6u: %s", BodySID, offset_str.c_str()); - return str_buf; - } - - inline bool HasValue() const { return true; } - inline ui32_t ArchiveLength() const { return sizeof(ui32_t) + sizeof(ui64_t); } - - inline bool Unarchive(Kumu::MemIOReader* Reader) { - if ( ! Reader->ReadUi32BE(&BodySID) ) return false; - if ( ! Reader->ReadUi64BE(&ByteOffset) ) return false; - return true; - } - - inline bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi32BE(BodySID) ) return false; - if ( ! Writer->WriteUi64BE(ByteOffset) ) return false; - return true; - } - }; - - const Dictionary*& m_Dict; - Array<Pair> PairArray; - - RIP(const Dictionary*& d) : m_Dict(d) {} - virtual ~RIP() {} - virtual Result_t InitFromFile(const Kumu::FileReader& Reader); - virtual Result_t WriteToFile(Kumu::FileWriter& Writer); - virtual Result_t GetPairBySID(ui32_t, Pair&) const; - virtual void Dump(FILE* = 0); - }; - - - // - class Partition : public ASDCP::KLVFilePacket - { - ASDCP_NO_COPY_CONSTRUCT(Partition); - Partition(); - - protected: - class h__PacketList; - mem_ptr<h__PacketList> m_PacketList; - - public: - const Dictionary*& m_Dict; - - ui16_t MajorVersion; - ui16_t MinorVersion; - ui32_t KAGSize; - ui64_t ThisPartition; - ui64_t PreviousPartition; - ui64_t FooterPartition; - ui64_t HeaderByteCount; - ui64_t IndexByteCount; - ui32_t IndexSID; - ui64_t BodyOffset; - ui32_t BodySID; - UL OperationalPattern; - Batch<UL> EssenceContainers; - - Partition(const Dictionary*&); - virtual ~Partition(); - virtual void AddChildObject(InterchangeObject*); // takes ownership - virtual Result_t InitFromFile(const Kumu::FileReader& Reader); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToFile(Kumu::FileWriter& Writer, UL& PartitionLabel); - virtual ui32_t ArchiveSize(); // returns the size of the archived structure - virtual void Dump(FILE* = 0); - }; - - - // - class Primer : public ASDCP::KLVFilePacket, public ASDCP::IPrimerLookup - { - class h__PrimerLookup; - mem_ptr<h__PrimerLookup> m_Lookup; - ui8_t m_LocalTag; - ASDCP_NO_COPY_CONSTRUCT(Primer); - Primer(); - - public: - // - class LocalTagEntry : Kumu::IArchive - { - public: - TagValue Tag; - ASDCP::UL UL; - - LocalTagEntry() { Tag.a = Tag.b = 0; } - LocalTagEntry(const TagValue& tag, ASDCP::UL& ul) : Tag(tag), UL(ul) {} - - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - snprintf(str_buf, buf_len, "%02x %02x: ", Tag.a, Tag.b); - UL.EncodeString(str_buf + strlen(str_buf), buf_len - strlen(str_buf)); - return str_buf; - } - - inline bool HasValue() const { return UL.HasValue(); } - inline ui32_t ArchiveLength() const { return 2 + UL.ArchiveLength(); } - - inline bool Unarchive(Kumu::MemIOReader* Reader) { - if ( ! Reader->ReadUi8(&Tag.a) ) return false; - if ( ! Reader->ReadUi8(&Tag.b) ) return false; - return UL.Unarchive(Reader); - } - - inline bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi8(Tag.a) ) return false; - if ( ! Writer->WriteUi8(Tag.b) ) return false; - return UL.Archive(Writer); - } - }; - - Batch<LocalTagEntry> LocalTagEntryBatch; - const Dictionary*& m_Dict; - - Primer(const Dictionary*&); - virtual ~Primer(); - - virtual void ClearTagList(); - virtual Result_t InsertTag(const MDDEntry& Entry, ASDCP::TagValue& Tag); - virtual Result_t TagForKey(const ASDCP::UL& Key, ASDCP::TagValue& Tag); - - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual Result_t WriteToFile(Kumu::FileWriter& Writer); - virtual void Dump(FILE* = 0); - }; - - - // - class InterchangeObject : public ASDCP::KLVPacket - { - InterchangeObject(); - - public: - const Dictionary*& m_Dict; - IPrimerLookup* m_Lookup; - UUID InstanceUID; - UUID GenerationUID; - - InterchangeObject(const Dictionary*& d) : m_Dict(d), m_Lookup(0) {} - virtual ~InterchangeObject() {} - - virtual void Copy(const InterchangeObject& rhs); - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual bool IsA(const byte_t* label); - virtual const char* ObjectName() { return "InterchangeObject"; } - virtual void Dump(FILE* stream = 0); - }; - - // - class Preface : public InterchangeObject - { - ASDCP_NO_COPY_CONSTRUCT(Preface); - Preface(); - - public: - const Dictionary*& m_Dict; - Kumu::Timestamp LastModifiedDate; - ui16_t Version; - ui32_t ObjectModelVersion; - UUID PrimaryPackage; - Batch<UUID> Identifications; - UUID ContentStorage; - UL OperationalPattern; - Batch<UL> EssenceContainers; - Batch<UL> DMSchemes; - - Preface(const Dictionary*& d); - virtual ~Preface() {} - - virtual void Copy(const Preface& rhs); - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual void Dump(FILE* = 0); - }; - - const ui32_t MaxIndexSegmentSize = 65536; - - // - class IndexTableSegment : public InterchangeObject - { - ASDCP_NO_COPY_CONSTRUCT(IndexTableSegment); - - public: - // - class DeltaEntry : public Kumu::IArchive - { - public: - i8_t PosTableIndex; - ui8_t Slice; - ui32_t ElementData; - - DeltaEntry() : PosTableIndex(-1), Slice(0), ElementData(0) {} - DeltaEntry(i8_t pos, ui8_t slice, ui32_t data) : PosTableIndex(pos), Slice(slice), ElementData(data) {} - inline bool HasValue() const { return true; } - ui32_t ArchiveLength() const { return sizeof(ui32_t) + 2; } - bool Unarchive(Kumu::MemIOReader* Reader); - bool Archive(Kumu::MemIOWriter* Writer) const; - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - }; - - // - class IndexEntry : public Kumu::IArchive - { - public: - i8_t TemporalOffset; - i8_t KeyFrameOffset; - ui8_t Flags; - ui64_t StreamOffset; - - // if you use these, you will need to change CBRIndexEntriesPerSegment in MXF.cpp - // to a more suitable value - // std::list<ui32_t> SliceOffset; - // Array<Rational> PosTable; - - IndexEntry() : TemporalOffset(0), KeyFrameOffset(0), Flags(0), StreamOffset(0) {} - IndexEntry(i8_t t_ofst, i8_t k_ofst, ui8_t flags, ui64_t s_ofst) : - TemporalOffset(t_ofst), KeyFrameOffset(k_ofst), Flags(flags), StreamOffset(s_ofst) {} - inline bool HasValue() const { return true; } - ui32_t ArchiveLength() const { return sizeof(ui64_t) + 3; }; - bool Unarchive(Kumu::MemIOReader* Reader); - bool Archive(Kumu::MemIOWriter* Writer) const; - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - }; - - const Dictionary*& m_Dict; - - Rational IndexEditRate; - ui64_t IndexStartPosition; - ui64_t IndexDuration; - ui32_t EditUnitByteCount; - ui32_t IndexSID; - ui32_t BodySID; - ui8_t SliceCount; - ui8_t PosTableCount; - Batch<DeltaEntry> DeltaEntryArray; - Batch<IndexEntry> IndexEntryArray; - - IndexTableSegment(const Dictionary*&); - virtual ~IndexTableSegment(); - - virtual void Copy(const IndexTableSegment& rhs); - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - virtual void Dump(FILE* = 0); - }; - - //--------------------------------------------------------------------------------- - // - class Identification; - class SourcePackage; - - // - class OPAtomHeader : public Partition - { - ASDCP_NO_COPY_CONSTRUCT(OPAtomHeader); - OPAtomHeader(); - - public: - const Dictionary*& m_Dict; - ASDCP::MXF::RIP m_RIP; - ASDCP::MXF::Primer m_Primer; - Preface* m_Preface; - ASDCP::FrameBuffer m_Buffer; - bool m_HasRIP; - - OPAtomHeader(const Dictionary*&); - virtual ~OPAtomHeader(); - virtual Result_t InitFromFile(const Kumu::FileReader& Reader); - virtual Result_t InitFromPartitionBuffer(const byte_t* p, ui32_t l); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToFile(Kumu::FileWriter& Writer, ui32_t HeaderLength = 16384); - virtual void Dump(FILE* = 0); - virtual Result_t GetMDObjectByID(const UUID&, InterchangeObject** = 0); - virtual Result_t GetMDObjectByType(const byte_t*, InterchangeObject** = 0); - virtual Result_t GetMDObjectsByType(const byte_t* ObjectID, std::list<InterchangeObject*>& ObjectList); - virtual ASDCP::MXF::RIP& GetRIP(); - Identification* GetIdentification(); - SourcePackage* GetSourcePackage(); - }; - - // - class OPAtomIndexFooter : public Partition - { - IndexTableSegment* m_CurrentSegment; - ASDCP::FrameBuffer m_Buffer; - ui32_t m_BytesPerEditUnit; - Rational m_EditRate; - ui32_t m_BodySID; - - ASDCP_NO_COPY_CONSTRUCT(OPAtomIndexFooter); - OPAtomIndexFooter(); - - public: - const Dictionary*& m_Dict; - Kumu::fpos_t m_ECOffset; - IPrimerLookup* m_Lookup; - - OPAtomIndexFooter(const Dictionary*&); - virtual ~OPAtomIndexFooter(); - virtual Result_t InitFromFile(const Kumu::FileReader& Reader); - virtual Result_t InitFromPartitionBuffer(const byte_t* p, ui32_t l); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToFile(Kumu::FileWriter& Writer, ui64_t duration); - virtual void Dump(FILE* = 0); - - virtual Result_t GetMDObjectByID(const UUID&, InterchangeObject** = 0); - virtual Result_t GetMDObjectByType(const byte_t*, InterchangeObject** = 0); - virtual Result_t GetMDObjectsByType(const byte_t* ObjectID, std::list<InterchangeObject*>& ObjectList); - - virtual Result_t Lookup(ui32_t frame_num, IndexTableSegment::IndexEntry&) const; - virtual void PushIndexEntry(const IndexTableSegment::IndexEntry&); - virtual void SetIndexParamsCBR(IPrimerLookup* lookup, ui32_t size, const Rational& Rate); - virtual void SetIndexParamsVBR(IPrimerLookup* lookup, const Rational& Rate, Kumu::fpos_t offset); - }; - - } // namespace MXF -} // namespace ASDCP - - -#endif // _MXF_H_ - -// -// end MXF.h -// diff --git a/asdcplib/src/MXFTypes.cpp b/asdcplib/src/MXFTypes.cpp deleted file mode 100755 index 13bdaa0..0000000 --- a/asdcplib/src/MXFTypes.cpp +++ /dev/null @@ -1,682 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file MXFTypes.cpp - \version $Id: MXFTypes.cpp,v 1.27 2012/02/21 02:09:31 jhurst Exp $ - \brief MXF objects -*/ - -#include <KM_prng.h> -#include <KM_tai.h> -#include "MXFTypes.h" -#include <KM_log.h> - -using Kumu::DefaultLogSink; - -//------------------------------------------------------------------------------------------ -// - -// -bool -ASDCP::UL::operator==(const UL& rhs) const -{ - if ( m_Value[0] == rhs.m_Value[0] && - m_Value[1] == rhs.m_Value[1] && - m_Value[2] == rhs.m_Value[2] && - m_Value[3] == rhs.m_Value[3] && - m_Value[4] == rhs.m_Value[4] && - m_Value[5] == rhs.m_Value[5] && - m_Value[6] == rhs.m_Value[6] && - // m_Value[7] == rhs.m_Value[7] && // version is ignored when performing lookups - m_Value[8] == rhs.m_Value[8] && - m_Value[9] == rhs.m_Value[9] && - m_Value[10] == rhs.m_Value[10] && - m_Value[11] == rhs.m_Value[11] && - m_Value[12] == rhs.m_Value[12] && - m_Value[13] == rhs.m_Value[13] && - m_Value[14] == rhs.m_Value[14] && - m_Value[15] == rhs.m_Value[15] - ) - return true; - - return false; -} - -// -bool -ASDCP::UL::MatchIgnoreStream(const UL& rhs) const -{ - if ( m_Value[0] == rhs.m_Value[0] && - m_Value[1] == rhs.m_Value[1] && - m_Value[2] == rhs.m_Value[2] && - m_Value[3] == rhs.m_Value[3] && - m_Value[4] == rhs.m_Value[4] && - m_Value[5] == rhs.m_Value[5] && - m_Value[6] == rhs.m_Value[6] && - // m_Value[7] == rhs.m_Value[7] && // version is ignored when performing lookups - m_Value[8] == rhs.m_Value[8] && - m_Value[9] == rhs.m_Value[9] && - m_Value[10] == rhs.m_Value[10] && - m_Value[11] == rhs.m_Value[11] && - m_Value[12] == rhs.m_Value[12] && - m_Value[13] == rhs.m_Value[13] && - m_Value[14] == rhs.m_Value[14] - // m_Value[15] == rhs.m_Value[15] // ignore stream number - ) - return true; - - return false; -} - -// -bool -ASDCP::UL::ExactMatch(const UL& rhs) const -{ - if ( m_Value[0] == rhs.m_Value[0] && - m_Value[1] == rhs.m_Value[1] && - m_Value[2] == rhs.m_Value[2] && - m_Value[3] == rhs.m_Value[3] && - m_Value[4] == rhs.m_Value[4] && - m_Value[5] == rhs.m_Value[5] && - m_Value[6] == rhs.m_Value[6] && - m_Value[7] == rhs.m_Value[7] && - m_Value[8] == rhs.m_Value[8] && - m_Value[9] == rhs.m_Value[9] && - m_Value[10] == rhs.m_Value[10] && - m_Value[11] == rhs.m_Value[11] && - m_Value[12] == rhs.m_Value[12] && - m_Value[13] == rhs.m_Value[13] && - m_Value[14] == rhs.m_Value[14] && - m_Value[15] == rhs.m_Value[15] - ) - return true; - - return false; -} - -const char* -ASDCP::UL::EncodeString(char* str_buf, ui32_t buf_len) const -{ - if ( buf_len > 38 ) // room for dotted notation? - { - snprintf(str_buf, buf_len, - "%02x%02x%02x%02x.%02x%02x.%02x%02x.%02x%02x%02x%02x.%02x%02x%02x%02x", - m_Value[0], m_Value[1], m_Value[2], m_Value[3], - m_Value[4], m_Value[5], m_Value[6], m_Value[7], - m_Value[8], m_Value[9], m_Value[10], m_Value[11], - m_Value[12], m_Value[13], m_Value[14], m_Value[15] - ); - - return str_buf; - } - else if ( buf_len > 32 ) // room for compact? - { - snprintf(str_buf, buf_len, - "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", - m_Value[0], m_Value[1], m_Value[2], m_Value[3], - m_Value[4], m_Value[5], m_Value[6], m_Value[7], - m_Value[8], m_Value[9], m_Value[10], m_Value[11], - m_Value[12], m_Value[13], m_Value[14], m_Value[15] - ); - - return str_buf; - } - - return 0; -} - -// -void -ASDCP::UMID::MakeUMID(int Type) -{ - UUID AssetID; - Kumu::GenRandomValue(AssetID); - MakeUMID(Type, AssetID); -} - -// -void -ASDCP::UMID::MakeUMID(int Type, const UUID& AssetID) -{ - // Set the non-varying base of the UMID - static const byte_t UMIDBase[10] = { 0x06, 0x0a, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; - memcpy(m_Value, UMIDBase, 10); - m_Value[10] = Type; // Material Type - m_Value[12] = 0x13; // length - - // preserved for compatibility with mfxlib - if( Type > 4 ) m_Value[7] = 5; - m_Value[11] = 0x20; // UUID/UL method, number gen undefined - - // Instance Number - m_Value[13] = m_Value[14] = m_Value[15] = 0; - - memcpy(&m_Value[16], AssetID.Value(), AssetID.Size()); - m_HasValue = true; -} - - -// Write the UMID value to the given buffer in the form -// [00000000.0000.0000.00000000],00,00,00,00,00000000.0000.0000.00000000.00000000] -// or -// [00000000.0000.0000.00000000],00,00,00,00,00000000-0000-0000-0000-000000000000] -// returns 0 if the buffer is smaller than DateTimeLen -const char* -ASDCP::UMID::EncodeString(char* str_buf, ui32_t buf_len) const -{ - assert(str_buf); - - snprintf(str_buf, buf_len, "[%02x%02x%02x%02x.%02x%02x.%02x%02x.%02x%02x%02x%02x],%02x,%02x,%02x,%02x,", - m_Value[0], m_Value[1], m_Value[2], m_Value[3], - m_Value[4], m_Value[5], m_Value[6], m_Value[7], - m_Value[8], m_Value[9], m_Value[10], m_Value[11], - m_Value[12], m_Value[13], m_Value[14], m_Value[15] - ); - - ui32_t offset = strlen(str_buf); - - if ( ( m_Value[8] & 0x80 ) == 0 ) - { - // half-swapped UL, use [bbaa9988.ddcc.ffee.00010203.04050607] - snprintf(str_buf + offset, buf_len - offset, - "[%02x%02x%02x%02x.%02x%02x.%02x%02x.%02x%02x%02x%02x.%02x%02x%02x%02x]", - m_Value[24], m_Value[25], m_Value[26], m_Value[27], - m_Value[28], m_Value[29], m_Value[30], m_Value[31], - m_Value[16], m_Value[17], m_Value[18], m_Value[19], - m_Value[20], m_Value[21], m_Value[22], m_Value[23] - ); - } - else - { - // UUID, use {00112233-4455-6677-8899-aabbccddeeff} - snprintf(str_buf + offset, buf_len - offset, - "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}", - m_Value[16], m_Value[17], m_Value[18], m_Value[19], - m_Value[20], m_Value[21], m_Value[22], m_Value[23], - m_Value[24], m_Value[25], m_Value[26], m_Value[27], - m_Value[28], m_Value[29], m_Value[30], m_Value[31] - ); - } - - return str_buf; -} - -//------------------------------------------------------------------------------------------ -// - -// -const ASDCP::MXF::UTF16String& -ASDCP::MXF::UTF16String::operator=(const char* sz) -{ - if ( sz == 0 || *sz == 0 ) - erase(); - - else - this->assign(sz); - - return *this; -} - -// -const ASDCP::MXF::UTF16String& -ASDCP::MXF::UTF16String::operator=(const std::string& str) -{ - this->assign(str); - return *this; -} - -// -const char* -ASDCP::MXF::UTF16String::EncodeString(char* str_buf, ui32_t buf_len) const -{ - ui32_t write_len = Kumu::xmin(buf_len - 1, (ui32_t)size()); - strncpy(str_buf, c_str(), write_len); - str_buf[write_len] = 0; - return str_buf; -} - -// -bool -ASDCP::MXF::UTF16String::Unarchive(Kumu::MemIOReader* Reader) -{ - erase(); - const ui16_t* p = (ui16_t*)Reader->CurrentData(); - ui32_t length = Reader->Remainder() / 2; - char mb_buf[MB_LEN_MAX+1]; - - for ( ui32_t i = 0; i < length; i++ ) - { - int count = wctomb(mb_buf, KM_i16_BE(p[i])); - - if ( count == -1 ) - { - DefaultLogSink().Error("Unable to decode wide character 0x%04hx\n", p[i]); - return false; - } - - assert(count <= MB_LEN_MAX); - mb_buf[count] = 0; - this->append(mb_buf); - } - - Reader->SkipOffset(length*2); - return true; -} - -// -bool -ASDCP::MXF::UTF16String::Archive(Kumu::MemIOWriter* Writer) const -{ - if ( size() > IdentBufferLen ) - { - DefaultLogSink().Error("String length exceeds maximum %u bytes\n", IdentBufferLen); - return false; - } - - const char* mbp = c_str(); - wchar_t wcp; - ui32_t remainder = size(); - ui32_t length = size(); - ui32_t i = 0; - - while ( i < length ) - { - int count = mbtowc(&wcp, mbp+i, remainder); - - if ( count == -1 ) - { - DefaultLogSink().Error("Error decoding multi-byte sequence starting at offset %u\n", i); - return false; - } - else if ( count == 0 ) - break; - - bool result = Writer->WriteUi16BE((ui16_t)wcp); - - if ( result == false ) - { - DefaultLogSink().Error("No more space in memory IO writer\n"); - return false; - } - - i += count; - remainder -= count; - } - - return true; -} - -//------------------------------------------------------------------------------------------ -// - -// -const ASDCP::MXF::ISO8String& -ASDCP::MXF::ISO8String::operator=(const char* sz) -{ - if ( sz == 0 || *sz == 0 ) - erase(); - - else - this->assign(sz); - - return *this; -} - -// -const ASDCP::MXF::ISO8String& -ASDCP::MXF::ISO8String::operator=(const std::string& str) -{ - this->assign(str); - return *this; -} - -// -const char* -ASDCP::MXF::ISO8String::EncodeString(char* str_buf, ui32_t buf_len) const -{ - ui32_t write_len = Kumu::xmin(buf_len - 1, (ui32_t)size()); - strncpy(str_buf, c_str(), write_len); - str_buf[write_len] = 0; - return str_buf; -} - -// -bool -ASDCP::MXF::ISO8String::Unarchive(Kumu::MemIOReader* Reader) -{ - assign((char*)Reader->CurrentData(), Reader->Remainder()); - return true; -} - -// -bool -ASDCP::MXF::ISO8String::Archive(Kumu::MemIOWriter* Writer) const -{ - if ( size() > IdentBufferLen ) - { - DefaultLogSink().Error("String length exceeds maximum %u bytes\n", IdentBufferLen); - return false; - } - - return Writer->WriteString(*this); -} - -//------------------------------------------------------------------------------------------ -// - -ASDCP::MXF::TLVReader::TLVReader(const byte_t* p, ui32_t c, IPrimerLookup* PrimerLookup) : - MemIOReader(p, c), m_Lookup(PrimerLookup) -{ - Result_t result = RESULT_OK; - - while ( Remainder() > 0 && ASDCP_SUCCESS(result) ) - { - TagValue Tag; - ui16_t pkt_len = 0; - - if ( MemIOReader::ReadUi8(&Tag.a) ) - if ( MemIOReader::ReadUi8(&Tag.b) ) - if ( MemIOReader::ReadUi16BE(&pkt_len) ) - { - m_ElementMap.insert(TagMap::value_type(Tag, ItemInfo(m_size, pkt_len))); - if ( SkipOffset(pkt_len) ) - continue;; - } - - DefaultLogSink().Error("Malformed Set\n"); - m_ElementMap.clear(); - result = RESULT_KLV_CODING; - } -} - -// -bool -ASDCP::MXF::TLVReader::FindTL(const MDDEntry& Entry) -{ - if ( m_Lookup == 0 ) - { - DefaultLogSink().Error("No Lookup service\n"); - return false; - } - - TagValue TmpTag; - - if ( m_Lookup->TagForKey(Entry.ul, TmpTag) != RESULT_OK ) - { - if ( Entry.tag.a == 0 ) - { - // DefaultLogSink().Debug("No such UL in this TL list: %s (%02x %02x)\n", - // Entry.name, Entry.tag.a, Entry.tag.b); - return false; - } - - TmpTag = Entry.tag; - } - - TagMap::iterator e_i = m_ElementMap.find(TmpTag); - - if ( e_i != m_ElementMap.end() ) - { - m_size = (*e_i).second.first; - m_capacity = m_size + (*e_i).second.second; - return true; - } - - // DefaultLogSink().Debug("Not Found (%02x %02x): %s\n", TmpTag.a, TmpTag.b, Entry.name); - return false; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVReader::ReadObject(const MDDEntry& Entry, Kumu::IArchive* Object) -{ - ASDCP_TEST_NULL(Object); - - if ( FindTL(Entry) ) - { - if ( m_size < m_capacity ) // don't try to unarchive an empty item - return Object->Unarchive(this) ? RESULT_OK : RESULT_KLV_CODING; - } - - return RESULT_FALSE; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVReader::ReadUi8(const MDDEntry& Entry, ui8_t* value) -{ - ASDCP_TEST_NULL(value); - - if ( FindTL(Entry) ) - return MemIOReader::ReadUi8(value) ? RESULT_OK : RESULT_KLV_CODING; - - return RESULT_FALSE; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVReader::ReadUi16(const MDDEntry& Entry, ui16_t* value) -{ - ASDCP_TEST_NULL(value); - - if ( FindTL(Entry) ) - return MemIOReader::ReadUi16BE(value) ? RESULT_OK : RESULT_KLV_CODING; - - return RESULT_FALSE; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVReader::ReadUi32(const MDDEntry& Entry, ui32_t* value) -{ - ASDCP_TEST_NULL(value); - - if ( FindTL(Entry) ) - return MemIOReader::ReadUi32BE(value) ? RESULT_OK : RESULT_KLV_CODING; - - return RESULT_FALSE; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVReader::ReadUi64(const MDDEntry& Entry, ui64_t* value) -{ - ASDCP_TEST_NULL(value); - - if ( FindTL(Entry) ) - return MemIOReader::ReadUi64BE(value) ? RESULT_OK : RESULT_KLV_CODING; - - return RESULT_FALSE; -} - -//------------------------------------------------------------------------------------------ -// - -ASDCP::MXF::TLVWriter::TLVWriter(byte_t* p, ui32_t c, IPrimerLookup* PrimerLookup) : - MemIOWriter(p, c), m_Lookup(PrimerLookup) -{ - assert(c > 3); -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVWriter::WriteTag(const MDDEntry& Entry) -{ - if ( m_Lookup == 0 ) - { - DefaultLogSink().Error("No Primer object available\n"); - return RESULT_FAIL; - } - - TagValue TmpTag; - - if ( m_Lookup->InsertTag(Entry, TmpTag) != RESULT_OK ) - { - DefaultLogSink().Error("No tag for entry %s\n", Entry.name); - return RESULT_FAIL; - } - - if ( ! MemIOWriter::WriteUi8(TmpTag.a) ) return RESULT_KLV_CODING; - if ( ! MemIOWriter::WriteUi8(TmpTag.b) ) return RESULT_KLV_CODING; - return RESULT_OK; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVWriter::WriteObject(const MDDEntry& Entry, Kumu::IArchive* Object) -{ - ASDCP_TEST_NULL(Object); - - if ( Entry.optional && ! Object->HasValue() ) - return RESULT_OK; - - Result_t result = WriteTag(Entry); - - if ( ASDCP_SUCCESS(result) ) - { - // write a temp length - byte_t* l_p = CurrentData(); - - if ( ! MemIOWriter::WriteUi16BE(0) ) return RESULT_KLV_CODING; - - ui32_t before = Length(); - if ( ! Object->Archive(this) ) return RESULT_KLV_CODING; - if ( (Length() - before) > 0xffffL ) return RESULT_KLV_CODING; - Kumu::i2p<ui16_t>(KM_i16_BE(Length() - before), l_p); - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVWriter::WriteUi8(const MDDEntry& Entry, ui8_t* value) -{ - ASDCP_TEST_NULL(value); - Result_t result = WriteTag(Entry); - - if ( ASDCP_SUCCESS(result) ) - { - if ( ! MemIOWriter::WriteUi16BE(sizeof(ui8_t)) ) return RESULT_KLV_CODING; - if ( ! MemIOWriter::WriteUi8(*value) ) return RESULT_KLV_CODING; - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVWriter::WriteUi16(const MDDEntry& Entry, ui16_t* value) -{ - ASDCP_TEST_NULL(value); - Result_t result = WriteTag(Entry); - - if ( KM_SUCCESS(result) ) - { - if ( ! MemIOWriter::WriteUi16BE(sizeof(ui16_t)) ) return RESULT_KLV_CODING; - if ( ! MemIOWriter::WriteUi16BE(*value) ) return RESULT_KLV_CODING; - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVWriter::WriteUi32(const MDDEntry& Entry, ui32_t* value) -{ - ASDCP_TEST_NULL(value); - Result_t result = WriteTag(Entry); - - if ( KM_SUCCESS(result) ) - { - if ( ! MemIOWriter::WriteUi16BE(sizeof(ui32_t)) ) return RESULT_KLV_CODING; - if ( ! MemIOWriter::WriteUi32BE(*value) ) return RESULT_KLV_CODING; - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::MXF::TLVWriter::WriteUi64(const MDDEntry& Entry, ui64_t* value) -{ - ASDCP_TEST_NULL(value); - Result_t result = WriteTag(Entry); - - if ( KM_SUCCESS(result) ) - { - if ( ! MemIOWriter::WriteUi16BE(sizeof(ui64_t)) ) return RESULT_KLV_CODING; - if ( ! MemIOWriter::WriteUi64BE(*value) ) return RESULT_KLV_CODING; - } - - return result; -} - - -//---------------------------------------------------------------------------------------------------- -// - -ASDCP::MXF::Raw::Raw() -{ - Capacity(256); -} - -ASDCP::MXF::Raw::~Raw() -{ -} - -// -bool -ASDCP::MXF::Raw::Unarchive(Kumu::MemIOReader* Reader) -{ - ui32_t payload_size = Reader->Remainder(); - if ( payload_size == 0 ) return false; - if ( KM_FAILURE(Capacity(payload_size)) ) return false; - - memcpy(Data(), Reader->CurrentData(), payload_size); - Length(payload_size); - return true; -} - -// -bool -ASDCP::MXF::Raw::Archive(Kumu::MemIOWriter* Writer) const -{ - return Writer->WriteRaw(RoData(), Length()); -} - -// -const char* -ASDCP::MXF::Raw::EncodeString(char* str_buf, ui32_t buf_len) const -{ - *str_buf = 0; - Kumu::bin2hex(RoData(), Length(), str_buf, buf_len); - return str_buf; -} - -// -// end MXFTypes.cpp -// diff --git a/asdcplib/src/MXFTypes.h b/asdcplib/src/MXFTypes.h deleted file mode 100755 index 4ab6772..0000000 --- a/asdcplib/src/MXFTypes.h +++ /dev/null @@ -1,409 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file MXFTypes.h - \version $Id: MXFTypes.h,v 1.29 2012/02/21 02:09:31 jhurst Exp $ - \brief MXF objects -*/ - -#ifndef _MXFTYPES_H_ -#define _MXFTYPES_H_ - -#include "KLV.h" -#include <list> -#include <vector> -#include <map> -#include <wchar.h> - -// used with TLVReader::Read* -// -// these are used below to manufacture arguments -#define OBJ_READ_ARGS(s,l) m_Dict->Type(MDD_##s##_##l), &l -#define OBJ_WRITE_ARGS(s,l) m_Dict->Type(MDD_##s##_##l), &l -#define OBJ_TYPE_ARGS(t) m_Dict->Type(MDD_##t).ul - - -namespace ASDCP -{ - namespace MXF - { - typedef std::pair<ui32_t, ui32_t> ItemInfo; - typedef std::map<TagValue, ItemInfo> TagMap; - - // - class TLVReader : public Kumu::MemIOReader - { - - TagMap m_ElementMap; - IPrimerLookup* m_Lookup; - - TLVReader(); - ASDCP_NO_COPY_CONSTRUCT(TLVReader); - bool FindTL(const MDDEntry&); - - public: - TLVReader(const byte_t* p, ui32_t c, IPrimerLookup* = 0); - Result_t ReadObject(const MDDEntry&, Kumu::IArchive*); - Result_t ReadUi8(const MDDEntry&, ui8_t*); - Result_t ReadUi16(const MDDEntry&, ui16_t*); - Result_t ReadUi32(const MDDEntry&, ui32_t*); - Result_t ReadUi64(const MDDEntry&, ui64_t*); - }; - - // - class TLVWriter : public Kumu::MemIOWriter - { - - TagMap m_ElementMap; - IPrimerLookup* m_Lookup; - - TLVWriter(); - ASDCP_NO_COPY_CONSTRUCT(TLVWriter); - Result_t WriteTag(const MDDEntry&); - - public: - TLVWriter(byte_t* p, ui32_t c, IPrimerLookup* = 0); - Result_t WriteObject(const MDDEntry&, Kumu::IArchive*); - Result_t WriteUi8(const MDDEntry&, ui8_t*); - Result_t WriteUi16(const MDDEntry&, ui16_t*); - Result_t WriteUi32(const MDDEntry&, ui32_t*); - Result_t WriteUi64(const MDDEntry&, ui64_t*); - }; - - // - template <class T> - class Batch : public std::vector<T>, public Kumu::IArchive - { - public: - Batch() {} - ~Batch() {} - - // - virtual bool Unarchive(Kumu::MemIOReader* Reader) { - ui32_t ItemCount, ItemSize; - if ( ! Reader->ReadUi32BE(&ItemCount) ) return false; - if ( ! Reader->ReadUi32BE(&ItemSize) ) return false; - - if ( ( ItemCount > 65536 ) || ( ItemSize > 1024 ) ) - return false; - - bool result = true; - for ( ui32_t i = 0; i < ItemCount && result; i++ ) - { - T Tmp; - result = Tmp.Unarchive(Reader); - - if ( result ) - this->push_back(Tmp); - } - - return result; - } - - inline virtual bool HasValue() const { return ! this->empty(); } - - virtual ui32_t ArchiveLength() const { - ui32_t arch_size = sizeof(ui32_t)*2; - - typename std::vector<T>::const_iterator l_i = this->begin(); - assert(l_i != this->end()); - - for ( ; l_i != this->end(); l_i++ ) - arch_size += l_i->ArchiveLength(); - - return arch_size; - } - - // - virtual bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi32BE(this->size()) ) return false; - byte_t* p = Writer->CurrentData(); - - if ( ! Writer->WriteUi32BE(0) ) return false; - if ( this->empty() ) return true; - - typename std::vector<T>::const_iterator l_i = this->begin(); - assert(l_i != this->end()); - - ui32_t ItemSize = Writer->Remainder(); - if ( ! (*l_i).Archive(Writer) ) return false; - ItemSize -= Writer->Remainder(); - Kumu::i2p<ui32_t>(KM_i32_BE(ItemSize), p); - l_i++; - - bool result = true; - for ( ; l_i != this->end() && result; l_i++ ) - result = (*l_i).Archive(Writer); - - return result; - } - - // - void Dump(FILE* stream = 0, ui32_t = 0) - { - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - typename std::vector<T>::iterator i = this->begin(); - for ( ; i != this->end(); i++ ) - fprintf(stream, " %s\n", (*i).EncodeString(identbuf, IdentBufferLen)); - } - }; - - // - template <class T> - class Array : public std::list<T>, public Kumu::IArchive - { - public: - Array() {} - ~Array() {} - - // - virtual bool Unarchive(Kumu::MemIOReader* Reader) - { - bool result = true; - - while ( Reader->Remainder() > 0 && result ) - { - T Tmp; - result = Tmp.Unarchive(Reader); - this->push_back(Tmp); - } - - return result; - } - - inline virtual bool HasValue() const { return ! this->empty(); } - - virtual ui32_t ArchiveLength() const { - ui32_t arch_size = 0; - - typename std::list<T>::const_iterator l_i = this->begin(); - - for ( ; l_i != this->end(); l_i++ ) - arch_size += l_i->ArchiveLength(); - - return arch_size; - } - - // - virtual bool Archive(Kumu::MemIOWriter* Writer) const { - bool result = true; - typename std::list<T>::const_iterator l_i = this->begin(); - - for ( ; l_i != this->end() && result; l_i++ ) - result = (*l_i).Archive(Writer); - - return result; - } - - // - void Dump(FILE* stream = 0, ui32_t = 0) - { - char identbuf[IdentBufferLen]; - - if ( stream == 0 ) - stream = stderr; - - typename std::list<T>::iterator i = this->begin(); - for ( ; i != this->end(); i++ ) - fprintf(stream, " %s\n", (*i).EncodeString(identbuf, IdentBufferLen)); - } - }; - - // - class ISO8String : public std::string, public Kumu::IArchive - { - public: - ISO8String() {} - ~ISO8String() {} - - const ISO8String& operator=(const char*); - const ISO8String& operator=(const std::string&); - - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - inline virtual bool HasValue() const { return ! empty(); } - inline virtual ui32_t ArchiveLength() const { return sizeof(ui32_t) + size(); } - virtual bool Unarchive(Kumu::MemIOReader* Reader); - virtual bool Archive(Kumu::MemIOWriter* Writer) const; - }; - - // - class UTF16String : public std::string, public Kumu::IArchive - { - public: - UTF16String() {} - ~UTF16String() {} - - const UTF16String& operator=(const char*); - const UTF16String& operator=(const std::string&); - - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - inline virtual bool HasValue() const { return ! empty(); } - inline virtual ui32_t ArchiveLength() const { return sizeof(ui32_t) + size(); } - virtual bool Unarchive(Kumu::MemIOReader* Reader); - virtual bool Archive(Kumu::MemIOWriter* Writer) const; - }; - - // - class Rational : public ASDCP::Rational, public Kumu::IArchive - { - public: - Rational() {} - ~Rational() {} - - Rational(const Rational& rhs) : ASDCP::Rational(), IArchive() { - Numerator = rhs.Numerator; - Denominator = rhs.Denominator; - } - - const Rational& operator=(const Rational& rhs) { - Numerator = rhs.Numerator; - Denominator = rhs.Denominator; - return *this; - } - - Rational(const ASDCP::Rational& rhs) { - Numerator = rhs.Numerator; - Denominator = rhs.Denominator; - } - - const Rational& operator=(const ASDCP::Rational& rhs) { - Numerator = rhs.Numerator; - Denominator = rhs.Denominator; - return *this; - } - - // - inline const char* EncodeString(char* str_buf, ui32_t buf_len) const { - snprintf(str_buf, buf_len, "%d/%d", Numerator, Denominator); - return str_buf; - } - - inline virtual bool Unarchive(Kumu::MemIOReader* Reader) { - if ( ! Reader->ReadUi32BE((ui32_t*)&Numerator) ) return false; - if ( ! Reader->ReadUi32BE((ui32_t*)&Denominator) ) return false; - return true; - } - - inline virtual bool HasValue() const { return true; } - inline virtual ui32_t ArchiveLength() const { return sizeof(ui32_t)*2; } - - inline virtual bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi32BE((ui32_t)Numerator) ) return false; - if ( ! Writer->WriteUi32BE((ui32_t)Denominator) ) return false; - return true; - } - }; - - // - class VersionType : public Kumu::IArchive - { - public: - enum Release_t { RL_UNKNOWN, RL_RELEASE, RL_DEVELOPMENT, RL_PATCHED, RL_BETA, RL_PRIVATE }; - ui16_t Major; - ui16_t Minor; - ui16_t Patch; - ui16_t Build; - Release_t Release; - - VersionType() : Major(0), Minor(0), Patch(0), Build(0), Release(RL_UNKNOWN) {} - VersionType(const VersionType& rhs) { Copy(rhs); } - virtual ~VersionType() {} - - const VersionType& operator=(const VersionType& rhs) { Copy(rhs); return *this; } - void Copy(const VersionType& rhs) { - Major = rhs.Major; - Minor = rhs.Minor; - Patch = rhs.Patch; - Build = rhs.Build; - Release = rhs.Release; - } - - void Dump(FILE* = 0); - - const char* EncodeString(char* str_buf, ui32_t buf_len) const { - snprintf(str_buf, buf_len, "%hu.%hu.%hu.%hur%hu", Major, Minor, Patch, Build, Release); - return str_buf; - } - - virtual bool Unarchive(Kumu::MemIOReader* Reader) { - if ( ! Reader->ReadUi16BE(&Major) ) return false; - if ( ! Reader->ReadUi16BE(&Minor) ) return false; - if ( ! Reader->ReadUi16BE(&Patch) ) return false; - if ( ! Reader->ReadUi16BE(&Build) ) return false; - ui16_t tmp_release; - if ( ! Reader->ReadUi16BE(&tmp_release) ) return false; - Release = (Release_t)tmp_release; - return true; - } - - inline virtual bool HasValue() const { return true; } - inline virtual ui32_t ArchiveLength() const { return sizeof(ui16_t)*5; } - - virtual bool Archive(Kumu::MemIOWriter* Writer) const { - if ( ! Writer->WriteUi16BE(Major) ) return false; - if ( ! Writer->WriteUi16BE(Minor) ) return false; - if ( ! Writer->WriteUi16BE(Patch) ) return false; - if ( ! Writer->WriteUi16BE(Build) ) return false; - if ( ! Writer->WriteUi16BE((ui16_t)(Release & 0x0000ffffL)) ) return false; - return true; - } - }; - - // - class Raw : public Kumu::ByteString - { - public: - Raw(); - Raw(const Raw& rhs) : Kumu::ByteString () { Copy(rhs); } - virtual ~Raw(); - - const Raw& operator=(const Raw& rhs) { Copy(rhs); return *this; } - void Copy(const Raw& rhs) { - if ( KM_SUCCESS(Capacity(rhs.Length())) ) - { - Set(rhs); - } - } - - // - virtual bool Unarchive(Kumu::MemIOReader* Reader); - virtual bool Archive(Kumu::MemIOWriter* Writer) const; - const char* EncodeString(char* str_buf, ui32_t buf_len) const; - }; - - } // namespace MXF -} // namespace ASDCP - - -#endif //_MXFTYPES_H_ - -// -// end MXFTypes.h -// diff --git a/asdcplib/src/Makefile.am b/asdcplib/src/Makefile.am deleted file mode 100644 index 85c1e9f..0000000 --- a/asdcplib/src/Makefile.am +++ /dev/null @@ -1,249 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -# -# $Id: Makefile.am,v 1.53 2012/02/05 21:30:18 jhurst Exp $ -# Copyright (c) 2007-2011 John Hurst. All rights reserved. -# -# 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. - -# Allow for configure's changes to this makefile -AM_CPPFLAGS = -AM_LDFLAGS = - -if OPENBSD_HOST -AM_CPPFLAGS += -I/var/local/include -I/usr/local/include -AM_LDFLAGS += -L./.libs -L/var/local/lib -L/usr/local/lib -endif - -if ENABLE_RANDOM_UUID -AM_CPPFLAGS += -DCONFIG_RANDOM_UUID -endif - -# list of all the header files that should be installed -include_HEADERS = KM_error.h KM_fileio.h KM_log.h KM_memio.h KM_mutex.h \ - KM_platform.h KM_prng.h KM_util.h KM_tai.h KM_xml.h AS_DCP.h -if DEV_HEADERS -include_HEADERS += S12MTimecode.h MDD.h Metadata.h KLV.h MXFTypes.h MXF.h Wav.h \ - PCMParserList.h -nodist_include_HEADERS = TimedText_Transform.h -endif - -# list of the libraries to build and install -lib_LTLIBRARIES = libkumu.la libasdcp.la -# sources for a library -libkumu_la_SOURCES = KM_error.h KM_fileio.cpp KM_fileio.h KM_log.cpp KM_log.h \ - KM_memio.h KM_mutex.h KM_platform.h KM_prng.cpp KM_prng.h KM_util.cpp \ - KM_util.h KM_xml.cpp KM_xml.h KM_tai.h KM_tai.cpp - -# linker flags (*not* including libraries to link against) for a library -libkumu_la_LDFLAGS = -release @VERSION@ - -# sources for a library that don't get added to a distribution -nodist_libasdcp_la_SOURCES = Metadata_h.tt2 Metadata_cpp.tt2 \ - mxfgen.pl MXF_def.pl ullist.pl ULList.xml dict.xml DMS_Crypto.xml - -libasdcp_la_SOURCES = MPEG2_Parser.cpp MPEG.cpp JP2K_Codestream_Parser.cpp \ - JP2K_Sequence_Parser.cpp JP2K.cpp PCM_Parser.cpp Wav.cpp \ - TimedText_Parser.cpp KLV.cpp Dict.cpp MXFTypes.cpp MXF.cpp \ - Index.cpp Metadata.cpp AS_DCP.cpp AS_DCP_MXF.cpp AS_DCP_AES.cpp \ - h__Reader.cpp h__Writer.cpp AS_DCP_MPEG2.cpp AS_DCP_JP2K.cpp \ - AS_DCP_PCM.cpp AS_DCP_TimedText.cpp PCMParserList.cpp \ - Wav.h WavFileWriter.h MXF.h Metadata.h \ - JP2K.h AS_DCP.h AS_DCP_internal.h KLV.h MPEG.h MXFTypes.h MDD.h \ - PCMParserList.h S12MTimecode.h MDD.cpp - -if DEV_HEADERS -nodist_libasdcp_la_SOURCES += TimedText_Transform.h TimedText_Transform.cpp -endif - -libasdcp_la_LDFLAGS = -release @VERSION@ - -# additional libraries to link against for a library -libasdcp_la_LIBADD = libkumu.la -libasdcp_la_CPPFLAGS = -DASDCP_PLATFORM=\"@host@\" - -# Python extension -if PYTHON_USE -lib_LTLIBRARIES += libpyasdcp.la -#### libnapali.la - -nodist_libpyasdcp_la_SOURCES = \ - kumu_python.cpp \ - kumu_python.h \ - asdcp_python.cpp \ - asdcp_python.h \ - asdcp_python_descriptor.cpp \ - asdcp_python_misc.cpp \ - asdcp_python_writerinfo.h \ - asdcp_wrappers.h \ - asdcp_python_mxf.cpp \ - asdcp_python_mxf_text.cpp \ - asdcp_python_mxf_metadata.cpp - -####nodist_libnapali_la_SOURCES = \ -#### napali_python.cpp napali_python.h - -libpyasdcp_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -libpyasdcp_la_LDFLAGS = @PYTHON_LSPEC@ -release @VERSION@ -libpyasdcp_la_LIBADD = libkumu.la libasdcp.la - -####libnapali_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -####libnapali_la_LDFLAGS = @PYTHON_LSPEC@ -release @VERSION@ -####libnapali_la_LIBADD = libkumu.la libasdcp.la - -pyexecdir = @PYTHON_EXECDIR@ -pyexec_includedir = $(PYTHON_PREFIX)/include/python$(PYTHON_SHORTVERSION) -nodist_pyexec_include_HEADERS = kumu_python.h asdcp_python.h asdcp_wrappers.h -pyexec_LTLIBRARIES = kumu.la asdcp.la -#### napali_python.h napali.la - -nodist_kumu_la_SOURCES = pykumu.cpp kumu_python.h -kumu_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -kumu_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module -kumu_la_LIBADD = libpyasdcp.la - -nodist_asdcp_la_SOURCES = pyasdcp.cpp kumu_python.h asdcp_python.h asdcp_wrappers.h -asdcp_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -asdcp_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module -asdcp_la_LIBADD = libpyasdcp.la - -####nodist_napali_la_SOURCES = pynapali.cpp kumu_python.h napali_python.h -####napali_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -####napali_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module -####napali_la_LIBADD = libnapali.la libpyasdcp.la -endif - -# list of programs to be built and installed -bin_PROGRAMS = \ - asdcp-wrap asdcp-unwrap asdcp-util asdcp-info asdcp-test \ - j2c-test blackwave klvwalk wavesplit \ - kmfilegen kmrandgen kmuuidgen - -# sources and linkage for CLI utilities -asdcp_test_SOURCES = asdcp-test.cpp -asdcp_test_LDADD = libasdcp.la - -asdcp_wrap_SOURCES = asdcp-wrap.cpp -asdcp_wrap_LDADD = libasdcp.la - -asdcp_unwrap_SOURCES = asdcp-unwrap.cpp -asdcp_unwrap_LDADD = libasdcp.la - -asdcp_util_SOURCES = asdcp-util.cpp -asdcp_util_LDADD = libasdcp.la - -asdcp_info_SOURCES = asdcp-info.cpp -asdcp_info_LDADD = libasdcp.la - -kmfilegen_SOURCES = kmfilegen.cpp -kmfilegen_LDADD = libkumu.la - -kmrandgen_SOURCES = kmrandgen.cpp -kmrandgen_LDADD = libkumu.la - -kmuuidgen_SOURCES = kmuuidgen.cpp -kmuuidgen_LDADD = libkumu.la - -blackwave_SOURCES = blackwave.cpp -blackwave_LDADD = libasdcp.la - -klvwalk_SOURCES = klvwalk.cpp -klvwalk_LDADD = libasdcp.la - -wavesplit_SOURCES = wavesplit.cpp -wavesplit_LDADD = libasdcp.la - -j2c_test_SOURCES = j2c-test.cpp -j2c_test_LDADD = libasdcp.la - -# list of programs that need to be compiled for use in test suite -check_PROGRAMS = asdcp-mem-test path-test \ - fips-186-rng-test asdcp-version -if DEV_HEADERS -check_PROGRAMS += tt-xform -endif - -# sources for a test program -# list of libraries to link against for a test program -asdcp_mem_test_SOURCES = asdcp-mem-test.cpp -asdcp_mem_test_LDADD = libasdcp.la - -path_test_SOURCES = path-test.cpp -path_test_LDADD = libkumu.la - -fips_186_rng_test_SOURCES = fips-186-rng-test.cpp -fips_186_rng_test_LDADD = libasdcp.la - -asdcp_version_SOURCES = asdcp-version.cpp -asdcp_version_LDADD = libkumu.la - -if DEV_HEADERS -nodist_tt_xform_SOURCES = tt-xform.cpp -tt_xform_LDADD = libasdcp.la -endif - - -# list of test scripts to execute during "make check" -TESTS = rng-tst.sh gen-tst.sh \ - jp2k-tst.sh jp2k-crypt-tst.sh jp2k-stereo-tst.sh jp2k-stereo-crypt-tst.sh \ - wav-tst.sh wav-crypt-tst.sh mpeg-tst.sh mpeg-crypt-tst.sh - -# environment variables to pass to above tests -TESTS_ENVIRONMENT = BUILD_DIR="." TEST_FILES=../tests TEST_FILE_PREFIX=DCPd1-M1 \ - CRYPT_KEY=70e0de21c98fbd455ad5b8042edb41a6 CRYPT_KEY_B=aa2d05475d568cd52cb3415e65cba76f \ - JP2K_PREFIX=MM_2k_XYZ_ - -# files to include in the distribution that automake doesn't automatically include -EXTRA_DIST = fips-186-test-harness.pl $(TESTS) -if !FREEDIST -if DEV_HEADERS -EXTRA_DIST += $(nodist_libasdcp_la_SOURCES) $(nodist_tt_xform_SOURCES) -#### $(nodist_napali_la_SOURCES) $(nodist_libnapali_la_SOURCES) -endif -if PYTHON_USE -EXTRA_DIST += $(nodist_pyexec_include_HEADERS) $(nodist_libpyasdcp_la_SOURCES) $(nodist_kumu_la_SOURCES) $(nodist_asdcp_la_SOURCES) -#### $(nodist_napali_la_SOURCES) $(nodist_libnapali_la_SOURCES) -endif -endif - -# source files that are themselves built -BUILT_SOURCES = Metadata.h Metadata.cpp MDD.h MDD.cpp -# files to be removed with "make maintainer-clean" -MAINTAINERCLEANFILES = Metadata.h Metadata.cpp MDD.h MDD.cpp - -# build commands for built sources -# dependencies: $(srcdir)/ullist.pl $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml -MDD.h: - $(srcdir)/ullist.pl $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml > MDD.h -# dependencies: $(srcdir)/ullist.pl $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml -MDD.cpp: - $(srcdir)/ullist.pl -s $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml > MDD.cpp -# dependencies: $(srcdir)/Metadata_h.tt2 $(srcdir)/mxfgen.pl $(srcdir)/MXF_def.pl -Metadata.h: - $(srcdir)/mxfgen.pl $(srcdir)/MXF_def.pl $(srcdir)/Metadata_h.tt2 > Metadata.h -# dependencies: Metadata.h $(srcdir)/Metadata_cpp.tt2 -Metadata.cpp: - $(srcdir)/mxfgen.pl $(srcdir)/MXF_def.pl $(srcdir)/Metadata_cpp.tt2 > Metadata.cpp - -# -# -# diff --git a/asdcplib/src/Makefile.in b/asdcplib/src/Makefile.in deleted file mode 100644 index f086f49..0000000 --- a/asdcplib/src/Makefile.in +++ /dev/null @@ -1,1516 +0,0 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ - -# -# $Id: Makefile.am,v 1.53 2012/02/05 21:30:18 jhurst Exp $ -# Copyright (c) 2007-2011 John Hurst. All rights reserved. -# -# 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. - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@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@ -@OPENBSD_HOST_TRUE@am__append_1 = -I/var/local/include -I/usr/local/include -@OPENBSD_HOST_TRUE@am__append_2 = -L./.libs -L/var/local/lib -L/usr/local/lib -@ENABLE_RANDOM_UUID_TRUE@am__append_3 = -DCONFIG_RANDOM_UUID -@DEV_HEADERS_TRUE@am__append_4 = S12MTimecode.h MDD.h Metadata.h KLV.h MXFTypes.h MXF.h Wav.h \ -@DEV_HEADERS_TRUE@ PCMParserList.h - -@DEV_HEADERS_TRUE@am__append_5 = TimedText_Transform.h TimedText_Transform.cpp - -# Python extension -@PYTHON_USE_TRUE@am__append_6 = libpyasdcp.la -bin_PROGRAMS = asdcp-wrap$(EXEEXT) asdcp-unwrap$(EXEEXT) \ - asdcp-util$(EXEEXT) asdcp-info$(EXEEXT) asdcp-test$(EXEEXT) \ - j2c-test$(EXEEXT) blackwave$(EXEEXT) klvwalk$(EXEEXT) \ - wavesplit$(EXEEXT) kmfilegen$(EXEEXT) kmrandgen$(EXEEXT) \ - kmuuidgen$(EXEEXT) -check_PROGRAMS = asdcp-mem-test$(EXEEXT) path-test$(EXEEXT) \ - fips-186-rng-test$(EXEEXT) asdcp-version$(EXEEXT) \ - $(am__EXEEXT_1) -@DEV_HEADERS_TRUE@am__append_7 = tt-xform -@DEV_HEADERS_TRUE@@FREEDIST_FALSE@am__append_8 = $(nodist_libasdcp_la_SOURCES) $(nodist_tt_xform_SOURCES) -#### $(nodist_napali_la_SOURCES) $(nodist_libnapali_la_SOURCES) -@FREEDIST_FALSE@@PYTHON_USE_TRUE@am__append_9 = $(nodist_pyexec_include_HEADERS) $(nodist_libpyasdcp_la_SOURCES) $(nodist_kumu_la_SOURCES) $(nodist_asdcp_la_SOURCES) -subdir = src -DIST_COMMON = $(am__include_HEADERS_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_expat.m4 \ - $(top_srcdir)/m4/ax_lib_openssl.m4 \ - $(top_srcdir)/m4/ax_lib_xerces.m4 \ - $(top_srcdir)/m4/az_python.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyexecdir)" \ - "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)" \ - "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pyexec_includedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) $(pyexec_LTLIBRARIES) -@PYTHON_USE_TRUE@asdcp_la_DEPENDENCIES = libpyasdcp.la -@PYTHON_USE_TRUE@nodist_asdcp_la_OBJECTS = asdcp_la-pyasdcp.lo -asdcp_la_OBJECTS = $(nodist_asdcp_la_OBJECTS) -asdcp_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(asdcp_la_LDFLAGS) $(LDFLAGS) -o $@ -@PYTHON_USE_TRUE@am_asdcp_la_rpath = -rpath $(pyexecdir) -@PYTHON_USE_TRUE@kumu_la_DEPENDENCIES = libpyasdcp.la -@PYTHON_USE_TRUE@nodist_kumu_la_OBJECTS = kumu_la-pykumu.lo -kumu_la_OBJECTS = $(nodist_kumu_la_OBJECTS) -kumu_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(kumu_la_LDFLAGS) $(LDFLAGS) -o $@ -@PYTHON_USE_TRUE@am_kumu_la_rpath = -rpath $(pyexecdir) -libasdcp_la_DEPENDENCIES = libkumu.la -am_libasdcp_la_OBJECTS = libasdcp_la-MPEG2_Parser.lo \ - libasdcp_la-MPEG.lo libasdcp_la-JP2K_Codestream_Parser.lo \ - libasdcp_la-JP2K_Sequence_Parser.lo libasdcp_la-JP2K.lo \ - libasdcp_la-PCM_Parser.lo libasdcp_la-Wav.lo \ - libasdcp_la-TimedText_Parser.lo libasdcp_la-KLV.lo \ - libasdcp_la-Dict.lo libasdcp_la-MXFTypes.lo libasdcp_la-MXF.lo \ - libasdcp_la-Index.lo libasdcp_la-Metadata.lo \ - libasdcp_la-AS_DCP.lo libasdcp_la-AS_DCP_MXF.lo \ - libasdcp_la-AS_DCP_AES.lo libasdcp_la-h__Reader.lo \ - libasdcp_la-h__Writer.lo libasdcp_la-AS_DCP_MPEG2.lo \ - libasdcp_la-AS_DCP_JP2K.lo libasdcp_la-AS_DCP_PCM.lo \ - libasdcp_la-AS_DCP_TimedText.lo libasdcp_la-PCMParserList.lo \ - libasdcp_la-MDD.lo -@DEV_HEADERS_TRUE@am__objects_1 = libasdcp_la-TimedText_Transform.lo -nodist_libasdcp_la_OBJECTS = $(am__objects_1) -libasdcp_la_OBJECTS = $(am_libasdcp_la_OBJECTS) \ - $(nodist_libasdcp_la_OBJECTS) -libasdcp_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libasdcp_la_LDFLAGS) $(LDFLAGS) -o $@ -libkumu_la_LIBADD = -am_libkumu_la_OBJECTS = KM_fileio.lo KM_log.lo KM_prng.lo KM_util.lo \ - KM_xml.lo KM_tai.lo -libkumu_la_OBJECTS = $(am_libkumu_la_OBJECTS) -libkumu_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libkumu_la_LDFLAGS) $(LDFLAGS) -o $@ -@PYTHON_USE_TRUE@libpyasdcp_la_DEPENDENCIES = libkumu.la libasdcp.la -@PYTHON_USE_TRUE@nodist_libpyasdcp_la_OBJECTS = \ -@PYTHON_USE_TRUE@ libpyasdcp_la-kumu_python.lo \ -@PYTHON_USE_TRUE@ libpyasdcp_la-asdcp_python.lo \ -@PYTHON_USE_TRUE@ libpyasdcp_la-asdcp_python_descriptor.lo \ -@PYTHON_USE_TRUE@ libpyasdcp_la-asdcp_python_misc.lo \ -@PYTHON_USE_TRUE@ libpyasdcp_la-asdcp_python_mxf.lo \ -@PYTHON_USE_TRUE@ libpyasdcp_la-asdcp_python_mxf_text.lo \ -@PYTHON_USE_TRUE@ libpyasdcp_la-asdcp_python_mxf_metadata.lo -libpyasdcp_la_OBJECTS = $(nodist_libpyasdcp_la_OBJECTS) -libpyasdcp_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libpyasdcp_la_LDFLAGS) $(LDFLAGS) -o $@ -@PYTHON_USE_TRUE@am_libpyasdcp_la_rpath = -rpath $(libdir) -@DEV_HEADERS_TRUE@am__EXEEXT_1 = tt-xform$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) -am_asdcp_info_OBJECTS = asdcp-info.$(OBJEXT) -asdcp_info_OBJECTS = $(am_asdcp_info_OBJECTS) -asdcp_info_DEPENDENCIES = libasdcp.la -am_asdcp_mem_test_OBJECTS = asdcp-mem-test.$(OBJEXT) -asdcp_mem_test_OBJECTS = $(am_asdcp_mem_test_OBJECTS) -asdcp_mem_test_DEPENDENCIES = libasdcp.la -am_asdcp_test_OBJECTS = asdcp-test.$(OBJEXT) -asdcp_test_OBJECTS = $(am_asdcp_test_OBJECTS) -asdcp_test_DEPENDENCIES = libasdcp.la -am_asdcp_unwrap_OBJECTS = asdcp-unwrap.$(OBJEXT) -asdcp_unwrap_OBJECTS = $(am_asdcp_unwrap_OBJECTS) -asdcp_unwrap_DEPENDENCIES = libasdcp.la -am_asdcp_util_OBJECTS = asdcp-util.$(OBJEXT) -asdcp_util_OBJECTS = $(am_asdcp_util_OBJECTS) -asdcp_util_DEPENDENCIES = libasdcp.la -am_asdcp_version_OBJECTS = asdcp-version.$(OBJEXT) -asdcp_version_OBJECTS = $(am_asdcp_version_OBJECTS) -asdcp_version_DEPENDENCIES = libkumu.la -am_asdcp_wrap_OBJECTS = asdcp-wrap.$(OBJEXT) -asdcp_wrap_OBJECTS = $(am_asdcp_wrap_OBJECTS) -asdcp_wrap_DEPENDENCIES = libasdcp.la -am_blackwave_OBJECTS = blackwave.$(OBJEXT) -blackwave_OBJECTS = $(am_blackwave_OBJECTS) -blackwave_DEPENDENCIES = libasdcp.la -am_fips_186_rng_test_OBJECTS = fips-186-rng-test.$(OBJEXT) -fips_186_rng_test_OBJECTS = $(am_fips_186_rng_test_OBJECTS) -fips_186_rng_test_DEPENDENCIES = libasdcp.la -am_j2c_test_OBJECTS = j2c-test.$(OBJEXT) -j2c_test_OBJECTS = $(am_j2c_test_OBJECTS) -j2c_test_DEPENDENCIES = libasdcp.la -am_klvwalk_OBJECTS = klvwalk.$(OBJEXT) -klvwalk_OBJECTS = $(am_klvwalk_OBJECTS) -klvwalk_DEPENDENCIES = libasdcp.la -am_kmfilegen_OBJECTS = kmfilegen.$(OBJEXT) -kmfilegen_OBJECTS = $(am_kmfilegen_OBJECTS) -kmfilegen_DEPENDENCIES = libkumu.la -am_kmrandgen_OBJECTS = kmrandgen.$(OBJEXT) -kmrandgen_OBJECTS = $(am_kmrandgen_OBJECTS) -kmrandgen_DEPENDENCIES = libkumu.la -am_kmuuidgen_OBJECTS = kmuuidgen.$(OBJEXT) -kmuuidgen_OBJECTS = $(am_kmuuidgen_OBJECTS) -kmuuidgen_DEPENDENCIES = libkumu.la -am_path_test_OBJECTS = path-test.$(OBJEXT) -path_test_OBJECTS = $(am_path_test_OBJECTS) -path_test_DEPENDENCIES = libkumu.la -@DEV_HEADERS_TRUE@nodist_tt_xform_OBJECTS = tt-xform.$(OBJEXT) -tt_xform_OBJECTS = $(nodist_tt_xform_OBJECTS) -@DEV_HEADERS_TRUE@tt_xform_DEPENDENCIES = libasdcp.la -am_wavesplit_OBJECTS = wavesplit.$(OBJEXT) -wavesplit_OBJECTS = $(am_wavesplit_OBJECTS) -wavesplit_DEPENDENCIES = libasdcp.la -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -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 $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(nodist_asdcp_la_SOURCES) $(nodist_kumu_la_SOURCES) \ - $(libasdcp_la_SOURCES) $(nodist_libasdcp_la_SOURCES) \ - $(libkumu_la_SOURCES) $(nodist_libpyasdcp_la_SOURCES) \ - $(asdcp_info_SOURCES) $(asdcp_mem_test_SOURCES) \ - $(asdcp_test_SOURCES) $(asdcp_unwrap_SOURCES) \ - $(asdcp_util_SOURCES) $(asdcp_version_SOURCES) \ - $(asdcp_wrap_SOURCES) $(blackwave_SOURCES) \ - $(fips_186_rng_test_SOURCES) $(j2c_test_SOURCES) \ - $(klvwalk_SOURCES) $(kmfilegen_SOURCES) $(kmrandgen_SOURCES) \ - $(kmuuidgen_SOURCES) $(path_test_SOURCES) \ - $(nodist_tt_xform_SOURCES) $(wavesplit_SOURCES) -DIST_SOURCES = $(libasdcp_la_SOURCES) $(libkumu_la_SOURCES) \ - $(asdcp_info_SOURCES) $(asdcp_mem_test_SOURCES) \ - $(asdcp_test_SOURCES) $(asdcp_unwrap_SOURCES) \ - $(asdcp_util_SOURCES) $(asdcp_version_SOURCES) \ - $(asdcp_wrap_SOURCES) $(blackwave_SOURCES) \ - $(fips_186_rng_test_SOURCES) $(j2c_test_SOURCES) \ - $(klvwalk_SOURCES) $(kmfilegen_SOURCES) $(kmrandgen_SOURCES) \ - $(kmuuidgen_SOURCES) $(path_test_SOURCES) $(wavesplit_SOURCES) -am__include_HEADERS_DIST = KM_error.h KM_fileio.h KM_log.h KM_memio.h \ - KM_mutex.h KM_platform.h KM_prng.h KM_util.h KM_tai.h KM_xml.h \ - AS_DCP.h S12MTimecode.h MDD.h Metadata.h KLV.h MXFTypes.h \ - MXF.h Wav.h PCMParserList.h -HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) \ - $(nodist_pyexec_include_HEADERS) -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -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@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -EXPAT_CFLAGS = @EXPAT_CFLAGS@ -EXPAT_LDFLAGS = @EXPAT_LDFLAGS@ -EXPAT_VERSION = @EXPAT_VERSION@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPENSSL_CPPFLAGS = @OPENSSL_CPPFLAGS@ -OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@ -OPENSSL_LIBS = @OPENSSL_LIBS@ -OPENSSL_VERSION = @OPENSSL_VERSION@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PYTHON = @PYTHON@ -PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ -PYTHON_CSPEC = @PYTHON_CSPEC@ -PYTHON_EXECDIR = @PYTHON_EXECDIR@ -PYTHON_EXECPREFIX = @PYTHON_EXECPREFIX@ -PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ -PYTHON_LSPEC = @PYTHON_LSPEC@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_SHORTVERSION = @PYTHON_SHORTVERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -XERCES_CPPFLAGS = @XERCES_CPPFLAGS@ -XERCES_LDFLAGS = @XERCES_LDFLAGS@ -XERCES_LIBS = @XERCES_LIBS@ -XERCES_VERSION = @XERCES_VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -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_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ - -# Allow for configure's changes to this makefile -AM_CPPFLAGS = $(am__append_1) $(am__append_3) -AM_LDFLAGS = $(am__append_2) - -# list of all the header files that should be installed -include_HEADERS = KM_error.h KM_fileio.h KM_log.h KM_memio.h \ - KM_mutex.h KM_platform.h KM_prng.h KM_util.h KM_tai.h KM_xml.h \ - AS_DCP.h $(am__append_4) -@DEV_HEADERS_TRUE@nodist_include_HEADERS = TimedText_Transform.h - -# list of the libraries to build and install -lib_LTLIBRARIES = libkumu.la libasdcp.la $(am__append_6) -# sources for a library -libkumu_la_SOURCES = KM_error.h KM_fileio.cpp KM_fileio.h KM_log.cpp KM_log.h \ - KM_memio.h KM_mutex.h KM_platform.h KM_prng.cpp KM_prng.h KM_util.cpp \ - KM_util.h KM_xml.cpp KM_xml.h KM_tai.h KM_tai.cpp - - -# linker flags (*not* including libraries to link against) for a library -libkumu_la_LDFLAGS = -release @VERSION@ - -# sources for a library that don't get added to a distribution -nodist_libasdcp_la_SOURCES = Metadata_h.tt2 Metadata_cpp.tt2 mxfgen.pl \ - MXF_def.pl ullist.pl ULList.xml dict.xml DMS_Crypto.xml \ - $(am__append_5) -libasdcp_la_SOURCES = MPEG2_Parser.cpp MPEG.cpp JP2K_Codestream_Parser.cpp \ - JP2K_Sequence_Parser.cpp JP2K.cpp PCM_Parser.cpp Wav.cpp \ - TimedText_Parser.cpp KLV.cpp Dict.cpp MXFTypes.cpp MXF.cpp \ - Index.cpp Metadata.cpp AS_DCP.cpp AS_DCP_MXF.cpp AS_DCP_AES.cpp \ - h__Reader.cpp h__Writer.cpp AS_DCP_MPEG2.cpp AS_DCP_JP2K.cpp \ - AS_DCP_PCM.cpp AS_DCP_TimedText.cpp PCMParserList.cpp \ - Wav.h WavFileWriter.h MXF.h Metadata.h \ - JP2K.h AS_DCP.h AS_DCP_internal.h KLV.h MPEG.h MXFTypes.h MDD.h \ - PCMParserList.h S12MTimecode.h MDD.cpp - -libasdcp_la_LDFLAGS = -release @VERSION@ - -# additional libraries to link against for a library -libasdcp_la_LIBADD = libkumu.la -libasdcp_la_CPPFLAGS = -DASDCP_PLATFORM=\"@host@\" -#### libnapali.la -@PYTHON_USE_TRUE@nodist_libpyasdcp_la_SOURCES = \ -@PYTHON_USE_TRUE@ kumu_python.cpp \ -@PYTHON_USE_TRUE@ kumu_python.h \ -@PYTHON_USE_TRUE@ asdcp_python.cpp \ -@PYTHON_USE_TRUE@ asdcp_python.h \ -@PYTHON_USE_TRUE@ asdcp_python_descriptor.cpp \ -@PYTHON_USE_TRUE@ asdcp_python_misc.cpp \ -@PYTHON_USE_TRUE@ asdcp_python_writerinfo.h \ -@PYTHON_USE_TRUE@ asdcp_wrappers.h \ -@PYTHON_USE_TRUE@ asdcp_python_mxf.cpp \ -@PYTHON_USE_TRUE@ asdcp_python_mxf_text.cpp \ -@PYTHON_USE_TRUE@ asdcp_python_mxf_metadata.cpp - - -####nodist_libnapali_la_SOURCES = \ -#### napali_python.cpp napali_python.h -@PYTHON_USE_TRUE@libpyasdcp_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -@PYTHON_USE_TRUE@libpyasdcp_la_LDFLAGS = @PYTHON_LSPEC@ -release @VERSION@ -@PYTHON_USE_TRUE@libpyasdcp_la_LIBADD = libkumu.la libasdcp.la - -####libnapali_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -####libnapali_la_LDFLAGS = @PYTHON_LSPEC@ -release @VERSION@ -####libnapali_la_LIBADD = libkumu.la libasdcp.la -@PYTHON_USE_TRUE@pyexecdir = @PYTHON_EXECDIR@ -@PYTHON_USE_TRUE@pyexec_includedir = $(PYTHON_PREFIX)/include/python$(PYTHON_SHORTVERSION) -@PYTHON_USE_TRUE@nodist_pyexec_include_HEADERS = kumu_python.h asdcp_python.h asdcp_wrappers.h -@PYTHON_USE_TRUE@pyexec_LTLIBRARIES = kumu.la asdcp.la -#### napali_python.h napali.la -@PYTHON_USE_TRUE@nodist_kumu_la_SOURCES = pykumu.cpp kumu_python.h -@PYTHON_USE_TRUE@kumu_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -@PYTHON_USE_TRUE@kumu_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module -@PYTHON_USE_TRUE@kumu_la_LIBADD = libpyasdcp.la -@PYTHON_USE_TRUE@nodist_asdcp_la_SOURCES = pyasdcp.cpp kumu_python.h asdcp_python.h asdcp_wrappers.h -@PYTHON_USE_TRUE@asdcp_la_CPPFLAGS = @PYTHON_CPPFLAGS@ -@PYTHON_USE_TRUE@asdcp_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module -@PYTHON_USE_TRUE@asdcp_la_LIBADD = libpyasdcp.la - -# sources and linkage for CLI utilities -asdcp_test_SOURCES = asdcp-test.cpp -asdcp_test_LDADD = libasdcp.la -asdcp_wrap_SOURCES = asdcp-wrap.cpp -asdcp_wrap_LDADD = libasdcp.la -asdcp_unwrap_SOURCES = asdcp-unwrap.cpp -asdcp_unwrap_LDADD = libasdcp.la -asdcp_util_SOURCES = asdcp-util.cpp -asdcp_util_LDADD = libasdcp.la -asdcp_info_SOURCES = asdcp-info.cpp -asdcp_info_LDADD = libasdcp.la -kmfilegen_SOURCES = kmfilegen.cpp -kmfilegen_LDADD = libkumu.la -kmrandgen_SOURCES = kmrandgen.cpp -kmrandgen_LDADD = libkumu.la -kmuuidgen_SOURCES = kmuuidgen.cpp -kmuuidgen_LDADD = libkumu.la -blackwave_SOURCES = blackwave.cpp -blackwave_LDADD = libasdcp.la -klvwalk_SOURCES = klvwalk.cpp -klvwalk_LDADD = libasdcp.la -wavesplit_SOURCES = wavesplit.cpp -wavesplit_LDADD = libasdcp.la -j2c_test_SOURCES = j2c-test.cpp -j2c_test_LDADD = libasdcp.la - -# sources for a test program -# list of libraries to link against for a test program -asdcp_mem_test_SOURCES = asdcp-mem-test.cpp -asdcp_mem_test_LDADD = libasdcp.la -path_test_SOURCES = path-test.cpp -path_test_LDADD = libkumu.la -fips_186_rng_test_SOURCES = fips-186-rng-test.cpp -fips_186_rng_test_LDADD = libasdcp.la -asdcp_version_SOURCES = asdcp-version.cpp -asdcp_version_LDADD = libkumu.la -@DEV_HEADERS_TRUE@nodist_tt_xform_SOURCES = tt-xform.cpp -@DEV_HEADERS_TRUE@tt_xform_LDADD = libasdcp.la - -# list of test scripts to execute during "make check" -TESTS = rng-tst.sh gen-tst.sh \ - jp2k-tst.sh jp2k-crypt-tst.sh jp2k-stereo-tst.sh jp2k-stereo-crypt-tst.sh \ - wav-tst.sh wav-crypt-tst.sh mpeg-tst.sh mpeg-crypt-tst.sh - - -# environment variables to pass to above tests -TESTS_ENVIRONMENT = BUILD_DIR="." TEST_FILES=../tests TEST_FILE_PREFIX=DCPd1-M1 \ - CRYPT_KEY=70e0de21c98fbd455ad5b8042edb41a6 CRYPT_KEY_B=aa2d05475d568cd52cb3415e65cba76f \ - JP2K_PREFIX=MM_2k_XYZ_ - - -# files to include in the distribution that automake doesn't automatically include -EXTRA_DIST = fips-186-test-harness.pl $(TESTS) $(am__append_8) \ - $(am__append_9) -#### $(nodist_napali_la_SOURCES) $(nodist_libnapali_la_SOURCES) - -# source files that are themselves built -BUILT_SOURCES = Metadata.h Metadata.cpp MDD.h MDD.cpp -# files to be removed with "make maintainer-clean" -MAINTAINERCLEANFILES = Metadata.h Metadata.cpp MDD.h MDD.cpp -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) 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 ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ - $(am__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 -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - 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 -install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" - @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \ - } - -uninstall-pyexecLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyexecdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyexecdir)/$$f"; \ - done - -clean-pyexecLTLIBRARIES: - -test -z "$(pyexec_LTLIBRARIES)" || rm -f $(pyexec_LTLIBRARIES) - @list='$(pyexec_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 -asdcp.la: $(asdcp_la_OBJECTS) $(asdcp_la_DEPENDENCIES) $(EXTRA_asdcp_la_DEPENDENCIES) - $(asdcp_la_LINK) $(am_asdcp_la_rpath) $(asdcp_la_OBJECTS) $(asdcp_la_LIBADD) $(LIBS) -kumu.la: $(kumu_la_OBJECTS) $(kumu_la_DEPENDENCIES) $(EXTRA_kumu_la_DEPENDENCIES) - $(kumu_la_LINK) $(am_kumu_la_rpath) $(kumu_la_OBJECTS) $(kumu_la_LIBADD) $(LIBS) -libasdcp.la: $(libasdcp_la_OBJECTS) $(libasdcp_la_DEPENDENCIES) $(EXTRA_libasdcp_la_DEPENDENCIES) - $(libasdcp_la_LINK) -rpath $(libdir) $(libasdcp_la_OBJECTS) $(libasdcp_la_LIBADD) $(LIBS) -libkumu.la: $(libkumu_la_OBJECTS) $(libkumu_la_DEPENDENCIES) $(EXTRA_libkumu_la_DEPENDENCIES) - $(libkumu_la_LINK) -rpath $(libdir) $(libkumu_la_OBJECTS) $(libkumu_la_LIBADD) $(LIBS) -libpyasdcp.la: $(libpyasdcp_la_OBJECTS) $(libpyasdcp_la_DEPENDENCIES) $(EXTRA_libpyasdcp_la_DEPENDENCIES) - $(libpyasdcp_la_LINK) $(am_libpyasdcp_la_rpath) $(libpyasdcp_la_OBJECTS) $(libpyasdcp_la_LIBADD) $(LIBS) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -asdcp-info$(EXEEXT): $(asdcp_info_OBJECTS) $(asdcp_info_DEPENDENCIES) $(EXTRA_asdcp_info_DEPENDENCIES) - @rm -f asdcp-info$(EXEEXT) - $(CXXLINK) $(asdcp_info_OBJECTS) $(asdcp_info_LDADD) $(LIBS) -asdcp-mem-test$(EXEEXT): $(asdcp_mem_test_OBJECTS) $(asdcp_mem_test_DEPENDENCIES) $(EXTRA_asdcp_mem_test_DEPENDENCIES) - @rm -f asdcp-mem-test$(EXEEXT) - $(CXXLINK) $(asdcp_mem_test_OBJECTS) $(asdcp_mem_test_LDADD) $(LIBS) -asdcp-test$(EXEEXT): $(asdcp_test_OBJECTS) $(asdcp_test_DEPENDENCIES) $(EXTRA_asdcp_test_DEPENDENCIES) - @rm -f asdcp-test$(EXEEXT) - $(CXXLINK) $(asdcp_test_OBJECTS) $(asdcp_test_LDADD) $(LIBS) -asdcp-unwrap$(EXEEXT): $(asdcp_unwrap_OBJECTS) $(asdcp_unwrap_DEPENDENCIES) $(EXTRA_asdcp_unwrap_DEPENDENCIES) - @rm -f asdcp-unwrap$(EXEEXT) - $(CXXLINK) $(asdcp_unwrap_OBJECTS) $(asdcp_unwrap_LDADD) $(LIBS) -asdcp-util$(EXEEXT): $(asdcp_util_OBJECTS) $(asdcp_util_DEPENDENCIES) $(EXTRA_asdcp_util_DEPENDENCIES) - @rm -f asdcp-util$(EXEEXT) - $(CXXLINK) $(asdcp_util_OBJECTS) $(asdcp_util_LDADD) $(LIBS) -asdcp-version$(EXEEXT): $(asdcp_version_OBJECTS) $(asdcp_version_DEPENDENCIES) $(EXTRA_asdcp_version_DEPENDENCIES) - @rm -f asdcp-version$(EXEEXT) - $(CXXLINK) $(asdcp_version_OBJECTS) $(asdcp_version_LDADD) $(LIBS) -asdcp-wrap$(EXEEXT): $(asdcp_wrap_OBJECTS) $(asdcp_wrap_DEPENDENCIES) $(EXTRA_asdcp_wrap_DEPENDENCIES) - @rm -f asdcp-wrap$(EXEEXT) - $(CXXLINK) $(asdcp_wrap_OBJECTS) $(asdcp_wrap_LDADD) $(LIBS) -blackwave$(EXEEXT): $(blackwave_OBJECTS) $(blackwave_DEPENDENCIES) $(EXTRA_blackwave_DEPENDENCIES) - @rm -f blackwave$(EXEEXT) - $(CXXLINK) $(blackwave_OBJECTS) $(blackwave_LDADD) $(LIBS) -fips-186-rng-test$(EXEEXT): $(fips_186_rng_test_OBJECTS) $(fips_186_rng_test_DEPENDENCIES) $(EXTRA_fips_186_rng_test_DEPENDENCIES) - @rm -f fips-186-rng-test$(EXEEXT) - $(CXXLINK) $(fips_186_rng_test_OBJECTS) $(fips_186_rng_test_LDADD) $(LIBS) -j2c-test$(EXEEXT): $(j2c_test_OBJECTS) $(j2c_test_DEPENDENCIES) $(EXTRA_j2c_test_DEPENDENCIES) - @rm -f j2c-test$(EXEEXT) - $(CXXLINK) $(j2c_test_OBJECTS) $(j2c_test_LDADD) $(LIBS) -klvwalk$(EXEEXT): $(klvwalk_OBJECTS) $(klvwalk_DEPENDENCIES) $(EXTRA_klvwalk_DEPENDENCIES) - @rm -f klvwalk$(EXEEXT) - $(CXXLINK) $(klvwalk_OBJECTS) $(klvwalk_LDADD) $(LIBS) -kmfilegen$(EXEEXT): $(kmfilegen_OBJECTS) $(kmfilegen_DEPENDENCIES) $(EXTRA_kmfilegen_DEPENDENCIES) - @rm -f kmfilegen$(EXEEXT) - $(CXXLINK) $(kmfilegen_OBJECTS) $(kmfilegen_LDADD) $(LIBS) -kmrandgen$(EXEEXT): $(kmrandgen_OBJECTS) $(kmrandgen_DEPENDENCIES) $(EXTRA_kmrandgen_DEPENDENCIES) - @rm -f kmrandgen$(EXEEXT) - $(CXXLINK) $(kmrandgen_OBJECTS) $(kmrandgen_LDADD) $(LIBS) -kmuuidgen$(EXEEXT): $(kmuuidgen_OBJECTS) $(kmuuidgen_DEPENDENCIES) $(EXTRA_kmuuidgen_DEPENDENCIES) - @rm -f kmuuidgen$(EXEEXT) - $(CXXLINK) $(kmuuidgen_OBJECTS) $(kmuuidgen_LDADD) $(LIBS) -path-test$(EXEEXT): $(path_test_OBJECTS) $(path_test_DEPENDENCIES) $(EXTRA_path_test_DEPENDENCIES) - @rm -f path-test$(EXEEXT) - $(CXXLINK) $(path_test_OBJECTS) $(path_test_LDADD) $(LIBS) -tt-xform$(EXEEXT): $(tt_xform_OBJECTS) $(tt_xform_DEPENDENCIES) $(EXTRA_tt_xform_DEPENDENCIES) - @rm -f tt-xform$(EXEEXT) - $(CXXLINK) $(tt_xform_OBJECTS) $(tt_xform_LDADD) $(LIBS) -wavesplit$(EXEEXT): $(wavesplit_OBJECTS) $(wavesplit_DEPENDENCIES) $(EXTRA_wavesplit_DEPENDENCIES) - @rm -f wavesplit$(EXEEXT) - $(CXXLINK) $(wavesplit_OBJECTS) $(wavesplit_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KM_fileio.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KM_log.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KM_prng.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KM_tai.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KM_util.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KM_xml.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-info.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-mem-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-unwrap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-version.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp-wrap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asdcp_la-pyasdcp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blackwave.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fips-186-rng-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/j2c-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/klvwalk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kmfilegen.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kmrandgen.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kmuuidgen.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kumu_la-pykumu.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP_AES.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP_JP2K.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP_MPEG2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP_MXF.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP_PCM.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-AS_DCP_TimedText.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-Dict.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-Index.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-JP2K.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-JP2K_Codestream_Parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-JP2K_Sequence_Parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-KLV.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-MDD.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-MPEG.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-MPEG2_Parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-MXF.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-MXFTypes.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-Metadata.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-PCMParserList.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-PCM_Parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-TimedText_Parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-TimedText_Transform.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-Wav.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-h__Reader.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libasdcp_la-h__Writer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-asdcp_python.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-asdcp_python_descriptor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-asdcp_python_misc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-asdcp_python_mxf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_metadata.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_text.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyasdcp_la-kumu_python.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tt-xform.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavesplit.Po@am__quote@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< - -asdcp_la-pyasdcp.lo: pyasdcp.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(asdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT asdcp_la-pyasdcp.lo -MD -MP -MF $(DEPDIR)/asdcp_la-pyasdcp.Tpo -c -o asdcp_la-pyasdcp.lo `test -f 'pyasdcp.cpp' || echo '$(srcdir)/'`pyasdcp.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/asdcp_la-pyasdcp.Tpo $(DEPDIR)/asdcp_la-pyasdcp.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pyasdcp.cpp' object='asdcp_la-pyasdcp.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) $(asdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o asdcp_la-pyasdcp.lo `test -f 'pyasdcp.cpp' || echo '$(srcdir)/'`pyasdcp.cpp - -kumu_la-pykumu.lo: pykumu.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kumu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kumu_la-pykumu.lo -MD -MP -MF $(DEPDIR)/kumu_la-pykumu.Tpo -c -o kumu_la-pykumu.lo `test -f 'pykumu.cpp' || echo '$(srcdir)/'`pykumu.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/kumu_la-pykumu.Tpo $(DEPDIR)/kumu_la-pykumu.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pykumu.cpp' object='kumu_la-pykumu.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) $(kumu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kumu_la-pykumu.lo `test -f 'pykumu.cpp' || echo '$(srcdir)/'`pykumu.cpp - -libasdcp_la-MPEG2_Parser.lo: MPEG2_Parser.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-MPEG2_Parser.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-MPEG2_Parser.Tpo -c -o libasdcp_la-MPEG2_Parser.lo `test -f 'MPEG2_Parser.cpp' || echo '$(srcdir)/'`MPEG2_Parser.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-MPEG2_Parser.Tpo $(DEPDIR)/libasdcp_la-MPEG2_Parser.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MPEG2_Parser.cpp' object='libasdcp_la-MPEG2_Parser.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-MPEG2_Parser.lo `test -f 'MPEG2_Parser.cpp' || echo '$(srcdir)/'`MPEG2_Parser.cpp - -libasdcp_la-MPEG.lo: MPEG.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-MPEG.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-MPEG.Tpo -c -o libasdcp_la-MPEG.lo `test -f 'MPEG.cpp' || echo '$(srcdir)/'`MPEG.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-MPEG.Tpo $(DEPDIR)/libasdcp_la-MPEG.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MPEG.cpp' object='libasdcp_la-MPEG.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-MPEG.lo `test -f 'MPEG.cpp' || echo '$(srcdir)/'`MPEG.cpp - -libasdcp_la-JP2K_Codestream_Parser.lo: JP2K_Codestream_Parser.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-JP2K_Codestream_Parser.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-JP2K_Codestream_Parser.Tpo -c -o libasdcp_la-JP2K_Codestream_Parser.lo `test -f 'JP2K_Codestream_Parser.cpp' || echo '$(srcdir)/'`JP2K_Codestream_Parser.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-JP2K_Codestream_Parser.Tpo $(DEPDIR)/libasdcp_la-JP2K_Codestream_Parser.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='JP2K_Codestream_Parser.cpp' object='libasdcp_la-JP2K_Codestream_Parser.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-JP2K_Codestream_Parser.lo `test -f 'JP2K_Codestream_Parser.cpp' || echo '$(srcdir)/'`JP2K_Codestream_Parser.cpp - -libasdcp_la-JP2K_Sequence_Parser.lo: JP2K_Sequence_Parser.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-JP2K_Sequence_Parser.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-JP2K_Sequence_Parser.Tpo -c -o libasdcp_la-JP2K_Sequence_Parser.lo `test -f 'JP2K_Sequence_Parser.cpp' || echo '$(srcdir)/'`JP2K_Sequence_Parser.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-JP2K_Sequence_Parser.Tpo $(DEPDIR)/libasdcp_la-JP2K_Sequence_Parser.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='JP2K_Sequence_Parser.cpp' object='libasdcp_la-JP2K_Sequence_Parser.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-JP2K_Sequence_Parser.lo `test -f 'JP2K_Sequence_Parser.cpp' || echo '$(srcdir)/'`JP2K_Sequence_Parser.cpp - -libasdcp_la-JP2K.lo: JP2K.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-JP2K.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-JP2K.Tpo -c -o libasdcp_la-JP2K.lo `test -f 'JP2K.cpp' || echo '$(srcdir)/'`JP2K.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-JP2K.Tpo $(DEPDIR)/libasdcp_la-JP2K.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='JP2K.cpp' object='libasdcp_la-JP2K.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-JP2K.lo `test -f 'JP2K.cpp' || echo '$(srcdir)/'`JP2K.cpp - -libasdcp_la-PCM_Parser.lo: PCM_Parser.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-PCM_Parser.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-PCM_Parser.Tpo -c -o libasdcp_la-PCM_Parser.lo `test -f 'PCM_Parser.cpp' || echo '$(srcdir)/'`PCM_Parser.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-PCM_Parser.Tpo $(DEPDIR)/libasdcp_la-PCM_Parser.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='PCM_Parser.cpp' object='libasdcp_la-PCM_Parser.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-PCM_Parser.lo `test -f 'PCM_Parser.cpp' || echo '$(srcdir)/'`PCM_Parser.cpp - -libasdcp_la-Wav.lo: Wav.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-Wav.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-Wav.Tpo -c -o libasdcp_la-Wav.lo `test -f 'Wav.cpp' || echo '$(srcdir)/'`Wav.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-Wav.Tpo $(DEPDIR)/libasdcp_la-Wav.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Wav.cpp' object='libasdcp_la-Wav.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-Wav.lo `test -f 'Wav.cpp' || echo '$(srcdir)/'`Wav.cpp - -libasdcp_la-TimedText_Parser.lo: TimedText_Parser.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-TimedText_Parser.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-TimedText_Parser.Tpo -c -o libasdcp_la-TimedText_Parser.lo `test -f 'TimedText_Parser.cpp' || echo '$(srcdir)/'`TimedText_Parser.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-TimedText_Parser.Tpo $(DEPDIR)/libasdcp_la-TimedText_Parser.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TimedText_Parser.cpp' object='libasdcp_la-TimedText_Parser.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-TimedText_Parser.lo `test -f 'TimedText_Parser.cpp' || echo '$(srcdir)/'`TimedText_Parser.cpp - -libasdcp_la-KLV.lo: KLV.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-KLV.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-KLV.Tpo -c -o libasdcp_la-KLV.lo `test -f 'KLV.cpp' || echo '$(srcdir)/'`KLV.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-KLV.Tpo $(DEPDIR)/libasdcp_la-KLV.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='KLV.cpp' object='libasdcp_la-KLV.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-KLV.lo `test -f 'KLV.cpp' || echo '$(srcdir)/'`KLV.cpp - -libasdcp_la-Dict.lo: Dict.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-Dict.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-Dict.Tpo -c -o libasdcp_la-Dict.lo `test -f 'Dict.cpp' || echo '$(srcdir)/'`Dict.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-Dict.Tpo $(DEPDIR)/libasdcp_la-Dict.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Dict.cpp' object='libasdcp_la-Dict.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-Dict.lo `test -f 'Dict.cpp' || echo '$(srcdir)/'`Dict.cpp - -libasdcp_la-MXFTypes.lo: MXFTypes.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-MXFTypes.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-MXFTypes.Tpo -c -o libasdcp_la-MXFTypes.lo `test -f 'MXFTypes.cpp' || echo '$(srcdir)/'`MXFTypes.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-MXFTypes.Tpo $(DEPDIR)/libasdcp_la-MXFTypes.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MXFTypes.cpp' object='libasdcp_la-MXFTypes.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-MXFTypes.lo `test -f 'MXFTypes.cpp' || echo '$(srcdir)/'`MXFTypes.cpp - -libasdcp_la-MXF.lo: MXF.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-MXF.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-MXF.Tpo -c -o libasdcp_la-MXF.lo `test -f 'MXF.cpp' || echo '$(srcdir)/'`MXF.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-MXF.Tpo $(DEPDIR)/libasdcp_la-MXF.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MXF.cpp' object='libasdcp_la-MXF.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-MXF.lo `test -f 'MXF.cpp' || echo '$(srcdir)/'`MXF.cpp - -libasdcp_la-Index.lo: Index.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-Index.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-Index.Tpo -c -o libasdcp_la-Index.lo `test -f 'Index.cpp' || echo '$(srcdir)/'`Index.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-Index.Tpo $(DEPDIR)/libasdcp_la-Index.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Index.cpp' object='libasdcp_la-Index.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-Index.lo `test -f 'Index.cpp' || echo '$(srcdir)/'`Index.cpp - -libasdcp_la-Metadata.lo: Metadata.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-Metadata.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-Metadata.Tpo -c -o libasdcp_la-Metadata.lo `test -f 'Metadata.cpp' || echo '$(srcdir)/'`Metadata.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-Metadata.Tpo $(DEPDIR)/libasdcp_la-Metadata.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Metadata.cpp' object='libasdcp_la-Metadata.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-Metadata.lo `test -f 'Metadata.cpp' || echo '$(srcdir)/'`Metadata.cpp - -libasdcp_la-AS_DCP.lo: AS_DCP.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP.Tpo -c -o libasdcp_la-AS_DCP.lo `test -f 'AS_DCP.cpp' || echo '$(srcdir)/'`AS_DCP.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP.Tpo $(DEPDIR)/libasdcp_la-AS_DCP.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP.cpp' object='libasdcp_la-AS_DCP.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP.lo `test -f 'AS_DCP.cpp' || echo '$(srcdir)/'`AS_DCP.cpp - -libasdcp_la-AS_DCP_MXF.lo: AS_DCP_MXF.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP_MXF.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP_MXF.Tpo -c -o libasdcp_la-AS_DCP_MXF.lo `test -f 'AS_DCP_MXF.cpp' || echo '$(srcdir)/'`AS_DCP_MXF.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP_MXF.Tpo $(DEPDIR)/libasdcp_la-AS_DCP_MXF.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP_MXF.cpp' object='libasdcp_la-AS_DCP_MXF.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP_MXF.lo `test -f 'AS_DCP_MXF.cpp' || echo '$(srcdir)/'`AS_DCP_MXF.cpp - -libasdcp_la-AS_DCP_AES.lo: AS_DCP_AES.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP_AES.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP_AES.Tpo -c -o libasdcp_la-AS_DCP_AES.lo `test -f 'AS_DCP_AES.cpp' || echo '$(srcdir)/'`AS_DCP_AES.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP_AES.Tpo $(DEPDIR)/libasdcp_la-AS_DCP_AES.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP_AES.cpp' object='libasdcp_la-AS_DCP_AES.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP_AES.lo `test -f 'AS_DCP_AES.cpp' || echo '$(srcdir)/'`AS_DCP_AES.cpp - -libasdcp_la-h__Reader.lo: h__Reader.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-h__Reader.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-h__Reader.Tpo -c -o libasdcp_la-h__Reader.lo `test -f 'h__Reader.cpp' || echo '$(srcdir)/'`h__Reader.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-h__Reader.Tpo $(DEPDIR)/libasdcp_la-h__Reader.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='h__Reader.cpp' object='libasdcp_la-h__Reader.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-h__Reader.lo `test -f 'h__Reader.cpp' || echo '$(srcdir)/'`h__Reader.cpp - -libasdcp_la-h__Writer.lo: h__Writer.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-h__Writer.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-h__Writer.Tpo -c -o libasdcp_la-h__Writer.lo `test -f 'h__Writer.cpp' || echo '$(srcdir)/'`h__Writer.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-h__Writer.Tpo $(DEPDIR)/libasdcp_la-h__Writer.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='h__Writer.cpp' object='libasdcp_la-h__Writer.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-h__Writer.lo `test -f 'h__Writer.cpp' || echo '$(srcdir)/'`h__Writer.cpp - -libasdcp_la-AS_DCP_MPEG2.lo: AS_DCP_MPEG2.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP_MPEG2.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP_MPEG2.Tpo -c -o libasdcp_la-AS_DCP_MPEG2.lo `test -f 'AS_DCP_MPEG2.cpp' || echo '$(srcdir)/'`AS_DCP_MPEG2.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP_MPEG2.Tpo $(DEPDIR)/libasdcp_la-AS_DCP_MPEG2.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP_MPEG2.cpp' object='libasdcp_la-AS_DCP_MPEG2.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP_MPEG2.lo `test -f 'AS_DCP_MPEG2.cpp' || echo '$(srcdir)/'`AS_DCP_MPEG2.cpp - -libasdcp_la-AS_DCP_JP2K.lo: AS_DCP_JP2K.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP_JP2K.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP_JP2K.Tpo -c -o libasdcp_la-AS_DCP_JP2K.lo `test -f 'AS_DCP_JP2K.cpp' || echo '$(srcdir)/'`AS_DCP_JP2K.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP_JP2K.Tpo $(DEPDIR)/libasdcp_la-AS_DCP_JP2K.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP_JP2K.cpp' object='libasdcp_la-AS_DCP_JP2K.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP_JP2K.lo `test -f 'AS_DCP_JP2K.cpp' || echo '$(srcdir)/'`AS_DCP_JP2K.cpp - -libasdcp_la-AS_DCP_PCM.lo: AS_DCP_PCM.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP_PCM.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP_PCM.Tpo -c -o libasdcp_la-AS_DCP_PCM.lo `test -f 'AS_DCP_PCM.cpp' || echo '$(srcdir)/'`AS_DCP_PCM.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP_PCM.Tpo $(DEPDIR)/libasdcp_la-AS_DCP_PCM.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP_PCM.cpp' object='libasdcp_la-AS_DCP_PCM.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP_PCM.lo `test -f 'AS_DCP_PCM.cpp' || echo '$(srcdir)/'`AS_DCP_PCM.cpp - -libasdcp_la-AS_DCP_TimedText.lo: AS_DCP_TimedText.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-AS_DCP_TimedText.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-AS_DCP_TimedText.Tpo -c -o libasdcp_la-AS_DCP_TimedText.lo `test -f 'AS_DCP_TimedText.cpp' || echo '$(srcdir)/'`AS_DCP_TimedText.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-AS_DCP_TimedText.Tpo $(DEPDIR)/libasdcp_la-AS_DCP_TimedText.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AS_DCP_TimedText.cpp' object='libasdcp_la-AS_DCP_TimedText.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-AS_DCP_TimedText.lo `test -f 'AS_DCP_TimedText.cpp' || echo '$(srcdir)/'`AS_DCP_TimedText.cpp - -libasdcp_la-PCMParserList.lo: PCMParserList.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-PCMParserList.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-PCMParserList.Tpo -c -o libasdcp_la-PCMParserList.lo `test -f 'PCMParserList.cpp' || echo '$(srcdir)/'`PCMParserList.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-PCMParserList.Tpo $(DEPDIR)/libasdcp_la-PCMParserList.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='PCMParserList.cpp' object='libasdcp_la-PCMParserList.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-PCMParserList.lo `test -f 'PCMParserList.cpp' || echo '$(srcdir)/'`PCMParserList.cpp - -libasdcp_la-MDD.lo: MDD.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-MDD.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-MDD.Tpo -c -o libasdcp_la-MDD.lo `test -f 'MDD.cpp' || echo '$(srcdir)/'`MDD.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-MDD.Tpo $(DEPDIR)/libasdcp_la-MDD.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MDD.cpp' object='libasdcp_la-MDD.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-MDD.lo `test -f 'MDD.cpp' || echo '$(srcdir)/'`MDD.cpp - -libasdcp_la-TimedText_Transform.lo: TimedText_Transform.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libasdcp_la-TimedText_Transform.lo -MD -MP -MF $(DEPDIR)/libasdcp_la-TimedText_Transform.Tpo -c -o libasdcp_la-TimedText_Transform.lo `test -f 'TimedText_Transform.cpp' || echo '$(srcdir)/'`TimedText_Transform.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libasdcp_la-TimedText_Transform.Tpo $(DEPDIR)/libasdcp_la-TimedText_Transform.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TimedText_Transform.cpp' object='libasdcp_la-TimedText_Transform.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) $(libasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libasdcp_la-TimedText_Transform.lo `test -f 'TimedText_Transform.cpp' || echo '$(srcdir)/'`TimedText_Transform.cpp - -libpyasdcp_la-kumu_python.lo: kumu_python.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-kumu_python.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-kumu_python.Tpo -c -o libpyasdcp_la-kumu_python.lo `test -f 'kumu_python.cpp' || echo '$(srcdir)/'`kumu_python.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-kumu_python.Tpo $(DEPDIR)/libpyasdcp_la-kumu_python.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='kumu_python.cpp' object='libpyasdcp_la-kumu_python.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-kumu_python.lo `test -f 'kumu_python.cpp' || echo '$(srcdir)/'`kumu_python.cpp - -libpyasdcp_la-asdcp_python.lo: asdcp_python.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-asdcp_python.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-asdcp_python.Tpo -c -o libpyasdcp_la-asdcp_python.lo `test -f 'asdcp_python.cpp' || echo '$(srcdir)/'`asdcp_python.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-asdcp_python.Tpo $(DEPDIR)/libpyasdcp_la-asdcp_python.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='asdcp_python.cpp' object='libpyasdcp_la-asdcp_python.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-asdcp_python.lo `test -f 'asdcp_python.cpp' || echo '$(srcdir)/'`asdcp_python.cpp - -libpyasdcp_la-asdcp_python_descriptor.lo: asdcp_python_descriptor.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-asdcp_python_descriptor.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-asdcp_python_descriptor.Tpo -c -o libpyasdcp_la-asdcp_python_descriptor.lo `test -f 'asdcp_python_descriptor.cpp' || echo '$(srcdir)/'`asdcp_python_descriptor.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-asdcp_python_descriptor.Tpo $(DEPDIR)/libpyasdcp_la-asdcp_python_descriptor.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='asdcp_python_descriptor.cpp' object='libpyasdcp_la-asdcp_python_descriptor.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-asdcp_python_descriptor.lo `test -f 'asdcp_python_descriptor.cpp' || echo '$(srcdir)/'`asdcp_python_descriptor.cpp - -libpyasdcp_la-asdcp_python_misc.lo: asdcp_python_misc.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-asdcp_python_misc.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-asdcp_python_misc.Tpo -c -o libpyasdcp_la-asdcp_python_misc.lo `test -f 'asdcp_python_misc.cpp' || echo '$(srcdir)/'`asdcp_python_misc.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-asdcp_python_misc.Tpo $(DEPDIR)/libpyasdcp_la-asdcp_python_misc.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='asdcp_python_misc.cpp' object='libpyasdcp_la-asdcp_python_misc.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-asdcp_python_misc.lo `test -f 'asdcp_python_misc.cpp' || echo '$(srcdir)/'`asdcp_python_misc.cpp - -libpyasdcp_la-asdcp_python_mxf.lo: asdcp_python_mxf.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-asdcp_python_mxf.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf.Tpo -c -o libpyasdcp_la-asdcp_python_mxf.lo `test -f 'asdcp_python_mxf.cpp' || echo '$(srcdir)/'`asdcp_python_mxf.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf.Tpo $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='asdcp_python_mxf.cpp' object='libpyasdcp_la-asdcp_python_mxf.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-asdcp_python_mxf.lo `test -f 'asdcp_python_mxf.cpp' || echo '$(srcdir)/'`asdcp_python_mxf.cpp - -libpyasdcp_la-asdcp_python_mxf_text.lo: asdcp_python_mxf_text.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-asdcp_python_mxf_text.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_text.Tpo -c -o libpyasdcp_la-asdcp_python_mxf_text.lo `test -f 'asdcp_python_mxf_text.cpp' || echo '$(srcdir)/'`asdcp_python_mxf_text.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_text.Tpo $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_text.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='asdcp_python_mxf_text.cpp' object='libpyasdcp_la-asdcp_python_mxf_text.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-asdcp_python_mxf_text.lo `test -f 'asdcp_python_mxf_text.cpp' || echo '$(srcdir)/'`asdcp_python_mxf_text.cpp - -libpyasdcp_la-asdcp_python_mxf_metadata.lo: asdcp_python_mxf_metadata.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libpyasdcp_la-asdcp_python_mxf_metadata.lo -MD -MP -MF $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_metadata.Tpo -c -o libpyasdcp_la-asdcp_python_mxf_metadata.lo `test -f 'asdcp_python_mxf_metadata.cpp' || echo '$(srcdir)/'`asdcp_python_mxf_metadata.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_metadata.Tpo $(DEPDIR)/libpyasdcp_la-asdcp_python_mxf_metadata.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='asdcp_python_mxf_metadata.cpp' object='libpyasdcp_la-asdcp_python_mxf_metadata.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) $(libpyasdcp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libpyasdcp_la-asdcp_python_mxf_metadata.lo `test -f 'asdcp_python_mxf_metadata.cpp' || echo '$(srcdir)/'`asdcp_python_mxf_metadata.cpp - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) -install-nodist_includeHEADERS: $(nodist_include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" - @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-nodist_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) -install-nodist_pyexec_includeHEADERS: $(nodist_pyexec_include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(pyexec_includedir)" || $(MKDIR_P) "$(DESTDIR)$(pyexec_includedir)" - @list='$(nodist_pyexec_include_HEADERS)'; test -n "$(pyexec_includedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pyexec_includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(pyexec_includedir)" || exit $$?; \ - done - -uninstall-nodist_pyexec_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_pyexec_include_HEADERS)'; test -n "$(pyexec_includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pyexec_includedir)'; $(am__uninstall_files_from_dir) - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @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 "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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 - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) -install-binPROGRAMS: install-libLTLIBRARIES - -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pyexec_includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) 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: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-pyexecLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-includeHEADERS install-nodist_includeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS install-libLTLIBRARIES \ - install-nodist_pyexec_includeHEADERS install-pyexecLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -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-binPROGRAMS uninstall-includeHEADERS \ - uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS \ - uninstall-nodist_pyexec_includeHEADERS \ - uninstall-pyexecLTLIBRARIES - -.MAKE: all check check-am install install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-pyexecLTLIBRARIES \ - 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-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-includeHEADERS install-info install-info-am \ - install-libLTLIBRARIES install-man \ - install-nodist_includeHEADERS \ - install-nodist_pyexec_includeHEADERS install-pdf \ - install-pdf-am install-ps install-ps-am \ - install-pyexecLTLIBRARIES 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-includeHEADERS uninstall-libLTLIBRARIES \ - uninstall-nodist_includeHEADERS \ - uninstall-nodist_pyexec_includeHEADERS \ - uninstall-pyexecLTLIBRARIES - - -# build commands for built sources -# dependencies: $(srcdir)/ullist.pl $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml -MDD.h: - $(srcdir)/ullist.pl $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml > MDD.h -# dependencies: $(srcdir)/ullist.pl $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml -MDD.cpp: - $(srcdir)/ullist.pl -s $(srcdir)/ULList.xml $(srcdir)/dict.xml $(srcdir)/DMS_Crypto.xml > MDD.cpp -# dependencies: $(srcdir)/Metadata_h.tt2 $(srcdir)/mxfgen.pl $(srcdir)/MXF_def.pl -Metadata.h: - $(srcdir)/mxfgen.pl $(srcdir)/MXF_def.pl $(srcdir)/Metadata_h.tt2 > Metadata.h -# dependencies: Metadata.h $(srcdir)/Metadata_cpp.tt2 -Metadata.cpp: - $(srcdir)/mxfgen.pl $(srcdir)/MXF_def.pl $(srcdir)/Metadata_cpp.tt2 > Metadata.cpp - -# -# -# - -# 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/asdcplib/src/Metadata.cpp b/asdcplib/src/Metadata.cpp deleted file mode 100755 index a9a15e5..0000000 --- a/asdcplib/src/Metadata.cpp +++ /dev/null @@ -1,2893 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file Metadata.cpp - \version $Id: Metadata.cpp,v 1.31 2012/02/21 02:09:31 jhurst Exp $ - \brief AS-DCP library, MXF Metadata Sets implementation -*/ - - -#include <KM_mutex.h> -#include "Metadata.h" - -using namespace ASDCP; -using namespace ASDCP::MXF; - -const ui32_t kl_length = ASDCP::SMPTE_UL_LENGTH + ASDCP::MXF_BER_LENGTH; - -//------------------------------------------------------------------------------------------ - -static InterchangeObject* Preface_Factory(const Dictionary*& Dict) { return new Preface(Dict); } -static InterchangeObject* IndexTableSegment_Factory(const Dictionary*& Dict) { return new IndexTableSegment(Dict); } - -static InterchangeObject* Identification_Factory(const Dictionary*& Dict) { return new Identification(Dict); } -static InterchangeObject* ContentStorage_Factory(const Dictionary*& Dict) { return new ContentStorage(Dict); } -static InterchangeObject* EssenceContainerData_Factory(const Dictionary*& Dict) { return new EssenceContainerData(Dict); } -static InterchangeObject* MaterialPackage_Factory(const Dictionary*& Dict) { return new MaterialPackage(Dict); } -static InterchangeObject* SourcePackage_Factory(const Dictionary*& Dict) { return new SourcePackage(Dict); } -static InterchangeObject* StaticTrack_Factory(const Dictionary*& Dict) { return new StaticTrack(Dict); } -static InterchangeObject* Track_Factory(const Dictionary*& Dict) { return new Track(Dict); } -static InterchangeObject* Sequence_Factory(const Dictionary*& Dict) { return new Sequence(Dict); } -static InterchangeObject* SourceClip_Factory(const Dictionary*& Dict) { return new SourceClip(Dict); } -static InterchangeObject* TimecodeComponent_Factory(const Dictionary*& Dict) { return new TimecodeComponent(Dict); } -static InterchangeObject* FileDescriptor_Factory(const Dictionary*& Dict) { return new FileDescriptor(Dict); } -static InterchangeObject* GenericSoundEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericSoundEssenceDescriptor(Dict); } -static InterchangeObject* WaveAudioDescriptor_Factory(const Dictionary*& Dict) { return new WaveAudioDescriptor(Dict); } -static InterchangeObject* GenericPictureEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericPictureEssenceDescriptor(Dict); } -static InterchangeObject* RGBAEssenceDescriptor_Factory(const Dictionary*& Dict) { return new RGBAEssenceDescriptor(Dict); } -static InterchangeObject* JPEG2000PictureSubDescriptor_Factory(const Dictionary*& Dict) { return new JPEG2000PictureSubDescriptor(Dict); } -static InterchangeObject* CDCIEssenceDescriptor_Factory(const Dictionary*& Dict) { return new CDCIEssenceDescriptor(Dict); } -static InterchangeObject* MPEG2VideoDescriptor_Factory(const Dictionary*& Dict) { return new MPEG2VideoDescriptor(Dict); } -static InterchangeObject* DMSegment_Factory(const Dictionary*& Dict) { return new DMSegment(Dict); } -static InterchangeObject* CryptographicFramework_Factory(const Dictionary*& Dict) { return new CryptographicFramework(Dict); } -static InterchangeObject* CryptographicContext_Factory(const Dictionary*& Dict) { return new CryptographicContext(Dict); } -static InterchangeObject* GenericDataEssenceDescriptor_Factory(const Dictionary*& Dict) { return new GenericDataEssenceDescriptor(Dict); } -static InterchangeObject* TimedTextDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextDescriptor(Dict); } -static InterchangeObject* TimedTextResourceSubDescriptor_Factory(const Dictionary*& Dict) { return new TimedTextResourceSubDescriptor(Dict); } -static InterchangeObject* StereoscopicPictureSubDescriptor_Factory(const Dictionary*& Dict) { return new StereoscopicPictureSubDescriptor(Dict); } -static InterchangeObject* NetworkLocator_Factory(const Dictionary*& Dict) { return new NetworkLocator(Dict); } -static InterchangeObject* MCALabelSubDescriptor_Factory(const Dictionary*& Dict) { return new MCALabelSubDescriptor(Dict); } -static InterchangeObject* AudioChannelLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new AudioChannelLabelSubDescriptor(Dict); } -static InterchangeObject* SoundfieldGroupLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new SoundfieldGroupLabelSubDescriptor(Dict); } -static InterchangeObject* GroupOfSoundfieldGroupsLabelSubDescriptor_Factory(const Dictionary*& Dict) { return new GroupOfSoundfieldGroupsLabelSubDescriptor(Dict); } - - -void -ASDCP::MXF::Metadata_InitTypes(const Dictionary*& Dict) -{ - assert(Dict); - SetObjectFactory(Dict->ul(MDD_Preface), Preface_Factory); - SetObjectFactory(Dict->ul(MDD_IndexTableSegment), IndexTableSegment_Factory); - - SetObjectFactory(Dict->ul(MDD_Identification), Identification_Factory); - SetObjectFactory(Dict->ul(MDD_ContentStorage), ContentStorage_Factory); - SetObjectFactory(Dict->ul(MDD_EssenceContainerData), EssenceContainerData_Factory); - SetObjectFactory(Dict->ul(MDD_MaterialPackage), MaterialPackage_Factory); - SetObjectFactory(Dict->ul(MDD_SourcePackage), SourcePackage_Factory); - SetObjectFactory(Dict->ul(MDD_StaticTrack), StaticTrack_Factory); - SetObjectFactory(Dict->ul(MDD_Track), Track_Factory); - SetObjectFactory(Dict->ul(MDD_Sequence), Sequence_Factory); - SetObjectFactory(Dict->ul(MDD_SourceClip), SourceClip_Factory); - SetObjectFactory(Dict->ul(MDD_TimecodeComponent), TimecodeComponent_Factory); - SetObjectFactory(Dict->ul(MDD_FileDescriptor), FileDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_GenericSoundEssenceDescriptor), GenericSoundEssenceDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_WaveAudioDescriptor), WaveAudioDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_GenericPictureEssenceDescriptor), GenericPictureEssenceDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_RGBAEssenceDescriptor), RGBAEssenceDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_JPEG2000PictureSubDescriptor), JPEG2000PictureSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_CDCIEssenceDescriptor), CDCIEssenceDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_MPEG2VideoDescriptor), MPEG2VideoDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_DMSegment), DMSegment_Factory); - SetObjectFactory(Dict->ul(MDD_CryptographicFramework), CryptographicFramework_Factory); - SetObjectFactory(Dict->ul(MDD_CryptographicContext), CryptographicContext_Factory); - SetObjectFactory(Dict->ul(MDD_GenericDataEssenceDescriptor), GenericDataEssenceDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_TimedTextDescriptor), TimedTextDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_TimedTextResourceSubDescriptor), TimedTextResourceSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_StereoscopicPictureSubDescriptor), StereoscopicPictureSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_NetworkLocator), NetworkLocator_Factory); - SetObjectFactory(Dict->ul(MDD_MCALabelSubDescriptor), MCALabelSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_AudioChannelLabelSubDescriptor), AudioChannelLabelSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor), SoundfieldGroupLabelSubDescriptor_Factory); - SetObjectFactory(Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor), GroupOfSoundfieldGroupsLabelSubDescriptor_Factory); -} - -//------------------------------------------------------------------------------------------ -// KLV Sets - - - -//------------------------------------------------------------------------------------------ -// Identification - -// - -Identification::Identification(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_Identification); -} - -Identification::Identification(const Identification& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_Identification); - Copy(rhs); -} - - -// -ASDCP::Result_t -Identification::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ThisGenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, CompanyName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductVersion)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, VersionString)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ProductUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ModificationDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, ToolkitVersion)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Identification, Platform)); - return result; -} - -// -ASDCP::Result_t -Identification::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ThisGenerationUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, CompanyName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductVersion)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, VersionString)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ProductUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ModificationDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, ToolkitVersion)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Identification, Platform)); - return result; -} - -// -void -Identification::Copy(const Identification& rhs) -{ - InterchangeObject::Copy(rhs); - ThisGenerationUID = rhs.ThisGenerationUID; - CompanyName = rhs.CompanyName; - ProductName = rhs.ProductName; - ProductVersion = rhs.ProductVersion; - VersionString = rhs.VersionString; - ProductUID = rhs.ProductUID; - ModificationDate = rhs.ModificationDate; - ToolkitVersion = rhs.ToolkitVersion; - Platform = rhs.Platform; -} - -// -void -Identification::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "ThisGenerationUID", ThisGenerationUID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "CompanyName", CompanyName.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ProductName", ProductName.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ProductVersion", ProductVersion.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "VersionString", VersionString.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ProductUID", ProductUID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ModificationDate", ModificationDate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ToolkitVersion", ToolkitVersion.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "Platform", Platform.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -Identification::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -Identification::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// ContentStorage - -// - -ContentStorage::ContentStorage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_ContentStorage); -} - -ContentStorage::ContentStorage(const ContentStorage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_ContentStorage); - Copy(rhs); -} - - -// -ASDCP::Result_t -ContentStorage::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, Packages)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(ContentStorage, EssenceContainerData)); - return result; -} - -// -ASDCP::Result_t -ContentStorage::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, Packages)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(ContentStorage, EssenceContainerData)); - return result; -} - -// -void -ContentStorage::Copy(const ContentStorage& rhs) -{ - InterchangeObject::Copy(rhs); - Packages = rhs.Packages; - EssenceContainerData = rhs.EssenceContainerData; -} - -// -void -ContentStorage::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s:\n", "Packages"); - Packages.Dump(stream); - fprintf(stream, " %22s:\n", "EssenceContainerData"); - EssenceContainerData.Dump(stream); -} - -// -ASDCP::Result_t -ContentStorage::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -ContentStorage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// EssenceContainerData - -// - -EssenceContainerData::EssenceContainerData(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), IndexSID(0), BodySID(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_EssenceContainerData); -} - -EssenceContainerData::EssenceContainerData(const EssenceContainerData& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_EssenceContainerData); - Copy(rhs); -} - - -// -ASDCP::Result_t -EssenceContainerData::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(EssenceContainerData, LinkedPackageUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, IndexSID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(EssenceContainerData, BodySID)); - return result; -} - -// -ASDCP::Result_t -EssenceContainerData::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(EssenceContainerData, LinkedPackageUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, IndexSID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(EssenceContainerData, BodySID)); - return result; -} - -// -void -EssenceContainerData::Copy(const EssenceContainerData& rhs) -{ - InterchangeObject::Copy(rhs); - LinkedPackageUID = rhs.LinkedPackageUID; - IndexSID = rhs.IndexSID; - BodySID = rhs.BodySID; -} - -// -void -EssenceContainerData::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "LinkedPackageUID", LinkedPackageUID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %d\n", "IndexSID", IndexSID); - fprintf(stream, " %22s = %d\n", "BodySID", BodySID); -} - -// -ASDCP::Result_t -EssenceContainerData::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -EssenceContainerData::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GenericPackage - -// -GenericPackage::GenericPackage(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {} - -GenericPackage::GenericPackage(const GenericPackage& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - Copy(rhs); -} - - -// -ASDCP::Result_t -GenericPackage::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Name)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageCreationDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, PackageModifiedDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPackage, Tracks)); - return result; -} - -// -ASDCP::Result_t -GenericPackage::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageUID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Name)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageCreationDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, PackageModifiedDate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPackage, Tracks)); - return result; -} - -// -void -GenericPackage::Copy(const GenericPackage& rhs) -{ - InterchangeObject::Copy(rhs); - PackageUID = rhs.PackageUID; - Name = rhs.Name; - PackageCreationDate = rhs.PackageCreationDate; - PackageModifiedDate = rhs.PackageModifiedDate; - Tracks = rhs.Tracks; -} - -// -void -GenericPackage::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "PackageUID", PackageUID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "Name", Name.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "PackageCreationDate", PackageCreationDate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "PackageModifiedDate", PackageModifiedDate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s:\n", "Tracks"); - Tracks.Dump(stream); -} - - -//------------------------------------------------------------------------------------------ -// MaterialPackage - -// - -MaterialPackage::MaterialPackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_MaterialPackage); -} - -MaterialPackage::MaterialPackage(const MaterialPackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_MaterialPackage); - Copy(rhs); -} - - -// -ASDCP::Result_t -MaterialPackage::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPackage::InitFromTLVSet(TLVSet); - return result; -} - -// -ASDCP::Result_t -MaterialPackage::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPackage::WriteToTLVSet(TLVSet); - return result; -} - -// -void -MaterialPackage::Copy(const MaterialPackage& rhs) -{ - GenericPackage::Copy(rhs); -} - -// -void -MaterialPackage::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericPackage::Dump(stream); -} - -// -ASDCP::Result_t -MaterialPackage::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -MaterialPackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// SourcePackage - -// - -SourcePackage::SourcePackage(const Dictionary*& d) : GenericPackage(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_SourcePackage); -} - -SourcePackage::SourcePackage(const SourcePackage& rhs) : GenericPackage(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_SourcePackage); - Copy(rhs); -} - - -// -ASDCP::Result_t -SourcePackage::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPackage::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourcePackage, Descriptor)); - return result; -} - -// -ASDCP::Result_t -SourcePackage::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPackage::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourcePackage, Descriptor)); - return result; -} - -// -void -SourcePackage::Copy(const SourcePackage& rhs) -{ - GenericPackage::Copy(rhs); - Descriptor = rhs.Descriptor; -} - -// -void -SourcePackage::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericPackage::Dump(stream); - fprintf(stream, " %22s = %s\n", "Descriptor", Descriptor.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -SourcePackage::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -SourcePackage::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GenericTrack - -// -GenericTrack::GenericTrack(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), TrackID(0), TrackNumber(0) {} - -GenericTrack::GenericTrack(const GenericTrack& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - Copy(rhs); -} - - -// -ASDCP::Result_t -GenericTrack::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericTrack, TrackNumber)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, TrackName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericTrack, Sequence)); - return result; -} - -// -ASDCP::Result_t -GenericTrack::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericTrack, TrackNumber)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, TrackName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericTrack, Sequence)); - return result; -} - -// -void -GenericTrack::Copy(const GenericTrack& rhs) -{ - InterchangeObject::Copy(rhs); - TrackID = rhs.TrackID; - TrackNumber = rhs.TrackNumber; - TrackName = rhs.TrackName; - Sequence = rhs.Sequence; -} - -// -void -GenericTrack::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %d\n", "TrackID", TrackID); - fprintf(stream, " %22s = %d\n", "TrackNumber", TrackNumber); - fprintf(stream, " %22s = %s\n", "TrackName", TrackName.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "Sequence", Sequence.EncodeString(identbuf, IdentBufferLen)); -} - - -//------------------------------------------------------------------------------------------ -// StaticTrack - -// - -StaticTrack::StaticTrack(const Dictionary*& d) : GenericTrack(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_StaticTrack); -} - -StaticTrack::StaticTrack(const StaticTrack& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_StaticTrack); - Copy(rhs); -} - - -// -ASDCP::Result_t -StaticTrack::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericTrack::InitFromTLVSet(TLVSet); - return result; -} - -// -ASDCP::Result_t -StaticTrack::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericTrack::WriteToTLVSet(TLVSet); - return result; -} - -// -void -StaticTrack::Copy(const StaticTrack& rhs) -{ - GenericTrack::Copy(rhs); -} - -// -void -StaticTrack::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericTrack::Dump(stream); -} - -// -ASDCP::Result_t -StaticTrack::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -StaticTrack::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// Track - -// - -Track::Track(const Dictionary*& d) : GenericTrack(d), m_Dict(d), Origin(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_Track); -} - -Track::Track(const Track& rhs) : GenericTrack(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_Track); - Copy(rhs); -} - - -// -ASDCP::Result_t -Track::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericTrack::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Track, EditRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(Track, Origin)); - return result; -} - -// -ASDCP::Result_t -Track::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericTrack::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Track, EditRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(Track, Origin)); - return result; -} - -// -void -Track::Copy(const Track& rhs) -{ - GenericTrack::Copy(rhs); - EditRate = rhs.EditRate; - Origin = rhs.Origin; -} - -// -void -Track::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericTrack::Dump(stream); - fprintf(stream, " %22s = %s\n", "EditRate", EditRate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "Origin", i64sz(Origin, identbuf)); -} - -// -ASDCP::Result_t -Track::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -Track::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// StructuralComponent - -// -StructuralComponent::StructuralComponent(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), Duration(0) {} - -StructuralComponent::StructuralComponent(const StructuralComponent& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - Copy(rhs); -} - - -// -ASDCP::Result_t -StructuralComponent::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(StructuralComponent, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(StructuralComponent, Duration)); - return result; -} - -// -ASDCP::Result_t -StructuralComponent::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(StructuralComponent, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(StructuralComponent, Duration)); - return result; -} - -// -void -StructuralComponent::Copy(const StructuralComponent& rhs) -{ - InterchangeObject::Copy(rhs); - DataDefinition = rhs.DataDefinition; - Duration = rhs.Duration; -} - -// -void -StructuralComponent::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf)); -} - - -//------------------------------------------------------------------------------------------ -// Sequence - -// - -Sequence::Sequence(const Dictionary*& d) : StructuralComponent(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_Sequence); -} - -Sequence::Sequence(const Sequence& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_Sequence); - Copy(rhs); -} - - -// -ASDCP::Result_t -Sequence::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(Sequence, StructuralComponents)); - return result; -} - -// -ASDCP::Result_t -Sequence::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = StructuralComponent::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(Sequence, StructuralComponents)); - return result; -} - -// -void -Sequence::Copy(const Sequence& rhs) -{ - StructuralComponent::Copy(rhs); - StructuralComponents = rhs.StructuralComponents; -} - -// -void -Sequence::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - StructuralComponent::Dump(stream); - fprintf(stream, " %22s:\n", "StructuralComponents"); - StructuralComponents.Dump(stream); -} - -// -ASDCP::Result_t -Sequence::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -Sequence::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// SourceClip - -// - -SourceClip::SourceClip(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), StartPosition(0), SourceTrackID(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_SourceClip); -} - -SourceClip::SourceClip(const SourceClip& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_SourceClip); - Copy(rhs); -} - - -// -ASDCP::Result_t -SourceClip::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(SourceClip, StartPosition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SourceClip, SourcePackageID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(SourceClip, SourceTrackID)); - return result; -} - -// -ASDCP::Result_t -SourceClip::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = StructuralComponent::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(SourceClip, StartPosition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SourceClip, SourcePackageID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(SourceClip, SourceTrackID)); - return result; -} - -// -void -SourceClip::Copy(const SourceClip& rhs) -{ - StructuralComponent::Copy(rhs); - StartPosition = rhs.StartPosition; - SourcePackageID = rhs.SourcePackageID; - SourceTrackID = rhs.SourceTrackID; -} - -// -void -SourceClip::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - StructuralComponent::Dump(stream); - fprintf(stream, " %22s = %s\n", "StartPosition", i64sz(StartPosition, identbuf)); - fprintf(stream, " %22s = %s\n", "SourcePackageID", SourcePackageID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %d\n", "SourceTrackID", SourceTrackID); -} - -// -ASDCP::Result_t -SourceClip::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -SourceClip::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// TimecodeComponent - -// - -TimecodeComponent::TimecodeComponent(const Dictionary*& d) : StructuralComponent(d), m_Dict(d), RoundedTimecodeBase(0), StartTimecode(0), DropFrame(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_TimecodeComponent); -} - -TimecodeComponent::TimecodeComponent(const TimecodeComponent& rhs) : StructuralComponent(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_TimecodeComponent); - Copy(rhs); -} - - -// -ASDCP::Result_t -TimecodeComponent::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = StructuralComponent::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(TimecodeComponent, RoundedTimecodeBase)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(TimecodeComponent, StartTimecode)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(TimecodeComponent, DropFrame)); - return result; -} - -// -ASDCP::Result_t -TimecodeComponent::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = StructuralComponent::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(TimecodeComponent, RoundedTimecodeBase)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(TimecodeComponent, StartTimecode)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(TimecodeComponent, DropFrame)); - return result; -} - -// -void -TimecodeComponent::Copy(const TimecodeComponent& rhs) -{ - StructuralComponent::Copy(rhs); - RoundedTimecodeBase = rhs.RoundedTimecodeBase; - StartTimecode = rhs.StartTimecode; - DropFrame = rhs.DropFrame; -} - -// -void -TimecodeComponent::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - StructuralComponent::Dump(stream); - fprintf(stream, " %22s = %d\n", "RoundedTimecodeBase", RoundedTimecodeBase); - fprintf(stream, " %22s = %s\n", "StartTimecode", i64sz(StartTimecode, identbuf)); - fprintf(stream, " %22s = %d\n", "DropFrame", DropFrame); -} - -// -ASDCP::Result_t -TimecodeComponent::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -TimecodeComponent::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GenericDescriptor - -// -GenericDescriptor::GenericDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) {} - -GenericDescriptor::GenericDescriptor(const GenericDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - Copy(rhs); -} - - -// -ASDCP::Result_t -GenericDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, Locators)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDescriptor, SubDescriptors)); - return result; -} - -// -ASDCP::Result_t -GenericDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, Locators)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDescriptor, SubDescriptors)); - return result; -} - -// -void -GenericDescriptor::Copy(const GenericDescriptor& rhs) -{ - InterchangeObject::Copy(rhs); - Locators = rhs.Locators; - SubDescriptors = rhs.SubDescriptors; -} - -// -void -GenericDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s:\n", "Locators"); - Locators.Dump(stream); - fprintf(stream, " %22s:\n", "SubDescriptors"); - SubDescriptors.Dump(stream); -} - - -//------------------------------------------------------------------------------------------ -// FileDescriptor - -// - -FileDescriptor::FileDescriptor(const Dictionary*& d) : GenericDescriptor(d), m_Dict(d), LinkedTrackID(0), ContainerDuration(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_FileDescriptor); -} - -FileDescriptor::FileDescriptor(const FileDescriptor& rhs) : GenericDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_FileDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -FileDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(FileDescriptor, LinkedTrackID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, SampleRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(FileDescriptor, ContainerDuration)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, EssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(FileDescriptor, Codec)); - return result; -} - -// -ASDCP::Result_t -FileDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(FileDescriptor, LinkedTrackID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, SampleRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(FileDescriptor, ContainerDuration)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, EssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(FileDescriptor, Codec)); - return result; -} - -// -void -FileDescriptor::Copy(const FileDescriptor& rhs) -{ - GenericDescriptor::Copy(rhs); - LinkedTrackID = rhs.LinkedTrackID; - SampleRate = rhs.SampleRate; - ContainerDuration = rhs.ContainerDuration; - EssenceContainer = rhs.EssenceContainer; - Codec = rhs.Codec; -} - -// -void -FileDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "LinkedTrackID", LinkedTrackID); - fprintf(stream, " %22s = %s\n", "SampleRate", SampleRate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ContainerDuration", i64sz(ContainerDuration, identbuf)); - fprintf(stream, " %22s = %s\n", "EssenceContainer", EssenceContainer.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "Codec", Codec.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -FileDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -FileDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GenericSoundEssenceDescriptor - -// - -GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), Locked(0), AudioRefLevel(0), ChannelCount(0), QuantizationBits(0), DialNorm(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor); -} - -GenericSoundEssenceDescriptor::GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GenericSoundEssenceDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, Locked)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ChannelCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, QuantizationBits)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, DialNorm)); - return result; -} - -// -ASDCP::Result_t -GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = FileDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioSamplingRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, Locked)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, AudioRefLevel)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ChannelCount)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, DialNorm)); - return result; -} - -// -void -GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs) -{ - FileDescriptor::Copy(rhs); - AudioSamplingRate = rhs.AudioSamplingRate; - Locked = rhs.Locked; - AudioRefLevel = rhs.AudioRefLevel; - ChannelCount = rhs.ChannelCount; - QuantizationBits = rhs.QuantizationBits; - DialNorm = rhs.DialNorm; -} - -// -void -GenericSoundEssenceDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - FileDescriptor::Dump(stream); - fprintf(stream, " %22s = %s\n", "AudioSamplingRate", AudioSamplingRate.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %d\n", "Locked", Locked); - fprintf(stream, " %22s = %d\n", "AudioRefLevel", AudioRefLevel); - fprintf(stream, " %22s = %d\n", "ChannelCount", ChannelCount); - fprintf(stream, " %22s = %d\n", "QuantizationBits", QuantizationBits); - fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm); -} - -// -ASDCP::Result_t -GenericSoundEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -GenericSoundEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// WaveAudioDescriptor - -// - -WaveAudioDescriptor::WaveAudioDescriptor(const Dictionary*& d) : GenericSoundEssenceDescriptor(d), m_Dict(d), BlockAlign(0), SequenceOffset(0), AvgBps(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_WaveAudioDescriptor); -} - -WaveAudioDescriptor::WaveAudioDescriptor(const WaveAudioDescriptor& rhs) : GenericSoundEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_WaveAudioDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericSoundEssenceDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(WaveAudioDescriptor, BlockAlign)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(WaveAudioDescriptor, SequenceOffset)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(WaveAudioDescriptor, AvgBps)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(WaveAudioDescriptor, ChannelAssignment)); - return result; -} - -// -ASDCP::Result_t -WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericSoundEssenceDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(WaveAudioDescriptor, BlockAlign)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(WaveAudioDescriptor, SequenceOffset)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(WaveAudioDescriptor, ChannelAssignment)); - return result; -} - -// -void -WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs) -{ - GenericSoundEssenceDescriptor::Copy(rhs); - BlockAlign = rhs.BlockAlign; - SequenceOffset = rhs.SequenceOffset; - AvgBps = rhs.AvgBps; - ChannelAssignment = rhs.ChannelAssignment; -} - -// -void -WaveAudioDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericSoundEssenceDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "BlockAlign", BlockAlign); - fprintf(stream, " %22s = %d\n", "SequenceOffset", SequenceOffset); - fprintf(stream, " %22s = %d\n", "AvgBps", AvgBps); - fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -WaveAudioDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -WaveAudioDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GenericPictureEssenceDescriptor - -// - -GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d), FrameLayout(0), StoredWidth(0), StoredHeight(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor); -} - -GenericPictureEssenceDescriptor::GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GenericPictureEssenceDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -GenericPictureEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, FrameLayout)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredWidth)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, StoredHeight)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, AspectRatio)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding)); - return result; -} - -// -ASDCP::Result_t -GenericPictureEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = FileDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, FrameLayout)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredWidth)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, StoredHeight)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, AspectRatio)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericPictureEssenceDescriptor, PictureEssenceCoding)); - return result; -} - -// -void -GenericPictureEssenceDescriptor::Copy(const GenericPictureEssenceDescriptor& rhs) -{ - FileDescriptor::Copy(rhs); - FrameLayout = rhs.FrameLayout; - StoredWidth = rhs.StoredWidth; - StoredHeight = rhs.StoredHeight; - AspectRatio = rhs.AspectRatio; - PictureEssenceCoding = rhs.PictureEssenceCoding; -} - -// -void -GenericPictureEssenceDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - FileDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "FrameLayout", FrameLayout); - fprintf(stream, " %22s = %d\n", "StoredWidth", StoredWidth); - fprintf(stream, " %22s = %d\n", "StoredHeight", StoredHeight); - fprintf(stream, " %22s = %s\n", "AspectRatio", AspectRatio.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "PictureEssenceCoding", PictureEssenceCoding.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -GenericPictureEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -GenericPictureEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// RGBAEssenceDescriptor - -// - -RGBAEssenceDescriptor::RGBAEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentMaxRef(0), ComponentMinRef(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor); -} - -RGBAEssenceDescriptor::RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_RGBAEssenceDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -RGBAEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMaxRef)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(RGBAEssenceDescriptor, ComponentMinRef)); - return result; -} - -// -ASDCP::Result_t -RGBAEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMaxRef)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(RGBAEssenceDescriptor, ComponentMinRef)); - return result; -} - -// -void -RGBAEssenceDescriptor::Copy(const RGBAEssenceDescriptor& rhs) -{ - GenericPictureEssenceDescriptor::Copy(rhs); - ComponentMaxRef = rhs.ComponentMaxRef; - ComponentMinRef = rhs.ComponentMinRef; -} - -// -void -RGBAEssenceDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericPictureEssenceDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "ComponentMaxRef", ComponentMaxRef); - fprintf(stream, " %22s = %d\n", "ComponentMinRef", ComponentMinRef); -} - -// -ASDCP::Result_t -RGBAEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -RGBAEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// JPEG2000PictureSubDescriptor - -// - -JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), Rsize(0), Xsize(0), Ysize(0), XOsize(0), YOsize(0), XTsize(0), YTsize(0), XTOsize(0), YTOsize(0), Csize(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor); -} - -JPEG2000PictureSubDescriptor::JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_JPEG2000PictureSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -JPEG2000PictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Rsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Xsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Ysize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, XTOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, YTOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi16(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, Csize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault)); - return result; -} - -// -ASDCP::Result_t -JPEG2000PictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Rsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Xsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Ysize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, XTOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, YTOsize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi16(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, Csize)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, PictureComponentSizing)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, CodingStyleDefault)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(JPEG2000PictureSubDescriptor, QuantizationDefault)); - return result; -} - -// -void -JPEG2000PictureSubDescriptor::Copy(const JPEG2000PictureSubDescriptor& rhs) -{ - InterchangeObject::Copy(rhs); - Rsize = rhs.Rsize; - Xsize = rhs.Xsize; - Ysize = rhs.Ysize; - XOsize = rhs.XOsize; - YOsize = rhs.YOsize; - XTsize = rhs.XTsize; - YTsize = rhs.YTsize; - XTOsize = rhs.XTOsize; - YTOsize = rhs.YTOsize; - Csize = rhs.Csize; - PictureComponentSizing = rhs.PictureComponentSizing; - CodingStyleDefault = rhs.CodingStyleDefault; - QuantizationDefault = rhs.QuantizationDefault; -} - -// -void -JPEG2000PictureSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %d\n", "Rsize", Rsize); - fprintf(stream, " %22s = %d\n", "Xsize", Xsize); - fprintf(stream, " %22s = %d\n", "Ysize", Ysize); - fprintf(stream, " %22s = %d\n", "XOsize", XOsize); - fprintf(stream, " %22s = %d\n", "YOsize", YOsize); - fprintf(stream, " %22s = %d\n", "XTsize", XTsize); - fprintf(stream, " %22s = %d\n", "YTsize", YTsize); - fprintf(stream, " %22s = %d\n", "XTOsize", XTOsize); - fprintf(stream, " %22s = %d\n", "YTOsize", YTOsize); - fprintf(stream, " %22s = %d\n", "Csize", Csize); - fprintf(stream, " %22s = %s\n", "PictureComponentSizing", PictureComponentSizing.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "CodingStyleDefault", CodingStyleDefault.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "QuantizationDefault", QuantizationDefault.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -JPEG2000PictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -JPEG2000PictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// CDCIEssenceDescriptor - -// - -CDCIEssenceDescriptor::CDCIEssenceDescriptor(const Dictionary*& d) : GenericPictureEssenceDescriptor(d), m_Dict(d), ComponentDepth(0), HorizontalSubsampling(0), VerticalSubsampling(0), ColorSiting(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor); -} - -CDCIEssenceDescriptor::CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs) : GenericPictureEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_CDCIEssenceDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -CDCIEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPictureEssenceDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, ComponentDepth)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(CDCIEssenceDescriptor, VerticalSubsampling)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(CDCIEssenceDescriptor, ColorSiting)); - return result; -} - -// -ASDCP::Result_t -CDCIEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericPictureEssenceDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ComponentDepth)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, HorizontalSubsampling)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, VerticalSubsampling)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(CDCIEssenceDescriptor, ColorSiting)); - return result; -} - -// -void -CDCIEssenceDescriptor::Copy(const CDCIEssenceDescriptor& rhs) -{ - GenericPictureEssenceDescriptor::Copy(rhs); - ComponentDepth = rhs.ComponentDepth; - HorizontalSubsampling = rhs.HorizontalSubsampling; - VerticalSubsampling = rhs.VerticalSubsampling; - ColorSiting = rhs.ColorSiting; -} - -// -void -CDCIEssenceDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericPictureEssenceDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "ComponentDepth", ComponentDepth); - fprintf(stream, " %22s = %d\n", "HorizontalSubsampling", HorizontalSubsampling); - fprintf(stream, " %22s = %d\n", "VerticalSubsampling", VerticalSubsampling); - fprintf(stream, " %22s = %d\n", "ColorSiting", ColorSiting); -} - -// -ASDCP::Result_t -CDCIEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -CDCIEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// MPEG2VideoDescriptor - -// - -MPEG2VideoDescriptor::MPEG2VideoDescriptor(const Dictionary*& d) : CDCIEssenceDescriptor(d), m_Dict(d), CodedContentType(0), LowDelay(0), BitRate(0), ProfileAndLevel(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor); -} - -MPEG2VideoDescriptor::MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs) : CDCIEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_MPEG2VideoDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -MPEG2VideoDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = CDCIEssenceDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, CodedContentType)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, LowDelay)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MPEG2VideoDescriptor, BitRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi8(OBJ_READ_ARGS(MPEG2VideoDescriptor, ProfileAndLevel)); - return result; -} - -// -ASDCP::Result_t -MPEG2VideoDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = CDCIEssenceDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, CodedContentType)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, LowDelay)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, BitRate)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS(MPEG2VideoDescriptor, ProfileAndLevel)); - return result; -} - -// -void -MPEG2VideoDescriptor::Copy(const MPEG2VideoDescriptor& rhs) -{ - CDCIEssenceDescriptor::Copy(rhs); - CodedContentType = rhs.CodedContentType; - LowDelay = rhs.LowDelay; - BitRate = rhs.BitRate; - ProfileAndLevel = rhs.ProfileAndLevel; -} - -// -void -MPEG2VideoDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - CDCIEssenceDescriptor::Dump(stream); - fprintf(stream, " %22s = %d\n", "CodedContentType", CodedContentType); - fprintf(stream, " %22s = %d\n", "LowDelay", LowDelay); - fprintf(stream, " %22s = %d\n", "BitRate", BitRate); - fprintf(stream, " %22s = %d\n", "ProfileAndLevel", ProfileAndLevel); -} - -// -ASDCP::Result_t -MPEG2VideoDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -MPEG2VideoDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// DMSegment - -// - -DMSegment::DMSegment(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EventStartPosition(0), Duration(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_DMSegment); -} - -DMSegment::DMSegment(const DMSegment& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_DMSegment); - Copy(rhs); -} - - -// -ASDCP::Result_t -DMSegment::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, EventStartPosition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi64(OBJ_READ_ARGS(DMSegment, Duration)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, EventComment)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(DMSegment, DMFramework)); - return result; -} - -// -ASDCP::Result_t -DMSegment::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DataDefinition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, EventStartPosition)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi64(OBJ_WRITE_ARGS(DMSegment, Duration)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, EventComment)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(DMSegment, DMFramework)); - return result; -} - -// -void -DMSegment::Copy(const DMSegment& rhs) -{ - InterchangeObject::Copy(rhs); - DataDefinition = rhs.DataDefinition; - EventStartPosition = rhs.EventStartPosition; - Duration = rhs.Duration; - EventComment = rhs.EventComment; - DMFramework = rhs.DMFramework; -} - -// -void -DMSegment::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "DataDefinition", DataDefinition.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "EventStartPosition", i64sz(EventStartPosition, identbuf)); - fprintf(stream, " %22s = %s\n", "Duration", i64sz(Duration, identbuf)); - fprintf(stream, " %22s = %s\n", "EventComment", EventComment.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "DMFramework", DMFramework.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -DMSegment::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -DMSegment::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// CryptographicFramework - -// - -CryptographicFramework::CryptographicFramework(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_CryptographicFramework); -} - -CryptographicFramework::CryptographicFramework(const CryptographicFramework& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_CryptographicFramework); - Copy(rhs); -} - - -// -ASDCP::Result_t -CryptographicFramework::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicFramework, ContextSR)); - return result; -} - -// -ASDCP::Result_t -CryptographicFramework::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicFramework, ContextSR)); - return result; -} - -// -void -CryptographicFramework::Copy(const CryptographicFramework& rhs) -{ - InterchangeObject::Copy(rhs); - ContextSR = rhs.ContextSR; -} - -// -void -CryptographicFramework::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "ContextSR", ContextSR.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -CryptographicFramework::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -CryptographicFramework::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// CryptographicContext - -// - -CryptographicContext::CryptographicContext(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_CryptographicContext); -} - -CryptographicContext::CryptographicContext(const CryptographicContext& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_CryptographicContext); - Copy(rhs); -} - - -// -ASDCP::Result_t -CryptographicContext::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, ContextID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, SourceEssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CipherAlgorithm)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, MICAlgorithm)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(CryptographicContext, CryptographicKeyID)); - return result; -} - -// -ASDCP::Result_t -CryptographicContext::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, ContextID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, SourceEssenceContainer)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CipherAlgorithm)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, MICAlgorithm)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(CryptographicContext, CryptographicKeyID)); - return result; -} - -// -void -CryptographicContext::Copy(const CryptographicContext& rhs) -{ - InterchangeObject::Copy(rhs); - ContextID = rhs.ContextID; - SourceEssenceContainer = rhs.SourceEssenceContainer; - CipherAlgorithm = rhs.CipherAlgorithm; - MICAlgorithm = rhs.MICAlgorithm; - CryptographicKeyID = rhs.CryptographicKeyID; -} - -// -void -CryptographicContext::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "ContextID", ContextID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "SourceEssenceContainer", SourceEssenceContainer.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "CipherAlgorithm", CipherAlgorithm.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "MICAlgorithm", MICAlgorithm.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "CryptographicKeyID", CryptographicKeyID.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -CryptographicContext::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -CryptographicContext::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GenericDataEssenceDescriptor - -// - -GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const Dictionary*& d) : FileDescriptor(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor); -} - -GenericDataEssenceDescriptor::GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs) : FileDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GenericDataEssenceDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -GenericDataEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = FileDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding)); - return result; -} - -// -ASDCP::Result_t -GenericDataEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = FileDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericDataEssenceDescriptor, DataEssenceCoding)); - return result; -} - -// -void -GenericDataEssenceDescriptor::Copy(const GenericDataEssenceDescriptor& rhs) -{ - FileDescriptor::Copy(rhs); - DataEssenceCoding = rhs.DataEssenceCoding; -} - -// -void -GenericDataEssenceDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - FileDescriptor::Dump(stream); - fprintf(stream, " %22s = %s\n", "DataEssenceCoding", DataEssenceCoding.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -GenericDataEssenceDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -GenericDataEssenceDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// TimedTextDescriptor - -// - -TimedTextDescriptor::TimedTextDescriptor(const Dictionary*& d) : GenericDataEssenceDescriptor(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_TimedTextDescriptor); -} - -TimedTextDescriptor::TimedTextDescriptor(const TimedTextDescriptor& rhs) : GenericDataEssenceDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_TimedTextDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -TimedTextDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDataEssenceDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, ResourceID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, UCSEncoding)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextDescriptor, NamespaceURI)); - return result; -} - -// -ASDCP::Result_t -TimedTextDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = GenericDataEssenceDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, ResourceID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, UCSEncoding)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextDescriptor, NamespaceURI)); - return result; -} - -// -void -TimedTextDescriptor::Copy(const TimedTextDescriptor& rhs) -{ - GenericDataEssenceDescriptor::Copy(rhs); - ResourceID = rhs.ResourceID; - UCSEncoding = rhs.UCSEncoding; - NamespaceURI = rhs.NamespaceURI; -} - -// -void -TimedTextDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - GenericDataEssenceDescriptor::Dump(stream); - fprintf(stream, " %22s = %s\n", "ResourceID", ResourceID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "UCSEncoding", UCSEncoding.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "NamespaceURI", NamespaceURI.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -TimedTextDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -TimedTextDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// TimedTextResourceSubDescriptor - -// - -TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), EssenceStreamID(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor); -} - -TimedTextResourceSubDescriptor::TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_TimedTextResourceSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -TimedTextResourceSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID)); - return result; -} - -// -ASDCP::Result_t -TimedTextResourceSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, AncillaryResourceID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, MIMEMediaType)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(TimedTextResourceSubDescriptor, EssenceStreamID)); - return result; -} - -// -void -TimedTextResourceSubDescriptor::Copy(const TimedTextResourceSubDescriptor& rhs) -{ - InterchangeObject::Copy(rhs); - AncillaryResourceID = rhs.AncillaryResourceID; - MIMEMediaType = rhs.MIMEMediaType; - EssenceStreamID = rhs.EssenceStreamID; -} - -// -void -TimedTextResourceSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "AncillaryResourceID", AncillaryResourceID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "MIMEMediaType", MIMEMediaType.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %d\n", "EssenceStreamID", EssenceStreamID); -} - -// -ASDCP::Result_t -TimedTextResourceSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -TimedTextResourceSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// StereoscopicPictureSubDescriptor - -// - -StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor); -} - -StereoscopicPictureSubDescriptor::StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_StereoscopicPictureSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -StereoscopicPictureSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - return result; -} - -// -ASDCP::Result_t -StereoscopicPictureSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - return result; -} - -// -void -StereoscopicPictureSubDescriptor::Copy(const StereoscopicPictureSubDescriptor& rhs) -{ - InterchangeObject::Copy(rhs); -} - -// -void -StereoscopicPictureSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); -} - -// -ASDCP::Result_t -StereoscopicPictureSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -StereoscopicPictureSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// NetworkLocator - -// - -NetworkLocator::NetworkLocator(const Dictionary*& d) : InterchangeObject(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_NetworkLocator); -} - -NetworkLocator::NetworkLocator(const NetworkLocator& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_NetworkLocator); - Copy(rhs); -} - - -// -ASDCP::Result_t -NetworkLocator::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(NetworkLocator, URLString)); - return result; -} - -// -ASDCP::Result_t -NetworkLocator::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(NetworkLocator, URLString)); - return result; -} - -// -void -NetworkLocator::Copy(const NetworkLocator& rhs) -{ - InterchangeObject::Copy(rhs); - URLString = rhs.URLString; -} - -// -void -NetworkLocator::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "URLString", URLString.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -NetworkLocator::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -NetworkLocator::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// MCALabelSubDescriptor - -// - -MCALabelSubDescriptor::MCALabelSubDescriptor(const Dictionary*& d) : InterchangeObject(d), m_Dict(d), MCAChannelID(0) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor); -} - -MCALabelSubDescriptor::MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs) : InterchangeObject(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_MCALabelSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -MCALabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCALinkID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagSymbol)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, MCATagName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadUi32(OBJ_READ_ARGS(MCALabelSubDescriptor, MCAChannelID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(MCALabelSubDescriptor, RFC5646SpokenLanguage)); - return result; -} - -// -ASDCP::Result_t -MCALabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = InterchangeObject::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALabelDictionaryID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCALinkID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagSymbol)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCATagName)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(MCALabelSubDescriptor, MCAChannelID)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(MCALabelSubDescriptor, RFC5646SpokenLanguage)); - return result; -} - -// -void -MCALabelSubDescriptor::Copy(const MCALabelSubDescriptor& rhs) -{ - InterchangeObject::Copy(rhs); - MCALabelDictionaryID = rhs.MCALabelDictionaryID; - MCALinkID = rhs.MCALinkID; - MCATagSymbol = rhs.MCATagSymbol; - MCATagName = rhs.MCATagName; - MCAChannelID = rhs.MCAChannelID; - RFC5646SpokenLanguage = rhs.RFC5646SpokenLanguage; -} - -// -void -MCALabelSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - InterchangeObject::Dump(stream); - fprintf(stream, " %22s = %s\n", "MCALabelDictionaryID", MCALabelDictionaryID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "MCALinkID", MCALinkID.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "MCATagSymbol", MCATagSymbol.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "MCATagName", MCATagName.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %d\n", "MCAChannelID", MCAChannelID); - fprintf(stream, " %22s = %s\n", "RFC5646SpokenLanguage", RFC5646SpokenLanguage.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -MCALabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -MCALabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// AudioChannelLabelSubDescriptor - -// - -AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor); -} - -AudioChannelLabelSubDescriptor::AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_AudioChannelLabelSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -AudioChannelLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID)); - return result; -} - -// -ASDCP::Result_t -AudioChannelLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(AudioChannelLabelSubDescriptor, SoundfieldGroupLinkID)); - return result; -} - -// -void -AudioChannelLabelSubDescriptor::Copy(const AudioChannelLabelSubDescriptor& rhs) -{ - MCALabelSubDescriptor::Copy(rhs); - SoundfieldGroupLinkID = rhs.SoundfieldGroupLinkID; -} - -// -void -AudioChannelLabelSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - MCALabelSubDescriptor::Dump(stream); - fprintf(stream, " %22s = %s\n", "SoundfieldGroupLinkID", SoundfieldGroupLinkID.EncodeString(identbuf, IdentBufferLen)); -} - -// -ASDCP::Result_t -AudioChannelLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -AudioChannelLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// SoundfieldGroupLabelSubDescriptor - -// - -SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor); -} - -SoundfieldGroupLabelSubDescriptor::SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_SoundfieldGroupLabelSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -SoundfieldGroupLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID)); - return result; -} - -// -ASDCP::Result_t -SoundfieldGroupLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(SoundfieldGroupLabelSubDescriptor, GroupOfSoundfieldGroupsLinkID)); - return result; -} - -// -void -SoundfieldGroupLabelSubDescriptor::Copy(const SoundfieldGroupLabelSubDescriptor& rhs) -{ - MCALabelSubDescriptor::Copy(rhs); - GroupOfSoundfieldGroupsLinkID = rhs.GroupOfSoundfieldGroupsLinkID; -} - -// -void -SoundfieldGroupLabelSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - MCALabelSubDescriptor::Dump(stream); - fprintf(stream, " %22s:\n", "GroupOfSoundfieldGroupsLinkID"); - GroupOfSoundfieldGroupsLinkID.Dump(stream); -} - -// -ASDCP::Result_t -SoundfieldGroupLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -SoundfieldGroupLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -//------------------------------------------------------------------------------------------ -// GroupOfSoundfieldGroupsLabelSubDescriptor - -// - -GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d) : MCALabelSubDescriptor(d), m_Dict(d) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor); -} - -GroupOfSoundfieldGroupsLabelSubDescriptor::GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) : MCALabelSubDescriptor(rhs.m_Dict), m_Dict(rhs.m_Dict) -{ - assert(m_Dict); - m_UL = m_Dict->ul(MDD_GroupOfSoundfieldGroupsLabelSubDescriptor); - Copy(rhs); -} - - -// -ASDCP::Result_t -GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromTLVSet(TLVReader& TLVSet) -{ - assert(m_Dict); - Result_t result = MCALabelSubDescriptor::InitFromTLVSet(TLVSet); - return result; -} - -// -ASDCP::Result_t -GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToTLVSet(TLVWriter& TLVSet) -{ - assert(m_Dict); - Result_t result = MCALabelSubDescriptor::WriteToTLVSet(TLVSet); - return result; -} - -// -void -GroupOfSoundfieldGroupsLabelSubDescriptor::Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) -{ - MCALabelSubDescriptor::Copy(rhs); -} - -// -void -GroupOfSoundfieldGroupsLabelSubDescriptor::Dump(FILE* stream) -{ - char identbuf[IdentBufferLen]; - *identbuf = 0; - - if ( stream == 0 ) - stream = stderr; - - MCALabelSubDescriptor::Dump(stream); -} - -// -ASDCP::Result_t -GroupOfSoundfieldGroupsLabelSubDescriptor::InitFromBuffer(const byte_t* p, ui32_t l) -{ - return InterchangeObject::InitFromBuffer(p, l); -} - -// -ASDCP::Result_t -GroupOfSoundfieldGroupsLabelSubDescriptor::WriteToBuffer(ASDCP::FrameBuffer& Buffer) -{ - return InterchangeObject::WriteToBuffer(Buffer); -} - -// -// end Metadata.cpp -// diff --git a/asdcplib/src/Metadata.h b/asdcplib/src/Metadata.h deleted file mode 100755 index 3360cdf..0000000 --- a/asdcplib/src/Metadata.h +++ /dev/null @@ -1,900 +0,0 @@ -/* -Copyright (c) 2005-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file Metadata.h - \version $Id: Metadata.h,v 1.29 2012/02/21 02:09:31 jhurst Exp $ - \brief MXF metadata objects -*/ - -#ifndef _Metadata_H_ -#define _Metadata_H_ - -#include "MXF.h" - -namespace ASDCP -{ - namespace MXF - { - void Metadata_InitTypes(const Dictionary*& Dict); - - // - - // - class Identification : public InterchangeObject - { - Identification(); - - public: - const Dictionary*& m_Dict; - UUID ThisGenerationUID; - UTF16String CompanyName; - UTF16String ProductName; - VersionType ProductVersion; - UTF16String VersionString; - UUID ProductUID; - Kumu::Timestamp ModificationDate; - VersionType ToolkitVersion; - UTF16String Platform; - - Identification(const Dictionary*& d); - Identification(const Identification& rhs); - virtual ~Identification() {} - - const Identification& operator=(const Identification& rhs) { Copy(rhs); return *this; } - virtual void Copy(const Identification& rhs); - virtual const char* HasName() { return "Identification"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class ContentStorage : public InterchangeObject - { - ContentStorage(); - - public: - const Dictionary*& m_Dict; - Batch<UUID> Packages; - Batch<UUID> EssenceContainerData; - - ContentStorage(const Dictionary*& d); - ContentStorage(const ContentStorage& rhs); - virtual ~ContentStorage() {} - - const ContentStorage& operator=(const ContentStorage& rhs) { Copy(rhs); return *this; } - virtual void Copy(const ContentStorage& rhs); - virtual const char* HasName() { return "ContentStorage"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class EssenceContainerData : public InterchangeObject - { - EssenceContainerData(); - - public: - const Dictionary*& m_Dict; - UMID LinkedPackageUID; - ui32_t IndexSID; - ui32_t BodySID; - - EssenceContainerData(const Dictionary*& d); - EssenceContainerData(const EssenceContainerData& rhs); - virtual ~EssenceContainerData() {} - - const EssenceContainerData& operator=(const EssenceContainerData& rhs) { Copy(rhs); return *this; } - virtual void Copy(const EssenceContainerData& rhs); - virtual const char* HasName() { return "EssenceContainerData"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GenericPackage : public InterchangeObject - { - GenericPackage(); - - public: - const Dictionary*& m_Dict; - UMID PackageUID; - UTF16String Name; - Kumu::Timestamp PackageCreationDate; - Kumu::Timestamp PackageModifiedDate; - Batch<UUID> Tracks; - - GenericPackage(const Dictionary*& d); - GenericPackage(const GenericPackage& rhs); - virtual ~GenericPackage() {} - - const GenericPackage& operator=(const GenericPackage& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GenericPackage& rhs); - virtual const char* HasName() { return "GenericPackage"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - }; - - // - class MaterialPackage : public GenericPackage - { - MaterialPackage(); - - public: - const Dictionary*& m_Dict; - - MaterialPackage(const Dictionary*& d); - MaterialPackage(const MaterialPackage& rhs); - virtual ~MaterialPackage() {} - - const MaterialPackage& operator=(const MaterialPackage& rhs) { Copy(rhs); return *this; } - virtual void Copy(const MaterialPackage& rhs); - virtual const char* HasName() { return "MaterialPackage"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class SourcePackage : public GenericPackage - { - SourcePackage(); - - public: - const Dictionary*& m_Dict; - UUID Descriptor; - - SourcePackage(const Dictionary*& d); - SourcePackage(const SourcePackage& rhs); - virtual ~SourcePackage() {} - - const SourcePackage& operator=(const SourcePackage& rhs) { Copy(rhs); return *this; } - virtual void Copy(const SourcePackage& rhs); - virtual const char* HasName() { return "SourcePackage"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GenericTrack : public InterchangeObject - { - GenericTrack(); - - public: - const Dictionary*& m_Dict; - ui32_t TrackID; - ui32_t TrackNumber; - UTF16String TrackName; - UUID Sequence; - - GenericTrack(const Dictionary*& d); - GenericTrack(const GenericTrack& rhs); - virtual ~GenericTrack() {} - - const GenericTrack& operator=(const GenericTrack& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GenericTrack& rhs); - virtual const char* HasName() { return "GenericTrack"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - }; - - // - class StaticTrack : public GenericTrack - { - StaticTrack(); - - public: - const Dictionary*& m_Dict; - - StaticTrack(const Dictionary*& d); - StaticTrack(const StaticTrack& rhs); - virtual ~StaticTrack() {} - - const StaticTrack& operator=(const StaticTrack& rhs) { Copy(rhs); return *this; } - virtual void Copy(const StaticTrack& rhs); - virtual const char* HasName() { return "StaticTrack"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class Track : public GenericTrack - { - Track(); - - public: - const Dictionary*& m_Dict; - Rational EditRate; - ui64_t Origin; - - Track(const Dictionary*& d); - Track(const Track& rhs); - virtual ~Track() {} - - const Track& operator=(const Track& rhs) { Copy(rhs); return *this; } - virtual void Copy(const Track& rhs); - virtual const char* HasName() { return "Track"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class StructuralComponent : public InterchangeObject - { - StructuralComponent(); - - public: - const Dictionary*& m_Dict; - UL DataDefinition; - ui64_t Duration; - - StructuralComponent(const Dictionary*& d); - StructuralComponent(const StructuralComponent& rhs); - virtual ~StructuralComponent() {} - - const StructuralComponent& operator=(const StructuralComponent& rhs) { Copy(rhs); return *this; } - virtual void Copy(const StructuralComponent& rhs); - virtual const char* HasName() { return "StructuralComponent"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - }; - - // - class Sequence : public StructuralComponent - { - Sequence(); - - public: - const Dictionary*& m_Dict; - Batch<UUID> StructuralComponents; - - Sequence(const Dictionary*& d); - Sequence(const Sequence& rhs); - virtual ~Sequence() {} - - const Sequence& operator=(const Sequence& rhs) { Copy(rhs); return *this; } - virtual void Copy(const Sequence& rhs); - virtual const char* HasName() { return "Sequence"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class SourceClip : public StructuralComponent - { - SourceClip(); - - public: - const Dictionary*& m_Dict; - ui64_t StartPosition; - UMID SourcePackageID; - ui32_t SourceTrackID; - - SourceClip(const Dictionary*& d); - SourceClip(const SourceClip& rhs); - virtual ~SourceClip() {} - - const SourceClip& operator=(const SourceClip& rhs) { Copy(rhs); return *this; } - virtual void Copy(const SourceClip& rhs); - virtual const char* HasName() { return "SourceClip"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class TimecodeComponent : public StructuralComponent - { - TimecodeComponent(); - - public: - const Dictionary*& m_Dict; - ui16_t RoundedTimecodeBase; - ui64_t StartTimecode; - ui8_t DropFrame; - - TimecodeComponent(const Dictionary*& d); - TimecodeComponent(const TimecodeComponent& rhs); - virtual ~TimecodeComponent() {} - - const TimecodeComponent& operator=(const TimecodeComponent& rhs) { Copy(rhs); return *this; } - virtual void Copy(const TimecodeComponent& rhs); - virtual const char* HasName() { return "TimecodeComponent"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GenericDescriptor : public InterchangeObject - { - GenericDescriptor(); - - public: - const Dictionary*& m_Dict; - Batch<UUID> Locators; - Batch<UUID> SubDescriptors; - - GenericDescriptor(const Dictionary*& d); - GenericDescriptor(const GenericDescriptor& rhs); - virtual ~GenericDescriptor() {} - - const GenericDescriptor& operator=(const GenericDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GenericDescriptor& rhs); - virtual const char* HasName() { return "GenericDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - }; - - // - class FileDescriptor : public GenericDescriptor - { - FileDescriptor(); - - public: - const Dictionary*& m_Dict; - ui32_t LinkedTrackID; - Rational SampleRate; - ui64_t ContainerDuration; - UL EssenceContainer; - UL Codec; - - FileDescriptor(const Dictionary*& d); - FileDescriptor(const FileDescriptor& rhs); - virtual ~FileDescriptor() {} - - const FileDescriptor& operator=(const FileDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const FileDescriptor& rhs); - virtual const char* HasName() { return "FileDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GenericSoundEssenceDescriptor : public FileDescriptor - { - GenericSoundEssenceDescriptor(); - - public: - const Dictionary*& m_Dict; - Rational AudioSamplingRate; - ui8_t Locked; - ui8_t AudioRefLevel; - ui32_t ChannelCount; - ui32_t QuantizationBits; - ui8_t DialNorm; - - GenericSoundEssenceDescriptor(const Dictionary*& d); - GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs); - virtual ~GenericSoundEssenceDescriptor() {} - - const GenericSoundEssenceDescriptor& operator=(const GenericSoundEssenceDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GenericSoundEssenceDescriptor& rhs); - virtual const char* HasName() { return "GenericSoundEssenceDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class WaveAudioDescriptor : public GenericSoundEssenceDescriptor - { - WaveAudioDescriptor(); - - public: - const Dictionary*& m_Dict; - ui16_t BlockAlign; - ui8_t SequenceOffset; - ui32_t AvgBps; - UL ChannelAssignment; - - WaveAudioDescriptor(const Dictionary*& d); - WaveAudioDescriptor(const WaveAudioDescriptor& rhs); - virtual ~WaveAudioDescriptor() {} - - const WaveAudioDescriptor& operator=(const WaveAudioDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const WaveAudioDescriptor& rhs); - virtual const char* HasName() { return "WaveAudioDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GenericPictureEssenceDescriptor : public FileDescriptor - { - GenericPictureEssenceDescriptor(); - - public: - const Dictionary*& m_Dict; - ui8_t FrameLayout; - ui32_t StoredWidth; - ui32_t StoredHeight; - Rational AspectRatio; - UL PictureEssenceCoding; - - GenericPictureEssenceDescriptor(const Dictionary*& d); - GenericPictureEssenceDescriptor(const GenericPictureEssenceDescriptor& rhs); - virtual ~GenericPictureEssenceDescriptor() {} - - const GenericPictureEssenceDescriptor& operator=(const GenericPictureEssenceDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GenericPictureEssenceDescriptor& rhs); - virtual const char* HasName() { return "GenericPictureEssenceDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class RGBAEssenceDescriptor : public GenericPictureEssenceDescriptor - { - RGBAEssenceDescriptor(); - - public: - const Dictionary*& m_Dict; - ui32_t ComponentMaxRef; - ui32_t ComponentMinRef; - - RGBAEssenceDescriptor(const Dictionary*& d); - RGBAEssenceDescriptor(const RGBAEssenceDescriptor& rhs); - virtual ~RGBAEssenceDescriptor() {} - - const RGBAEssenceDescriptor& operator=(const RGBAEssenceDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const RGBAEssenceDescriptor& rhs); - virtual const char* HasName() { return "RGBAEssenceDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class JPEG2000PictureSubDescriptor : public InterchangeObject - { - JPEG2000PictureSubDescriptor(); - - public: - const Dictionary*& m_Dict; - ui16_t Rsize; - ui32_t Xsize; - ui32_t Ysize; - ui32_t XOsize; - ui32_t YOsize; - ui32_t XTsize; - ui32_t YTsize; - ui32_t XTOsize; - ui32_t YTOsize; - ui16_t Csize; - Raw PictureComponentSizing; - Raw CodingStyleDefault; - Raw QuantizationDefault; - - JPEG2000PictureSubDescriptor(const Dictionary*& d); - JPEG2000PictureSubDescriptor(const JPEG2000PictureSubDescriptor& rhs); - virtual ~JPEG2000PictureSubDescriptor() {} - - const JPEG2000PictureSubDescriptor& operator=(const JPEG2000PictureSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const JPEG2000PictureSubDescriptor& rhs); - virtual const char* HasName() { return "JPEG2000PictureSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class CDCIEssenceDescriptor : public GenericPictureEssenceDescriptor - { - CDCIEssenceDescriptor(); - - public: - const Dictionary*& m_Dict; - ui32_t ComponentDepth; - ui32_t HorizontalSubsampling; - ui32_t VerticalSubsampling; - ui8_t ColorSiting; - - CDCIEssenceDescriptor(const Dictionary*& d); - CDCIEssenceDescriptor(const CDCIEssenceDescriptor& rhs); - virtual ~CDCIEssenceDescriptor() {} - - const CDCIEssenceDescriptor& operator=(const CDCIEssenceDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const CDCIEssenceDescriptor& rhs); - virtual const char* HasName() { return "CDCIEssenceDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class MPEG2VideoDescriptor : public CDCIEssenceDescriptor - { - MPEG2VideoDescriptor(); - - public: - const Dictionary*& m_Dict; - ui8_t CodedContentType; - ui8_t LowDelay; - ui32_t BitRate; - ui8_t ProfileAndLevel; - - MPEG2VideoDescriptor(const Dictionary*& d); - MPEG2VideoDescriptor(const MPEG2VideoDescriptor& rhs); - virtual ~MPEG2VideoDescriptor() {} - - const MPEG2VideoDescriptor& operator=(const MPEG2VideoDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const MPEG2VideoDescriptor& rhs); - virtual const char* HasName() { return "MPEG2VideoDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class DMSegment : public InterchangeObject - { - DMSegment(); - - public: - const Dictionary*& m_Dict; - UL DataDefinition; - ui64_t EventStartPosition; - ui64_t Duration; - UTF16String EventComment; - UUID DMFramework; - - DMSegment(const Dictionary*& d); - DMSegment(const DMSegment& rhs); - virtual ~DMSegment() {} - - const DMSegment& operator=(const DMSegment& rhs) { Copy(rhs); return *this; } - virtual void Copy(const DMSegment& rhs); - virtual const char* HasName() { return "DMSegment"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class CryptographicFramework : public InterchangeObject - { - CryptographicFramework(); - - public: - const Dictionary*& m_Dict; - UUID ContextSR; - - CryptographicFramework(const Dictionary*& d); - CryptographicFramework(const CryptographicFramework& rhs); - virtual ~CryptographicFramework() {} - - const CryptographicFramework& operator=(const CryptographicFramework& rhs) { Copy(rhs); return *this; } - virtual void Copy(const CryptographicFramework& rhs); - virtual const char* HasName() { return "CryptographicFramework"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class CryptographicContext : public InterchangeObject - { - CryptographicContext(); - - public: - const Dictionary*& m_Dict; - UUID ContextID; - UL SourceEssenceContainer; - UL CipherAlgorithm; - UL MICAlgorithm; - UUID CryptographicKeyID; - - CryptographicContext(const Dictionary*& d); - CryptographicContext(const CryptographicContext& rhs); - virtual ~CryptographicContext() {} - - const CryptographicContext& operator=(const CryptographicContext& rhs) { Copy(rhs); return *this; } - virtual void Copy(const CryptographicContext& rhs); - virtual const char* HasName() { return "CryptographicContext"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GenericDataEssenceDescriptor : public FileDescriptor - { - GenericDataEssenceDescriptor(); - - public: - const Dictionary*& m_Dict; - UL DataEssenceCoding; - - GenericDataEssenceDescriptor(const Dictionary*& d); - GenericDataEssenceDescriptor(const GenericDataEssenceDescriptor& rhs); - virtual ~GenericDataEssenceDescriptor() {} - - const GenericDataEssenceDescriptor& operator=(const GenericDataEssenceDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GenericDataEssenceDescriptor& rhs); - virtual const char* HasName() { return "GenericDataEssenceDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class TimedTextDescriptor : public GenericDataEssenceDescriptor - { - TimedTextDescriptor(); - - public: - const Dictionary*& m_Dict; - UUID ResourceID; - UTF16String UCSEncoding; - UTF16String NamespaceURI; - - TimedTextDescriptor(const Dictionary*& d); - TimedTextDescriptor(const TimedTextDescriptor& rhs); - virtual ~TimedTextDescriptor() {} - - const TimedTextDescriptor& operator=(const TimedTextDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const TimedTextDescriptor& rhs); - virtual const char* HasName() { return "TimedTextDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class TimedTextResourceSubDescriptor : public InterchangeObject - { - TimedTextResourceSubDescriptor(); - - public: - const Dictionary*& m_Dict; - UUID AncillaryResourceID; - UTF16String MIMEMediaType; - ui32_t EssenceStreamID; - - TimedTextResourceSubDescriptor(const Dictionary*& d); - TimedTextResourceSubDescriptor(const TimedTextResourceSubDescriptor& rhs); - virtual ~TimedTextResourceSubDescriptor() {} - - const TimedTextResourceSubDescriptor& operator=(const TimedTextResourceSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const TimedTextResourceSubDescriptor& rhs); - virtual const char* HasName() { return "TimedTextResourceSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class StereoscopicPictureSubDescriptor : public InterchangeObject - { - StereoscopicPictureSubDescriptor(); - - public: - const Dictionary*& m_Dict; - - StereoscopicPictureSubDescriptor(const Dictionary*& d); - StereoscopicPictureSubDescriptor(const StereoscopicPictureSubDescriptor& rhs); - virtual ~StereoscopicPictureSubDescriptor() {} - - const StereoscopicPictureSubDescriptor& operator=(const StereoscopicPictureSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const StereoscopicPictureSubDescriptor& rhs); - virtual const char* HasName() { return "StereoscopicPictureSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class NetworkLocator : public InterchangeObject - { - NetworkLocator(); - - public: - const Dictionary*& m_Dict; - UTF16String URLString; - - NetworkLocator(const Dictionary*& d); - NetworkLocator(const NetworkLocator& rhs); - virtual ~NetworkLocator() {} - - const NetworkLocator& operator=(const NetworkLocator& rhs) { Copy(rhs); return *this; } - virtual void Copy(const NetworkLocator& rhs); - virtual const char* HasName() { return "NetworkLocator"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class MCALabelSubDescriptor : public InterchangeObject - { - MCALabelSubDescriptor(); - - public: - const Dictionary*& m_Dict; - UL MCALabelDictionaryID; - UUID MCALinkID; - UTF16String MCATagSymbol; - UTF16String MCATagName; - ui32_t MCAChannelID; - ISO8String RFC5646SpokenLanguage; - - MCALabelSubDescriptor(const Dictionary*& d); - MCALabelSubDescriptor(const MCALabelSubDescriptor& rhs); - virtual ~MCALabelSubDescriptor() {} - - const MCALabelSubDescriptor& operator=(const MCALabelSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const MCALabelSubDescriptor& rhs); - virtual const char* HasName() { return "MCALabelSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class AudioChannelLabelSubDescriptor : public MCALabelSubDescriptor - { - AudioChannelLabelSubDescriptor(); - - public: - const Dictionary*& m_Dict; - UUID SoundfieldGroupLinkID; - - AudioChannelLabelSubDescriptor(const Dictionary*& d); - AudioChannelLabelSubDescriptor(const AudioChannelLabelSubDescriptor& rhs); - virtual ~AudioChannelLabelSubDescriptor() {} - - const AudioChannelLabelSubDescriptor& operator=(const AudioChannelLabelSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const AudioChannelLabelSubDescriptor& rhs); - virtual const char* HasName() { return "AudioChannelLabelSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class SoundfieldGroupLabelSubDescriptor : public MCALabelSubDescriptor - { - SoundfieldGroupLabelSubDescriptor(); - - public: - const Dictionary*& m_Dict; - Array<UUID> GroupOfSoundfieldGroupsLinkID; - - SoundfieldGroupLabelSubDescriptor(const Dictionary*& d); - SoundfieldGroupLabelSubDescriptor(const SoundfieldGroupLabelSubDescriptor& rhs); - virtual ~SoundfieldGroupLabelSubDescriptor() {} - - const SoundfieldGroupLabelSubDescriptor& operator=(const SoundfieldGroupLabelSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const SoundfieldGroupLabelSubDescriptor& rhs); - virtual const char* HasName() { return "SoundfieldGroupLabelSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - // - class GroupOfSoundfieldGroupsLabelSubDescriptor : public MCALabelSubDescriptor - { - GroupOfSoundfieldGroupsLabelSubDescriptor(); - - public: - const Dictionary*& m_Dict; - - GroupOfSoundfieldGroupsLabelSubDescriptor(const Dictionary*& d); - GroupOfSoundfieldGroupsLabelSubDescriptor(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs); - virtual ~GroupOfSoundfieldGroupsLabelSubDescriptor() {} - - const GroupOfSoundfieldGroupsLabelSubDescriptor& operator=(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs) { Copy(rhs); return *this; } - virtual void Copy(const GroupOfSoundfieldGroupsLabelSubDescriptor& rhs); - virtual const char* HasName() { return "GroupOfSoundfieldGroupsLabelSubDescriptor"; } - virtual Result_t InitFromTLVSet(TLVReader& TLVSet); - virtual Result_t WriteToTLVSet(TLVWriter& TLVSet); - virtual void Dump(FILE* = 0); - virtual Result_t InitFromBuffer(const byte_t* p, ui32_t l); - virtual Result_t WriteToBuffer(ASDCP::FrameBuffer&); - }; - - } // namespace MXF -} // namespace ASDCP - - -#endif // _Metadata_H_ - -// -// end Metadata.h -// diff --git a/asdcplib/src/PCMParserList.cpp b/asdcplib/src/PCMParserList.cpp deleted file mode 100755 index 444b883..0000000 --- a/asdcplib/src/PCMParserList.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file PCMParserList.cpp - \version $Id: PCMParserList.cpp,v 1.9 2012/02/21 02:09:31 jhurst Exp $ - \brief Read WAV file(s), multiplex multiple PCM frame buffers into one -*/ - -#include <PCMParserList.h> -#include <KM_fileio.h> -#include <KM_log.h> -#include <assert.h> - -using namespace ASDCP; -using namespace Kumu; - - -ASDCP::ParserInstance::ParserInstance() : m_p(0), m_SampleSize(0) -{ -} - -ASDCP::ParserInstance::~ParserInstance() -{ -} - -// PCM::CalcSampleSize(ADesc); -Result_t -ASDCP::ParserInstance::OpenRead(const char* filename, const Rational& PictureRate) -{ - ASDCP_TEST_NULL_STR(filename); - - Result_t result = Parser.OpenRead(filename, PictureRate); - - if ( ASDCP_SUCCESS(result) ) - result = Parser.FillAudioDescriptor(ADesc); - - if ( ASDCP_SUCCESS(result) ) - { - ADesc.EditRate = PictureRate; - m_SampleSize = PCM::CalcSampleSize(ADesc); - result = FB.Capacity(PCM::CalcFrameBufferSize(ADesc)); - } - - return result; -} - - -// deposit the next available sample into the given framebuffer -Result_t -ASDCP::ParserInstance::PutSample(byte_t* p) -{ - ASDCP_TEST_NULL(p); - - memcpy(p, m_p, m_SampleSize); - m_p += m_SampleSize; - return RESULT_OK; -} - - -// -Result_t -ASDCP::ParserInstance::ReadFrame() -{ - Result_t result = Parser.ReadFrame(FB); - m_p = ASDCP_SUCCESS(result) ? FB.RoData() : 0; - return result; -} - - -//------------------------------------------------------------------------------------------ -// - - -// -ASDCP::PCMParserList::PCMParserList() : m_ChannelCount(0) -{ -} - -ASDCP::PCMParserList::~PCMParserList() -{ - while ( ! empty() ) - { - delete back(); - pop_back(); - } -} - -// -Result_t -ASDCP::PCMParserList::OpenRead(ui32_t argc, const char** argv, const Rational& PictureRate) -{ - ASDCP_TEST_NULL_STR(argv); - PathList_t TmpFileList; - - for ( ui32_t i = 0; i < argc; ++i ) - TmpFileList.push_back(argv[i]); - - return OpenRead(TmpFileList, PictureRate); -} - -// -Result_t -ASDCP::PCMParserList::OpenRead(const Kumu::PathList_t& argv, const Rational& PictureRate) -{ - Result_t result = RESULT_OK; - PathList_t::iterator fi; - Kumu::PathList_t file_list; - - if ( argv.size() == 1 && PathIsDirectory(argv.front()) ) - { - DirScanner Dir; - char name_buf[MaxFilePath]; - result = Dir.Open(argv.front().c_str()); - - if ( KM_SUCCESS(result) ) - result = Dir.GetNext(name_buf); - - while ( KM_SUCCESS(result) ) - { - if ( name_buf[0] != '.' ) // no hidden files - { - std::string tmp_path = argv.front() + "/" + name_buf; - file_list.push_back(tmp_path); - } - - result = Dir.GetNext(name_buf); - } - - if ( result == RESULT_ENDOFFILE ) - { - result = RESULT_OK; - file_list.sort(); - } - } - else - { - file_list = argv; - } - - for ( fi = file_list.begin(); KM_SUCCESS(result) && fi != file_list.end(); ++fi ) - { - mem_ptr<ParserInstance> I = new ParserInstance; - result = I->OpenRead(fi->c_str(), PictureRate); - - if ( ASDCP_SUCCESS(result) ) - { - if ( fi == file_list.begin() ) - { - m_ADesc = I->ADesc; - } - else - { - if ( I->ADesc.AudioSamplingRate != m_ADesc.AudioSamplingRate ) - { - DefaultLogSink().Error("AudioSamplingRate mismatch in PCM parser list."); - return RESULT_FORMAT; - } - - if ( I->ADesc.QuantizationBits != m_ADesc.QuantizationBits ) - { - DefaultLogSink().Error("QuantizationBits mismatch in PCM parser list."); - return RESULT_FORMAT; - } - - if ( I->ADesc.ContainerDuration < m_ADesc.ContainerDuration ) - m_ADesc.ContainerDuration = I->ADesc.ContainerDuration; - - m_ADesc.BlockAlign += I->ADesc.BlockAlign; - } - - m_ChannelCount += I->ADesc.ChannelCount; - } - - if ( ASDCP_SUCCESS(result) ) - result = I->FB.Capacity(PCM::CalcFrameBufferSize(m_ADesc)); - - if ( ASDCP_SUCCESS(result) ) - { - push_back(I); - I.release(); - } - } - - if ( ASDCP_SUCCESS(result) ) - { - m_ADesc.ChannelCount = m_ChannelCount; - m_ADesc.AvgBps = (ui32_t)(ceil(m_ADesc.AudioSamplingRate.Quotient()) * m_ADesc.BlockAlign); - } - else - { - clear(); - } - - return result; -} - -// -Result_t -ASDCP::PCMParserList::FillAudioDescriptor(PCM::AudioDescriptor& ADesc) const -{ - ADesc = m_ADesc; - return RESULT_OK; -} - -// -Result_t -ASDCP::PCMParserList::Reset() -{ - Result_t result = RESULT_OK; - PCMParserList::iterator self_i; - - for ( self_i = begin(); self_i != end() && ASDCP_SUCCESS(result) ; self_i++ ) - result = (*self_i)->Parser.Reset(); - - return result; -} - - -// -Result_t -ASDCP::PCMParserList::ReadFrame(PCM::FrameBuffer& OutFB) -{ - Result_t result = RESULT_OK; - - if ( size() == 1 ) - return front()->Parser.ReadFrame(OutFB); - - PCMParserList::iterator self_i; - assert(PCM::CalcFrameBufferSize(m_ADesc) <= OutFB.Capacity()); - - for ( self_i = begin(); self_i != end() && ASDCP_SUCCESS(result) ; self_i++ ) - result = (*self_i)->ReadFrame(); - - if ( ASDCP_SUCCESS(result) ) - { - OutFB.Size(PCM::CalcFrameBufferSize(m_ADesc)); - - // ui32_t sample_size = (PCM::CalcSampleSize(m_ADesc)); - byte_t* Out_p = OutFB.Data(); - byte_t* End_p = Out_p + OutFB.Size(); - - while ( Out_p < End_p && ASDCP_SUCCESS(result) ) - { - self_i = begin(); - - while ( self_i != end() && ASDCP_SUCCESS(result) ) - { - result = (*self_i)->PutSample(Out_p); - Out_p += (*self_i)->SampleSize(); - self_i++; - } - } - - assert(Out_p == End_p); - } - - return result; -} - -// -// end PCMParserList.cpp -// diff --git a/asdcplib/src/PCMParserList.h b/asdcplib/src/PCMParserList.h deleted file mode 100755 index b744531..0000000 --- a/asdcplib/src/PCMParserList.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file PCMParserList.h - \version $Id: PCMParserList.h,v 1.4 2012/02/03 19:49:56 jhurst Exp $ - \brief Read WAV file(s), multiplex multiple PCM frame buffers into one -*/ - -#ifndef _PCMPARSERLIST_H_ -#define _PCMPARSERLIST_H_ - -#include <KM_fileio.h> -#include <AS_DCP.h> -#include <vector> - -namespace ASDCP -{ - // - class ParserInstance - { - const byte_t* m_p; - ui32_t m_SampleSize; - - ASDCP_NO_COPY_CONSTRUCT(ParserInstance); - - public: - PCM::WAVParser Parser; - PCM::FrameBuffer FB; - PCM::AudioDescriptor ADesc; - - ParserInstance(); - virtual ~ParserInstance(); - - Result_t OpenRead(const char* filename, const Rational& PictureRate); - Result_t PutSample(byte_t* p); - Result_t ReadFrame(); - inline ui32_t SampleSize() { return m_SampleSize; } - }; - - // - class PCMParserList : public std::vector<ParserInstance*> - { - ASDCP_NO_COPY_CONSTRUCT(PCMParserList); - - protected: - PCM::AudioDescriptor m_ADesc; - ui32_t m_ChannelCount; - - public: - PCMParserList(); - virtual ~PCMParserList(); - - Result_t OpenRead(ui32_t argc, const char** argv, const Rational& PictureRate); - Result_t OpenRead(const Kumu::PathList_t& argv, const Rational& PictureRate); - Result_t FillAudioDescriptor(PCM::AudioDescriptor& ADesc) const; - Result_t Reset(); - Result_t ReadFrame(PCM::FrameBuffer& OutFB); - }; -} - - -#endif // _PCMPARSERLIST_H_ - -// -// end PCMParserList.h -// diff --git a/asdcplib/src/PCM_Parser.cpp b/asdcplib/src/PCM_Parser.cpp deleted file mode 100755 index e556341..0000000 --- a/asdcplib/src/PCM_Parser.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* -Copyright (c) 2004-2011, John Hurst -All rights reserved. - -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. -*/ -/*! \file PCM_Parser.cpp - \version $Id: PCM_Parser.cpp,v 1.7 2011/05/13 01:50:19 jhurst Exp $ - \brief AS-DCP library, PCM raw essence reader implementation -*/ - -#include <Wav.h> -#include <assert.h> -#include <KM_log.h> -using Kumu::DefaultLogSink; - -using namespace ASDCP; -using namespace ASDCP::PCM; -using namespace ASDCP::Wav; - - -//------------------------------------------------------------------------------------------ - -// -class ASDCP::PCM::WAVParser::h__WAVParser -{ - Kumu::FileReader m_FileReader; - bool m_EOF; - ui32_t m_DataStart; - ui32_t m_DataLength; - ui32_t m_ReadCount; - ui32_t m_FrameBufferSize; - ui32_t m_FramesRead; - Rational m_PictureRate; - - ASDCP_NO_COPY_CONSTRUCT(h__WAVParser); - -public: - AudioDescriptor m_ADesc; - - - h__WAVParser() : - m_EOF(false), m_DataStart(0), m_DataLength(0), m_ReadCount(0), - m_FrameBufferSize(0), m_FramesRead(0) {} - - ~h__WAVParser() - { - Close(); - } - - Result_t OpenRead(const char* filename, const Rational& PictureRate); - void Close(); - void Reset(); - Result_t ReadFrame(FrameBuffer&); -}; - - -// -void -ASDCP::PCM::WAVParser::h__WAVParser::Close() -{ - m_FileReader.Close(); -} - -// -void -ASDCP::PCM::WAVParser::h__WAVParser::Reset() -{ - m_FileReader.Seek(m_DataStart); - m_FramesRead = 0; - m_ReadCount = 0; -} - -// -ASDCP::Result_t -ASDCP::PCM::WAVParser::h__WAVParser::OpenRead(const char* filename, const Rational& PictureRate) -{ - ASDCP_TEST_NULL_STR(filename); - - Result_t result = m_FileReader.OpenRead(filename); - - if ( ASDCP_SUCCESS(result) ) - { - SimpleWaveHeader WavHeader; - result = WavHeader.ReadFromFile(m_FileReader, &m_DataStart); - - if ( ASDCP_SUCCESS(result) ) - { - WavHeader.FillADesc(m_ADesc, PictureRate); - m_FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(m_ADesc); - m_DataLength = WavHeader.data_len; - m_ADesc.ContainerDuration = m_DataLength / m_FrameBufferSize; - m_ADesc.ChannelFormat = PCM::CF_NONE; - Reset(); - } - else - { - ASDCP::AIFF::SimpleAIFFHeader AIFFHeader; - m_FileReader.Seek(0); - - result = AIFFHeader.ReadFromFile(m_FileReader, &m_DataStart); - - if ( ASDCP_SUCCESS(result) ) - { - AIFFHeader.FillADesc(m_ADesc, PictureRate); - m_FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(m_ADesc); - m_DataLength = AIFFHeader.data_len; - m_ADesc.ContainerDuration = m_DataLength / m_FrameBufferSize; - m_ADesc.ChannelFormat = PCM::CF_NONE; - Reset(); - } - } - } - - return result; -} - -// -ASDCP::Result_t -ASDCP::PCM::WAVParser::h__WAVParser::ReadFrame(FrameBuffer& FB) -{ - FB.Size(0); - - if ( m_EOF || m_ReadCount >= m_DataLength ) - return RESULT_ENDOFFILE; - - if ( FB.Capacity() < m_FrameBufferSize ) - { - DefaultLogSink().Error("FrameBuf.Capacity: %u FrameLength: %u\n", - FB.Capacity(), m_FrameBufferSize); - return RESULT_SMALLBUF; - } - - ui32_t read_count = 0; - Result_t result = m_FileReader.Read(FB.Data(), m_FrameBufferSize, &read_count); - - if ( result == RESULT_ENDOFFILE ) - { - m_EOF = true; - - if ( read_count > 0 ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) ) - { - m_ReadCount += read_count; - FB.Size(read_count); - FB.FrameNumber(m_FramesRead++); - } - - return result; -} - - -//------------------------------------------------------------------------------------------ - -ASDCP::PCM::WAVParser::WAVParser() -{ -} - -ASDCP::PCM::WAVParser::~WAVParser() -{ -} - -// Opens the stream for reading, parses enough data to provide a complete -// set of stream metadata for the MXFWriter below. -ASDCP::Result_t -ASDCP::PCM::WAVParser::OpenRead(const char* filename, const Rational& PictureRate) const -{ - const_cast<ASDCP::PCM::WAVParser*>(this)->m_Parser = new h__WAVParser; - - Result_t result = m_Parser->OpenRead(filename, PictureRate); - - if ( ASDCP_FAILURE(result) ) - const_cast<ASDCP::PCM::WAVParser*>(this)->m_Parser.release(); - - return result; -} - -// Rewinds the stream to the beginning. -ASDCP::Result_t -ASDCP::PCM::WAVParser::Reset() const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - m_Parser->Reset(); - return RESULT_OK; -} - -// Places a frame of data in the frame buffer. Fails if the buffer is too small -// or the stream is empty. -ASDCP::Result_t -ASDCP::PCM::WAVParser::ReadFrame(FrameBuffer& FB) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - return m_Parser->ReadFrame(FB); -} - -ASDCP::Result_t -ASDCP::PCM::WAVParser::FillAudioDescriptor(AudioDescriptor& ADesc) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - ADesc = m_Parser->m_ADesc; - return RESULT_OK; -} - - -// -// end PCM_Parser.cpp -// diff --git a/asdcplib/src/S12MTimecode.h b/asdcplib/src/S12MTimecode.h deleted file mode 100644 index 7e355a6..0000000 --- a/asdcplib/src/S12MTimecode.h +++ /dev/null @@ -1,158 +0,0 @@ -/* -Copyright (c) 2007-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file S12MTimecode.cpp - \version $Id: S12MTimecode.h,v 1.5 2009/04/09 19:24:14 msheby Exp $ - \brief AS-DCP library, Timecode PCM essence reader and writer implementation -*/ - -/* - - DROP-FRAME NOT SUPPORTED! - -*/ - -#ifndef _S12MTIMECODE_H_ -#define _S12MTIMECODE_H_ - -#include "KM_util.h" -#include "KM_memio.h" - -namespace ASDCP { - - class S12MTimecode : public Kumu::IArchive -{ - protected: - ui32_t m_FrameCount; - ui32_t m_FPS; - -public: - S12MTimecode() : m_FrameCount(0), m_FPS(0) {} - - S12MTimecode(ui32_t frame_count, ui32_t fps) : m_FrameCount(frame_count), m_FPS(fps) {} - - S12MTimecode(const std::string& tc, ui32_t fps) : m_FrameCount(0), m_FPS(fps) - { - DecodeString(tc); - } - - S12MTimecode(const S12MTimecode& rhs) : IArchive(), m_FrameCount(0), m_FPS(0) - { - m_FPS = rhs.m_FPS; - m_FrameCount = rhs.m_FrameCount; - } - - ~S12MTimecode() {} - - const S12MTimecode& operator=(const S12MTimecode& rhs) - { - assert(m_FPS != 0); - m_FrameCount = rhs.m_FrameCount; - return *this; - } - - inline void SetFPS(ui32_t fps) { m_FPS = fps; } - inline ui32_t GetFPS() const { return m_FPS; } - - inline void SetFrames(ui32_t frame_count) { m_FrameCount = frame_count; } - inline ui32_t GetFrames() const { return m_FrameCount; } - - inline bool operator==(const S12MTimecode& rhs) const { return m_FrameCount == rhs.m_FrameCount; } - inline bool operator<(const S12MTimecode& rhs) const { return m_FrameCount < rhs.m_FrameCount; } - - inline const S12MTimecode operator+(const S12MTimecode& rhs){ - assert(m_FPS > 0); - assert(m_FPS == rhs.m_FPS); - return S12MTimecode(m_FrameCount + rhs.m_FrameCount, m_FPS); - } - - inline const S12MTimecode operator-(const S12MTimecode& rhs){ - assert(m_FPS > 0); - assert(m_FPS == rhs.m_FPS); - return S12MTimecode(m_FrameCount + rhs.m_FrameCount, m_FPS); - } - - - void DecodeString(const std::string& tc) - { - assert(m_FPS > 0); - const char* p = tc.c_str(); - - while ( *p != 0 && ! isdigit(*p) ) - p++; - - if ( *p != 0 ) - { - ui32_t hours = atoi(p); - ui32_t minutes = atoi(p+3); - ui32_t seconds = atoi(p+6); - ui32_t frames = atoi(p+9); - - m_FrameCount = (((((hours * 60) + minutes) * 60) + seconds) * m_FPS)+ frames; - } - } - - const char* EncodeString(char* buf, ui32_t buf_len) - { - assert(m_FPS > 0); - ui32_t frames = m_FrameCount % m_FPS; - m_FrameCount /= m_FPS; - ui32_t seconds = m_FrameCount % 60; - m_FrameCount /= 60; - ui32_t minutes = m_FrameCount % 60; - ui32_t hours = m_FrameCount / 60; - - snprintf(buf, buf_len, "%02d:%02d:%02d:%02d", hours, minutes, seconds, frames); - return buf; - } - - // IArchive - bool HasValue() const { return (m_FPS > 0); } - ui32_t ArchiveLength() const { return sizeof(ui32_t)*2; } - - bool Archive(Kumu::MemIOWriter* Writer) const - { - if ( ! Writer->WriteUi32BE(m_FPS) ) return false; - if ( ! Writer->WriteUi32BE(m_FrameCount) ) return false; - return true; - } - - bool Unarchive(Kumu::MemIOReader* Reader) - { - if ( ! Reader->ReadUi32BE(&m_FPS) ) return false; - if ( ! Reader->ReadUi32BE(&m_FrameCount) ) return false; - return true; - } -}; - - -} // namespace ASDCP - -#endif // _S12MTIMECODE_H_ - -// -// end S12MTimecode.h -// diff --git a/asdcplib/src/TimedText_Parser.cpp b/asdcplib/src/TimedText_Parser.cpp deleted file mode 100644 index ce16aee..0000000 --- a/asdcplib/src/TimedText_Parser.cpp +++ /dev/null @@ -1,447 +0,0 @@ -/* -Copyright (c) 2007-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file AS_DCP_TimedText.cpp - \version $Id: TimedText_Parser.cpp,v 1.15 2010/11/15 17:04:13 jhurst Exp $ - \brief AS-DCP library, PCM essence reader and writer implementation -*/ - - -#include "AS_DCP_internal.h" -#include "S12MTimecode.h" -#include "KM_xml.h" - -using namespace Kumu; -using namespace ASDCP; - -using Kumu::DefaultLogSink; - -const char* c_dcst_namespace_name = "http://www.smpte-ra.org/schemas/428-7/2007/DCST"; - -//------------------------------------------------------------------------------------------ - - - -class FilenameResolver : public ASDCP::TimedText::IResourceResolver -{ - std::string m_Dirname; - - FilenameResolver(); - bool operator==(const FilenameResolver&); - -public: - FilenameResolver(const std::string& dirname) - { - if ( PathIsDirectory(dirname) ) - { - m_Dirname = dirname; - return; - } - - DefaultLogSink().Error("Path '%s' is not a directory, defaulting to '.'\n", dirname.c_str()); - m_Dirname = "."; - } - - // - Result_t ResolveRID(const byte_t* uuid, TimedText::FrameBuffer& FrameBuf) const - { - FileReader Reader; - char buf[64]; - UUID RID(uuid); - std::string filename = m_Dirname + "/" + RID.EncodeHex(buf, 64); - DefaultLogSink().Debug("retrieving resource %s from file %s\n", buf, filename.c_str()); - - Result_t result = Reader.OpenRead(filename.c_str()); - - if ( KM_SUCCESS(result) ) - { - ui32_t read_count, read_size = Reader.Size(); - - result = FrameBuf.Capacity(read_size); - - if ( KM_SUCCESS(result) ) - result = Reader.Read(FrameBuf.Data(), read_size, &read_count); - - if ( KM_SUCCESS(result) ) - FrameBuf.Size(read_count); - } - - return result; - } -}; - -//------------------------------------------------------------------------------------------ - -typedef std::map<Kumu::UUID, TimedText::MIMEType_t> ResourceTypeMap_t; - -class ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser -{ - XMLElement m_Root; - ResourceTypeMap_t m_ResourceTypes; - Result_t OpenRead(); - - ASDCP_NO_COPY_CONSTRUCT(h__SubtitleParser); - -public: - std::string m_Filename; - std::string m_XMLDoc; - TimedTextDescriptor m_TDesc; - mem_ptr<FilenameResolver> m_DefaultResolver; - - h__SubtitleParser() : m_Root("**ParserRoot**") - { - memset(&m_TDesc.AssetID, 0, UUIDlen); - } - - ~h__SubtitleParser() {} - - TimedText::IResourceResolver* GetDefaultResolver() - { - if ( m_DefaultResolver.empty() ) - m_DefaultResolver = new FilenameResolver(PathDirname(m_Filename)); - - return m_DefaultResolver; - } - - Result_t OpenRead(const char* filename); - Result_t OpenRead(const std::string& xml_doc, const char* filename); - Result_t ReadAncillaryResource(const byte_t* uuid, FrameBuffer& FrameBuf, const IResourceResolver& Resolver) const; -}; - -// -bool -get_UUID_from_element(XMLElement* Element, UUID& ID) -{ - assert(Element); - const char* p = Element->GetBody().c_str(); - if ( strncmp(p, "urn:uuid:", 9) == 0 ) p += 9; - return ID.DecodeHex(p); -} - -// -bool -get_UUID_from_child_element(const char* name, XMLElement* Parent, UUID& outID) -{ - assert(name); assert(Parent); - XMLElement* Child = Parent->GetChildWithName(name); - if ( Child == 0 ) return false; - return get_UUID_from_element(Child, outID); -} - -// -static ASDCP::Rational -decode_rational(const char* str_rat) -{ - assert(str_rat); - ui32_t Num = atoi(str_rat); - ui32_t Den = 0; - - const char* den_str = strrchr(str_rat, ' '); - if ( den_str != 0 ) - Den = atoi(den_str+1); - - return ASDCP::Rational(Num, Den); -} - -// -Result_t -ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead(const char* filename) -{ - Result_t result = ReadFileIntoString(filename, m_XMLDoc); - - if ( KM_SUCCESS(result) ) - result = OpenRead(); - - m_Filename = filename; - return result; -} - -// -Result_t -ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead(const std::string& xml_doc, const char* filename) -{ - m_XMLDoc = xml_doc; - - if ( filename != 0 ) - m_Filename = filename; - else - m_Filename = "<string>"; - - return OpenRead(); -} - -// -Result_t -ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead() -{ - if ( ! m_Root.ParseString(m_XMLDoc.c_str()) ) - return RESULT_FORMAT; - - m_TDesc.EncodingName = "UTF-8"; // the XML parser demands UTF-8 - m_TDesc.ResourceList.clear(); - m_TDesc.ContainerDuration = 0; - const XMLNamespace* ns = m_Root.Namespace(); - - if ( ns == 0 ) - { - DefaultLogSink(). Warn("Document has no namespace name, assuming %s\n", c_dcst_namespace_name); - m_TDesc.NamespaceName = c_dcst_namespace_name; - } - else - { - m_TDesc.NamespaceName = ns->Name(); - } - - UUID DocID; - if ( ! get_UUID_from_child_element("Id", &m_Root, DocID) ) - { - DefaultLogSink(). Error("Id element missing from input document\n"); - return RESULT_FORMAT; - } - - memcpy(m_TDesc.AssetID, DocID.Value(), DocID.Size()); - XMLElement* EditRate = m_Root.GetChildWithName("EditRate"); - - if ( EditRate == 0 ) - { - DefaultLogSink(). Error("EditRate element missing from input document\n"); - return RESULT_FORMAT; - } - - m_TDesc.EditRate = decode_rational(EditRate->GetBody().c_str()); - - if ( m_TDesc.EditRate != EditRate_23_98 - && m_TDesc.EditRate != EditRate_24 - && m_TDesc.EditRate != EditRate_25 - && m_TDesc.EditRate != EditRate_30 - && m_TDesc.EditRate != EditRate_48 - && m_TDesc.EditRate != EditRate_50 - && m_TDesc.EditRate != EditRate_60 ) - { - DefaultLogSink(). Error("Unexpected EditRate: %d/%d\n", - m_TDesc.EditRate.Numerator, m_TDesc.EditRate.Denominator); - return RESULT_FORMAT; - } - - // list of fonts - ElementList FontList; - m_Root.GetChildrenWithName("LoadFont", FontList); - - for ( Elem_i i = FontList.begin(); i != FontList.end(); i++ ) - { - UUID AssetID; - if ( ! get_UUID_from_element(*i, AssetID) ) - { - DefaultLogSink(). Error("LoadFont element does not contain a urn:uuid value as expected.\n"); - return RESULT_FORMAT; - } - - TimedTextResourceDescriptor TmpResource; - memcpy(TmpResource.ResourceID, AssetID.Value(), UUIDlen); - TmpResource.Type = MT_OPENTYPE; - m_TDesc.ResourceList.push_back(TmpResource); - m_ResourceTypes.insert(ResourceTypeMap_t::value_type(UUID(TmpResource.ResourceID), MT_OPENTYPE)); - } - - // list of images - ElementList ImageList; - m_Root.GetChildrenWithName("Image", ImageList); - - for ( Elem_i i = ImageList.begin(); i != ImageList.end(); i++ ) - { - UUID AssetID; - if ( ! get_UUID_from_element(*i, AssetID) ) - { - DefaultLogSink(). Error("Image element does not contain a urn:uuid value as expected.\n"); - return RESULT_FORMAT; - } - - TimedTextResourceDescriptor TmpResource; - memcpy(TmpResource.ResourceID, AssetID.Value(), UUIDlen); - TmpResource.Type = MT_PNG; - m_TDesc.ResourceList.push_back(TmpResource); - m_ResourceTypes.insert(ResourceTypeMap_t::value_type(UUID(TmpResource.ResourceID), MT_PNG)); - } - - // Calculate the timeline duration. - // This is a little ugly because the last element in the file is not necessarily - // the last instance to be displayed, e.g., element n and element n-1 may have the - // same start time but n-1 may have a greater duration making it the last to be seen. - // We must scan the list to accumulate the latest TimeOut value. - ElementList InstanceList; - ElementList::const_iterator ei; - ui32_t end_count = 0; - - m_Root.GetChildrenWithName("Subtitle", InstanceList); - - if ( InstanceList.empty() ) - { - DefaultLogSink(). Error("XML document contains no Subtitle elements.\n"); - return RESULT_FORMAT; - } - - // assumes edit rate is constrained above - ui32_t TCFrameRate = ( m_TDesc.EditRate == EditRate_23_98 ) ? 24 : m_TDesc.EditRate.Numerator; - - S12MTimecode beginTC; - beginTC.SetFPS(TCFrameRate); - XMLElement* StartTime = m_Root.GetChildWithName("StartTime"); - - if ( StartTime != 0 ) - beginTC.DecodeString(StartTime->GetBody()); - - for ( ei = InstanceList.begin(); ei != InstanceList.end(); ei++ ) - { - S12MTimecode tmpTC((*ei)->GetAttrWithName("TimeOut"), TCFrameRate); - if ( end_count < tmpTC.GetFrames() ) - end_count = tmpTC.GetFrames(); - } - - if ( end_count <= beginTC.GetFrames() ) - { - DefaultLogSink(). Error("Timed Text file has zero-length timeline.\n"); - return RESULT_FORMAT; - } - - m_TDesc.ContainerDuration = end_count - beginTC.GetFrames(); - - return RESULT_OK; -} - - -// -Result_t -ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::ReadAncillaryResource(const byte_t* uuid, FrameBuffer& FrameBuf, - const IResourceResolver& Resolver) const -{ - FrameBuf.AssetID(uuid); - UUID TmpID(uuid); - char buf[64]; - - ResourceTypeMap_t::const_iterator rmi = m_ResourceTypes.find(TmpID); - - if ( rmi == m_ResourceTypes.end() ) - { - DefaultLogSink().Error("Unknown ancillary resource id: %s\n", TmpID.EncodeHex(buf, 64)); - return RESULT_RANGE; - } - - Result_t result = Resolver.ResolveRID(uuid, FrameBuf); - - if ( KM_SUCCESS(result) ) - { - if ( (*rmi).second == MT_PNG ) - FrameBuf.MIMEType("image/png"); - - else if ( (*rmi).second == MT_OPENTYPE ) - FrameBuf.MIMEType("application/x-font-opentype"); - - else - FrameBuf.MIMEType("application/octet-stream"); - } - - return result; -} - -//------------------------------------------------------------------------------------------ - -ASDCP::TimedText::DCSubtitleParser::DCSubtitleParser() -{ -} - -ASDCP::TimedText::DCSubtitleParser::~DCSubtitleParser() -{ -} - -// Opens the stream for reading, parses enough data to provide a complete -// set of stream metadata for the MXFWriter below. -ASDCP::Result_t -ASDCP::TimedText::DCSubtitleParser::OpenRead(const char* filename) const -{ - const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = new h__SubtitleParser; - - Result_t result = m_Parser->OpenRead(filename); - - if ( ASDCP_FAILURE(result) ) - const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = 0; - - return result; -} - -// Parses an XML document to provide a complete set of stream metadata for the MXFWriter below. -Result_t -ASDCP::TimedText::DCSubtitleParser::OpenRead(const std::string& xml_doc, const char* filename) const -{ - const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = new h__SubtitleParser; - - Result_t result = m_Parser->OpenRead(xml_doc, filename); - - if ( ASDCP_FAILURE(result) ) - const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = 0; - - return result; -} - -// -ASDCP::Result_t -ASDCP::TimedText::DCSubtitleParser::FillTimedTextDescriptor(TimedTextDescriptor& TDesc) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - TDesc = m_Parser->m_TDesc; - return RESULT_OK; -} - -// Reads the complete Timed Text Resource into the given string. -ASDCP::Result_t -ASDCP::TimedText::DCSubtitleParser::ReadTimedTextResource(std::string& s) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - s = m_Parser->m_XMLDoc; - return RESULT_OK; -} - -// -ASDCP::Result_t -ASDCP::TimedText::DCSubtitleParser::ReadAncillaryResource(const byte_t* uuid, FrameBuffer& FrameBuf, - const IResourceResolver* Resolver) const -{ - if ( m_Parser.empty() ) - return RESULT_INIT; - - if ( Resolver == 0 ) - Resolver = m_Parser->GetDefaultResolver(); - - return m_Parser->ReadAncillaryResource(uuid, FrameBuf, *Resolver); -} - - -// -// end AS_DCP_timedText.cpp -// diff --git a/asdcplib/src/Wav.cpp b/asdcplib/src/Wav.cpp deleted file mode 100755 index ee1e93d..0000000 --- a/asdcplib/src/Wav.cpp +++ /dev/null @@ -1,370 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file Wav.cpp - \version $Id: Wav.cpp,v 1.11 2010/02/16 18:40:57 jhurst Exp $ - \brief Wave file common elements -*/ - -#include "Wav.h" -#include <assert.h> -#include <KM_log.h> -using Kumu::DefaultLogSink; - - -const ui32_t SimpleWavHeaderLength = 46; - -// -ASDCP::Wav::SimpleWaveHeader::SimpleWaveHeader(ASDCP::PCM::AudioDescriptor& ADesc) -{ - format = 1; - nchannels = ADesc.ChannelCount; - bitspersample = ADesc.QuantizationBits; - samplespersec = (ui32_t)ceil(ADesc.AudioSamplingRate.Quotient()); - blockalign = nchannels * (bitspersample / 8); - avgbps = samplespersec * blockalign; - cbsize = 0; - data_len = ASDCP::PCM::CalcFrameBufferSize(ADesc) * ADesc.ContainerDuration; -} - -// -void -ASDCP::Wav::SimpleWaveHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDCP::Rational PictureRate) const -{ - ADesc.EditRate = PictureRate; - - ADesc.LinkedTrackID = 0; - ADesc.Locked = 0; - ADesc.ChannelCount = nchannels; - ADesc.AudioSamplingRate = Rational(samplespersec, 1); - ADesc.AvgBps = avgbps; - ADesc.BlockAlign = blockalign; - ADesc.QuantizationBits = bitspersample; - ui32_t FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(ADesc); - ADesc.ContainerDuration = data_len / FrameBufferSize; - ADesc.ChannelFormat = PCM::CF_NONE; -} - - -// -ASDCP::Result_t -ASDCP::Wav::SimpleWaveHeader::WriteToFile(Kumu::FileWriter& OutFile) const -{ - ui32_t write_count; - byte_t tmp_header[SimpleWavHeaderLength]; - byte_t* p = tmp_header; - - static ui32_t fmt_len = - sizeof(format) - + sizeof(nchannels) - + sizeof(samplespersec) - + sizeof(avgbps) - + sizeof(blockalign) - + sizeof(bitspersample) - + sizeof(cbsize); - - ui32_t RIFF_len = data_len + SimpleWavHeaderLength - 8; - - memcpy(p, &FCC_RIFF, sizeof(fourcc)); p += 4; - *((ui32_t*)p) = KM_i32_LE(RIFF_len); p += 4; - memcpy(p, &FCC_WAVE, sizeof(fourcc)); p += 4; - memcpy(p, &FCC_fmt_, sizeof(fourcc)); p += 4; - *((ui32_t*)p) = KM_i32_LE(fmt_len); p += 4; - *((ui16_t*)p) = KM_i16_LE(format); p += 2; - *((ui16_t*)p) = KM_i16_LE(nchannels); p += 2; - *((ui32_t*)p) = KM_i32_LE(samplespersec); p += 4; - *((ui32_t*)p) = KM_i32_LE(avgbps); p += 4; - *((ui16_t*)p) = KM_i16_LE(blockalign); p += 2; - *((ui16_t*)p) = KM_i16_LE(bitspersample); p += 2; - *((ui16_t*)p) = KM_i16_LE(cbsize); p += 2; - memcpy(p, &FCC_data, sizeof(fourcc)); p += 4; - *((ui32_t*)p) = KM_i32_LE(data_len); p += 4; - - return OutFile.Write(tmp_header, SimpleWavHeaderLength, &write_count); -} - -// -ASDCP::Result_t -ASDCP::Wav::SimpleWaveHeader::ReadFromFile(const Kumu::FileReader& InFile, ui32_t* data_start) -{ - ui32_t read_count = 0; - ui32_t local_data_start = 0; - ASDCP::PCM::FrameBuffer TmpBuffer(MaxWavHeader); - - if ( data_start == 0 ) - data_start = &local_data_start; - - Result_t result = InFile.Read(TmpBuffer.Data(), TmpBuffer.Capacity(), &read_count); - - if ( ASDCP_SUCCESS(result) ) - result = ReadFromBuffer(TmpBuffer.RoData(), read_count, data_start); - - return result; -} - -ASDCP::Result_t -ASDCP::Wav::SimpleWaveHeader::ReadFromBuffer(const byte_t* buf, ui32_t buf_len, ui32_t* data_start) -{ - if ( buf_len < SimpleWavHeaderLength ) - return RESULT_SMALLBUF; - - *data_start = 0; - const byte_t* p = buf; - const byte_t* end_p = p + buf_len; - - fourcc test_RIFF(p); p += 4; - if ( test_RIFF != FCC_RIFF ) - { - // DefaultLogSink().Debug("File does not begin with RIFF header\n"); - return RESULT_RAW_FORMAT; - } - - ui32_t RIFF_len = KM_i32_LE(*(ui32_t*)p); p += 4; - - fourcc test_WAVE(p); p += 4; - if ( test_WAVE != FCC_WAVE ) - { - DefaultLogSink().Debug("File does not contain a WAVE header\n"); - return RESULT_RAW_FORMAT; - } - - fourcc test_fcc; - - while ( p < end_p ) - { - test_fcc = fourcc(p); p += 4; - ui32_t chunk_size = KM_i32_LE(*(ui32_t*)p); p += 4; - - if ( test_fcc == FCC_data ) - { - if ( chunk_size > RIFF_len ) - { - DefaultLogSink().Error("Chunk size %u larger than file: %u\n", chunk_size, RIFF_len); - return RESULT_RAW_FORMAT; - } - - data_len = chunk_size; - *data_start = p - buf; - break; - } - - if ( test_fcc == FCC_fmt_ ) - { - ui16_t format = KM_i16_LE(*(ui16_t*)p); p += 2; - - if ( format != WAVE_FORMAT_PCM && format != WAVE_FORMAT_EXTENSIBLE ) - { - DefaultLogSink().Error("Expecting uncompressed PCM data, got format type %hd\n", format); - return RESULT_RAW_FORMAT; - } - - nchannels = KM_i16_LE(*(ui16_t*)p); p += 2; - samplespersec = KM_i32_LE(*(ui32_t*)p); p += 4; - avgbps = KM_i32_LE(*(ui32_t*)p); p += 4; - blockalign = KM_i16_LE(*(ui16_t*)p); p += 2; - bitspersample = KM_i16_LE(*(ui16_t*)p); p += 2; - p += chunk_size - 16; // 16 is the number of bytes read in this block - } - else - { - p += chunk_size; - } - } - - if ( *data_start == 0 ) // can't have no data! - { - DefaultLogSink().Error("No data chunk found, file contains no essence\n"); - return RESULT_RAW_FORMAT; - } - - return RESULT_OK; -} - -//------------------------------------------------------------------------------------------ -// conversion algorithms from http://www.borg.com/~jglatt/tech/aiff.htm - -// -void -Rat_to_extended(ASDCP::Rational rate, byte_t* buf) -{ - memset(buf, 0, 10); - ui32_t value = (ui32_t)ceil(rate.Quotient()); - ui32_t exp = value; - exp >>= 1; - ui8_t i = 0; - - for ( ; i < 32; i++ ) - { - exp >>= 1; - if ( ! exp ) - break; - } - - *(buf+1) = i; - - for ( i = 32; i != 0 ; i-- ) - { - if ( value & 0x80000000 ) - break; - value <<= 1; - } - - *(ui32_t*)(buf+2) = KM_i32_BE(value); -} - -// -ASDCP::Rational -extended_to_Rat(const byte_t* buf) -{ - ui32_t last = 0; - ui32_t mantissa = KM_i32_BE(*(ui32_t*)(buf+2)); - - byte_t exp = 30 - *(buf+1); - - while ( exp-- ) - { - last = mantissa; - mantissa >>= 1; - } - - if ( last & 0x00000001 ) - mantissa++; - - return ASDCP::Rational(mantissa, 1); -} - -// -void -ASDCP::AIFF::SimpleAIFFHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDCP::Rational PictureRate) const -{ - ADesc.EditRate = PictureRate; - - ADesc.ChannelCount = numChannels; - ADesc.AudioSamplingRate = extended_to_Rat(sampleRate); - ADesc.QuantizationBits = sampleSize; - ADesc.BlockAlign = sampleSize / 8; - ADesc.AvgBps = (ui32_t) (ADesc.BlockAlign * ADesc.AudioSamplingRate.Quotient()); - ui32_t FrameBufferSize = ASDCP::PCM::CalcFrameBufferSize(ADesc); - ADesc.ContainerDuration = data_len / FrameBufferSize; - ADesc.ChannelFormat = PCM::CF_NONE; -} - -// -ASDCP::Result_t -ASDCP::AIFF::SimpleAIFFHeader::ReadFromFile(const Kumu::FileReader& InFile, ui32_t* data_start) -{ - ui32_t read_count = 0; - ui32_t local_data_start = 0; - ASDCP::PCM::FrameBuffer TmpBuffer(Wav::MaxWavHeader); - - if ( data_start == 0 ) - data_start = &local_data_start; - - Result_t result = InFile.Read(TmpBuffer.Data(), TmpBuffer.Capacity(), &read_count); - - if ( ASDCP_SUCCESS(result) ) - result = ReadFromBuffer(TmpBuffer.RoData(), read_count, data_start); - - return result; -} - -// -ASDCP::Result_t -ASDCP::AIFF::SimpleAIFFHeader::ReadFromBuffer(const byte_t* buf, ui32_t buf_len, ui32_t* data_start) -{ - if ( buf_len < 32 ) - return RESULT_SMALLBUF; - - *data_start = 0; - const byte_t* p = buf; - const byte_t* end_p = p + buf_len; - - fourcc test_FORM(p); p += 4; - if ( test_FORM != FCC_FORM ) - { - // DefaultLogSink().Debug("File does not begin with FORM header\n"); - return RESULT_RAW_FORMAT; - } - - ui32_t RIFF_len = KM_i32_BE(*(ui32_t*)p); p += 4; - - fourcc test_AIFF(p); p += 4; - if ( test_AIFF != FCC_AIFF ) - { - DefaultLogSink().Debug("File does not contain an AIFF header\n"); - return RESULT_RAW_FORMAT; - } - - fourcc test_fcc; - - while ( p < end_p ) - { - test_fcc = fourcc(p); p += 4; - ui32_t chunk_size = KM_i32_BE(*(ui32_t*)p); p += 4; - - if ( test_fcc == FCC_COMM ) - { - numChannels = KM_i16_BE(*(ui16_t*)p); p += 2; - numSampleFrames = KM_i32_BE(*(ui32_t*)p); p += 4; - sampleSize = KM_i16_BE(*(ui16_t*)p); p += 2; - memcpy(sampleRate, p, 10); - p += 10; - } - else if ( test_fcc == FCC_SSND ) - { - if ( chunk_size > RIFF_len ) - { - DefaultLogSink().Error("Chunk size %u larger than file: %u\n", chunk_size, RIFF_len); - return RESULT_RAW_FORMAT; - } - - ui32_t offset = KM_i32_BE(*(ui32_t*)p); p += 4; - p += 4; // blockSize; - - data_len = chunk_size - 8; - *data_start = (p - buf) + offset; - break; - } - else - { - p += chunk_size; - } - } - - if ( *data_start == 0 ) // can't have no data! - { - DefaultLogSink().Error("No data chunk found, file contains no essence\n"); - return RESULT_RAW_FORMAT; - } - - return RESULT_OK; -} - - - -// -// end Wav.cpp -// diff --git a/asdcplib/src/Wav.h b/asdcplib/src/Wav.h deleted file mode 100755 index 09ee48a..0000000 --- a/asdcplib/src/Wav.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file Wav.h - \version $Id: Wav.h,v 1.5 2009/04/09 19:24:14 msheby Exp $ - \brief Wave file common elements -*/ - -#ifndef _WAV_H_ -#define _WAV_H_ - -#include <KM_fileio.h> -#include <AS_DCP.h> - -namespace ASDCP -{ - // - class fourcc - { - private: - byte_t data[4]; - - public: - inline fourcc() { memset( data, 0, 4 ); } - inline fourcc( const char* v ) { memcpy( this->data, v, 4 ); } - inline fourcc( const byte_t* v ) { memcpy( this->data, v, 4 ); } - inline fourcc& operator=(const fourcc & s) { memcpy( this->data, s.data, 4); return *this; } - inline bool operator==(const fourcc &rhs) { return memcmp(data, rhs.data, 4) == 0 ? true : false; } - inline bool operator!=(const fourcc &rhs) { return memcmp(data, rhs.data, 4) != 0 ? true : false; } - }; - - namespace AIFF - { - const fourcc FCC_FORM("FORM"); - const fourcc FCC_AIFF("AIFF"); - const fourcc FCC_COMM("COMM"); - const fourcc FCC_SSND("SSND"); - - class SimpleAIFFHeader - { - public: - ui16_t numChannels; - ui32_t numSampleFrames; - ui16_t sampleSize; - byte_t sampleRate[10]; // 80-bit IEEE 754 float - ui32_t data_len; - - SimpleAIFFHeader() : - numChannels(0), numSampleFrames(0), sampleSize(0), data_len(0) { - memset(sampleRate, 0, 10); - } - - Result_t ReadFromBuffer(const byte_t* buf, ui32_t buf_len, ui32_t* data_start); - Result_t ReadFromFile(const Kumu::FileReader& InFile, ui32_t* data_start); - void FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, Rational PictureRate) const; - }; - - } // namespace AIFF - - namespace Wav - { - const ui32_t MaxWavHeader = 1024*32; // must find "data" within this space or no happy - - const fourcc FCC_RIFF("RIFF"); - const fourcc FCC_WAVE("WAVE"); - const fourcc FCC_fmt_("fmt "); - const fourcc FCC_data("data"); - - const ui16_t WAVE_FORMAT_PCM = 1; - const ui16_t WAVE_FORMAT_EXTENSIBLE = 65534; - - // - class SimpleWaveHeader - { - public: - ui16_t format; - ui16_t nchannels; - ui32_t samplespersec; - ui32_t avgbps; - ui16_t blockalign; - ui16_t bitspersample; - ui16_t cbsize; - ui32_t data_len; - - SimpleWaveHeader() : - format(0), nchannels(0), samplespersec(0), avgbps(0), - blockalign(0), bitspersample(0), cbsize(0), data_len(0) {} - - SimpleWaveHeader(ASDCP::PCM::AudioDescriptor& ADesc); - - Result_t ReadFromBuffer(const byte_t* buf, ui32_t buf_len, ui32_t* data_start); - Result_t ReadFromFile(const Kumu::FileReader& InFile, ui32_t* data_start); - Result_t WriteToFile(Kumu::FileWriter& OutFile) const; - void FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, Rational PictureRate) const; - }; - - } // namespace Wav -} // namespace ASDCP - -#endif // _WAV_H_ - -// -// end Wav.h -// diff --git a/asdcplib/src/WavFileWriter.h b/asdcplib/src/WavFileWriter.h deleted file mode 100755 index daf26ea..0000000 --- a/asdcplib/src/WavFileWriter.h +++ /dev/null @@ -1,198 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file WavFileWriter.h - \version $Id: WavFileWriter.h,v 1.6 2009/04/09 19:16:49 msheby Exp $ - \brief demux and write PCM data to WAV file(s) -*/ - -#include <KM_fileio.h> -#include <KM_log.h> -#include <Wav.h> -#include <list> - -#ifndef _WAVFILEWRITER_H_ -#define _WAVFILEWRITER_H_ - - -// -class WavFileElement : public Kumu::FileWriter -{ - ASDCP::PCM::FrameBuffer m_Buf; - byte_t* m_p; - - WavFileElement(); - KM_NO_COPY_CONSTRUCT(WavFileElement); - -public: - WavFileElement(ui32_t s) : m_Buf(s), m_p(0) - { - m_p = m_Buf.Data(); - } - - ~WavFileElement() {} - - void WriteSample(const byte_t* sample, ui32_t sample_size) - { - memcpy(m_p, sample, sample_size); - m_p += sample_size; - } - - ASDCP::Result_t Flush() - { - ui32_t write_count = 0; - - if ( m_p == m_Buf.Data() ) - return ASDCP::RESULT_EMPTY_FB; - - ui32_t write_size = m_p - m_Buf.Data(); - m_p = m_Buf.Data(); - return Write(m_Buf.RoData(), write_size, &write_count); - } -}; - - -// -class WavFileWriter -{ - ASDCP::PCM::AudioDescriptor m_ADesc; - std::list<WavFileElement*> m_OutFile; - ui32_t m_ChannelCount; - ASDCP_NO_COPY_CONSTRUCT(WavFileWriter); - - public: - WavFileWriter() : m_ChannelCount(0) {} - ~WavFileWriter() - { - while ( ! m_OutFile.empty() ) - { - delete m_OutFile.back(); - m_OutFile.pop_back(); - } - } - - // - enum SplitType_t { - ST_NONE, // write all channels to a single WAV file - ST_MONO, // write each channel a separate WAV file - ST_STEREO // write channel pairs to separate WAV files - }; - - ASDCP::Result_t - OpenWrite(ASDCP::PCM::AudioDescriptor &ADesc, const char* file_root, SplitType_t split = ST_NONE) - { - ASDCP_TEST_NULL_STR(file_root); - char filename[Kumu::MaxFilePath]; - ui32_t file_count = 0; - ASDCP::Result_t result = ASDCP::RESULT_OK; - m_ADesc = ADesc; - - switch ( split ) - { - case ST_NONE: - file_count = 1; - m_ChannelCount = m_ADesc.ChannelCount; - break; - - case ST_MONO: - file_count = m_ADesc.ChannelCount; - m_ChannelCount = 1; - break; - - case ST_STEREO: - if ( m_ADesc.ChannelCount % 2 != 0 ) - { - Kumu::DefaultLogSink().Error("Unable to create 2-channel splits with odd number of input channels.\n"); - return ASDCP::RESULT_PARAM; - } - - file_count = m_ADesc.ChannelCount / 2; - m_ChannelCount = 2; - break; - } - assert(file_count && m_ChannelCount); - - ui32_t element_size = ASDCP::PCM::CalcFrameBufferSize(m_ADesc) / file_count; - - for ( ui32_t i = 0; i < file_count && ASDCP_SUCCESS(result); i++ ) - { - snprintf(filename, Kumu::MaxFilePath, "%s_%u.wav", file_root, (i + 1)); - m_OutFile.push_back(new WavFileElement(element_size)); - result = m_OutFile.back()->OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - { - ASDCP::PCM::AudioDescriptor tmpDesc = m_ADesc; - tmpDesc.ChannelCount = m_ChannelCount; - ASDCP::Wav::SimpleWaveHeader Wav(tmpDesc); - result = Wav.WriteToFile(*(m_OutFile.back())); - } - } - - return result; - } - - ASDCP::Result_t - WriteFrame(ASDCP::PCM::FrameBuffer& FB) - { - if ( m_OutFile.empty() ) - return ASDCP::RESULT_STATE; - - if ( m_OutFile.size() == 1 ) // no de-interleave needed, just write out the frame - return m_OutFile.back()->Write(FB.RoData(), FB.Size(), 0); - - std::list<WavFileElement*>::iterator fi; - ui32_t sample_size = m_ADesc.QuantizationBits / 8; - const byte_t* p = FB.RoData(); - const byte_t* end_p = p + FB.Size(); - - while ( p < end_p ) - { - for ( fi = m_OutFile.begin(); fi != m_OutFile.end(); fi++ ) - { - for ( ui32_t c = 0; c < m_ChannelCount; c++ ) - { - (*fi)->WriteSample(p, sample_size); - p += sample_size; - } - } - } - - ASDCP::Result_t result = ASDCP::RESULT_OK; - - for ( fi = m_OutFile.begin(); fi != m_OutFile.end() && ASDCP_SUCCESS(result); fi++ ) - result = (*fi)->Flush(); - - return result; - } -}; - - -#endif // _WAVFILEWRITER_H_ - -// -// end WavFileWriter.h -// diff --git a/asdcplib/src/asdcp-info.cpp b/asdcplib/src/asdcp-info.cpp deleted file mode 100755 index 0622763..0000000 --- a/asdcplib/src/asdcp-info.cpp +++ /dev/null @@ -1,428 +0,0 @@ -/* -Copyright (c) 2003-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-info.cpp - \version $Id: asdcp-info.cpp,v 1.1 2012/02/03 19:49:56 jhurst Exp $ - \brief AS-DCP file metadata utility - - This program provides metadata information about an AS-DCP file. - - For more information about asdcplib, please refer to the header file AS_DCP.h -*/ - -#include <KM_fileio.h> -#include <AS_DCP.h> -#include <MXF.h> -#include <Metadata.h> -#include <openssl/sha.h> - -using namespace Kumu; -using namespace ASDCP; - -const ui32_t FRAME_BUFFER_SIZE = 4 * Kumu::Megabyte; - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "asdcp-info"; // program name for messages - - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) \ - if ( ++i >= argc || argv[(i)][0] == '-' ) { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2012 John Hurst\n\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE:%s [-h|-help] [-V]\n\ -\n\ - %s [-3] [-H] [-n] <input-file>+\n\ -\n\ -Options:\n\ - -3 - Force stereoscopic interpretation of a JP2K file\n\ - -h | -help - Show help\n\ - -H - Show MXF header metadata\n\ - -n - Show index\n\ - -V - Show version information\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\n", - PROGRAM_NAME, PROGRAM_NAME); - -} - -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - PathList_t filenames; // list of filenames to be processed - bool showindex_flag; // true if index is to be displayed - bool showheader_flag; // true if MXF file header is to be displayed - bool stereo_image_flag; // if true, expect stereoscopic JP2K input (left eye first) - - // - CommandOptions(int argc, const char** argv) : - error_flag(true), version_flag(false), help_flag(false), - showindex_flag(), showheader_flag(), stereo_image_flag(false) - { - for ( int i = 1; i < argc; ++i ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' - && ( isalpha(argv[i][1]) || isdigit(argv[i][1]) ) - && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case '3': stereo_image_flag = true; break; - case 'H': showheader_flag = true; break; - case 'h': help_flag = true; break; - case 'n': showindex_flag = true; break; - case 'V': version_flag = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - if ( argv[i][0] != '-' ) - { - filenames.push_back(argv[i]); - } - else - { - fprintf(stderr, "Unrecognized argument: %s\n", argv[i]); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( filenames.empty() ) - { - fputs("Option requires at least one filename argument.\n", stderr); - return; - } - - error_flag = false; - } -}; - -//------------------------------------------------------------------------------------------ -// - -// -// These classes wrap the irregular names in the asdcplib API -// so that I can use a template to simplify the implementation -// of show_file_info() - -class MyVideoDescriptor : public MPEG2::VideoDescriptor -{ - public: - void FillDescriptor(MPEG2::MXFReader& Reader) { - Reader.FillVideoDescriptor(*this); - } - - void Dump(FILE* stream) { - MPEG2::VideoDescriptorDump(*this, stream); - } -}; - -class MyPictureDescriptor : public JP2K::PictureDescriptor -{ - public: - void FillDescriptor(JP2K::MXFReader& Reader) { - Reader.FillPictureDescriptor(*this); - } - - void Dump(FILE* stream) { - JP2K::PictureDescriptorDump(*this, stream); - } -}; - -class MyStereoPictureDescriptor : public JP2K::PictureDescriptor -{ - public: - void FillDescriptor(JP2K::MXFSReader& Reader) { - Reader.FillPictureDescriptor(*this); - } - - void Dump(FILE* stream) { - JP2K::PictureDescriptorDump(*this, stream); - } -}; - -class MyAudioDescriptor : public PCM::AudioDescriptor -{ - public: - void FillDescriptor(PCM::MXFReader& Reader) { - Reader.FillAudioDescriptor(*this); - } - - void Dump(FILE* stream) { - PCM::AudioDescriptorDump(*this, stream); - } -}; - -class MyTextDescriptor : public TimedText::TimedTextDescriptor -{ - public: - void FillDescriptor(TimedText::MXFReader& Reader) { - Reader.FillTimedTextDescriptor(*this); - } - - void Dump(FILE* stream) { - TimedText::DescriptorDump(*this, stream); - } -}; - -// MSVC didn't like the function template, so now it's a static class method -template<class ReaderT, class DescriptorT> -class FileInfoWrapper -{ -public: - static Result_t - file_info(CommandOptions& Options, const char* type_string, FILE* stream = 0) - { - assert(type_string); - if ( stream == 0 ) - stream = stdout; - - Result_t result = RESULT_OK; - ReaderT Reader; - result = Reader.OpenRead(Options.filenames.front().c_str()); - - if ( ASDCP_SUCCESS(result) ) - { - fprintf(stdout, "File essence type is %s.\n", type_string); - - if ( Options.showheader_flag ) - Reader.DumpHeaderMetadata(stream); - - WriterInfo WI; - Reader.FillWriterInfo(WI); - WriterInfoDump(WI, stream); - - DescriptorT Desc; - Desc.FillDescriptor(Reader); - Desc.Dump(stream); - - if ( Options.showindex_flag ) - Reader.DumpIndex(stream); - } - else if ( result == RESULT_FORMAT && Options.showheader_flag ) - { - Reader.DumpHeaderMetadata(stream); - } - - return result; - } -}; - -// Read header metadata from an ASDCP file -// -Result_t -show_file_info(CommandOptions& Options) -{ - EssenceType_t EssenceType; - Result_t result = ASDCP::EssenceType(Options.filenames.front().c_str(), EssenceType); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( EssenceType == ESS_MPEG2_VES ) - { - result = FileInfoWrapper<ASDCP::MPEG2::MXFReader, MyVideoDescriptor>::file_info(Options, "MPEG2 video"); - } - else if ( EssenceType == ESS_PCM_24b_48k || EssenceType == ESS_PCM_24b_96k ) - { - result = FileInfoWrapper<ASDCP::PCM::MXFReader, MyAudioDescriptor>::file_info(Options, "PCM audio"); - - if ( ASDCP_SUCCESS(result) ) - { - const Dictionary* Dict = &DefaultCompositeDict(); - PCM::MXFReader Reader; - MXF::OPAtomHeader OPAtomHeader(Dict); - MXF::WaveAudioDescriptor *descriptor = 0; - - result = Reader.OpenRead(Options.filenames.front().c_str()); - - if ( ASDCP_SUCCESS(result) ) - result = Reader.OPAtomHeader().GetMDObjectByType(Dict->ul(MDD_WaveAudioDescriptor), reinterpret_cast<MXF::InterchangeObject**>(&descriptor)); - - if ( ASDCP_SUCCESS(result) ) - { - char buf[64]; - fprintf(stdout, " ChannelAssignment: %s\n", descriptor->ChannelAssignment.EncodeString(buf, 64)); - } - } - } - else if ( EssenceType == ESS_JPEG_2000 ) - { - if ( Options.stereo_image_flag ) - { - result = FileInfoWrapper<ASDCP::JP2K::MXFSReader, - MyStereoPictureDescriptor>::file_info(Options, "JPEG 2000 stereoscopic pictures"); - } - else - { - result = FileInfoWrapper<ASDCP::JP2K::MXFReader, - MyPictureDescriptor>::file_info(Options, "JPEG 2000 pictures"); - } - } - else if ( EssenceType == ESS_JPEG_2000_S ) - { - result = FileInfoWrapper<ASDCP::JP2K::MXFSReader, - MyStereoPictureDescriptor>::file_info(Options, "JPEG 2000 stereoscopic pictures"); - } - else if ( EssenceType == ESS_TIMED_TEXT ) - { - result = FileInfoWrapper<ASDCP::TimedText::MXFReader, MyTextDescriptor>::file_info(Options, "Timed Text"); - } - else - { - fprintf(stderr, "File is not AS-DCP: %s\n", Options.filenames.front().c_str()); - Kumu::FileReader Reader; - const Dictionary* Dict = &DefaultCompositeDict(); - MXF::OPAtomHeader TestHeader(Dict); - - result = Reader.OpenRead(Options.filenames.front().c_str()); - - if ( ASDCP_SUCCESS(result) ) - result = TestHeader.InitFromFile(Reader); // test UL and OP - - if ( ASDCP_SUCCESS(result) ) - { - TestHeader.Partition::Dump(stdout); - - if ( MXF::Identification* ID = TestHeader.GetIdentification() ) - ID->Dump(stdout); - else - fputs("File contains no Identification object.\n", stdout); - - if ( MXF::SourcePackage* SP = TestHeader.GetSourcePackage() ) - SP->Dump(stdout); - else - fputs("File contains no SourcePackage object.\n", stdout); - } - else - { - fputs("File is not MXF.\n", stdout); - } - } - - return result; -} - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - char str_buf[64]; - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - while ( ! Options.filenames.empty() && ASDCP_SUCCESS(result) ) - { - result = show_file_info(Options); - Options.filenames.pop_front(); - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result == RESULT_SFORMAT ) - { - fputs("Use option '-3' to force stereoscopic mode.\n", stderr); - } - else if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end asdcp-info.cpp -// diff --git a/asdcplib/src/asdcp-mem-test.cpp b/asdcplib/src/asdcp-mem-test.cpp deleted file mode 100755 index 0ce6d90..0000000 --- a/asdcplib/src/asdcp-mem-test.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-mem-test.cpp - \version $Id: asdcp-mem-test.cpp,v 1.4 2009/04/09 19:24:14 msheby Exp $ - \brief AS-DCP frame buffer allocation test -*/ - - -#include <AS_DCP_internal.h> -//#include <KM_platform.h> -#include <KM_prng.h> - -#include <iostream> -#include <assert.h> - -using namespace ASDCP; -using namespace Kumu; - -const ui32_t buf_size = 1024; -FortunaRNG RNG; - -// -int a() -{ - FrameBuffer FB; - FB.Capacity(buf_size); - assert(FB.Capacity() == buf_size); - RNG.FillRandom(FB.Data(), FB.Capacity()); - - return 0; -} - -// -int b() -{ - byte_t* buf = (byte_t*)malloc(buf_size); - assert(buf); - RNG.FillRandom(buf, buf_size); - - { - FrameBuffer FB; - FB.SetData(buf, buf_size); - assert(FB.Data() == buf); - assert(FB.Capacity() == buf_size); - // ~FB() is called... - } - - free(buf); - return 0; -} - -// -int c() -{ - byte_t* buf = (byte_t*)malloc(buf_size); - assert(buf); - RNG.FillRandom(buf, buf_size); - - { - FrameBuffer FB; - FB.SetData(buf, buf_size); - assert(FB.Data() == buf); - assert(FB.Capacity() == buf_size); - - FB.SetData(0,0); - assert(FB.Data() == 0); - assert(FB.Capacity() == 0); - - FB.Capacity(buf_size); - assert(FB.Capacity() == buf_size); - RNG.FillRandom(FB.Data(), FB.Capacity()); - // ~FB() is called... - } - - free(buf); - return 0; -} - -// -int d() -{ - // MPEG2::Parser mPFile; - MPEG2::MXFReader mRFile; - Result_t result = mRFile.OpenRead("../tests/write_test_mpeg.mxf"); - assert(ASDCP_SUCCESS(result)); - - // MPEG2::MXFWriter mWFile; - JP2K::CodestreamParser jPCFile; - JP2K::SequenceParser jPSFile; - JP2K::MXFReader jRFile; - JP2K::MXFWriter jWFile; - - PCM::WAVParser pPFile; - PCM::MXFReader pRFile; - PCM::MXFWriter pWFile; - return 0; -} - -// -int -main( int argc, char **argv ) -{ - ui32_t i = 0x00010000; - fputs("Watch your process monitor, memory usage should not change after startup.\n", stderr); - - while ( i-- ) - { - a(); - b(); - c(); - d(); - - if ( i && ( i % 1000 ) == 0 ) - fputc('.', stderr); - } - - fputc('\n', stderr); - return 0; -} - - -// -// end asdcp-mem-test.cpp -// diff --git a/asdcplib/src/asdcp-test.cpp b/asdcplib/src/asdcp-test.cpp deleted file mode 100755 index 05f486f..0000000 --- a/asdcplib/src/asdcp-test.cpp +++ /dev/null @@ -1,2087 +0,0 @@ -/* -Copyright (c) 2003-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-test.cpp - \version $Id: asdcp-test.cpp,v 1.46 2012/02/03 19:49:56 jhurst Exp $ - \brief AS-DCP file manipulation utility - - This program provides command line access to the major features of the asdcplib - library, and serves as a library unit test which provides the functionality of - the supported use cases. - - For more information about asdcplib, please refer to the header file AS_DCP.h - - WARNING: While the asdcplib library attempts to provide a complete and secure - implementation of the cryptographic features of the AS-DCP file formats, this - unit test program is NOT secure and is therefore NOT SUITABLE FOR USE in a - production environment without some modification. - - In particular, this program uses weak IV generation and externally generated - plaintext keys. These shortcomings exist because cryptographic-quality - random number generation and key management are outside the scope of the - asdcplib library. Developers using asdcplib for commercial implementations - claiming SMPTE conformance are expected to provide proper implementations of - these features. -*/ - -#include <KM_fileio.h> -#include <KM_prng.h> -#include <PCMParserList.h> -#include <WavFileWriter.h> -#include <MXF.h> -#include <Metadata.h> -#include <openssl/sha.h> - -#include <iostream> -#include <assert.h> - -using namespace ASDCP; - -const ui32_t FRAME_BUFFER_SIZE = 4 * Kumu::Megabyte; - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "asdcp-test"; // program name for messages -const ui32_t MAX_IN_FILES = 16; // maximum number of input files handled by - // the command option parser - -// local program identification info written to file headers -class MyInfo : public WriterInfo -{ -public: - MyInfo() - { - static byte_t default_ProductUUID_Data[UUIDlen] = - { 0x7d, 0x83, 0x6e, 0x16, 0x37, 0xc7, 0x4c, 0x22, - 0xb2, 0xe0, 0x46, 0xa7, 0x17, 0xe8, 0x4f, 0x42 }; - - memcpy(ProductUUID, default_ProductUUID_Data, UUIDlen); - CompanyName = "WidgetCo"; - ProductName = "asdcp-test"; - ProductVersion = ASDCP::Version(); - } -} s_MyInfo; - - - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2012 John Hurst\n\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s -c <output-file> [-3] [-a <uuid>] [-b <buffer-size>]\n\ - [-d <duration>] [-e|-E] [-f <start-frame>] [-j <key-id-string>]\n\ - [-k <key-string>] [-l <label>] [-L] [-M] [-p <frame-rate>] [-R]\n\ - [-s <num>] [-v] [-W] [-z|-Z] <input-file> [<input-file-2> ...]\n\ -\n\ - %s [-h|-help] [-V]\n\ -\n\ - %s -i [-H] [-n] [-v] <input-file>\n\ -\n\ - %s -g | -u\n\ -\n\ - %s -G [-v] <input-file>\n\ -\n\ - %s -t <input-file>\n\ -\n\ - %s -x <file-prefix> [-3] [-b <buffer-size>] [-d <duration>]\n\ - [-f <starting-frame>] [-m] [-p <frame-rate>] [-R] [-s <num>] [-S|-1]\n\ - [-v] [-W] [-w] <input-file>\n\n", - PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME, - PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME); - - fprintf(stream, "\ -Major modes:\n\ - -3 - With -c, create a stereoscopic image file. Expects two\n\ - directories of JP2K codestreams (directories must have\n\ - an equal number of frames; left eye is first).\n\ - - With -x, force stereoscopic interpretation of a JP2K\n\ - track file.\n\ - -c <output-file> - Create an AS-DCP track file from input(s)\n\ - -g - Generate a random 16 byte value to stdout\n\ - -G - Perform GOP start lookup test on MXF+Interop MPEG file\n\ - -h | -help - Show help\n\ - -i - Show file info\n\ - -t - Calculate message digest of input file\n\ - -U - Dump UL catalog to stdout\n\ - -u - Generate a random UUID value to stdout\n\ - -V - Show version information\n\ - -x <root-name> - Extract essence from AS-DCP file to named file(s)\n\ -\n"); - - fprintf(stream, "\ -Security Options:\n\ - -e - Encrypt MPEG or JP2K headers (default)\n\ - -E - Do not encrypt MPEG or JP2K headers\n\ - -j <key-id-str> - Write key ID instead of creating a random value\n\ - -k <key-string> - Use key for ciphertext operations\n\ - -m - verify HMAC values when reading\n\ - -M - Do not create HMAC values when writing\n\ -\n"); - - fprintf(stream, "\ -Read/Write Options:\n\ - -a <UUID> - Specify the Asset ID of a file (with -c)\n\ - -b <buffer-size> - Specify size in bytes of picture frame buffer.\n\ - Defaults to 4,194,304 (4MB)\n\ - -d <duration> - Number of frames to process, default all\n\ - -f <start-frame> - Starting frame number, default 0\n\ - -l <label> - Use given channel format label when writing MXF sound\n\ - files. SMPTE 429-2 labels: '5.1', '6.1', '7.1', '7.1DS', 'WTF'.\n\ - Default is no label (valid for Interop only).\n\ - -L - Write SMPTE UL values instead of MXF Interop\n\ - -p <rate> - fps of picture when wrapping PCM or JP2K:\n\ - Use one of [23|24|25|30|48|50|60], 24 is default\n\ - -R - Repeat the first frame over the entire file (picture\n\ - essence only, requires -c, -d)\n\ - -S - Split Wave essence to stereo WAV files during extract.\n\ - Default is multichannel WAV\n\ - -1 - Split Wave essence to mono WAV files during extract.\n\ - Default is multichannel WAV\n\ - -W - Read input file only, do not write source file\n\ - -w <width> - Width of numeric element in a series of frame file names\n\ - (use with -x, default 6).\n\ - -z - Fail if j2c inputs have unequal parameters (default)\n\ - -Z - Ignore unequal parameters in j2c inputs\n\ -\n"); - - fprintf(stream, "\ -Info Options:\n\ - -H - Show MXF header metadata, used with option -i\n\ - -n - Show index, used with option -i\n\ -\n\ -Other Options:\n\ - -s <num> - Number of bytes of frame buffer to be dumped as hex to\n\ - stderr, used with option -v\n\ - -v - Verbose, prints informative messages to stderr\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ - o An argument of \"23\" to the -p option will be interpreted\n\ - as 24000/1001 fps.\n\ -\n"); -} - -// -enum MajorMode_t -{ - MMT_NONE, - MMT_INFO, - MMT_CREATE, - MMT_EXTRACT, - MMT_GEN_ID, - MMT_GEN_KEY, - MMT_GOP_START, - MMT_DIGEST, - MMT_UL_LIST, -}; - -// -PCM::ChannelFormat_t -decode_channel_fmt(const std::string& label_name) -{ - if ( label_name == "5.1" ) - return PCM::CF_CFG_1; - - else if ( label_name == "6.1" ) - return PCM::CF_CFG_2; - - else if ( label_name == "7.1" ) - return PCM::CF_CFG_3; - - else if ( label_name == "WTF" ) - return PCM::CF_CFG_4; - - else if ( label_name == "7.1DS" ) - return PCM::CF_CFG_5; - - fprintf(stderr, "Error decoding channel format string: %s\n", label_name.c_str()); - fprintf(stderr, "Expecting '5.1', '6.1', '7.1', '7.1DS' or 'WTF'\n"); - return PCM::CF_NONE; -} - -// -// -class CommandOptions -{ - CommandOptions(); - -public: - MajorMode_t mode; - bool error_flag; // true if the given options are in error or not complete - bool key_flag; // true if an encryption key was given - bool key_id_flag; // true if a key ID was given - bool asset_id_flag; // true if an asset ID was given - bool encrypt_header_flag; // true if mpeg headers are to be encrypted - bool write_hmac; // true if HMAC values are to be generated and written - bool read_hmac; // true if HMAC values are to be validated - bool split_wav; // true if PCM is to be extracted to stereo WAV files - bool mono_wav; // true if PCM is to be extracted to mono WAV files - bool verbose_flag; // true if the verbose option was selected - ui32_t fb_dump_size; // number of bytes of frame buffer to dump - bool showindex_flag; // true if index is to be displayed - bool showheader_flag; // true if MXF file header is to be displayed - bool no_write_flag; // true if no output files are to be written - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - bool stereo_image_flag; // if true, expect stereoscopic JP2K input (left eye first) - ui32_t number_width; // number of digits in a serialized filename (for JPEG extract) - ui32_t start_frame; // frame number to begin processing - ui32_t duration; // number of frames to be processed - bool duration_flag; // true if duration argument given - bool do_repeat; // if true and -c -d, repeat first input frame - bool use_smpte_labels; // if true, SMPTE UL values will be written instead of MXF Interop values - bool j2c_pedantic; // passed to JP2K::SequenceParser::OpenRead - ui32_t picture_rate; // fps of picture when wrapping PCM - ui32_t fb_size; // size of picture frame buffer - ui32_t file_count; // number of elements in filenames[] - const char* file_root; // filename pre for files written by the extract mode - const char* out_file; // name of mxf file created by create mode - byte_t key_value[KeyLen]; // value of given encryption key (when key_flag is true) - byte_t key_id_value[UUIDlen];// value of given key ID (when key_id_flag is true) - byte_t asset_id_value[UUIDlen];// value of asset ID (when asset_id_flag is true) - const char* filenames[MAX_IN_FILES]; // list of filenames to be processed - PCM::ChannelFormat_t channel_fmt; // audio channel arrangement - - // - Rational PictureRate() - { - if ( picture_rate == 23 ) return EditRate_23_98; - if ( picture_rate == 24 ) return EditRate_24; - if ( picture_rate == 25 ) return EditRate_25; - if ( picture_rate == 30 ) return EditRate_30; - if ( picture_rate == 48 ) return EditRate_48; - if ( picture_rate == 50 ) return EditRate_50; - if ( picture_rate == 60 ) return EditRate_60; - if ( picture_rate == 96 ) return EditRate_96; - if ( picture_rate == 100 ) return EditRate_100; - if ( picture_rate == 120 ) return EditRate_120; - return EditRate_24; - } - - // - const char* szPictureRate() - { - if ( picture_rate == 23 ) return "23.976"; - if ( picture_rate == 24 ) return "24"; - if ( picture_rate == 25 ) return "25"; - if ( picture_rate == 30 ) return "30"; - if ( picture_rate == 48 ) return "48"; - if ( picture_rate == 50 ) return "50"; - if ( picture_rate == 60 ) return "60"; - if ( picture_rate == 96 ) return "96"; - if ( picture_rate == 100 ) return "100"; - if ( picture_rate == 120 ) return "120"; - return "24"; - } - - // - CommandOptions(int argc, const char** argv) : - mode(MMT_NONE), error_flag(true), key_flag(false), key_id_flag(false), asset_id_flag(false), - encrypt_header_flag(true), write_hmac(true), read_hmac(false), split_wav(false), mono_wav(false), - verbose_flag(false), fb_dump_size(0), showindex_flag(false), showheader_flag(false), - no_write_flag(false), version_flag(false), help_flag(false), stereo_image_flag(false), - number_width(6), start_frame(0), - duration(0xffffffff), duration_flag(false), do_repeat(false), use_smpte_labels(false), j2c_pedantic(true), - picture_rate(24), fb_size(FRAME_BUFFER_SIZE), file_count(0), file_root(0), out_file(0), - channel_fmt(PCM::CF_NONE) - { - memset(key_value, 0, KeyLen); - memset(key_id_value, 0, UUIDlen); - - for ( int i = 1; i < argc; i++ ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' - && ( isalpha(argv[i][1]) || isdigit(argv[i][1]) ) - && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case '1': mono_wav = true; break; - case '2': split_wav = true; break; - case '3': stereo_image_flag = true; break; - - case 'a': - asset_id_flag = true; - TEST_EXTRA_ARG(i, 'a'); - { - ui32_t length; - Kumu::hex2bin(argv[i], asset_id_value, UUIDlen, &length); - - if ( length != UUIDlen ) - { - fprintf(stderr, "Unexpected asset ID length: %u, expecting %u characters.\n", length, UUIDlen); - return; - } - } - break; - - case 'b': - TEST_EXTRA_ARG(i, 'b'); - fb_size = abs(atoi(argv[i])); - - if ( verbose_flag ) - fprintf(stderr, "Frame Buffer size: %u bytes.\n", fb_size); - - break; - - case 'c': - TEST_EXTRA_ARG(i, 'c'); - mode = MMT_CREATE; - out_file = argv[i]; - break; - - case 'd': - TEST_EXTRA_ARG(i, 'd'); - duration_flag = true; - duration = abs(atoi(argv[i])); - break; - - case 'E': encrypt_header_flag = false; break; - case 'e': encrypt_header_flag = true; break; - - case 'f': - TEST_EXTRA_ARG(i, 'f'); - start_frame = abs(atoi(argv[i])); - break; - - case 'G': mode = MMT_GOP_START; break; - case 'g': mode = MMT_GEN_KEY; break; - case 'H': showheader_flag = true; break; - case 'h': help_flag = true; break; - case 'i': mode = MMT_INFO; break; - - case 'j': key_id_flag = true; - TEST_EXTRA_ARG(i, 'j'); - { - ui32_t length; - Kumu::hex2bin(argv[i], key_id_value, UUIDlen, &length); - - if ( length != UUIDlen ) - { - fprintf(stderr, "Unexpected key ID length: %u, expecting %u characters.\n", length, UUIDlen); - return; - } - } - break; - - case 'k': key_flag = true; - TEST_EXTRA_ARG(i, 'k'); - { - ui32_t length; - Kumu::hex2bin(argv[i], key_value, KeyLen, &length); - - if ( length != KeyLen ) - { - fprintf(stderr, "Unexpected key length: %u, expecting %u characters.\n", length, KeyLen); - return; - } - } - break; - - case 'l': - TEST_EXTRA_ARG(i, 'l'); - channel_fmt = decode_channel_fmt(argv[i]); - break; - - case 'L': use_smpte_labels = true; break; - case 'M': write_hmac = false; break; - case 'm': read_hmac = true; break; - case 'n': showindex_flag = true; break; - - case 'p': - TEST_EXTRA_ARG(i, 'p'); - picture_rate = abs(atoi(argv[i])); - break; - - case 'R': do_repeat = true; break; - case 'S': split_wav = true; break; - - case 's': - TEST_EXTRA_ARG(i, 's'); - fb_dump_size = abs(atoi(argv[i])); - break; - - case 't': mode = MMT_DIGEST; break; - case 'U': mode = MMT_UL_LIST; break; - case 'u': mode = MMT_GEN_ID; break; - case 'V': version_flag = true; break; - case 'v': verbose_flag = true; break; - case 'W': no_write_flag = true; break; - - case 'w': - TEST_EXTRA_ARG(i, 'w'); - number_width = abs(atoi(argv[i])); - break; - - case 'x': - TEST_EXTRA_ARG(i, 'x'); - mode = MMT_EXTRACT; - file_root = argv[i]; - break; - - case 'Z': j2c_pedantic = false; break; - case 'z': j2c_pedantic = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - - if ( argv[i][0] != '-' ) - { - filenames[file_count++] = argv[i]; - } - else - { - fprintf(stderr, "Unrecognized argument: %s\n", argv[i]); - return; - } - - if ( file_count >= MAX_IN_FILES ) - { - fprintf(stderr, "Filename lists exceeds maximum list size: %u\n", MAX_IN_FILES); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( ( mode == MMT_INFO - || mode == MMT_CREATE - || mode == MMT_EXTRACT - || mode == MMT_GOP_START - || mode == MMT_DIGEST ) && file_count == 0 ) - { - fputs("Option requires at least one filename argument.\n", stderr); - return; - } - - if ( mode == MMT_NONE && ! help_flag && ! version_flag ) - { - fputs("No operation selected (use one of -[gGcitux] or -h for help).\n", stderr); - return; - } - - error_flag = false; - } -}; - -//------------------------------------------------------------------------------------------ -// MPEG2 essence - -// Write a plaintext MPEG2 Video Elementary Stream to a plaintext ASDCP file -// Write a plaintext MPEG2 Video Elementary Stream to a ciphertext ASDCP file -// -Result_t -write_MPEG2_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - MPEG2::FrameBuffer FrameBuffer(Options.fb_size); - MPEG2::Parser Parser; - MPEG2::MXFWriter Writer; - MPEG2::VideoDescriptor VDesc; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames[0]); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillVideoDescriptor(VDesc); - - if ( Options.verbose_flag ) - { - fputs("MPEG-2 Pictures\n", stderr); - fputs("VideoDescriptor:\n", stderr); - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - MPEG2::VideoDescriptorDump(VDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file, Info, VDesc); - } - - if ( ASDCP_SUCCESS(result) ) - // loop through the frames - { - result = Parser.Reset(); - ui32_t duration = 0; - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - if ( ! Options.do_repeat || duration == 1 ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - result = Writer.WriteFrame(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -// Read a plaintext MPEG2 Video Elementary Stream from a plaintext ASDCP file -// Read a plaintext MPEG2 Video Elementary Stream from a ciphertext ASDCP file -// Read a ciphertext MPEG2 Video Elementary Stream from a ciphertext ASDCP file -// -Result_t -read_MPEG2_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - MPEG2::MXFReader Reader; - MPEG2::FrameBuffer FrameBuffer(Options.fb_size); - Kumu::FileWriter OutFile; - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - MPEG2::VideoDescriptor VDesc; - Reader.FillVideoDescriptor(VDesc); - frame_count = VDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - MPEG2::VideoDescriptorDump(VDesc); - } - } - - if ( ASDCP_SUCCESS(result) ) - { - char filename[256]; - snprintf(filename, 256, "%s.ves", Options.file_root); - result = OutFile.OpenWrite(filename); - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - ui32_t write_count = 0; - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - } - } - - return result; -} - - -// -Result_t -gop_start_test(CommandOptions& Options) -{ - using namespace ASDCP::MPEG2; - - MXFReader Reader; - MPEG2::FrameBuffer FrameBuffer(Options.fb_size); - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - MPEG2::VideoDescriptor VDesc; - Reader.FillVideoDescriptor(VDesc); - frame_count = VDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - MPEG2::VideoDescriptorDump(VDesc); - } - } - - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrameGOPStart(i, FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( FrameBuffer.FrameType() != FRAME_I ) - fprintf(stderr, "Expecting an I frame, got %c\n", FrameTypeChar(FrameBuffer.FrameType())); - - fprintf(stderr, "Requested frame %u, got %u\n", i, FrameBuffer.FrameNumber()); - } - } - - return result; -} - -//------------------------------------------------------------------------------------------ -// JPEG 2000 essence - -// Write one or more plaintext JPEG 2000 stereoscopic codestream pairs to a plaintext ASDCP file -// Write one or more plaintext JPEG 2000 stereoscopic codestream pairs to a ciphertext ASDCP file -// -Result_t -write_JP2K_S_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFSWriter Writer; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - JP2K::PictureDescriptor PDesc; - JP2K::SequenceParser ParserLeft, ParserRight; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - if ( Options.file_count != 2 ) - { - fprintf(stderr, "Two inputs are required for stereoscopic option.\n"); - return RESULT_FAIL; - } - - // set up essence parser - Result_t result = ParserLeft.OpenRead(Options.filenames[0], Options.j2c_pedantic); - - if ( ASDCP_SUCCESS(result) ) - result = ParserRight.OpenRead(Options.filenames[1], Options.j2c_pedantic); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - ParserLeft.FillPictureDescriptor(PDesc); - PDesc.EditRate = Options.PictureRate(); - - if ( Options.verbose_flag ) - { - fputs("JPEG 2000 stereoscopic pictures\nPictureDescriptor:\n", stderr); - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file, Info, PDesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t duration = 0; - result = ParserLeft.Reset(); - if ( ASDCP_SUCCESS(result) ) result = ParserRight.Reset(); - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - result = ParserLeft.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.WriteFrame(FrameBuffer, JP2K::SP_LEFT, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - result = ParserRight.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.WriteFrame(FrameBuffer, JP2K::SP_RIGHT, Context, HMAC); - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -// Read one or more plaintext JPEG 2000 stereoscopic codestream pairs from a plaintext ASDCP file -// Read one or more plaintext JPEG 2000 stereoscopic codestream pairs from a ciphertext ASDCP file -// Read one or more ciphertext JPEG 2000 stereoscopic codestream pairs from a ciphertext ASDCP file -Result_t -read_JP2K_S_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFSReader Reader; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - JP2K::PictureDescriptor PDesc; - Reader.FillPictureDescriptor(PDesc); - - frame_count = PDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - const int filename_max = 1024; - char filename[filename_max]; - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - char left_format[64]; char right_format[64]; - snprintf(left_format, 64, "%%s%%0%duL.j2c", Options.number_width); - snprintf(right_format, 64, "%%s%%0%duR.j2c", Options.number_width); - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, JP2K::SP_LEFT, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter OutFile; - ui32_t write_count; - snprintf(filename, filename_max, left_format, Options.file_root, i); - result = OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - } - - if ( ASDCP_SUCCESS(result) ) - result = Reader.ReadFrame(i, JP2K::SP_RIGHT, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter OutFile; - ui32_t write_count; - snprintf(filename, filename_max, right_format, Options.file_root, i); - result = OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - } - } - - return result; -} - - - -// Write one or more plaintext JPEG 2000 codestreams to a plaintext ASDCP file -// Write one or more plaintext JPEG 2000 codestreams to a ciphertext ASDCP file -// -Result_t -write_JP2K_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFWriter Writer; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - JP2K::PictureDescriptor PDesc; - JP2K::SequenceParser Parser; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames[0], Options.j2c_pedantic); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillPictureDescriptor(PDesc); - PDesc.EditRate = Options.PictureRate(); - - if ( Options.verbose_flag ) - { - fprintf(stderr, "JPEG 2000 pictures\n"); - fputs("PictureDescriptor:\n", stderr); - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file, Info, PDesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t duration = 0; - result = Parser.Reset(); - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - if ( ! Options.do_repeat || duration == 1 ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - result = Writer.WriteFrame(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -// Read one or more plaintext JPEG 2000 codestreams from a plaintext ASDCP file -// Read one or more plaintext JPEG 2000 codestreams from a ciphertext ASDCP file -// Read one or more ciphertext JPEG 2000 codestreams from a ciphertext ASDCP file -// -Result_t -read_JP2K_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFReader Reader; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - JP2K::PictureDescriptor PDesc; - Reader.FillPictureDescriptor(PDesc); - - frame_count = PDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - char name_format[64]; - snprintf(name_format, 64, "%%s%%0%du.j2c", Options.number_width); - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter OutFile; - char filename[256]; - ui32_t write_count; - snprintf(filename, 256, name_format, Options.file_root, i); - result = OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - } - } - - return result; -} - -//------------------------------------------------------------------------------------------ -// PCM essence - - -// Write one or more plaintext PCM audio streams to a plaintext ASDCP file -// Write one or more plaintext PCM audio streams to a ciphertext ASDCP file -// -Result_t -write_PCM_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - PCMParserList Parser; - PCM::MXFWriter Writer; - PCM::FrameBuffer FrameBuffer; - PCM::AudioDescriptor ADesc; - Rational PictureRate = Options.PictureRate(); - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.file_count, Options.filenames, PictureRate); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillAudioDescriptor(ADesc); - - ADesc.EditRate = PictureRate; - FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc)); - ADesc.ChannelFormat = Options.channel_fmt; - - if ( Options.use_smpte_labels && ADesc.ChannelFormat == PCM::CF_NONE) - { - fprintf(stderr, "ATTENTION! Writing SMPTE audio without ChannelAssignment property (see option -l)\n"); - } - - if ( Options.verbose_flag ) - { - fprintf(stderr, "%.1fkHz PCM Audio, %s fps (%u spf)\n", - ADesc.AudioSamplingRate.Quotient() / 1000.0, - Options.szPictureRate(), - PCM::CalcSamplesPerFrame(ADesc)); - fputs("AudioDescriptor:\n", stderr); - PCM::AudioDescriptorDump(ADesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file, Info, ADesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - result = Parser.Reset(); - ui32_t duration = 0; - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( FrameBuffer.Size() != FrameBuffer.Capacity() ) - { - fprintf(stderr, "WARNING: Last frame read was short, PCM input is possibly not frame aligned.\n"); - fprintf(stderr, "Expecting %u bytes, got %u.\n", FrameBuffer.Capacity(), FrameBuffer.Size()); - result = RESULT_ENDOFFILE; - continue; - } - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( ! Options.no_write_flag ) - { - result = Writer.WriteFrame(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -// Read one or more plaintext PCM audio streams from a plaintext ASDCP file -// Read one or more plaintext PCM audio streams from a ciphertext ASDCP file -// Read one or more ciphertext PCM audio streams from a ciphertext ASDCP file -// -Result_t -read_PCM_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - PCM::MXFReader Reader; - PCM::FrameBuffer FrameBuffer; - WavFileWriter OutWave; - PCM::AudioDescriptor ADesc; - ui32_t last_frame = 0; - - Result_t result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - Reader.FillAudioDescriptor(ADesc); - - if ( ADesc.EditRate != EditRate_23_98 - && ADesc.EditRate != EditRate_24 - && ADesc.EditRate != EditRate_25 - && ADesc.EditRate != EditRate_30 - && ADesc.EditRate != EditRate_48 - && ADesc.EditRate != EditRate_50 - && ADesc.EditRate != EditRate_60 ) - ADesc.EditRate = Options.PictureRate(); - - FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc)); - - if ( Options.verbose_flag ) - PCM::AudioDescriptorDump(ADesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - last_frame = ADesc.ContainerDuration; - - if ( Options.duration > 0 && Options.duration < last_frame ) - last_frame = Options.duration; - - if ( Options.start_frame > 0 ) - { - if ( Options.start_frame > ADesc.ContainerDuration ) - { - fprintf(stderr, "Start value greater than file duration.\n"); - return RESULT_FAIL; - } - - last_frame = Kumu::xmin(Options.start_frame + last_frame, ADesc.ContainerDuration); - } - - ADesc.ContainerDuration = last_frame - Options.start_frame; - OutWave.OpenWrite(ADesc, Options.file_root, - ( Options.split_wav ? WavFileWriter::ST_STEREO : - ( Options.mono_wav ? WavFileWriter::ST_MONO : WavFileWriter::ST_NONE ) )); - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - result = OutWave.WriteFrame(FrameBuffer); - } - } - - return result; -} - - -//------------------------------------------------------------------------------------------ -// TimedText essence - - -// Write one or more plaintext timed text streams to a plaintext ASDCP file -// Write one or more plaintext timed text streams to a ciphertext ASDCP file -// -Result_t -write_timed_text_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - TimedText::DCSubtitleParser Parser; - TimedText::MXFWriter Writer; - TimedText::FrameBuffer FrameBuffer; - TimedText::TimedTextDescriptor TDesc; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames[0]); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillTimedTextDescriptor(TDesc); - FrameBuffer.Capacity(Options.fb_size); - - if ( Options.verbose_flag ) - { - fputs("D-Cinema Timed-Text Descriptor:\n", stderr); - TimedText::DescriptorDump(TDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file, Info, TDesc); - } - - if ( ASDCP_FAILURE(result) ) - return result; - - std::string XMLDoc; - TimedText::ResourceList_t::const_iterator ri; - - result = Parser.ReadTimedTextResource(XMLDoc); - - if ( ASDCP_SUCCESS(result) ) - result = Writer.WriteTimedTextResource(XMLDoc, Context, HMAC); - - for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end() && ASDCP_SUCCESS(result); ri++ ) - { - result = Parser.ReadAncillaryResource((*ri).ResourceID, FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( ! Options.no_write_flag ) - { - result = Writer.WriteAncillaryResource(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - - -// Read one or more timed text streams from a plaintext ASDCP file -// Read one or more timed text streams from a ciphertext ASDCP file -// Read one or more timed text streams from a ciphertext ASDCP file -// -Result_t -read_timed_text_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - TimedText::MXFReader Reader; - TimedText::FrameBuffer FrameBuffer; - TimedText::TimedTextDescriptor TDesc; - - Result_t result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - Reader.FillTimedTextDescriptor(TDesc); - FrameBuffer.Capacity(Options.fb_size); - - if ( Options.verbose_flag ) - TimedText::DescriptorDump(TDesc); - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - if ( ASDCP_FAILURE(result) ) - return result; - - std::string XMLDoc; - std::string out_path = Kumu::PathDirname(Options.file_root); - ui32_t write_count; - char buf[64]; - TimedText::ResourceList_t::const_iterator ri; - - result = Reader.ReadTimedTextResource(XMLDoc, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter Writer; - result = Writer.OpenWrite(Options.file_root); - - if ( ASDCP_SUCCESS(result) ) - result = Writer.Write(reinterpret_cast<const byte_t*>(XMLDoc.c_str()), XMLDoc.size(), &write_count); - } - - for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end() && ASDCP_SUCCESS(result); ri++ ) - { - result = Reader.ReadAncillaryResource(ri->ResourceID, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter Writer; - result = Writer.OpenWrite(Kumu::PathJoin(out_path, Kumu::UUID(ri->ResourceID).EncodeHex(buf, 64)).c_str()); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - result = Writer.Write(FrameBuffer.RoData(), FrameBuffer.Size(), &write_count); - } - } - } - - return result; -} - -//------------------------------------------------------------------------------------------ -// - -// -// These classes wrap the irregular names in the asdcplib API -// so that I can use a template to simplify the implementation -// of show_file_info() - -class MyVideoDescriptor : public MPEG2::VideoDescriptor -{ - public: - void FillDescriptor(MPEG2::MXFReader& Reader) { - Reader.FillVideoDescriptor(*this); - } - - void Dump(FILE* stream) { - MPEG2::VideoDescriptorDump(*this, stream); - } -}; - -class MyPictureDescriptor : public JP2K::PictureDescriptor -{ - public: - void FillDescriptor(JP2K::MXFReader& Reader) { - Reader.FillPictureDescriptor(*this); - } - - void Dump(FILE* stream) { - JP2K::PictureDescriptorDump(*this, stream); - } -}; - -class MyStereoPictureDescriptor : public JP2K::PictureDescriptor -{ - public: - void FillDescriptor(JP2K::MXFSReader& Reader) { - Reader.FillPictureDescriptor(*this); - } - - void Dump(FILE* stream) { - JP2K::PictureDescriptorDump(*this, stream); - } -}; - -class MyAudioDescriptor : public PCM::AudioDescriptor -{ - public: - void FillDescriptor(PCM::MXFReader& Reader) { - Reader.FillAudioDescriptor(*this); - } - - void Dump(FILE* stream) { - PCM::AudioDescriptorDump(*this, stream); - } -}; - -class MyTextDescriptor : public TimedText::TimedTextDescriptor -{ - public: - void FillDescriptor(TimedText::MXFReader& Reader) { - Reader.FillTimedTextDescriptor(*this); - } - - void Dump(FILE* stream) { - TimedText::DescriptorDump(*this, stream); - } -}; - -// MSVC didn't like the function template, so now it's a static class method -template<class ReaderT, class DescriptorT> -class FileInfoWrapper -{ -public: - static Result_t - file_info(CommandOptions& Options, const char* type_string, FILE* stream = 0) - { - assert(type_string); - if ( stream == 0 ) - stream = stdout; - - Result_t result = RESULT_OK; - - if ( Options.verbose_flag || Options.showheader_flag ) - { - ReaderT Reader; - result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - { - fprintf(stdout, "File essence type is %s.\n", type_string); - - if ( Options.showheader_flag ) - Reader.DumpHeaderMetadata(stream); - - WriterInfo WI; - Reader.FillWriterInfo(WI); - WriterInfoDump(WI, stream); - - DescriptorT Desc; - Desc.FillDescriptor(Reader); - Desc.Dump(stream); - - if ( Options.showindex_flag ) - Reader.DumpIndex(stream); - } - else if ( result == RESULT_FORMAT && Options.showheader_flag ) - { - Reader.DumpHeaderMetadata(stream); - } - } - - return result; - } -}; - -// Read header metadata from an ASDCP file -// -Result_t -show_file_info(CommandOptions& Options) -{ - EssenceType_t EssenceType; - Result_t result = ASDCP::EssenceType(Options.filenames[0], EssenceType); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( EssenceType == ESS_MPEG2_VES ) - { - result = FileInfoWrapper<ASDCP::MPEG2::MXFReader, MyVideoDescriptor>::file_info(Options, "MPEG2 video"); - } - else if ( EssenceType == ESS_PCM_24b_48k || EssenceType == ESS_PCM_24b_96k ) - { - result = FileInfoWrapper<ASDCP::PCM::MXFReader, MyAudioDescriptor>::file_info(Options, "PCM audio"); - - if ( ASDCP_SUCCESS(result) ) - { - const Dictionary* Dict = &DefaultCompositeDict(); - PCM::MXFReader Reader; - MXF::OPAtomHeader OPAtomHeader(Dict); - MXF::WaveAudioDescriptor *descriptor = 0; - - result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - result = Reader.OPAtomHeader().GetMDObjectByType(Dict->ul(MDD_WaveAudioDescriptor), reinterpret_cast<MXF::InterchangeObject**>(&descriptor)); - - if ( ASDCP_SUCCESS(result) ) - { - char buf[64]; - fprintf(stdout, " ChannelAssignment: %s\n", descriptor->ChannelAssignment.EncodeString(buf, 64)); - } - } - } - else if ( EssenceType == ESS_JPEG_2000 ) - { - if ( Options.stereo_image_flag ) - { - result = FileInfoWrapper<ASDCP::JP2K::MXFSReader, - MyStereoPictureDescriptor>::file_info(Options, "JPEG 2000 stereoscopic pictures"); - } - else - { - result = FileInfoWrapper<ASDCP::JP2K::MXFReader, - MyPictureDescriptor>::file_info(Options, "JPEG 2000 pictures"); - } - } - else if ( EssenceType == ESS_JPEG_2000_S ) - { - result = FileInfoWrapper<ASDCP::JP2K::MXFSReader, - MyStereoPictureDescriptor>::file_info(Options, "JPEG 2000 stereoscopic pictures"); - } - else if ( EssenceType == ESS_TIMED_TEXT ) - { - result = FileInfoWrapper<ASDCP::TimedText::MXFReader, MyTextDescriptor>::file_info(Options, "Timed Text"); - } - else - { - fprintf(stderr, "File is not AS-DCP: %s\n", Options.filenames[0]); - Kumu::FileReader Reader; - const Dictionary* Dict = &DefaultCompositeDict(); - MXF::OPAtomHeader TestHeader(Dict); - - result = Reader.OpenRead(Options.filenames[0]); - - if ( ASDCP_SUCCESS(result) ) - result = TestHeader.InitFromFile(Reader); // test UL and OP - - if ( ASDCP_SUCCESS(result) ) - { - TestHeader.Partition::Dump(stdout); - - if ( MXF::Identification* ID = TestHeader.GetIdentification() ) - ID->Dump(stdout); - else - fputs("File contains no Identification object.\n", stdout); - - if ( MXF::SourcePackage* SP = TestHeader.GetSourcePackage() ) - SP->Dump(stdout); - else - fputs("File contains no SourcePackage object.\n", stdout); - } - else - { - fputs("File is not MXF.\n", stdout); - } - } - - return result; -} - - -// -Result_t -digest_file(const char* filename) -{ - using namespace Kumu; - - ASDCP_TEST_NULL_STR(filename); - FileReader Reader; - SHA_CTX Ctx; - SHA1_Init(&Ctx); - ByteString Buf(8192); - - Result_t result = Reader.OpenRead(filename); - - while ( ASDCP_SUCCESS(result) ) - { - ui32_t read_count = 0; - result = Reader.Read(Buf.Data(), Buf.Capacity(), &read_count); - - if ( result == RESULT_ENDOFFILE ) - { - result = RESULT_OK; - break; - } - - if ( ASDCP_SUCCESS(result) ) - SHA1_Update(&Ctx, Buf.Data(), read_count); - } - - if ( ASDCP_SUCCESS(result) ) - { - const ui32_t sha_len = 20; - byte_t bin_buf[sha_len]; - char sha_buf[64]; - SHA1_Final(bin_buf, &Ctx); - - fprintf(stdout, "%s %s\n", base64encode(bin_buf, sha_len, sha_buf, 64), filename); - } - - return result; -} - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - char str_buf[64]; - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - if ( Options.mode == MMT_INFO ) - { - result = show_file_info(Options); - - for ( int i = 1; ASDCP_SUCCESS(result) && i < Options.file_count; ++i ) - { - Options.filenames[0] = Options.filenames[i]; // oh-so hackish - result = show_file_info(Options); - } - } - else if ( Options.mode == MMT_GOP_START ) - { - result = gop_start_test(Options); - } - else if ( Options.mode == MMT_GEN_KEY ) - { - Kumu::FortunaRNG RNG; - byte_t bin_buf[KeyLen]; - - RNG.FillRandom(bin_buf, KeyLen); - printf("%s\n", Kumu::bin2hex(bin_buf, KeyLen, str_buf, 64)); - } - else if ( Options.mode == MMT_GEN_ID ) - { - UUID TmpID; - Kumu::GenRandomValue(TmpID); - printf("%s\n", TmpID.EncodeHex(str_buf, 64)); - } - else if ( Options.mode == MMT_DIGEST ) - { - for ( ui32_t i = 0; i < Options.file_count && ASDCP_SUCCESS(result); i++ ) - result = digest_file(Options.filenames[i]); - } - else if ( Options.mode == MMT_UL_LIST ) - { - if ( Options.use_smpte_labels ) - DefaultSMPTEDict().Dump(stdout); - else - DefaultInteropDict().Dump(stdout); - } - else if ( Options.mode == MMT_EXTRACT ) - { - EssenceType_t EssenceType; - result = ASDCP::EssenceType(Options.filenames[0], EssenceType); - - if ( ASDCP_SUCCESS(result) ) - { - switch ( EssenceType ) - { - case ESS_MPEG2_VES: - result = read_MPEG2_file(Options); - break; - - case ESS_JPEG_2000: - if ( Options.stereo_image_flag ) - result = read_JP2K_S_file(Options); - else - result = read_JP2K_file(Options); - break; - - case ESS_JPEG_2000_S: - result = read_JP2K_S_file(Options); - break; - - case ESS_PCM_24b_48k: - case ESS_PCM_24b_96k: - result = read_PCM_file(Options); - break; - - case ESS_TIMED_TEXT: - result = read_timed_text_file(Options); - break; - - default: - fprintf(stderr, "%s: Unknown file type, not ASDCP essence.\n", Options.filenames[0]); - return 5; - } - } - } - else if ( Options.mode == MMT_CREATE ) - { - if ( Options.do_repeat && ! Options.duration_flag ) - { - fputs("Option -R requires -d <duration>\n", stderr); - return RESULT_FAIL; - } - - EssenceType_t EssenceType; - result = ASDCP::RawEssenceType(Options.filenames[0], EssenceType); - - if ( ASDCP_SUCCESS(result) ) - { - switch ( EssenceType ) - { - case ESS_MPEG2_VES: - result = write_MPEG2_file(Options); - break; - - case ESS_JPEG_2000: - if ( Options.stereo_image_flag ) - result = write_JP2K_S_file(Options); - - else - result = write_JP2K_file(Options); - - break; - - case ESS_PCM_24b_48k: - case ESS_PCM_24b_96k: - result = write_PCM_file(Options); - break; - - case ESS_TIMED_TEXT: - result = write_timed_text_file(Options); - break; - - default: - fprintf(stderr, "%s: Unknown file type, not ASDCP-compatible essence.\n", - Options.filenames[0]); - return 5; - } - } - } - else - { - fprintf(stderr, "Unhandled mode: %d.\n", Options.mode); - return 6; - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result == RESULT_SFORMAT ) - { - fputs("Use option '-3' to force stereoscopic mode.\n", stderr); - } - else if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end asdcp-test.cpp -// diff --git a/asdcplib/src/asdcp-unwrap.cpp b/asdcplib/src/asdcp-unwrap.cpp deleted file mode 100755 index b7b7fef..0000000 --- a/asdcplib/src/asdcp-unwrap.cpp +++ /dev/null @@ -1,896 +0,0 @@ -/* -Copyright (c) 2003-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-unwrap.cpp - \version $Id: asdcp-unwrap.cpp,v 1.1 2012/02/03 19:49:57 jhurst Exp $ - \brief AS-DCP file manipulation utility - - This program extracts picture, sound and text essence from AS-DCP files. - - For more information about asdcplib, please refer to the header file AS_DCP.h -*/ - -#include <KM_fileio.h> -#include <WavFileWriter.h> - -using namespace ASDCP; - -const ui32_t FRAME_BUFFER_SIZE = 4 * Kumu::Megabyte; - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "asdcp-unwrap"; // program name for messages - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) \ - if ( ++i >= argc || argv[(i)][0] == '-' ) { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2012 John Hurst\n\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-h|-help] [-V]\n\ -\n\ - %s -G [-v] <input-file>\n\ -\n\ - %s [-1|-2] [-3] [-b <buffer-size>] [-d <duration>]\n\ - [-f <starting-frame>] [-m] [-p <frame-rate>] [-R] [-s <size>] [-v] [-W]\n\ - [-w] <input-file> [<file-prefix>]\n\n", - PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME); - - fprintf(stream, "\ -Options:\n\ - -1 - Split Wave essence to mono WAV files during extract.\n\ - Default is multichannel WAV\n\ - -2 - Split Wave essence to stereo WAV files during extract.\n\ - Default is multichannel WAV\n\ - -3 - Force stereoscopic interpretation of a JP2K file.\n\ - -b <buffer-size> - Specify size in bytes of picture frame buffer.\n\ - Defaults to 4,194,304 (4MB)\n\ - -d <duration> - Number of frames to process, default all\n\ - -f <start-frame> - Starting frame number, default 0\n\ - -G - Perform GOP start lookup test on MXF+Interop MPEG file\n\ - -h | -help - Show help\n\ - -k <key-string> - Use key for ciphertext operations\n\ - -m - verify HMAC values when reading\n\ - -p <rate> - fps of picture when wrapping PCM or JP2K:\n\ - Use one of [23|24|25|30|48|50|60], 24 is default\n\ - -s <size> - Number of bytes to dump to output when -v is given\n\ - -V - Show version information\n\ - -v - Verbose, prints informative messages to stderr\n\ - -W - Read input file only, do not write destination file\n\ - -w <width> - Width of numeric element in a series of frame file names\n\ - (default 6).\n\ - -z - Fail if j2c inputs have unequal parameters (default)\n\ - -Z - Ignore unequal parameters in j2c inputs\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ - o An argument of \"23\" to the -p option will be interpreted\n\ - as 24000/1001 fps.\n\n"); -} - -// -enum MajorMode_t -{ - MMT_NONE, - MMT_EXTRACT, - MMT_GOP_START, -}; - -// -class CommandOptions -{ - CommandOptions(); - -public: - MajorMode_t mode; - bool error_flag; // true if the given options are in error or not complete - bool key_flag; // true if an encryption key was given - bool read_hmac; // true if HMAC values are to be validated - bool split_wav; // true if PCM is to be extracted to stereo WAV files - bool mono_wav; // true if PCM is to be extracted to mono WAV files - bool verbose_flag; // true if the verbose option was selected - ui32_t fb_dump_size; // number of bytes of frame buffer to dump - bool no_write_flag; // true if no output files are to be written - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - bool stereo_image_flag; // if true, expect stereoscopic JP2K input (left eye first) - ui32_t number_width; // number of digits in a serialized filename (for JPEG extract) - ui32_t start_frame; // frame number to begin processing - ui32_t duration; // number of frames to be processed - bool duration_flag; // true if duration argument given - bool j2c_pedantic; // passed to JP2K::SequenceParser::OpenRead - ui32_t picture_rate; // fps of picture when wrapping PCM - ui32_t fb_size; // size of picture frame buffer - const char* file_prefix; // filename pre for files written by the extract mode - byte_t key_value[KeyLen]; // value of given encryption key (when key_flag is true) - byte_t key_id_value[UUIDlen];// value of given key ID (when key_id_flag is true) - PCM::ChannelFormat_t channel_fmt; // audio channel arrangement - const char* input_filename; - std::string prefix_buffer; - - // - Rational PictureRate() - { - if ( picture_rate == 23 ) return EditRate_23_98; - if ( picture_rate == 24 ) return EditRate_24; - if ( picture_rate == 25 ) return EditRate_25; - if ( picture_rate == 30 ) return EditRate_30; - if ( picture_rate == 48 ) return EditRate_48; - if ( picture_rate == 50 ) return EditRate_50; - if ( picture_rate == 60 ) return EditRate_60; - if ( picture_rate == 96 ) return EditRate_96; - if ( picture_rate == 100 ) return EditRate_100; - if ( picture_rate == 120 ) return EditRate_120; - return EditRate_24; - } - - // - CommandOptions(int argc, const char** argv) : - mode(MMT_EXTRACT), error_flag(true), key_flag(false), read_hmac(false), split_wav(false), - mono_wav(false), verbose_flag(false), fb_dump_size(0), no_write_flag(false), - version_flag(false), help_flag(false), stereo_image_flag(false), number_width(6), - start_frame(0), duration(0xffffffff), duration_flag(false), j2c_pedantic(true), - picture_rate(24), fb_size(FRAME_BUFFER_SIZE), file_prefix(0), - channel_fmt(PCM::CF_NONE), input_filename(0) - { - memset(key_value, 0, KeyLen); - memset(key_id_value, 0, UUIDlen); - - for ( int i = 1; i < argc; ++i ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' - && ( isalpha(argv[i][1]) || isdigit(argv[i][1]) ) - && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case '1': mono_wav = true; break; - case '2': split_wav = true; break; - case '3': stereo_image_flag = true; break; - - case 'b': - TEST_EXTRA_ARG(i, 'b'); - fb_size = abs(atoi(argv[i])); - - if ( verbose_flag ) - fprintf(stderr, "Frame Buffer size: %u bytes.\n", fb_size); - - break; - - case 'd': - TEST_EXTRA_ARG(i, 'd'); - duration_flag = true; - duration = abs(atoi(argv[i])); - break; - - case 'f': - TEST_EXTRA_ARG(i, 'f'); - start_frame = abs(atoi(argv[i])); - break; - - case 'G': mode = MMT_GOP_START; break; - case 'h': help_flag = true; break; - - case 'm': read_hmac = true; break; - - case 'p': - TEST_EXTRA_ARG(i, 'p'); - picture_rate = abs(atoi(argv[i])); - break; - - case 's': - TEST_EXTRA_ARG(i, 's'); - fb_dump_size = abs(atoi(argv[i])); - break; - - case 'V': version_flag = true; break; - case 'v': verbose_flag = true; break; - case 'W': no_write_flag = true; break; - - case 'w': - TEST_EXTRA_ARG(i, 'w'); - number_width = abs(atoi(argv[i])); - break; - - case 'Z': j2c_pedantic = false; break; - case 'z': j2c_pedantic = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - if ( argv[i][0] != '-' ) - { - if ( input_filename == 0 ) - { - input_filename = argv[i]; - } - else if ( file_prefix == 0 ) - { - file_prefix = argv[i]; - } - } - else - { - fprintf(stderr, "Unrecognized argument: %s\n", argv[i]); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( ( mode == MMT_EXTRACT || mode == MMT_GOP_START ) && input_filename == 0 ) - { - fputs("Option requires at least one filename argument.\n", stderr); - return; - } - - if ( mode == MMT_EXTRACT && file_prefix == 0 ) - { - prefix_buffer = Kumu::PathSetExtension(input_filename, "") + "_"; - file_prefix = prefix_buffer.c_str(); - } - - error_flag = false; - } -}; - -//------------------------------------------------------------------------------------------ -// MPEG2 essence - -// Read a plaintext MPEG2 Video Elementary Stream from a plaintext ASDCP file -// Read a plaintext MPEG2 Video Elementary Stream from a ciphertext ASDCP file -// Read a ciphertext MPEG2 Video Elementary Stream from a ciphertext ASDCP file -// -Result_t -read_MPEG2_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - MPEG2::MXFReader Reader; - MPEG2::FrameBuffer FrameBuffer(Options.fb_size); - Kumu::FileWriter OutFile; - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.input_filename); - - if ( ASDCP_SUCCESS(result) ) - { - MPEG2::VideoDescriptor VDesc; - Reader.FillVideoDescriptor(VDesc); - frame_count = VDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - MPEG2::VideoDescriptorDump(VDesc); - } - } - - if ( ASDCP_SUCCESS(result) ) - { - char filename[256]; - snprintf(filename, 256, "%s.ves", Options.file_prefix); - result = OutFile.OpenWrite(filename); - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - ui32_t write_count = 0; - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - } - } - - return result; -} - - -// -Result_t -gop_start_test(CommandOptions& Options) -{ - using namespace ASDCP::MPEG2; - - MXFReader Reader; - MPEG2::FrameBuffer FrameBuffer(Options.fb_size); - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.input_filename); - - if ( ASDCP_SUCCESS(result) ) - { - MPEG2::VideoDescriptor VDesc; - Reader.FillVideoDescriptor(VDesc); - frame_count = VDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - MPEG2::VideoDescriptorDump(VDesc); - } - } - - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrameGOPStart(i, FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( FrameBuffer.FrameType() != FRAME_I ) - fprintf(stderr, "Expecting an I frame, got %c\n", FrameTypeChar(FrameBuffer.FrameType())); - - fprintf(stderr, "Requested frame %u, got %u\n", i, FrameBuffer.FrameNumber()); - } - } - - return result; -} - -//------------------------------------------------------------------------------------------ -// JPEG 2000 essence - - -// Read one or more plaintext JPEG 2000 stereoscopic codestream pairs from a plaintext ASDCP file -// Read one or more plaintext JPEG 2000 stereoscopic codestream pairs from a ciphertext ASDCP file -// Read one or more ciphertext JPEG 2000 stereoscopic codestream pairs from a ciphertext ASDCP file -Result_t -read_JP2K_S_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFSReader Reader; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.input_filename); - - if ( ASDCP_SUCCESS(result) ) - { - JP2K::PictureDescriptor PDesc; - Reader.FillPictureDescriptor(PDesc); - - frame_count = PDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - const int filename_max = 1024; - char filename[filename_max]; - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - char left_format[64]; char right_format[64]; - snprintf(left_format, 64, "%%s%%0%duL.j2c", Options.number_width); - snprintf(right_format, 64, "%%s%%0%duR.j2c", Options.number_width); - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, JP2K::SP_LEFT, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter OutFile; - ui32_t write_count; - snprintf(filename, filename_max, left_format, Options.file_prefix, i); - result = OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - } - - if ( ASDCP_SUCCESS(result) ) - result = Reader.ReadFrame(i, JP2K::SP_RIGHT, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter OutFile; - ui32_t write_count; - snprintf(filename, filename_max, right_format, Options.file_prefix, i); - result = OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - } - } - - return result; -} - -// Read one or more plaintext JPEG 2000 codestreams from a plaintext ASDCP file -// Read one or more plaintext JPEG 2000 codestreams from a ciphertext ASDCP file -// Read one or more ciphertext JPEG 2000 codestreams from a ciphertext ASDCP file -// -Result_t -read_JP2K_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFReader Reader; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - ui32_t frame_count = 0; - - Result_t result = Reader.OpenRead(Options.input_filename); - - if ( ASDCP_SUCCESS(result) ) - { - JP2K::PictureDescriptor PDesc; - Reader.FillPictureDescriptor(PDesc); - - frame_count = PDesc.ContainerDuration; - - if ( Options.verbose_flag ) - { - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - ui32_t last_frame = Options.start_frame + ( Options.duration ? Options.duration : frame_count); - if ( last_frame > frame_count ) - last_frame = frame_count; - - char name_format[64]; - snprintf(name_format, 64, "%%s%%0%du.j2c", Options.number_width); - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter OutFile; - char filename[256]; - ui32_t write_count; - snprintf(filename, 256, name_format, Options.file_prefix, i); - result = OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - } - } - - return result; -} - -//------------------------------------------------------------------------------------------ -// PCM essence - -// Read one or more plaintext PCM audio streams from a plaintext ASDCP file -// Read one or more plaintext PCM audio streams from a ciphertext ASDCP file -// Read one or more ciphertext PCM audio streams from a ciphertext ASDCP file -// -Result_t -read_PCM_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - PCM::MXFReader Reader; - PCM::FrameBuffer FrameBuffer; - WavFileWriter OutWave; - PCM::AudioDescriptor ADesc; - ui32_t last_frame = 0; - - Result_t result = Reader.OpenRead(Options.input_filename); - - if ( ASDCP_SUCCESS(result) ) - { - Reader.FillAudioDescriptor(ADesc); - - if ( ADesc.EditRate != EditRate_23_98 - && ADesc.EditRate != EditRate_24 - && ADesc.EditRate != EditRate_25 - && ADesc.EditRate != EditRate_30 - && ADesc.EditRate != EditRate_48 - && ADesc.EditRate != EditRate_50 - && ADesc.EditRate != EditRate_60 ) - ADesc.EditRate = Options.PictureRate(); - - FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc)); - - if ( Options.verbose_flag ) - PCM::AudioDescriptorDump(ADesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - last_frame = ADesc.ContainerDuration; - - if ( Options.duration > 0 && Options.duration < last_frame ) - last_frame = Options.duration; - - if ( Options.start_frame > 0 ) - { - if ( Options.start_frame > ADesc.ContainerDuration ) - { - fprintf(stderr, "Start value greater than file duration.\n"); - return RESULT_FAIL; - } - - last_frame = Kumu::xmin(Options.start_frame + last_frame, ADesc.ContainerDuration); - } - - ADesc.ContainerDuration = last_frame - Options.start_frame; - OutWave.OpenWrite(ADesc, Options.file_prefix, - ( Options.split_wav ? WavFileWriter::ST_STEREO : - ( Options.mono_wav ? WavFileWriter::ST_MONO : WavFileWriter::ST_NONE ) )); - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - for ( ui32_t i = Options.start_frame; ASDCP_SUCCESS(result) && i < last_frame; i++ ) - { - result = Reader.ReadFrame(i, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - result = OutWave.WriteFrame(FrameBuffer); - } - } - - return result; -} - - -//------------------------------------------------------------------------------------------ -// TimedText essence - -// Read one or more timed text streams from a plaintext ASDCP file -// Read one or more timed text streams from a ciphertext ASDCP file -// Read one or more timed text streams from a ciphertext ASDCP file -// -Result_t -read_timed_text_file(CommandOptions& Options) -{ - AESDecContext* Context = 0; - HMACContext* HMAC = 0; - TimedText::MXFReader Reader; - TimedText::FrameBuffer FrameBuffer; - TimedText::TimedTextDescriptor TDesc; - - Result_t result = Reader.OpenRead(Options.input_filename); - - if ( ASDCP_SUCCESS(result) ) - { - Reader.FillTimedTextDescriptor(TDesc); - FrameBuffer.Capacity(Options.fb_size); - - if ( Options.verbose_flag ) - TimedText::DescriptorDump(TDesc); - } - - if ( ASDCP_SUCCESS(result) && Options.key_flag ) - { - Context = new AESDecContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) && Options.read_hmac ) - { - WriterInfo Info; - Reader.FillWriterInfo(Info); - - if ( Info.UsesHMAC ) - { - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - else - { - fputs("File does not contain HMAC values, ignoring -m option.\n", stderr); - } - } - } - - if ( ASDCP_FAILURE(result) ) - return result; - - std::string XMLDoc; - std::string out_path = Kumu::PathDirname(Options.file_prefix); - ui32_t write_count; - char buf[64]; - TimedText::ResourceList_t::const_iterator ri; - - result = Reader.ReadTimedTextResource(XMLDoc, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter Writer; - result = Writer.OpenWrite(Options.file_prefix); - - if ( ASDCP_SUCCESS(result) ) - result = Writer.Write(reinterpret_cast<const byte_t*>(XMLDoc.c_str()), XMLDoc.size(), &write_count); - } - - for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end() && ASDCP_SUCCESS(result); ri++ ) - { - result = Reader.ReadAncillaryResource(ri->ResourceID, FrameBuffer, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { - Kumu::FileWriter Writer; - result = Writer.OpenWrite(Kumu::PathJoin(out_path, Kumu::UUID(ri->ResourceID).EncodeHex(buf, 64)).c_str()); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - result = Writer.Write(FrameBuffer.RoData(), FrameBuffer.Size(), &write_count); - } - } - } - - return result; -} - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - char str_buf[64]; - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - if ( Options.mode == MMT_GOP_START ) - { - result = gop_start_test(Options); - } - else if ( Options.mode == MMT_EXTRACT ) - { - EssenceType_t EssenceType; - result = ASDCP::EssenceType(Options.input_filename, EssenceType); - - if ( ASDCP_SUCCESS(result) ) - { - switch ( EssenceType ) - { - case ESS_MPEG2_VES: - result = read_MPEG2_file(Options); - break; - - case ESS_JPEG_2000: - if ( Options.stereo_image_flag ) - result = read_JP2K_S_file(Options); - else - result = read_JP2K_file(Options); - break; - - case ESS_JPEG_2000_S: - result = read_JP2K_S_file(Options); - break; - - case ESS_PCM_24b_48k: - case ESS_PCM_24b_96k: - result = read_PCM_file(Options); - break; - - case ESS_TIMED_TEXT: - result = read_timed_text_file(Options); - break; - - default: - fprintf(stderr, "%s: Unknown file type, not ASDCP essence.\n", Options.input_filename); - return 5; - } - } - } - else - { - fprintf(stderr, "Unhandled mode: %d.\n", Options.mode); - return 6; - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result == RESULT_SFORMAT ) - { - fputs("Use option '-3' to force stereoscopic mode.\n", stderr); - } - else if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end asdcp-unwrap.cpp -// diff --git a/asdcplib/src/asdcp-util.cpp b/asdcplib/src/asdcp-util.cpp deleted file mode 100755 index 0d9ed4c..0000000 --- a/asdcplib/src/asdcp-util.cpp +++ /dev/null @@ -1,294 +0,0 @@ -/* -Copyright (c) 2003-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-util.cpp - \version $Id: asdcp-util.cpp,v 1.1 2012/02/03 19:49:57 jhurst Exp $ - \brief Utility functions for working with AS-DCP files - - This program provides utility features commonly useful in DCP workflows. - - For more information about asdcplib, please refer to the header file AS_DCP.h -*/ - -#include <KM_fileio.h> -#include <KM_prng.h> -#include <AS_DCP.h> -#include <openssl/sha.h> - -using namespace Kumu; - - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "asdcp-util"; // program name for messages - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) \ - if ( ++i >= argc || argv[(i)][0] == '-' ) { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2012 John Hurst\n\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-h|-help] [-V]\n\ -\n\ - %s -d <input-file>\n\ -\n\ - %s -g | -u\n\ -\n\ - %s -u\n\n", - PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME); - - fprintf(stream, "\ -Major modes:\n\ - -d - Calculate message digest of input file\n\ - -g - Generate a random 16 byte value to stdout\n\ - -h | -help - Show help\n\ - -u - Generate a random UUID value to stdout\n\ - -V - Show version information\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\n"); -} - -// -enum MajorMode_t -{ - MMT_NONE, - MMT_GEN_ID, - MMT_GEN_KEY, - MMT_DIGEST, -}; - -// -class CommandOptions -{ - CommandOptions(); - -public: - MajorMode_t mode; - bool error_flag; // true if the given options are in error or not complete - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - PathList_t filenames; // list of filenames to be processed - - // - CommandOptions(int argc, const char** argv) : - mode(MMT_NONE), error_flag(true), version_flag(false), help_flag(false) - { - for ( int i = 1; i < argc; ++i ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' - && ( isalpha(argv[i][1]) || isdigit(argv[i][1]) ) - && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'd': mode = MMT_DIGEST; break; - case 'g': mode = MMT_GEN_KEY; break; - case 'h': help_flag = true; break; - case 'u': mode = MMT_GEN_ID; break; - case 'V': version_flag = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - if ( argv[i][0] != '-' ) - { - filenames.push_back(argv[i]); - } - else - { - fprintf(stderr, "Unrecognized argument: %s\n", argv[i]); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( ( mode == MMT_DIGEST ) && filenames.empty() ) - { - fputs("Option requires at least one filename argument.\n", stderr); - return; - } - - if ( mode == MMT_NONE && ! help_flag && ! version_flag ) - { - fputs("No operation selected (use one of -[dgu] or -h for help).\n", stderr); - return; - } - - error_flag = false; - } -}; - -// -Result_t -digest_file(const std::string& filename) -{ - FileReader Reader; - SHA_CTX Ctx; - SHA1_Init(&Ctx); - ByteString Buf(8192); - - Result_t result = Reader.OpenRead(filename.c_str()); - - while ( ASDCP_SUCCESS(result) ) - { - ui32_t read_count = 0; - result = Reader.Read(Buf.Data(), Buf.Capacity(), &read_count); - - if ( result == RESULT_ENDOFFILE ) - { - result = RESULT_OK; - break; - } - - if ( ASDCP_SUCCESS(result) ) - SHA1_Update(&Ctx, Buf.Data(), read_count); - } - - if ( ASDCP_SUCCESS(result) ) - { - const ui32_t sha_len = 20; - byte_t bin_buf[sha_len]; - char sha_buf[64]; - SHA1_Final(bin_buf, &Ctx); - - fprintf(stdout, "%s %s\n", - base64encode(bin_buf, sha_len, sha_buf, 64), - filename.c_str()); - } - - return result; -} - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - char str_buf[64]; - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", - PROGRAM_NAME); - return 3; - } - - if ( Options.mode == MMT_GEN_KEY ) - { - Kumu::FortunaRNG RNG; - byte_t bin_buf[ASDCP::KeyLen]; - - RNG.FillRandom(bin_buf, ASDCP::KeyLen); - printf("%s\n", Kumu::bin2hex(bin_buf, ASDCP::KeyLen, str_buf, 64)); - } - else if ( Options.mode == MMT_GEN_ID ) - { - UUID TmpID; - Kumu::GenRandomValue(TmpID); - printf("%s\n", TmpID.EncodeHex(str_buf, 64)); - } - else if ( Options.mode == MMT_DIGEST ) - { - PathList_t::iterator i; - - for ( i = Options.filenames.begin(); - i != Options.filenames.end() && ASDCP_SUCCESS(result); ++i ) - result = digest_file(*i); - } - else - { - fprintf(stderr, "Unhandled mode: %d.\n", Options.mode); - return 6; - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end asdcp-util.cpp -// diff --git a/asdcplib/src/asdcp-version.cpp b/asdcplib/src/asdcp-version.cpp deleted file mode 100755 index 621eec3..0000000 --- a/asdcplib/src/asdcp-version.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-version.cpp - \version $Id: asdcp-version.cpp,v 1.4 2009/04/09 19:24:14 msheby Exp $ - \brief AS-DCP library version annunciator -*/ - -#include <AS_DCP.h> -using namespace ASDCP; - -// -int -main() -{ - printf("%s", VERSION); - return 0; -} - - -// -// end asdcp-version.cpp -// diff --git a/asdcplib/src/asdcp-wrap.cpp b/asdcplib/src/asdcp-wrap.cpp deleted file mode 100755 index e1182ae..0000000 --- a/asdcplib/src/asdcp-wrap.cpp +++ /dev/null @@ -1,1151 +0,0 @@ -/* -Copyright (c) 2003-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file asdcp-wrap.cpp - \version $Id: asdcp-wrap.cpp,v 1.5 2012/03/07 18:47:02 mikey Exp $ - \brief AS-DCP file manipulation utility - - This program wraps d-cinema essence (picture, sound or text) in t an AS-DCP - MXF file. - - For more information about asdcplib, please refer to the header file AS_DCP.h - - WARNING: While the asdcplib library attempts to provide a complete and secure - implementation of the cryptographic features of the AS-DCP file formats, this - unit test program is NOT secure and is therefore NOT SUITABLE FOR USE in a - production environment without some modification. - - In particular, this program uses weak IV generation and externally generated - plaintext keys. These shortcomings exist because cryptographic-quality - random number generation and key management are outside the scope of the - asdcplib library. Developers using asdcplib for commercial implementations - claiming SMPTE conformance are expected to provide proper implementations of - these features. -*/ - -#include <KM_fileio.h> -#include <KM_prng.h> -#include <AS_DCP.h> -#include <PCMParserList.h> -#include <Metadata.h> - -using namespace ASDCP; - -const ui32_t FRAME_BUFFER_SIZE = 4 * Kumu::Megabyte; - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "asdcp-wrap"; // program name for messages - -// local program identification info written to file headers -class MyInfo : public WriterInfo -{ -public: - MyInfo() - { - static byte_t default_ProductUUID_Data[UUIDlen] = - { 0x7d, 0x83, 0x6e, 0x16, 0x37, 0xc7, 0x4c, 0x22, - 0xb2, 0xe0, 0x46, 0xa7, 0x17, 0xe8, 0x4f, 0x42 }; - - memcpy(ProductUUID, default_ProductUUID_Data, UUIDlen); - CompanyName = "WidgetCo"; - ProductName = "asdcp-wrap"; - ProductVersion = ASDCP::Version(); - } -} s_MyInfo; - - - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) \ - if ( ++i >= argc || argv[(i)][0] == '-' ) { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2012 John Hurst\n\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-h|-help] [-V]\n\ -\n\ - %s [-3] [-a <uuid>] [-b <buffer-size>] [-C <UL>] [-d <duration>]\n\ - [-e|-E] [-f <start-frame>] [-j <key-id-string>] [-k <key-string>]\n\ - [-l <label>] [-L] [-M] [-p <frame-rate>] [-s <num>] [-v] [-W]\n\ - [-z|-Z] <input-file>+ <output-file>\n\n", - PROGRAM_NAME, PROGRAM_NAME); - - fprintf(stream, "\ -Options:\n\ - -3 - Create a stereoscopic image file. Expects two\n\ - directories of JP2K codestreams (directories must have\n\ - an equal number of frames; left eye is first).\n\ - -C <UL> - Set ChannelAssignment UL value\n\ - -h | -help - Show help\n\ - -V - Show version information\n\ - -e - Encrypt MPEG or JP2K headers (default)\n\ - -E - Do not encrypt MPEG or JP2K headers\n\ - -j <key-id-str> - Write key ID instead of creating a random value\n\ - -k <key-string> - Use key for ciphertext operations\n\ - -M - Do not create HMAC values when writing\n\ - -a <UUID> - Specify the Asset ID of a file (with -c)\n\ - -b <buffer-size> - Specify size in bytes of picture frame buffer.\n\ - Defaults to 4,194,304 (4MB)\n\ - -d <duration> - Number of frames to process, default all\n\ - -f <start-frame> - Starting frame number, default 0\n\ - -l <label> - Use given channel format label when writing MXF sound\n\ - files. SMPTE 429-2 labels: '5.1', '6.1', '7.1',\n\ - '7.1DS', 'WTF'\n\ - Default is no label (valid for Interop only).\n\ - -L - Write SMPTE UL values instead of MXF Interop\n\ - -p <rate> - fps of picture when wrapping PCM or JP2K:\n\ - Use one of [23|24|25|30|48|50|60], 24 is default\n\ - -v - Verbose, prints informative messages to stderr\n\ - -W - Read input file only, do not write source file\n\ - -z - Fail if j2c inputs have unequal parameters (default)\n\ - -Z - Ignore unequal parameters in j2c inputs\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ - o An argument of \"23\" to the -p option will be interpreted\n\ - as 24000/1001 fps.\n\ -\n"); -} - -// -PCM::ChannelFormat_t -decode_channel_fmt(const std::string& label_name) -{ - if ( label_name == "5.1" ) - return PCM::CF_CFG_1; - - else if ( label_name == "6.1" ) - return PCM::CF_CFG_2; - - else if ( label_name == "7.1" ) - return PCM::CF_CFG_3; - - else if ( label_name == "WTF" ) - return PCM::CF_CFG_4; - - else if ( label_name == "7.1DS" ) - return PCM::CF_CFG_5; - - fprintf(stderr, "Error decoding channel format string: %s\n", label_name.c_str()); - fprintf(stderr, "Expecting '5.1', '6.1', '7.1', '7.1DS' or 'WTF'\n"); - return PCM::CF_NONE; -} - -// -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool key_flag; // true if an encryption key was given - bool asset_id_flag; // true if an asset ID was given - bool encrypt_header_flag; // true if mpeg headers are to be encrypted - bool write_hmac; // true if HMAC values are to be generated and written - /// bool read_hmac; // true if HMAC values are to be validated - /// bool split_wav; // true if PCM is to be extracted to stereo WAV files - /// bool mono_wav; // true if PCM is to be extracted to mono WAV files - bool verbose_flag; // true if the verbose option was selected - ui32_t fb_dump_size; // number of bytes of frame buffer to dump - /// bool showindex_flag; // true if index is to be displayed - /// bool showheader_flag; // true if MXF file header is to be displayed - bool no_write_flag; // true if no output files are to be written - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - bool stereo_image_flag; // if true, expect stereoscopic JP2K input (left eye first) - /// ui32_t number_width; // number of digits in a serialized filename (for JPEG extract) - ui32_t start_frame; // frame number to begin processing - ui32_t duration; // number of frames to be processed - bool use_smpte_labels; // if true, SMPTE UL values will be written instead of MXF Interop values - bool j2c_pedantic; // passed to JP2K::SequenceParser::OpenRead - ui32_t picture_rate; // fps of picture when wrapping PCM - ui32_t fb_size; // size of picture frame buffer - byte_t key_value[KeyLen]; // value of given encryption key (when key_flag is true) - bool key_id_flag; // true if a key ID was given - byte_t key_id_value[UUIDlen];// value of given key ID (when key_id_flag is true) - byte_t asset_id_value[UUIDlen];// value of asset ID (when asset_id_flag is true) - PCM::ChannelFormat_t channel_fmt; // audio channel arrangement - std::string out_file; // - bool show_ul_values; /// if true, dump the UL table before going tp work. - Kumu::PathList_t filenames; // list of filenames to be processed - UL channel_assignment; - - // - Rational PictureRate() - { - if ( picture_rate == 23 ) return EditRate_23_98; - if ( picture_rate == 24 ) return EditRate_24; - if ( picture_rate == 25 ) return EditRate_25; - if ( picture_rate == 30 ) return EditRate_30; - if ( picture_rate == 48 ) return EditRate_48; - if ( picture_rate == 50 ) return EditRate_50; - if ( picture_rate == 60 ) return EditRate_60; - if ( picture_rate == 96 ) return EditRate_96; - if ( picture_rate == 100 ) return EditRate_100; - if ( picture_rate == 120 ) return EditRate_120; - return EditRate_24; - } - - // - const char* szPictureRate() - { - if ( picture_rate == 23 ) return "23.976"; - if ( picture_rate == 24 ) return "24"; - if ( picture_rate == 25 ) return "25"; - if ( picture_rate == 30 ) return "30"; - if ( picture_rate == 48 ) return "48"; - if ( picture_rate == 50 ) return "50"; - if ( picture_rate == 60 ) return "60"; - if ( picture_rate == 96 ) return "96"; - if ( picture_rate == 100 ) return "100"; - if ( picture_rate == 120 ) return "120"; - return "24"; - } - - // - CommandOptions(int argc, const char** argv) : - error_flag(true), key_flag(false), key_id_flag(false), asset_id_flag(false), - encrypt_header_flag(true), write_hmac(true), - verbose_flag(false), fb_dump_size(0), - no_write_flag(false), version_flag(false), help_flag(false), stereo_image_flag(false), - start_frame(0), - duration(0xffffffff), use_smpte_labels(false), j2c_pedantic(true), - fb_size(FRAME_BUFFER_SIZE), - channel_fmt(PCM::CF_NONE), - show_ul_values(false) - { - memset(key_value, 0, KeyLen); - memset(key_id_value, 0, UUIDlen); - - for ( int i = 1; i < argc; i++ ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' - && ( isalpha(argv[i][1]) || isdigit(argv[i][1]) ) - && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case '3': stereo_image_flag = true; break; - - case 'a': - asset_id_flag = true; - TEST_EXTRA_ARG(i, 'a'); - { - ui32_t length; - Kumu::hex2bin(argv[i], asset_id_value, UUIDlen, &length); - - if ( length != UUIDlen ) - { - fprintf(stderr, "Unexpected asset ID length: %u, expecting %u characters.\n", length, UUIDlen); - return; - } - } - break; - - case 'b': - TEST_EXTRA_ARG(i, 'b'); - fb_size = abs(atoi(argv[i])); - - if ( verbose_flag ) - fprintf(stderr, "Frame Buffer size: %u bytes.\n", fb_size); - - break; - - case 'C': - TEST_EXTRA_ARG(i, 'U'); - if ( ! channel_assignment.DecodeHex(argv[i]) ) - { - fprintf(stderr, "Error decoding UL value: %s\n", argv[i]); - return; - } - break; - - case 'd': - TEST_EXTRA_ARG(i, 'd'); - duration = abs(atoi(argv[i])); - break; - - case 'E': encrypt_header_flag = false; break; - case 'e': encrypt_header_flag = true; break; - - case 'f': - TEST_EXTRA_ARG(i, 'f'); - start_frame = abs(atoi(argv[i])); - break; - - case 'h': help_flag = true; break; - - case 'j': key_id_flag = true; - TEST_EXTRA_ARG(i, 'j'); - { - ui32_t length; - Kumu::hex2bin(argv[i], key_id_value, UUIDlen, &length); - - if ( length != UUIDlen ) - { - fprintf(stderr, "Unexpected key ID length: %u, expecting %u characters.\n", length, UUIDlen); - return; - } - } - break; - - case 'k': key_flag = true; - TEST_EXTRA_ARG(i, 'k'); - { - ui32_t length; - Kumu::hex2bin(argv[i], key_value, KeyLen, &length); - - if ( length != KeyLen ) - { - fprintf(stderr, "Unexpected key length: %u, expecting %u characters.\n", length, KeyLen); - return; - } - } - break; - - case 'l': - TEST_EXTRA_ARG(i, 'l'); - channel_fmt = decode_channel_fmt(argv[i]); - break; - - case 'L': use_smpte_labels = true; break; - case 'M': write_hmac = false; break; - - case 'p': - TEST_EXTRA_ARG(i, 'p'); - picture_rate = abs(atoi(argv[i])); - break; - - case 'V': version_flag = true; break; - case 'v': verbose_flag = true; break; - case 'W': no_write_flag = true; break; - case 'Z': j2c_pedantic = false; break; - case 'z': j2c_pedantic = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - - if ( argv[i][0] != '-' ) - { - filenames.push_back(argv[i]); - } - else - { - fprintf(stderr, "Unrecognized argument: %s\n", argv[i]); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( filenames.size() < 2 ) - { - fputs("Option requires at least two filename arguments: <input-file> <output-file>\n", stderr); - return; - } - - out_file = filenames.back(); - filenames.pop_back(); - error_flag = false; - } -}; - -//------------------------------------------------------------------------------------------ -// MPEG2 essence - -// Write a plaintext MPEG2 Video Elementary Stream to a plaintext ASDCP file -// Write a plaintext MPEG2 Video Elementary Stream to a ciphertext ASDCP file -// -Result_t -write_MPEG2_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - MPEG2::FrameBuffer FrameBuffer(Options.fb_size); - MPEG2::Parser Parser; - MPEG2::MXFWriter Writer; - MPEG2::VideoDescriptor VDesc; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames.front().c_str()); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillVideoDescriptor(VDesc); - - if ( Options.verbose_flag ) - { - fputs("MPEG-2 Pictures\n", stderr); - fputs("VideoDescriptor:\n", stderr); - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - MPEG2::VideoDescriptorDump(VDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file.c_str(), Info, VDesc); - } - - if ( ASDCP_SUCCESS(result) ) - // loop through the frames - { - result = Parser.Reset(); - ui32_t duration = 0; - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - if ( duration == 1 ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - result = Writer.WriteFrame(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - - -//------------------------------------------------------------------------------------------ -// JPEG 2000 essence - -// Write one or more plaintext JPEG 2000 stereoscopic codestream pairs to a plaintext ASDCP file -// Write one or more plaintext JPEG 2000 stereoscopic codestream pairs to a ciphertext ASDCP file -// -Result_t -write_JP2K_S_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFSWriter Writer; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - JP2K::PictureDescriptor PDesc; - JP2K::SequenceParser ParserLeft, ParserRight; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - if ( Options.filenames.size() != 2 ) - { - fprintf(stderr, "Two inputs are required for stereoscopic option.\n"); - return RESULT_FAIL; - } - - // set up essence parser - Result_t result = ParserLeft.OpenRead(Options.filenames.front().c_str(), Options.j2c_pedantic); - - if ( ASDCP_SUCCESS(result) ) - { - Options.filenames.pop_front(); - result = ParserRight.OpenRead(Options.filenames.front().c_str(), Options.j2c_pedantic); - } - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - ParserLeft.FillPictureDescriptor(PDesc); - PDesc.EditRate = Options.PictureRate(); - - if ( Options.verbose_flag ) - { - fputs("JPEG 2000 stereoscopic pictures\nPictureDescriptor:\n", stderr); - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file.c_str(), Info, PDesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t duration = 0; - result = ParserLeft.Reset(); - if ( ASDCP_SUCCESS(result) ) result = ParserRight.Reset(); - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - result = ParserLeft.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.WriteFrame(FrameBuffer, JP2K::SP_LEFT, Context, HMAC); - - if ( ASDCP_SUCCESS(result) ) - result = ParserRight.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.WriteFrame(FrameBuffer, JP2K::SP_RIGHT, Context, HMAC); - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -// Write one or more plaintext JPEG 2000 codestreams to a plaintext ASDCP file -// Write one or more plaintext JPEG 2000 codestreams to a ciphertext ASDCP file -// -Result_t -write_JP2K_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - JP2K::MXFWriter Writer; - JP2K::FrameBuffer FrameBuffer(Options.fb_size); - JP2K::PictureDescriptor PDesc; - JP2K::SequenceParser Parser; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames.front().c_str(), Options.j2c_pedantic); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillPictureDescriptor(PDesc); - PDesc.EditRate = Options.PictureRate(); - - if ( Options.verbose_flag ) - { - fprintf(stderr, "JPEG 2000 pictures\n"); - fputs("PictureDescriptor:\n", stderr); - fprintf(stderr, "Frame Buffer size: %u\n", Options.fb_size); - JP2K::PictureDescriptorDump(PDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file.c_str(), Info, PDesc); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t duration = 0; - result = Parser.Reset(); - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - if ( duration == 1 ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( Options.encrypt_header_flag ) - FrameBuffer.PlaintextOffset(0); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - result = Writer.WriteFrame(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -//------------------------------------------------------------------------------------------ -// PCM essence - - -// Write one or more plaintext PCM audio streams to a plaintext ASDCP file -// Write one or more plaintext PCM audio streams to a ciphertext ASDCP file -// -Result_t -write_PCM_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - PCMParserList Parser; - PCM::MXFWriter Writer; - PCM::FrameBuffer FrameBuffer; - PCM::AudioDescriptor ADesc; - Rational PictureRate = Options.PictureRate(); - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames, PictureRate); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillAudioDescriptor(ADesc); - - ADesc.EditRate = PictureRate; - FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc)); - ADesc.ChannelFormat = Options.channel_fmt; - - if ( Options.use_smpte_labels && ADesc.ChannelFormat == PCM::CF_NONE) - { - fprintf(stderr, "ATTENTION! Writing SMPTE audio without ChannelAssignment property (see option -l)\n"); - } - - if ( Options.verbose_flag ) - { - fprintf(stderr, "%.1fkHz PCM Audio, %s fps (%u spf)\n", - ADesc.AudioSamplingRate.Quotient() / 1000.0, - Options.szPictureRate(), - PCM::CalcSamplesPerFrame(ADesc)); - fputs("AudioDescriptor:\n", stderr); - PCM::AudioDescriptorDump(ADesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file.c_str(), Info, ADesc); - - if ( ASDCP_SUCCESS(result) && Options.channel_assignment.HasValue() ) - { - MXF::WaveAudioDescriptor *descriptor = 0; - Writer.OPAtomHeader().GetMDObjectByType(DefaultSMPTEDict().ul(MDD_WaveAudioDescriptor), - reinterpret_cast<MXF::InterchangeObject**>(&descriptor)); - descriptor->ChannelAssignment = Options.channel_assignment; - } - } - - if ( ASDCP_SUCCESS(result) ) - { - result = Parser.Reset(); - ui32_t duration = 0; - - while ( ASDCP_SUCCESS(result) && duration++ < Options.duration ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( FrameBuffer.Size() != FrameBuffer.Capacity() ) - { - fprintf(stderr, "WARNING: Last frame read was short, PCM input is possibly not frame aligned.\n"); - fprintf(stderr, "Expecting %u bytes, got %u.\n", FrameBuffer.Capacity(), FrameBuffer.Size()); - result = RESULT_ENDOFFILE; - continue; - } - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( ! Options.no_write_flag ) - { - result = Writer.WriteFrame(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - - -//------------------------------------------------------------------------------------------ -// TimedText essence - - -// Write one or more plaintext timed text streams to a plaintext ASDCP file -// Write one or more plaintext timed text streams to a ciphertext ASDCP file -// -Result_t -write_timed_text_file(CommandOptions& Options) -{ - AESEncContext* Context = 0; - HMACContext* HMAC = 0; - TimedText::DCSubtitleParser Parser; - TimedText::MXFWriter Writer; - TimedText::FrameBuffer FrameBuffer; - TimedText::TimedTextDescriptor TDesc; - byte_t IV_buf[CBC_BLOCK_SIZE]; - Kumu::FortunaRNG RNG; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filenames.front().c_str()); - - // set up MXF writer - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillTimedTextDescriptor(TDesc); - FrameBuffer.Capacity(Options.fb_size); - - if ( Options.verbose_flag ) - { - fputs("D-Cinema Timed-Text Descriptor:\n", stderr); - TimedText::DescriptorDump(TDesc); - } - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - { - WriterInfo Info = s_MyInfo; // fill in your favorite identifiers here - if ( Options.asset_id_flag ) - memcpy(Info.AssetUUID, Options.asset_id_value, UUIDlen); - else - Kumu::GenRandomUUID(Info.AssetUUID); - - if ( Options.use_smpte_labels ) - { - Info.LabelSetType = LS_MXF_SMPTE; - fprintf(stderr, "ATTENTION! Writing SMPTE Universal Labels\n"); - } - - // configure encryption - if( Options.key_flag ) - { - Kumu::GenRandomUUID(Info.ContextID); - Info.EncryptedEssence = true; - - if ( Options.key_id_flag ) - memcpy(Info.CryptographicKeyID, Options.key_id_value, UUIDlen); - else - RNG.FillRandom(Info.CryptographicKeyID, UUIDlen); - - Context = new AESEncContext; - result = Context->InitKey(Options.key_value); - - if ( ASDCP_SUCCESS(result) ) - result = Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - - if ( ASDCP_SUCCESS(result) && Options.write_hmac ) - { - Info.UsesHMAC = true; - HMAC = new HMACContext; - result = HMAC->InitKey(Options.key_value, Info.LabelSetType); - } - } - - if ( ASDCP_SUCCESS(result) ) - result = Writer.OpenWrite(Options.out_file.c_str(), Info, TDesc); - } - - if ( ASDCP_FAILURE(result) ) - return result; - - std::string XMLDoc; - TimedText::ResourceList_t::const_iterator ri; - - result = Parser.ReadTimedTextResource(XMLDoc); - - if ( ASDCP_SUCCESS(result) ) - result = Writer.WriteTimedTextResource(XMLDoc, Context, HMAC); - - for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end() && ASDCP_SUCCESS(result); ri++ ) - { - result = Parser.ReadAncillaryResource((*ri).ResourceID, FrameBuffer); - - if ( ASDCP_SUCCESS(result) ) - { - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr, Options.fb_dump_size); - - if ( ! Options.no_write_flag ) - { - result = Writer.WriteAncillaryResource(FrameBuffer, Context, HMAC); - - // The Writer class will forward the last block of ciphertext - // to the encryption context for use as the IV for the next - // frame. If you want to use non-sequitur IV values, un-comment - // the following line of code. - // if ( ASDCP_SUCCESS(result) && Options.key_flag ) - // Context->SetIVec(RNG.FillRandom(IV_buf, CBC_BLOCK_SIZE)); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - if ( ASDCP_SUCCESS(result) && ! Options.no_write_flag ) - result = Writer.Finalize(); - - return result; -} - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - char str_buf[64]; - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - if ( Options.show_ul_values ) - { - if ( Options.use_smpte_labels ) - DefaultSMPTEDict().Dump(stdout); - else - DefaultInteropDict().Dump(stdout); - } - - EssenceType_t EssenceType; - result = ASDCP::RawEssenceType(Options.filenames.front().c_str(), EssenceType); - - if ( ASDCP_SUCCESS(result) ) - { - switch ( EssenceType ) - { - case ESS_MPEG2_VES: - result = write_MPEG2_file(Options); - break; - - case ESS_JPEG_2000: - if ( Options.stereo_image_flag ) - { - result = write_JP2K_S_file(Options); - } - else - { - result = write_JP2K_file(Options); - } - break; - - case ESS_PCM_24b_48k: - case ESS_PCM_24b_96k: - result = write_PCM_file(Options); - break; - - case ESS_TIMED_TEXT: - result = write_timed_text_file(Options); - break; - - default: - fprintf(stderr, "%s: Unknown file type, not ASDCP-compatible essence.\n", - Options.filenames.front().c_str()); - return 5; - } - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end asdcp-wrap.cpp -// diff --git a/asdcplib/src/blackwave.cpp b/asdcplib/src/blackwave.cpp deleted file mode 100644 index 8498655..0000000 --- a/asdcplib/src/blackwave.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file wavsplit.cpp - \version $Id: blackwave.cpp,v 1.10 2010/02/16 18:40:57 jhurst Exp $ - \brief Black WAV file generator -*/ - -#include "Wav.h" -#include <assert.h> - -using namespace ASDCP; - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "blackwave"; // program name for messages - -// Macros used to test command option data state. - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option %c.\n", (c)); \ - return; \ - } -// -void -banner(FILE* stream = stderr) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2005-2009 John Hurst\n\n\ -%s is part of asdcplib.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stderr) -{ - fprintf(stream, "\ -USAGE: %s [-v|-h[-d]] <filename>\n\ -\n\ - -V - Show version\n\ - -h - Show help\n\ - -d <duration> - Number of 2k-sample frames to process, default 1440\n\ -\n\ -Other Options:\n\ - -v - Verbose, show extra detail during run\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME); -} - -// -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool verbose_flag; // true if the verbose option was selected - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - ui32_t duration; // number of frames to be processed - const char* filename; // filename prefix for files written by the extract mode - - CommandOptions(int argc, const char** argv) : - error_flag(true), verbose_flag(false), version_flag(false), help_flag(false), - duration(1440), filename(0) - { - for ( int i = 1; i < argc; i++ ) - { - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'V': version_flag = true; break; - case 'h': help_flag = true; break; - case 'v': verbose_flag = true; break; - - case 'd': - TEST_EXTRA_ARG(i, 'd'); - duration = atoi(argv[i]); // TODO: test for negative value, should use strtol() - break; - - default: - fprintf(stderr, "Unrecognized option: %c\n", argv[i][1]); - return; - } - } - else - { - if ( filename ) - { - fprintf(stderr, "Unexpected extra filename.\n"); - return; - } - - filename = argv[i]; - } - } - - if ( filename == 0 ) - { - fputs("Output filename required.\n", stderr); - return; - } - - error_flag = false; - } -}; - - -// -// -Result_t -make_black_wav_file(CommandOptions& Options) -{ - PCM::FrameBuffer FrameBuffer; - PCM::AudioDescriptor ADesc; - - ADesc.EditRate = Rational(24,1); - ADesc.AudioSamplingRate = ASDCP::SampleRate_48k; - ADesc.Locked = 0; - ADesc.ChannelCount = 1; - ADesc.QuantizationBits = 24; - ADesc.BlockAlign = 3; - ADesc.AvgBps = 14400; - ADesc.LinkedTrackID = 1; - ADesc.ContainerDuration = Options.duration; - - // fill the frame buffer with a frame (2000 samples) of black - FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc)); - memset(FrameBuffer.Data(), 0, FrameBuffer.Capacity()); - FrameBuffer.Size(FrameBuffer.Capacity()); - - if ( Options.verbose_flag ) - { - fprintf(stderr, "48Khz PCM Audio, %s fps (%u spf)\n", "24", - PCM::CalcSamplesPerFrame(ADesc)); - fputs("AudioDescriptor:\n", stderr); - PCM::AudioDescriptorDump(ADesc); - } - - // set up output file - Kumu::FileWriter OutFile; - Result_t result = OutFile.OpenWrite(Options.filename); - - if ( ASDCP_SUCCESS(result) ) - { - Wav::SimpleWaveHeader WavHeader(ADesc); - result = WavHeader.WriteToFile(OutFile); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t write_count = 0; - ui32_t duration = 0; - - while ( ASDCP_SUCCESS(result) && (duration++ < Options.duration) ) - { - result = OutFile.Write(FrameBuffer.Data(), FrameBuffer.Size(), &write_count); - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - - return RESULT_OK; -} - - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - CommandOptions Options(argc, argv); - - if ( Options.help_flag ) - { - usage(); - return 0; - } - - if ( Options.error_flag ) - return 3; - - if ( Options.version_flag ) - banner(); - - else - result = make_black_wav_file(Options); - - if ( result != RESULT_OK ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// diff --git a/asdcplib/src/fips-186-rng-test.cpp b/asdcplib/src/fips-186-rng-test.cpp deleted file mode 100755 index aef3b87..0000000 --- a/asdcplib/src/fips-186-rng-test.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* -Copyright (c) 2007-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file fips-186-rng-test.cpp - \version $Id: fips-186-rng-test.cpp,v 1.4 2009/10/08 15:58:16 jhurst Exp $ - \brief FIPS 186-2 RNG test wrapper -*/ - -#include <KM_util.h> -#include <KM_prng.h> -#include <openssl/sha.h> - -using namespace Kumu; - -// -int -main(int argc, const char** argv) -{ - if ( argc != 5 ) - { - fprintf(stderr, "USAGE: fips-186-test <rounds> <b> <XKey-hex> <X-hex>\n"); - return 2; - } - - ui32_t const X_buf_len = 1024; - byte_t XKey_buf[X_buf_len]; - byte_t X_test_buf[X_buf_len]; - ui32_t char_count; - - char* end = 0; - ui32_t rounds = strtol(argv[1], &end, 10); - ui32_t B = strtol(argv[2], &end, 10) / 8; - - if ( hex2bin(argv[3], XKey_buf, X_buf_len, &char_count) != 0 ) - { - fprintf(stderr, "Error parsing <XKey-hex> value\n"); - return 3; - } - - if ( char_count != B ) - { - fprintf(stderr, "Incorrect length for <XKey-hex> value (expecting %d decoded bytes)\n", B); - return 3; - } - - if ( hex2bin(argv[4], X_test_buf, X_buf_len, &char_count) != 0 ) - { - fprintf(stderr, "Error parsing <X-hex> value\n"); - return 3; - } - - ui32_t const meg = 1024*1024; - ui32_t out_size = char_count; - byte_t X_buf[meg]; - ui32_t fill_size = rounds * 20; - assert(fill_size < meg); - Gen_FIPS_186_Value(XKey_buf, B, X_buf, fill_size); - - byte_t* test_key = &X_buf[fill_size - out_size]; - - if ( memcmp(test_key, X_test_buf, char_count) != 0 ) - { - fprintf(stderr, "Test vector value does not match:\n"); - hexdump(test_key, char_count); - return 4; - } - - return 0; -} - -// -// end rng.cpp -// diff --git a/asdcplib/src/fips-186-test-harness.pl b/asdcplib/src/fips-186-test-harness.pl deleted file mode 100755 index 1fb458a..0000000 --- a/asdcplib/src/fips-186-test-harness.pl +++ /dev/null @@ -1,1318 +0,0 @@ -#!/usr/bin/env perl -# -# Copyright (c) 2003-2009, John Hurst -# All rights reserved. -# -# 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. -# -# -# -# $Id: fips-186-test-harness.pl,v 1.4 2009/10/08 15:58:16 jhurst Exp $ -# - - - -use strict; -my $rng_prog = $ARGV[0]; - -die "Expecting RNG program name as argument" unless ( -x $rng_prog ); - -my $test_count = 0; -my $rounds = 2; -my $i = 0; - -while ( my $line = <DATA> ) { - if ( $line =~ /^<MCT>/ ) { - $rounds = 10000; - next; - } - -# next if ($rounds == 2); - - if ( $line =~ /^b = (\d+)/ ) { - my $vlen = $1; - - my $XKey = <DATA>; - die if ( $XKey !~ /^XKey = (\w+)/ ); - $XKey = $1; - - my $XSeed = <DATA>; - - my $Xval = <DATA>; - die if ( $Xval !~ /^X = (\w+)/ ); - $Xval = $1; - - system("$rng_prog $rounds $vlen $XKey $Xval"); - my $ret = $?; - die "\nTest vector failure at test $test_count: r=$rounds b=$vlen k=$XKey v=$Xval ($ret)\n" if ( $ret != 0 ); - print STDERR '.'; - $test_count++; - } -} - -print STDERR "\nfound $test_count test cases\n" - - -# FIPS186_VSTGEN_XChange_Sha1.txt -__DATA__ -[Xchange - SHA1] - -COUNT = 0 -b = 160 -XKey = 8000000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = da39a3ee5e6b4b0d3255bfef95601890afd8070992d5f201dc6e0e4efff2fabad419d4bf7e41fa58 - -COUNT = 1 -b = 160 -XKey = c000000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = fccbeb651889c0c4836c2f94ebf67bbe59af0ef8f21ae5a3ff0c67ed1c578a6f1223fd2130f5638a - -COUNT = 2 -b = 160 -XKey = e000000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = b0f74533c0072c2c99d241a4c5f4c73bc396fdf247dcb245b337d3cf9531142a8f2a1d132a3b72c1 - -COUNT = 3 -b = 160 -XKey = f000000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3f87039d81ff007b02d2a4cbf1eb28be42ad9fc3e793c4c4403c8183b7b063b1ff2a476c86a29150 - -COUNT = 4 -b = 160 -XKey = f800000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 76aae1571999ccf26fc1d8050da716fcd1d4601ed4032c82f7e5331aecca066455117e6c8eec204e - -COUNT = 5 -b = 160 -XKey = fc00000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 28de1e50400afdd50328f7d165a6664989fb8a27d952a36ea896bfcd1e3135c544194985fd436b69 - -COUNT = 6 -b = 160 -XKey = fe00000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = faf212c7824683ba4c58ea4de177714250bbbaa1b9bf77a7ccf493955f00dff8902fd8fd0af446d9 - -COUNT = 7 -b = 160 -XKey = ff00000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3c48a3452a597b40b448ee99eef36221b91a9fc98cfc3f73c492cd2dcb4c8512d7ce16198f41d9e0 - -COUNT = 8 -b = 160 -XKey = ff80000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 02db90873dafeddd6b909280cb08ad51b7ac97782aafa0e44b2ecfbe98648fbdc70388e6c4bc138e - -COUNT = 9 -b = 160 -XKey = ffc0000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 7dcfc01746dede2322bad50d179a069a7808ab2272cd1b8a0fb3b8504ed443ce30a109a2af82abf5 - -COUNT = 10 -b = 160 -XKey = ffe0000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 290b3a3b277cccc4bc9893835b017bad8c0cf5be20ec5fbe6ca4174fbcacf1f2ce325270974e2782 - -COUNT = 11 -b = 160 -XKey = fff0000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = dc8397bfd2baad0409746d9e4c3bb0ce32b981b09b7ed6dafaa1d11f4a063d55c315572796f92a3a - -COUNT = 12 -b = 160 -XKey = fff8000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = a422b968f8864f33e73a7d248ba5e664d312796cb229e54cc63a7429da530f4df0732d2cb1f17e66 - -COUNT = 13 -b = 160 -XKey = fffc000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = dafa5baadb51bc19fa716e066ec6cfb476cf4d66ea2e3a41c0d192080efc71bbaa74e15f3671333c - -COUNT = 14 -b = 160 -XKey = fffe000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = f4107d1d55ce2f2eea18e62f36e67c6cb834072989882745f96d2b055d73aa511a72930862816a3c - -COUNT = 15 -b = 160 -XKey = ffff000000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = bec44e48afa08c1ddd4d003d731eb3fa92ccfba7a22e2b34133693c520647cbdb5c67662400a78ab - -COUNT = 16 -b = 160 -XKey = ffff800000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 4d74c089c13a33eb2870dd2c57baa69c8d13d9bdd086c5ed1eee776e1b405fed8187ec338ff2e404 - -COUNT = 17 -b = 160 -XKey = ffffc00000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 35fd5500ed91ea2750740be274fa9819997c246d6e4568f78f0de506c7eb89a82cfd7b7a38d89752 - -COUNT = 18 -b = 160 -XKey = ffffe00000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d7f5a4bf869c4dda9967e10e15e45d713ad616e7135e579e8feec4c3295118d0f2b102ce44746d2f - -COUNT = 19 -b = 160 -XKey = fffff00000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d875ec45e85c07e11996b56fee6e7efab3f152c36092d82e4f560c907b286da58325a61900cbe98b - -COUNT = 20 -b = 160 -XKey = fffff80000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 6485831589eee689e84dcb9af46aa3a124d85657ba82f2ad8cf01bcbbc75ba775366b535d7a47896 - -COUNT = 21 -b = 160 -XKey = fffffc0000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 17e0dd120fa8cb7a16eb17228270e338f37b158ea22c0c486d4b1992d6d5f20636ca838271805440 - -COUNT = 22 -b = 160 -XKey = fffffe0000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 919d8d62befb49c68520c5a458b00d0577033f47b6ac4fe8b8abf3d9991696bc6fe213960c645a42 - -COUNT = 23 -b = 160 -XKey = ffffff0000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 56e2e117e2c73527e3971c9d3bffb5379cef75d157f93aff7b051dd7fdd8611666689a3e3526c0ce - -COUNT = 24 -b = 160 -XKey = ffffff8000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = fcf9e6f9bfc8cf6d46c760ed213331594d95a895c47beeeaa4b7129ca8c4b249e477a46af5e16ac9 - -COUNT = 25 -b = 160 -XKey = ffffffc000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = e01170df33061c4cb1d123fb0a9e186af468a87696ea8e48f5f1697e51595f58d1e6e7e3440f1407 - -COUNT = 26 -b = 160 -XKey = ffffffe000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 936940fd12fc688855f8a6d0be2722e4294bb0d0af94aa51b0a2f0d93f080daeaf9bfcd8f4c01e82 - -COUNT = 27 -b = 160 -XKey = fffffff000000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 6e0abd8f57f876296a237fc17b2181a5bbe0d6e82a7a36d59c9a68e13e40e9e8136d4c0ccf0acd6b - -COUNT = 28 -b = 160 -XKey = fffffff800000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = dd7de50650bbd6b86e88eba9ea428f0a2b340cc0a361f0053cd1447a4c9d4d5e2d42f114d033eafe - -COUNT = 29 -b = 160 -XKey = fffffffc00000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 52bb6338b2b72fd29167b40caa34123232f770ab7808cfe6f3cb148502d89ff5a80b4ac0778faaeb - -COUNT = 30 -b = 160 -XKey = fffffffe00000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = ae017f7b0e253701216941e1c9d7821f077bfdc3bcd4a02603a2d63d1849072801d78482fa84dc50 - -COUNT = 31 -b = 160 -XKey = ffffffff00000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 6bca6679907d54bd1254ee87ded30591305d436c2f552f28f4ec1f7fbac29a25c3dcb7e630cc41e1 - -COUNT = 32 -b = 160 -XKey = ffffffff80000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 72253fe10d13536bc715464d28ae70cd8dcea9451e6140ee837caddb81de309497e7f95d0fcf09d6 - -COUNT = 33 -b = 160 -XKey = ffffffffc0000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 5784b0627abe62043f7b9fb08e54eaf067c7c6a8f8dbcae34dcd15a7f9bf9b52fef7ff90b792a8f8 - -COUNT = 34 -b = 160 -XKey = ffffffffe0000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 815abfe389de4cb500ea789dd04042f81817fcae3d7a9fbb50b251676653ef671eb29f47cce6ff65 - -COUNT = 35 -b = 160 -XKey = fffffffff0000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3152b9db05fb216edc61782d254a38533988200d02b72cf15cd4404f7e9f4f823544e693889ea3ca - -COUNT = 36 -b = 160 -XKey = fffffffff8000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 1158d881597e94db9cdfb79997a571740ae24386dcb0cbafe2e20d2b6cca811a98dc0ebb65028296 - -COUNT = 37 -b = 160 -XKey = fffffffffc000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 7a252c33152e04374a51c36a8ff386a9125983993d0bfaa073738384128969404434b3ad3badf8dc - -COUNT = 38 -b = 160 -XKey = fffffffffe000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = f22ee43a5dafca77e87b0d2eb6fe202ce0fcc83da391d6a9ca5cd6865744256866d09531ccd9c1a9 - -COUNT = 39 -b = 160 -XKey = ffffffffff000000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = ac6fffbb332e9e733de0f3a85404e22d0c9c53cfc2226a3cb08df3747e541904d9909f05d5932cee - -COUNT = 40 -b = 160 -XKey = ffffffffff800000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 909649b02d9bbf2da624a40a4c5dcec233e58f41ffc0d1b8c0810a1cce89f25cebf40d576f27b808 - -COUNT = 41 -b = 160 -XKey = ffffffffffc00000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 7328500ca54c4fb9eddf8e3ecf2e851b0f8821ac5f1823e77dd73e8cb2e4727ba9e7f2de71737c0c - -COUNT = 42 -b = 160 -XKey = ffffffffffe00000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 2bf06c06d4c1c11276718320c886c74dabb7fd92ccf743e2023909a6d33ff8a42a56f8879804219e - -COUNT = 43 -b = 160 -XKey = fffffffffff00000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = a812af3c2f0ee5615688b966b8885e75a7c76be5e5c9518347f6f23475ed601f556f50a253f64463 - -COUNT = 44 -b = 160 -XKey = fffffffffff80000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d9e4f7719a31e05bc6f07779b4eed313c94346d6a1485c5847f0e7ed5dbd8bf5c4e5ea847207739b - -COUNT = 45 -b = 160 -XKey = fffffffffffc0000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 4b3f3951c0eac34ee8562fb4b7f2d5e7787b0ba705ba474fc13ec9d99f7877ad4b934d7111ee1ccc - -COUNT = 46 -b = 160 -XKey = fffffffffffe0000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 41212672a59e2f50dc0e55107df6fe6e1a6f0806012517058efa8678e1b5709579aeff58d4523a1f - -COUNT = 47 -b = 160 -XKey = ffffffffffff0000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d279d878c380f846f5790f32881f689d3463ef4f577c7bedb83dcdae06aeefe0acf28bc6abc398d6 - -COUNT = 48 -b = 160 -XKey = ffffffffffff8000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = cc2adbd3e9389f19a44bc74585c926de5383f0aaf7591019deffb70cf2106934a09b7c3bb7d36a57 - -COUNT = 49 -b = 160 -XKey = ffffffffffffc000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = aab87ca3ecfd8b84cf2a804d7dfd79f181657c6660e1cffaf9bce87899064b9ef85f4d4edd5b9c97 - -COUNT = 50 -b = 160 -XKey = ffffffffffffe000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d05170a4077035b188e903decf7cd0c8d738c65ebf3d345962da2e10cc480a0e6dac962e784437ea - -COUNT = 51 -b = 160 -XKey = fffffffffffff000000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = df094f91e6e721f7f5c8920cc8699d50d6d2e26677e0595f7ed1fbec275013d9eaec9f8ff0192eba - -COUNT = 52 -b = 160 -XKey = fffffffffffff800000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 840b7bf475412aec0ed426bfc95dbff1dfb3c01993744a1cd5cd57ee1c72157c4576f6fc868e4d67 - -COUNT = 53 -b = 160 -XKey = fffffffffffffc00000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 081c963bfa542131e47a6f824702c81d036170c059d320a7347371e92e8019b0a5a6b674626d1e91 - -COUNT = 54 -b = 160 -XKey = fffffffffffffe00000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 68f04715ea256ee6e48c02d2916a1488d40ec866e1d6a5add4abaef3b8323e62b6693514f14c3db7 - -COUNT = 55 -b = 160 -XKey = ffffffffffffff00000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d3d213d73d9738b9179949641a17cd7a2e4866623e01941575430a978c5edf326cd5215b3bd74e30 - -COUNT = 56 -b = 160 -XKey = ffffffffffffff80000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 68c5582035c3644249e3412eb70336617bc4a593850312fed7a20d25115d1f001f9abbfd118c7753 - -COUNT = 57 -b = 160 -XKey = ffffffffffffffc0000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 12d6de348e76dd0f6380b13bd88d43ea2d5b7c443d794a3fb7758590a1dfa5f34cd9dfff104cbbf5 - -COUNT = 58 -b = 160 -XKey = ffffffffffffffe0000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = a9f1c1cad88416a12c6108de1971198fbd6057f3efe49495894a4e2a69a5ea8714cb3a57b37b93ac - -COUNT = 59 -b = 160 -XKey = fffffffffffffff0000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 789e072cc3185a627d92945339bb1950e915e989dc1490d2b59a054ca1c20017c1bee4aaf9757b5f - -COUNT = 60 -b = 160 -XKey = fffffffffffffff8000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 5509de87994a508680b545fa58aab69cb142f2badf1021645e7430d02cdf6111b0afe66cb7678af0 - -COUNT = 61 -b = 160 -XKey = fffffffffffffffc000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 802cae54caf47f45d5ab352f10cd47774a5895bf29b60f2bb7d20da67d2ee5943de44ddda445367c - -COUNT = 62 -b = 160 -XKey = fffffffffffffffe000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 18001b828028eb44228fa7421cceaba5e12b4feb1ad7c57483d64c39d5d99f737002be9f13162c89 - -COUNT = 63 -b = 160 -XKey = ffffffffffffffff000000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = cb8128e1cbc093306b23da2814d1265dd0d2f9774dd164f011e4fedc044c308b8800057c18ab5a4e - -COUNT = 64 -b = 160 -XKey = ffffffffffffffff800000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d7aec22fb3704dd2ddc721c4d715630a400a15fd192cd7e3627387b47b58fc39d5be4064822b3aad - -COUNT = 65 -b = 160 -XKey = ffffffffffffffffc00000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 45e7933ada2666ca8cd76e4778f290bf41378c217e0286bb1e95ee2f2f7c1eb698248e821b4a0656 - -COUNT = 66 -b = 160 -XKey = ffffffffffffffffe00000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 9eba05157ea9936e6521eb5807b0026c8542d607ea8bce39861123448752f40b4d2fc456d53c34f4 - -COUNT = 67 -b = 160 -XKey = fffffffffffffffff00000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 07b692581741a1e7ee37425c524b1d82662e46b155889af1b444290e586edba269f0f38042ebe9b5 - -COUNT = 68 -b = 160 -XKey = fffffffffffffffff80000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = c71b439ca40ac57e1ec5d9ad4383ee8b61d370b5807590d7fdbfdca963f1b1d4b29092cbb598d1f6 - -COUNT = 69 -b = 160 -XKey = fffffffffffffffffc0000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3b49c50cd7d319774f91275892f751d1c3bc50a38fb3ee13955c718d67c917307a8888dbd1f55339 - -COUNT = 70 -b = 160 -XKey = fffffffffffffffffe0000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = aece9cdcd70b4f65d63c9c2d10a612ac4f24725d0111932147bddee3436d37d15b7354240685bdee - -COUNT = 71 -b = 160 -XKey = ffffffffffffffffff0000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = ac4b24ba0c7976303566e2a0a51959849958db04a001d82153acd09e33ee71efebe458c4f9543119 - -COUNT = 72 -b = 160 -XKey = ffffffffffffffffff8000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 495660a402a40de3f1375ae40e076c7c2aa044287d9930572bb6b13ce419f22a6bf9ae63fd603b3a - -COUNT = 73 -b = 160 -XKey = ffffffffffffffffffc000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d985a58306469ecc0651d039ac8610fc9e71ccd4cdf9c6d1715c4197850e11e39bd27e2ec49801d4 - -COUNT = 74 -b = 160 -XKey = ffffffffffffffffffe000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 42aa31de6a5ce807b14c2e3ad91d91589119da04103cfc7c94860eebe6b4bcae6ba069033c0366ad - -COUNT = 75 -b = 160 -XKey = fffffffffffffffffff000000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 6e8cb43e720c5533ba5fc017c4df8c6f278f2dad63ae8154a2720e077cf423b995c835b068e27fa5 - -COUNT = 76 -b = 160 -XKey = fffffffffffffffffff800000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d038ba69be6edad3cb10e5ef9638214e4da3aa23571c1fd2ce9d56b294ab48738339876367af37c1 - -COUNT = 77 -b = 160 -XKey = fffffffffffffffffffc00000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d0404a3aa63f64da9dd9ac380b6610a7a49c0e342f98bdc235fb6055ff3d786602bf62cdd8add78e - -COUNT = 78 -b = 160 -XKey = fffffffffffffffffffe00000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = be00ae42cbaf9b94b803549533607a0f69154c0008d2de3b583b2616c74b36566ae767ff34b86654 - -COUNT = 79 -b = 160 -XKey = ffffffffffffffffffff00000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 2f02675d18bc26297f4368b634e1ebdf2c5ab677e84f33d437481adebdc5e7bfc556fe6f45072c6a - -COUNT = 80 -b = 160 -XKey = ffffffffffffffffffff80000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = f633f34bb5166cebfecde2295ce7648dec442ff159765c7a86332beb46f7842133f5a3ed6960a3f0 - -COUNT = 81 -b = 160 -XKey = ffffffffffffffffffffc0000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = fdd3881997edbedfe956fc8a013afd072a73c70bbb31390a0fd756b7337863b43fd820ae4e257180 - -COUNT = 82 -b = 160 -XKey = ffffffffffffffffffffe0000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 7d5b95d8bd5db5df0b91df0edb1f287118a57d459b94a90a6e1a0524fd141be752e802c5c6f5fa61 - -COUNT = 83 -b = 160 -XKey = fffffffffffffffffffff0000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = bf8d570e5f9299df9dd93db0c809ff6bfbb35481e2283705a9676727a84d02e2b8883828a05f1bdc - -COUNT = 84 -b = 160 -XKey = fffffffffffffffffffff8000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = bdcabf104dfec16b2a484df9596abda1d4b72afcf8cee6bf749c4bc0c124df9b29b11785d487d54f - -COUNT = 85 -b = 160 -XKey = fffffffffffffffffffffc000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 79d4b08aa8efc652f2f81a5f58d1af456806686fe495d25db5ed36dd034d3e71eb0fcb35d7b0b903 - -COUNT = 86 -b = 160 -XKey = fffffffffffffffffffffe000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = a8d1aef1f8cf16a0c6dbe31542ca390e77bc5be962c1e7cbfb0ef37196b95236b8e105b96da055de - -COUNT = 87 -b = 160 -XKey = ffffffffffffffffffffff000000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 13df68dd0de319394623acd11181384072c2b120a6dc9f090faeaa03484d0862e50cbd2502d963c6 - -COUNT = 88 -b = 160 -XKey = ffffffffffffffffffffff800000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 07cc9dbedb074f9ecce0e3ea54f59d943f57c4fa4909c59e7b2c513f77d4b7c0c30d10bb77e0617f - -COUNT = 89 -b = 160 -XKey = ffffffffffffffffffffffc00000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 6b5da347070676406474673f0ca9ca10624f01d965cbdf2975442fc134c0c50ef1bf2ae000ec67a5 - -COUNT = 90 -b = 160 -XKey = ffffffffffffffffffffffe00000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3dec2b91ba61d60714bba70628413436e238fb0ca9178e7b50ffcadeeb1c3c72536b90ea2d2ce965 - -COUNT = 91 -b = 160 -XKey = fffffffffffffffffffffff00000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = f69d9a2891892b60cfeb504f17fb6ee0a30cbee1cb27802af04191e8386e7a0f612f2bd4d6665f3b - -COUNT = 92 -b = 160 -XKey = fffffffffffffffffffffff80000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 4f78f5e39217be13e1d57aa3f4d55e5955a8ef5c5a98e8e02fb7807b4a885c2de8f64bbb42390302 - -COUNT = 93 -b = 160 -XKey = fffffffffffffffffffffffc0000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = df5c9790c61dde09a272c5c5f5c78e867b10a2e0e18ed67114e130c3af1442d3fe13c53e3072ac60 - -COUNT = 94 -b = 160 -XKey = fffffffffffffffffffffffe0000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = ce06588dccb3d9b8fd40076e57c29bc22d90bd4d56676d8dad83d750be12da19b3a7fea0dde986f4 - -COUNT = 95 -b = 160 -XKey = ffffffffffffffffffffffff0000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = afca72d4d8eeac89452c2d8240611385de4dd1d05d9db6a1b1d0e7df7fa49075c44fd3df0a8f4797 - -COUNT = 96 -b = 160 -XKey = ffffffffffffffffffffffff8000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 65d921596731fb52bc87a79d8996475530015bbd3fb24e206cffb17f8cb92a20cbb434cc13aafbd4 - -COUNT = 97 -b = 160 -XKey = ffffffffffffffffffffffffc000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3ff9c54cc76869bd329ea6fe65935e036900e82df945466a0875379c065121fc5e5620a51adb48bb - -COUNT = 98 -b = 160 -XKey = ffffffffffffffffffffffffe000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = c30a129ddf99ca2ddf8aa065607facbcf86b3b9382cf694fdcb2f55321a52c87c7ab0d701fcf0ab9 - -COUNT = 99 -b = 160 -XKey = fffffffffffffffffffffffff000000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = c81cb8b066027949826b69b919960c0096e0e9f2eeb9e53d2acbd3b40a92470a5665d31582a38b93 - -COUNT = 100 -b = 160 -XKey = fffffffffffffffffffffffff800000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = eba40737de37c4fb7f9931fd455bc6c32a184dd44f524c7dd9681ba0b995df8d7fe461c5df6c3c2b - -COUNT = 101 -b = 160 -XKey = fffffffffffffffffffffffffc00000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 4d4d5aa335b046fcdf9ea069e938f9b662f22286a6a9146296843a0579c5ce81f338517cd7baef4e - -COUNT = 102 -b = 160 -XKey = fffffffffffffffffffffffffe00000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 885b0b6662bc6a1315020e801f4b0400e202fae240441a93e3aa4117745ecb7cd870a77b5fec12f6 - -COUNT = 103 -b = 160 -XKey = ffffffffffffffffffffffffff00000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = d27612b331bf2ebd86c6b018020a284d58dbbd8a90216cdc7d5292c8d69361d19bdfe54da83ff0a8 - -COUNT = 104 -b = 160 -XKey = ffffffffffffffffffffffffff80000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 77fc40d4b1690236b746fdca741541467344caa0715ce6d2abeb8288a3913499e82425717a013d5c - -COUNT = 105 -b = 160 -XKey = ffffffffffffffffffffffffffc0000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = ff32e03b70d7bd9786dc0515cfca1e0f94bee4f22cceead4066accae3d9ee320aeca667367a84acb - -COUNT = 106 -b = 160 -XKey = ffffffffffffffffffffffffffe0000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = e66d2df35bfd3e697069825d96d9d60d113c032f2f772136624475e024f18c5e14b3172155307af3 - -COUNT = 107 -b = 160 -XKey = fffffffffffffffffffffffffff0000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 1c903f71d11d598fe1bf4a79e98b7e7d5d1cb3f700dd7a1dd476ae9bb3d49ec940f56ea03a22659c - -COUNT = 108 -b = 160 -XKey = fffffffffffffffffffffffffff8000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 074c8a6168c9c7df3a87bc57f6eb23251ba7052049ac327af36b12fdbaa4b4b055bc8d680cb8d3f9 - -COUNT = 109 -b = 160 -XKey = fffffffffffffffffffffffffffc000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 8534b835c335c2866bf8e5ddf686c6d4a2a1d4802454314f1e1eedad06355a3c6b39b44c3aa7ecc9 - -COUNT = 110 -b = 160 -XKey = fffffffffffffffffffffffffffe000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 6adcebdf6badfdbaf3675ae97d7da3da4d4a93122c7da68c74f19d3404f143e8c8f7cfb74bbd6415 - -COUNT = 111 -b = 160 -XKey = ffffffffffffffffffffffffffff000000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 8fc7605166aeed6c1d9795bb5aff9a44c6aba7dfca1b0d8b101c78fdc7e3bfd65f4076ca600c1288 - -COUNT = 112 -b = 160 -XKey = ffffffffffffffffffffffffffff800000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 52798b5b8df1b2bfa466713b346961906c210b0bbc40e5b7a62bb4c70ae41a9447b224537ddd14de - -COUNT = 113 -b = 160 -XKey = ffffffffffffffffffffffffffffc00000000000 -XSeed = 0000000000000000000000000000000000000000 -X = a0f58dafbc95601dd59de0dd47cadfe1ea34e9925ba468099308a9450fb52c97db57b4214e58bdce - -COUNT = 114 -b = 160 -XKey = ffffffffffffffffffffffffffffe00000000000 -XSeed = 0000000000000000000000000000000000000000 -X = e19df3f756485974d6381865503eaba161c90d0cecfa163e27fffd5248d31f5bb7a1b92a862b3ad3 - -COUNT = 115 -b = 160 -XKey = fffffffffffffffffffffffffffff00000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 35c284d7dcb6d6623ea34be1371db0b325b3920564e55828a288be312d610666af76f44254964077 - -COUNT = 116 -b = 160 -XKey = fffffffffffffffffffffffffffff80000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 989ce65ed122d1405de7a57664f7ac705cb9b5aaed3b6f05e227229c23c575c4b18e88335eb2c81a - -COUNT = 117 -b = 160 -XKey = fffffffffffffffffffffffffffffc0000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 05d73bc99c91150aa39840544b5bd3b46251bbced56f79000c63f0166d0ca62ed4b9cd3b17afc68b - -COUNT = 118 -b = 160 -XKey = fffffffffffffffffffffffffffffe0000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 758355389548decb4d674f76b286cdfc71f85b7169be18b6b7ac546847056f2a9c9f096dffb27afc - -COUNT = 119 -b = 160 -XKey = ffffffffffffffffffffffffffffff0000000000 -XSeed = 0000000000000000000000000000000000000000 -X = da754c2f1101e44c12a64ce93d7e038531c114df55ce1b0ef8d213ad6f2f43d210e91e1a93f655bf - -COUNT = 120 -b = 160 -XKey = ffffffffffffffffffffffffffffff8000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 2ff3dc5be596d44376eba1b07c8a0048f66d2782b0a1340d919ce12b5dbf2f36c7ce543c55a24dea - -COUNT = 121 -b = 160 -XKey = ffffffffffffffffffffffffffffffc000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 75e6528a68783de77204a15162f84d71f180abba9d9a8e6d239531595f028a116ec0e2c835675762 - -COUNT = 122 -b = 160 -XKey = ffffffffffffffffffffffffffffffe000000000 -XSeed = 0000000000000000000000000000000000000000 -X = 0a1a7503b77852574e366b0117eb3861e8515dfbb3d2dd9fb374146930c4d25590214777c782e203 - -COUNT = 123 -b = 160 -XKey = fffffffffffffffffffffffffffffff000000000 -XSeed = 0000000000000000000000000000000000000000 -X = bc36f8b79d84ab9263f87eaed6252f6bca8fe8df30c91e9427fe4d3d41842460c7a3450c2f300045 - -COUNT = 124 -b = 160 -XKey = fffffffffffffffffffffffffffffff800000000 -XSeed = 0000000000000000000000000000000000000000 -X = 0d824e023491df1aabaeb6737dd61d5aed1b2c874dfda9d4a5b84acd3176e132dd6c29bc47c125f8 - -COUNT = 125 -b = 160 -XKey = fffffffffffffffffffffffffffffffc00000000 -XSeed = 0000000000000000000000000000000000000000 -X = 512664fb393f2b5621292dd26815a78d220847fa1ea1ce8935a07da2e1b12e7299c24b806f24d431 - -COUNT = 126 -b = 160 -XKey = fffffffffffffffffffffffffffffffe00000000 -XSeed = 0000000000000000000000000000000000000000 -X = 950f07a99423ef6afef65ee6da5afc9689f4ad74ce4c86a684398596230f42aee9ad7a185c335347 - -COUNT = 127 -b = 160 -XKey = ffffffffffffffffffffffffffffffff00000000 -XSeed = 0000000000000000000000000000000000000000 -X = 411e11e04b566e3b991613ac2fc1937ca252a7430d18d62106b6088e384a9df4740aca77e822d484 - -COUNT = 128 -b = 160 -XKey = ffffffffffffffffffffffffffffffff80000000 -XSeed = 0000000000000000000000000000000000000000 -X = 7f7aaa087a285980a31c1db915b6bb499e1d9d0a8bdc7f7cbec229a634d9d1a90ca57dcc2fa70f21 - -COUNT = 129 -b = 160 -XKey = ffffffffffffffffffffffffffffffffc0000000 -XSeed = 0000000000000000000000000000000000000000 -X = d3d39e0f1128aca1a6d509730d6eb42cadaf249fc287351728912d33ab57a6665db1b96ebceddd19 - -COUNT = 130 -b = 160 -XKey = ffffffffffffffffffffffffffffffffe0000000 -XSeed = 0000000000000000000000000000000000000000 -X = 3ac0800d44e2f327fdcbd61cdcd7075afce0676f04526a0d0fa9617d8e243ea592af8092db30f5d6 - -COUNT = 131 -b = 160 -XKey = fffffffffffffffffffffffffffffffff0000000 -XSeed = 0000000000000000000000000000000000000000 -X = e742ad48abc285207e067251344b1c68155dab1d59d2c0b1210e1cfae4a5f27ae29d3d9515ec5d11 - -COUNT = 132 -b = 160 -XKey = fffffffffffffffffffffffffffffffff8000000 -XSeed = 0000000000000000000000000000000000000000 -X = b32b0cc4e26f0bcc19ba1aa95533a816d362389af8f81600805c0647d5d8cd64f43d85090e0d200a - -COUNT = 133 -b = 160 -XKey = fffffffffffffffffffffffffffffffffc000000 -XSeed = 0000000000000000000000000000000000000000 -X = 30e347b89c94e6ab2baaadc98f299b24b00ddc8a615def35bfd9194cedbd64d6e924a9ff7a06f33a - -COUNT = 134 -b = 160 -XKey = fffffffffffffffffffffffffffffffffe000000 -XSeed = 0000000000000000000000000000000000000000 -X = c32afe8f42a86036e221607635baa6cbcaf3aeda185a17ba1af4707a84977edfb73e42c3d731f3a5 - -COUNT = 135 -b = 160 -XKey = ffffffffffffffffffffffffffffffffff000000 -XSeed = 0000000000000000000000000000000000000000 -X = f6f062e0f58342e472de9f624373541656b77cacebf5a2db800646f03ede6316a08985f95d554d17 - -COUNT = 136 -b = 160 -XKey = ffffffffffffffffffffffffffffffffff800000 -XSeed = 0000000000000000000000000000000000000000 -X = d5a9fec94ed0a7840d9d93d1978c89bbdefff4524a091f4dc4ef6834f787ba5dcccd20b6a22c945f - -COUNT = 137 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffc00000 -XSeed = 0000000000000000000000000000000000000000 -X = 8a0bc648ba06d5d56f77e31610f41808fce53b436b8b2016c7d788aed7c832c7672d7edad73c75b4 - -COUNT = 138 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffe00000 -XSeed = 0000000000000000000000000000000000000000 -X = 90f3cfc64efc79e0acc670373a89960800775edac7d130c5f80c0bdc7f393fbc898deae1032d5de1 - -COUNT = 139 -b = 160 -XKey = fffffffffffffffffffffffffffffffffff00000 -XSeed = 0000000000000000000000000000000000000000 -X = 182b43626fb350fb68ecdb2e7e468d2297e0faf86b79954c04c253f9aebc8e24837b0a3098bcd501 - -COUNT = 140 -b = 160 -XKey = fffffffffffffffffffffffffffffffffff80000 -XSeed = 0000000000000000000000000000000000000000 -X = f2142110ad487a61e4284154ad9326f7bb21496f6759340d991c96df76648d82e7f9939304d10f3f - -COUNT = 141 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffc0000 -XSeed = 0000000000000000000000000000000000000000 -X = 1175fd3fc41d7339a3003087664c97569a8c230b148a898071b3cbe97e5a285249bfae8a1b4d5535 - -COUNT = 142 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffe0000 -XSeed = 0000000000000000000000000000000000000000 -X = 95942d02ee8f3dd6a341e393d977a90d9d0ef6c3e365ecde89fedecd0219698f4de70d37d939d07e - -COUNT = 143 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffff0000 -XSeed = 0000000000000000000000000000000000000000 -X = dc3d4ab9764f3e7b25784c64c22452c03dabd02ca03c1f871dd8c5ebcf525e9946a2c1d5d259de01 - -COUNT = 144 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffff8000 -XSeed = 0000000000000000000000000000000000000000 -X = cf11ac36a96972cdbb7f35150dd344e4d1341325ee4a44ff09bd9c53108998b5d04b5f07f2bd5300 - -COUNT = 145 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffc000 -XSeed = 0000000000000000000000000000000000000000 -X = 5fe0bd81f1801a3ffa3d3e493075d4120c952f53cca22cbd803abe278f9fdb124502de6066021ad0 - -COUNT = 146 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffe000 -XSeed = 0000000000000000000000000000000000000000 -X = 7859276d44f3a10f844010a375d3eb078e443d28da1de77d77dc3cfe79739027c8f448952df50b76 - -COUNT = 147 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffff000 -XSeed = 0000000000000000000000000000000000000000 -X = b6f311fce947d8de23b678566ca64cddc3404c1da4a888c3b19781d904b437534d397307e6f6d41b - -COUNT = 148 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffff800 -XSeed = 0000000000000000000000000000000000000000 -X = 7af5b5e370d5be661bdd57cdfb81b2aa165ec0e47cec20bddfcaf0fc48711c1d12530e3b5b439cb1 - -COUNT = 149 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffffc00 -XSeed = 0000000000000000000000000000000000000000 -X = 2a738e1979d44cb91c43734026208d39bc20e48cabfa98d32debed67ac44349ef7def37d69a59ab2 - -COUNT = 150 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffffe00 -XSeed = 0000000000000000000000000000000000000000 -X = a660765d616ba5b347c6ed86a7009c42ffd9f746f0ab945b21ec5e4a65de2866f89534aed10fb5f8 - -COUNT = 151 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffff00 -XSeed = 0000000000000000000000000000000000000000 -X = 71cd5ad24edfaeacc9daa6b7670e449b52e0766e2a86db40ecf512883ed1d3d28e1bb6b8dc763c9e - -COUNT = 152 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffff80 -XSeed = 0000000000000000000000000000000000000000 -X = 42f628ec7de1c6f7a2a08232512d8369fbc79d1d9211928ad40bd0fee4fcd0b27099ea868024f97c - -COUNT = 153 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffffc0 -XSeed = 0000000000000000000000000000000000000000 -X = e02365404191d8469d5e3022921027f0d27aa372f3d76956b261390f3f880f2fa32a8440a5301c82 - -COUNT = 154 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffffe0 -XSeed = 0000000000000000000000000000000000000000 -X = 439347cebc1782cc675e2bc25c0cacafe2d3a1b40305f10889ee9cdb4c58ef68d970e94b08556636 - -COUNT = 155 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffffff0 -XSeed = 0000000000000000000000000000000000000000 -X = 59626e8b9318c3c9f46e1a8fac4693faca8ee1ea548a98ab441c6c088ddb58b03d2b5a69708bc26d - -COUNT = 156 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffffff8 -XSeed = 0000000000000000000000000000000000000000 -X = ffd98581d37523fbc53de4a87d5abe516420343f62277bfc3956607d759e63dd89728ef434dc902d - -COUNT = 157 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffffffc -XSeed = 0000000000000000000000000000000000000000 -X = 624048e1eeb7325f7e3251da67f79341bdbd00b0005951d0fec9b327eeb5ff178a7f502d8f57c42b - -COUNT = 158 -b = 160 -XKey = fffffffffffffffffffffffffffffffffffffffe -XSeed = 0000000000000000000000000000000000000000 -X = 089fc77cf8929c246fcee00b92c27676cca08e7598a1213777c0cda53c7016b09667e974f4b1173b - -COUNT = 159 -b = 160 -XKey = ffffffffffffffffffffffffffffffffffffffff -XSeed = 0000000000000000000000000000000000000000 -X = ce8dd97eb53de8b8997d71af15eed31ffc822deb269cb566a0a9645811a3d9c977c5d8fbe8ddf6bb - -# CAVS 5.0 -# "FIPS 186 - General Purpose" information for "rngtestvalues" -# Generators selected: Xorg Xchange -# G-Functions selected: SHA-1 DES -# Generated on Wed Feb 08 15:20:53 2006 - -<MCT> -[Xorg - SHA1] - -COUNT = 0 -b = 160 -XKey = 1c670cfd3b421f21fdb0f3885a204eb659ca9740 -XSeed = 0000000000000000000000000000000000000000 -X = e5121116d1a99e62902ffd279261500e0e16b0f3 - -COUNT = 1 -b = 168 -XKey = d87f639afea75ba44bbc6bd0fb5ac84a12c2c6ed95 -XSeed = 000000000000000000000000000000000000000000 -X = 09328f082e48135784d39f9f0ec67911ef708788 - -COUNT = 2 -b = 176 -XKey = f0ecfa38f93823dcf6c918432d1d72731f02d74cbafa -XSeed = 00000000000000000000000000000000000000000000 -X = 1675536299b8a05236cc460944e691e952adbb80 - -COUNT = 3 -b = 184 -XKey = 574508895ccfdcf4a1ad8284ad94eb3321f5d1a4a6244b -XSeed = 0000000000000000000000000000000000000000000000 -X = f90c11ae695df29ae707a187a2eeeea92dcbd84b - -COUNT = 4 -b = 192 -XKey = 6e9d90254b9534d3ae680c9ab38d434114a58715fd00758b -XSeed = 000000000000000000000000000000000000000000000000 -X = d562e8d50a86de701d6fb076a378282bae721849 - -COUNT = 5 -b = 200 -XKey = 3477f6949b5278183169e9decf0010e683be87afe3b1b357a1 -XSeed = 00000000000000000000000000000000000000000000000000 -X = d954bc9c0537484f8ec13f4dde1905e3441dbac0 - -COUNT = 6 -b = 208 -XKey = 533acb38c61100b152c326c7b4ea027df73b07c94309ca3cf60a -XSeed = 0000000000000000000000000000000000000000000000000000 -X = 14b266d8c1fd4871104dd4f91c6d6d15c8e76c37 - -COUNT = 7 -b = 216 -XKey = 21392b55c4e3af82523cdf81eaf1868055bd3e3ea18236c30b9833 -XSeed = 000000000000000000000000000000000000000000000000000000 -X = 7318576beb22084349f749d7ca615f1333f6bff4 - -COUNT = 8 -b = 224 -XKey = b33ba749e3057b7a8aa61f3c78771655710157323bc1fecef62842d5 -XSeed = 00000000000000000000000000000000000000000000000000000000 -X = a24fa133c2e5ae5a2378af37e6097e1b5f503dd0 - -COUNT = 9 -b = 232 -XKey = 2c685c7482c85777d9de02ee550fc2f5aa0e0f76319f27043ba10407a5 -XSeed = 0000000000000000000000000000000000000000000000000000000000 -X = fceae60fcdda5782a43916d23c133d4aa59588f9 - -COUNT = 10 -b = 240 -XKey = aaa6e9a6525a0dbebf306a487f168bb31411ac5b3d761e5b775deda2c253 -XSeed = 000000000000000000000000000000000000000000000000000000000000 -X = c87d4f6f1dfff1c7c0517a3ba478ea3db40c915d - -COUNT = 11 -b = 248 -XKey = 5061d23eb06b7844fcad7e0b55d6abd6455775cca2bc0cf1b53d9a559c90c9 -XSeed = 00000000000000000000000000000000000000000000000000000000000000 -X = 96116ca45240c44249b8265d736572a3555d4bd8 - -COUNT = 12 -b = 256 -XKey = b436c1e06d76015c85d145cfb2f513f2dbffa7682b3ea09f6539f8f777f33926 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000 -X = 8123d23bdb6379a8383a25fda023af25ec0dd8d0 - -COUNT = 13 -b = 264 -XKey = b6fb9e128dc5985f3a49ab84ee0336f8954318a9b681bbef9bf052beb3555e2134 -XSeed = 000000000000000000000000000000000000000000000000000000000000000000 -X = dcbd4dc592d2eadff08c532614ae28c030e9b60c - -COUNT = 14 -b = 272 -XKey = fe9e57d121e2bd431c41f1f757d2bd5b141c98daa47e795fdbcfed15c14168728a8b -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000 -X = 1945ac66fd792852da50b72e33bac69ed3ce9bbd - -COUNT = 15 -b = 280 -XKey = 635debc0f6a35bea4b6de3db176b06600370d9840375feb1e3e1d6172308f35104f1cc -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000 -X = 72b363e7676288180c41d42a0934714c745bdbb0 - -COUNT = 16 -b = 288 -XKey = 66682eeb3ba396a7654d5e3e1230376d9c8d710f00bb13e493112a92f00661e93597d26b -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000 -X = 1d7d5a287a2198fc2ed407838521c6be1d7cd11d - -COUNT = 17 -b = 296 -XKey = 575289a193c212b874e690bf22d807b568c63a66b9eaccf871bca5c05e66975a7f7841f80b -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000 -X = 5c9f11ba4939c6ce67bdc0c35aaa418151b0b9d0 - -COUNT = 18 -b = 304 -XKey = 6df2a963884ec9a615e398d010cc91026060845b01c0de2362ac2b490c9bd910850a3f057414 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 6a244d9944384feb512d4e080d308096ddfe8066 - -COUNT = 19 -b = 312 -XKey = 2c4b6df63cb790996f0c032657e608a76b2af9d9ff30df77732841bbaab63a23bde0ce71f12a7e -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = f2c6c8fe88d73a1940d0de419ffebc5b2070c5c7 - -COUNT = 20 -b = 320 -XKey = dfb6bfe8d24fd6395c811928a7953aee1a2de5d6e484f69fd9f7e9227ec591355f130dcea933f96c -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 54c4809627894c7be99d752be77a41a71e1177bc - -COUNT = 21 -b = 328 -XKey = 5ae22f47f7301856ada0553c6191977adfb39b64791df5d4f19a0d1f9a446748b95527743139d49e60 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 44ed62cc4a46740532b1178c75919e55598a3094 - -COUNT = 22 -b = 336 -XKey = ee2ef8ae409bc544bda6637166568b93721db4d7a9b194ac0e17e378c000628922591c4e3a1eebc7576f -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 98e18826178499f6b5e9f7dbbc7fbb5ea8ece400 - -COUNT = 23 -b = 344 -XKey = d071c39a5d2e9a2aaf716f1ad84c16ba74411d3597615dcd04b6cf68a0dfa14c26fa89271bc75a520509d5 -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 5f8264026559da35e0bea1fdab8bc967079b1fd9 - -COUNT = 24 -b = 352 -XKey = 369b80c1a1c6fb9d69a01c727cece3547371544418631d4a252079c44f1d54fd831fb00170ae47b045c67212 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 148e0ecee150cb59b1ee70586e0f493b74dda65d - -COUNT = 25 -b = 360 -XKey = d0a014bda380b171255b36e40f20a69821957dae52eff01229a077f36b708976f6cfa6abed699bc015fc02747f -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 1a67a8bcdffd0e07606288fb0bb0726b36b259bf - -COUNT = 26 -b = 368 -XKey = aae6ae0f2eb856f812733764e7ec1cfc7d49e92e61703738a5c03f83dffef933749285fc17f3c9378c605c35b2d1 -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 10b3ebf6cd54131ce1e902829a0ab251f193eb24 - -COUNT = 27 -b = 376 -XKey = f36b395eb02579985875f6183210e452b91c20bd58e4172772d1e44ba596b8a550aa7f8552fbc06315e1c572cc50fd -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 110bb9281f2e1ffac8252473be9f1ef2629513f0 - -COUNT = 28 -b = 384 -XKey = 7af1449287ffbf7428814dd6217aee8695d7f463760a121e40f6b642e70b98720db293f279ebb56ac53492e656aedd20 -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 08ea8feab6b529788d904bdbd43b9db583c95b3c - -COUNT = 29 -b = 392 -XKey = 94a62f890e754bda69b6d2a71a9c7cda337b99902d80f76ee4a00638e3ce3a9fe271b15b8d15167a8760c5f8af482f8fa2 -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = c65ba4525e3bb1f083ac1bd971d952d8fb4ea820 - -COUNT = 30 -b = 400 -XKey = 417891bdbf562d87c93ca9c53aac522161c793e8a762bcbe725b0391492dc9cb38c31ecc768a869745cafdcb1a363ad6fec2 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 09ffcbaca867d86fb5a90e44ad5d60b96b52e090 - -COUNT = 31 -b = 408 -XKey = 999a1eeca775bdbe61f3772f6cfc28ff95f13745ac35100e95ecd4479c024edd096f2a22f4ba61735bbcf81872a7ea6b3a4763 -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = f2fef1651d92847c0facc14799153aac54289afc - -COUNT = 32 -b = 416 -XKey = 41f80eca8e883ceb6a772453131c922d542749c2a93248a4a4994c2c8f8c96275362eecd9930e8f32e9b6681acea5e255760de49 -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = e750fd8a3815189e7b1ffba65760c6896773195f - -COUNT = 33 -b = 424 -XKey = 7eae482dcfa5e02acf05e105db48283f440640439a24ca3b2a482228c58f3f32c383db3c4847d4bcc615d3cac3eb2b77dd80045f0b -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 26e00f1ea68d5bde0c820837c18f564347507dc9 - -COUNT = 34 -b = 432 -XKey = d8143b6190d098d8c0b9af5c175344b602e6d086732e6b96e054ef688e1d5b110f62754a0ac0b4c53a905cbdb919ebd17f05b4122512 -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 60ac25c92a8c7da14edfebde25a97646474c9009 - -COUNT = 35 -b = 440 -XKey = 6f54f8051f7c172493f282be71942d4a65285560bca1b61b2f9effc1fc3483a63ced314d7010c6d15d2341831aaf97d56743a97740bb73 -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 1130c281c88ecad60736ac5bf6c9db4fc2e8334a - -COUNT = 36 -b = 448 -XKey = ca82c17fc3ac423e00c8b7c6f48bd0976d9e60c973f460fe735c37959d5239208a1b6d18221193d0bd3b65a888201e832bdd397ba8767bd3 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 8da6754cadeb3f9121239381de1ff40061abe07e - -COUNT = 37 -b = 456 -XKey = 058f0d2e2a8b17581ab00d8b7ed2fef2e21dfaa60b120fd28acc771591880f2706640bc0d667e8b58cc2a3642255295316750e14c1ed816ce5 -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 5fd13163fb1fe4417fe96d7fb13ef2577f5868b2 - -COUNT = 38 -b = 464 -XKey = a8806c3e36700c4b8b45555dc9679bcb036fa3924fe85a3d1d57c708c77a3f4469ced8fdf25320db7b930e46d8e138cd6ddf47c94343a83d5cda -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 5704c42642beaa28896816eb196d2cf6b3de61f6 - -COUNT = 39 -b = 472 -XKey = 1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed6 -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = f6f672ba423d82f4e86d1c7a41b4547972e859de - -COUNT = 40 -b = 480 -XKey = 28c1adb2742ac3b9c15d22f737ac5ffd34d0e5d79ee6ea3677b7a2cfb13cb2fe4462e7af7f0a287e9b54a91d961d62f63fc6c0128d379a3a3424665c -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 4596045105a7e36296b9ad7353723ba306353004 - -COUNT = 41 -b = 488 -XKey = 195adc728e0ec4f0b210b57658b448860e219231ad9d56812e0b7815bfb1b50b163f9223060d922050a5ac72bb81fc136716b9af5e1167076ce04e9731 -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 3e573f2a097c3568c9cf52f20eb141e63f9f776e - -COUNT = 42 -b = 496 -XKey = 866db552cf4745908fdf35d4c0967428d56039b1f223df315c61f2d12f178a1e4fe5d751a06efed37a022300577bc72ccf6455e3c761f775e5caaeb2479a -XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 0077207b39f67aa80cb2ea90818440d4e5ccc414 - -COUNT = 43 -b = 504 -XKey = 641846ce2ba4396a391651179231d553c9061c6619bd4545b29228b6511e8bb513d89a168bdb916d12eabc2b5eb1a109574d7caa250feb7b8e7debdf7f9a03 -XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = 2166c4e99be5dc0cdc747c7c6d27105a8e115ba5 - -COUNT = 44 -b = 512 -XKey = 5cbb6d193c13bd62f5658ed4304774c6b1faf5b3dce432487840cabab415fb5d67640a739ca6e5414e760869708a9d7331e7e7ad7d55e035c711215406c3030d -XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -X = a2322c754fe789af3afae00b9fbbbd613076ea9f - diff --git a/asdcplib/src/gen-tst.sh b/asdcplib/src/gen-tst.sh deleted file mode 100755 index 31ed12d..0000000 --- a/asdcplib/src/gen-tst.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# -# $Id: gen-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -${BUILD_DIR}/asdcp-test${EXEEXT} -g diff --git a/asdcplib/src/h__Reader.cpp b/asdcplib/src/h__Reader.cpp deleted file mode 100755 index ebf3443..0000000 --- a/asdcplib/src/h__Reader.cpp +++ /dev/null @@ -1,460 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file h__Reader.cpp - \version $Id: h__Reader.cpp,v 1.31 2012/02/07 18:54:25 jhurst Exp $ - \brief MXF file reader base class -*/ - -#define DEFAULT_MD_DECL -#include "AS_DCP_internal.h" -#include "KLV.h" - -using namespace ASDCP; -using namespace ASDCP::MXF; - -static Kumu::Mutex sg_DefaultMDInitLock; -static bool sg_DefaultMDTypesInit = false; -static const ASDCP::Dictionary *sg_dict; - -// -void -ASDCP::default_md_object_init() -{ - if ( ! sg_DefaultMDTypesInit ) - { - Kumu::AutoMutex BlockLock(sg_DefaultMDInitLock); - - if ( ! sg_DefaultMDTypesInit ) - { - sg_dict = &DefaultSMPTEDict(); - g_OPAtomHeader = new ASDCP::MXF::OPAtomHeader(sg_dict); - g_OPAtomIndexFooter = new ASDCP::MXF::OPAtomIndexFooter(sg_dict); - sg_DefaultMDTypesInit = true; - } - } -} - - -// -ASDCP::h__Reader::h__Reader(const Dictionary& d) : - m_Dict(&d), m_HeaderPart(m_Dict), m_BodyPart(m_Dict), m_FooterPart(m_Dict), m_EssenceStart(0) -{ - default_md_object_init(); -} - -ASDCP::h__Reader::~h__Reader() -{ - Close(); -} - -void -ASDCP::h__Reader::Close() -{ - m_File.Close(); -} - -//------------------------------------------------------------------------------------------ -// - -// -Result_t -ASDCP::h__Reader::InitInfo() -{ - assert(m_Dict); - InterchangeObject* Object; - - m_Info.LabelSetType = LS_MXF_UNKNOWN; - - if ( m_HeaderPart.OperationalPattern.ExactMatch(MXFInterop_OPAtom_Entry().ul) ) - m_Info.LabelSetType = LS_MXF_INTEROP; - else if ( m_HeaderPart.OperationalPattern.ExactMatch(SMPTE_390_OPAtom_Entry().ul) ) - m_Info.LabelSetType = LS_MXF_SMPTE; - - // Identification - Result_t result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(Identification), &Object); - - if( ASDCP_SUCCESS(result) ) - MD_to_WriterInfo((Identification*)Object, m_Info); - - // SourcePackage - if( ASDCP_SUCCESS(result) ) - result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(SourcePackage), &Object); - - if( ASDCP_SUCCESS(result) ) - { - SourcePackage* SP = (SourcePackage*)Object; - memcpy(m_Info.AssetUUID, SP->PackageUID.Value() + 16, UUIDlen); - } - - // optional CryptographicContext - if( ASDCP_SUCCESS(result) ) - { - Result_t cr_result = m_HeaderPart.GetMDObjectByType(OBJ_TYPE_ARGS(CryptographicContext), &Object); - - if( ASDCP_SUCCESS(cr_result) ) - MD_to_CryptoInfo((CryptographicContext*)Object, m_Info, *m_Dict); - } - - return result; -} - - -// standard method of opening an MXF file for read -Result_t -ASDCP::h__Reader::OpenMXFRead(const char* filename) -{ - m_LastPosition = 0; - Result_t result = m_File.OpenRead(filename); - - if ( ASDCP_SUCCESS(result) ) - result = m_HeaderPart.InitFromFile(m_File); - - if ( ASDCP_SUCCESS(result) ) - { - // if this is a three partition file, go to the body - // partition and read the partition pack - if ( m_HeaderPart.m_RIP.PairArray.size() > 2 ) - { - Array<RIP::Pair>::iterator r_i = m_HeaderPart.m_RIP.PairArray.begin(); - r_i++; - m_File.Seek((*r_i).ByteOffset); - - result = m_BodyPart.InitFromFile(m_File); - } - - m_EssenceStart = m_File.Tell(); - } - - return result; -} - - -// standard method of populating the in-memory index -Result_t -ASDCP::h__Reader::InitMXFIndex() -{ - if ( ! m_File.IsOpen() ) - return RESULT_INIT; - - Result_t result = m_File.Seek(m_HeaderPart.FooterPartition); - - if ( ASDCP_SUCCESS(result) ) - { - m_FooterPart.m_Lookup = &m_HeaderPart.m_Primer; - result = m_FooterPart.InitFromFile(m_File); - } - - if ( ASDCP_SUCCESS(result) ) - m_File.Seek(m_EssenceStart); - - return result; -} - -// -Result_t -ASDCP::KLReader::ReadKLFromFile(Kumu::FileReader& Reader) -{ - ui32_t read_count; - ui32_t header_length = SMPTE_UL_LENGTH + MXF_BER_LENGTH; - Result_t result = Reader.Read(m_KeyBuf, header_length, &read_count); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( read_count != header_length ) - return RESULT_READFAIL; - - const byte_t* ber_start = m_KeyBuf + SMPTE_UL_LENGTH; - - if ( ( *ber_start & 0x80 ) == 0 ) - { - DefaultLogSink().Error("BER encoding error.\n"); - return RESULT_FORMAT; - } - - ui8_t ber_size = ( *ber_start & 0x0f ) + 1; - - if ( ber_size > 9 ) - { - DefaultLogSink().Error("BER size encoding error.\n"); - return RESULT_FORMAT; - } - - if ( ber_size < MXF_BER_LENGTH ) - { - DefaultLogSink().Error("BER size %d shorter than AS-DCP minimum %d.\n", - ber_size, MXF_BER_LENGTH); - return RESULT_FORMAT; - } - - if ( ber_size > MXF_BER_LENGTH ) - { - ui32_t diff = ber_size - MXF_BER_LENGTH; - assert((SMPTE_UL_LENGTH + MXF_BER_LENGTH + diff) <= (SMPTE_UL_LENGTH * 2)); - result = Reader.Read(m_KeyBuf + SMPTE_UL_LENGTH + MXF_BER_LENGTH, diff, &read_count); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( read_count != diff ) - return RESULT_READFAIL; - - header_length += diff; - } - - return InitFromBuffer(m_KeyBuf, header_length); -} - -// standard method of reading a plaintext or encrypted frame -Result_t -ASDCP::h__Reader::ReadEKLVFrame(ui32_t FrameNum, ASDCP::FrameBuffer& FrameBuf, - const byte_t* EssenceUL, AESDecContext* Ctx, HMACContext* HMAC) -{ - // look up frame index node - IndexTableSegment::IndexEntry TmpEntry; - - if ( ASDCP_FAILURE(m_FooterPart.Lookup(FrameNum, TmpEntry)) ) - { - DefaultLogSink().Error("Frame value out of range: %u\n", FrameNum); - return RESULT_RANGE; - } - - // get frame position and go read the frame's key and length - Kumu::fpos_t FilePosition = m_EssenceStart + TmpEntry.StreamOffset; - Result_t result = RESULT_OK; - - if ( FilePosition != m_LastPosition ) - { - m_LastPosition = FilePosition; - result = m_File.Seek(FilePosition); - } - - if( ASDCP_SUCCESS(result) ) - result = ReadEKLVPacket(FrameNum, FrameNum + 1, FrameBuf, EssenceUL, Ctx, HMAC); - - return result; -} - - -Result_t -ASDCP::h__Reader::ReadEKLVPacket(ui32_t FrameNum, ui32_t SequenceNum, ASDCP::FrameBuffer& FrameBuf, - const byte_t* EssenceUL, AESDecContext* Ctx, HMACContext* HMAC) -{ - KLReader Reader; - Result_t result = Reader.ReadKLFromFile(m_File); - - if ( ASDCP_FAILURE(result) ) - return result; - - UL Key(Reader.Key()); - ui64_t PacketLength = Reader.Length(); - m_LastPosition = m_LastPosition + Reader.KLLength() + PacketLength; - assert(m_Dict); - - if ( Key.MatchIgnoreStream(m_Dict->ul(MDD_CryptEssence)) ) // ignore the stream numbers - { - if ( ! m_Info.EncryptedEssence ) - { - DefaultLogSink().Error("EKLV packet found, no Cryptographic Context in header.\n"); - return RESULT_FORMAT; - } - - // read encrypted triplet value into internal buffer - assert(PacketLength <= 0xFFFFFFFFL); - m_CtFrameBuf.Capacity((ui32_t) PacketLength); - ui32_t read_count; - result = m_File.Read(m_CtFrameBuf.Data(), (ui32_t) PacketLength, - &read_count); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( read_count != PacketLength ) - { - DefaultLogSink().Error("read length is smaller than EKLV packet length.\n"); - return RESULT_FORMAT; - } - - m_CtFrameBuf.Size((ui32_t) PacketLength); - - // should be const but mxflib::ReadBER is not - byte_t* ess_p = m_CtFrameBuf.Data(); - - // read context ID length - if ( ! Kumu::read_test_BER(&ess_p, UUIDlen) ) - return RESULT_FORMAT; - - // test the context ID - if ( memcmp(ess_p, m_Info.ContextID, UUIDlen) != 0 ) - { - DefaultLogSink().Error("Packet's Cryptographic Context ID does not match the header.\n"); - return RESULT_FORMAT; - } - ess_p += UUIDlen; - - // read PlaintextOffset length - if ( ! Kumu::read_test_BER(&ess_p, sizeof(ui64_t)) ) - return RESULT_FORMAT; - - ui32_t PlaintextOffset = (ui32_t)KM_i64_BE(Kumu::cp2i<ui64_t>(ess_p)); - ess_p += sizeof(ui64_t); - - // read essence UL length - if ( ! Kumu::read_test_BER(&ess_p, SMPTE_UL_LENGTH) ) - return RESULT_FORMAT; - - // test essence UL - if ( ! UL(ess_p).MatchIgnoreStream(EssenceUL) ) // ignore the stream number - { - char strbuf[IntBufferLen]; - const MDDEntry* Entry = m_Dict->FindUL(Key.Value()); - if ( Entry == 0 ) - DefaultLogSink().Warn("Unexpected Encrypted Essence UL found: %s.\n", Key.EncodeString(strbuf, IntBufferLen)); - else - DefaultLogSink().Warn("Unexpected Encrypted Essence UL found: %s.\n", Entry->name); - return RESULT_FORMAT; - } - ess_p += SMPTE_UL_LENGTH; - - // read SourceLength length - if ( ! Kumu::read_test_BER(&ess_p, sizeof(ui64_t)) ) - return RESULT_FORMAT; - - ui32_t SourceLength = (ui32_t)KM_i64_BE(Kumu::cp2i<ui64_t>(ess_p)); - ess_p += sizeof(ui64_t); - assert(SourceLength); - - if ( FrameBuf.Capacity() < SourceLength ) - { - DefaultLogSink().Error("FrameBuf.Capacity: %u SourceLength: %u\n", FrameBuf.Capacity(), SourceLength); - return RESULT_SMALLBUF; - } - - ui32_t esv_length = calc_esv_length(SourceLength, PlaintextOffset); - - // read ESV length - if ( ! Kumu::read_test_BER(&ess_p, esv_length) ) - { - DefaultLogSink().Error("read_test_BER did not return %u\n", esv_length); - return RESULT_FORMAT; - } - - ui32_t tmp_len = esv_length + (m_Info.UsesHMAC ? klv_intpack_size : 0); - - if ( PacketLength < tmp_len ) - { - DefaultLogSink().Error("Frame length is larger than EKLV packet length.\n"); - return RESULT_FORMAT; - } - - if ( Ctx ) - { - // wrap the pointer and length as a FrameBuffer for use by - // DecryptFrameBuffer() and TestValues() - FrameBuffer TmpWrapper; - TmpWrapper.SetData(ess_p, tmp_len); - TmpWrapper.Size(tmp_len); - TmpWrapper.SourceLength(SourceLength); - TmpWrapper.PlaintextOffset(PlaintextOffset); - - result = DecryptFrameBuffer(TmpWrapper, FrameBuf, Ctx); - FrameBuf.FrameNumber(FrameNum); - - // detect and test integrity pack - if ( ASDCP_SUCCESS(result) && m_Info.UsesHMAC && HMAC ) - { - IntegrityPack IntPack; - result = IntPack.TestValues(TmpWrapper, m_Info.AssetUUID, SequenceNum, HMAC); - } - } - else // return ciphertext to caller - { - if ( FrameBuf.Capacity() < tmp_len ) - { - char intbuf[IntBufferLen]; - DefaultLogSink().Error("FrameBuf.Capacity: %u FrameLength: %s\n", - FrameBuf.Capacity(), ui64sz(PacketLength, intbuf)); - return RESULT_SMALLBUF; - } - - memcpy(FrameBuf.Data(), ess_p, tmp_len); - FrameBuf.Size(tmp_len); - FrameBuf.FrameNumber(FrameNum); - FrameBuf.SourceLength(SourceLength); - FrameBuf.PlaintextOffset(PlaintextOffset); - } - } - else if ( Key.MatchIgnoreStream(EssenceUL) ) // ignore the stream number - { // read plaintext frame - if ( FrameBuf.Capacity() < PacketLength ) - { - char intbuf[IntBufferLen]; - DefaultLogSink().Error("FrameBuf.Capacity: %u FrameLength: %s\n", - FrameBuf.Capacity(), ui64sz(PacketLength, intbuf)); - return RESULT_SMALLBUF; - } - - // read the data into the supplied buffer - ui32_t read_count; - assert(PacketLength <= 0xFFFFFFFFL); - result = m_File.Read(FrameBuf.Data(), (ui32_t) PacketLength, &read_count); - - if ( ASDCP_FAILURE(result) ) - return result; - - if ( read_count != PacketLength ) - { - char intbuf1[IntBufferLen]; - char intbuf2[IntBufferLen]; - DefaultLogSink().Error("read_count: %s != FrameLength: %s\n", - ui64sz(read_count, intbuf1), - ui64sz(PacketLength, intbuf2) ); - - return RESULT_READFAIL; - } - - FrameBuf.FrameNumber(FrameNum); - FrameBuf.Size(read_count); - } - else - { - char strbuf[IntBufferLen]; - const MDDEntry* Entry = m_Dict->FindUL(Key.Value()); - if ( Entry == 0 ) - DefaultLogSink().Warn("Unexpected Essence UL found: %s.\n", Key.EncodeString(strbuf, IntBufferLen)); - else - DefaultLogSink().Warn("Unexpected Essence UL found: %s.\n", Entry->name); - return RESULT_FORMAT; - } - - return result; -} - - -// -// end h__Reader.cpp -// diff --git a/asdcplib/src/h__Writer.cpp b/asdcplib/src/h__Writer.cpp deleted file mode 100755 index b24fa9c..0000000 --- a/asdcplib/src/h__Writer.cpp +++ /dev/null @@ -1,711 +0,0 @@ -/* -Copyright (c) 2004-2012, John Hurst -All rights reserved. - -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. -*/ -/*! \file h__Writer.cpp - \version $Id: h__Writer.cpp,v 1.51 2012/02/07 18:54:25 jhurst Exp $ - \brief MXF file writer base class -*/ - -#include "AS_DCP_internal.h" -#include "KLV.h" -#include <iostream> - -using std::cout; -using namespace ASDCP; -using namespace ASDCP::MXF; - -// a magic number identifying asdcplib -#ifndef ASDCP_BUILD_NUMBER -#define ASDCP_BUILD_NUMBER 0x6A68 -#endif - - -static std::vector<int> -version_split(const char* str) -{ - std::vector<int> result; - - const char* pstr = str; - const char* r = strchr(pstr, '.'); - - while ( r != 0 ) - { - assert(r >= pstr); - if ( r > pstr ) - result.push_back(atoi(pstr)); - - pstr = r + 1; - r = strchr(pstr, '.'); - } - - if( strlen(pstr) > 0 ) - result.push_back(atoi(pstr)); - - assert(result.size() == 3); - return result; -} - - -// -ASDCP::h__Writer::h__Writer(const Dictionary& d) : - m_Dict(&d), m_HeaderSize(0), m_HeaderPart(m_Dict), - m_BodyPart(m_Dict), m_FooterPart(m_Dict), m_EssenceStart(0), - m_EssenceDescriptor(0), m_FramesWritten(0), m_StreamOffset(0) -{ - default_md_object_init(); -} - -ASDCP::h__Writer::~h__Writer() -{ -} - -// -// add DMS CryptographicFramework entry to source package -void -AddDMScrypt(Partition& HeaderPart, SourcePackage& Package, - WriterInfo& Descr, const UL& WrappingUL, const Dictionary*& Dict) -{ - assert(Dict); - // Essence Track - StaticTrack* NewTrack = new StaticTrack(Dict); - HeaderPart.AddChildObject(NewTrack); - Package.Tracks.push_back(NewTrack->InstanceUID); - NewTrack->TrackName = "Descriptive Track"; - NewTrack->TrackID = 3; - - Sequence* Seq = new Sequence(Dict); - HeaderPart.AddChildObject(Seq); - NewTrack->Sequence = Seq->InstanceUID; - Seq->DataDefinition = UL(Dict->ul(MDD_DescriptiveMetaDataDef)); - - DMSegment* Segment = new DMSegment(Dict); - HeaderPart.AddChildObject(Segment); - Seq->StructuralComponents.push_back(Segment->InstanceUID); - Segment->EventComment = "AS-DCP KLV Encryption"; - - CryptographicFramework* CFW = new CryptographicFramework(Dict); - HeaderPart.AddChildObject(CFW); - Segment->DMFramework = CFW->InstanceUID; - - CryptographicContext* Context = new CryptographicContext(Dict); - HeaderPart.AddChildObject(Context); - CFW->ContextSR = Context->InstanceUID; - - Context->ContextID.Set(Descr.ContextID); - Context->SourceEssenceContainer = WrappingUL; // ?????? - Context->CipherAlgorithm.Set(Dict->ul(MDD_CipherAlgorithm_AES)); - Context->MICAlgorithm.Set( Descr.UsesHMAC ? Dict->ul(MDD_MICAlgorithm_HMAC_SHA1) : Dict->ul(MDD_MICAlgorithm_NONE) ); - Context->CryptographicKeyID.Set(Descr.CryptographicKeyID); -} - -// -void -ASDCP::h__Writer::InitHeader() -{ - assert(m_Dict); - assert(m_EssenceDescriptor); - - m_HeaderPart.m_Primer.ClearTagList(); - m_HeaderPart.m_Preface = new Preface(m_Dict); - m_HeaderPart.AddChildObject(m_HeaderPart.m_Preface); - - // Set the Operational Pattern label -- we're just starting and have no RIP or index, - // so we tell the world by using OP1a - m_HeaderPart.m_Preface->OperationalPattern = UL(m_Dict->ul(MDD_OP1a)); - m_HeaderPart.OperationalPattern = m_HeaderPart.m_Preface->OperationalPattern; - - // First RIP Entry - if ( m_Info.LabelSetType == LS_MXF_SMPTE ) - m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(0, 0)); // 3-part, no essence in header - else - m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(1, 0)); // 2-part, essence in header - - // - // Identification - // - Identification* Ident = new Identification(m_Dict); - m_HeaderPart.AddChildObject(Ident); - m_HeaderPart.m_Preface->Identifications.push_back(Ident->InstanceUID); - - Kumu::GenRandomValue(Ident->ThisGenerationUID); - Ident->CompanyName = m_Info.CompanyName.c_str(); - Ident->ProductName = m_Info.ProductName.c_str(); - Ident->VersionString = m_Info.ProductVersion.c_str(); - Ident->ProductUID.Set(m_Info.ProductUUID); - Ident->Platform = ASDCP_PLATFORM; - - std::vector<int> version = version_split(Version()); - - Ident->ToolkitVersion.Major = version[0]; - Ident->ToolkitVersion.Minor = version[1]; - Ident->ToolkitVersion.Patch = version[2]; - Ident->ToolkitVersion.Build = ASDCP_BUILD_NUMBER; - Ident->ToolkitVersion.Release = VersionType::RL_RELEASE; -} - -// -template <class ClipT> -struct TrackSet -{ - MXF::Track* Track; - MXF::Sequence* Sequence; - ClipT* Clip; - - TrackSet() : Track(0), Sequence(0), Clip(0) {} -}; - -// -template <class PackageT, class ClipT> -TrackSet<ClipT> -CreateTrackAndSequence(OPAtomHeader& Header, PackageT& Package, const std::string TrackName, - const MXF::Rational& EditRate, const UL& Definition, ui32_t TrackID, const Dictionary*& Dict) -{ - TrackSet<ClipT> NewTrack; - - NewTrack.Track = new Track(Dict); - Header.AddChildObject(NewTrack.Track); - NewTrack.Track->EditRate = EditRate; - Package.Tracks.push_back(NewTrack.Track->InstanceUID); - NewTrack.Track->TrackID = TrackID; - NewTrack.Track->TrackName = TrackName.c_str(); - - NewTrack.Sequence = new Sequence(Dict); - Header.AddChildObject(NewTrack.Sequence); - NewTrack.Track->Sequence = NewTrack.Sequence->InstanceUID; - NewTrack.Sequence->DataDefinition = Definition; - - return NewTrack; -} - -// -template <class PackageT> -TrackSet<TimecodeComponent> -CreateTimecodeTrack(OPAtomHeader& Header, PackageT& Package, - const MXF::Rational& EditRate, ui32_t TCFrameRate, ui64_t TCStart, const Dictionary*& Dict) -{ - assert(Dict); - UL TCUL(Dict->ul(MDD_TimecodeDataDef)); - - TrackSet<TimecodeComponent> NewTrack = CreateTrackAndSequence<PackageT, TimecodeComponent>(Header, Package, "Timecode Track", EditRate, TCUL, 1, Dict); - - NewTrack.Clip = new TimecodeComponent(Dict); - Header.AddChildObject(NewTrack.Clip); - NewTrack.Sequence->StructuralComponents.push_back(NewTrack.Clip->InstanceUID); - NewTrack.Clip->RoundedTimecodeBase = TCFrameRate; - NewTrack.Clip->StartTimecode = TCStart; - NewTrack.Clip->DataDefinition = TCUL; - - return NewTrack; -} - - -// -void -ASDCP::h__Writer::AddSourceClip(const MXF::Rational& EditRate, ui32_t TCFrameRate, - const std::string& TrackName, const UL& EssenceUL, - const UL& DataDefinition, const std::string& PackageLabel) -{ - // - ContentStorage* Storage = new ContentStorage(m_Dict); - m_HeaderPart.AddChildObject(Storage); - m_HeaderPart.m_Preface->ContentStorage = Storage->InstanceUID; - - EssenceContainerData* ECD = new EssenceContainerData(m_Dict); - m_HeaderPart.AddChildObject(ECD); - Storage->EssenceContainerData.push_back(ECD->InstanceUID); - ECD->IndexSID = 129; - ECD->BodySID = 1; - - UUID assetUUID(m_Info.AssetUUID); - UMID SourcePackageUMID, MaterialPackageUMID; - SourcePackageUMID.MakeUMID(0x0f, assetUUID); - MaterialPackageUMID.MakeUMID(0x0f); // unidentified essence - - // - // Material Package - // - m_MaterialPackage = new MaterialPackage(m_Dict); - m_MaterialPackage->Name = "AS-DCP Material Package"; - m_MaterialPackage->PackageUID = MaterialPackageUMID; - m_HeaderPart.AddChildObject(m_MaterialPackage); - Storage->Packages.push_back(m_MaterialPackage->InstanceUID); - - TrackSet<TimecodeComponent> MPTCTrack = - CreateTimecodeTrack<MaterialPackage>(m_HeaderPart, *m_MaterialPackage, - EditRate, TCFrameRate, 0, m_Dict); - m_DurationUpdateList.push_back(&(MPTCTrack.Sequence->Duration)); - m_DurationUpdateList.push_back(&(MPTCTrack.Clip->Duration)); - - TrackSet<SourceClip> MPTrack = - CreateTrackAndSequence<MaterialPackage, SourceClip>(m_HeaderPart, *m_MaterialPackage, - TrackName, EditRate, DataDefinition, - 2, m_Dict); - m_DurationUpdateList.push_back(&(MPTrack.Sequence->Duration)); - - MPTrack.Clip = new SourceClip(m_Dict); - m_HeaderPart.AddChildObject(MPTrack.Clip); - MPTrack.Sequence->StructuralComponents.push_back(MPTrack.Clip->InstanceUID); - MPTrack.Clip->DataDefinition = DataDefinition; - MPTrack.Clip->SourcePackageID = SourcePackageUMID; - MPTrack.Clip->SourceTrackID = 2; - m_DurationUpdateList.push_back(&(MPTrack.Clip->Duration)); - - - // - // File (Source) Package - // - m_FilePackage = new SourcePackage(m_Dict); - m_FilePackage->Name = PackageLabel.c_str(); - m_FilePackage->PackageUID = SourcePackageUMID; - ECD->LinkedPackageUID = SourcePackageUMID; - - m_HeaderPart.AddChildObject(m_FilePackage); - Storage->Packages.push_back(m_FilePackage->InstanceUID); - - TrackSet<TimecodeComponent> FPTCTrack = - CreateTimecodeTrack<SourcePackage>(m_HeaderPart, *m_FilePackage, - EditRate, TCFrameRate, - ui64_C(3600) * TCFrameRate, m_Dict); - m_DurationUpdateList.push_back(&(FPTCTrack.Sequence->Duration)); - m_DurationUpdateList.push_back(&(FPTCTrack.Clip->Duration)); - TrackSet<SourceClip> FPTrack = - CreateTrackAndSequence<SourcePackage, SourceClip>(m_HeaderPart, *m_FilePackage, - TrackName, EditRate, DataDefinition, - 2, m_Dict); - m_DurationUpdateList.push_back(&(FPTrack.Sequence->Duration)); - - // Consult ST 379:2004 Sec. 6.3, "Element to track relationship" to see where "12" comes from. - FPTrack.Track->TrackNumber = KM_i32_BE(Kumu::cp2i<ui32_t>((EssenceUL.Value() + 12))); - - FPTrack.Clip = new SourceClip(m_Dict); - m_HeaderPart.AddChildObject(FPTrack.Clip); - FPTrack.Sequence->StructuralComponents.push_back(FPTrack.Clip->InstanceUID); - FPTrack.Clip->DataDefinition = DataDefinition; - - // for now we do not allow setting this value, so all files will be 'original' - FPTrack.Clip->SourceTrackID = 0; - FPTrack.Clip->SourcePackageID = NilUMID; - m_DurationUpdateList.push_back(&(FPTrack.Clip->Duration)); - - m_EssenceDescriptor->LinkedTrackID = FPTrack.Track->TrackID; -} - -// -void -ASDCP::h__Writer::AddDMSegment(const MXF::Rational& EditRate, ui32_t TCFrameRate, - const std::string& TrackName, const UL& DataDefinition, - const std::string& PackageLabel) -{ - // - ContentStorage* Storage = new ContentStorage(m_Dict); - m_HeaderPart.AddChildObject(Storage); - m_HeaderPart.m_Preface->ContentStorage = Storage->InstanceUID; - - EssenceContainerData* ECD = new EssenceContainerData(m_Dict); - m_HeaderPart.AddChildObject(ECD); - Storage->EssenceContainerData.push_back(ECD->InstanceUID); - ECD->IndexSID = 129; - ECD->BodySID = 1; - - UUID assetUUID(m_Info.AssetUUID); - UMID SourcePackageUMID, MaterialPackageUMID; - SourcePackageUMID.MakeUMID(0x0f, assetUUID); - MaterialPackageUMID.MakeUMID(0x0f); // unidentified essence - - // - // Material Package - // - m_MaterialPackage = new MaterialPackage(m_Dict); - m_MaterialPackage->Name = "AS-DCP Material Package"; - m_MaterialPackage->PackageUID = MaterialPackageUMID; - m_HeaderPart.AddChildObject(m_MaterialPackage); - Storage->Packages.push_back(m_MaterialPackage->InstanceUID); - - TrackSet<TimecodeComponent> MPTCTrack = - CreateTimecodeTrack<MaterialPackage>(m_HeaderPart, *m_MaterialPackage, - EditRate, TCFrameRate, 0, m_Dict); - m_DurationUpdateList.push_back(&(MPTCTrack.Sequence->Duration)); - m_DurationUpdateList.push_back(&(MPTCTrack.Clip->Duration)); - - TrackSet<DMSegment> MPTrack = - CreateTrackAndSequence<MaterialPackage, DMSegment>(m_HeaderPart, *m_MaterialPackage, - TrackName, EditRate, DataDefinition, - 2, m_Dict); - m_DurationUpdateList.push_back(&(MPTrack.Sequence->Duration)); - - MPTrack.Clip = new DMSegment(m_Dict); - m_HeaderPart.AddChildObject(MPTrack.Clip); - MPTrack.Sequence->StructuralComponents.push_back(MPTrack.Clip->InstanceUID); - MPTrack.Clip->DataDefinition = DataDefinition; - // MPTrack.Clip->SourcePackageID = SourcePackageUMID; - // MPTrack.Clip->SourceTrackID = 2; - m_DurationUpdateList.push_back(&(MPTrack.Clip->Duration)); - - - // - // File (Source) Package - // - m_FilePackage = new SourcePackage(m_Dict); - m_FilePackage->Name = PackageLabel.c_str(); - m_FilePackage->PackageUID = SourcePackageUMID; - ECD->LinkedPackageUID = SourcePackageUMID; - - m_HeaderPart.AddChildObject(m_FilePackage); - Storage->Packages.push_back(m_FilePackage->InstanceUID); - - TrackSet<TimecodeComponent> FPTCTrack = - CreateTimecodeTrack<SourcePackage>(m_HeaderPart, *m_FilePackage, - EditRate, TCFrameRate, - ui64_C(3600) * TCFrameRate, m_Dict); - m_DurationUpdateList.push_back(&(FPTCTrack.Sequence->Duration)); - m_DurationUpdateList.push_back(&(FPTCTrack.Clip->Duration)); - - TrackSet<DMSegment> FPTrack = - CreateTrackAndSequence<SourcePackage, DMSegment>(m_HeaderPart, *m_FilePackage, - TrackName, EditRate, DataDefinition, - 2, m_Dict); - m_DurationUpdateList.push_back(&(FPTrack.Sequence->Duration)); - - FPTrack.Clip = new DMSegment(m_Dict); - m_HeaderPart.AddChildObject(FPTrack.Clip); - FPTrack.Sequence->StructuralComponents.push_back(FPTrack.Clip->InstanceUID); - FPTrack.Clip->DataDefinition = DataDefinition; - FPTrack.Clip->EventComment = "D-Cinema Timed Text"; - - m_DurationUpdateList.push_back(&(FPTrack.Clip->Duration)); - m_EssenceDescriptor->LinkedTrackID = FPTrack.Track->TrackID; -} - -// -void -ASDCP::h__Writer::AddEssenceDescriptor(const UL& WrappingUL) -{ - // - // Essence Descriptor - // - m_EssenceDescriptor->EssenceContainer = WrappingUL; - m_HeaderPart.m_Preface->PrimaryPackage = m_FilePackage->InstanceUID; - - // - // Essence Descriptors - // - assert(m_Dict); - UL GenericContainerUL(m_Dict->ul(MDD_GCMulti)); - m_HeaderPart.EssenceContainers.push_back(GenericContainerUL); - - if ( m_Info.EncryptedEssence ) - { - UL CryptEssenceUL(m_Dict->ul(MDD_EncryptedContainerLabel)); - m_HeaderPart.EssenceContainers.push_back(CryptEssenceUL); - m_HeaderPart.m_Preface->DMSchemes.push_back(UL(m_Dict->ul(MDD_CryptographicFrameworkLabel))); - AddDMScrypt(m_HeaderPart, *m_FilePackage, m_Info, WrappingUL, m_Dict); - } - else - { - m_HeaderPart.EssenceContainers.push_back(WrappingUL); - } - - m_HeaderPart.m_Preface->EssenceContainers = m_HeaderPart.EssenceContainers; - m_HeaderPart.AddChildObject(m_EssenceDescriptor); - - std::list<InterchangeObject*>::iterator sdli = m_EssenceSubDescriptorList.begin(); - for ( ; sdli != m_EssenceSubDescriptorList.end(); sdli++ ) - m_HeaderPart.AddChildObject(*sdli); - - m_FilePackage->Descriptor = m_EssenceDescriptor->InstanceUID; -} - -// -Result_t -ASDCP::h__Writer::CreateBodyPart(const MXF::Rational& EditRate, ui32_t BytesPerEditUnit) -{ - assert(m_Dict); - Result_t result = RESULT_OK; - - // create a body partition if we're writing proper 429-3/OP-Atom - if ( m_Info.LabelSetType == LS_MXF_SMPTE ) - { - // Body Partition - m_BodyPart.EssenceContainers = m_HeaderPart.EssenceContainers; - m_BodyPart.ThisPartition = m_File.Tell(); - m_BodyPart.BodySID = 1; - UL OPAtomUL(m_Dict->ul(MDD_OPAtom)); - m_BodyPart.OperationalPattern = OPAtomUL; - m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(1, m_BodyPart.ThisPartition)); // Second RIP Entry - - UL BodyUL(m_Dict->ul(MDD_ClosedCompleteBodyPartition)); - result = m_BodyPart.WriteToFile(m_File, BodyUL); - } - else - { - m_HeaderPart.BodySID = 1; - } - - if ( ASDCP_SUCCESS(result) ) - { - // Index setup - Kumu::fpos_t ECoffset = m_File.Tell(); - m_FooterPart.IndexSID = 129; - - if ( BytesPerEditUnit == 0 ) - m_FooterPart.SetIndexParamsVBR(&m_HeaderPart.m_Primer, EditRate, ECoffset); - else - m_FooterPart.SetIndexParamsCBR(&m_HeaderPart.m_Primer, BytesPerEditUnit, EditRate); - } - - return result; -} - -// -Result_t -ASDCP::h__Writer::WriteMXFHeader(const std::string& PackageLabel, const UL& WrappingUL, - const std::string& TrackName, const UL& EssenceUL, const UL& DataDefinition, - const MXF::Rational& EditRate, ui32_t TCFrameRate, ui32_t BytesPerEditUnit) -{ - InitHeader(); - AddSourceClip(EditRate, TCFrameRate, TrackName, EssenceUL, DataDefinition, PackageLabel); - AddEssenceDescriptor(WrappingUL); - - Result_t result = m_HeaderPart.WriteToFile(m_File, m_HeaderSize); - - if ( KM_SUCCESS(result) ) - result = CreateBodyPart(EditRate, BytesPerEditUnit); - - return result; -} - - -// standard method of writing a plaintext or encrypted frame -Result_t -ASDCP::h__Writer::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf, const byte_t* EssenceUL, - AESEncContext* Ctx, HMACContext* HMAC, std::string* hash) -{ - Result_t result = RESULT_OK; - IntegrityPack IntPack; - - m_File.StartHashing(); - - byte_t overhead[128]; - Kumu::MemIOWriter Overhead(overhead, 128); - assert(m_Dict); - - if ( FrameBuf.Size() == 0 ) - { - DefaultLogSink().Error("Cannot write empty frame buffer\n"); - return RESULT_EMPTY_FB; - } - - if ( m_Info.EncryptedEssence ) - { - if ( ! Ctx ) - return RESULT_CRYPT_CTX; - - if ( m_Info.UsesHMAC && ! HMAC ) - return RESULT_HMAC_CTX; - - if ( FrameBuf.PlaintextOffset() > FrameBuf.Size() ) - return RESULT_LARGE_PTO; - - // encrypt the essence data (create encrypted source value) - result = EncryptFrameBuffer(FrameBuf, m_CtFrameBuf, Ctx); - - // create HMAC - if ( ASDCP_SUCCESS(result) && m_Info.UsesHMAC ) - result = IntPack.CalcValues(m_CtFrameBuf, m_Info.AssetUUID, m_FramesWritten + 1, HMAC); - - if ( ASDCP_SUCCESS(result) ) - { // write UL - Overhead.WriteRaw(m_Dict->ul(MDD_CryptEssence), SMPTE_UL_LENGTH); - - // construct encrypted triplet header - ui32_t ETLength = klv_cryptinfo_size + m_CtFrameBuf.Size(); - ui32_t BER_length = MXF_BER_LENGTH; - - if ( m_Info.UsesHMAC ) - ETLength += klv_intpack_size; - else - ETLength += (MXF_BER_LENGTH * 3); // for empty intpack - - if ( ETLength > 0x00ffffff ) // Need BER integer longer than MXF_BER_LENGTH bytes - { - BER_length = Kumu::get_BER_length_for_value(ETLength); - - // the packet is longer by the difference in expected vs. actual BER length - ETLength += BER_length - MXF_BER_LENGTH; - - if ( BER_length == 0 ) - result = RESULT_KLV_CODING; - } - - if ( ASDCP_SUCCESS(result) ) - { - if ( ! ( Overhead.WriteBER(ETLength, BER_length) // write encrypted triplet length - && Overhead.WriteBER(UUIDlen, MXF_BER_LENGTH) // write ContextID length - && Overhead.WriteRaw(m_Info.ContextID, UUIDlen) // write ContextID - && Overhead.WriteBER(sizeof(ui64_t), MXF_BER_LENGTH) // write PlaintextOffset length - && Overhead.WriteUi64BE(FrameBuf.PlaintextOffset()) // write PlaintextOffset - && Overhead.WriteBER(SMPTE_UL_LENGTH, MXF_BER_LENGTH) // write essence UL length - && Overhead.WriteRaw((byte_t*)EssenceUL, SMPTE_UL_LENGTH) // write the essence UL - && Overhead.WriteBER(sizeof(ui64_t), MXF_BER_LENGTH) // write SourceLength length - && Overhead.WriteUi64BE(FrameBuf.Size()) // write SourceLength - && Overhead.WriteBER(m_CtFrameBuf.Size(), BER_length) ) ) // write ESV length - { - result = RESULT_KLV_CODING; - } - } - - if ( ASDCP_SUCCESS(result) ) - result = m_File.Writev(Overhead.Data(), Overhead.Length()); - } - - if ( ASDCP_SUCCESS(result) ) - { - m_StreamOffset += Overhead.Length(); - // write encrypted source value - result = m_File.Writev((byte_t*)m_CtFrameBuf.RoData(), m_CtFrameBuf.Size()); - } - - if ( ASDCP_SUCCESS(result) ) - { - m_StreamOffset += m_CtFrameBuf.Size(); - - byte_t hmoverhead[512]; - Kumu::MemIOWriter HMACOverhead(hmoverhead, 512); - - // write the HMAC - if ( m_Info.UsesHMAC ) - { - HMACOverhead.WriteRaw(IntPack.Data, klv_intpack_size); - } - else - { // we still need the var-pack length values if the intpack is empty - for ( ui32_t i = 0; i < 3 ; i++ ) - HMACOverhead.WriteBER(0, MXF_BER_LENGTH); - } - - // write HMAC - result = m_File.Writev(HMACOverhead.Data(), HMACOverhead.Length()); - m_StreamOffset += HMACOverhead.Length(); - } - } - else - { - ui32_t BER_length = MXF_BER_LENGTH; - - if ( FrameBuf.Size() > 0x00ffffff ) // Need BER integer longer than MXF_BER_LENGTH bytes - { - BER_length = Kumu::get_BER_length_for_value(FrameBuf.Size()); - - if ( BER_length == 0 ) - result = RESULT_KLV_CODING; - } - - Overhead.WriteRaw((byte_t*)EssenceUL, SMPTE_UL_LENGTH); - Overhead.WriteBER(FrameBuf.Size(), BER_length); - - if ( ASDCP_SUCCESS(result) ) - result = m_File.Writev(Overhead.Data(), Overhead.Length()); - - if ( ASDCP_SUCCESS(result) ) - result = m_File.Writev((byte_t*)FrameBuf.RoData(), FrameBuf.Size()); - - if ( ASDCP_SUCCESS(result) ) - m_StreamOffset += Overhead.Length() + FrameBuf.Size(); - } - - if ( ASDCP_SUCCESS(result) ) - result = m_File.Writev(); - - if (hash) { - *hash = m_File.StopHashing(); - } - - return result; -} - -Result_t -ASDCP::h__Writer::FakeWriteEKLVPacket(int size) -{ - Result_t result = RESULT_OK; - - m_StreamOffset += size; - m_File.Seek(size, Kumu::SP_POS); - - return result; -} - - -// standard method of writing the header and footer of a completed MXF file -// -Result_t -ASDCP::h__Writer::WriteMXFFooter() -{ - // Set top-level file package correctly for OP-Atom - - // m_MPTCSequence->Duration = m_MPTimecode->Duration = m_MPClSequence->Duration = m_MPClip->Duration = - // m_FPTCSequence->Duration = m_FPTimecode->Duration = m_FPClSequence->Duration = m_FPClip->Duration = - - DurationElementList_t::iterator dli = m_DurationUpdateList.begin(); - - for (; dli != m_DurationUpdateList.end(); dli++ ) - **dli = m_FramesWritten; - - m_EssenceDescriptor->ContainerDuration = m_FramesWritten; - m_FooterPart.PreviousPartition = m_HeaderPart.m_RIP.PairArray.back().ByteOffset; - - Kumu::fpos_t here = m_File.Tell(); - m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(0, here)); // Last RIP Entry - m_HeaderPart.FooterPartition = here; - - assert(m_Dict); - // re-label the partition - UL OPAtomUL(m_Dict->ul(MDD_OPAtom)); - m_HeaderPart.OperationalPattern = OPAtomUL; - m_HeaderPart.m_Preface->OperationalPattern = m_HeaderPart.OperationalPattern; - - m_FooterPart.OperationalPattern = m_HeaderPart.OperationalPattern; - m_FooterPart.EssenceContainers = m_HeaderPart.EssenceContainers; - m_FooterPart.FooterPartition = here; - m_FooterPart.ThisPartition = here; - - Result_t result = m_FooterPart.WriteToFile(m_File, m_FramesWritten); - - if ( ASDCP_SUCCESS(result) ) - result = m_HeaderPart.m_RIP.WriteToFile(m_File); - - if ( ASDCP_SUCCESS(result) ) - result = m_File.Seek(0); - - if ( ASDCP_SUCCESS(result) ) - result = m_HeaderPart.WriteToFile(m_File, m_HeaderSize); - - m_File.Close(); - return result; -} - -// -// end h__Writer.cpp -// diff --git a/asdcplib/src/j2c-test.cpp b/asdcplib/src/j2c-test.cpp deleted file mode 100755 index 8f02826..0000000 --- a/asdcplib/src/j2c-test.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* -Copyright (c) 2005-2010, John Hurst -All rights reserved. - -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. -*/ -/*! \file j2c-test.cpp - \version $Id: j2c-test.cpp,v 1.6 2010/06/17 20:11:42 jhurst Exp $ - \brief JP2K parser test -*/ - -#include <AS_DCP.h> -#include <KM_fileio.h> -#include <KM_util.h> -#include <JP2K.h> - -using namespace Kumu; -using namespace ASDCP; -using namespace ASDCP::JP2K; - - - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "j2c-test"; // program name for messages - -// Macros used to test command option data state. - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option %c.\n", (c)); \ - return; \ - } -// -void -banner(FILE* stream = stderr) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2005-2010 John Hurst\n\n\ -%s is part of asdcplib.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stderr) -{ - fprintf(stream, "\ -USAGE: %s [-h|-help] [-V]\n\ -\n\ - %s [-r] [-v] <filename> [...]\n\ -\n\ - -V - Show version\n\ - -h - Show help\n\ - -r - Show raw data\n\ - -v - Print extra detail\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME, PROGRAM_NAME); -} - -// -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool version_flag; // true if the version display option was selected - bool verbose_flag; // true if the verbose option was selected - bool detail_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - std::list<std::string> filename_list; - - CommandOptions(int argc, const char** argv) : - error_flag(true), version_flag(false), verbose_flag(false), - detail_flag(false), help_flag(false) - { - for ( int i = 1; i < argc; i++ ) - { - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'V': version_flag = true; break; - case 'h': help_flag = true; break; - case 'r': detail_flag = true; break; - case 'v': verbose_flag = true; break; - - default: - fprintf(stderr, "Unrecognized option: %c\n", argv[i][1]); - return; - } - } - else - { - filename_list.push_back(argv[i]); - } - } - - if ( filename_list.empty() ) - { - fputs("Input j2c filename(s) required.\n", stderr); - return; - } - - error_flag = false; - } -}; - - - - -// -int -main(int argc, const char** argv) -{ - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - ASDCP::JP2K::FrameBuffer FB; - Marker MyMarker; - CodestreamParser Parser; - std::list<std::string>::iterator i; - - Result_t result = FB.Capacity(1024*1024*4); - - for ( i = Options.filename_list.begin(); ASDCP_SUCCESS(result) && i != Options.filename_list.end(); i++ ) - { - result = Parser.OpenReadFrame(i->c_str(), FB); - - if ( ASDCP_SUCCESS(result) ) - { - const byte_t* p = FB.RoData(); - const byte_t* end_p = p + FB.Size(); - - while ( p < end_p && ASDCP_SUCCESS(GetNextMarker(&p, MyMarker)) ) - { - if ( Options.verbose_flag ) - { - MyMarker.Dump(stdout); - - if ( Options.detail_flag ) - hexdump(MyMarker.m_Data - 2, MyMarker.m_DataSize + 2, stdout); - } - - switch ( MyMarker.m_Type ) - { - case MRK_SOD: - p = end_p; - break; - - case MRK_SIZ: - { - Accessor::SIZ SIZ_(MyMarker); - SIZ_.Dump(stdout); - } - break; - - case MRK_COM: - { - Accessor::COM COM_(MyMarker); - COM_.Dump(stdout); - } - break; - } - } - } - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - -// -// end j2c-test.cpp -// diff --git a/asdcplib/src/jp2k-crypt-tst.sh b/asdcplib/src/jp2k-crypt-tst.sh deleted file mode 100755 index 1836fef..0000000 --- a/asdcplib/src/jp2k-crypt-tst.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/sh -# -# $Id: jp2k-crypt-tst.sh,v 1.4 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# crypto JPEG 2000 tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY} \ - -c ${TEST_FILES}/write_crypt_test_jp2k.mxf ${TEST_FILES}/${TEST_FILE_PREFIX} -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -i ${TEST_FILES}/write_crypt_test_jp2k.mxf -if [ $? -ne 0 ]; then - exit 1 -fi - - -(${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY_B} \ - -x ${TEST_FILES}/plaintext ${TEST_FILES}/write_crypt_test_jp2k.mxf; \ - if [ $? -eq 1 ]; then exit 0; fi; exit 1 ) -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -m -k ${CRYPT_KEY} \ - -x ${TEST_FILES}/plaintext/${JP2K_PREFIX} ${TEST_FILES}/write_crypt_test_jp2k.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -for file in `ls ${TEST_FILES}/${TEST_FILE_PREFIX}`; do \ - echo "$file"; \ - cmp ${TEST_FILES}/${TEST_FILE_PREFIX}/$file ${TEST_FILES}/plaintext/$file; \ - if [ $? -ne 0 ]; then \ - exit 1; \ - fi; \ -done diff --git a/asdcplib/src/jp2k-stereo-crypt-tst.sh b/asdcplib/src/jp2k-stereo-crypt-tst.sh deleted file mode 100755 index e8324a0..0000000 --- a/asdcplib/src/jp2k-stereo-crypt-tst.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -# -# $Id: jp2k-stereo-crypt-tst.sh,v 1.4 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# crypto JPEG 2000 stereoscopic tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY} \ - -3 -c ${TEST_FILES}/write_crypt_test_jp2k.mxf \ - ${TEST_FILES}/${TEST_FILE_PREFIX} ${TEST_FILES}/${TEST_FILE_PREFIX} -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -i ${TEST_FILES}/write_crypt_test_jp2k.mxf -if [ $? -ne 0 ]; then - exit 1 -fi - - -(${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY_B} \ - -3 -x ${TEST_FILES}/plaintext ${TEST_FILES}/write_crypt_test_jp2k.mxf; \ - if [ $? -eq 1 ]; then exit 0; fi; exit 1 ) -${BUILD_DIR}/asdcp-test${EXEEXT} -m -k ${CRYPT_KEY} \ - -3 -x ${TEST_FILES}/plaintext/${JP2K_PREFIX} ${TEST_FILES}/write_crypt_test_jp2k.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -for file in `ls ${TEST_FILES}/${TEST_FILE_PREFIX}`; do \ - echo "$file"; \ - cmp ${TEST_FILES}/${TEST_FILE_PREFIX}/$file ${TEST_FILES}/plaintext/$file; \ - if [ $? -ne 0 ]; then \ - exit 1; \ - fi; \ -done diff --git a/asdcplib/src/jp2k-stereo-tst.sh b/asdcplib/src/jp2k-stereo-tst.sh deleted file mode 100755 index eacd090..0000000 --- a/asdcplib/src/jp2k-stereo-tst.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -# -# $Id: jp2k-stereo-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# JPEG 2000 stereoscopic tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -3 -c ${TEST_FILES}/write_test_jp2k.mxf \ - ${TEST_FILES}/${TEST_FILE_PREFIX} ${TEST_FILES}/${TEST_FILE_PREFIX} -if [ $? -ne 0 ]; then - exit 1 -fi - - -${BUILD_DIR}/asdcp-test${EXEEXT} -3 -x ${TEST_FILES}/extract/${JP2K_PREFIX} ${TEST_FILES}/write_test_jp2k.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -for file in `ls ${TEST_FILES}/${TEST_FILE_PREFIX}`; do \ - echo "$file"; \ - cmp ${TEST_FILES}/${TEST_FILE_PREFIX}/$file ${TEST_FILES}/extract/$file; \ - if [ $? -ne 0 ]; then \ - exit 1; \ - fi; \ -done diff --git a/asdcplib/src/jp2k-tst.sh b/asdcplib/src/jp2k-tst.sh deleted file mode 100755 index ee8a18d..0000000 --- a/asdcplib/src/jp2k-tst.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# -# $Id: jp2k-tst.sh,v 1.5 2010/01/05 04:12:15 jhurst Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# JPEG 2000 tests - -mkdir -p ${TEST_FILES}/extract ${TEST_FILES}/plaintext - -${BUILD_DIR}/asdcp-test${EXEEXT} -c ${TEST_FILES}/write_test_jp2k.mxf ${TEST_FILES}/${TEST_FILE_PREFIX} -if [ $? -ne 0 ]; then - exit 1 -fi - - -${BUILD_DIR}/asdcp-test${EXEEXT} -x ${TEST_FILES}/extract/${JP2K_PREFIX} ${TEST_FILES}/write_test_jp2k.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -for file in `ls ${TEST_FILES}/${TEST_FILE_PREFIX}`; do \ - echo "$file"; \ - cmp ${TEST_FILES}/${TEST_FILE_PREFIX}/$file ${TEST_FILES}/extract/$file; \ - if [ $? -ne 0 ]; then \ - exit 1; \ - fi; \ -done - - -#${BUILD_DIR}/j2c-test${EXEEXT} ${TEST_FILES}/${TEST_FILE_PREFIX}/MM_2k_XYZ_000000.j2c -#if [ $? -ne 0 ]; then -# exit 1 -#fi diff --git a/asdcplib/src/klvwalk.cpp b/asdcplib/src/klvwalk.cpp deleted file mode 100755 index 299cb02..0000000 --- a/asdcplib/src/klvwalk.cpp +++ /dev/null @@ -1,287 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file klvwalk.cpp - \version $Id: klvwalk.cpp,v 1.18 2010/11/15 17:04:13 jhurst Exp $ - \brief KLV+MXF test -*/ - -#include "AS_DCP.h" -#include "MXF.h" -#include <KM_log.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <assert.h> -#include <sys/types.h> -#include <sys/stat.h> - -using namespace ASDCP; -using Kumu::DefaultLogSink; - - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "klvwalk"; // program name for messages -typedef std::list<std::string> FileList_t; - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2005-2009 John Hurst\n\ -%s is part of the asdcplib DCP tools package.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-r] [-v] <input-file> [<input-file2> ...]\n\ -\n\ - %s [-h|-help] [-V]\n\ -\n\ - -h | -help - Show help\n\ - -r - When KLV data is an MXF OPAtom file, display OPAtom headers\n\ - -v - Verbose. Prints informative messages to stderr\n\ - -V - Show version information\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME, PROGRAM_NAME); -} - -// -// - class CommandOptions - { - CommandOptions(); - - public: - bool error_flag; // true if the given options are in error or not complete - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - bool verbose_flag; // true if the informative messages option was selected - bool read_mxf_flag; // true if the -r option was selected - FileList_t inFileList; // File to operate on - - CommandOptions(int argc, const char** argv) : - error_flag(true), version_flag(false), help_flag(false), verbose_flag(false), read_mxf_flag(false) - { - for ( int i = 1; i < argc; i++ ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'h': help_flag = true; break; - case 'r': read_mxf_flag = true; break; - case 'V': version_flag = true; break; - case 'v': verbose_flag = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - if ( argv[i][0] != '-' ) - inFileList.push_back(argv[i]); - - else - { - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( inFileList.empty() ) - { - fputs("Input filename(s) required.\n", stderr); - return; - } - - error_flag = false; - } - }; - - -//--------------------------------------------------------------------------------------------------- -// - -int -main(int argc, const char** argv) -{ - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - FileList_t::iterator fi; - Result_t result = RESULT_OK; - - for ( fi = Options.inFileList.begin(); ASDCP_SUCCESS(result) && fi != Options.inFileList.end(); fi++ ) - { - if (Options.verbose_flag) - fprintf(stderr, "Opening file %s\n", ((*fi).c_str())); - - if ( Options.read_mxf_flag ) // dump MXF - { - Kumu::FileReader Reader; - const Dictionary* Dict = &DefaultCompositeDict(); - ASDCP::MXF::OPAtomHeader Header(Dict); - - result = Reader.OpenRead((*fi).c_str()); - - if ( ASDCP_SUCCESS(result) ) - result = Header.InitFromFile(Reader); - - if ( ASDCP_SUCCESS(result) ) - Header.Dump(stdout); - - if ( ASDCP_SUCCESS(result) && Header.m_RIP.PairArray.size() > 2 ) - { - MXF::Array<MXF::RIP::Pair>::const_iterator pi = Header.m_RIP.PairArray.begin(); - - for ( pi++; pi != Header.m_RIP.PairArray.end() && ASDCP_SUCCESS(result); pi++ ) - { - result = Reader.Seek((*pi).ByteOffset); - - if ( ASDCP_SUCCESS(result) ) - { - MXF::Partition TmpPart(Dict); - result = TmpPart.InitFromFile(Reader); - - if ( ASDCP_SUCCESS(result) && TmpPart.BodySID > 0 ) - TmpPart.Dump(stdout); - } - } - } - - if ( ASDCP_SUCCESS(result) ) - { - ASDCP::MXF::OPAtomIndexFooter Index(Dict); - result = Reader.Seek(Header.FooterPartition); - - if ( ASDCP_SUCCESS(result) ) - { - Index.m_Lookup = &Header.m_Primer; - result = Index.InitFromFile(Reader); - } - - if ( ASDCP_SUCCESS(result) ) - Index.Dump(stdout); - } - - if ( ASDCP_SUCCESS(result) ) - Header.m_RIP.Dump(stdout); - } - else // dump klv - { - Kumu::FileReader Reader; - KLVFilePacket KP; - ui64_t pos = 0; - - result = Reader.OpenRead((*fi).c_str()); - - if ( ASDCP_SUCCESS(result) ) - result = KP.InitFromFile(Reader); - - while ( ASDCP_SUCCESS(result) ) - { - fprintf(stdout, "@0x%08qx: ", pos); - KP.Dump(stdout, DefaultCompositeDict(), true); - pos = Reader.Tell(); - result = KP.InitFromFile(Reader); - } - - if( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - } - } - - if ( ASDCP_FAILURE(result) ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end klvwalk.cpp -// diff --git a/asdcplib/src/kmfilegen.cpp b/asdcplib/src/kmfilegen.cpp deleted file mode 100755 index fb4360e..0000000 --- a/asdcplib/src/kmfilegen.cpp +++ /dev/null @@ -1,616 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file kmfilegen.cpp - \version $Id: kmfilegen.cpp,v 1.8 2009/03/04 17:52:45 jhurst Exp $ - \brief large file test program -*/ - - -#include "AS_DCP.h" -#include <iostream> -#include <KM_fileio.h> -#include <KM_prng.h> -#include <openssl/aes.h> -#include <assert.h> - -using namespace Kumu; - -// constants -static const char* PROGRAM_NAME = "kmfilegen"; // program name for messages -const ui32_t RNG_KEY_SIZE = 16; -const ui32_t RNG_KEY_SIZE_BITS = 128; -const ui32_t RNG_BLOCK_SIZE = 16; - -// globals -ui32_t s_Nonce = 0; -FortunaRNG s_RNG; - - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2005-2009 John Hurst\n\ -%s is part of the asdcplib DCP tools package.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, Kumu::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-c <file-size>] [-v] <output-file>\n\ -\n\ - %s [-o <fwd|rev|rand>] [-v] <input-file>\n\ -\n\ - %s [-w <output-file>] [-v] <input-file>\n\ -\n\ - %s [-h|-help] [-V]\n\ -\n\ - -c <file-size> - Create test file containing <file-size> megabytes of data\n\ - -h | -help - Show help\n\ - -o <fwd|rev|rand> - Specify order used when validating a file.\n\ - One of fwd|rev|rand, default is rand\n\ - -v - Verbose. Prints informative messages to stderr\n\ - -V - Show version information\n\ - -w <output-file> - Read-Validate-Write - file is written to <output-file>\n\ - (sequential read only)\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME); -} - -enum MajorMode_t { - MMT_NONE, - MMT_CREATE, - MMT_VALIDATE, - MMT_VAL_WRITE -}; - -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - const char* order; // one of fwd|rev|rand - bool verbose_flag; // true if the verbose option was selected - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - const char* filename; // filename to be processed - const char* write_filename; // filename to write with val_write_flag - ui32_t chunk_count; - MajorMode_t mode; // MajorMode selector - - // - CommandOptions(int argc, const char** argv) : - error_flag(true), order(""), verbose_flag(false), version_flag(false), help_flag(false), - filename(""), write_filename(""), chunk_count(0), mode(MMT_VALIDATE) - { - // order = "rand"; - - for ( int i = 1; i < argc; i++ ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'c': - mode = MMT_CREATE; - TEST_EXTRA_ARG(i, 'c'); - chunk_count = atoi(argv[i]); - break; - - case 'V': version_flag = true; break; - case 'h': help_flag = true; break; - case 'v': verbose_flag = true; break; - - case 'o': - TEST_EXTRA_ARG(i, 'o'); - order = argv[i]; - - if ( strcmp(order, "fwd" ) != 0 - && strcmp(order, "rev" ) != 0 - && strcmp(order, "rand" ) != 0 ) - { - fprintf(stderr, "Unexpected order token: %s, expecting fwd|rev|rand\n", order); - return; - } - - break; - - case 'w': - mode = MMT_VAL_WRITE; - TEST_EXTRA_ARG(i, 'w'); - write_filename = argv[i]; - break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - if (argv[i][0] != '-' ) - { - if ( filename != "" ) - { - fprintf(stderr, "Extra filename found: %s\n", argv[i]); - return; - } - else - filename = argv[i]; - } - else - { - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - } - - if ( help_flag || version_flag ) - return; - - if ( strlen ( filename ) == 0 ) - { - fprintf(stderr, "Filename required.\n"); - return; - } - - if ( mode != MMT_VALIDATE && strcmp(order, "") != 0 ) - { - fprintf(stderr, "-o option not valid with -c or -w options.\n"); - return; - } - else - if ( strcmp(order, "") == 0 ) - order = "rand"; - - if ( strcmp ( filename, write_filename ) == 0 ) - { - fprintf(stderr, "Output and input files must be different.\n"); - return; - } - - error_flag = false; - } -}; - -//------------------------------------------------------------------------------------------ - - -// -#pragma pack(4) -class CTR_Setup -{ - AES_KEY m_Context; - byte_t m_key[RNG_KEY_SIZE]; - byte_t m_preamble[8]; - ui32_t m_nonce; - ui32_t m_ctr; - - KM_NO_COPY_CONSTRUCT(CTR_Setup); - -public: - CTR_Setup() {} - ~CTR_Setup() {} - - inline ui32_t Nonce() { return KM_i32_LE(m_nonce); } - inline ui32_t WriteSize() { return ( sizeof(m_key) + sizeof(m_preamble) - + sizeof(m_nonce) + sizeof(m_ctr) ); } - - // - void SetupWrite(byte_t* buf) - { - assert(buf); - s_RNG.FillRandom(m_key, WriteSize()); - assert(s_Nonce > 0); - m_nonce = KM_i32_LE(s_Nonce--); - m_ctr &= KM_i32_LE(0x7fffffff); // make sure we have 2GB headroom - memcpy(buf, m_key, WriteSize()); - AES_set_encrypt_key(m_key, RNG_KEY_SIZE_BITS, &m_Context); - } - - // - void SetupRead(const byte_t* buf) - { - assert(buf); - memcpy(m_key, buf, WriteSize()); - AES_set_encrypt_key(m_key, RNG_KEY_SIZE_BITS, &m_Context); - } - - // - void FillRandom(byte_t* buf, ui32_t buf_len) - { - ui32_t gen_count = 0; - while ( gen_count + RNG_BLOCK_SIZE <= buf_len ) - { - AES_encrypt(m_preamble, buf + gen_count, &m_Context); - m_ctr = KM_i32_LE(KM_i32_LE(m_ctr) + 1); - gen_count += RNG_BLOCK_SIZE; - } - } -}; - -// -Result_t -CreateLargeFile(CommandOptions& Options) -{ - ui32_t write_total = 0; - ui32_t write_count = 0; - FileWriter Writer; - ByteString FB; - - FB.Capacity(Megabyte); - assert(FB.Capacity() == Megabyte); - - fprintf(stderr, "Writing %u chunks:\n", Options.chunk_count); - s_Nonce = Options.chunk_count; - Result_t result = Writer.OpenWrite(Options.filename); - - while ( KM_SUCCESS(result) && write_total < Options.chunk_count ) - { - if ( KM_SUCCESS(result)) - { - CTR_Setup CTR; - CTR.SetupWrite(FB.Data()); - CTR.FillRandom(FB.Data() + CTR.WriteSize(), Megabyte - CTR.WriteSize()); - result = Writer.Write(FB.RoData(), Megabyte, &write_count); - assert(write_count == Megabyte); - fprintf(stderr, "\r%8u ", ++write_total); - } - } - - fputs("\n", stderr); - - return result; -} - -// -Result_t -validate_chunk(ByteString& FB, ByteString& CB, ui32_t* nonce_value) -{ - assert(nonce_value); - CTR_Setup CTR; - CTR.SetupRead(FB.RoData()); - - CTR.FillRandom(CB.Data() + CTR.WriteSize(), - Megabyte - CTR.WriteSize()); - - if ( memcmp(FB.RoData() + CTR.WriteSize(), - CB.RoData() + CTR.WriteSize(), - Megabyte - CTR.WriteSize()) != 0 ) - { - fprintf(stderr, "Check data mismatched in chunk\n"); - return RESULT_FAIL; - } - - *nonce_value = CTR.Nonce(); - - return RESULT_OK; -} - -// -struct read_list_t -{ - ui32_t nonce; - Kumu::fpos_t position; -}; - -// -void -randomize_list(read_list_t* read_list, ui32_t check_total) -{ - static ui32_t tmp_ints[4]; - static ui32_t seq = 0; - - for ( ui32_t j = 0; j < check_total; j++ ) - { - if ( seq > 3 ) - seq = 0; - - if ( seq == 0 ) - s_RNG.FillRandom((byte_t*)tmp_ints, 16); - - ui32_t i = tmp_ints[seq++] % (check_total - 1); - - if ( i == j ) - continue; - - read_list_t t = read_list[i]; - read_list[i] = read_list[j]; - read_list[j] = t; - } -} - -// -Result_t -ReadValidateWriteLargeFile(CommandOptions& Options) -{ - assert(Options.write_filename); - ui32_t check_total = 0; - ui32_t write_total = 0; - ui32_t read_count = 0; - ui32_t write_count = 0; - FileReader Reader; - FileWriter Writer; - ByteString FB, CB; // Frame Buffer and Check Buffer - - - FB.Capacity(Megabyte); - assert(FB.Capacity() == Megabyte); - CB.Capacity(Megabyte); - assert(CB.Capacity() == Megabyte); - - Result_t result = Reader.OpenRead(Options.filename); - - if ( KM_SUCCESS(result) ) - result = Writer.OpenWrite(Options.write_filename); - - // read the first chunk and get set up - while ( KM_SUCCESS(result) ) - { - result = Reader.Read(FB.Data(), Megabyte, &read_count); - - if ( KM_SUCCESS(result) ) - { - if ( read_count < Megabyte ) - { - fprintf(stderr, "Read() returned short buffer: %u\n", read_count); - result = RESULT_FAIL; - } - - result = validate_chunk(FB, CB, &check_total); - - if ( KM_SUCCESS(result) ) - { - result = Writer.Write(FB.RoData(), Megabyte, &write_count); - assert(write_count == Megabyte); - fprintf(stderr, "\r%8u ", ++write_total); - } - } - else if ( result == RESULT_ENDOFFILE ) - { - result = RESULT_OK; - break; - } - } - - fputs("\n", stderr); - return result; -} - - -// -Result_t -ValidateLargeFile(CommandOptions& Options) -{ - ui32_t check_total = 0; - ui32_t read_count = 0; - ui32_t read_list_i = 0; - read_list_t* read_list = 0; - FileReader Reader; - ByteString FB, CB; // Frame Buffer and Check Buffer - - FB.Capacity(Megabyte); - assert(FB.Capacity() == Megabyte); - CB.Capacity(Megabyte); - assert(CB.Capacity() == Megabyte); - - Result_t result = Reader.OpenRead(Options.filename); - - // read the first chunk and get set up - if ( KM_SUCCESS(result) ) - { - result = Reader.Read(FB.Data(), Megabyte, &read_count); - - if ( read_count < Megabyte ) - { - fprintf(stderr, "Read() returned short buffer: %u\n", read_count); - result = RESULT_FAIL; - } - else if ( KM_SUCCESS(result) ) - result = validate_chunk(FB, CB, &check_total); - - if ( KM_SUCCESS(result) ) - { - fprintf(stderr, "Validating %u chunk%s in %s order:\n", - check_total, (check_total == 1 ? "" : "s"), Options.order); - assert(read_list == 0); - read_list = (read_list_t*)malloc(check_total * sizeof(read_list_t)); - assert(read_list); - - // Set up an index to the chunks. The chunks are written - // to the file in order of descending nonce value. - if ( strcmp(Options.order, "fwd") == 0 ) - { - for ( ui32_t i = 0; i < check_total; i++ ) - { - read_list[i].nonce = check_total - i; - Kumu::fpos_t ofst = check_total - read_list[i].nonce; - read_list[i].position = ofst * (Kumu::fpos_t)Megabyte; - } - } - else - { - for ( ui32_t i = 0; i < check_total; i++ ) - { - read_list[i].nonce = i + 1; - Kumu::fpos_t ofst = check_total - read_list[i].nonce; - read_list[i].position = ofst * (Kumu::fpos_t)Megabyte; - } - - if ( strcmp(Options.order, "rand") == 0 ) - randomize_list(read_list, check_total); // this makes it random - } - } - } - - if ( KM_SUCCESS(result) ) - { - assert(read_list); - ui32_t nonce = 0; - - for ( read_list_i = 0; - read_list_i < check_total && KM_SUCCESS(result); - read_list_i++ ) - { - fprintf(stderr, "\r%8u [%8u] ", read_list_i+1, read_list[read_list_i].nonce); - result = Reader.Seek(read_list[read_list_i].position); - - if ( KM_SUCCESS(result) ) - result = Reader.Read(FB.Data(), Megabyte, &read_count); - - if ( result == RESULT_ENDOFFILE ) - break; - - else if ( read_count < Megabyte ) - { - fprintf(stderr, "Read() returned short buffer: %u\n", read_count); - result = RESULT_FAIL; - } - else if ( KM_SUCCESS(result) ) - { - result = validate_chunk(FB, CB, &nonce); - - if ( nonce != read_list[read_list_i].nonce ) - { - fprintf(stderr, "Nonce mismatch: expecting %u, got %u\n", - nonce, read_list[read_list_i].nonce); - - return RESULT_FAIL; - } - } - } - } - - fputs("\n", stderr); - - if ( result == RESULT_ENDOFFILE ) - { - if ( check_total == read_list_i ) - result = RESULT_OK; - else - { - fprintf(stderr, "Unexpected chunk count, got %u, wanted %u\n", - read_list_i, check_total); - result = RESULT_FAIL; - } - } - - return result; -} - -// -int -main(int argc, const char **argv) -{ - Result_t result = RESULT_FAIL; - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - switch ( Options.mode ) - { - - case MMT_CREATE: - result = CreateLargeFile(Options); - break; - - case MMT_VALIDATE: - result = ValidateLargeFile(Options); - break; - - case MMT_VAL_WRITE: - result = ReadValidateWriteLargeFile(Options); - break; - } - - if ( result != RESULT_OK ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result.Label(), stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// -// end kmfilegen.cpp -// diff --git a/asdcplib/src/kmrandgen.cpp b/asdcplib/src/kmrandgen.cpp deleted file mode 100644 index 560fa6e..0000000 --- a/asdcplib/src/kmrandgen.cpp +++ /dev/null @@ -1,292 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file kmrandgen.cpp - \version $Id: kmrandgen.cpp,v 1.8 2009/03/04 17:52:45 jhurst Exp $ - \brief psuedo-random number generation utility - */ - -#include "AS_DCP.h" -#include <KM_fileio.h> -#include <KM_prng.h> -#include <ctype.h> - -using namespace Kumu; - -const ui32_t RandBlockSize = 16; -const char* PROGRAM_NAME = "kmrandgen"; - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2009 John Hurst\n\n\ -%s is part of the asdcp DCP tools package.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, Kumu::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-b|-B|-c|-x] [-n] [-s <size>] [-v]\n\ -\n\ - %s [-h|-help] [-V]\n\ -\n\ - -b - Output a stream of binary data\n\ - -B - Output a Base64 string\n\ - -c - Output a C-language struct containing the values\n\ - -h | -help - Show help\n\ - -n - Suppress newlines\n\ - -s <size> - Number of random bytes to generate (default 32)\n\ - -v - Verbose. Prints informative messages to stderr\n\ - -V - Show version information\n\ - -x - Output hexadecimal (default)\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME, PROGRAM_NAME); -} - -enum OutputFormat_t { - OF_HEX, - OF_BINARY, - OF_BASE64, - OF_CSTRUCT -}; - -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool no_newline_flag; // - bool verbose_flag; // true if the verbose option was selected - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - OutputFormat_t format; // - ui32_t request_size; - - // - CommandOptions(int argc, const char** argv) : - error_flag(true), no_newline_flag(false), verbose_flag(false), - version_flag(false), help_flag(false), format(OF_HEX), request_size(RandBlockSize*2) - { - for ( int i = 1; i < argc; i++ ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'b': format = OF_BINARY; break; - case 'B': format = OF_BASE64; break; - case 'c': format = OF_CSTRUCT; break; - case 'n': no_newline_flag = true; break; - case 'h': help_flag = true; break; - - case 's': - TEST_EXTRA_ARG(i, 's'); - request_size = abs(atoi(argv[i])); - break; - - case 'v': verbose_flag = true; break; - case 'V': version_flag = true; break; - case 'x': format = OF_HEX; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - - if ( help_flag || version_flag ) - return; - - if ( request_size == 0 ) - { - fprintf(stderr, "Please use a non-zero request size\n"); - return; - } - - error_flag = false; - } -}; - - -// -int -main(int argc, const char** argv) -{ - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - FortunaRNG RandGen; - ByteString Buf(Kumu::Kilobyte); - - if ( Options.verbose_flag ) - fprintf(stderr, "Generating %d random byte%s.\n", Options.request_size, (Options.request_size == 1 ? "" : "s")); - - if ( Options.format == OF_BINARY ) - { - if ( KM_FAILURE(Buf.Capacity(Options.request_size)) ) - { - fprintf(stderr, "randbuf: %s\n", RESULT_ALLOC.Label()); - return 1; - } - - RandGen.FillRandom(Buf.Data(), Options.request_size); - fwrite((byte_t*)Buf.Data(), 1, Options.request_size, stdout); - } - else if ( Options.format == OF_CSTRUCT ) - { - ui32_t line_count = 0; - byte_t* p = Buf.Data(); - printf("byte_t rand_buf[%u] = {\n", Options.request_size); - - if ( Options.request_size > 128 ) - fputs(" // 0x00000000\n", stdout); - - while ( Options.request_size > 0 ) - { - if ( line_count > 0 && (line_count % (RandBlockSize*8)) == 0 ) - fprintf(stdout, " // 0x%08x\n", line_count); - - RandGen.FillRandom(p, RandBlockSize); - fputc(' ', stdout); - - for ( ui32_t i = 0; i < RandBlockSize && Options.request_size > 0; i++, Options.request_size-- ) - printf(" 0x%02x,", p[i]); - - fputc('\n', stdout); - line_count += RandBlockSize; - } - - fputs("};", stdout); - - if ( ! Options.no_newline_flag ) - fputc('\n', stdout); - } - else if ( Options.format == OF_BASE64 ) - { - if ( KM_FAILURE(Buf.Capacity(Options.request_size)) ) - { - fprintf(stderr, "randbuf: %s\n", RESULT_ALLOC.Label()); - return 1; - } - - ByteString Strbuf; - ui32_t e_len = base64_encode_length(Options.request_size) + 1; - - if ( KM_FAILURE(Strbuf.Capacity(e_len)) ) - { - fprintf(stderr, "strbuf: %s\n", RESULT_ALLOC.Label()); - return 1; - } - - RandGen.FillRandom(Buf.Data(), Options.request_size); - - if ( base64encode(Buf.RoData(), Options.request_size, (char*)Strbuf.Data(), Strbuf.Capacity()) == 0 ) - { - fprintf(stderr, "encode error\n"); - return 2; - } - - fputs((const char*)Strbuf.RoData(), stdout); - - if ( ! Options.no_newline_flag ) - fputs("\n", stdout); - } - else // OF_HEX - { - byte_t* p = Buf.Data(); - char hex_buf[64]; - - while ( Options.request_size > 0 ) - { - ui32_t x_len = xmin(Options.request_size, RandBlockSize); - RandGen.FillRandom(p, RandBlockSize); - bin2hex(p, x_len, hex_buf, 64); - fputs(hex_buf, stdout); - - if ( ! Options.no_newline_flag ) - fputc('\n', stdout); - - Options.request_size -= x_len; - } - - } - - return 0; -} - - -// -// end kmrandgen.cpp -// diff --git a/asdcplib/src/kmuuidgen.cpp b/asdcplib/src/kmuuidgen.cpp deleted file mode 100644 index d57154b..0000000 --- a/asdcplib/src/kmuuidgen.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ - /*! \file kmuuidgen.cpp - \version $Id: kmuuidgen.cpp,v 1.7 2009/03/04 17:52:45 jhurst Exp $ - \brief UUID generation utility - */ - -#include "AS_DCP.h" -#include <KM_util.h> -#include <ctype.h> - - -const char* PROGRAM_NAME = "kmuuidgen"; - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option -%c.\n", (c)); \ - return; \ - } - -// -void -banner(FILE* stream = stdout) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2003-2009 John Hurst\n\n\ -%s is part of the asdcp DCP tools package.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, Kumu::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stdout) -{ - fprintf(stream, "\ -USAGE: %s [-c] [-n] [-v]\n\ -\n\ - %s [-h|-help] [-V]\n\ -\n\ - -c - Output a C-language struct containing the value\n\ - -h | -help - Show help\n\ - -n - Suppress the newline\n\ - -v - Verbose. Prints informative messages to stderr\n\ - -V - Show version information\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME, PROGRAM_NAME); -} - -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool no_newline_flag; // - bool c_array_flag; // - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - bool verbose_flag; // true if the verbose flag was selected - - // - CommandOptions(int argc, const char** argv) : - error_flag(true), no_newline_flag(false), c_array_flag(false), version_flag(false), - help_flag(false), verbose_flag(false) - { - for ( int i = 1; i < argc; i++ ) - { - - if ( (strcmp( argv[i], "-help") == 0) ) - { - help_flag = true; - continue; - } - - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'c': c_array_flag = true; break; - case 'n': no_newline_flag = true; break; - case 'h': help_flag = true; break; - case 'v': verbose_flag = true; break; - case 'V': version_flag = true; break; - - default: - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - else - { - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - return; - } - } - - if ( help_flag || version_flag ) - return; - - error_flag = false; - } -}; - - - -// -int -main(int argc, const char** argv) -{ - CommandOptions Options(argc, argv); - - if ( Options.version_flag ) - banner(); - - if ( Options.help_flag ) - usage(); - - if ( Options.version_flag || Options.help_flag ) - return 0; - - if ( Options.error_flag ) - { - fprintf(stderr, "There was a problem. Type %s -h for help.\n", PROGRAM_NAME); - return 3; - } - - Kumu::UUID UUID; - Kumu::GenRandomValue(UUID); - char uuid_buf[40]; - - if ( Options.c_array_flag ) - { - const byte_t* p = UUID.Value(); - - printf("\ -byte_t uuid_buf[] = {\n\ - // %s\n ", - UUID.EncodeHex(uuid_buf, 40)); - - for ( ui32_t i = 0; i < 16; i++ ) - printf(" 0x%02x,", p[i]); - - printf("\n"); - printf("};\n"); - return 0; - } - else - { - fputs(UUID.EncodeHex(uuid_buf, 40), stdout); - } - - if ( Options.no_newline_flag == 0 ) - printf("\n"); - - return 0; -} - - -// -// end kmuuidgen.cpp -// diff --git a/asdcplib/src/mpeg-crypt-tst.sh b/asdcplib/src/mpeg-crypt-tst.sh deleted file mode 100755 index 3a952f7..0000000 --- a/asdcplib/src/mpeg-crypt-tst.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# -# $Id: mpeg-crypt-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# crypto MPEG tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY} \ - -c ${TEST_FILES}/write_crypt_test_mpeg.mxf ${TEST_FILES}/${TEST_FILE_PREFIX}.mpg -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -i ${TEST_FILES}/write_crypt_test_mpeg.mxf -if [ $? -ne 0 ]; then - exit 1 -fi - - -(${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY_B} \ - -x ${TEST_FILES}/plaintext ${TEST_FILES}/write_crypt_test_mpeg.mxf; \ - if [ $? -eq 1 ]; then exit 0; fi; exit 1 ) -${BUILD_DIR}/asdcp-test${EXEEXT} -m -k ${CRYPT_KEY} \ - -x ${TEST_FILES}/plaintext ${TEST_FILES}/write_crypt_test_mpeg.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -cmp ${TEST_FILES}/${TEST_FILE_PREFIX}.mpg ${TEST_FILES}/plaintext.ves -if [ $? -ne 0 ]; then - exit 1 -fi diff --git a/asdcplib/src/mpeg-tst.sh b/asdcplib/src/mpeg-tst.sh deleted file mode 100755 index 94d7ba6..0000000 --- a/asdcplib/src/mpeg-tst.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# $Id: mpeg-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# MPEG tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -c ${TEST_FILES}/write_test_mpeg.mxf ${TEST_FILES}/${TEST_FILE_PREFIX}.mpg -if [ $? -ne 0 ]; then - exit 1 -fi - - -${BUILD_DIR}/asdcp-test${EXEEXT} -x ${TEST_FILES}/extract ${TEST_FILES}/write_test_mpeg.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -cmp ${TEST_FILES}/${TEST_FILE_PREFIX}.mpg ${TEST_FILES}/extract.ves -if [ $? -ne 0 ]; then - exit 1 -fi - - -#${BUILD_DIR}/asdcp-test${EXEEXT} -G ${TEST_FILES}/write_test_mpeg.mxf -#if [ $? -ne 0 ]; then -# exit 1 -#fi diff --git a/asdcplib/src/path-test.cpp b/asdcplib/src/path-test.cpp deleted file mode 100644 index b556bdd..0000000 --- a/asdcplib/src/path-test.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file path-test.cpp - \version $Id: path-test.cpp,v 1.8 2009/07/10 18:14:01 jhurst Exp $ - \brief test harness for path manglers defined in KM_fileio.h -*/ - - -#include <KM_fileio.h> -#include <iostream> - -using namespace std; -using namespace Kumu; - - -// -int -main(int argc, const char** argv) -{ - - string Path_1 = "path-test.cpp"; - assert(PathExists(Path_1)); - assert(PathIsFile(Path_1)); - assert(!PathIsDirectory(Path_1)); - - string Path_2 = "."; - assert(PathExists(Path_2)); - assert(!PathIsFile(Path_2)); - assert(PathIsDirectory(Path_2)); - - string Path_3 = "/foo/bar/baz.buz"; // must have 3 elements - PathCompList_t PathList_3; - PathToComponents(Path_3, PathList_3); - - assert(PathList_3.size() == 3); - - string Path_4 = ComponentsToPath(PathList_3); - string Path_5 = PathMakeAbsolute(Path_4); - - fprintf(stderr, "PathMakeAbsolute in: %s\n", Path_4.c_str()); - fprintf(stderr, "PathMakeAbsolute out: %s\n", Path_5.c_str()); - - string Path_6 = ComponentsToAbsolutePath(PathList_3); - assert(Path_3 == Path_6); - assert(PathsAreEquivalent(Path_3, Path_6)); - assert(!PathsAreEquivalent(Path_3, Path_4)); - - assert(!PathHasComponents(PathList_3.back())); - assert(PathHasComponents(Path_3)); - - assert(!PathIsAbsolute(Path_4)); - assert(PathIsAbsolute(Path_5)); - assert(PathMakeLocal(Path_3, "/foo") == "bar/baz.buz"); - - assert(PathsAreEquivalent("/foo/bar/baz", "/foo/bar/./baz")); - assert(PathsAreEquivalent("/foo/baz", "/foo/bar/../baz")); - - assert(PathBasename(Path_3) == "baz.buz"); - assert(PathDirname(Path_3) == "/foo/bar"); - assert(PathDirname("/foo") == "/"); - - assert(PathGetExtension(Path_3) == "buz"); - assert(PathGetExtension("foo") == ""); - assert(PathSetExtension("foo.bar", "") == "foo"); - assert(PathSetExtension(Path_3, "xml") == "baz.xml"); - - string Path_7 = "//tmp///////fooo"; - - PathCompList_t PathList_7; - PathToComponents(Path_7, PathList_7); - for ( PathCompList_t::const_iterator i = PathList_7.begin(); i != PathList_7.end(); i++ ) - fprintf(stderr, "xx: \"%s\"\n", i->c_str()); - assert(PathsAreEquivalent(PathMakeLocal(PathMakeCanonical(Path_7), "/tmp"), "fooo")); - - string Path_8 = "tmp/foo/bar/ack"; - CreateDirectoriesInPath(Path_8); - assert(PathExists(Path_8)); - DeletePath(Path_8); - assert(!PathExists(Path_8)); - - PathList_t InList, OutList; - InList.push_back("tmp"); - InList.push_back("Darwin"); - InList.push_back("."); - - cerr << "----------------------------------" << endl; - FindInPaths(PathMatchAny(), InList, OutList); - PathList_t::iterator pi; - - for ( pi = OutList.begin(); pi != OutList.end(); pi++ ) - cerr << *pi << endl; - - cerr << "----------------------------------" << endl; - OutList.clear(); - FindInPaths(PathMatchRegex("^[A-J].*\\.h$"), InList, OutList); - - for ( pi = OutList.begin(); pi != OutList.end(); pi++ ) - cerr << *pi << endl; - - cerr << "----------------------------------" << endl; - OutList.clear(); - FindInPaths(PathMatchGlob("*.h"), InList, OutList); - - for ( pi = OutList.begin(); pi != OutList.end(); pi++ ) - cerr << *pi << endl; - - cerr << "----------------------------------" << endl; - - fsize_t free_space, total_space; - FreeSpaceForPath("/", free_space, total_space); - cerr << "Free space: " << free_space << endl; - cerr << "Total space: " << total_space << endl; - - cerr << "OK" << endl; - - return 0; -} - -// -// end path-test.cpp -// diff --git a/asdcplib/src/rng-tst.sh b/asdcplib/src/rng-tst.sh deleted file mode 100755 index b0b35c8..0000000 --- a/asdcplib/src/rng-tst.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# -# $Id: rng-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -${srcdir}/fips-186-test-harness.pl ${BUILD_DIR}/fips-186-rng-test${EXEEXT} diff --git a/asdcplib/src/wav-crypt-tst.sh b/asdcplib/src/wav-crypt-tst.sh deleted file mode 100755 index fce54c0..0000000 --- a/asdcplib/src/wav-crypt-tst.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/sh -# -# $Id: wav-crypt-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# crypto WAV tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY} \ - -c ${TEST_FILES}/write_crypt_test_wav.mxf ${TEST_FILES}/${TEST_FILE_PREFIX}.wav -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -i ${TEST_FILES}/write_crypt_test_wav.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -p 23 -k ${CRYPT_KEY} \ - -c ${TEST_FILES}/write_crypt_test_2398_wav.mxf ${TEST_FILES}/${TEST_FILE_PREFIX}.wav -if [ $? -ne 0 ]; then - exit 1 -fi -${BUILD_DIR}/asdcp-test${EXEEXT} -i ${TEST_FILES}/write_crypt_test_2398_wav.mxf -if [ $? -ne 0 ]; then - exit 1 -fi - - -( ${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY_B} \ - -x ${TEST_FILES}/plaintext ${TEST_FILES}/write_crypt_test_wav.mxf; \ - if [ $? -eq 1 ]; then exit 0; fi; exit 1 ) -${BUILD_DIR}/asdcp-test${EXEEXT} -m -k ${CRYPT_KEY} \ - -x ${TEST_FILES}/plaintext ${TEST_FILES}/write_crypt_test_wav.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -cmp ${TEST_FILES}/${TEST_FILE_PREFIX}.wav ${TEST_FILES}/plaintext_1.wav -if [ $? -ne 0 ]; then - exit 1 -fi -( ${BUILD_DIR}/asdcp-test${EXEEXT} -k ${CRYPT_KEY_B} \ - -x ${TEST_FILES}/plaintext_2398 ${TEST_FILES}/write_crypt_test_2398_wav.mxf; \ - if [ $? -eq 1 ]; then exit 0; fi; exit 1 ) -${BUILD_DIR}/asdcp-test${EXEEXT} -m -k ${CRYPT_KEY} \ - -x ${TEST_FILES}/plaintext_2398 ${TEST_FILES}/write_crypt_test_2398_wav.mxf -if [ $? -ne 0 ]; then - exit 1 -fi diff --git a/asdcplib/src/wav-tst.sh b/asdcplib/src/wav-tst.sh deleted file mode 100755 index e124e8e..0000000 --- a/asdcplib/src/wav-tst.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -# -# $Id: wav-tst.sh,v 1.3 2009/04/09 19:16:49 msheby Exp $ -# Copyright (c) 2007-2009 John Hurst. All rights reserved. -# -# 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. - -# WAV tests - -${BUILD_DIR}/asdcp-test${EXEEXT} -c ${TEST_FILES}/write_test_wav.mxf ${TEST_FILES}/${TEST_FILE_PREFIX}.wav -if [ $? -ne 0 ]; then - exit 1 -fi - -${BUILD_DIR}/asdcp-test${EXEEXT} -x ${TEST_FILES}/extract ${TEST_FILES}/write_test_wav.mxf -if [ $? -ne 0 ]; then - exit 1 -fi -cmp ${TEST_FILES}/${TEST_FILE_PREFIX}.wav ${TEST_FILES}/extract_1.wav -if [ $? -ne 0 ]; then - exit 1 -fi diff --git a/asdcplib/src/wavesplit.cpp b/asdcplib/src/wavesplit.cpp deleted file mode 100755 index 8785198..0000000 --- a/asdcplib/src/wavesplit.cpp +++ /dev/null @@ -1,397 +0,0 @@ -/* -Copyright (c) 2005-2009, John Hurst -All rights reserved. - -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. -*/ -/*! \file wavesplit.cpp - \version $Id: wavesplit.cpp,v 1.11 2010/02/16 18:40:57 jhurst Exp $ - \brief WAV file splitter -*/ - -#include <AS_DCP.h> -#include <WavFileWriter.h> -#include <assert.h> - -using namespace ASDCP; - -//------------------------------------------------------------------------------------------ -// -// command line option parser class - -static const char* PROGRAM_NAME = "wavesplit"; // program name for messages - -// Macros used to test command option data state. - -// True if a major mode has already been selected. -#define TEST_MAJOR_MODE() ( create_flag || info_flag ) - -// Causes the caller to return if a major mode has already been selected, -// otherwise sets the given flag. -#define TEST_SET_MAJOR_MODE(f) if ( TEST_MAJOR_MODE() ) \ - { \ - fputs("Conflicting major mode, choose one of -(ic).\n", stderr); \ - return; \ - } \ - (f) = true; - -// Increment the iterator, test for an additional non-option command line argument. -// Causes the caller to return if there are no remaining arguments or if the next -// argument begins with '-'. -#define TEST_EXTRA_ARG(i,c) if ( ++i >= argc || argv[(i)][0] == '-' ) \ - { \ - fprintf(stderr, "Argument not found for option %c.\n", (c)); \ - return; \ - } -// -void -banner(FILE* stream = stderr) -{ - fprintf(stream, "\n\ -%s (asdcplib %s)\n\n\ -Copyright (c) 2005-2009 John Hurst\n\n\ -%s is part of asdcplib.\n\ -asdcplib may be copied only under the terms of the license found at\n\ -the top of every file in the asdcplib distribution kit.\n\n\ -Specify the -h (help) option for further information about %s\n\n", - PROGRAM_NAME, ASDCP::Version(), PROGRAM_NAME, PROGRAM_NAME); -} - -// -void -usage(FILE* stream = stderr) -{ - fprintf(stream, "\ -USAGE: %s [-v] -V\n\ - %s [-v] -c <root-name> [-d <duration>] [-f <start-frame>] <filename>\n\ - %s [-v] -i <filename>\n\ -\n\ -Major modes:\n\ - -c <root-name> - Create a WAV file for each channel in the input file\n\ - (default is two-channel files)\n\ - -d <duration> - Number of frames to process, default all\n\ - -f <frame-num> - Starting frame number, default 0\n\ - -h - Show help\n\ - -i - Show input file metadata (no output created)\n\ - -V - Show version\n\ - -v - Print extra info while processing\n\ -\n\ - NOTES: o There is no option grouping, all options must be distinct arguments.\n\ - o All option arguments must be separated from the option by whitespace.\n\ -\n", PROGRAM_NAME, PROGRAM_NAME, PROGRAM_NAME); -} - -// -// -class CommandOptions -{ - CommandOptions(); - -public: - bool error_flag; // true if the given options are in error or not complete - bool create_flag; // true if the file create mode was selected - bool info_flag; // true if the file info mode was selected - bool version_flag; // true if the version display option was selected - bool help_flag; // true if the help display option was selected - bool verbose_flag; // true for extra info during procesing - ui32_t start_frame; // frame number to begin processing - ui32_t duration; // number of frames to be processed - const char* file_root; // filename prefix for files written by the extract mode - const char* filename; // filename to be processed - - CommandOptions(int argc, const char** argv) : - error_flag(true), create_flag(false), info_flag(false), - version_flag(false), help_flag(false), start_frame(0), - duration(0xffffffff), file_root(0), filename(0) - { - for ( int i = 1; i < argc; i++ ) - { - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) - { - switch ( argv[i][1] ) - { - case 'c': - TEST_SET_MAJOR_MODE(create_flag); - TEST_EXTRA_ARG(i, 'c'); - file_root = argv[i]; - break; - - case 'd': - TEST_EXTRA_ARG(i, 'd'); - duration = atoi(argv[i]); // TODO: test for negative value, should use strtol() - break; - - case 'f': - TEST_EXTRA_ARG(i, 'f'); - start_frame = atoi(argv[i]); // TODO: test for negative value, should use strtol() - break; - - case 'h': help_flag = true; break; - case 'i': TEST_SET_MAJOR_MODE(info_flag); break; - case 'V': version_flag = true; break; - - default: - fprintf(stderr, "Unrecognized option: %c\n", argv[i][1]); - return; - } - } - else - { - if ( filename ) - { - fprintf(stderr, "Unexpected extra filename.\n"); - return; - } - - filename = argv[i]; - } - } - - if ( TEST_MAJOR_MODE() ) - { - if ( filename == 0 ) - { - fputs("Input filename required.\n", stderr); - return; - } - } - - if ( ! TEST_MAJOR_MODE() && ! help_flag && ! version_flag ) - { - fputs("No operation selected (use one of -(ic) or -h for help).\n", stderr); - return; - } - - error_flag = false; - } -}; - -// -Result_t -wav_file_info(CommandOptions& Options) -{ - PCM::AudioDescriptor ADesc; - Rational PictureRate = EditRate_24; - PCM::WAVParser Parser; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filename, PictureRate); - - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillAudioDescriptor(ADesc); - ADesc.EditRate = PictureRate; - fprintf(stderr, "48Khz PCM Audio, %s fps (%u spf)\n", "24", - PCM::CalcSamplesPerFrame(ADesc)); - fputs("AudioDescriptor:\n", stderr); - PCM::AudioDescriptorDump(ADesc); - } - - return result; -} - -// -void -split_buffer(ui32_t sample_size, PCM::FrameBuffer& FrameBuffer, - PCM::FrameBuffer& L_FrameBuffer, PCM::FrameBuffer& R_FrameBuffer) -{ - assert((FrameBuffer.Size() % 2) == 0); - byte_t* p = FrameBuffer.Data(); - byte_t* end_p = p + FrameBuffer.Size(); - byte_t* lp = L_FrameBuffer.Data(); - byte_t* rp = R_FrameBuffer.Data(); - - for ( ; p < end_p; ) - { - memcpy(lp, p, sample_size); - lp += sample_size; - p += sample_size; - memcpy(rp, p, sample_size); - rp += sample_size; - p += sample_size; - } - - L_FrameBuffer.Size(L_FrameBuffer.Capacity()); - R_FrameBuffer.Size(R_FrameBuffer.Capacity()); -} - -// -Result_t -split_wav_file(CommandOptions& Options) -{ - PCM::FrameBuffer FrameBuffer; - PCM::FrameBuffer L_FrameBuffer; - PCM::FrameBuffer R_FrameBuffer; - PCM::AudioDescriptor ADesc; - Rational PictureRate = EditRate_24; - PCM::WAVParser Parser; - - // set up essence parser - Result_t result = Parser.OpenRead(Options.filename, PictureRate); - - if ( ASDCP_SUCCESS(result) ) - { - Parser.FillAudioDescriptor(ADesc); - - ADesc.EditRate = PictureRate; - ui32_t fb_size = PCM::CalcFrameBufferSize(ADesc); - assert((fb_size % 2) == 0); - FrameBuffer.Capacity(fb_size); - L_FrameBuffer.Capacity(fb_size/2); - R_FrameBuffer.Capacity(fb_size/2); - - if ( Options.verbose_flag ) - { - fprintf(stderr, "48Khz PCM Audio, %s fps (%u spf)\n", "24", - PCM::CalcSamplesPerFrame(ADesc)); - fputs("AudioDescriptor:\n", stderr); - PCM::AudioDescriptorDump(ADesc); - } - - ADesc.ChannelCount = 1; - } - - // set up output files - Kumu::FileWriter L_OutFile; - Kumu::FileWriter R_OutFile; - - if ( ASDCP_SUCCESS(result) ) - { - char filename[256]; - snprintf(filename, 256, "%s_l.wav", Options.file_root); - result = L_OutFile.OpenWrite(filename); - - if ( ASDCP_SUCCESS(result) ) - { - snprintf(filename, 256, "%s_r.wav", Options.file_root); - result = R_OutFile.OpenWrite(filename); - } - } - - - if ( ASDCP_SUCCESS(result) ) - { - Wav::SimpleWaveHeader WavHeader(ADesc); - result = WavHeader.WriteToFile(L_OutFile); - - if ( ASDCP_SUCCESS(result) ) - result = WavHeader.WriteToFile(R_OutFile); - } - - if ( ASDCP_SUCCESS(result) ) - { - ui32_t write_count = 0; - ui32_t duration = 0; - - while ( ASDCP_SUCCESS(result) && (duration++ < Options.duration) ) - { - result = Parser.ReadFrame(FrameBuffer); - - if ( FrameBuffer.Size() != FrameBuffer.Capacity() ) - { - fprintf(stderr, "WARNING: Last frame read was short, PCM input is possibly not frame aligned.\n"); - fprintf(stderr, "Expecting %u bytes, got %u.\n", FrameBuffer.Capacity(), FrameBuffer.Size()); - result = RESULT_ENDOFFILE; - continue; - } - - if ( Options.verbose_flag ) - FrameBuffer.Dump(stderr); - - if ( ASDCP_SUCCESS(result) ) - { - split_buffer(PCM::CalcSampleSize(ADesc), FrameBuffer, L_FrameBuffer, R_FrameBuffer); - result = L_OutFile.Write(L_FrameBuffer.Data(), L_FrameBuffer.Size(), &write_count); - - if ( ASDCP_SUCCESS(result) ) - result = R_OutFile.Write(R_FrameBuffer.Data(), R_FrameBuffer.Size(), &write_count); - } - } - - if ( result == RESULT_ENDOFFILE ) - result = RESULT_OK; - - if ( ASDCP_SUCCESS(result) ) - { - ADesc.ContainerDuration = duration; - Wav::SimpleWaveHeader WavHeader(ADesc); - L_OutFile.Seek(); - - if ( ASDCP_SUCCESS(result) ) - result = R_OutFile.Seek(); - - if ( ASDCP_SUCCESS(result) ) - result = WavHeader.WriteToFile(L_OutFile); - - if ( ASDCP_SUCCESS(result) ) - result = WavHeader.WriteToFile(R_OutFile); - } - } - - return RESULT_OK; -} - - -// -int -main(int argc, const char** argv) -{ - Result_t result = RESULT_OK; - CommandOptions Options(argc, argv); - - if ( Options.help_flag ) - { - usage(); - return 0; - } - - if ( Options.error_flag ) - return 3; - - if ( Options.version_flag ) - banner(); - - if ( Options.info_flag ) - result = wav_file_info(Options); - - else if ( Options.create_flag ) - result = split_wav_file(Options); - - if ( result != RESULT_OK ) - { - fputs("Program stopped on error.\n", stderr); - - if ( result != RESULT_FAIL ) - { - fputs(result, stderr); - fputc('\n', stderr); - } - - return 1; - } - - return 0; -} - - -// diff --git a/asdcplib/src/wscript b/asdcplib/src/wscript deleted file mode 100644 index 343f5b9..0000000 --- a/asdcplib/src/wscript +++ /dev/null @@ -1,71 +0,0 @@ -def configure(conf): - conf.env.append_value('CXXFLAGS', '-D_FILE_OFFSET_BITS=64') - conf.env.append_value('CXXFLAGS', '-DPACKAGE_VERSION="1.9.45-carlh"') - if conf.options.target_windows: - conf.env.append_value('CXXFLAGS', '-DASDCP_PLATFORM="win32"') - conf.env.append_value('CXXFLAGS', '-DKM_WIN32') - else: - conf.env.append_value('CXXFLAGS', '-DASDCP_PLATFORM="linux"') - -def build(bld): - if bld.env.STATIC: - obj = bld(features = 'cxx cxxstlib') - else: - obj = bld(features = 'cxx cxxshlib') - - obj.name = 'libkumu-libsub%s' % bld.env.API_VERSION - obj.target = 'kumu-libsub%s' % bld.env.API_VERSION - obj.uselib = 'OPENSSL BOOST_FILESYSTEM' - obj.includes = ['.'] - obj.export_includes = ['.'] - obj.source = """ - KM_fileio.cpp - KM_log.cpp - KM_util.cpp - KM_xml.cpp - KM_tai.cpp - KM_prng.cpp - """ - - if bld.env.STATIC: - obj = bld(features = 'cxx cxxstlib') - else: - obj = bld(features = 'cxx cxxshlib') - - obj.name = 'libasdcp-libsub%s' % bld.env.API_VERSION - obj.target = 'asdcp-libsub%s' % bld.env.API_VERSION - obj.uselib = 'OPENSSL' - obj.use = 'libkumu-libsub%s' % bld.env.API_VERSION - obj.includes = ['.'] - obj.export_includes = ['.'] - obj.source = """ - MPEG2_Parser.cpp - MPEG.cpp - JP2K_Codestream_Parser.cpp - JP2K_Sequence_Parser.cpp - JP2K.cpp - PCM_Parser.cpp - Wav.cpp - TimedText_Parser.cpp - KLV.cpp - Dict.cpp - MXFTypes.cpp - MXF.cpp - Index.cpp - Metadata.cpp - AS_DCP.cpp - AS_DCP_MXF.cpp - AS_DCP_AES.cpp - h__Reader.cpp - h__Writer.cpp - AS_DCP_MPEG2.cpp - AS_DCP_JP2K.cpp - AS_DCP_PCM.cpp - AS_DCP_TimedText.cpp - PCMParserList.cpp - MDD.cpp - """ - - if bld.env.STATIC: - bld.install_files('${PREFIX}/lib', 'libkumu-libsub%s.a' % bld.env.API_VERSION) - bld.install_files('${PREFIX}/lib', 'libasdcp-libsub%s.a' % bld.env.API_VERSION) diff --git a/asdcplib/win32/Makefile.am b/asdcplib/win32/Makefile.am deleted file mode 100755 index f2f07d6..0000000 --- a/asdcplib/win32/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -# -# $Id: Makefile.am,v 1.5 2009/04/12 20:34:38 msheby Exp $ -# Copyright (c) 2007-2008 John Hurst. All rights reserved. -# -# 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. - -EXTRA_DIST = Makefile.mak README.txt - diff --git a/asdcplib/win32/Makefile.in b/asdcplib/win32/Makefile.in deleted file mode 100644 index 9f1d64d..0000000 --- a/asdcplib/win32/Makefile.in +++ /dev/null @@ -1,414 +0,0 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ - -# -# $Id: Makefile.am,v 1.5 2009/04/12 20:34:38 msheby Exp $ -# Copyright (c) 2007-2008 John Hurst. All rights reserved. -# -# 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. -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@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@ -subdir = win32 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.wmk -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_expat.m4 \ - $(top_srcdir)/m4/ax_lib_openssl.m4 \ - $(top_srcdir)/m4/ax_lib_xerces.m4 \ - $(top_srcdir)/m4/az_python.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_CLEAN_FILES = Makefile.mak -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -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@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -EXPAT_CFLAGS = @EXPAT_CFLAGS@ -EXPAT_LDFLAGS = @EXPAT_LDFLAGS@ -EXPAT_VERSION = @EXPAT_VERSION@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPENSSL_CPPFLAGS = @OPENSSL_CPPFLAGS@ -OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@ -OPENSSL_LIBS = @OPENSSL_LIBS@ -OPENSSL_VERSION = @OPENSSL_VERSION@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PYTHON = @PYTHON@ -PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ -PYTHON_CSPEC = @PYTHON_CSPEC@ -PYTHON_EXECDIR = @PYTHON_EXECDIR@ -PYTHON_EXECPREFIX = @PYTHON_EXECPREFIX@ -PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ -PYTHON_LSPEC = @PYTHON_LSPEC@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_SHORTVERSION = @PYTHON_SHORTVERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -XERCES_CPPFLAGS = @XERCES_CPPFLAGS@ -XERCES_LDFLAGS = @XERCES_LDFLAGS@ -XERCES_LIBS = @XERCES_LIBS@ -XERCES_VERSION = @XERCES_VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -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_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = Makefile.mak README.txt -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 ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign win32/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign win32/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 -$(am__aclocal_m4_deps): -Makefile.mak: $(top_builddir)/config.status $(srcdir)/Makefile.wmk - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @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 "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -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: - -.MAKE: install-am install-strip - -.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-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am 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-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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/asdcplib/win32/Makefile.mak b/asdcplib/win32/Makefile.mak deleted file mode 100644 index 96be7f9..0000000 --- a/asdcplib/win32/Makefile.mak +++ /dev/null @@ -1,151 +0,0 @@ -# $Id: Makefile.wmk,v 1.4 2012/03/07 18:16:52 mikey Exp $
-# Copyright (c) 2007-2012 John Hurst. All rights reserved.
-#
-# 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.
-
-
-SRCDIR = ..\src
-OBJDIR = .
-
-!ifndef WITH_OPENSSL
-!error "OpenSSL is needed! Specify it with WITH_OPENSSL=<OpenSSL directory>"
-!endif
-
-!ifdef ENABLE_RANDOM_UUID
-CXXFLAGS1 = /nologo /W3 /GR /EHsc /DWIN32 /DKM_WIN32 /D_CONSOLE /I. /I$(SRCDIR) /DASDCP_PLATFORM=\"win32\" \
- /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DPACKAGE_VERSION=\"1.9.45\" \
- /I"$(WITH_OPENSSL)"\inc32 /DCONFIG_RANDOM_UUID=1
-!else
-CXXFLAGS1 = /nologo /W3 /GR /EHsc /DWIN32 /DKM_WIN32 /D_CONSOLE /I. /I$(SRCDIR) /DASDCP_PLATFORM=\"win32\" \
- /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DPACKAGE_VERSION=\"1.9.45\" \
- /I"$(WITH_OPENSSL)"\inc32
-!endif
-LIB_EXE = lib.exe
-LIBFLAGS1 = /NOLOGO /LIBPATH:"$(WITH_OPENSSL)"\out32dll
-
-LINK = link.exe
-LINKFLAGS1 = /NOLOGO /SUBSYSTEM:console /MACHINE:I386 /LIBPATH:. /DEBUG
-
-
-!ifdef DEBUG
-CXXFLAGS2 = $(CXXFLAGS1) /MTd /DDEBUG /D_DEBUG /Od /RTC1 /ZI
-LINKFLAGS = $(LINKFLAGS1) /DEBUG
-!else
-CXXFLAGS2 = $(CXXFLAGS1) /MT /DNDEBUG /D_NDEBUG /O2
-LINKFLAGS = $(LINKFLAGS1)
-!endif
-
-!IFDEF WITH_XERCES
-!ifdef WITH_XML_PARSER
-!ERROR "Cannot include both Expat and Xerces-C++!"
-!endif
-
-CXXFLAGS = $(CXXFLAGS2) /DHAVE_XERCES_C=1 /I"$(WITH_XERCES)"\include
-LIBFLAGS = $(LIBFLAGS1) /LIBPATH:"$(WITH_XERCES)"\lib
-!ELSEIFDEF WITH_XML_PARSER
-CXXFLAGS = $(CXXFLAGS2) /DASDCP_USE_EXPAT /I"$(WITH_XML_PARSER)"\Source\lib
-!IFDEF DEBUG
-LIBFLAGS = $(LIBFLAGS1) /LIBPATH:"$(WITH_XML_PARSER)"\Source\win32\bin\debug
-!ELSE
-LIBFLAGS = $(LIBFLAGS1) /LIBPATH:"$(WITH_XML_PARSER)"\Source\win32\bin\release
-!ENDIF
-!ELSE
-CXXFLAGS = $(CXXFLAGS2)
-LIBFLAGS = $(LIBFLAGS1)
-!ENDIF
-
-CPPFLAGS = $(CXXFLAGS)
-
-KUMU_OBJS = KM_fileio.obj KM_log.obj KM_prng.obj KM_util.obj KM_xml.obj KM_tai.obj
-ASDCP_OBJS = MPEG2_Parser.obj MPEG.obj JP2K_Codestream_Parser.obj \
- JP2K_Sequence_Parser.obj JP2K.obj PCM_Parser.obj Wav.obj \
- TimedText_Parser.obj KLV.obj Dict.obj MXFTypes.obj MXF.obj \
- Index.obj Metadata.obj AS_DCP.obj AS_DCP_MXF.obj AS_DCP_AES.obj \
- h__Reader.obj h__Writer.obj AS_DCP_MPEG2.obj AS_DCP_JP2K.obj \
- AS_DCP_PCM.obj AS_DCP_TimedText.obj PCMParserList.obj \
- MDD.obj
-
-{$(SRCDIR)\}.cpp{}.obj:
- $(CXX) $(CXXFLAGS) -Fd$(OBJDIR)\ /c $<
-
-all: kmfilegen.exe kmrandgen.exe kmuuidgen.exe asdcp-test.exe \
- asdcp-wrap.exe asdcp-unwrap.exe asdcp-info.exe \
- blackwave.exe klvwalk.exe j2c-test.exe wavesplit.exe
-
-clean:
- erase *.exe *.lib *.obj *.ilk *.pdb *.idb
-
-libkumu.lib : $(KUMU_OBJS)
-!IFDEF WITH_XERCES
-!IFDEF DEBUG
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib xerces-c_2D.lib
-!ELSE
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib xerces-c_2.lib
-!ENDIF
-!ELSEIFDEF WITH_XML_PARSER
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib libexpatMT.lib
-!ELSE
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib
-!ENDIF
-
-libasdcp.lib: libkumu.lib $(ASDCP_OBJS)
- $(LIB_EXE) $(LIBFLAGS) /OUT:libasdcp.lib $**
-
-blackwave.exe: libasdcp.lib blackwave.obj
- $(LINK) $(LINKFLAGS) /OUT:blackwave.exe $** Advapi32.lib
-
-wavesplit.exe: libasdcp.lib wavesplit.obj
- $(LINK) $(LINKFLAGS) /OUT:wavesplit.exe $** Advapi32.lib
-
-kmuuidgen.exe: libkumu.lib kmuuidgen.obj
- $(LINK) $(LINKFLAGS) /OUT:kmuuidgen.exe $** Advapi32.lib
-
-kmrandgen.exe: libkumu.lib kmrandgen.obj
- $(LINK) $(LINKFLAGS) /OUT:kmrandgen.exe $** Advapi32.lib
-
-kmfilegen.exe: libkumu.lib kmfilegen.obj
- $(LINK) $(LINKFLAGS) /OUT:kmfilegen.exe $** Advapi32.lib
-
-klvwalk.exe: libasdcp.lib klvwalk.obj
- $(LINK) $(LINKFLAGS) /OUT:klvwalk.exe $** Advapi32.lib
-
-asdcp-test.exe: libasdcp.lib asdcp-test.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-test.exe $** Advapi32.lib
-
-asdcp-wrap.exe: libasdcp.lib asdcp-wrap.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-wrap.exe $** Advapi32.lib
-
-asdcp-unwrap.exe: libasdcp.lib asdcp-unwrap.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-unwrap.exe $** Advapi32.lib
-
-asdcp-info.exe: libasdcp.lib asdcp-info.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-info.exe $** Advapi32.lib
-
-asdcp-util.exe: libasdcp.lib asdcp-util.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-util.exe $** Advapi32.lib
-
-j2c-test.exe: libasdcp.lib j2c-test.obj
- $(LINK) $(LINKFLAGS) /OUT:j2c-test.exe $** Advapi32.lib
-
-
-# END Makefile
diff --git a/asdcplib/win32/Makefile.wmk b/asdcplib/win32/Makefile.wmk deleted file mode 100755 index 0539026..0000000 --- a/asdcplib/win32/Makefile.wmk +++ /dev/null @@ -1,151 +0,0 @@ -# $Id: Makefile.wmk,v 1.4 2012/03/07 18:16:52 mikey Exp $
-# Copyright (c) 2007-2012 John Hurst. All rights reserved.
-#
-# 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.
-
-
-SRCDIR = ..\src
-OBJDIR = .
-
-!ifndef WITH_OPENSSL
-!error "OpenSSL is needed! Specify it with WITH_OPENSSL=<OpenSSL directory>"
-!endif
-
-!ifdef ENABLE_RANDOM_UUID
-CXXFLAGS1 = /nologo /W3 /GR /EHsc /DWIN32 /DKM_WIN32 /D_CONSOLE /I. /I$(SRCDIR) /DASDCP_PLATFORM=\"win32\" \
- /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DPACKAGE_VERSION=\"@PACKAGE_VERSION@\" \
- /I"$(WITH_OPENSSL)"\inc32 /DCONFIG_RANDOM_UUID=1
-!else
-CXXFLAGS1 = /nologo /W3 /GR /EHsc /DWIN32 /DKM_WIN32 /D_CONSOLE /I. /I$(SRCDIR) /DASDCP_PLATFORM=\"win32\" \
- /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DPACKAGE_VERSION=\"@PACKAGE_VERSION@\" \
- /I"$(WITH_OPENSSL)"\inc32
-!endif
-LIB_EXE = lib.exe
-LIBFLAGS1 = /NOLOGO /LIBPATH:"$(WITH_OPENSSL)"\out32dll
-
-LINK = link.exe
-LINKFLAGS1 = /NOLOGO /SUBSYSTEM:console /MACHINE:I386 /LIBPATH:. /DEBUG
-
-
-!ifdef DEBUG
-CXXFLAGS2 = $(CXXFLAGS1) /MTd /DDEBUG /D_DEBUG /Od /RTC1 /ZI
-LINKFLAGS = $(LINKFLAGS1) /DEBUG
-!else
-CXXFLAGS2 = $(CXXFLAGS1) /MT /DNDEBUG /D_NDEBUG /O2
-LINKFLAGS = $(LINKFLAGS1)
-!endif
-
-!IFDEF WITH_XERCES
-!ifdef WITH_XML_PARSER
-!ERROR "Cannot include both Expat and Xerces-C++!"
-!endif
-
-CXXFLAGS = $(CXXFLAGS2) /DHAVE_XERCES_C=1 /I"$(WITH_XERCES)"\include
-LIBFLAGS = $(LIBFLAGS1) /LIBPATH:"$(WITH_XERCES)"\lib
-!ELSEIFDEF WITH_XML_PARSER
-CXXFLAGS = $(CXXFLAGS2) /DASDCP_USE_EXPAT /I"$(WITH_XML_PARSER)"\Source\lib
-!IFDEF DEBUG
-LIBFLAGS = $(LIBFLAGS1) /LIBPATH:"$(WITH_XML_PARSER)"\Source\win32\bin\debug
-!ELSE
-LIBFLAGS = $(LIBFLAGS1) /LIBPATH:"$(WITH_XML_PARSER)"\Source\win32\bin\release
-!ENDIF
-!ELSE
-CXXFLAGS = $(CXXFLAGS2)
-LIBFLAGS = $(LIBFLAGS1)
-!ENDIF
-
-CPPFLAGS = $(CXXFLAGS)
-
-KUMU_OBJS = KM_fileio.obj KM_log.obj KM_prng.obj KM_util.obj KM_xml.obj KM_tai.obj
-ASDCP_OBJS = MPEG2_Parser.obj MPEG.obj JP2K_Codestream_Parser.obj \
- JP2K_Sequence_Parser.obj JP2K.obj PCM_Parser.obj Wav.obj \
- TimedText_Parser.obj KLV.obj Dict.obj MXFTypes.obj MXF.obj \
- Index.obj Metadata.obj AS_DCP.obj AS_DCP_MXF.obj AS_DCP_AES.obj \
- h__Reader.obj h__Writer.obj AS_DCP_MPEG2.obj AS_DCP_JP2K.obj \
- AS_DCP_PCM.obj AS_DCP_TimedText.obj PCMParserList.obj \
- MDD.obj
-
-{$(SRCDIR)\}.cpp{}.obj:
- $(CXX) $(CXXFLAGS) -Fd$(OBJDIR)\ /c $<
-
-all: kmfilegen.exe kmrandgen.exe kmuuidgen.exe asdcp-test.exe \
- asdcp-wrap.exe asdcp-unwrap.exe asdcp-info.exe \
- blackwave.exe klvwalk.exe j2c-test.exe wavesplit.exe
-
-clean:
- erase *.exe *.lib *.obj *.ilk *.pdb *.idb
-
-libkumu.lib : $(KUMU_OBJS)
-!IFDEF WITH_XERCES
-!IFDEF DEBUG
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib xerces-c_2D.lib
-!ELSE
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib xerces-c_2.lib
-!ENDIF
-!ELSEIFDEF WITH_XML_PARSER
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib libexpatMT.lib
-!ELSE
- $(LIB_EXE) $(LIBFLAGS) /OUT:libkumu.lib $** libeay32.lib
-!ENDIF
-
-libasdcp.lib: libkumu.lib $(ASDCP_OBJS)
- $(LIB_EXE) $(LIBFLAGS) /OUT:libasdcp.lib $**
-
-blackwave.exe: libasdcp.lib blackwave.obj
- $(LINK) $(LINKFLAGS) /OUT:blackwave.exe $** Advapi32.lib
-
-wavesplit.exe: libasdcp.lib wavesplit.obj
- $(LINK) $(LINKFLAGS) /OUT:wavesplit.exe $** Advapi32.lib
-
-kmuuidgen.exe: libkumu.lib kmuuidgen.obj
- $(LINK) $(LINKFLAGS) /OUT:kmuuidgen.exe $** Advapi32.lib
-
-kmrandgen.exe: libkumu.lib kmrandgen.obj
- $(LINK) $(LINKFLAGS) /OUT:kmrandgen.exe $** Advapi32.lib
-
-kmfilegen.exe: libkumu.lib kmfilegen.obj
- $(LINK) $(LINKFLAGS) /OUT:kmfilegen.exe $** Advapi32.lib
-
-klvwalk.exe: libasdcp.lib klvwalk.obj
- $(LINK) $(LINKFLAGS) /OUT:klvwalk.exe $** Advapi32.lib
-
-asdcp-test.exe: libasdcp.lib asdcp-test.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-test.exe $** Advapi32.lib
-
-asdcp-wrap.exe: libasdcp.lib asdcp-wrap.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-wrap.exe $** Advapi32.lib
-
-asdcp-unwrap.exe: libasdcp.lib asdcp-unwrap.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-unwrap.exe $** Advapi32.lib
-
-asdcp-info.exe: libasdcp.lib asdcp-info.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-info.exe $** Advapi32.lib
-
-asdcp-util.exe: libasdcp.lib asdcp-util.obj
- $(LINK) $(LINKFLAGS) /OUT:asdcp-util.exe $** Advapi32.lib
-
-j2c-test.exe: libasdcp.lib j2c-test.obj
- $(LINK) $(LINKFLAGS) /OUT:j2c-test.exe $** Advapi32.lib
-
-
-# END Makefile
diff --git a/asdcplib/win32/README.txt b/asdcplib/win32/README.txt deleted file mode 100755 index ca3d9fd..0000000 --- a/asdcplib/win32/README.txt +++ /dev/null @@ -1,61 +0,0 @@ -I. INTRODUCTION
-===============
-
-Hello, and welcome to the Windows build instructions for asdcplib.
-
-
-II. DEPENDENCIES
-================
-
-First, you'll need Microsoft's Visual Studio 2005 or later. A heavyweight edition isn't needed;
-the freely downloadable Express edition works fine.
-
-Next, you'll need an OpenSSL distribution. The absolute, bare minimum needed is 0.9.7. However,
-if this will be used in conjunction with CineCert's other software, the later 0.9.8b
-is needed. That said, the latest revision of OpenSSL as of this writing (0.9.8j) works great.
-Extract and build in the directory of your choice.
-
-For optional XML parsing support, you'll need to use Xerces-C++ 2.7 or 3.x, or Expat 2.0.1
-(supported in previous versions of asdcplib). If you'll be using this software in conjuction with
-CineCert's other software, the use of Xerces-C++ is required. As with OpenSSL above, if you
-need/desire XML parsing, extract the source package and build in a directory of your choice.
-
-Header files and libraries from the OpenSSL and XML packages must be available to the compiler
-and linker. You may need to modify the makefile to make include files (/I...) and library files
-(/LIBPATH...) available.
-
-
-III. BUILDING
-=============
-
-There's a build option that changes the behavior of UUID generation. If ENABLE_RANDOM_UUID is
-set at build, then mixed-case UUID generation will be enabled if (and only if) the environment
-variable KM_USE_RANDOM_UUID is set during runtime.
-
-Open a command prompt in which the VS build tools are available on the command line (e.g., the
-"Visual Studio command prompt"). The nmake invocation follows this form:
-C:\>nmake WITH_OPENSSL=<OpenSSL directory> [WITH_XERCES=<Xerces directory>|
- WITH_XML_PARSER=<Expat directory>] [ENABLE_RANDOM_UUID=1] /f Makefile.mak
-
-On our Windows development machine, the invocation with XML parsing by Xerces-C++ is as such:
-C:\Program Files\asdcplib\win32>nmake WITH_OPENSSL="c:\Program Files\openssl-0.9.8j"
- WITH_XERCES="C:\Program Files\xerces-c_2_8_0-x86-windows-vc_8_0" /f Makefile.mak
-
-With XML parsing by Expat and random UUID generation enabled:
-C:\Program Files\asdcplib\win32>nmake WITH_OPENSSL="c:\Program Files\openssl-0.9.8j"
- WITH_XML_PARSER="C:\Program Files\Expat 2.0.1" ENABLE_RANDOM_UUID=1 /f Makefile.mak
-
-Without XML parsing:
-C:\Program Files\asdcplib\win32>nmake WITH_OPENSSL="c:\Program Files\openssl-0.9.8j"
- /f Makefile.mak
-
-Want a 64-bit build? Change the following line in Makefile.mak:
- LINKFLAGS1 = /NOLOGO /SUBSYSTEM:console /MACHINE:I386 /LIBPATH:. /DEBUG
-to
- LINKFLAGS1 = /NOLOGO /SUBSYSTEM:console /MACHINE:X64 /LIBPATH:. /DEBUG
-
-
-IV. CONCLUSION
-==============
-
-For answers to questions, please send a message to <asdcplib@cinecert.com>.
diff --git a/asdcplib/wscript b/asdcplib/wscript deleted file mode 100644 index 7d669b7..0000000 --- a/asdcplib/wscript +++ /dev/null @@ -1,5 +0,0 @@ -def configure(conf): - conf.recurse('src') - -def build(bld): - bld.recurse('src') @@ -1,7 +1,7 @@ import os def dependencies(target): - return (('libdcp', 'e33e3b8'),) + return (('libdcp', 'e33e3b8'), ('asdcplib-cth', 'carl')) def build(target, options): cmd = './waf configure --prefix=%s' % target.directory diff --git a/src/wscript b/src/wscript index ae53ae6..e881a78 100644 --- a/src/wscript +++ b/src/wscript @@ -8,7 +8,7 @@ def build(bld): obj.name = 'libsub%s' % bld.env.API_VERSION obj.target = 'sub%s' % bld.env.API_VERSION - obj.uselib = 'CXML DCP BOOST_FILESYSTEM BOOST_LOCALE BOOST_REGEX' + obj.uselib = 'CXML DCP BOOST_FILESYSTEM BOOST_LOCALE BOOST_REGEX ASDCPLIB_CTH' obj.use = 'libkumu-libsub%s libasdcp-libsub%s' % (bld.env.API_VERSION, bld.env.API_VERSION) obj.export_includes = ['.'] obj.source = """ @@ -35,8 +35,12 @@ def configure(conf): conf.env.LIB_CXML = ['glibmm-2.4', 'glib-2.0', 'pcre', 'sigc-2.0', 'rt', 'xml++-2.6', 'xml2', 'pthread', 'lzma', 'dl', 'z'] conf.env.STLIB_CXML = ['cxml'] conf.check_cfg(package='libcxml', atleast_version='0.14.0', args='--cflags', uselib_store='CXML', mandatory=True) + conf.env.HAVE_ASDCPLIB_CTH = 1 + conf.env.STATIC_ASDCPLIB_CTH = ['asdcplib-cth', 'kumu-cth'] + conf.check_cfg(package='libasdcp-cth', atleast_version='2.5.11-cth1', args='--cflags', uselib_store='ASDCPLIB_CTH', mandatory=True) else: conf.check_cfg(package='libcxml', atleast_version='0.14.0', args='--cflags --libs', uselib_store='CXML', mandatory=True) + conf.check_cfg(package='libasdcp-cth', atleast_version='2.5.11-cth1', args='--cflags --libs', uselib_store='ASDCPLIB_CTH', mandatory=True) boost_lib_suffix = '' if conf.env.TARGET_WINDOWS: @@ -83,7 +87,6 @@ def configure(conf): if not conf.env.DISABLE_TESTS: conf.recurse('test') - conf.recurse('asdcplib') def build(bld): create_version_cc(bld, VERSION) @@ -96,14 +99,13 @@ def build(bld): bld(source='libsub%s.pc.in' % bld.env.API_VERSION, version=VERSION, includedir='%s/include/libsub%s' % (bld.env.PREFIX, bld.env.API_VERSION), - libs="-L${libdir} -lsub%s -lasdcp-libsub%s -lkumu-libsub%s -lboost_system%s" % (bld.env.API_VERSION, bld.env.API_VERSION, bld.env.API_VERSION, boost_lib_suffix), + libs="-L${libdir} -lsub%s -lboost_system%s" % (bld.env.API_VERSION, boost_lib_suffix), install_path='${LIBDIR}/pkgconfig') bld.recurse('src') if not bld.env.DISABLE_TESTS: bld.recurse('test') bld.recurse('tools') - bld.recurse('asdcplib') bld.add_post_fun(post) |
