lcmaps-1.6.6/0000755001726200004540000000000012471136742010020 500000000000000lcmaps-1.6.6/install-sh0000744001726200004540000003325512471136671011753 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # 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-writable 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: lcmaps-1.6.6/INSTALL0000644001726200004540000000605512471136645011001 00000000000000LCMAPS - by Oscar Koeroo - 11 April 2011 ======================================== Building: --------- If you start from SVN, you'll like need to start to run autotools: ./bootstrap If you start from a source tarball, then you can start using: ./configure Run "./configure --help" to override the pkg-config provided search path for Globus libraries and header files. Run "make" Installing: ----------- Run "make install" or Run "make DESTDIR= install" Dependencies: ------------- - vomsapi 1.6 or higher - Globus 2.x through Globus 5.x. Older version of Globus are known to work. - OpenSSL 0.9.7 through 1.0 Custom configure options: ------------------------- The LCMAPS ./configure script is trying a few methods on finding the depending libraries on the system, including pkg-config. To be able to work with non-system distribution provided installation or personal compiles explicitly we provide several ./configure options to work with: --enable-headers This switch will only build and install or distribute the header files to LCMAPS. The header files will contain the required type definitions for both the front-end/application interface as also the plugin interface. --enable-gsi-mode This option is \emph{on} by default and will build LCMAPS against the GSI interface libraries and OpenSSL. Switch this option to \emph{no} to create the \emph{lcmaps-without-gsi} flavor of LCMAPS. --enable-osg This option is \emph{off} by default. This option is used in the Open Science Grid build-flavor and will explicitly switch off the VOMS Attribute Certificate verification in the VOMS-api. This is to overload a default failure condition when the VOMS api could not verify the VOMS credentials. Note: Only enable this option if your infrastructure's security does not depend on the VOMS AC verification at all service nodes. --with-globus-prefix=PFX Allows you to select an alternative location to find the Globus headers and libraries needed to build LCMAPS. --with-globus-libdir=DIR Allows you to select an alternative directory for the Globus libraries. The default behaviour is to use the \$PFX setting of the previous option and add /lib, e.g. \$PFX/lib or \$PFX/lib64 --with-globus-thr-flavor=FLAVOR Sets the threaded flavor of Globus. This is not needed in Globus 5 (and up) installation. --with-globus-nothr-flavor=FLAVOR Sets the non-threaded flavor of Globus. This is not needed in Globus 5 (and up) installation. --with-voms-prefix=PFX Sets the directory where LCMAPS should look for the VOMS api libraries. The default is in /usr --with-voms-includes=DIR Override to the default \$VOMS\_PFX/include directory to look for the required VOMS header files. --with-voms-libdir=DIR Override to the default \$VOMS\_PFX/lib or \$VOMS\_PFX/lib64 directories to look for the required VOMS libraries. lcmaps-1.6.6/Makefile.in0000644001726200004540000007623712471136671012025 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # Version info: $Id: Makefile.am 16922 2013-02-27 13:09:12Z msalle $ # Release: $Name: not supported by cvs2svn $ # # Revision history: # $Log: not supported by cvs2svn $ # Revision 1.15 2010/08/05 21:04:16 okoeroo # Restored the configure.ac and Makefile.am to a working state. The --with-headers-only configure option is not functional in this check-in. # # Added the optional define (disabled by default) DEPRECATED_VOMS_VERSION_CHECK. The define will be removed eventually including the code it encapsulates. # When enabled LCMAPS will try to call the removed get*VersionNumber() functions from the vomsapi. This is not the case as there is a name clash with the same function names exposed by the LCAS framework. # # The version check was used to determine if the VOMS api version was higher then 1.7.0 at run-time, and if true LCMAPS would also extract the VOMS Generic Attributes from the VOMS ACs. As we've progressed well passed the 1.7.0 version of the VOMS api, the deprication of the function in the VOMS api and the fact that in its absence the LCAS version of the function could have screwed up with this check in random cases, this code is now made depricated. # # Revision 1.14 2006/09/21 14:11:51 okoeroo # *** Don't use this version in Tagging *** # # # For OSG: # # Searching the environment for the "LCMAPS_VOMS_EXTRACT" and the "disabled" value this will not kill the VOMS parsing all together (or actually bypassing the routines). # Instead it will gently extract all the VOMS Attributes and set the VOMS_SetVerificationType(VERIFY_NONE, vd, &errNo) to not verify the credentials. # # # Thus offloading the trust in the credentials to be checked elsewhere in a database that has extracted a VOMS Database in great detail (The GUMS system) giving the mapping controle to a site operator in a totally different way as we do in LCMAPS. # # Revision 1.13 2004/10/13 16:37:57 msteenba # Hopefully added all license lines in lcmaps sources # # Revision 1.12 2004/10/08 16:33:19 msteenba # Version 1.0 --> 1.1 # Moved the globus_gss_assist_gridmap() legacy interface to lcmaps-interface # Cleaned up (interface) code # Moved the (plugin) headers from lcmaps-interface to lcmaps # # Revision 1.11 2004/09/17 15:14:39 msteenba # Added LICENSE files, READMEs etc. to the package # # Revision 1.10 2004/09/14 14:32:11 msteenba # added project directory # added LICENSE, configure.ac, bootstrap files # moved example plugin # cleaned up Makefile.am files # # # VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) AUTHORS \ ChangeLog INSTALL NEWS README config.guess config.sub \ install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.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_HEADER = $(top_builddir)/src/lcmaps_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = src examples doc interface etc 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__post_remove_distdir = $(am__remove_distdir) 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 DIST_TARGETS = dist-gzip 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@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ ACLOCAL_AMFLAGS = -I project @ENABLE_HEADERS_FALSE@SUBDIRS = src examples doc interface etc @ENABLE_HEADERS_TRUE@SUBDIRS = interface doc EXTRA_DIST = \ bootstrap \ BUGS \ Doxyfile 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. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ 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" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 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; \ $(am__define_uniq_tagged_files); \ 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-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ 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" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files 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 \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ 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__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_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.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 u+w $(distdir) mkdir $(distdir)/_build $(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__post_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: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip 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-am uninstall uninstall-am # AM_CFLAGS += "-D osggums"; stage: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target="install"; \ prefix_arg="prefix=$(WORKDIR)/../../stage"; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target $$prefix_arg in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target $$prefix_arg) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" $$prefix_arg || exit 1; \ fi; test -z "$$fail" distsrc: dist mv $(distdir).tar.gz $(DISTBIN)/$(distdir)_src.tar.gz distbin: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target="install"; \ tmpdistbin="$(WORKDIR)/dist_bin"; \ prefix_arg="prefix=$$tmpdistbin"; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target $$prefix_arg in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target $$prefix_arg) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" $$prefix_arg || exit 1; \ fi; test -z "$$fail"; \ pushd $$tmpdistbin; \ $(AMTAR) -zcf $(DISTBIN)/$(distdir)_bin.tar.gz .; \ popd; \ rm -rf $$tmpdistbin doc: Doxyfile @if [ ! -d doc/autogen ]; then \ mkdir -p doc/apidoc; \ fi; doxygen Doxyfile # 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: lcmaps-1.6.6/LICENSE0000644001726200004540000002447312471136645010761 00000000000000 Copyright (c) Members of the EMI Collaboration. 2010. See http://www.eu-emi.eu/about/Partners/ for details on the copyright holders. EMI (“European Middleware Initiative”) is a project partially funded by the European Commission. For more information on the project, its partners and contributors please see http://www.eu-emi.eu. Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS lcmaps-1.6.6/config.guess0000744001726200004540000012355012471136671012265 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-03-23' # 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 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception 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. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # 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 # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 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 case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # 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 ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_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 /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[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 #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -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 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 ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *: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-${LIBC}`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/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 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="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${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-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 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-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 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' /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 echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-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 eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then 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 case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi 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 ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lcmaps-1.6.6/examples/0000755001726200004540000000000012471136741011635 500000000000000lcmaps-1.6.6/examples/lcmaps_plugin_example.c0000644001726200004540000002450112471136645016276 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \page lcmaps_plugin_example.mod example plugin \section examplesection1 SYNOPSIS \b lcmaps_plugin_example.mod [options ...] This example plugin shows how the plugin interface can be implemented. Currently no options available. */ /*! \file lcmaps_plugin_example.c \brief Interface to the LCMAPS plugins \author Martijn Steenbakkers for the EU DataGrid. This file contains a reference implementation of the LCMAPS plugin interface. */ /*! \defgroup LcmapsPluginInterface The interface to be implemented by LCMAPS plugins This is the interface that LCMAPS the plugin have to implement. */ /*@{*/ /***************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" #ifdef LCMAPS_GSI_MODE # include #endif #include #include "lcmaps_modules.h" #include "lcmaps_arguments.h" #include "lcmaps_plugin_prototypes.h" /****************************************************************************** Definitions ******************************************************************************/ /****************************************************************************** Module specific prototypes ******************************************************************************/ /****************************************************************************** Define module specific variables ******************************************************************************/ /****************************************************************************** Function: plugin_introspect Description: return list of required arguments Parameters: Returns: LCMAPS_MOD_SUCCESS : succes LCMAPS_MOD_FAIL : failure ******************************************************************************/ /*! \fn plugin_introspect( int * argc, lcmaps_argument_t ** argv ) \brief Plugin asks for required arguments \param argc the number of arguments requested by this plugin \param argv the (empty) list of arguments requested by this plugin \retval LCMAPS_MOD_SUCCESS success \retval LCMAPS_MOD_FAIL failure (will result in a lcmaps failure) */ int plugin_introspect( int * argc, lcmaps_argument_t ** argv ) { static lcmaps_argument_t argList[] = { { "job_request" , "lcmaps_request_t" , 1, NULL}, #ifdef LCMAPS_GSI_MODE { "user_cred" , "gss_cred_id_t" , 0, NULL}, #endif { "user_dn" , "char *" , 0, NULL}, { "job_request" , "char *" , 0, NULL}, { "mapcounter" , "int" , 0, NULL}, { NULL , NULL , -1, NULL} }; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_introspect(): introspecting\n"); *argv = argList; *argc = lcmaps_cntArgs(argList); lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_introspect(): address first argument: %p\n",(void*)argList); return LCMAPS_MOD_SUCCESS; } /****************************************************************************** Function: plugin_initialize Description: Initialize plugin Parameters: argc, argv argv[0]: the name of the plugin Returns: LCMAPS_MOD_SUCCESS : succes LCMAPS_MOD_FAIL : failure LCMAPS_MOD_NOFILE : db file not found (will halt LCMAPS initialization) ******************************************************************************/ /*! \fn plugin_initialize( int argc, char ** argv ) \brief initialize the plugin. Everything that is needed to initialize the plugin should be put inside this function. Arguments as read from the LCMAPS database (argc, argv) are passed to the plugin. \param argc number of passed arguments. \param argv argument list. argv[0] contains the name of the plugin. \retval LCMAPS_MOD_SUCCESS successful initialization \retval LCMAPS_MOD_FAIL failure in the plugin initialization \retval LCMAPS_MOD_NOFILE private plugin database could not be found (same effect as LCMAPS_MOD_FAIL) */ int plugin_initialize( int argc, char ** argv ) { int i; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_initialize(): passed arguments:\n"); for (i=0; i < argc; i++) { lcmaps_log_debug(2,"lcmaps_plugin_example-plugin_initialize(): arg %d is %s\n", i,argv[i]); } return LCMAPS_MOD_SUCCESS; } /****************************************************************************** Function: plugin_run Description: Gather credentials for LCMAPS Parameters: argc: number of arguments argv: list of arguments Returns: LCMAPS_MOD_SUCCESS: authorization succeeded LCMAPS_MOD_FAIL : authorization failed ******************************************************************************/ /*! \fn plugin_run( int argc, lcmaps_argument_t * argv ) \brief Gather credentials for user making use of the ordered arguments Ask for credentials by passing the arguments (like JDL, globus DN, VOMS roles etc.) that were ordered earlier by the plugin_introspect() function \param argc number of arguments \param argv list of arguments \retval LCMAPS_MOD_SUCCESS authorization succeeded \retval LCMAPS_MOD_FAIL authorization failed */ int plugin_run( int argc, lcmaps_argument_t * argv ) { lcmaps_request_t * prequest=NULL; #ifdef LCMAPS_GSI_MODE gss_cred_id_t * pcred=NULL; gss_cred_id_t cred; #endif char ** pstring=NULL; int * pmapcounter=NULL; void * value=NULL; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run():\n"); /* * Try to get the ordered values: */ if ( ( value = lcmaps_getArgValue("mapcounter", "int", argc, argv) ) ) { pmapcounter = (int *) value; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): mapcounter: %d\n",*pmapcounter); } else lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): could not get value of mapcounter !\n"); if ( ( value = lcmaps_getArgValue("job_request", "char *", argc, argv) ) ) { pstring = (char **) value; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): job_request: %s\n",*pstring); } else lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): could not get value of job_request !\n"); if ( ( value = lcmaps_getArgValue("user_dn", "char *", argc, argv) ) ) { pstring = (char **) value; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): user_dn: %s\n",*pstring); } else lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): could not get value of user_dn !\n"); if ( ( value = lcmaps_getArgValue("job_request", "lcmaps_request_t", argc, argv) ) ) { prequest = (lcmaps_request_t *) value; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): job_request: %s\n",*prequest); } else lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): could not get value of job_request !\n"); #ifdef LCMAPS_GSI_MODE if ( ( value = lcmaps_getArgValue("user_cred", "gss_cred_id_t", argc, argv) ) ) { pcred = (gss_cred_id_t *) value; lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): address user_cred: %p\n",(void*)pcred); lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): value user_cred: %p\n",(void*)*pcred); cred=*pcred; if (cred) { lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): inside value user_cred: %d\n",*(int *)(cred)); } } else lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): could not get address of user_cred !\n"); #endif lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_run(): address first argument: %p\n",(void*)argv); /* succes */ return LCMAPS_MOD_SUCCESS; /* fail_example: return LCMAPS_MOD_FAIL;*/ } /****************************************************************************** Function: plugin_terminate Description: Terminate plugin Parameters: Returns: LCMAPS_MOD_SUCCESS : succes LCMAPS_MOD_FAIL : failure ******************************************************************************/ /*! \fn plugin_terminate() \brief Whatever is needed to terminate the plugin module goes in here. \retval LCMAPS_MOD_SUCCESS success \retval LCMAPS_MOD_FAIL failure (will result in an authorization failure) */ int plugin_terminate(void) { lcmaps_log_debug(1,"lcmaps_plugin_example-plugin_terminate(): terminating\n"); return LCMAPS_MOD_SUCCESS; } /*@}*/ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/examples/lcmaps_plugin_example.c,v $ $Date: 2014-07-07 21:28:25 +0200 (Mon, 07 Jul 2014) $ $Revision: 17839 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/examples/Makefile.in0000644001726200004540000005646012471136672013640 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17211 2013-12-06 13:26:28Z msalle $ # Define the targets to be built here VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = examples DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/lcmaps_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liblcmaps_plugin_example_la_LIBADD = am__liblcmaps_plugin_example_la_SOURCES_DIST = \ lcmaps_plugin_example.c am__objects_1 = lcmaps_plugin_example.lo @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_plugin_example_la_OBJECTS = \ @LCMAPS_GSI_MODE_TRUE@ $(am__objects_1) liblcmaps_plugin_example_la_OBJECTS = \ $(am_liblcmaps_plugin_example_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = liblcmaps_plugin_example_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(liblcmaps_plugin_example_la_LDFLAGS) \ $(LDFLAGS) -o $@ @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_plugin_example_la_rpath = liblcmaps_plugin_example_without_gsi_la_LIBADD = am__liblcmaps_plugin_example_without_gsi_la_SOURCES_DIST = \ lcmaps_plugin_example.c @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_plugin_example_without_gsi_la_OBJECTS = \ @LCMAPS_GSI_MODE_FALSE@ $(am__objects_1) liblcmaps_plugin_example_without_gsi_la_OBJECTS = \ $(am_liblcmaps_plugin_example_without_gsi_la_OBJECTS) liblcmaps_plugin_example_without_gsi_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_plugin_example_without_gsi_la_LDFLAGS) $(LDFLAGS) \ -o $@ @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_plugin_example_without_gsi_la_rpath = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(liblcmaps_plugin_example_la_SOURCES) \ $(liblcmaps_plugin_example_without_gsi_la_SOURCES) DIST_SOURCES = $(am__liblcmaps_plugin_example_la_SOURCES_DIST) \ $(am__liblcmaps_plugin_example_without_gsi_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ @LCMAPS_GSI_MODE_FALSE@AM_CPPFLAGS = \ @LCMAPS_GSI_MODE_FALSE@ -I$(top_srcdir)/interface \ @LCMAPS_GSI_MODE_FALSE@ $(ADD_THESE_DEFINES) @LCMAPS_GSI_MODE_TRUE@AM_CPPFLAGS = \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS) $(GLOBUS_GSSAPI_GSI_CFLAGS) \ @LCMAPS_GSI_MODE_TRUE@ -I$(top_srcdir)/interface \ @LCMAPS_GSI_MODE_TRUE@ $(ADD_THESE_DEFINES) PluginSources = \ lcmaps_plugin_example.c plugindir = $(libdir)/lcmaps #install-data-hook: # ( \ # cd $(DESTDIR)$(plugindir); \ # rm -f lcmaps_plugin_example.mod; \ # ln -s liblcmaps_plugin_example@SHREXT@ lcmaps_plugin_example.mod \ # ) #plugin_LTLIBRARIES = liblcmaps_plugin_example_without_gsi.la @LCMAPS_GSI_MODE_FALSE@noinst_LTLIBRARIES = liblcmaps_plugin_example_without_gsi.la #plugin_LTLIBRARIES = liblcmaps_plugin_example.la @LCMAPS_GSI_MODE_TRUE@noinst_LTLIBRARIES = liblcmaps_plugin_example.la @LCMAPS_GSI_MODE_TRUE@liblcmaps_plugin_example_la_SOURCES = $(PluginSources) @LCMAPS_GSI_MODE_TRUE@liblcmaps_plugin_example_la_LDFLAGS = -avoid-version -rpath $(plugindir) @LCMAPS_GSI_MODE_FALSE@liblcmaps_plugin_example_without_gsi_la_SOURCES = $(PluginSources) @LCMAPS_GSI_MODE_FALSE@liblcmaps_plugin_example_without_gsi_la_LDFLAGS = -avoid-version -rpath $(plugindir) all: all-am .SUFFIXES: .SUFFIXES: .c .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 examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign examples/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): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } liblcmaps_plugin_example.la: $(liblcmaps_plugin_example_la_OBJECTS) $(liblcmaps_plugin_example_la_DEPENDENCIES) $(EXTRA_liblcmaps_plugin_example_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_plugin_example_la_LINK) $(am_liblcmaps_plugin_example_la_rpath) $(liblcmaps_plugin_example_la_OBJECTS) $(liblcmaps_plugin_example_la_LIBADD) $(LIBS) liblcmaps_plugin_example_without_gsi.la: $(liblcmaps_plugin_example_without_gsi_la_OBJECTS) $(liblcmaps_plugin_example_without_gsi_la_DEPENDENCIES) $(EXTRA_liblcmaps_plugin_example_without_gsi_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_plugin_example_without_gsi_la_LINK) $(am_liblcmaps_plugin_example_without_gsi_la_rpath) $(liblcmaps_plugin_example_without_gsi_la_OBJECTS) $(liblcmaps_plugin_example_without_gsi_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_plugin_example.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ 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-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ 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" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ 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 $(LTLIBRARIES) 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 clean-noinstLTLIBRARIES \ 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-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 -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: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-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-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am #install-data-hook: # ( \ # cd $(DESTDIR)$(plugindir); \ # rm -f lcmaps_plugin_example_without_gsi.mod; \ # ln -s liblcmaps_plugin_example_without_gsi@SHREXT@ lcmaps_plugin_example_without_gsi.mod \ # ) # 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: lcmaps-1.6.6/examples/Makefile.am0000644001726200004540000000311212471136645013611 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17211 2013-12-06 13:26:28Z msalle $ # Define the targets to be built here if LCMAPS_GSI_MODE AM_CPPFLAGS = \ $(GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS) $(GLOBUS_GSSAPI_GSI_CFLAGS) \ -I$(top_srcdir)/interface \ $(ADD_THESE_DEFINES) else AM_CPPFLAGS = \ -I$(top_srcdir)/interface \ $(ADD_THESE_DEFINES) endif PluginSources= \ lcmaps_plugin_example.c plugindir = $(libdir)/lcmaps if LCMAPS_GSI_MODE #plugin_LTLIBRARIES = liblcmaps_plugin_example.la noinst_LTLIBRARIES = liblcmaps_plugin_example.la liblcmaps_plugin_example_la_SOURCES = $(PluginSources) liblcmaps_plugin_example_la_LDFLAGS = -avoid-version -rpath $(plugindir) #install-data-hook: # ( \ # cd $(DESTDIR)$(plugindir); \ # rm -f lcmaps_plugin_example.mod; \ # ln -s liblcmaps_plugin_example@SHREXT@ lcmaps_plugin_example.mod \ # ) else #plugin_LTLIBRARIES = liblcmaps_plugin_example_without_gsi.la noinst_LTLIBRARIES = liblcmaps_plugin_example_without_gsi.la liblcmaps_plugin_example_without_gsi_la_SOURCES = $(PluginSources) liblcmaps_plugin_example_without_gsi_la_LDFLAGS = -avoid-version -rpath $(plugindir) #install-data-hook: # ( \ # cd $(DESTDIR)$(plugindir); \ # rm -f lcmaps_plugin_example_without_gsi.mod; \ # ln -s liblcmaps_plugin_example_without_gsi@SHREXT@ lcmaps_plugin_example_without_gsi.mod \ # ) endif lcmaps-1.6.6/config.sub0000744001726200004540000010576212471136671011735 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-07-28' # 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 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception 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. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # 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 ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 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-musl* | 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/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) 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*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -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 \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | 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 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | 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 \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | 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 | m68hcs12x | nvptx | 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 ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; 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-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | 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-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | 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-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | 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 ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-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 ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-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-* | ppc64p7-*) 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 | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) 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* | -plan9* \ | -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* \ | -bitrig* | -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* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -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* | -tirtos*) # 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 ;; -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 ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; 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: lcmaps-1.6.6/ylwrap0000744001726200004540000001553612471136672011216 00000000000000#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2012-12-21.17; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # Written by Tom Tromey . # # 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 . # 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. # This file is maintained in Automake, please report # bugs to or send patches to # . get_dirname () { case $1 in */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; # Otherwise, we want the empty string (not "."). esac } # guard FILE # ---------- # The CPP macro used to guard inclusion of FILE. guard() { printf '%s\n' "$1" \ | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ -e 's/__*/_/g' } # quote_for_sed [STRING] # ---------------------- # Return STRING (or stdin) quoted to be used as a sed pattern. quote_for_sed () { case $# in 0) cat;; 1) printf '%s\n' "$1";; esac \ | sed -e 's|[][\\.*]|\\&|g' } case "$1" in '') echo "$0: No files given. Try '$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input="$1" shift # We'll later need for a correct munging of "#line" directives. input_sub_rx=`get_dirname "$input" | quote_for_sed` case "$input" in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input="`pwd`/$input" ;; esac input_rx=`get_dirname "$input" | quote_for_sed` # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot=false if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot=true fi # The parser itself, the first file, is the destination of the .y.c # rule in the Makefile. parser=$1 # A sed program to s/FROM/TO/g for all the FROM/TO so that, for # instance, we rename #include "y.tab.h" into #include "parse.h" # during the conversion from y.tab.c to parse.c. sed_fix_filenames= # Also rename header guards, as Bison 2.7 for instance uses its header # guard in its implementation file. sed_fix_header_guards= while test "$#" -ne 0; do if test "$1" = "--"; then shift break fi from=$1 # Handle y_tab.c and y_tab.h output by DOS if $y_tab_nodot; then case $from in "y.tab.c") from=y_tab.c;; "y.tab.h") from=y_tab.h;; esac fi shift to=$1 shift sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" done # The program to run. prog="$1" shift # Make any relative path in $prog absolute. case "$prog" in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog="`pwd`/$prog" ;; esac # FIXME: add hostname here for parallel makes that run commands on # other machines. But that might take us over the 14-char limit. dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (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 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then for from in * do to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend '../'. case $to in [\\/]* | ?:[\\/]*) target=$to;; *) target="../$to";; esac # Do not overwrite unchanged header files to avoid useless # recompilations. Always update the parser itself: it is the # destination of the .y.c rule in the Makefile. Divert the # output of all other files to a temporary file so we can # compare them to existing versions. if test $from != $parser; then realtarget="$target" target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` fi # Munge "#line" or "#" directives. Don't let the resulting # debug information point at an absolute srcdir. Use the real # output file name, not yy.lex.c for instance. Adjust the # include guards too. sed -e "/^#/!b" \ -e "s|$input_rx|$input_sub_rx|" \ -e "$sed_fix_filenames" \ -e "$sed_fix_header_guards" \ "$from" >"$target" || ret=$? # Check whether files must be updated. if test "$from" != "$parser"; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$to is unchanged" rm -f "$target" else echo "updating $to" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the parser. This is a # blatant hack to let us support using "yacc -d". If -d is not # specified, don't fail when the header file is "missing". if test "$from" = "$parser"; then ret=1 fi fi done fi # Remove the directory. cd .. rm -rf $dirname exit $ret # 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: lcmaps-1.6.6/project/0000755001726200004540000000000012471136737011472 500000000000000lcmaps-1.6.6/project/ltoptions.m40000644001726200004540000003007312471136664013711 00000000000000# 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])]) lcmaps-1.6.6/project/libtool.m40000644001726200004540000105756412471136664013341 00000000000000# 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: # # ='`$ECHO "$" | $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 ." 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*|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" ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; 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 #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* 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.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # 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="$sys_lib_dlsearch_path_spec $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 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # 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 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 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 lcmaps-1.6.6/project/lt~obsolete.m40000644001726200004540000001375612471136665014242 00000000000000# 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])]) lcmaps-1.6.6/project/globus.m40000644001726200004540000003412012471136644013144 00000000000000dnl Licensed under the Apache License, Version 2.0 (the "License"); dnl you may not use this file except in compliance with the License. dnl You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl dnl Unless required by applicable law or agreed to in writing, software dnl distributed under the License is distributed on an "AS IS" BASIS, dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. dnl See the License for the specific language governing permissions and dnl limitations under the License. dnl dnl Authors: dnl 2010- dnl Oscar Koeroo dnl Mischa Sall\'e dnl NIKHEF Amsterdam, the Netherlands dnl Usage: dnl AC_GLOBUS(,[when found],[when not found]) dnl Variables for pkg-config: dnl GLOBUS__CFLAGS dnl GLOBUS__LIBS dnl Variables when direct: dnl GLOBUS__NOTHR_CFLAGS dnl GLOBUS__NOTHR_LIBS dnl NOTE: GLOBUS_CFLAGS etc are NOT set. AC_DEFUN([AC_GLOBUS], [ AC_REQUIRE([AC_GLOBUS_INIT]) AC_GLOBUS_$1([$2],[$3]) dnl note: need two if's to prevent empty then clause or empty else clause ifelse([$2],[],[],[ if test "[x$have_globus_]translit($1,[A-Z],[a-z])" = "xyes" ; then $2 fi ]) ifelse([$3],[],[],[ if test "[x$have_globus_]translit($1,[A-Z],[a-z])" != "xyes" ; then $3 fi ]) ]) dnl sets up the --with-globus-* flags and defines all macros AC_DEFUN([AC_GLOBUS_INIT], [ AC_ARG_WITH(globus_prefix, [AC_HELP_STRING([--with-globus-prefix=PFX], [prefix where GLOBUS is installed.])], [ac_globus_prefix=$with_globus_prefix], [ac_globus_prefix=${GLOBUS_LOCATION:-}]) AC_ARG_WITH(globus_libdir, [AC_HELP_STRING([--with-globus-libdir=DIR], [directory where GLOBUS libraries are installed (default either GLOBUS-PREFIX/lib or GLOBUS-PREFIX/lib64).])], [ac_globus_libdir=$with_globus_libdir], []) AC_ARG_WITH(globus_flavor, [AC_HELP_STRING([--with-globus-flavor], [globus flavor])], [], [with_globus_flavor=${GLOBUS_FLAVOR:-}]) AC_ARG_WITH(globus_thr_flavor, [AC_HELP_STRING([--with-globus-thr-flavor], [globus threaded flavor])], [], [with_globus_thr_flavor=${GLOBUS_FLAVOR:-}]) AC_ARG_WITH(globus_nothr_flavor, [AC_HELP_STRING([--with-globus-nothr-flavor], [globus non-threaded flavor])], [], [with_globus_nothr_flavor=${GLOBUS_FLAVOR:-}]) AC_ARG_WITH(globus_flavorincdir, [AC_HELP_STRING([--with-globus-flavorincdir], [flavored includedir, i.e. location of globus_config.h])], [ac_globus_flavorincdir=$with_globus_flavorincdir], [with_globus_flavorincdir=${GLOBUS_FLAVOR:-}]) AC_GLOBUS_DEFINE_MODULE([globus-core],[],[globus_config.h]) AC_GLOBUS_DEFINE_MODULE([globus-callout],[globus_callout],[globus_callout.h]) dnl Note: globus-version is part of globus-common-progs AC_GLOBUS_DEFINE_MODULE([globus-common],[globus_common],[globus_common.h]) AC_GLOBUS_DEFINE_MODULE([globus-ftp-client],[globus_ftp_client],[globus_ftp_client.h]) AC_GLOBUS_DEFINE_MODULE([globus-ftp-control],[globus_ftp_control],[globus_ftp_control.h]) AC_GLOBUS_DEFINE_MODULE([globus-gsi-callback],[globus_gsi_callback],[globus_gsi_callback.h]) AC_GLOBUS_DEFINE_MODULE([globus-gsi-cert-utils],[globus_gsi_cert_utils],[globus_gsi_cert_utils.h]) AC_GLOBUS_DEFINE_MODULE([globus-gsi-credential],[globus_gsi_credential],[globus_gsi_credential.h]) AC_GLOBUS_DEFINE_MODULE([globus-gsi-openssl-error],[globus_openssl_error],[globus_error_openssl.h]) AC_GLOBUS_DEFINE_MODULE([globus-gsi-proxy-core],[globus_gsi_proxy_core],[globus_gsi_proxy.h]) dnl Note next libname AC_GLOBUS_DEFINE_MODULE([globus-gsi-proxy-ssl],[globus_proxy_ssl],[proxypolicy.h]) AC_GLOBUS_DEFINE_MODULE([globus-gsi-sysconfig],[globus_gsi_sysconfig],[globus_gsi_system_config.h]) AC_GLOBUS_DEFINE_MODULE([globus-gssapi-gsi],[globus_gssapi_gsi],[gssapi.h]) AC_GLOBUS_DEFINE_MODULE([globus-gss-assist],[globus_gss_assist],[globus_gss_assist.h]) AC_GLOBUS_DEFINE_MODULE([globus-gass-transfer],[globus_gass_transfer],[globus_gass_transfer.h]) AC_GLOBUS_DEFINE_MODULE([globus-gass-server-ez],[globus_gass_server_ez],[globus_gass_server_ez.h]) AC_GLOBUS_DEFINE_MODULE([globus-gass-copy],[globus_gass_copy],[globus_gass_copy.h]) AC_GLOBUS_DEFINE_MODULE([globus-gass-cache],[globus_gass_cache],[globus_gass_cache.h]) AC_GLOBUS_DEFINE_MODULE([globus-gram-client],[globus_gram_client],[globus_gram_client.h]) AC_GLOBUS_DEFINE_MODULE([globus-gram-job-manager-callout-error],[globus_gram_job_manager_callout_error],[globus_gram_jobmanager_callout_error.h]) AC_GLOBUS_DEFINE_MODULE([globus-gram-protocol],[globus_gram_protocol],[globus_gram_protocol.h]) AC_GLOBUS_DEFINE_MODULE([globus-io],[globus_io],[globus_io.h]) dnl GLOBUS_OPENSSL AC_GLOBUS_DEFINE_MODULE([globus-openssl-module],[globus_openssl],[globus_openssl.h]) AC_GLOBUS_DEFINE_MODULE([globus-rls-client],[globus_rls_client],[globus_rls_client.h]) AC_GLOBUS_DEFINE_MODULE([globus-rsl],[globus_rsl],[globus_rsl.h]) AC_GLOBUS_DEFINE_MODULE([globus-rsl-assist],[globus_rsl_assist],[globus_rsl_assist.h]) AC_GLOBUS_DEFINE_MODULE([globus-xio],[globus_xio],[globus_xio.h]) AC_GLOBUS_DEFINE_MODULE([globus-xio-gsi-driver],[globus_xio_gsi_driver],[globus_xio_gsi.h]) AC_GLOBUS_DEFINE_MODULE([globus-xio-popen-driver],[globus_xio_popen_driver],[globus_xio_popen_driver.h]) AC_GLOBUS_DEFINE_MODULE([globus-xio-pipe-driver],[globus_xio_pipe_driver],[globus_xio_pipe_driver.h]) AC_GLOBUS_DEFINE_MODULE([globus-gridmap-callout-error],[globus_gridmap_callout_error],[globus_gridmap_callout_error.h]) dnl Have to do AC_GLOBUS_GSSAPI_ERROR by hand, since it depends on the dnl globus version AC_DEFUN([AC_GLOBUS_GSSAPI_ERROR], [ if test "x$ac_globus_major" = "x4" ; then AC_GLOBUS_CHECK_MODULE([globus-gssapi-error],[gssapi_error],[globus_error_gssapi.h]) else AC_GLOBUS_CHECK_MODULE([globus-gssapi-error],[globus_gssapi_error],[globus_error_gssapi.h]) fi ]) ]) dnl this macro defines macro AC_GLOBUS_ which calls dnl AC_GLOBUS_CHECK_MODULE(...) dnl $1 - package / module name for pkg-config (with -) dnl $2 - library name (with _) dnl $3 - header file name AC_DEFUN([AC_GLOBUS_DEFINE_MODULE], [ AC_DEFUN([AC_]translit($1,[a-z-],[A-Z_]), [ AC_GLOBUS_CHECK_GLOBUS AC_GLOBUS_CHECK_MODULE(]$1[,]$2[,]$3[) ]) ]) dnl This macro defines the general globus check, e.g. version etc. dnl It is only called once AC_DEFUN([AC_GLOBUS_CHECK_GLOBUS], [ AS_IF([test "x$globus_tested" = "x"], [ dnl Make sure we only check once, cannot do this with AC_DEFUN_ONCE or dnl AC_REQUIRE since that would also trigger these tests in dnl disable-gsi-mode globus_tested="yes" dnl Check (non)threaded flavor flags and export if set, bail out when both if test "x$with_globus_thr_flavor" != "x" ; then if test "x$with_globus_nothr_flavor" != "x" -o test "x$with_globus_flavor" != "x" ; then AC_MSG_FAILURE([Cannot build against multiple flavor types]) fi ac_globus_flavor=$with_globus_thr_flavor GLOBUS_THR_FLAVOR=$with_globus_thr_flavor elif test "x$with_globus_nothr_flavor" != "x" ; then if test "x$with_globus_flavor" != "x" ; then AC_MSG_FAILURE([Cannot build against multiple flavor types]) fi ac_globus_flavor=$with_globus_nothr_flavor GLOBUS_NOTHR_FLAVOR=$with_globus_nothr_flavor elif test "x$with_globus_flavor" != "x" ; then ac_globus_flavor=$with_globus_flavor GLOBUS_FLAVOR=$with_globus_flavor fi AC_SUBST(GLOBUS_FLAVOR) AC_SUBST(GLOBUS_THR_FLAVOR) AC_SUBST(GLOBUS_NOTHR_FLAVOR) dnl Prefer packaged globus in /usr to /opt/globus if test "x$ac_globus_prefix" = "x" -a -d /usr/include/globus ; then ac_globus_prefix=/usr fi if test "x$ac_globus_prefix" = "x" -a -d /opt/globus ; then ac_globus_prefix=/opt/globus fi dnl Note: globus-version is part of globus-common-progs AC_MSG_CHECKING([for globus version]) if test "x$ac_globus_prefix" = "x" ; then ac_globus_version_script=`which globus-version 2> /dev/null` else ac_globus_version_script=$ac_globus_prefix/bin/globus-version fi if test "x$ac_globus_version_script" != "x" ; then ac_globus_version=`grep 'GLOBUS_VERSION=' $ac_globus_version_script | head -1 | cut -d'"' -f2` fi AC_MSG_RESULT([$ac_globus_version]) if test "x$ac_globus_version" != "x" ; then ac_globus_major=`echo $ac_globus_version|cut -d. -f1` ac_globus_minor=`echo $ac_globus_version|cut -d. -f2` ac_globus_release=`echo $ac_globus_version|cut -d. -f3` fi if test "x$ac_globus_prefix" != "x" ; then dnl Determine libdir if not yet known if test "x$ac_globus_libdir" = "x" ; then dnl Check: arch==x86_64, lib64 exists as non-symlink dnl Also check it has libglobus* files, in case we have a dnl mixed /lib and /lib64 setup if test "x$host_cpu" = "xx86_64" \ -a -e $ac_globus_prefix/lib64 \ -a ! -h $ac_globus_prefix/lib64 ; then num=`find $ac_globus_prefix/lib64 -name "libglobus*"|wc -l` if test $num -gt 0 ; then ac_globus_libdir="$ac_globus_prefix/lib64" else ac_globus_libdir="$ac_globus_prefix/lib" fi else ac_globus_libdir="$ac_globus_prefix/lib" fi fi ac_globus_ldflags="-L$ac_globus_libdir" dnl From GT5.1 to GT5.2 headers are now in include/globus, also covers EPEL if test -d "$ac_globus_prefix/include/globus" ; then ac_globus_cflags=-I$ac_globus_prefix/include/globus dnl Figure out flavor include dir if test "x$ac_globus_flavorincdir" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_flavorincdir" elif test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_prefix/include/globus/$ac_globus_flavor" else dnl Need /globus/include for EPEL ac_globus_cflags="$ac_globus_cflags -I$ac_globus_libdir/globus/include" fi dnl These versions all use libraries without flavor ac_globus_libsuffix="" dnl Next ones either use flavor or don't use /globus/, such as GT6 else dnl These versions use libraries with flavor, set it here if test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags=-I$ac_globus_prefix/include/$ac_globus_flavor ac_globus_libsuffix=_$ac_globus_flavor dnl Next one is GT6 elif test -d "$ac_globus_prefix/include"; then ac_globus_cflags=-I$ac_globus_prefix/include dnl Assume system directory else dnl EPEL case falls under the 5.2 behaviour ac_globus_cflags="" ac_globus_libsuffix="" fi fi fi ],[]) ]) dnl this macro checks for module $1 either direct via GLOBUS_DIRECT_CHECK_MODULES dnl or via PKG_CHECK_MODULES dnl $1 - module name for pkg-config (with -) dnl $2 - library name (with _) dnl $3 - header file name AC_DEFUN([AC_GLOBUS_CHECK_MODULE], [ dnl Make sure autoconf (bootstrap) fails when macro is undefined ifdef([PKG_CHECK_MODULES], [], [m4_fatal([macro PKG_CHECK_MODULES is not defined])]) if test "x$with_globus_prefix" = "x" ; then PKG_CHECK_MODULES(translit($1,[a-z-],[A-Z_]), $1, have_globus_mod=yes, have_globus_mod=no) if test "$have_globus_mod" = "no" ; then GLOBUS_DIRECT_CHECK_MODULES(translit($1,[a-z-],[A-Z_]), $2, $3, have_globus_mod=yes, have_globus_mod=no) fi else GLOBUS_DIRECT_CHECK_MODULES(translit($1,[a-z-],[A-Z_]), $2, $3, have_globus_mod=yes, have_globus_mod=no) if test "$have_globus_mod" = "no" ; then PKG_CHECK_MODULES(translit($1,[a-z-],[A-Z_]), $1, have_globus_mod=yes, have_globus_mod=no) fi fi [have_]translit($1,[-],[_])=$have_globus_mod AC_SUBST(translit($1,[a-z-],[A-Z_])_CFLAGS) AC_SUBST(translit($1,[a-z-],[A-Z_])_LIBS) AC_SUBST(translit($1,[a-z-],[A-Z_])_THR_CFLAGS) AC_SUBST(translit($1,[a-z-],[A-Z_])_THR_LIBS) AC_SUBST(translit($1,[a-z-],[A-Z_])_NOTHR_CFLAGS) AC_SUBST(translit($1,[a-z-],[A-Z_])_NOTHR_LIBS) ]) dnl this macro checks for module $1 trying to link against $2 and including dnl header $3 dnl $1 - capitalized module name dnl $2 - lib/module name (with _) dnl $3 - header file name dnl $4 - have_globus_mod = yes dnl $5 - have_globus_mod = no AC_DEFUN([GLOBUS_DIRECT_CHECK_MODULES], [ ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "x$2" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-l$2$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" AC_MSG_CHECKING([for $1 at system default and $ac_globus_libdir]) AC_LINK_IFELSE([AC_LANG_SOURCE( [#include <$3> int main(void) {return 0;}] )], [have_mod=yes], [have_mod=no]) AC_MSG_RESULT([$have_mod]) if test "x$have_mod" = "xyes" ; then [$4] if test "x$with_globus_thr_flavor" != "x" ; then $1_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" $1_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then $1_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" $1_NOTHR_CFLAGS=$ac_try_CFLAGS else $1_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" $1_CFLAGS=$ac_try_CFLAGS fi else [$5] fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi ]) lcmaps-1.6.6/project/ltversion.m40000644001726200004540000000126212471136664013701 00000000000000# 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) ]) lcmaps-1.6.6/project/ltsugar.m40000644001726200004540000001042412471136664013335 00000000000000# 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 ]) lcmaps-1.6.6/project/voms.m40000644001726200004540000001550512471136644012643 00000000000000dnl Licensed under the Apache License, Version 2.0 (the "License"); dnl you may not use this file except in compliance with the License. dnl You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl dnl Unless required by applicable law or agreed to in writing, software dnl distributed under the License is distributed on an "AS IS" BASIS, dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. dnl See the License for the specific language governing permissions and dnl limitations under the License. dnl dnl Authors (based on EGEE gLite-security.m4): dnl 2010- dnl Oscar Koeroo dnl Mischa Sall\'e dnl NIKHEF Amsterdam, the Netherlands dnl dnl VOMS_CFLAGS dnl VOMS_LIBS dnl VOMS_CPP_LIBS dnl VOMS_STATIC_LIBS dnl VOMS_THR_LIBS dnl VOMS_NOTHR_LIBS dnl VOMS_CPP_THR_LIBS dnl VOMS_CPP_NOTHR_LIBS dnl VOMS_STATIC_THR_LIBS dnl VOMS_STATIC_NOTHR_LIBS dnl Optional arguments: dnl C - test only C api dnl CPP - test only CPP api dnl without arguments test both AC_DEFUN([AC_VOMS], [ dnl Make sure autoconf (bootstrap) fails when macro is undefined ifdef([PKG_CHECK_MODULES], [], [m4_fatal([macro PKG_CHECK_MODULES is not defined])]) dnl check for explicit --with... flag first AC_ARG_WITH([voms-prefix], [AS_HELP_STRING([--with-voms-prefix=PFX], [prefix where VOMS is installed (default is /usr)])], [ac_voms_prefix=$withval], [ac_voms_prefix=/usr]) AC_ARG_WITH([voms-includes], [AS_HELP_STRING([--with-voms-includes=DIR], [directory where VOMS headers are installed (default is VOMS-PREFIX/include)])], [ac_voms_includes=$withval], [ac_voms_includes=$ac_voms_prefix/include]) AC_ARG_WITH([voms-libdir], [AS_HELP_STRING([--with-voms-libdir=DIR], [directory where VOMS libraries are installed (default is VOMS-PREFIX/lib or VOMS_PREFIX/lib64)])], [ac_voms_libdir=$withval], []) dnl when no --with-voms-prefix is specified, try pkg_config have_voms_pkgconfig=no if test "x$with_voms_prefix" = "x" -a \ "x$with_voms_includes" = "x" -a \ "x$with_voms_libdir" = "x" ; then PKG_CHECK_MODULES([VOMS], [voms-2.0], [have_voms=yes], [PKG_CHECK_MODULES([VOMS], [voms-1.0], [have_voms=yes], [have_voms=no])] ) if test "$have_voms" = "no" ; then AC_VOMS_DIRECT(VOMS$1, have_voms=yes, have_voms=no) else dnl pkg-config ONLY sets VOMS_LIBS! VOMS_CPP_LIBS=${VOMS_LIBS} fi else AC_VOMS_DIRECT(VOMS$1, have_voms=yes, have_voms=no) if test "$have_voms" = "no" ; then PKG_CHECK_MODULES([VOMS], [voms-2.0], [have_voms=yes], [PKG_CHECK_MODULES([VOMS], [voms-1.0], [have_voms=yes], [have_voms=no])] ) dnl pkg-config ONLY sets VOMS_LIBS! if test "$have_voms" = "yes" ; then VOMS_CPP_LIBS=${VOMS_LIBS} fi fi fi VOMS_THR_LIBS=${VOMS_LIBS} VOMS_NOTHR_LIBS=${VOMS_LIBS} VOMS_CPP_THR_LIBS=${VOMS_CPP_LIBS} VOMS_CPP_NOTHR_LIBS=${VOMS_CPP_LIBS} AC_SUBST(VOMS_CFLAGS) AC_SUBST(VOMS_LIBS) AC_SUBST(VOMS_CPP_LIBS) AC_SUBST(VOMS_THR_LIBS) AC_SUBST(VOMS_NOTHR_LIBS) AC_SUBST(VOMS_CPP_THR_LIBS) AC_SUBST(VOMS_CPP_NOTHR_LIBS) ]) AC_DEFUN([AC_VOMS_DIRECT], [ AC_MSG_CHECKING([for VOMS installation at system default and ${ac_voms_prefix}]) ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS if test -n "$ac_voms_libdir" ; then VOMS_PATH_LIBS="-L$ac_voms_libdir" elif test -n "$ac_voms_prefix" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_voms_prefix/lib64 \ -a ! -h $ac_voms_prefix/lib64 ; then ac_voms_libdir="$ac_voms_prefix/lib64" else ac_voms_libdir="$ac_voms_prefix/lib" fi VOMS_PATH_LIBS="-L$ac_voms_libdir" else VOMS_PATH_LIBS="" fi if test "x$ac_voms_includes" != "x" ; then VOMS_CFLAGS="-I$ac_voms_includes" fi dnl Note: for new voms, we always need vomsapi VOMS_LIBS="$VOMS_PATH_LIBS -lvomsc -lvomsapi" VOMS_CPP_LIBS="$VOMS_PATH_LIBS -lvomsapi" VOMS_STATIC_LIBS="$ac_voms_libdir/libvomsc.a" if test -n "$GLOBUS_THR_FLAVOR" ; then VOMS_THR_LIBS="$VOMS_PATH_LIBS -lvomsc_$GLOBUS_THR_FLAVOR" VOMS_CPP_THR_LIBS="$VOMS_PATH_LIBS -lvomsapi_$GLOBUS_THR_FLAVOR" VOMS_STATIC_THR_LIBS="$ac_voms_libdir/libvomsc_$GLOBUS_THR_FLAVOR.a" else VOMS_THR_LIBS="" VOMS_CPP_THR_LIBS="" VOMS_STATIC_THR_LIBS="" fi if test -n "$GLOBUS_NOTHR_FLAVOR" ; then VOMS_NOTHR_LIBS="$VOMS_PATH_LIBS -lvomsc_$GLOBUS_NOTHR_FLAVOR" VOMS_CPP_NOTHR_LIBS="$VOMS_PATH_LIBS -lvomsapi_$GLOBUS_NOTHR_FLAVOR" VOMS_STATIC_NOTHR_LIBS="$ac_voms_libdir/libvomsc_$GLOBUS_NOTHR_FLAVOR.a" else VOMS_NOTHR_LIBS="" VOMS_CPP_NOTHR_LIBS="" VOMS_STATIC_NOTHR_LIBS="" fi dnl Test the voms C api unless $1 == VOMSCPP ifelse([$1],[VOMSCPP],[],[ AC_LANG_SAVE AC_LANG_C CFLAGS="$GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS $GLOBUS_GSSAPI_GSI_CFLAGS $VOMS_CFLAGS $CFLAGS" LIBS="$VOMS_LIBS $VOMS_THR_LIBS $VOMS_NOTHR_LIBS $LIBS" AC_TRY_COMPILE([ #include ], [ struct vomsdata *voms_info = VOMS_Init("/tmp", "/tmp") ], [ ac_cv_vomsc_valid=yes ], [ac_cv_vomsc_valid=no ]) CFLAGS=$ac_save_CFLAGS LIBS=$ac_save_LIBS AC_LANG_RESTORE AC_MSG_RESULT([$ac_cv_vomsc_valid for c api]) ]) dnl Test the voms C++ api unless $1 == VOMSC ifelse([$1],[VOMSC],[],[ AC_LANG_SAVE AC_LANG_CPLUSPLUS CPPFLAGS="$GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS $GLOBUS_GSSAPI_GSI_CFLAGS $VOMS_CFLAGS $CPPFLAGS" LIBS="$VOMS_CPP_LIBS $VOMS_CPP_THR_LIBS $VOMS_CPP_NOTHR_LIBS $LIBS" AC_TRY_COMPILE([ #include ], [ vomsdata vo_data("","") ], [ ac_cv_vomscpp_valid=yes ], [ac_cv_vomscpp_valid=no ]) CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS AC_LANG_RESTORE AC_MSG_RESULT([$ac_cv_vomscpp_valid for cpp api]) ]) dnl Only C api ? ifelse([$1],[VOMSC],[ if test "x$ac_cv_vomsc_valid" = "xyes" ; then ],[ dnl Only C++ api ? ifelse([$1],[VOMSCPP],[ if test "x$ac_cv_vomscpp_valid" = "xyes" ; then ],[ dnl Need both if test "x$ac_cv_vomsc_valid" = "xyes" -a "x$ac_cv_vomscpp_valid" = "xyes" ; then ]) ]) [$2] else VOMS_LIBS="" VOMS_THR_LIBS="" VOMS_NOTHR_LIBS="" VOMS_CPP_LIBS="" VOMS_CPP_THR_LIBS="" VOMS_CPP_NOTHR_LIBS="" VOMS_STATIC_LIBS="" VOMS_STATIC_THR_LIBS="" VOMS_STATIC_NOTHR_LIBS="" [$3] fi AC_SUBST(VOMS_CFLAGS) AC_SUBST(VOMS_LIBS) AC_SUBST(VOMS_CPP_LIBS) AC_SUBST(VOMS_STATIC_LIBS) AC_SUBST(VOMS_THR_LIBS) AC_SUBST(VOMS_NOTHR_LIBS) AC_SUBST(VOMS_CPP_THR_LIBS) AC_SUBST(VOMS_CPP_NOTHR_LIBS) AC_SUBST(VOMS_STATIC_THR_LIBS) AC_SUBST(VOMS_STATIC_NOTHR_LIBS) ]) lcmaps-1.6.6/Makefile.am0000644001726200004540000001177212471136645012006 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # Version info: $Id: Makefile.am 16922 2013-02-27 13:09:12Z msalle $ # Release: $Name: not supported by cvs2svn $ # # Revision history: # $Log: not supported by cvs2svn $ # Revision 1.15 2010/08/05 21:04:16 okoeroo # Restored the configure.ac and Makefile.am to a working state. The --with-headers-only configure option is not functional in this check-in. # # Added the optional define (disabled by default) DEPRECATED_VOMS_VERSION_CHECK. The define will be removed eventually including the code it encapsulates. # When enabled LCMAPS will try to call the removed get*VersionNumber() functions from the vomsapi. This is not the case as there is a name clash with the same function names exposed by the LCAS framework. # # The version check was used to determine if the VOMS api version was higher then 1.7.0 at run-time, and if true LCMAPS would also extract the VOMS Generic Attributes from the VOMS ACs. As we've progressed well passed the 1.7.0 version of the VOMS api, the deprication of the function in the VOMS api and the fact that in its absence the LCAS version of the function could have screwed up with this check in random cases, this code is now made depricated. # # Revision 1.14 2006/09/21 14:11:51 okoeroo # *** Don't use this version in Tagging *** # # # For OSG: # # Searching the environment for the "LCMAPS_VOMS_EXTRACT" and the "disabled" value this will not kill the VOMS parsing all together (or actually bypassing the routines). # Instead it will gently extract all the VOMS Attributes and set the VOMS_SetVerificationType(VERIFY_NONE, vd, &errNo) to not verify the credentials. # # # Thus offloading the trust in the credentials to be checked elsewhere in a database that has extracted a VOMS Database in great detail (The GUMS system) giving the mapping controle to a site operator in a totally different way as we do in LCMAPS. # # Revision 1.13 2004/10/13 16:37:57 msteenba # Hopefully added all license lines in lcmaps sources # # Revision 1.12 2004/10/08 16:33:19 msteenba # Version 1.0 --> 1.1 # Moved the globus_gss_assist_gridmap() legacy interface to lcmaps-interface # Cleaned up (interface) code # Moved the (plugin) headers from lcmaps-interface to lcmaps # # Revision 1.11 2004/09/17 15:14:39 msteenba # Added LICENSE files, READMEs etc. to the package # # Revision 1.10 2004/09/14 14:32:11 msteenba # added project directory # added LICENSE, configure.ac, bootstrap files # moved example plugin # cleaned up Makefile.am files # # # ## Default flags to run aclocal ACLOCAL_AMFLAGS = -I project ## Process this file with automake to produce Makefile.in ## Subdirectories list if ENABLE_HEADERS SUBDIRS = interface doc else SUBDIRS = src examples doc interface etc endif EXTRA_DIST = \ bootstrap \ BUGS \ Doxyfile # AM_CFLAGS += "-D osggums"; stage: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target="install"; \ prefix_arg="prefix=$(WORKDIR)/../../stage"; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target $$prefix_arg in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target $$prefix_arg) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" $$prefix_arg || exit 1; \ fi; test -z "$$fail" distsrc: dist mv $(distdir).tar.gz $(DISTBIN)/$(distdir)_src.tar.gz distbin: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target="install"; \ tmpdistbin="$(WORKDIR)/dist_bin"; \ prefix_arg="prefix=$$tmpdistbin"; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target $$prefix_arg in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target $$prefix_arg) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" $$prefix_arg || exit 1; \ fi; test -z "$$fail"; \ pushd $$tmpdistbin; \ $(AMTAR) -zcf $(DISTBIN)/$(distdir)_bin.tar.gz .; \ popd; \ rm -rf $$tmpdistbin doc: Doxyfile @if [ ! -d doc/autogen ]; then \ mkdir -p doc/apidoc; \ fi; doxygen Doxyfile lcmaps-1.6.6/missing0000744001726200004540000001533112471136671011341 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2012-06-26.16; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # 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 case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'automa4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # 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: lcmaps-1.6.6/ltmain.sh0000644001726200004540000105152212471136664011571 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 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 . # GNU libtool home page: . # General help using GNU software: . 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 </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 . $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 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 < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* 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 <= 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 </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 lcmaps-1.6.6/depcomp0000744001726200004540000005601612471136672011325 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 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 . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} 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" # Avoid interferences from the environment. gccflag= dashmflag= # 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 if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc 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 -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## 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). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - 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 -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # 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. ## 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. tr ' ' "$nl" < "$tmpdepfile" \ | 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 -ne 0; then 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 ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # 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 ;; 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. set_dir_from "$object" set_base_from "$object" 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 -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then 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. set_dir_from "$object" set_base_from "$object" 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 -ne 0; then 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,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_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. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool 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$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; 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 -ne 0; then 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/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash 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|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | 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" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | 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::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$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: lcmaps-1.6.6/README0000644001726200004540000000355312471136645010630 00000000000000Release notes for LCMAPS ------------------------ This package contains the Local Centre MAPping Service (LCMAPS), which was originally developed as part of the JRA3 software of gLite and the European Datagrid software of WP4. Later development continued in European projects EGEE (I, II, III) and currently EMI. This package is maintained by FOM/Nikhef. Where to get this package ------------------------- Source code releases can be found on http://software.nikhef.nl/security/lcmaps/. The latest versions of the source code are found in the Subversion repository at http://ndpfsvn.nikhef.nl/ro/mwsec/lcmaps. Binary releases for several platforms may be found in various places, please check with your local distribution provider. License and copyright --------------------- See the LICENSE file Software Requirements --------------------- - Globus libraries: common, gssapi-gsi, gss-assist, gsi-credential - VOMS - flex and bison - To build documentation: doxygen and latex2html Documentation ------------- Some documentation is included in the doc/ directory in the source package, but the most up-to-date information is found on-line at http://www.nikhef.nl/pub/projects/grid/gridwiki/index.php/Site_Access_Control Building/Installing ------------------- General installation instructions can be found in the INSTALL file in the top-level directory of the source package. Known bugs and workarounds: --------------------------- LCMAPS makes heavy use of OpenSSL functions and datastructures, so we inherit all bugs present therein. Planned evolution ----------------- - Interface modules to PAM Contact ------- Questions, bug reports and fan mail can be sent to the Nikhef Grid Security Middleware Support Team Sending us apple pie increases the chances of fixing your bugs. $Id: README 15300 2011-07-08 13:48:32Z dennisvd $ lcmaps-1.6.6/aclocal.m40000644001726200004540000013247512471136667011622 00000000000000# generated automatically by aclocal 1.13.4 -*- Autoconf -*- # Copyright (C) 1996-2013 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_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. 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'.])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # PKG_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable pkgconfigdir as the location where a module # should install pkg-config .pc files. By default the directory is # $libdir/pkgconfig, but the default can be changed by passing # DIRECTORY. The user can override through the --with-pkgconfigdir # parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_INSTALLDIR # PKG_NOARCH_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable noarch_pkgconfigdir as the location where a # module should install arch-independent pkg-config .pc files. By # default the directory is $datadir/pkgconfig, but the default can be # changed by passing DIRECTORY. The user can override through the # --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_NOARCH_INSTALLDIR # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------- # Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])# PKG_CHECK_VAR # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.13' 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.13.4], [], [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.13.4])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-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$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-2013 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. # 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", "OBJC", "OBJCXX", "UPC", or "GJC". # 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 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" 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 10 /bin/sh. echo '/* dummy */' > 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], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) 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-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf 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"` # 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'`; 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-2013 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 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.65])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], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) 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], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [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([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # 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])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro 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-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 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-2013 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. # 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])]) # Copyright (C) 1998-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_LEX # ----------- # Autoconf leaves LEX=: if lex or flex can't be found. Change that to a # "missing" invocation, for better error output. AC_DEFUN([AM_PROG_LEX], [AC_PREREQ([2.50])dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_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-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_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 is modern enough. # If it is, 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 --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_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-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file 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 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 if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done 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]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # 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-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_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}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([project/globus.m4]) m4_include([project/libtool.m4]) m4_include([project/ltoptions.m4]) m4_include([project/ltsugar.m4]) m4_include([project/ltversion.m4]) m4_include([project/lt~obsolete.m4]) m4_include([project/voms.m4]) lcmaps-1.6.6/README.NO_LDAP0000644001726200004540000000607512471136645011745 00000000000000In order to exploit the full possibilities of VOMS/LCMAPS the use of LDAP as a source of user account information is recommended. A site can do without by going through the following procedure: The new system can be made entirely compatible with the current poolaccount setup, but then one whould not be surprised that you get only reduced functionality. In effect, when a site * pre-allocates a set of poolaccounts for each and every VO, * pre-assigns the proper group to each (set of accounts), and * does not use very-fine-grained group-allocations within a VO for job execution separation they can get away without LDAP. For many sites, this will be OK. For example a sites supports the ATLAS, Alice and LHCb VO's, does not want to use LDAP, but does use VOMS. That sites can create three three groups and three sets of poolaccounts (say "lhcb001-lhcb050", etc.) and put each poolaccount into the proper group. Now, a grid-mapfile on a per-VO basis will look like "/VO=lhcb/GROUP=lhcb/*" .lhcb "/VO=atlas/GROUP=atlas/*" .atlas "/VO=alice/GROUP=alice/*" .alice and a groupmapfile: "/VO=lhcb/GROUP=lhcb/*" lhcb "/VO=atlas/GROUP=atlas/*" atlas "/VO=alice/GROUP=alice/*" alice Now, the acquired credentials will (as if by chance) map exactly on to the credentials already present in the user directory (be it files, or NIS), and so updating of those credentials is not needed. So that site in that config can do without the need for updating a central userDB (like LDAP). You can even do it a bit more fine-grained, adding an LHCb MC prod manager like this: "/VO=lhcb/GROUP=lhcb/mcprod .lhcbmc "/VO=lhcb/GROUP=lhcb/* .lhcb and a group-mapfile: "/VO=lhcb/GROUP=lhcb/mcprod prodmc "/VO=lhcb/GROUP=lhcb/* lhcb and assign (statically) in /etc/passwd: lhcbmb001:*:501:100:Blah:/home/lhcbmc001:/bin/bash lhcbmb002:*:502:100:Blah:/home/lhcbmc002:/bin/bash lhcbmb003:*:503:100:Blah:/home/lhcbmc003:/bin/bash lhcb001:*:601:100:Blah:/home/lhcb001:/bin/bash lhcb002:*:602:100:Blah:/home/lhcb002:/bin/bash and in /etc/group lhcb:*:100: prodmc:*:200:lhcbmc001,lhcbmc002,lhcbmc003 This will also do the job of ensuring that the mapping created for the fork job manager (in-process, using posix_enf) that is used for doing the "qsub" is the same as the one used on job execuation on a worker node. And of course, the obvious solution for those sites that want fine-grained authorization but do not want to use LDAP: buy a true MPP systems with all your processors seeing the same file systems and memory. Cray/SGI will be very happy ;-) lcmaps-1.6.6/NEWS0000644001726200004540000002715512471136645010453 00000000000000Version 1.6.6 ------------- Improvements: - Extend API with two new calls void lcmaps_set_voms_verification_time(time_t time, int flags) int lcmaps_get_voms_verification_time(time_t *time, int *flags) which provide setting the verification time for checking the AC. In case flags is set to 0, the time is UNIX time, in case it is 1 the time is relative to the notBefore time of the leaf proxy, in case it is 2 relative to the notAfter time of the leaf proxy. This call uses the VOMS_SetVerificationTime() call of the VOMS API. Bug fixes: - Few minor fixes including a memory leak. Version 1.6.5 ------------- Bug fixes: - https://bugzilla.nikhef.nl/show_bug.cgi?id=21 LCMAPS did not initialize the logs correctly in cases when it should open the log itself (in most scenarios it uses an externally opened logfile pointer). Improvements: - Extend API with two new functions: void lcmaps_set_voms_attributes_verification (unsigned int verify_flags) unsigned int lcmaps_get_voms_attributes_verification (void) which provide more fine-grained setting of the VOMS verification: verify_flags should be a combination of the flags as specified in voms_apic.h. The old functions still work and behave as follows: lcmaps_enable_voms_attributes_verification -> sets VERIFY_FULL lcmaps_disable_voms_attributes_verification -> sets VERIFY_NONE lcmaps_is_set_to_verify_voms_attributes -> returns whether all *known* flags are set. Version 1.6.4 ------------- Improvements: - General code cleanup. Version 1.6.3 ------------- Bug fixes: - Invalid memcpy and malloc when we concatenate two string. - Protect a number of mallocs against out-of-memory. - Provide prototype of yylex when needed. - Properly cleanup flex and bison memory - When compiling older lex output with std=c99 we could get a missing prototype for strdup leading to a segfault. Version 1.6.2 ------------- Bug fixes (for Fedora compliance): - Update pc files to use Requires.private and Libs.private instead of Requires and Libs - Only link library against its own dependencies. - Remove arch dependent path= from example DB file. - Fix segv due to a sprintf (last one) Improvements: - Provide header file lcmaps_plugin_prototypes.h with plugin prototypes. To be included by each plugin. - General code cleanup: compiler warnings, includes etc. Logging from too long entries is cleanly truncated. No logging of error to stderr. - Update example lcmaps.db.ex Version 1.6.1 ------------- - Improve testing on using the same plugin twice: * test that the actual library handle is different instead of the absolute pathname, this extends the error checking in case of symlinks or hardlinks to different names (which still don't work). * fix the error message, to print the two shortnames. Version 1.6.0 ------------- - Support input of a 'desired identity' for lcmaps_run_and_return_username() interface. LCMAPS will make this available to the plugins, which can use it to support grid-mapfile entries of the form "/DN" user1,user2 or "/FQAN" user1,user2 Typical use is for gsissh via the lcas-lcmaps-gt4-interface, version 0.2.7 or higher. - Revamped VOMS error messages because they are sometimes cryptic. They now also provide useful debugging hints for the admins. Version 1.5.7 ------------- Bug fixes: - When LCMAPS fails at initialization, yacc/flex related resources have to be freed, otherwise certain systems show a segfault. Version 1.5.6 ------------- Bug fixes: - running on Fedora Core 16 results in a 'undefined symbol: yywrap'. - few of the macros in the new interface are missing in the case of direct linking (i.e. not LCMAPS_USE_DLOPEN) Version 1.5.5 ------------- Bug fixes: - Out-of-source builds failed for NOGSI, i.e. ../configure --disable-gsi-mode resulted in a missing include file. Version 1.5.4 ------------- Bug fixes: - Unbalanced quotes triggered an 'out of memory' error instead of an 'unbalanced quotes'. Version 1.5.3 ------------- - Replace unprintable characters in logging strings with a '?' Bug fixes: - Fix a SEGV or ABRT in some interfaces due to incorrect storing of DN, which leads to freeing stack memory. Triggered in the lcmaps-without-gsi interface. - Fix numerous unsafe constructions in logging, also fixes a SEGV Version 1.5.2 ------------- Added a compile option in the Makefile.am to scope the externals of the library. This feature is mandatory for Debian. Version 1.5.1 ------------- - Log messages that are sent to Syslog with the priority equal to LOG_EMERG, LOG_ALERT or LOG_CRIT will be downplayed as LOG_ERR. Old LCMAPS plug-ins used a numerical range of 0-5 and this basically means that they are able to cast an error message of type LOG_EMERG, while universally the LOG_ERR is meant of even less significant then a LOG_ERR. A warning will be written at LOG_WARNING to upgrade your plug-ins. Version 1.5.0 ------------- - Changing all log messages to match the logging method used in Syslog and especially the log priority/levels. - Fixed a problem when the "poolindex" was requested. It triggered a segmentation fault in two of the LCMAPS interface: -- lcmaps_run_and_return_poolindex -- lcmaps_run_with_pem_and_return_account - Harmonized logging via the lcmaps_log(), lcmaps_log_debug(), lcmaps_log_time(), lcmaps_log_a_string() and lcmaps_log_a_string_debug() functions for both log file writing and syslog writing. - Changed #define name DEBUG_LEVEL to CONF_LCMAPS_DEBUG_LEVEL - Changed the default value for CONF_LCMAPS_DEBUG_LEVEL from 0 (LOG_ERR) to 4 (LOG_INFO). - Harmonized the log line writing cut-off feature of log message between Syslog logging and logging to a file. This is based on the build in default and the LCMAPS_DEBUG_LEVEL environment variable value. Message that are cut-off are not even offered to Syslog anymore which speeds up the LCMAPS execution when the Syslog demon is hammered with info. - The log line output is changed to show the environment value of LCMAPS_LOG_IDENT in each line. The LCMAPS_LOG_IDENT value is meant to be set by programs like gLExec to indicate that they are running LCMAPS. This is default in Syslog, but missing in logging to file. - Log lines that log to file are prepended by the Syslog priority name. This allows easy filtering when needed. - Harmonized the credential handling for all the external LCMAPS interfaces. The small functional differences between the different credential input differences are now gone. Interfaces used by gLExec (PEM based), GT4/5 GSI-Authz based, X.509 based and even string input handling are now equalized. This reenabled the verify-proxy plug-in to work from a GT4/GT5 service and enabled the Xrootd interface to work with more easier interfaces, and the PEM string interface from gLExec will now regain its full potential for VOMS handling. Example: {input credential} -> {stored to use by plugins} Globus gss_cred_id_t object in -> X.509 stuff(*) + VOMS structs + DN PEM string -> X.509 stuff + VOMS structs(**) + DN X.509 -> VOMS struct(**) + DN Other string based input -> string based input stored (*) is new. (**) differed in a detailed usage pattern. - When the VOMS verification was disabled, either at run-time or after the build-in default is changed, i.e. --enabled-osg, the VOMS Generic Attributes were not successfully extracted. This is now fixed and plug-ins can use them also when the VOMS AC verification is disabled. Version 1.4.34 -------------- Changes in the logging facility: - All syslog() messages are lowered to LOG_CRIT or lower (and can't go below LOG_DEBUG) - Various log functions were logging on a high priority, including the debug messages. This is to be lowered simulating the syslog() messages when writing to file. - Not being able to write to a file descriptor results now in a syslog() message on LOG_CRIT. This was on stderr. Version 1.4.31 -------------- Moved a lot more useless debugging output behind the LCMAPS_DEBUG option. Mostly because people who try to debug LCMAPS are not LCMAPS developers. Version 1.4.30 -------------- Add the LCMAPS_DEBUG #define to be used to build a developer debugging version of LCMAPS. The released version will not expose the amount of pedantic logging output, even in LCMAPS_DEBUG_LEVEL = 5. Version 1.4.27 -------------- LCMAPS framework: - fixed a memory cleanup problem when using VOMS Generic Attributes. - adds a SIGPIPE handler to print the caught signal, especially interesting when the VOMS api, SCAS-Client plugin or another plugin could trigger a SIGPIPE without handling it locally. The SIGPIPE handler will be set at the beginning of each run, and removed after each run, i.e. not in the initialization or terminate sequences. - Fixed signed and unsigned conflicts in parsing routines when fullfilling rules and policys and recursion issues. This problem was hard to exploit, but a bug nontheless (unless somebody went beyond 2^31 plugins and policies) - Fixed the poolindex interface to LCMAPS. A symbol would not have been resolved during run-time as it has been depricated last year. Only used by the Globus DAS/Workspace Service interfacing (to the best of our knowledge). - Fixed a problem in the logging facility during the initialization phase. The value was always overridden by the next call. I've removed the previous overridden call, which might call for bug Savannah bug #61772. - Found a more generic location for the printCredData function to log the credential data that has lead to a particular mapping decision mapping. - (almost) all public functions are now prefixed with with "lcmaps_" to avoid symbol clashes - Update for single lcmaps-interface for both lcmaps types. - use enable_gsi_mode directly instead of lcmaps_gsi_mode - Default paths in LCMAPS are set at build time. All hardcoded paths into /opt/glite or (in some places) /opt/edg are removed. - /etc/lcmaps/lcmaps.db will be the new default path to a lcmaps.db file. Use ${LCMAPS_DB_FILE} to override or the ./configure options. - Building lcmaps-without-gsi doesn't require Globus libraries during the build and linking of this LCMAPS flavor. - LCMAPS ./configure new option --with-voms-prefix instead of --with-glite-location, no glite.m4 necessary, it's done using --libdir and system defaults - API extentions: Function: int lcmaps_get_major_version (void); Function: int lcmaps_get_minor_version (void); Function: int lcmaps_get_patch_version (void); Function: lcmaps_disable_voms_attributes_verification Description: Disables the verification in the VOMS API Function: lcmaps_enable_voms_attributes_verification Description: Enables the verification in the VOMS API (default) Function: lcmaps_is_set_to_verify_voms_attributes Description: Will return the current setting to enable or disable the verification of the VOMS credentials by the VOMS API Function: lcmaps_run_with_stack_of_x509_and_return_account Description: LCMAPS runs receiving a certificate chain, containing at least an End-Entity Certificate. A list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. Generic to all components: - adjusted to be able to use EPEL, EMI and gLite packages and system native library installations - cleanup of unused files and support for distribution tarball. - provide pkg-config files - All LCMAPS public header files are all in ${includeDir}/lcmaps/*.h lcmaps-1.6.6/configure.ac0000644001726200004540000001757412471136645012246 00000000000000# # Copyright (c) 2004 on behalf of the EU EGEE Project: # The European Organization for Nuclear Research (CERN), # Istituto Nazionale di Fisica Nucleare (INFN), Italy # Datamat Spa, Italy # Centre National de la Recherche Scientifique (CNRS), France # CS Systeme d'Information (CSSI), France # Royal Institute of Technology, Center for Parallel Computers (KTH-PDC), Sweden # Universiteit van Amsterdam (UvA), Netherlands # University of Helsinki (UH.HIP), Finland # University of Bergen (UiB), Norway # Council for the Central Laboratory of the Research Councils (CCLRC), United Kingdom # # Common configure.ac file for the GLite WMS Common module # # Authors: Alberto Di Meglio # Version info: $Id: configure.ac 17727 2014-04-08 14:19:36Z msalle $ # Release: $Name: not supported by cvs2svn $ # # Revision history: See ChangeLog # Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) AC_INIT([lcmaps], [1.6.6]) AC_CONFIG_MACRO_DIR([project]) AM_INIT_AUTOMAKE([1.6.3 subdir-objects foreign]) AC_CONFIG_SRCDIR([src/lcmaps_config.h.in]) # Notices. AC_COPYRIGHT([Copyright (c) 2009 The EU EGEE Project See LICENCE file for details ]) AC_REVISION([$Revision: 17727 $]) #Environment. WORKDIR=`pwd` AC_SUBST(WORKDIR) DISTBIN=$WORKDIR/../../dist AC_SUBST(DISTBIN) # Checks for programs. AC_PROG_CC AC_PROG_CXX AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_LIBTOOL AC_PROG_INSTALL dnl =================== dnl Lex and Yacc checks dnl =================== AC_PROG_YACC dnl Need version for yyparse prototype yacc_version=$($YACC --version 2> /dev/null|head -1|sed 's/[[^0-9]]\+//') if test "x$yacc_version" != "x"; then yacc_major=$(echo $yacc_version|cut -d. -f1) yacc_minor=$(echo $yacc_version|cut -d. -f2) AC_MSG_NOTICE([yacc is "$YACC" version is $yacc_major.$yacc_minor]) else AC_MSG_NOTICE([yacc is "$YACC" version is unknown]) fi AM_PROG_LEX if test "$LEX"="flex"; then dnl Test whether flex has the -D option to set macros AM_CONDITIONAL([LEX_HAS_D],[$LEX -DTEST -V > /dev/null 2> /dev/null]) fi # Checks for libraries. # dlopen library AC_CHECK_LIB([dl], [dlopen], [ DL_LIBS=-ldl AC_SUBST([DL_LIBS]) ], [ AC_MSG_ERROR([cannot find libdl]) ]) # Checks for header files. AC_CHECK_HEADERS([dlfcn.h stdlib.h string.h syslog.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T # Checks for library functions. AC_CHECK_FUNCS([malloc realloc setenv strchr strcspn strdup strerror strpbrk strspn strtol getgrouplist]) # Building headers mode enable_build_headers_default=no AC_MSG_CHECKING([whether to enable building header files]) AC_ARG_ENABLE([headers], [AC_HELP_STRING([--enable-headers],[build headers])], [ AC_MSG_RESULT(yes) enable_build_headers="yes" ],[ AC_MSG_RESULT($enable_build_headers_default) enable_build_headers=$enable_build_headers_default ] ) # Building GLOBUS mode enable_gsi_mode_default=yes AC_ARG_ENABLE([gsi-mode], [AC_HELP_STRING([--enable-gsi-mode], [create lcmaps flavour that provides a GSI interface (default)])], [enable_gsi_mode=$enableval], [enable_gsi_mode=$enable_gsi_mode_default]) # When building headers only AM_CONDITIONAL([ENABLE_HEADERS], [test "x$enable_build_headers" = "xyes"]) AS_IF([test "x$enable_build_headers" = "xyes"], [ AC_MSG_NOTICE("building headers") LCMAPS_FLAVOUR="" LCMAPS_FLAVOUR_NAME="" AC_DEFINE(ENABLE_HEADERS, 1,[Building headers exclusively enabled]) ], [ # Find proper shared library extension eval SHREXT=$shrext_cmds AC_SUBST(SHREXT) # Configuration items AC_CONFIG_FILES([src/Makefile]) AC_CONFIG_FILES([examples/Makefile]) AC_CONFIG_FILES([etc/Makefile]) AC_DEFINE(ENABLE_HEADERS, 0,[Building headers exclusively disabled]) AS_IF([test "x$enable_gsi_mode" = "xyes"],[ LCMAPS_FLAVOUR="" LCMAPS_FLAVOUR_NAME="" AC_DEFINE(LCMAPS_GSI_MODE, 1, "If defined provide the GSI interface to LCMAPS") AC_MSG_RESULT([Creating GSI flavour of LCMAPS]) # not sure what canonical symbol we should check for here # NOTE: we should check for libcrypto, but presumably due to a clash # with globus linking explicitly against libcrypto leads to a segv... AC_CHECK_LIB([crypto], [X509_free], [ CRYPTO_LIBS=-lcrypto AC_SUBST([CRYPTO_LIBS]) ], [ AC_MSG_ERROR([cannot find libcrypto]) ]) # Check globus modules AC_GLOBUS([COMMON],[],AC_MSG_FAILURE(["no globus-common found"])) AC_GLOBUS([GSSAPI_GSI],[],AC_MSG_FAILURE(["no globus-gssapi-gsi found"])) AC_GLOBUS([GSS_ASSIST],[],AC_MSG_FAILURE(["no globus-gss-assist found"])) AC_GLOBUS([GSI_CREDENTIAL],[],AC_MSG_FAILURE(["no globus-gsi-credentials found"])) # Check voms location, only check for C API have_voms=no AC_VOMS([C]) AC_MSG_RESULT(["VOMS found $have_voms"]) if test "x$have_voms" = "xno" ; then AC_MSG_FAILURE(["no working voms found"]) fi AC_CONFIG_FILES([src/lcmaps.pc]) AC_CONFIG_FILES([src/lcmaps-gss-assist-gridmap.pc]) AC_CONFIG_FILES([src/lcmaps-return-poolindex.pc]) AC_CONFIG_FILES([src/lcmaps-return-account-from-pem.pc]) AC_CONFIG_FILES([src/lcmaps-verify-account-from-pem.pc]) ],[ LCMAPS_FLAVOUR="_without_gsi" LCMAPS_FLAVOUR_NAME="-without-gsi" PACKAGE="$PACKAGE-without-gsi" AC_MSG_RESULT([Setting package name to $PACKAGE]) AC_SUBST(PACKAGE) PACKAGE_TARNAME="$PACKAGE_TARNAME-without-gsi" AC_MSG_RESULT([setting package tarname $PACKAGE_TARNAME]) AC_SUBST(PACKAGE_TARNAME) AC_MSG_RESULT([Creating GSI-free flavour of LCMAPS]) AC_CONFIG_FILES([src/lcmaps-without-gsi.pc]) AC_CONFIG_FILES([src/lcmaps-gss-assist-gridmap-without-gsi.pc:src/lcmaps-gss-assist-gridmap.pc.in]) AC_CONFIG_FILES([src/lcmaps-return-poolindex-without-gsi.pc:src/lcmaps-return-poolindex.pc.in]) ]) ]) AM_CONDITIONAL(LCMAPS_GSI_MODE, test x$enable_gsi_mode = xyes) AC_SUBST(LCMAPS_FLAVOUR) AC_SUBST(LCMAPS_FLAVOUR_NAME) # Set OSG macros when needed AC_ARG_ENABLE([osg], [AC_HELP_STRING([--enable-osg], [Enables the Open Science Grid specific build option])], ADD_THESE_DEFINES="-D ALLOW_EMPTY_CREDENTIALS -D CONF_LCMAPS_DEBUG_LEVEL=4 -D GUMSOSG", ADD_THESE_DEFINES="-D ALLOW_EMPTY_CREDENTIALS -D CONF_LCMAPS_DEBUG_LEVEL=4") AC_SUBST(ADD_THESE_DEFINES) # Set default directories AC_SUBST([LCMAPS_ETC_HOME], [${sysconfdir}/lcmaps]) AC_SUBST([LCMAPS_LIB_HOME], [$libdir]) dnl allow the setting of a different path for the LCMAPS plug-ins dnl Makefiles should set the plugindir to $MODULEDIR. AC_ARG_WITH([lcmaps_moduledir], [AS_HELP_STRING([--with-lcmaps-moduledir=DIR], [Specify the default install location of the LCMAPS plug-ins, when relative: prefix with LIBDIR [default=LIBDIR/lcmaps]])], [AS_IF([test "x`echo $withval|cut -c1`" = "x/" ], [AC_SUBST([LCMAPS_MOD_HOME], [$withval])], dnl Absolute path [AC_SUBST([LCMAPS_MOD_HOME], [$LCMAPS_LIB_HOME/$withval])]) ], [AC_SUBST([LCMAPS_MOD_HOME], [$LCMAPS_LIB_HOME/lcmaps])] ) AC_MSG_RESULT([LCMAPS_MOD_HOME set to $LCMAPS_MOD_HOME]) LCMAPS_MAJOR_VERSION=`echo ${VERSION}|cut -d. -f1` LCMAPS_MINOR_VERSION=`echo ${VERSION}|cut -d. -f2` LCMAPS_PATCH_VERSION=`echo ${VERSION}|cut -d. -f3` AC_SUBST(LCMAPS_MAJOR_VERSION) AC_SUBST(LCMAPS_MINOR_VERSION) AC_SUBST(LCMAPS_PATCH_VERSION) # Configuration items AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([doc/Makefile]) AC_CONFIG_FILES([doc/evaluationmanager/Makefile]) AC_CONFIG_FILES([interface/Makefile]) AC_CONFIG_FILES([interface/lcmaps_version.h]) AC_CONFIG_FILES([interface/lcmaps-interface.pc]) AC_CONFIG_FILES([interface/lcmaps-globus-interface.pc]) AC_CONFIG_FILES([interface/lcmaps-openssl-interface.pc]) AC_CONFIG_FILES([interface/lcmaps-basic-interface.pc]) AC_CONFIG_HEADERS([src/lcmaps_config.h]) AC_OUTPUT lcmaps-1.6.6/AUTHORS0000644001726200004540000000104112471136645011006 00000000000000Authors: 2009- Oscar Koeroo Mischa Sall\'e David Groep NIKHEF Amsterdam, the Netherlands 2007-2009 Oscar Koeroo David Groep NIKHEF Amsterdam, the Netherlands 2003-2007 Martijn Steenbakkers Gerben Venekamp Oscar Koeroo David Groep NIKHEF Amsterdam, the Netherlands lcmaps-1.6.6/src/0000755001726200004540000000000012471136741010606 500000000000000lcmaps-1.6.6/src/lcmaps-return-account-from-pem.pc.in0000644001726200004540000000055612471136645017436 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: lcmaps-return-account-from-pem@LCMAPS_FLAVOUR_NAME@ Description: LCMAPS@LCMAPS_FLAVOUR_NAME@ return account from PEM string mode Requires: lcmaps@LCMAPS_FLAVOUR_NAME@ Version: @VERSION@ Libs: -L${libdir} -llcmaps_return_account_from_pem@LCMAPS_FLAVOUR@ Cflags: -I${includedir} lcmaps-1.6.6/src/lcmaps-gss-assist-gridmap.pc.in0000644001726200004540000000053312471136645016461 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: lcmaps-gss-assist-gridmap@LCMAPS_FLAVOUR_NAME@ Description: LCMAPS@LCMAPS_FLAVOUR_NAME@ GSSAPI assist gridmap mode Requires: lcmaps@LCMAPS_FLAVOUR_NAME@ Version: @VERSION@ Libs: -L${libdir} -llcmaps_gss_assist_gridmap@LCMAPS_FLAVOUR@ Cflags: -I${includedir} lcmaps-1.6.6/src/Makefile.in0000644001726200004540000017073012471136672012606 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17471 2014-02-21 10:28:50Z msalle $ # Define the targets to be built here #EXTRACOMPILEFLAGS = \ # -g -Wall \ # -O -Wuninitialized \ # -Wbad-function-cast -Wcast-align \ # -Wcast-qual -Wchar-subscripts -Winline \ # -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ # -Wredundant-decls -Wshadow \ # -Wpointer-arith -Wno-long-long # -pedantic # -Wredundant-decls -Wshadow -Wstrict-prototypes VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/lcmaps_config.h.in $(srcdir)/lcmaps.pc.in \ $(srcdir)/lcmaps-gss-assist-gridmap.pc.in \ $(srcdir)/lcmaps-return-poolindex.pc.in \ $(srcdir)/lcmaps-return-account-from-pem.pc.in \ $(srcdir)/lcmaps-verify-account-from-pem.pc.in \ $(srcdir)/lcmaps-without-gsi.pc.in \ evaluationmanager/pdl_yacc.h evaluationmanager/pdl_yacc.c \ evaluationmanager/pdl_lex.c $(top_srcdir)/depcomp \ $(top_srcdir)/ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = lcmaps_config.h CONFIG_CLEAN_FILES = lcmaps.pc lcmaps-gss-assist-gridmap.pc \ lcmaps-return-poolindex.pc lcmaps-return-account-from-pem.pc \ lcmaps-verify-account-from-pem.pc lcmaps-without-gsi.pc \ lcmaps-gss-assist-gridmap-without-gsi.pc \ lcmaps-return-poolindex-without-gsi.pc 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)$(pkgconfigdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = @LCMAPS_GSI_MODE_TRUE@liblcmaps_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) am__liblcmaps_la_SOURCES_DIST = $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_types.h \ $(interfacedir)/lcmaps_cred_data.h \ $(interfacedir)/lcmaps_vo_data.h $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_arguments.h \ $(interfacedir)/lcmaps_utils.h \ $(interfacedir)/lcmaps_account.h \ $(interfacedir)/lcmaps_basic.h $(interfacedir)/_lcmaps.h \ lcmaps.c lcmaps_account.c \ grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h \ grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h \ grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h \ grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c \ grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c \ grid_credential_handling/x509_handling/_lcmaps_x509_utils.h \ grid_credential_handling/x509_handling/lcmaps_x509_utils.c \ grid_credential_handling/lcmaps_runvars.c \ grid_credential_handling/lcmaps_credential.c \ grid_credential_handling/_lcmaps_runvars.h \ grid_credential_handling/_lcmaps_credential.h \ pluginmanager/lcmaps_vo_data.c \ pluginmanager/lcmaps_cred_data.c \ pluginmanager/lcmaps_arguments.c \ pluginmanager/lcmaps_db_read.c pluginmanager/lcmaps_utils.c \ pluginmanager/lcmaps_log.c \ pluginmanager/lcmaps_pluginmanager.c \ pluginmanager/_lcmaps_cred_data.h \ pluginmanager/_lcmaps_pluginmanager.h \ pluginmanager/_lcmaps_db_read.h pluginmanager/_lcmaps_utils.h \ pluginmanager/_lcmaps_log.h evaluationmanager/pdl_yacc.h \ evaluationmanager/pdl_yacc.y evaluationmanager/pdl_lex.l \ evaluationmanager/pdl_main.c evaluationmanager/pdl_variable.c \ evaluationmanager/pdl_policy.c evaluationmanager/pdl_rule.c \ evaluationmanager/evaluationmanager.c \ evaluationmanager/evaluationmanager.h evaluationmanager/pdl.h \ evaluationmanager/pdl_policy.h evaluationmanager/pdl_rule.h \ evaluationmanager/pdl_variable.h am__objects_1 = am__dirstamp = $(am__leading_dot)dirstamp am__objects_2 = \ grid_credential_handling/gsi_handling/lcmaps_gsi_utils.lo \ grid_credential_handling/gsi_handling/lcmaps_voms_attributes.lo am__objects_3 = \ grid_credential_handling/x509_handling/lcmaps_x509_utils.lo am__objects_4 = grid_credential_handling/lcmaps_runvars.lo \ grid_credential_handling/lcmaps_credential.lo am__objects_5 = pluginmanager/lcmaps_vo_data.lo \ pluginmanager/lcmaps_cred_data.lo \ pluginmanager/lcmaps_arguments.lo \ pluginmanager/lcmaps_db_read.lo pluginmanager/lcmaps_utils.lo \ pluginmanager/lcmaps_log.lo \ pluginmanager/lcmaps_pluginmanager.lo am__objects_6 = evaluationmanager/pdl_yacc.lo \ evaluationmanager/pdl_lex.lo evaluationmanager/pdl_main.lo \ evaluationmanager/pdl_variable.lo \ evaluationmanager/pdl_policy.lo evaluationmanager/pdl_rule.lo \ evaluationmanager/evaluationmanager.lo @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_la_OBJECTS = lcmaps.lo \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_account.lo $(am__objects_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__objects_2) $(am__objects_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__objects_3) $(am__objects_4) \ @LCMAPS_GSI_MODE_TRUE@ $(am__objects_1) $(am__objects_5) \ @LCMAPS_GSI_MODE_TRUE@ $(am__objects_1) $(am__objects_6) \ @LCMAPS_GSI_MODE_TRUE@ $(am__objects_1) liblcmaps_la_OBJECTS = $(am_liblcmaps_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_la_rpath = -rpath $(libdir) @LCMAPS_GSI_MODE_TRUE@liblcmaps_gss_assist_gridmap_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_TRUE@ ./liblcmaps.la am__liblcmaps_gss_assist_gridmap_la_SOURCES_DIST = \ $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_gss_assist_gridmap.h \ lcmaps_gss_assist_gridmap.c @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_gss_assist_gridmap_la_OBJECTS = \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_gss_assist_gridmap.lo liblcmaps_gss_assist_gridmap_la_OBJECTS = \ $(am_liblcmaps_gss_assist_gridmap_la_OBJECTS) liblcmaps_gss_assist_gridmap_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_gss_assist_gridmap_la_LDFLAGS) $(LDFLAGS) -o $@ @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_gss_assist_gridmap_la_rpath = \ @LCMAPS_GSI_MODE_TRUE@ -rpath $(libdir) @LCMAPS_GSI_MODE_FALSE@liblcmaps_gss_assist_gridmap_without_gsi_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_FALSE@ ./liblcmaps_without_gsi.la am__liblcmaps_gss_assist_gridmap_without_gsi_la_SOURCES_DIST = \ $(interfacedir)/lcmaps.h $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_gss_assist_gridmap.h \ lcmaps_gss_assist_gridmap.c @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_gss_assist_gridmap_without_gsi_la_OBJECTS = \ @LCMAPS_GSI_MODE_FALSE@ lcmaps_gss_assist_gridmap.lo liblcmaps_gss_assist_gridmap_without_gsi_la_OBJECTS = \ $(am_liblcmaps_gss_assist_gridmap_without_gsi_la_OBJECTS) liblcmaps_gss_assist_gridmap_without_gsi_la_LINK = $(LIBTOOL) \ $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_gss_assist_gridmap_without_gsi_la_LDFLAGS) \ $(LDFLAGS) -o $@ @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_gss_assist_gridmap_without_gsi_la_rpath = \ @LCMAPS_GSI_MODE_FALSE@ -rpath $(libdir) @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_account_from_pem_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_TRUE@ ./liblcmaps.la am__liblcmaps_return_account_from_pem_la_SOURCES_DIST = \ $(interfacedir)/lcmaps.h $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_account.h pluginmanager/_lcmaps_utils.h \ $(interfacedir)/lcmaps_return_account_from_pem.h \ lcmaps_return_account_from_pem.c @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_return_account_from_pem_la_OBJECTS = \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_return_account_from_pem.lo liblcmaps_return_account_from_pem_la_OBJECTS = \ $(am_liblcmaps_return_account_from_pem_la_OBJECTS) liblcmaps_return_account_from_pem_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_return_account_from_pem_la_LDFLAGS) $(LDFLAGS) -o \ $@ @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_return_account_from_pem_la_rpath = \ @LCMAPS_GSI_MODE_TRUE@ -rpath $(libdir) @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_poolindex_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_TRUE@ ./liblcmaps.la $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_TRUE@ $(am__DEPENDENCIES_1) am__liblcmaps_return_poolindex_la_SOURCES_DIST = \ $(interfacedir)/lcmaps.h $(interfacedir)/lcmaps_log.h \ pluginmanager/_lcmaps_utils.h \ grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h \ $(interfacedir)/lcmaps_return_poolindex.h \ lcmaps_return_poolindex.c @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_return_poolindex_la_OBJECTS = \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_return_poolindex.lo liblcmaps_return_poolindex_la_OBJECTS = \ $(am_liblcmaps_return_poolindex_la_OBJECTS) liblcmaps_return_poolindex_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_return_poolindex_la_LDFLAGS) $(LDFLAGS) -o $@ @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_return_poolindex_la_rpath = -rpath \ @LCMAPS_GSI_MODE_TRUE@ $(libdir) @LCMAPS_GSI_MODE_FALSE@liblcmaps_return_poolindex_without_gsi_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_FALSE@ ./liblcmaps_without_gsi.la am__liblcmaps_return_poolindex_without_gsi_la_SOURCES_DIST = \ $(interfacedir)/lcmaps.h $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_account.h $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_return_poolindex_without_gsi.h \ pluginmanager/_lcmaps_utils.h \ lcmaps_return_poolindex_without_gsi.c @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_return_poolindex_without_gsi_la_OBJECTS = \ @LCMAPS_GSI_MODE_FALSE@ lcmaps_return_poolindex_without_gsi.lo liblcmaps_return_poolindex_without_gsi_la_OBJECTS = \ $(am_liblcmaps_return_poolindex_without_gsi_la_OBJECTS) liblcmaps_return_poolindex_without_gsi_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_return_poolindex_without_gsi_la_LDFLAGS) \ $(LDFLAGS) -o $@ @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_return_poolindex_without_gsi_la_rpath = \ @LCMAPS_GSI_MODE_FALSE@ -rpath $(libdir) @LCMAPS_GSI_MODE_TRUE@liblcmaps_verify_account_from_pem_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_TRUE@ ./liblcmaps.la am__liblcmaps_verify_account_from_pem_la_SOURCES_DIST = \ $(interfacedir)/lcmaps.h $(interfacedir)/lcmaps_log.h \ pluginmanager/_lcmaps_utils.h \ $(interfacedir)/lcmaps_verify_account_from_pem.h \ lcmaps_verify_account_from_pem.c @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_verify_account_from_pem_la_OBJECTS = \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_verify_account_from_pem.lo liblcmaps_verify_account_from_pem_la_OBJECTS = \ $(am_liblcmaps_verify_account_from_pem_la_OBJECTS) liblcmaps_verify_account_from_pem_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblcmaps_verify_account_from_pem_la_LDFLAGS) $(LDFLAGS) -o \ $@ @LCMAPS_GSI_MODE_TRUE@am_liblcmaps_verify_account_from_pem_la_rpath = \ @LCMAPS_GSI_MODE_TRUE@ -rpath $(libdir) @LCMAPS_GSI_MODE_FALSE@liblcmaps_without_gsi_la_DEPENDENCIES = \ @LCMAPS_GSI_MODE_FALSE@ $(am__DEPENDENCIES_1) \ @LCMAPS_GSI_MODE_FALSE@ $(am__DEPENDENCIES_1) am__liblcmaps_without_gsi_la_SOURCES_DIST = $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_basic.h $(interfacedir)/lcmaps_types.h \ $(interfacedir)/lcmaps_cred_data.h \ $(interfacedir)/lcmaps_vo_data.h $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_arguments.h \ $(interfacedir)/lcmaps_utils.h \ $(interfacedir)/lcmaps_account.h $(interfacedir)/_lcmaps.h \ lcmaps.c lcmaps_account.c \ grid_credential_handling/lcmaps_runvars.c \ grid_credential_handling/lcmaps_credential.c \ grid_credential_handling/_lcmaps_runvars.h \ grid_credential_handling/_lcmaps_credential.h \ pluginmanager/lcmaps_vo_data.c \ pluginmanager/lcmaps_cred_data.c \ pluginmanager/lcmaps_arguments.c \ pluginmanager/lcmaps_db_read.c pluginmanager/lcmaps_utils.c \ pluginmanager/lcmaps_log.c \ pluginmanager/lcmaps_pluginmanager.c \ pluginmanager/_lcmaps_cred_data.h \ pluginmanager/_lcmaps_pluginmanager.h \ pluginmanager/_lcmaps_db_read.h pluginmanager/_lcmaps_utils.h \ pluginmanager/_lcmaps_log.h evaluationmanager/pdl_yacc.h \ evaluationmanager/pdl_yacc.y evaluationmanager/pdl_lex.l \ evaluationmanager/pdl_main.c evaluationmanager/pdl_variable.c \ evaluationmanager/pdl_policy.c evaluationmanager/pdl_rule.c \ evaluationmanager/evaluationmanager.c \ evaluationmanager/evaluationmanager.h evaluationmanager/pdl.h \ evaluationmanager/pdl_policy.h evaluationmanager/pdl_rule.h \ evaluationmanager/pdl_variable.h @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_without_gsi_la_OBJECTS = \ @LCMAPS_GSI_MODE_FALSE@ lcmaps.lo lcmaps_account.lo \ @LCMAPS_GSI_MODE_FALSE@ $(am__objects_4) $(am__objects_1) \ @LCMAPS_GSI_MODE_FALSE@ $(am__objects_5) $(am__objects_1) \ @LCMAPS_GSI_MODE_FALSE@ $(am__objects_6) $(am__objects_1) liblcmaps_without_gsi_la_OBJECTS = \ $(am_liblcmaps_without_gsi_la_OBJECTS) liblcmaps_without_gsi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(liblcmaps_without_gsi_la_LDFLAGS) \ $(LDFLAGS) -o $@ @LCMAPS_GSI_MODE_FALSE@am_liblcmaps_without_gsi_la_rpath = -rpath \ @LCMAPS_GSI_MODE_FALSE@ $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS) AM_V_LEX = $(am__v_LEX_@AM_V@) am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) am__v_LEX_0 = @echo " LEX " $@; am__v_LEX_1 = YLWRAP = $(top_srcdir)/ylwrap am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ -e s/c++$$/h++/ -e s/c$$/h/ YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) AM_V_YACC = $(am__v_YACC_@AM_V@) am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = SOURCES = $(liblcmaps_la_SOURCES) \ $(liblcmaps_gss_assist_gridmap_la_SOURCES) \ $(liblcmaps_gss_assist_gridmap_without_gsi_la_SOURCES) \ $(liblcmaps_return_account_from_pem_la_SOURCES) \ $(liblcmaps_return_poolindex_la_SOURCES) \ $(liblcmaps_return_poolindex_without_gsi_la_SOURCES) \ $(liblcmaps_verify_account_from_pem_la_SOURCES) \ $(liblcmaps_without_gsi_la_SOURCES) DIST_SOURCES = $(am__liblcmaps_la_SOURCES_DIST) \ $(am__liblcmaps_gss_assist_gridmap_la_SOURCES_DIST) \ $(am__liblcmaps_gss_assist_gridmap_without_gsi_la_SOURCES_DIST) \ $(am__liblcmaps_return_account_from_pem_la_SOURCES_DIST) \ $(am__liblcmaps_return_poolindex_la_SOURCES_DIST) \ $(am__liblcmaps_return_poolindex_without_gsi_la_SOURCES_DIST) \ $(am__liblcmaps_verify_account_from_pem_la_SOURCES_DIST) \ $(am__liblcmaps_without_gsi_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)lcmaps_config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ DEFINESCOMPILEFLAGS = \ -D'LCMAPS_ETC_HOME="@LCMAPS_ETC_HOME@"' \ -D'LCMAPS_LIB_HOME="@LCMAPS_LIB_HOME@"' \ -D'LCMAPS_MOD_HOME="@LCMAPS_MOD_HOME@"' AM_YFLAGS = -d AM_CFLAGS = ${EXTRACOMPILEFLAGS} ${DEFINESCOMPILEFLAGS} interfacedir = $(top_srcdir)/interface pkgconfigdir = $(libdir)/pkgconfig @LCMAPS_GSI_MODE_FALSE@AM_CPPFLAGS = \ @LCMAPS_GSI_MODE_FALSE@ -I$(interfacedir) \ @LCMAPS_GSI_MODE_FALSE@ -I$(top_builddir)/interface \ @LCMAPS_GSI_MODE_FALSE@ $(ADD_THESE_DEFINES) @LCMAPS_GSI_MODE_TRUE@AM_CPPFLAGS = \ @LCMAPS_GSI_MODE_TRUE@ -I$(interfacedir) \ @LCMAPS_GSI_MODE_TRUE@ -I$(top_builddir)/interface \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_GSSAPI_GSI_CFLAGS) $(GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS) \ @LCMAPS_GSI_MODE_TRUE@ $(VOMS_CFLAGS) \ @LCMAPS_GSI_MODE_TRUE@ $(ADD_THESE_DEFINES) @LCMAPS_GSI_MODE_FALSE@pkgconfig_DATA = \ @LCMAPS_GSI_MODE_FALSE@ lcmaps-without-gsi.pc \ @LCMAPS_GSI_MODE_FALSE@ lcmaps-gss-assist-gridmap-without-gsi.pc \ @LCMAPS_GSI_MODE_FALSE@ lcmaps-return-poolindex-without-gsi.pc @LCMAPS_GSI_MODE_TRUE@pkgconfig_DATA = \ @LCMAPS_GSI_MODE_TRUE@ lcmaps.pc \ @LCMAPS_GSI_MODE_TRUE@ lcmaps-gss-assist-gridmap.pc \ @LCMAPS_GSI_MODE_TRUE@ lcmaps-return-poolindex.pc \ @LCMAPS_GSI_MODE_TRUE@ lcmaps-return-account-from-pem.pc \ @LCMAPS_GSI_MODE_TRUE@ lcmaps-verify-account-from-pem.pc EXTRA_DIST = \ $(srcdir)/evaluationmanager/pdl_test.c \ $(srcdir)/evaluationmanager/examples/example_1.pdl \ $(srcdir)/lcmaps_test.c \ $(srcdir)/liblcmaps.sym GsiHandlingLocalHeaders = \ grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h \ grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h \ grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h GsiHandlingSources = \ grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c \ grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c X509HandlingLocalHeaders = \ grid_credential_handling/x509_handling/_lcmaps_x509_utils.h X509HandlingSources = \ grid_credential_handling/x509_handling/lcmaps_x509_utils.c GridCredentialHandlingLocalHeaders = \ grid_credential_handling/_lcmaps_runvars.h \ grid_credential_handling/_lcmaps_credential.h GridCredentialHandlingSources = \ grid_credential_handling/lcmaps_runvars.c \ grid_credential_handling/lcmaps_credential.c PluginmanagerLocalHeaders = \ pluginmanager/_lcmaps_cred_data.h \ pluginmanager/_lcmaps_pluginmanager.h \ pluginmanager/_lcmaps_db_read.h \ pluginmanager/_lcmaps_utils.h \ pluginmanager/_lcmaps_log.h PluginmanagerSources = \ pluginmanager/lcmaps_vo_data.c \ pluginmanager/lcmaps_cred_data.c \ pluginmanager/lcmaps_arguments.c \ pluginmanager/lcmaps_db_read.c \ pluginmanager/lcmaps_utils.c \ pluginmanager/lcmaps_log.c \ pluginmanager/lcmaps_pluginmanager.c EvaluationmanagerLocalHeaders = \ evaluationmanager/evaluationmanager.h \ evaluationmanager/pdl.h \ evaluationmanager/pdl_policy.h \ evaluationmanager/pdl_rule.h \ evaluationmanager/pdl_variable.h EvaluationmanagerSources = \ evaluationmanager/pdl_yacc.h \ evaluationmanager/pdl_yacc.y \ evaluationmanager/pdl_lex.l \ evaluationmanager/pdl_main.c \ evaluationmanager/pdl_variable.c \ evaluationmanager/pdl_policy.c \ evaluationmanager/pdl_rule.c \ evaluationmanager/evaluationmanager.c @LCMAPS_GSI_MODE_FALSE@lib_LTLIBRARIES = \ @LCMAPS_GSI_MODE_FALSE@ liblcmaps_without_gsi.la \ @LCMAPS_GSI_MODE_FALSE@ liblcmaps_return_poolindex_without_gsi.la \ @LCMAPS_GSI_MODE_FALSE@ liblcmaps_gss_assist_gridmap_without_gsi.la @LCMAPS_GSI_MODE_TRUE@lib_LTLIBRARIES = \ @LCMAPS_GSI_MODE_TRUE@ liblcmaps.la \ @LCMAPS_GSI_MODE_TRUE@ liblcmaps_verify_account_from_pem.la \ @LCMAPS_GSI_MODE_TRUE@ liblcmaps_return_account_from_pem.la \ @LCMAPS_GSI_MODE_TRUE@ liblcmaps_return_poolindex.la \ @LCMAPS_GSI_MODE_TRUE@ liblcmaps_gss_assist_gridmap.la @LCMAPS_GSI_MODE_TRUE@liblcmaps_verify_account_from_pem_la_SOURCES = \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_log.h \ @LCMAPS_GSI_MODE_TRUE@ pluginmanager/_lcmaps_utils.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_verify_account_from_pem.h \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_verify_account_from_pem.c @LCMAPS_GSI_MODE_TRUE@liblcmaps_verify_account_from_pem_la_LDFLAGS = @LCMAPS_GSI_MODE_TRUE@liblcmaps_verify_account_from_pem_la_LIBADD = ./liblcmaps.la @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_account_from_pem_la_SOURCES = \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_log.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_account.h \ @LCMAPS_GSI_MODE_TRUE@ pluginmanager/_lcmaps_utils.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_return_account_from_pem.h \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_return_account_from_pem.c @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_account_from_pem_la_LDFLAGS = @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_account_from_pem_la_LIBADD = ./liblcmaps.la @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_poolindex_la_SOURCES = \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_log.h \ @LCMAPS_GSI_MODE_TRUE@ pluginmanager/_lcmaps_utils.h \ @LCMAPS_GSI_MODE_TRUE@ grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_return_poolindex.h \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_return_poolindex.c @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_poolindex_la_LDFLAGS = @LCMAPS_GSI_MODE_TRUE@liblcmaps_return_poolindex_la_LIBADD = \ @LCMAPS_GSI_MODE_TRUE@ ./liblcmaps.la \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_COMMON_LIBS) $(GLOBUS_COMMON_NOTHR_LIBS) \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_GSS_ASSIST_LIBS) $(GLOBUS_GSS_ASSIST_NOTHR_LIBS) \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_GSSAPI_GSI_LIBS) $(GLOBUS_GSSAPI_GSI_NOTHR_LIBS) @LCMAPS_GSI_MODE_TRUE@liblcmaps_gss_assist_gridmap_la_SOURCES = \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_basic.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_gss_assist_gridmap.h \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_gss_assist_gridmap.c @LCMAPS_GSI_MODE_TRUE@liblcmaps_gss_assist_gridmap_la_LDFLAGS = @LCMAPS_GSI_MODE_TRUE@liblcmaps_gss_assist_gridmap_la_LIBADD = ./liblcmaps.la @LCMAPS_GSI_MODE_TRUE@liblcmaps_la_SOURCES = \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_types.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_cred_data.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_vo_data.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_log.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_arguments.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_utils.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_cred_data.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_account.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/lcmaps_basic.h \ @LCMAPS_GSI_MODE_TRUE@ $(interfacedir)/_lcmaps.h \ @LCMAPS_GSI_MODE_TRUE@ lcmaps.c \ @LCMAPS_GSI_MODE_TRUE@ lcmaps_account.c \ @LCMAPS_GSI_MODE_TRUE@ $(GsiHandlingLocalHeaders) \ @LCMAPS_GSI_MODE_TRUE@ $(GsiHandlingSources) \ @LCMAPS_GSI_MODE_TRUE@ $(X509HandlingLocalHeaders) \ @LCMAPS_GSI_MODE_TRUE@ $(X509HandlingSources) \ @LCMAPS_GSI_MODE_TRUE@ $(GridCredentialHandlingSources) \ @LCMAPS_GSI_MODE_TRUE@ $(GridCredentialHandlingLocalHeaders) \ @LCMAPS_GSI_MODE_TRUE@ $(PluginmanagerSources) \ @LCMAPS_GSI_MODE_TRUE@ $(PluginmanagerLocalHeaders) \ @LCMAPS_GSI_MODE_TRUE@ $(EvaluationmanagerSources) \ @LCMAPS_GSI_MODE_TRUE@ $(EvaluationmanagerLocalHeaders) #liblcmaps_la_LDFLAGS = -export-symbols $(srcdir)/liblcmaps.sym @LCMAPS_GSI_MODE_TRUE@liblcmaps_la_LIBADD = \ @LCMAPS_GSI_MODE_TRUE@ $(CRYPTO_LIBS) $(DL_LIBS) \ @LCMAPS_GSI_MODE_TRUE@ $(VOMS_CPP_LIBS) $(LEXLIB) \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_GSSAPI_GSI_LIBS) $(GLOBUS_GSSAPI_GSI_NOTHR_LIBS) \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_GSI_CREDENTIAL_LIBS) $(GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS) \ @LCMAPS_GSI_MODE_TRUE@ $(GLOBUS_COMMON_LIBS) $(GLOBUS_COMMON_NOTHR_LIBS) @LCMAPS_GSI_MODE_FALSE@@LEX_HAS_D_TRUE@AM_LFLAGS = -D_XOPEN_SOURCE=500 @LCMAPS_GSI_MODE_TRUE@@LEX_HAS_D_TRUE@AM_LFLAGS = -D_XOPEN_SOURCE=500 @LCMAPS_GSI_MODE_FALSE@liblcmaps_without_gsi_la_SOURCES = \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_basic.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_types.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_cred_data.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_vo_data.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_log.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_arguments.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_utils.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_cred_data.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_account.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/_lcmaps.h \ @LCMAPS_GSI_MODE_FALSE@ lcmaps.c \ @LCMAPS_GSI_MODE_FALSE@ lcmaps_account.c \ @LCMAPS_GSI_MODE_FALSE@ $(GridCredentialHandlingSources) \ @LCMAPS_GSI_MODE_FALSE@ $(GridCredentialHandlingLocalHeaders) \ @LCMAPS_GSI_MODE_FALSE@ $(PluginmanagerSources) \ @LCMAPS_GSI_MODE_FALSE@ $(PluginmanagerLocalHeaders) \ @LCMAPS_GSI_MODE_FALSE@ $(EvaluationmanagerSources) \ @LCMAPS_GSI_MODE_FALSE@ $(EvaluationmanagerLocalHeaders) @LCMAPS_GSI_MODE_FALSE@liblcmaps_without_gsi_la_LDFLAGS = @LCMAPS_GSI_MODE_FALSE@liblcmaps_without_gsi_la_LIBADD = $(DL_LIBS) $(LEXLIB) @LCMAPS_GSI_MODE_FALSE@liblcmaps_return_poolindex_without_gsi_la_SOURCES = \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_basic.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_account.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_log.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_return_poolindex_without_gsi.h \ @LCMAPS_GSI_MODE_FALSE@ pluginmanager/_lcmaps_utils.h \ @LCMAPS_GSI_MODE_FALSE@ lcmaps_return_poolindex_without_gsi.c @LCMAPS_GSI_MODE_FALSE@liblcmaps_return_poolindex_without_gsi_la_LDFLAGS = @LCMAPS_GSI_MODE_FALSE@liblcmaps_return_poolindex_without_gsi_la_LIBADD = ./liblcmaps_without_gsi.la @LCMAPS_GSI_MODE_FALSE@liblcmaps_gss_assist_gridmap_without_gsi_la_SOURCES = \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_basic.h \ @LCMAPS_GSI_MODE_FALSE@ $(interfacedir)/lcmaps_gss_assist_gridmap.h \ @LCMAPS_GSI_MODE_FALSE@ lcmaps_gss_assist_gridmap.c @LCMAPS_GSI_MODE_FALSE@liblcmaps_gss_assist_gridmap_without_gsi_la_LDFLAGS = @LCMAPS_GSI_MODE_FALSE@liblcmaps_gss_assist_gridmap_without_gsi_la_LIBADD = ./liblcmaps_without_gsi.la all: lcmaps_config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj .y $(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): lcmaps_config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/lcmaps_config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/lcmaps_config.h $(srcdir)/lcmaps_config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f lcmaps_config.h stamp-h1 lcmaps.pc: $(top_builddir)/config.status $(srcdir)/lcmaps.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-gss-assist-gridmap.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-gss-assist-gridmap.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-return-poolindex.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-return-poolindex.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-return-account-from-pem.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-return-account-from-pem.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-verify-account-from-pem.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-verify-account-from-pem.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-without-gsi.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-without-gsi.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-gss-assist-gridmap-without-gsi.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-gss-assist-gridmap.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-return-poolindex-without-gsi.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-return-poolindex.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @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 " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ 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)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } grid_credential_handling/gsi_handling/$(am__dirstamp): @$(MKDIR_P) grid_credential_handling/gsi_handling @: > grid_credential_handling/gsi_handling/$(am__dirstamp) grid_credential_handling/gsi_handling/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) grid_credential_handling/gsi_handling/$(DEPDIR) @: > grid_credential_handling/gsi_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/gsi_handling/lcmaps_gsi_utils.lo: \ grid_credential_handling/gsi_handling/$(am__dirstamp) \ grid_credential_handling/gsi_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/gsi_handling/lcmaps_voms_attributes.lo: \ grid_credential_handling/gsi_handling/$(am__dirstamp) \ grid_credential_handling/gsi_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/x509_handling/$(am__dirstamp): @$(MKDIR_P) grid_credential_handling/x509_handling @: > grid_credential_handling/x509_handling/$(am__dirstamp) grid_credential_handling/x509_handling/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) grid_credential_handling/x509_handling/$(DEPDIR) @: > grid_credential_handling/x509_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/x509_handling/lcmaps_x509_utils.lo: \ grid_credential_handling/x509_handling/$(am__dirstamp) \ grid_credential_handling/x509_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/$(am__dirstamp): @$(MKDIR_P) grid_credential_handling @: > grid_credential_handling/$(am__dirstamp) grid_credential_handling/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) grid_credential_handling/$(DEPDIR) @: > grid_credential_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/lcmaps_runvars.lo: \ grid_credential_handling/$(am__dirstamp) \ grid_credential_handling/$(DEPDIR)/$(am__dirstamp) grid_credential_handling/lcmaps_credential.lo: \ grid_credential_handling/$(am__dirstamp) \ grid_credential_handling/$(DEPDIR)/$(am__dirstamp) pluginmanager/$(am__dirstamp): @$(MKDIR_P) pluginmanager @: > pluginmanager/$(am__dirstamp) pluginmanager/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pluginmanager/$(DEPDIR) @: > pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_vo_data.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_cred_data.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_arguments.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_db_read.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_utils.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_log.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) pluginmanager/lcmaps_pluginmanager.lo: pluginmanager/$(am__dirstamp) \ pluginmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_yacc.h: evaluationmanager/pdl_yacc.c @if test ! -f $@; then rm -f evaluationmanager/pdl_yacc.c; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) evaluationmanager/pdl_yacc.c; else :; fi evaluationmanager/$(am__dirstamp): @$(MKDIR_P) evaluationmanager @: > evaluationmanager/$(am__dirstamp) evaluationmanager/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) evaluationmanager/$(DEPDIR) @: > evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_yacc.lo: evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_lex.lo: evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_main.lo: evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_variable.lo: evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_policy.lo: evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/pdl_rule.lo: evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) evaluationmanager/evaluationmanager.lo: \ evaluationmanager/$(am__dirstamp) \ evaluationmanager/$(DEPDIR)/$(am__dirstamp) liblcmaps.la: $(liblcmaps_la_OBJECTS) $(liblcmaps_la_DEPENDENCIES) $(EXTRA_liblcmaps_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(am_liblcmaps_la_rpath) $(liblcmaps_la_OBJECTS) $(liblcmaps_la_LIBADD) $(LIBS) liblcmaps_gss_assist_gridmap.la: $(liblcmaps_gss_assist_gridmap_la_OBJECTS) $(liblcmaps_gss_assist_gridmap_la_DEPENDENCIES) $(EXTRA_liblcmaps_gss_assist_gridmap_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_gss_assist_gridmap_la_LINK) $(am_liblcmaps_gss_assist_gridmap_la_rpath) $(liblcmaps_gss_assist_gridmap_la_OBJECTS) $(liblcmaps_gss_assist_gridmap_la_LIBADD) $(LIBS) liblcmaps_gss_assist_gridmap_without_gsi.la: $(liblcmaps_gss_assist_gridmap_without_gsi_la_OBJECTS) $(liblcmaps_gss_assist_gridmap_without_gsi_la_DEPENDENCIES) $(EXTRA_liblcmaps_gss_assist_gridmap_without_gsi_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_gss_assist_gridmap_without_gsi_la_LINK) $(am_liblcmaps_gss_assist_gridmap_without_gsi_la_rpath) $(liblcmaps_gss_assist_gridmap_without_gsi_la_OBJECTS) $(liblcmaps_gss_assist_gridmap_without_gsi_la_LIBADD) $(LIBS) liblcmaps_return_account_from_pem.la: $(liblcmaps_return_account_from_pem_la_OBJECTS) $(liblcmaps_return_account_from_pem_la_DEPENDENCIES) $(EXTRA_liblcmaps_return_account_from_pem_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_return_account_from_pem_la_LINK) $(am_liblcmaps_return_account_from_pem_la_rpath) $(liblcmaps_return_account_from_pem_la_OBJECTS) $(liblcmaps_return_account_from_pem_la_LIBADD) $(LIBS) liblcmaps_return_poolindex.la: $(liblcmaps_return_poolindex_la_OBJECTS) $(liblcmaps_return_poolindex_la_DEPENDENCIES) $(EXTRA_liblcmaps_return_poolindex_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_return_poolindex_la_LINK) $(am_liblcmaps_return_poolindex_la_rpath) $(liblcmaps_return_poolindex_la_OBJECTS) $(liblcmaps_return_poolindex_la_LIBADD) $(LIBS) liblcmaps_return_poolindex_without_gsi.la: $(liblcmaps_return_poolindex_without_gsi_la_OBJECTS) $(liblcmaps_return_poolindex_without_gsi_la_DEPENDENCIES) $(EXTRA_liblcmaps_return_poolindex_without_gsi_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_return_poolindex_without_gsi_la_LINK) $(am_liblcmaps_return_poolindex_without_gsi_la_rpath) $(liblcmaps_return_poolindex_without_gsi_la_OBJECTS) $(liblcmaps_return_poolindex_without_gsi_la_LIBADD) $(LIBS) liblcmaps_verify_account_from_pem.la: $(liblcmaps_verify_account_from_pem_la_OBJECTS) $(liblcmaps_verify_account_from_pem_la_DEPENDENCIES) $(EXTRA_liblcmaps_verify_account_from_pem_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_verify_account_from_pem_la_LINK) $(am_liblcmaps_verify_account_from_pem_la_rpath) $(liblcmaps_verify_account_from_pem_la_OBJECTS) $(liblcmaps_verify_account_from_pem_la_LIBADD) $(LIBS) liblcmaps_without_gsi.la: $(liblcmaps_without_gsi_la_OBJECTS) $(liblcmaps_without_gsi_la_DEPENDENCIES) $(EXTRA_liblcmaps_without_gsi_la_DEPENDENCIES) $(AM_V_CCLD)$(liblcmaps_without_gsi_la_LINK) $(am_liblcmaps_without_gsi_la_rpath) $(liblcmaps_without_gsi_la_OBJECTS) $(liblcmaps_without_gsi_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f evaluationmanager/*.$(OBJEXT) -rm -f evaluationmanager/*.lo -rm -f grid_credential_handling/*.$(OBJEXT) -rm -f grid_credential_handling/*.lo -rm -f grid_credential_handling/gsi_handling/*.$(OBJEXT) -rm -f grid_credential_handling/gsi_handling/*.lo -rm -f grid_credential_handling/x509_handling/*.$(OBJEXT) -rm -f grid_credential_handling/x509_handling/*.lo -rm -f pluginmanager/*.$(OBJEXT) -rm -f pluginmanager/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_account.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_gss_assist_gridmap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_return_account_from_pem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_return_poolindex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_return_poolindex_without_gsi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcmaps_verify_account_from_pem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/evaluationmanager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/pdl_lex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/pdl_main.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/pdl_policy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/pdl_rule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/pdl_variable.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@evaluationmanager/$(DEPDIR)/pdl_yacc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@grid_credential_handling/$(DEPDIR)/lcmaps_credential.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@grid_credential_handling/$(DEPDIR)/lcmaps_runvars.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@grid_credential_handling/gsi_handling/$(DEPDIR)/lcmaps_gsi_utils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@grid_credential_handling/gsi_handling/$(DEPDIR)/lcmaps_voms_attributes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@grid_credential_handling/x509_handling/$(DEPDIR)/lcmaps_x509_utils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_arguments.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_cred_data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_db_read.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_log.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_pluginmanager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_utils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pluginmanager/$(DEPDIR)/lcmaps_vo_data.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .l.c: $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf evaluationmanager/.libs evaluationmanager/_libs -rm -rf grid_credential_handling/.libs grid_credential_handling/_libs -rm -rf grid_credential_handling/gsi_handling/.libs grid_credential_handling/gsi_handling/_libs -rm -rf grid_credential_handling/x509_handling/.libs grid_credential_handling/x509_handling/_libs -rm -rf pluginmanager/.libs pluginmanager/_libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ 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_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ 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-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ 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" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ 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 $(LTLIBRARIES) $(DATA) lcmaps_config.h installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: 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) -rm -f evaluationmanager/$(DEPDIR)/$(am__dirstamp) -rm -f evaluationmanager/$(am__dirstamp) -rm -f grid_credential_handling/$(DEPDIR)/$(am__dirstamp) -rm -f grid_credential_handling/$(am__dirstamp) -rm -f grid_credential_handling/gsi_handling/$(DEPDIR)/$(am__dirstamp) -rm -f grid_credential_handling/gsi_handling/$(am__dirstamp) -rm -f grid_credential_handling/x509_handling/$(DEPDIR)/$(am__dirstamp) -rm -f grid_credential_handling/x509_handling/$(am__dirstamp) -rm -f pluginmanager/$(DEPDIR)/$(am__dirstamp) -rm -f pluginmanager/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f evaluationmanager/pdl_lex.c -rm -f evaluationmanager/pdl_yacc.c -rm -f evaluationmanager/pdl_yacc.h clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) evaluationmanager/$(DEPDIR) grid_credential_handling/$(DEPDIR) grid_credential_handling/gsi_handling/$(DEPDIR) grid_credential_handling/x509_handling/$(DEPDIR) pluginmanager/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES 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) evaluationmanager/$(DEPDIR) grid_credential_handling/$(DEPDIR) grid_credential_handling/gsi_handling/$(DEPDIR) grid_credential_handling/x509_handling/$(DEPDIR) pluginmanager/$(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-libLTLIBRARIES uninstall-pkgconfigDATA .MAKE: all install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags 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-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-pkgconfigDATA \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA # 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: lcmaps-1.6.6/src/lcmaps-without-gsi.pc.in0000644001726200004540000000035112471136645015221 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: lcmaps-without-gsi Description: LCMAPS without GSI Requires: Version: @VERSION@ Libs: -L${libdir} -llcmaps_without_gsi Cflags: -I${includedir} lcmaps-1.6.6/src/lcmaps_config.h.in0000644001726200004540000000547012471136670014117 00000000000000/* src/lcmaps_config.h.in. Generated from configure.ac by autoheader. */ /* Building headers exclusively disabled */ #undef ENABLE_HEADERS /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `getgrouplist' function. */ #undef HAVE_GETGROUPLIST /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `malloc' function. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `realloc' function. */ #undef HAVE_REALLOC /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strcspn' function. */ #undef HAVE_STRCSPN /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strpbrk' function. */ #undef HAVE_STRPBRK /* Define to 1 if you have the `strspn' function. */ #undef HAVE_STRSPN /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* "If defined provide the GSI interface to LCMAPS" */ #undef LCMAPS_GSI_MODE /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to `unsigned int' if does not define. */ #undef size_t lcmaps-1.6.6/src/evaluationmanager/0000755001726200004540000000000012471136741014310 500000000000000lcmaps-1.6.6/src/evaluationmanager/pdl.h0000644001726200004540000001224012471136645015162 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl.h * * \brief General include file. * * In this include file all general "things" can be found. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17818 $ * \date $Date: 2014-07-03 13:42:13 +0200 (Thu, 03 Jul 2014) $ * */ #ifndef _PDL_H #define _PDL_H #include /*! * The evaluation manager defines its own boolean type. It first * undefines any existing type defenitions before it defines it * itself. * */ #undef TRUE #undef FALSE #undef BOOL typedef char BOOL; #define TRUE ((BOOL)1) #define FALSE ((BOOL)(!TRUE)) /*! * Different levels of error logging. */ typedef enum { PDL_UNKNOWN, /* Unknown error level. */ PDL_INFO, /* Informational level. */ PDL_WARNING, /* Warning level. */ PDL_ERROR, /* Error level. */ PDL_SAME /* Repeat the previous level. */ /* Keep PDL_SAME last as it is used as a sentinal! */ } pdl_error_t; /*! * Guide the selection of the next plugin. */ typedef enum { EVALUATION_START, /* The evaluation process has just started. */ EVALUATION_SUCCESS, /* The evaluation of the plugin was successful. */ EVALUATION_FAILURE /* The evaluation of the plugin was unsuccessfyl. */ } plugin_status_t; /*! * \brief Structure is used to keep track of strings and the line * they appear on. * * When lex finds a match, this structure is used to keep track of * the relevant information. The matchig string as well as the line * number are saved. The line number can be used for later references * when an error related to the symbol has occured. This allows for * easier debugging of the configuration file. * */ typedef struct record_s { char* string; /* Hold the symbol that lex has found. */ int lineno; /* Hold the line number the symbol has been found. */ } record_t; /*! * \brief Structure holds a plugin name and its arguments, as well as * the line number the plugin is first mentioned. * */ typedef struct plugin_s { char* name; /* Plugin name. */ char* args; /* Arguments of the plugin. */ int lineno; /* Line number where the plugin is first seen in the configuration file. */ struct plugin_s* next; /* Next plugin, or 0 if there are no-more plugins. */ } plugin_t; /* since pdl_lex.c already declares these, skip 'em here: this has only effect * for when we are currently being included in pdl_lex.c which is created by * (f)lex */ #ifndef FLEX_SCANNER extern FILE* yyin; #endif /* Also declare yylex() for pdl_yacc.{y,c} */ extern int yylex(void); /* Cleanup function for lex memory, dependent on flex version. Only called for * flex. */ extern void pdl_lex_cleanup(void); extern int lineno; extern int lcmaps_pdl_init(const char* name); extern void lcmaps_free_path(void); extern char *lcmaps_pdl_path(void); extern int yyparse_errors(void); /* Next one is wrapper around yyparse() since RH5 does not declare yyparse() in * the created header file, while newer yacc/bison does */ extern int pdl_yyparse(void); extern int yyerror(const char*); extern const char* token_name(void); extern void lcmaps_set_yylval(record_t* r); extern void lcmaps_set_path(record_t* _path); extern record_t* lcmaps_concat_strings(record_t* s1, record_t* s2); extern record_t* lcmaps_concat_strings_with_space(record_t* s1, record_t* s2); extern const plugin_t* lcmaps_get_plugins(void); #ifdef __GNUC__ extern void lcmaps_pdl_warning(pdl_error_t error, const char* s, ...) __attribute__((format(printf,2,3))); #else extern void lcmaps_pdl_warning(pdl_error_t error, const char* s, ...); #endif extern void lcmaps_free_resources(void); /* void set_active_yyin (FILE * my_yyin); */ /* FILE * get_active_yyin (void); */ extern char* lcmaps_pdl_next_plugin(plugin_status_t status); extern BOOL lcmaps_allowed_policy_rule(const char* label); #ifdef HAVE_FLEX extern void delete_lex_buffer(void); #endif #endif lcmaps-1.6.6/src/evaluationmanager/pdl_policy.c0000644001726200004540000002157712471136645016551 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_policy.c * * \brief Implementation of the pdl policies. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17818 $ * \date $Date: 2014-07-03 13:42:13 +0200 (Thu, 03 Jul 2014) $ * */ /* Needed for NULL */ #include #include #include #include "lcmaps_log.h" #include "pdl.h" #include "pdl_policy.h" #include "pdl_rule.h" static BOOL policies_reduced = FALSE; /* Tell if reduce_policy() has been called. */ static policy_t *top_policy=0, *last_policy=0; static int num_of_policies_to_evaluate = 0; static char** policies_to_evaluate = NULL; BOOL _lcmaps_add_policy(record_t* name, rule_t* rules); /*! * Allow or disallow the additions of rules depending on the * argument. When for example a policy is defined for the second * time, an error should be generated, but the parsing should still * continue. However, no rules can be added to the policy as there * is currently no policy defined. * * \param allow TRUE if addition of new rules is allowd, FALSE * otherwise. */ void lcmaps_allow_rules(BOOL allow) { lcmaps_allow_new_rules(allow); } /*! * Wrapper around the _add_policy(name) function. * * When the _add_policy() call fails, this function cleans up the * data structure allocated for holding information about the policy * that was found. See _add_policy() for information about the kind * of reasons it can fail. * * \param policy Name of the policy. * \param rules List of associated rules for the policy. * */ void lcmaps_add_policy(record_t* policy, rule_t* rules) { /* * Do not switch the order of the and operator, because the * _add_policy needs to be done always. */ if (!_lcmaps_add_policy(policy, rules)) { lcmaps_free_rules(rules); rules = NULL; free(policy->string); policy->string = NULL; free(policy); policy = NULL; lcmaps_set_yylval(0); } free(policy); policy = NULL; lcmaps_start_new_rules(); } /*! * Add a policy with its rules to the list of policies. * * Before the policy name is actually added to list of policies, a * check is made to see weather or not a policy by the same name exists. * if it does, the policy name will not be added and an error message * is displayed, letting the user know that the configuration file * contains multiple policy rules with the same name. * * \param name Name of the new policy. * \param rules List of associated rules for the policy. * \return TRUE, If the policy has been added successfully; FALSE otherwise. * */ BOOL _lcmaps_add_policy(record_t* name, rule_t* rules) { policy_t *policy; if ((policy = lcmaps_find_policy(name->string))) { lcmaps_pdl_warning(PDL_ERROR, "policy '%s' already defined at line %d.\n", name->string, policy->lineno); lcmaps_allow_rules(FALSE); return FALSE; } if ((policy = (policy_t *)malloc(sizeof(policy_t)))) { policy->name = name->string; policy->rule = rules; policy->lineno = name->lineno; policy->next = 0; policy->prev = last_policy; if (top_policy) last_policy->next = policy; else top_policy = policy; last_policy = policy; } else { lcmaps_pdl_warning(PDL_ERROR, "Out of memory; cannot add policy '%s'.\n", name->string); return FALSE; } return TRUE; } /*! * Remove a policy from the list of policies and free all associated * resources of the policy. * * \param policy Policy to be removed. * */ void lcmaps_remove_policy(record_t* policy) { free(policy->string); policy->string = NULL; free(policy); policy = NULL; } /*! * Find a policy by its name * * \param name Name of the policy to be found. * \return The policy if a polict with name 'name' exists, 0 otherwise. * */ policy_t* lcmaps_find_policy(const char* name) { policy_t* policy=top_policy; while (policy && strcmp(name, policy->name)!=0) { policy = policy->next; } return policy; } /*! * Check for recursions in the policy rules. * * \return TRUE if at least one recustion has been found, FALSE * otherwise. * */ BOOL lcmaps_check_policies_for_recursion(void) { BOOL recursion = FALSE; policy_t* policy = lcmaps_get_policies(); while (policy) { lcmaps_log_debug(3, "Checking policy '%s' for recursions.\n", policy->name); if (lcmaps_check_rule_for_recursion(policy->rule)) { recursion = TRUE; lcmaps_log_debug(3, "Recursions were found.\n"); } else lcmaps_log_debug(3, "No recursions were found.\n"); policy = policy->next; } return recursion; } /*! * lcmaps_reduce_policies to its elemantry form, i.e. each policy has a list * of rules which need to be reduced. * */ void lcmaps_reduce_policies(void) { policy_t* policy = lcmaps_get_policies(); while (policy) { rule_t* rule = policy->rule; lcmaps_set_top_rule(rule); while (rule) { lcmaps_reduce_rule(rule); rule = rule->next; } policy = policy->next; } policies_reduced = TRUE; } /*! * Get the list of policies. * * \return First policy in the list. * */ policy_t* lcmaps_get_policies(void) { return top_policy; } /*! * Display the policies and the rules associated with the policy. * */ void lcmaps_show_policies(void) { policy_t* policy = top_policy; while (policy) { lcmaps_log_debug(3, "policy: %s\n", policy->name); lcmaps_show_rules(policy->rule); policy = policy->next; } } /*! * Cleanup the policies. * * The tree that had been built up might contain policy rules which do * not contain any rules. This function removes all policy rules with * an empty rule set. * */ void lcmaps_cleanup_policies(void) { policy_t *tmp, *policy = top_policy; while (policy) { if (!policy->rule) { if (policy->prev) { policy->prev->next = policy->next; } else { /* move the top_policy to the new head of the list */ top_policy = policy->next; } if (policy->next) { policy->next->prev = policy->prev; } tmp = policy; policy = policy->next; free (tmp); } else { policy = policy->next; } } } /*! * Free all policies and their allocated resources. * */ void lcmaps_free_policies(void) { policy_t* next_pol, *policy = top_policy; while (policy) { next_pol = policy->next; free(policy->name); policy->name = NULL; lcmaps_free_rules(policy->rule); policy->rule = NULL; free(policy); policy = next_pol; } top_policy = 0; /* When there is no policy defined, it does not make sense to have a top rule either. */ lcmaps_set_top_rule(0); } /*! * Determine if the current policy rule should be included for * evaluating policy rules. The policy rules are still parsed though. * Any error in any policy rule will be reported, i.e. your config * file should be valid regardless of the policy rules to be evaluated. * */ BOOL lcmaps_allowed_policy_rule(const char* label) { BOOL allowed = TRUE; int i=0; if (num_of_policies_to_evaluate > 0) { allowed = FALSE; while (i 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 17 #define YY_END_OF_BUFFER 18 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[55] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 16, 1, 10, 16, 16, 16, 9, 11, 9, 1, 9, 9, 17, 4, 6, 17, 5, 3, 17, 1, 0, 14, 0, 13, 12, 9, 9, 1, 0, 9, 8, 9, 4, 0, 7, 5, 0, 15, 9, 9, 2, 2, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 1, 1, 9, 10, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 7, 1, 11, 7, 7, 7, 7, 7, 7, 12, 7, 7, 7, 7, 7, 7, 7, 13, 7, 7, 7, 14, 7, 7, 7, 7, 7, 7, 1, 9, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[15] = { 0, 1, 2, 1, 1, 1, 1, 3, 4, 1, 1, 3, 3, 3, 3 } ; static yyconst flex_int16_t yy_base[64] = { 0, 0, 13, 27, 0, 0, 0, 0, 0, 92, 91, 94, 97, 91, 97, 13, 89, 81, 0, 97, 79, 87, 80, 10, 97, 85, 97, 83, 0, 97, 19, 83, 39, 97, 81, 97, 97, 0, 69, 80, 42, 73, 97, 37, 78, 76, 97, 0, 43, 97, 66, 40, 0, 69, 97, 52, 56, 60, 46, 63, 64, 68, 16, 72 } ; static yyconst flex_int16_t yy_def[64] = { 0, 54, 1, 54, 3, 55, 55, 55, 55, 55, 55, 54, 54, 54, 54, 56, 57, 54, 58, 54, 58, 59, 60, 60, 54, 54, 54, 61, 62, 54, 63, 54, 56, 54, 57, 54, 54, 58, 58, 59, 59, 60, 54, 60, 54, 61, 54, 62, 63, 54, 58, 60, 58, 60, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54 } ; static yyconst flex_int16_t yy_nxt[112] = { 0, 12, 13, 14, 15, 16, 17, 18, 12, 19, 12, 18, 18, 20, 18, 21, 33, 33, 42, 47, 22, 43, 49, 49, 22, 22, 23, 22, 24, 25, 26, 24, 27, 24, 28, 24, 29, 24, 28, 28, 28, 28, 33, 33, 54, 42, 49, 49, 42, 37, 42, 51, 53, 24, 24, 24, 24, 32, 32, 32, 32, 34, 34, 34, 34, 40, 40, 41, 41, 45, 45, 45, 45, 48, 48, 48, 48, 42, 52, 46, 44, 42, 39, 50, 35, 31, 46, 44, 42, 39, 38, 36, 35, 31, 54, 30, 30, 11, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 } ; static yyconst flex_int16_t yy_chk[112] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 15, 15, 23, 62, 2, 23, 30, 30, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 32, 32, 40, 43, 48, 48, 51, 58, 40, 43, 51, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 59, 59, 60, 60, 61, 61, 61, 61, 63, 63, 63, 63, 53, 50, 45, 44, 41, 39, 38, 34, 31, 27, 25, 22, 21, 20, 17, 16, 13, 11, 10, 9, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "../../src/evaluationmanager/pdl_lex.l" /* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://eu-egee.org/partners/ for details on the copyright holders. * For license conditions see the license file or * http://eu-egee.org/license.html */ /* * Copyright (c) 2003 EU DataGrid http://www.eu-datagrid.org/ * * $Id: pdl_lex.l 17546 2014-02-27 13:40:10Z msalle $ * * Copyright (c) 2003 by * G.M. Venekamp * NIKHEF Amsterdam, the Netherlands * * This software is distributed under a BSD-style open source * licence. For a complete description of the licence take a look * at: http://eu-datagrid.web.cern.ch/eu-datagrid/license.html * */ /* Don't use yywrap functionality, this prevents missing symbols */ #line 27 "../../src/evaluationmanager/pdl_lex.l" #include #include "evaluationmanager/pdl_rule.h" #include "evaluationmanager/pdl.h" #include "evaluationmanager/pdl_yacc.h" #include "evaluationmanager/pdl_policy.h" #include "evaluationmanager/pdl_variable.h" /* If we are running flex, we are creating our own prototype for the lexer * called pdl_yylex(). Flex will use that, bison will still call yylex() so we * create (for flex only) yylex as a wrapper around pdl_yylex(). This is all * needed to prevent warnings about missing or redundant prototype. */ #ifdef FLEX_SCANNER #ifndef YY_DECL #define YY_DECL static int pdl_yylex(void) /* Declare prototype */ static int pdl_yylex(void); /* Note: we don't need to declare a prototype for yylex() since we have that * already declared in pdl.h. flex will not declare it flex since we use * pdl_yylex() instead */ int yylex(void) { return pdl_yylex(); } #endif #endif #ifndef _XOPEN_SOURCE /* _XOPEN_SOURCE is defined by flex on supporting platforms, hence we are on a * non-supported one: The compiler might still have defined macros to get a * prototype for strdup and fileno. As long as they are not defined as macros, * the worst thing is a duplicate prototype. So check they aren't defined as * macro. */ #ifndef strdup char *strdup(const char *s); #endif /* strdup */ #ifndef fileno int fileno(FILE *stream); #endif /* fileno */ #endif /* _XOPEN_SOURCE */ /*static int no_valid_rule=0;*/ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) \ lcmaps_pdl_warning(PDL_ERROR, "Fatal parsing error: %s", (msg)); #endif #line 564 "evaluationmanager/pdl_lex.c" #define INITIAL 0 #define path 1 #define pathcom 2 #define linecom 3 #define mq 4 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif static void yyunput (int c,char *buf_ptr ); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ unsigned n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ if ( yyleng > 0 ) \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ (yytext[yyleng - 1] == '\n'); \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 87 "../../src/evaluationmanager/pdl_lex.l" #line 756 "evaluationmanager/pdl_lex.c" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 55 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 97 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 89 "../../src/evaluationmanager/pdl_lex.l" ; YY_BREAK case 2: YY_RULE_SETUP #line 90 "../../src/evaluationmanager/pdl_lex.l" { BEGIN path; return PVAR; } YY_BREAK case 3: YY_RULE_SETUP #line 91 "../../src/evaluationmanager/pdl_lex.l" { return yytext[0]; } YY_BREAK case 4: YY_RULE_SETUP #line 92 "../../src/evaluationmanager/pdl_lex.l" ; YY_BREAK case 5: YY_RULE_SETUP #line 93 "../../src/evaluationmanager/pdl_lex.l" { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL || ((yylval.record)->string = strdup(yytext)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->lineno = lineno; return PATH; } YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP #line 101 "../../src/evaluationmanager/pdl_lex.l" { ++lineno; BEGIN INITIAL; } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 102 "../../src/evaluationmanager/pdl_lex.l" { ++lineno; BEGIN INITIAL; } YY_BREAK case 8: YY_RULE_SETUP #line 103 "../../src/evaluationmanager/pdl_lex.l" { yytext[yyleng-1] = '\0'; /* remove trailing ':' */ /* Check if this policy rule is allowed or not. */ if (lcmaps_allowed_policy_rule(yytext)) { lcmaps_allow_rules(TRUE); } else { /* This label should not be added, however normal parsing * must continue. */ lcmaps_allow_rules(FALSE); } if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL || ((yylval.record)->string = strdup(yytext)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->lineno = lineno; return LABEL; } YY_BREAK case 9: YY_RULE_SETUP #line 121 "../../src/evaluationmanager/pdl_lex.l" { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL || ((yylval.record)->string = strdup(yytext)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->lineno = lineno; return TERM; } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP #line 129 "../../src/evaluationmanager/pdl_lex.l" { ++lineno; } YY_BREAK case 11: YY_RULE_SETUP #line 130 "../../src/evaluationmanager/pdl_lex.l" { return yytext[0]; } YY_BREAK case 12: YY_RULE_SETUP #line 131 "../../src/evaluationmanager/pdl_lex.l" { return TRANS; } YY_BREAK case 13: /* rule 13 can match eol */ YY_RULE_SETUP #line 132 "../../src/evaluationmanager/pdl_lex.l" { ++lineno; } YY_BREAK case 14: /* rule 14 can match eol */ YY_RULE_SETUP #line 133 "../../src/evaluationmanager/pdl_lex.l" { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } if (yytext[yyleng-2] == '\\') { if (((yylval.record)->string = strdup(yytext+1)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->string[yyleng-2] = '\0'; (yylval.record)->string[yyleng-3] = '\"'; (yylval.record)->lineno = lineno; yyless(yyleng-1); /* make the next string start with " */ BEGIN mq; return STRING; } else if (yytext[yyleng-1] == '\"') { if (((yylval.record)->string = strdup(yytext+1)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->string[yyleng-2] = '\0'; (yylval.record)->lineno = lineno; return STRING; } else { lcmaps_pdl_warning(PDL_ERROR, "Unbalanced quotes."); return 0; } } YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP #line 161 "../../src/evaluationmanager/pdl_lex.l" { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } if (yytext[yyleng-2] == '\\') { if (((yylval.record)->string = strdup(yytext+1)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->string[yyleng-2] = '\0'; (yylval.record)->string[yyleng-3] = '\"'; (yylval.record)->lineno = lineno; yyless(yyleng-1); /* make the next string start with " */ BEGIN INITIAL; return STRING; } else { lcmaps_pdl_warning(PDL_ERROR, "Unbalanced quotes."); return 0; } } YY_BREAK case 16: YY_RULE_SETUP #line 181 "../../src/evaluationmanager/pdl_lex.l" { lcmaps_pdl_warning(PDL_WARNING, "unrecognized token '%c'.", yytext[0]); return yytext[0]; } YY_BREAK case 17: YY_RULE_SETUP #line 184 "../../src/evaluationmanager/pdl_lex.l" ECHO; YY_BREAK #line 1010 "evaluationmanager/pdl_lex.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(path): case YY_STATE_EOF(pathcom): case YY_STATE_EOF(linecom): case YY_STATE_EOF(mq): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 55 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 55 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 54); return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param line_number * */ void yyset_lineno (int line_number ) { yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) { yyin = in_str ; } void yyset_out (FILE * out_str ) { yyout = out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int bdebug ) { yy_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 184 "../../src/evaluationmanager/pdl_lex.l" /** * Function to tidy up (most of) the memory, to be called after we're done with * parsing */ void pdl_lex_cleanup(void) { #ifdef FLEX_SCANNER #if (YY_FLEX_MAJOR_VERSION>2) || \ (YY_FLEX_MAJOR_VERSION==2 && YY_FLEX_MINOR_VERSION>5) || \ (YY_FLEX_MAJOR_VERSION==2 && YY_FLEX_MINOR_VERSION==5 && \ defined(YY_FLEX_SUBMINOR_VERSION) && YY_FLEX_SUBMINOR_VERSION>=9) yylex_destroy(); #else /* flex >= 2.5.9 */ /* delete buffer */ yy_delete_buffer(YY_CURRENT_BUFFER); /* make sure to put it to zero: note that on newer flex we should use * YY_CURRENT_BUFFER_LVALUE here instead of YY_CURRENT_BUFFER itself */ YY_CURRENT_BUFFER=NULL; /* set init to 1 meaning we need to initialize */ yy_init=1; #endif /* flex >= 2.5.9 */ #endif /* FLEX_SCANNER */ } lcmaps-1.6.6/src/evaluationmanager/examples/0000755001726200004540000000000012471136741016126 500000000000000lcmaps-1.6.6/src/evaluationmanager/examples/example_1.pdl0000644001726200004540000000034212471136645020424 00000000000000# A more realistic example. path=/usr/local/lib # Set default path for the modules # ---- VARIABLES ---- v = VOMS pl = POOL px = POSIX l = LOCAL # ---- POLICIES ---- policy: v -> pl | l pl -> px l -> px lcmaps-1.6.6/src/evaluationmanager/pdl_lex.l0000644001726200004540000001643512471136645016050 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://eu-egee.org/partners/ for details on the copyright holders. * For license conditions see the license file or * http://eu-egee.org/license.html */ /* * Copyright (c) 2003 EU DataGrid http://www.eu-datagrid.org/ * * $Id: pdl_lex.l 17546 2014-02-27 13:40:10Z msalle $ * * Copyright (c) 2003 by * G.M. Venekamp * NIKHEF Amsterdam, the Netherlands * * This software is distributed under a BSD-style open source * licence. For a complete description of the licence take a look * at: http://eu-datagrid.web.cern.ch/eu-datagrid/license.html * */ /* Don't use yywrap functionality, this prevents missing symbols */ %option noyywrap %{ #include #include "evaluationmanager/pdl_rule.h" #include "evaluationmanager/pdl.h" #include "evaluationmanager/pdl_yacc.h" #include "evaluationmanager/pdl_policy.h" #include "evaluationmanager/pdl_variable.h" /* If we are running flex, we are creating our own prototype for the lexer * called pdl_yylex(). Flex will use that, bison will still call yylex() so we * create (for flex only) yylex as a wrapper around pdl_yylex(). This is all * needed to prevent warnings about missing or redundant prototype. */ #ifdef FLEX_SCANNER #ifndef YY_DECL #define YY_DECL static int pdl_yylex(void) /* Declare prototype */ static int pdl_yylex(void); /* Note: we don't need to declare a prototype for yylex() since we have that * already declared in pdl.h. flex will not declare it flex since we use * pdl_yylex() instead */ int yylex(void) { return pdl_yylex(); } #endif #endif #ifndef _XOPEN_SOURCE /* _XOPEN_SOURCE is defined by flex on supporting platforms, hence we are on a * non-supported one: The compiler might still have defined macros to get a * prototype for strdup and fileno. As long as they are not defined as macros, * the worst thing is a duplicate prototype. So check they aren't defined as * macro. */ #ifndef strdup char *strdup(const char *s); #endif /* strdup */ #ifndef fileno int fileno(FILE *stream); #endif /* fileno */ #endif /* _XOPEN_SOURCE */ /*static int no_valid_rule=0;*/ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) \ lcmaps_pdl_warning(PDL_ERROR, "Fatal parsing error: %s", (msg)); #endif %} ws [\t ]+ nl \n term [a-zA-Z_\.0-9/]+ label ^[ \t]*[a-zA-Z_\.0-9/]+: trans "->" comment #[^\n]*\n tokens [\~=\|] pvar "path" pdlstr \"[^\"\n]*[\"\n] %x path pathcom linecom mq %% {ws} ; {pvar} { BEGIN path; return PVAR; } {tokens} { return yytext[0]; } {ws} ; {term} { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL || ((yylval.record)->string = strdup(yytext)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->lineno = lineno; return PATH; } \n { ++lineno; BEGIN INITIAL; } {comment} { ++lineno; BEGIN INITIAL; } {label} { yytext[yyleng-1] = '\0'; /* remove trailing ':' */ /* Check if this policy rule is allowed or not. */ if (lcmaps_allowed_policy_rule(yytext)) { lcmaps_allow_rules(TRUE); } else { /* This label should not be added, however normal parsing * must continue. */ lcmaps_allow_rules(FALSE); } if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL || ((yylval.record)->string = strdup(yytext)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->lineno = lineno; return LABEL; } {term} { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL || ((yylval.record)->string = strdup(yytext)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->lineno = lineno; return TERM; } {nl} { ++lineno; } {tokens} { return yytext[0]; } {trans} { return TRANS; } {comment} { ++lineno; } {pdlstr} { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } if (yytext[yyleng-2] == '\\') { if (((yylval.record)->string = strdup(yytext+1)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->string[yyleng-2] = '\0'; (yylval.record)->string[yyleng-3] = '\"'; (yylval.record)->lineno = lineno; yyless(yyleng-1); /* make the next string start with " */ BEGIN mq; return STRING; } else if (yytext[yyleng-1] == '\"') { if (((yylval.record)->string = strdup(yytext+1)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->string[yyleng-2] = '\0'; (yylval.record)->lineno = lineno; return STRING; } else { lcmaps_pdl_warning(PDL_ERROR, "Unbalanced quotes."); return 0; } } {pdlstr} { if ((yylval.record = (record_t*)malloc(sizeof(record_t))) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } if (yytext[yyleng-2] == '\\') { if (((yylval.record)->string = strdup(yytext+1)) == NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } (yylval.record)->string[yyleng-2] = '\0'; (yylval.record)->string[yyleng-3] = '\"'; (yylval.record)->lineno = lineno; yyless(yyleng-1); /* make the next string start with " */ BEGIN INITIAL; return STRING; } else { lcmaps_pdl_warning(PDL_ERROR, "Unbalanced quotes."); return 0; } } . { lcmaps_pdl_warning(PDL_WARNING, "unrecognized token '%c'.", yytext[0]); return yytext[0]; } %% /** * Function to tidy up (most of) the memory, to be called after we're done with * parsing */ void pdl_lex_cleanup(void) { #ifdef FLEX_SCANNER #if (YY_FLEX_MAJOR_VERSION>2) || \ (YY_FLEX_MAJOR_VERSION==2 && YY_FLEX_MINOR_VERSION>5) || \ (YY_FLEX_MAJOR_VERSION==2 && YY_FLEX_MINOR_VERSION==5 && \ defined(YY_FLEX_SUBMINOR_VERSION) && YY_FLEX_SUBMINOR_VERSION>=9) yylex_destroy(); #else /* flex >= 2.5.9 */ /* delete buffer */ yy_delete_buffer(YY_CURRENT_BUFFER); /* make sure to put it to zero: note that on newer flex we should use * YY_CURRENT_BUFFER_LVALUE here instead of YY_CURRENT_BUFFER itself */ YY_CURRENT_BUFFER=NULL; /* set init to 1 meaning we need to initialize */ yy_init=1; #endif /* flex >= 2.5.9 */ #endif /* FLEX_SCANNER */ } lcmaps-1.6.6/src/evaluationmanager/pdl_main.c0000644001726200004540000005451212471136645016171 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_main.c * * \brief All functions that do not fit elsewhere can be found here. * * In here one can find the more general functions. Most of them are * accessible to outside sources. For a complete list of usable function * to out side sources, \see pdl.h. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 18217 $ * \date $Date: 2015-02-02 12:00:49 +0100 (Mon, 02 Feb 2015) $ * */ #define _XOPEN_SOURCE 500 #include #include #include #include #include #include "lcmaps_log.h" #include "evaluationmanager/pdl.h" #include "evaluationmanager/pdl_variable.h" #include "evaluationmanager/pdl_policy.h" #include "evaluationmanager/pdl_rule.h" #define WARNBUFLEN ((size_t)2048L) static char* script_name = NULL; /* If non NULL, the name of the configuration script. */ static char* path = NULL; /* Path where plugins can be found. */ static const char* undefined = "(empty string)"; /*String printed instead of (null) */ static int path_lineno = 0; /* Path line number. */ static plugin_t* top_plugin = NULL; /* First node of the list. */ static BOOL parse_error = FALSE; /* Tell if there have been any error during parsing. */ static const char* level_str[PDL_SAME]; /* When a message is printed, how do we spell warning in a given language. */ static policy_t* current_policy = NULL; static const rule_t* current_rule = NULL; int lineno = 1; /* The first line of a configuration sctipt is labeled 1. */ static void _lcmaps_set_path(const record_t* _path); static record_t* _lcmaps_concat_strings(const record_t* s1, const record_t* s2, const char* extra); /* void lcmaps_reduce_policies(void); */ static int lcmaps_init_name_args(plugin_t** plugin, const rule_t* rule, rule_type_t type); static BOOL lcmaps_plugin_exists(const char* string); static size_t lcmaps_find_first_space(const char* string); static int lcmaps_free_plugins(plugin_t ** list); /*! * Return the current policy. * */ policy_t * lcmaps_get_current_policy(void) { return current_policy; } /*! * Init the pdl engine. The function takes one argument, the name * of a configuration file to use. * * \param name Name of the configuration file to use. * \return 0 in case the initialization is successful; -1 in case of * not being successful. * */ int lcmaps_pdl_init(const char* name) { /* Make sure at least these variables are ALWAYS defined, so start with that. * Otherwise we get a problem when printing a warning. * This code SHOULD be rewritten for clarity reasons. */ /* Init the levels with the appropriate print text. */ level_str[PDL_INFO] = "info"; level_str[PDL_WARNING] = "warning"; level_str[PDL_ERROR] = "error"; level_str[PDL_UNKNOWN] = ""; /* Initialize lineno to 1, a second run will not have it initialized */ lineno=1; if (name) { FILE* file; script_name = strdup(name); if (script_name==NULL) { lcmaps_pdl_warning(PDL_ERROR, "Out of memory when trying to open '%s'.", name); return -1; } file = fopen(name, "r"); if (file) /* set_active_yyin (file); */ yyin = file; else { lcmaps_pdl_warning(PDL_ERROR, "Could not open file '%s'.", name); return -1; } } /* Set the default path */ path = NULL; /* * Check if there are plugins, if so clear top_plugin and free * all allocated memory. */ if (top_plugin) lcmaps_free_plugins(&top_plugin); /* while (top_plugin) { if (top_plugin->name) { free(top_plugin->name); } if (top_plugin->args) { free(top_plugin->args); } top_plugin = top_plugin->next; } */ parse_error = FALSE; return 0; } /*! * Tell if there were errors/warning during parsing. * * \return 0, if the are no errors/warnings, -1 otherwise. * */ int yyparse_errors(void) { return parse_error ? -1 : 0; } /*! * Get a list of plugins as known by the configuration file. * * \return Plugin list (linked list). * */ const plugin_t* lcmaps_get_plugins(void) { plugin_t* plugin; policy_t* policy; /* * Check if the policies have been reduced. If not, then getting * the plugins and their arguments is useless; the variables have * not been substituted yet. */ if (!lcmaps_policies_have_been_reduced()) { lcmaps_log(LOG_ERR, "The policies have not been reduced. Probably the startElevaluationManager has failed or has not been called yet.\n"); return 0; } /* * Check if evaluation has been done before, if so use the old * results. */ if (top_plugin) return top_plugin; policy = lcmaps_get_policies(); while (policy) { rule_t* rule = policy->rule; lcmaps_log_debug(2, "processing policy: %s\n", policy->name); while (rule) { lcmaps_log_debug(4, " processing rule: %s -> %s | %s\n", rule->state ? rule->state : undefined, rule->true_branch ? rule->true_branch : undefined, rule->false_branch ? rule->false_branch : undefined); lcmaps_log_debug(4, " get_plugins: initializing...\n"); if (lcmaps_init_name_args(&plugin, rule, STATE)<0 || lcmaps_init_name_args(&plugin, rule, TRUE_BRANCH)<0 || lcmaps_init_name_args(&plugin, rule, FALSE_BRANCH)<0) { lcmaps_log(LOG_ERR,"Error initializing plugins.\n"); return NULL; } lcmaps_log_debug(4, " get_plugins: initializing done.\n"); rule = rule->next; } policy = policy->next; } return top_plugin; } /*! * Free the list of plugins to which "list" points. * Also the pointer to the first plugin is set to NULL. * * \param list Pointer to the plugin list. * * \retval 0 success * \retval 1 failure * */ static int lcmaps_free_plugins( plugin_t ** list ) { plugin_t * p_list = NULL; plugin_t * tmp_p_list = NULL; p_list = *list; while (p_list) { tmp_p_list = p_list->next; lcmaps_log_debug(5, "freeing plugin %s at address %p\n", p_list->name, (void*)p_list); if (p_list->name){ free(p_list->name); p_list->name = NULL; } if (p_list->args){ free(p_list->args); p_list->args = NULL; } p_list->next = NULL; free((plugin_t*)p_list); p_list = tmp_p_list; } *list=p_list=NULL; return 0; } /*! * Check if a plugin as specified by the string argument exists. * * \param string Name of the plugin. * \return TRUE if the plugin exists, FALSE otherwise. * */ static BOOL lcmaps_plugin_exists(const char* string) { size_t space,string_len; plugin_t *plugin; string_len= strlen(string); space = lcmaps_find_first_space(string); plugin = top_plugin; while (plugin) { if (plugin->name && strncmp(plugin->name, string, space)==0) { if (plugin->args) if (string_len<=space+1 || strncmp(plugin->args, string+space+1, string_len-space-1)!=0) { plugin = plugin->next; continue; } return TRUE; } plugin = plugin->next; } return FALSE; } /*! * */ static int lcmaps_init_name_args(plugin_t** plugin, const rule_t* rule, rule_type_t type) { size_t space, remainder, string_len; const char* string; const char* branch; switch (type) { case STATE: string = rule->state; branch = "STATE"; break; case TRUE_BRANCH: string = rule->true_branch; branch = "TRUE_BRANCH"; break; case FALSE_BRANCH: string = rule->false_branch; branch = "FALSE_BRANCH"; break; default: lcmaps_pdl_warning(PDL_ERROR, "init_name_args: unknown type!"); return -1; } if (!string) { lcmaps_log(LOG_DEBUG, " init_name_args: no plugin on %s\n",branch); return 0; } lcmaps_log_debug(5, " init_name_args: processing %s: %s\n", branch,string); if (lcmaps_plugin_exists(string)) { lcmaps_log_debug(5, " init_name_args: The plugin already exists.\n"); /* Not an error */ return 0; } lcmaps_log_debug(3, " init_name_args: plugin does not yet exist.\n"); if (!top_plugin) { if ( (top_plugin = (plugin_t*)malloc(sizeof(plugin_t)))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return -1; } *plugin = top_plugin; } else { if ( ((*plugin)->next = (plugin_t*)malloc(sizeof(plugin_t)))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return -1; } *plugin = (*plugin)->next; } (*plugin)->name = (*plugin)->args = NULL; (*plugin)->next = NULL; string_len=strlen(string); space = lcmaps_find_first_space(string); lcmaps_log_debug(5, " init_name_args: space found a pos: %lu strlen = %lu.\n", (long unsigned)space, (long unsigned)string_len); if ( ((*plugin)->name = (char *)malloc(space+1))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return -1; } strncpy((*plugin)->name, string, space); *((*plugin)->name+space) = '\0'; if (string_len>space+1) { remainder = string_len-space-1; if ( ((*plugin)->args = (char *)malloc(remainder+1))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return -1; } strncpy((*plugin)->args, string+space+1, remainder); *((*plugin)->args+remainder) = '\0'; } else (*plugin)->args = NULL; (*plugin)->lineno = rule->lineno; (*plugin)->next = NULL; lcmaps_log_debug(4, " init_name_args: plugin->name = %s\n", (*plugin)->name ? (*plugin)->name : undefined ); lcmaps_log_debug(4, " init_name_args: plugin->args = %s\n", (*plugin)->args ? (*plugin)->args : undefined ); return 0; } /*! * Find the first occurrence of a space in a string. * * \param string String where the first space needs to be found. * \return Position of the first occurrence of the space. If no space * could be found, the position is set to the length of the * string. * */ static size_t lcmaps_find_first_space(const char* string) { size_t space, max_length; space = 0; max_length = strlen(string); for (; *string++ != ' ' && space < max_length; ++space); return space; } /*! * Get the path. * * \return Path. */ char *lcmaps_pdl_path(void) { return path; } /*! * When yacc encounters an error during the parsing process of * the configuration file, it calls yyerror(). The actual message * formatting is done in waring(); * * \param s error string. */ int yyerror(const char* s) { /* lcmaps_log_debug(3, "%s\n", token_name()); */ lcmaps_pdl_warning(PDL_ERROR, "%s", s); return 0; } /*! * Function is called when the parser has found the value of the * reserved path word. This function acts as a wrapper for the * _lcmaps_set_path() function. * * \param mypath path to be set */ void lcmaps_set_path(record_t* mypath) { _lcmaps_set_path(mypath); if (mypath) { free(mypath->string); free(mypath); } } /*! * Set the path with the new value. If this function is called more than once, * a warning message is displayed for each occurent. * * \param _path The new path. * */ static void _lcmaps_set_path(const record_t* _path) { /* lcmaps_log_debug(3, "lcmaps_set_path: '%s'.\n", _path); */ if (path!=NULL) { lcmaps_pdl_warning(PDL_WARNING, "path already defined as %s in line: %d; ignoring this instance.", path, path_lineno); return; } if (_path!=NULL) { /* Only act when value is provided */ path_lineno = _path->lineno; if ((_path->string)[0]!='/') { /* Relative path: prefix LCMAPS_LIB_HOME */ path=calloc(strlen(LCMAPS_LIB_HOME)+strlen(_path->string)+2,sizeof(char)); if (path==NULL) { lcmaps_pdl_warning(PDL_ERROR, "Out of memory when setting path."); return; } sprintf(path,"%s/%s",LCMAPS_LIB_HOME,_path->string); } else { path = strdup(_path->string); if (path==NULL) { lcmaps_pdl_warning(PDL_ERROR, "Out of memory when setting path."); return; } } lcmaps_log_debug(LOG_DEBUG, "Modules search path is set to %s (line %d).\n", path, path_lineno); } } /*! * Free the string allocated to hold the path */ void lcmaps_free_path(void) { free(path); path = NULL; } /*! * Concatenate two strings. The original two strings are freed. When * the concatenation fails, the original strings are still freed. The * actual concatenation is done by _lcmaps_concat_strings(). * * \param s1 first half of the string. * \param s2 second half of the string. * \return new string which is the concatenation of s1 and s2. * */ record_t* lcmaps_concat_strings(record_t* s1, record_t* s2) { record_t* r = _lcmaps_concat_strings(s1, s2, 0); free(s1->string); free(s2->string); free(s1); free(s2); return r; } /*! * Concatenate two string. * * \param s1 first half of the string. * \param s2 second half of the string. * \param extra extra string to be inserted between s1 and s2 * \return new string which is the concatenation of s1 and s2. * */ static record_t* _lcmaps_concat_strings(const record_t* s1, const record_t* s2, const char* extra) { size_t len = strlen(s1->string); size_t len_extra = extra ? strlen(extra) : 0; record_t* record = (record_t *)malloc(sizeof(record_t)); if ( record==NULL || (record->string = (char *)malloc(len + len_extra + strlen(s2->string)+1))==NULL ) { lcmaps_pdl_warning(PDL_ERROR, "out of memory"); return NULL; } strcpy(record->string, s1->string); if (extra) strcpy(record->string+len, extra); strcpy(record->string+len+len_extra, s2->string); /* lcmaps_log_debug(3, "lcmaps_concat_strings: '%s' + '%s' = '%s'.\n", s1, s2, s3); */ return record; } /*! * Concatenate two strings. The original two strings are freed. When * the concatenation fails, the original strings are still freed. The * actual concatenation is done by _lcmaps_concat_strings(). * * \param s1 First string. * \param s2 Second string * \return Concatenated strings of s1 + s2. * */ record_t* lcmaps_concat_strings_with_space(record_t* s1, record_t* s2) { record_t* r; /* Check if there is a string to add. */ if (strlen(s2->string)!=0) { /* * When the first and second string end with ", do not an extra * space. This is the result of an sequence of escaped ". */ if ((s1->string[strlen(s1->string)-1]=='"') && (s2->string[strlen(s2->string)-1]=='"')) r = _lcmaps_concat_strings(s1, s2, 0); else r = _lcmaps_concat_strings(s1, s2, " "); free(s1->string); free(s2->string); free(s1); free(s2); } else { /* * Since there is nothing to concatenate, we simply copy the * first string (s1) to the result. */ if ( (r = (record_t*)malloc(sizeof(record_t)))==NULL) { lcmaps_pdl_warning(PDL_ERROR, "out of memory"); return NULL; } memcpy(r, s1, sizeof(record_t)); } return r; } /*! * Find the next plugin to evaluate based on the return status of the * previous plugin evaluation. There are three statuses, two of which * are rather obvious: either the previous evaluation has succeeded * (EVALUATION_SUCCESS), or it has failed (EVALUATION_FAILURE). Based * on these results, the next plugin should be the true_branch or * false_branch respectively. There is one situation where there is * no previous evaluation and that is at the very beginning. The * very first call to this function should have (EVALUATION_START) as * arguments. In this case the current state of the rule is returned * as the next plugin to evaluate. * * \param status Status of previous evaluation. * \return plugin name to be evaluation according to the * configuration file. * */ char* lcmaps_pdl_next_plugin(plugin_status_t status) { /* int rc = 0; */ char* string = NULL; char* state = NULL; char* tmp = NULL; switch (status) { case EVALUATION_START: /* Make sure that there is a policy list. */ if (!(current_policy = lcmaps_get_policies())) return NULL; if (!(current_rule = current_policy->rule)) return NULL; state = current_rule->state; break; case EVALUATION_SUCCESS: if (current_rule) state = current_rule->true_branch; if (current_policy && state) current_rule = lcmaps_find_state(current_policy->rule, state); else current_rule = NULL; break; case EVALUATION_FAILURE: /* * Find the next rule for evaluation. The plugins specified by * that rule will not be returned by this iterating of the * function. Instead the static/global variables are setup, such * that on the next iteration the next plugin is returned. Only * after the evaluation of the plugin found during this iteration * can a decision be made which plugin to return. * * When the last rule has been evaluated, there is the * possibility that there is another policy in the configration. * Instead of stopping at the end of a rule chain, setup the * variables for the next policy rule. * */ if (current_rule) { state = current_rule->false_branch; } /* * Check if either there is a current_rule or a state. If so, we * can continue. If there is no current rule, there might be a * next policy. This needs to be evaluated next. If there is no * state, this is because the false branch does not exist and * hence we need to evaluate possible next policies. * */ if (!(current_rule && state)) { /* Check if there is a next plug-in policy to run */ if (current_policy && (current_policy = current_policy->next)) { if ((current_rule = current_policy->rule)) { state = current_rule->state; } } else { /* No more policies to run */ lcmaps_log_debug (5, "evaluationmanager: No more policies to run\n"); } } else { /* We have a valid next state. Let's find the next rule. */ if (current_policy) { current_rule = lcmaps_find_state(current_policy->rule, state); } } break; } /* * Create the plugin name from the plugin name+arguments as contained in * state. The absolute pluginname is contained in the absname and is * initialized in PluginInit via lcmaps_findplugin(). The part duplicates the * string and strips everything following the first space (i.e. arguments). */ if (state) { string=strdup(state); if (string==NULL) { lcmaps_pdl_warning(PDL_ERROR, "Out of memory."); return NULL; } tmp = strchr(string,' '); if (tmp) *tmp='\0'; lcmaps_log_debug(3, "evaluationmanager: found plugin: %s\n", string); } return string; } /*! * Free the resources. * */ void lcmaps_free_resources(void) { #if 0 FILE * my_yyin = NULL; #endif if (script_name) { free(script_name); script_name = NULL; } lcmaps_free_path(); lcmaps_free_variables(); lcmaps_free_policies(); lcmaps_free_plugins(&top_plugin); /* * YACC takes its input from the stdin by default. When the input * is taken from a file, the yyin variable will have a different * value from stdin and stderr. If so, it is necessary to close it. */ /* By pass function */ #if 0 my_yyin = get_active_yyin(); if ((my_yyin!=stdin) && (my_yyin!=stderr)) { if (my_yyin) fclose(my_yyin); /* my_yyin=stdin; */ set_active_yyin (stdin); #else if (yyin!=stdin && yyin!=stderr) { if (yyin) fclose(yyin); yyin=stdin; #endif } } /*! * Display a warning message. * * \param error Severity of the error. * \param s The text string followed by additional values; much like * printf(char *, ...); * */ void lcmaps_pdl_warning(pdl_error_t error, const char* s, ...) { static const char* level = NULL; char buf[WARNBUFLEN]; int res; size_t len; va_list args; if (error == PDL_ERROR) parse_error = TRUE; if (!level) level = level_str[PDL_UNKNOWN]; if (error != PDL_SAME) level = level_str[error]; /* * Prepend a standard text before the message. This makes reading * the errors/warnings a little easier. */ res = snprintf(buf, WARNBUFLEN, "%s:%d: [%s] ", script_name, lineno, level); if (res<0) { lcmaps_log(LOG_ERR, "Cannot log message: %s\n",strerror(errno)); len=0; } else { len=(size_t)res; if (len>WARNBUFLEN-2) { lcmaps_log(LOG_ERR, "Log message is too long\n"); return; } } /* Print (format) the actual message. */ va_start(args, s); res = vsnprintf(buf+len, WARNBUFLEN-2-len, s, args); va_end(args); if (res<0) { lcmaps_log(LOG_ERR, "Cannot log message: %s\n",strerror(errno)); return; } len+=(size_t)res; if (len>WARNBUFLEN-2) { lcmaps_log(LOG_ERR, "Log message is too long\n"); return; } /* * The string needs to end in a new line and of course strings are * termintated by the end of string character. Make sure it happens * and respect the buffer size! */ buf[len * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file evaluationmanager.h * * \brief Evaluation Manager interface definition. * * The function listed in here are accessible to anyone. This is the * way to communicate with the evaluation manager. The evaluation * manager deligates the becessary work to the Policy Language * Description module (PDL). * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17210 $ * \date $Date: 2013-12-05 18:12:28 +0100 (Thu, 05 Dec 2013) $ * */ #ifndef _EVALUATIONMANAGER_H #define _EVALUATIONMANAGER_H #include "pdl.h" #include "lcmaps_db_read.h" extern int lcmaps_startEvaluationManager(const char* name, int argc, char*argv[]); extern int lcmaps_getPluginNameAndArgs(lcmaps_db_entry_t** plugin); extern int lcmaps_runEvaluationManager(int argc, char *argv[]); extern int lcmaps_stopEvaluationManager(void); #endif lcmaps-1.6.6/src/evaluationmanager/pdl_rule.h0000644001726200004540000000647412471136645016225 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_rule.h * * \brief Include file for using the pdl rules. * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17536 $ * \date $Date: 2014-02-27 11:12:15 +0100 (Thu, 27 Feb 2014) $ * */ #ifndef _PDL_RULE_H #define _PDL_RULE_H #include "pdl.h" /*! * \brief Structure keeps track of the state and the true/false * braches. * */ typedef struct rule_s { char* state; /* Name of the state. */ char* true_branch; /* Name of the true_branch, or 0 if none. */ char* false_branch; /* Name of the false_branch, or 0 if none. */ int lineno; /* Line number where rule appeared. */ struct rule_s* next; /* Next rule, or 0 if none. */ } rule_t; /*! * \brief Which type is the current rule. */ typedef enum { STATE, /* State */ TRUE_BRANCH, /* True branch */ FALSE_BRANCH /* False branch */ } rule_type_t; /*! * \brief Tell something about recursion in rules. */ typedef enum { NO_RECURSION = 0x00, /* There is no known recursion. */ RECURSION = 0x01, /* Recursion has been found. */ RECURSION_HANDLED = 0x02 /* Recursion has been found and handled/reported. */ } recursion_t; /*! * \brief Given a rule, which side of the rule are we working on. */ typedef enum { left_side, /* left side, i.e. state part of the rule. */ right_side /* right side, i.e. either true or false branch. */ } side_t; extern rule_t* lcmaps_add_rule(record_t* state, record_t* true_branch, record_t* false_branch); extern void lcmaps_free_rules(rule_t* rule); extern rule_t* lcmaps_find_state(rule_t* rule, char* state); extern void lcmaps_show_rules(rule_t* rule); extern void lcmaps_start_new_rules(void); extern rule_t* lcmaps_get_top_rule(void); extern void lcmaps_allow_new_rules(BOOL allow); extern rule_t* lcmaps_get_rule(char* rule, side_t side); extern void lcmaps_set_top_rule(rule_t* rule); extern BOOL lcmaps_check_rule_for_recursion(rule_t* rule); extern void lcmaps_reduce_rule(rule_t* rule); #endif lcmaps-1.6.6/src/evaluationmanager/pdl_policy.h0000644001726200004540000000554612471136645016554 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_policy.h * * \brief Include file for using the pdl policies. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17210 $ * \date $Date: 2013-12-05 18:12:28 +0100 (Thu, 05 Dec 2013) $ * */ #ifndef _PDL_POLICY_H #define _PDL_POLICY_H #include "pdl.h" #include "pdl_rule.h" /*! * \brief Keeping track of found policies. * */ typedef struct policy_s { char* name; /*!< Name of the policy. */ rule_t* rule; /*!< Pointer to the first rule of the policy. */ int lineno; /*!< Line number where the polict was found. */ struct policy_s* next; /*!< Next policy, or 0 if none. */ struct policy_s* prev; /*!< Previous policy, or 0 if none. */ } policy_t; extern void lcmaps_add_policy(record_t* policy, rule_t* rules); extern void lcmaps_remove_policy(record_t* name); extern void lcmaps_show_policies(void); extern void lcmaps_cleanup_policies(void); extern void lcmaps_free_policies(void); extern void lcmaps_allow_rules(BOOL allow); extern BOOL lcmaps_check_policies_for_recursion(void); extern void lcmaps_reduce_policies(void); extern BOOL lcmaps_policies_have_been_reduced(void); extern void lcmaps_SetSetOfRules(int, char**); extern policy_t* lcmaps_find_policy(const char* name); extern policy_t* lcmaps_get_policies(void); /* * Well, this is dirty indeed! It not the function itself that * is dirty, it's the fact that it is defined in pdl_main.c instead * of pdl_policy.c. It is the only way I got it compiling. */ extern policy_t * lcmaps_get_current_policy(void); #endif lcmaps-1.6.6/src/evaluationmanager/pdl_rule.c0000644001726200004540000004761012471136645016215 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_rule.c * * \brief Implementation of the pdl rules. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 18216 $ * \date $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ * */ /* Needed for NULL */ #include #include #include #include "lcmaps_log.h" #include "pdl.h" #include "pdl_rule.h" #include "pdl_policy.h" #include "pdl_variable.h" static rule_t *top_rule = NULL; static rule_t *last_rule = NULL; static BOOL add_new_rules = TRUE; static rule_t* _lcmaps_add_rule(record_t* state, record_t* true_branch, record_t* false_branch); /* const rule_t* lcmaps_find_state(const rule_t* rule, const char* state); */ static recursion_t lcmaps_has_recursion(rule_t* rule, unsigned int* list, unsigned int depth, unsigned int* seen_rules); static unsigned int lcmaps_find_insert_position(unsigned int* list, unsigned int my_rule_number, unsigned int high); static unsigned int lcmaps_rule_number(rule_t* rule); static BOOL lcmaps_make_list(unsigned int* new_list, unsigned int* list, unsigned int my_rule_number, unsigned int depth); static unsigned int lcmaps_count_rules(rule_t* rule); static void lcmaps_update_list(unsigned int* rules, unsigned int rule); static rule_t* lcmaps_get_rule_number(unsigned int rule_num); /*! * Start a new list of rules. */ void lcmaps_start_new_rules(void) { /* lcmaps_log_debug(1, "start_new_rule: starting new rules.\n"); */ top_rule = last_rule = 0; } /*! * Is it allowed to add new rules? * * \param allow TRUE if adding new rules is allowed, FALSE otherwise. * */ void lcmaps_allow_new_rules(BOOL allow) { add_new_rules = allow; } /*! * Add a new rule to the list of rules. This function acts as a * wrapper function for _lcmaps_add_rule(). * * \param state Starting state * \param true_branch True transit state * \param false_branch False transit state * */ rule_t* lcmaps_add_rule(record_t* state, record_t* true_branch, record_t* false_branch) { /* * This is for a somewhat dirty hack. * * The yacc parser cannot determine the end of expression of the * form 'a -> b'. This is because 'a -> b' might be followed * by '| c'. Therefore, yacc continues to scan on the next line. * Lex on the other hand simply looks at new lines and increases * the line counter each time it sees one. When an error needs * to be reported, the global line number might be advanced too * far. To counter act this problem, the state variable contains * the right line number, i.e. the line where the current rule * was started. By setting the the global lineno variable to the * correct line number; doing out stuff; and finally setting back * the lineno variable to its original value, we circumvent the * problem of misreported line nubmers. */ rule_t* rule = NULL; if (!(rule = _lcmaps_add_rule(state, true_branch, false_branch))) { free(state->string); if (true_branch) free(true_branch->string); if (false_branch) free(false_branch->string); } free(state); if (true_branch) free(true_branch); if (false_branch) free(false_branch); return rule; } /*! * Rules come in three different forms: * -# a -> b * -# a -> b | c * -# ~a ->b * * They share a common structure. First the left hand side gives * the starting state and right hand side the states to transit * to. This means that each rule has a starting state and depending * on the form one or two transit states: * - The first form has only the true transit state; * - The second form had both true and false transit states; * - The thrird for has only the false transit state. * When either the true or false transit state for a rule does not * exists, 0 should be supplied. * * \param state Starting state * \param true_branch True transit state * \param false_branch False transit state * * \return TRUE if the rule has been added successfully, FALSE otherwise. * */ static rule_t* _lcmaps_add_rule(record_t* state, record_t* true_branch, record_t* false_branch) { rule_t* rule = NULL; policy_t* policy = NULL; if ((policy = lcmaps_find_policy(state->string))) { lcmaps_pdl_warning(PDL_ERROR, "Left hand side of a rule cannot be a policy; see also line %d.", policy->lineno); return 0; } /* cast away constness. */ if ((rule = lcmaps_find_state(top_rule, state->string))) { lcmaps_pdl_warning(PDL_ERROR, "State '%s' is already in use. See line %d.\n", state->string, rule->lineno); return 0; } if ((true_branch && (policy = lcmaps_find_policy(true_branch->string))) || (false_branch && (policy = lcmaps_find_policy(false_branch->string)))) lcmaps_pdl_warning(PDL_ERROR, "Rule contians reference to a policy. This is currently not supported."); /* Do not return 0 if a warning has been issued. Ignore the fact that * * a policy rule has been used. Use its name as a module instead. */ /* Check if we just needed to check the rule for errors, or add the rule after checking as well. */ if (!add_new_rules) return 0; if (!(rule = (rule_t *)malloc(sizeof(rule_t)))) { lcmaps_pdl_warning(PDL_ERROR, "out of memory."); return 0; } rule->state = state->string; rule->true_branch = true_branch ? true_branch->string : 0; rule->false_branch = false_branch ? false_branch->string : 0; rule->lineno = state->lineno; rule->next = 0; if (top_rule) last_rule->next = rule; else top_rule = rule; last_rule = rule; return rule; } /*! * Find a state with name state. * * \param state Name of the state to be found. * \param rule list of rules to be searched * \return Rule which contains the state or 0 when no such rule could * be found. * */ rule_t* lcmaps_find_state(rule_t* rule, char* state) { if (!rule || !state) return NULL; while (rule && strcmp(state, rule->state)) rule = rule->next; return rule; } /*! * Check the rule for occurances of recursion. * * \return TRUE if a recursion have been found, FALSE otherwise. * */ BOOL lcmaps_check_rule_for_recursion(rule_t* rule) { unsigned int num_rules = lcmaps_count_rules(rule); unsigned int *rules = NULL; recursion_t rc; unsigned int i = 0; rules = (unsigned int*)calloc((size_t)(num_rules+1), sizeof(*rules)); top_rule = rule; rc = lcmaps_has_recursion(rule, NULL, 0, rules); if (rules[0] != num_rules) { int j=1; for (i=1; i<=num_rules; i++) { if (rules[j] != i) { lineno = lcmaps_get_rule_number(i-1)->lineno; lcmaps_pdl_warning(PDL_WARNING, "rule is not part of the chain."); } else j++; } } free(rules); return (rc & RECURSION) ? TRUE : FALSE; } /*! * Count the number of rules that follow 'rule' inclusive. * * \param rule The rule to start count from. * \return Number of counted rules. * */ static unsigned int lcmaps_count_rules(rule_t* rule) { unsigned int c=0; while (rule) { c++; rule = rule->next; } return c; } /*! * Give the position of the rule in the policy, return that rule. * * \param rule_num Position of the rule in the current policy. * \return Rule that is associated with the rule_num, NULL if the * rule cannot be found. * */ static rule_t* lcmaps_get_rule_number(unsigned int rule_num) { unsigned int i = 0; rule_t* r = NULL; for (i=0, r=top_rule; r && inext; return r; } /*! * Check the a rule for recursion. This is done in a recursive * manner. From the top rule, all possible paths are considered. * Each path becomes a top of its own and from their all possible * paths are traveled. Each time the tree is searched at a greater * depth, a list is kept to tell which states have been seen for * the current path. In this list of states no duplicates should * be present. If a seen state state already appears in the list, * the path taken is recursive. This information is propagated back * up the traveled tree. * * At the same time another list is maintained. In this list all * visited states are remembered. Duplicates are not added. When all * possible paths have been traveled, the list tells all visited * rules. When a particular rule is not part of the tree, it is also * not listed in the list. This way one can check for disconnected * rules. * * \param rule Rule to check for recursion. * \param list List to keep track of each traveled path. * \param depth Current depth of the tree. * \param seen_rules Rules that have been visited and hence are part * of the path. * * \return Whether or not recursion has been detected and also if it * has been reported. * */ static recursion_t lcmaps_has_recursion(rule_t* rule, unsigned int* list, unsigned int depth, unsigned int* seen_rules) { unsigned int rule_num = 0; recursion_t rc; unsigned int* new_list = NULL; ++depth; /* * If there is no more rule we have reached the end and hance did * no encounter any recursion. */ if (!rule) return NO_RECURSION; /* * Allocate memory to hold a new list. The number of elements in * the equals the depth of the tree. */ new_list = (unsigned int*)malloc(depth*sizeof(unsigned int)); rc = NO_RECURSION; rule_num = lcmaps_rule_number(rule); /* Update the list of visited rules. */ lcmaps_update_list(seen_rules, rule_num); /* * First make a new list, this list is based upon the current list. * The list is extended with the current state. If the list cannot * be created, because the current state is already in the list, we * have found recursion and the current path is abandoned. */ if (lcmaps_make_list(new_list, list, rule_num, depth)) { /* No recursion yet, keep on looking... */ recursion_t rcl=rc, rcr=rc; /* If present, check if the true branch has any recursion. */ if (rule->true_branch) { rcl = lcmaps_has_recursion(lcmaps_find_state(top_rule, rule->true_branch), new_list, depth, seen_rules); /* * Check the return condition. It tells whether recursion has * been found. If so, it also tells if the recursion has been * reported. This is to prevent multiple error messages on the * same rule for the same path. * * NOTE: When the same rule causes a recursion in a different * path, the error is displayed for each of these paths. * */ if ((rcl&RECURSION) && !(rcl&RECURSION_HANDLED)) { lineno = rule->lineno; if (rule->false_branch) lcmaps_pdl_warning(PDL_ERROR, "rule %s -> %s | %s causes infinite loop on true transition %s.", rule->state, rule->true_branch, rule->false_branch, rule->true_branch); else lcmaps_pdl_warning(PDL_ERROR, "rule %s -> %s causes infinite loop on transition %s.", rule->state, rule->true_branch, rule->true_branch); /* * Set the handled bit to indicate that the current recursion * has been reported. */ rcl |= RECURSION_HANDLED; } } /* If present, check if the false branch has any recursion. */ if (rule->false_branch) { rcr = lcmaps_has_recursion(lcmaps_find_state(top_rule, rule->false_branch), new_list, depth, seen_rules); if ((rcr&RECURSION) && !(rcr&RECURSION_HANDLED)) { lineno = rule->lineno; if (rule->true_branch) lcmaps_pdl_warning(PDL_ERROR, "rule %s -> %s | %s causes infinite loop on false transition %s.", rule->state, rule->true_branch, rule->false_branch, rule->false_branch); else lcmaps_pdl_warning(PDL_ERROR, "rule ~%s -> %s causes infinite loop on transition %s.", rule->state, rule->false_branch, rule->false_branch); rcr |= RECURSION_HANDLED; } } /* * Join the results of both the true branch and false branch * together. This is the result for the current node in the tree. */ rc = rcl|rcr; } else /* Well, there it is, recursion! */ rc = RECURSION; /* * Let's be nice and free the allocated memory to hold the traveled * path. */ free(new_list); return rc; } /*! * Given a rule, find the corresponding position in the policy. * * \param rule Rule of which the position must be found. * \return Position of the rule in the current policy. * */ static unsigned int lcmaps_rule_number(rule_t* rule) { unsigned int n = 0; rule_t* t = NULL; for (n=0, t=top_rule; t; ++n, t=t->next) { if (t==rule) break; } return n; } /*! * Update the list that hold the visited rules. This is a sorted * list for easy insertion and look-up. Duplicate rules are not * inserted. The first element of the list tells the total number * of elements that follow. * * \note The list expects rules to be numbered starting from 1. * This is because 0 denotes empty cells. The * lcmaps_find_insert_position() returns numbers starting from 0. * This is corrected for in this function. * * \param rules List of visited rules. * \param rule rule to insert. * */ static void lcmaps_update_list(unsigned int* rules, unsigned int rule) { /* Rules in the list start at 1. */ unsigned int p = 1 + lcmaps_find_insert_position(rules+1, rule, rules[0]); /* Same here, rules in the list start at 1. */ rule++; /* Find if the rule number needs to be inserted. */ if (rules[p] != rule) { if (p <= rules[0]) memmove(rules+p+1, rules+p, (1+rules[0]-p)*sizeof(unsigned int)); rules[p] = rule; /* * Do not forget to reflect the fact that a new rule has been * added to the list. */ rules[0]++; } } /*! * Based on a sorted list, find the position where to insert an new * element without disturbing the ordering in the list. The search * is a binary search. * * \param list List of sorted numbers. * \param my_rule_number Number to be inserted. * \param high Element number of last element in the list. * * \return Position of insertion. * */ static unsigned int lcmaps_find_insert_position(unsigned int* list, unsigned int my_rule_number, unsigned int high) { unsigned int low=0, mid; /* * low and high specify the current part of the list to be * examined. Once the search space has become zero, the insertion * position has been found. */ while (low0 ? depth-1 : 0); if ((insert>0) && (list[insert-1] == my_rule_number)) return FALSE; /* copy part before insert from list to new_list */ if (insert>0) memcpy(new_list, list, insert*sizeof(int)); /* copy part after insert from list to new_list */ if (depth > insert+1) memcpy(new_list+insert+1, list+insert, (depth-insert-1)*sizeof(int)); /* add new member at insert */ new_list[insert] = my_rule_number; return TRUE; } /*! * Reduce a rule to its elementry form, i.e. all variables in the * rule are substituted by their respective values. * * \param rule Rule to reduce. * */ void lcmaps_reduce_rule(rule_t* rule) { /* * The state part of the rule can be a variable. It cannot be * another policy rule. Therefore, it can be either reduced * to a variable, or the state part is as it is. */ lcmaps_reduce_to_var(&rule->state, STATE); /* * In case of the true branch of a rule, it can be one of three * things: * 1 - a variable; * 2 - a policy rule; * 3 - a state. * Therefore, the value of the true branch is first reduced to * a variable. If not successful, it is reduced to a policy rule; * which is reduced to a set of rules. If it is not a variable or * policy rule, the value is taken as it is. */ lcmaps_reduce_to_var(&rule->true_branch, TRUE_BRANCH); /* See comment on the previous statements. */ lcmaps_reduce_to_var(&rule->false_branch, FALSE_BRANCH); } rule_t* lcmaps_get_rule(char* rule, side_t side) { rule_t* r = top_rule; switch (side) { case left_side: while (r && (strcmp(r->state, rule)!=0)) { r = r->next; } break; case right_side: while (r && ((r->true_branch && (strcmp(r->true_branch, rule)!=0)) || ((r->false_branch && strcmp(r->false_branch, rule)!=0)))) { r = r->next; } break; default: r = 0; } return r; } /*! * Show a rule and its descendants. * * \param rule Rule to display. * */ void lcmaps_show_rules(rule_t* rule) { while (rule) { if (rule->true_branch) { if (!rule->false_branch) lcmaps_log_debug(1, " %s -> %s\n", rule->state, rule->true_branch); else lcmaps_log_debug(1, " %s -> %s | %s\n", rule->state, rule->true_branch, rule->false_branch); } else lcmaps_log_debug(1, "~%s -> %s\n", rule->state, rule->false_branch); rule = rule->next; } } /*! * Free all resources associated with the rules. * * \param rule Rule for which the resources must be freed. * */ void lcmaps_free_rules(rule_t* rule) { rule_t* tmp = NULL; while (rule) { tmp = rule->next; free((char *)rule->state); rule->state = NULL; /* Does not hurt to clear it... */ free((char *)rule->true_branch); rule->true_branch = NULL; /* Does not hurt to clear it... */ free((char *)rule->false_branch); rule->false_branch = NULL; /* Does not hurt to clear it... */ free((char *)rule); rule = tmp; } } /*! * Get the top rule. * * \return Top rule. * */ rule_t* lcmaps_get_top_rule(void) { return top_rule; } /*! * Set the top rule to a new value. * * \param rule New value of top rule. * */ void lcmaps_set_top_rule(rule_t* rule) { top_rule = rule; } lcmaps-1.6.6/src/evaluationmanager/pdl_test.c0000644001726200004540000000622712471136645016224 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ #include #include #include #include #include #include "evaluationmanager.h" #include "pdl.h" #include "pdl_variable.h" int main(int argc, char *argv[]) { char *argvv[2]; int rc; int counter; lcmaps_db_entry_t* plugin; struct timeval tv; gettimeofday(&tv, NULL); srand48((tv.tv_sec>>2)+(tv.tv_usec>>2)); if (argc==2) rc = lcmaps_startEvaluationManager(argv[1], 0, 0); else rc = lcmaps_startEvaluationManager(0, 0, 0); if (rc != 0) { printf("There have been errors...\n"); lcmaps_stopEvaluationManager(); return -1; } printf("path = '%s'.\n", lcmaps_pdl_path()); lcmaps_show_variables(); printf("\npolicies after reduction.\n\n"); lcmaps_show_policies(); lcmaps_getPluginNameAndArgs(&plugin); printf("Got plugin names and args.\n"); counter = 0; while (plugin) { printf("plugin nr: %2d ", ++counter); printf("%s %s\n", plugin->pluginname, plugin->pluginargs); plugin = plugin->next; } argvv[0] = "bogus"; argvv[1] = "tweede"; printf("End result: "); /* if (lcmaps_runEvaluationManager(2, argvv)==0) */ if (lcmaps_runEvaluationManager(0, 0)==0) printf("success\n"); else printf("failure\n"); return 0; } /* * Stubs... * */ int lcmaps_runPlugin(const char* name) { switch (name[strlen(name)-1]) { case 'a': return 0; case 'b': return 0; case 'c': return 1; case 'd': return 0; case 'e': return 1; case 'p': return 0; case 'q': return 0; } return 0; return (drand48()>0.5) ? 0 : 1; } int lcmaps_log(int p, char* f, ...) { va_list args; va_start(args, f); vfprintf(stderr, f, args); va_end(args); return 0; } int lcmaps_log_debug(int p, char* f, ...) { va_list args; va_start(args, f); vfprintf(stderr, f, args); va_end(args); return 0; } int resetCredentialData() { return 0; } lcmaps-1.6.6/src/evaluationmanager/pdl_yacc.c0000644001726200004540000013422712471136740016162 00000000000000 /* A Bison parser, made by GNU Bison 2.4.1. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ #line 24 "../../src/evaluationmanager/pdl_yacc.y" /* * Copyright (c) 2002 EU DataGrid http://www.eu-datagrid.org/ * * * Author: G.M. Venekamp (venekamp@nikhef.nl) * * * This software is distributed under a BSD-style open source * licence. For a complete description of the licence take a look * at: http://eu-datagrid.web.cern.ch/eu-datagrid/license.html * */ #include #include #include "evaluationmanager/pdl.h" #include "evaluationmanager/pdl_variable.h" #include "evaluationmanager/pdl_policy.h" #include "evaluationmanager/pdl_rule.h" /* Line 189 of yacc.c */ #line 98 "evaluationmanager/pdl_yacc.c" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 1 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LABEL = 258, PATH = 259, TERM = 260, TRANS = 261, EMPTYLINE = 262, COMMENT = 263, PVAR = 264, STRING = 265 }; #endif /* Tokens. */ #define LABEL 258 #define PATH 259 #define TERM 260 #define TRANS 261 #define EMPTYLINE 262 #define COMMENT 263 #define PVAR 264 #define STRING 265 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 214 of yacc.c */ #line 48 "../../src/evaluationmanager/pdl_yacc.y" record_t* record; rule_t* rule; /* Line 214 of yacc.c */ #line 161 "evaluationmanager/pdl_yacc.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ #line 173 "evaluationmanager/pdl_yacc.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 14 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 34 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 14 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 8 /* YYNRULES -- Number of rules. */ #define YYNRULES 22 /* YYNRULES -- Number of states. */ #define YYNSTATES 32 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 265 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint8 yyprhs[] = { 0, 0, 3, 4, 7, 9, 11, 13, 16, 20, 23, 27, 31, 33, 36, 39, 43, 46, 48, 50, 53, 57, 63 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 15, 0, -1, -1, 16, 19, -1, 19, -1, 16, -1, 17, -1, 16, 17, -1, 9, 11, 4, -1, 9, 11, -1, 5, 11, 18, -1, 5, 11, 5, -1, 10, -1, 18, 10, -1, 3, 20, -1, 19, 3, 20, -1, 19, 3, -1, 3, -1, 21, -1, 20, 21, -1, 5, 6, 5, -1, 5, 6, 5, 12, 5, -1, 13, 5, 6, 5, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 63, 63, 64, 65, 66, 69, 70, 73, 74, 76, 77, 80, 81, 84, 85, 86, 90, 96, 97, 100, 101, 102 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "LABEL", "PATH", "TERM", "TRANS", "EMPTYLINE", "COMMENT", "PVAR", "STRING", "'='", "'|'", "'~'", "$accept", "config", "var_list", "var", "string", "policy_list", "policy", "rule", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 61, 124, 126 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 14, 15, 15, 15, 15, 16, 16, 17, 17, 17, 17, 18, 18, 19, 19, 19, 19, 20, 20, 21, 21, 21 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 1, 1, 1, 2, 3, 2, 3, 3, 1, 2, 2, 3, 2, 1, 1, 2, 3, 5, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 17, 0, 0, 0, 5, 6, 4, 0, 0, 14, 18, 0, 9, 1, 7, 3, 16, 0, 0, 19, 11, 12, 10, 8, 15, 20, 0, 13, 0, 22, 21 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 4, 5, 6, 23, 7, 10, 11 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -11 static const yytype_int8 yypact[] = { -1, -4, -8, -5, 7, -1, -11, 8, 6, 9, -4, -11, 0, 12, -11, -11, 8, -4, 13, 11, -11, -11, -11, 3, -11, -4, 10, 14, -11, 15, -11, -11 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -11, -11, -11, 16, -11, 18, 17, -10 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { 20, 8, 1, 12, 2, 21, 13, 14, 3, 9, 22, 17, 18, 28, 19, 20, 24, 27, 26, 30, 31, 15, 29, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25 }; static const yytype_int8 yycheck[] = { 10, 5, 3, 11, 5, 5, 11, 0, 9, 13, 10, 3, 6, 10, 5, 25, 4, 6, 5, 5, 5, 5, 12, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 3, 5, 9, 15, 16, 17, 19, 5, 13, 20, 21, 11, 11, 0, 17, 19, 3, 6, 5, 21, 5, 10, 18, 4, 20, 5, 6, 10, 12, 5, 5 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*-------------------------. | yyparse or yypush_parse. | `-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* Line 1455 of yacc.c */ #line 63 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_pdl_warning(PDL_WARNING, "Config file is empty."); } break; case 5: /* Line 1455 of yacc.c */ #line 66 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_pdl_warning(PDL_ERROR, "Config file contains no policy rules."); } break; case 8: /* Line 1455 of yacc.c */ #line 73 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_set_path((yyvsp[(3) - (3)].record)); } break; case 9: /* Line 1455 of yacc.c */ #line 74 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_pdl_warning(PDL_INFO, "Empty value assigned to path: ignoring this line."); lcmaps_set_path(NULL); } break; case 10: /* Line 1455 of yacc.c */ #line 76 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_add_variable((yyvsp[(1) - (3)].record), (yyvsp[(3) - (3)].record)); } break; case 11: /* Line 1455 of yacc.c */ #line 77 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_add_variable((yyvsp[(1) - (3)].record), (yyvsp[(3) - (3)].record)); } break; case 12: /* Line 1455 of yacc.c */ #line 80 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.record) = (yyvsp[(1) - (1)].record); } break; case 13: /* Line 1455 of yacc.c */ #line 81 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.record) = lcmaps_concat_strings_with_space((yyvsp[(1) - (2)].record), (yyvsp[(2) - (2)].record)); } break; case 14: /* Line 1455 of yacc.c */ #line 84 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_add_policy((yyvsp[(1) - (2)].record), (yyvsp[(2) - (2)].rule)); } break; case 15: /* Line 1455 of yacc.c */ #line 85 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_add_policy((yyvsp[(2) - (3)].record), (yyvsp[(3) - (3)].rule)); } break; case 16: /* Line 1455 of yacc.c */ #line 86 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_pdl_warning(PDL_WARNING, "expecting rule definitions."); lcmaps_pdl_warning(PDL_WARNING, "no rules specified for policy: '%s' at line %d.", (yyvsp[(2) - (2)].record)->string, (yyvsp[(2) - (2)].record)->lineno); lcmaps_remove_policy((yyvsp[(2) - (2)].record)); } break; case 17: /* Line 1455 of yacc.c */ #line 90 "../../src/evaluationmanager/pdl_yacc.y" { lcmaps_pdl_warning(PDL_WARNING, "expecting rule definitions."); lcmaps_pdl_warning(PDL_WARNING, "no rules specified for policy: '%s' at line %d.", (yyvsp[(1) - (1)].record)->string, (yyvsp[(1) - (1)].record)->lineno); lcmaps_remove_policy((yyvsp[(1) - (1)].record)); } break; case 18: /* Line 1455 of yacc.c */ #line 96 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.rule) = (yyvsp[(1) - (1)].rule); } break; case 19: /* Line 1455 of yacc.c */ #line 97 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.rule) = (yyvsp[(1) - (2)].rule); } break; case 20: /* Line 1455 of yacc.c */ #line 100 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.rule) = lcmaps_add_rule((yyvsp[(1) - (3)].record), (yyvsp[(3) - (3)].record), 0); } break; case 21: /* Line 1455 of yacc.c */ #line 101 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.rule) = lcmaps_add_rule((yyvsp[(1) - (5)].record), (yyvsp[(3) - (5)].record), (yyvsp[(5) - (5)].record)); } break; case 22: /* Line 1455 of yacc.c */ #line 102 "../../src/evaluationmanager/pdl_yacc.y" { (yyval.rule) = lcmaps_add_rule((yyvsp[(2) - (4)].record), 0, (yyvsp[(4) - (4)].record)); } break; /* Line 1455 of yacc.c */ #line 1508 "evaluationmanager/pdl_yacc.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 1675 of yacc.c */ #line 105 "../../src/evaluationmanager/pdl_yacc.y" void lcmaps_set_yylval(record_t* r) { yylval.record = r; } /* Our pdl_yyparse() is just a wrapper around yyparse() */ int pdl_yyparse (void) { return yyparse(); } lcmaps-1.6.6/src/evaluationmanager/pdl_variable.h0000644001726200004540000000472012471136645017033 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_variable.h * * \brief Include file for using the pdl variables. * * All functions listed in here are accessible and usable for * external "modules". * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17537 $ * \date $Date: 2014-02-27 11:32:39 +0100 (Thu, 27 Feb 2014) $ * */ #ifndef _PDL_VARIABLE_H #define _PDL_VARIABLE_H #include "pdl.h" #include "pdl_rule.h" /*! * \brief Structure keeps track of the variables, their value and the * line number they are defined on. * */ typedef struct var_s { char* name; /* Name of the variable. */ char* value; /* Value of the variable. */ BOOL okay; /* TRUE if substitution can be done without further checking. */ int lineno; /* Line number the variable appears on. */ struct var_s* next; /* Next variable, or 0 if none. */ } var_t; extern void lcmaps_add_variable(record_t* name, record_t* value); extern var_t* lcmaps_find_variable(char* name); extern void lcmaps_reduce_to_var(char** name, rule_type_t rule_type); extern void lcmaps_show_variables(void); extern void lcmaps_free_variables(void); extern var_t* lcmaps_get_variables(void); #endif lcmaps-1.6.6/src/evaluationmanager/pdl_variable.c0000644001726200004540000001752512471136645017035 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file pdl_variable.c * * \brief Implementation of the pdl variables. * * Not all functions defined in this file are accessible to everyone. A * subset is used by the pdl variable functions themselves. For the list * API functions look in pdl_variables.h. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 18216 $ * \date $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ * */ #define _XOPEN_SOURCE 500 /* Needed for NULL */ #include #include #include #include "lcmaps_log.h" #include "pdl_variable.h" #include "pdl_rule.h" #include "pdl.h" static var_t *top_var=0, *last_var=0; static BOOL _lcmaps_add_variable(record_t* name, record_t* value); /* var_t* lcmaps_find_variable(char* name); */ static var_t* lcmaps_detect_loop(char* name, char* value); /*! * Wrapper function for the _lcmaps_add_variable() function call. The hard * work is done in the _lcmaps_add_variable() call. When that call succeeds * only the resources allocated for holding the name and value * parameters are freed, i.e. the structures name and value. In case * the _lcmaps_add_variable() calls fails, the string that is contained * within the name and value strutures is freed as well. * * \param name Name of the variable. * \param value Value of the variable. * */ void lcmaps_add_variable(record_t* name, record_t* value) { if (!_lcmaps_add_variable(name, value)) { free(name->string); name->string = NULL; free(value->string); name->string = NULL; } free(name); name = NULL; free(value); value = NULL; } /*! * Actual implementation of the lcmaps_add_variable call. When the variable * has been added the call returns TRUE, otherwise its FALSE. There * can be several reasons for failure: * - Variable allready exists; * - Variable refers to itself through a loop; * - No more resources to allocate for variable. * * \param name Name of the variable to be added. * \param value Value of the variable. * \return TRUE in case the variable has been added, FALSE otherwise. * */ static BOOL _lcmaps_add_variable(record_t* name, record_t* value) { var_t *var; if ((var = lcmaps_find_variable(name->string))) { lcmaps_pdl_warning(PDL_ERROR, "variable '%s' already defined at line %d; ", var->name, var->lineno); lcmaps_pdl_warning(PDL_SAME, "previous value: '%s'.", var->value); return FALSE; } if ((var = lcmaps_detect_loop(name->string, value->string))) { lcmaps_pdl_warning(PDL_ERROR, "loop detected on variable '%s'; %s = %s", name->string, name->string, value->string); while (var) { var_t* tmp = var; lcmaps_pdl_warning(PDL_SAME, "see also line: %d %s = %s", var->lineno, var->name, var->value); var = var->next; /* * A list is created during the lcmaps_detect_loop call. This list must be * freed. However, the elements of the structure are direct copies * of existing elements. Therefore, only the list elements need be * freed and not any of the structure elements! */ free(tmp); } return FALSE; } if (!(var = (var_t *)malloc(sizeof(var_t)))) { lcmaps_pdl_warning(PDL_ERROR, "Out of memory; cannot add variable '%s'.\n", name->string); return FALSE; } var->name = name->string; var->value = value->string; var->okay = FALSE; var->lineno = name->lineno; var->next = 0; if (top_var) last_var->next = var; else top_var = var; last_var = var; return TRUE; } /*! * Free the resources allocated for the variables. * */ void lcmaps_free_variables(void) { var_t* var = top_var; while (var) { var_t* t = var->next; free((char *)var->name); var->name = NULL; free((char *)var->value); var->value = NULL; free(var); var = t; } top_var = 0; } /*! * Find a variable based on the variable name. This way the value * of a variable can be retrieved. * * \param name Name of the variable to find. * \return Pointer to the corresponding variable, or 0 when not found. * */ var_t* lcmaps_find_variable(char* name) { var_t* var = top_var; if (!name) return 0; while (var && strcmp(name, var->name)!=0) { var = var->next; } return var; } /*! * Try to detect a loop in the variable references. When e.g. a=b, * b=c and c=a, then the call should detect a loop. * * \param name Name of the variable. * \param value Value of the variable. * \return 0 if no loop was detected. When a loop is detected, the * first variable in the loop is returned. * */ static var_t* lcmaps_detect_loop(char* name, char* value) { var_t *loop=0, *top_loop=0, *var = lcmaps_find_variable(value); while (var) { var_t* tmp = (var_t *)malloc(sizeof(var_t)); if (loop) loop->next = tmp; else top_loop = tmp; loop = tmp; memcpy(loop, var, sizeof(var_t)); loop->next = 0; tmp = top_loop; while (tmp && strcmp(name, tmp->value)!=0) { tmp = tmp->next; } if (tmp) return top_loop; var = lcmaps_find_variable(var->value); } /* No loop was detected, free the allocated memory. */ while (top_loop) { var_t* tmp = top_loop; free(top_loop); top_loop = tmp->next; } return 0; } /*! * Reduce the variable to its real value. When a variable has another * variable as its value, the variable will be reduced to the value * of the referring variable. * * \param name Name of the variable to be reduced. * \param rule_type Type of the rule. * */ void lcmaps_reduce_to_var(char** name, rule_type_t rule_type) { var_t *var=0, *tmp; char* n = *name; rule_t* t; while ((tmp = lcmaps_find_variable(n))) { var = tmp; n = var->value; } if (var) { if (var->okay || !(t = lcmaps_get_rule(n, rule_type==STATE ? right_side : left_side))) { var->okay = TRUE; free(*name); *name = strdup(n); if (*name==NULL) lcmaps_pdl_warning(PDL_WARNING, "Out of memory when dupping %s\n",n); } else { lineno = var->lineno; lcmaps_pdl_warning(PDL_WARNING, "Variable %s points to state %s. This is considered dangerous.", var->name, n); } } } /*! * Get a list of all variables in the configure file. * * \return First variable of the list. * */ var_t* lcmaps_get_variables(void) { return top_var; } /*! * Print all variables and their value as described in the configure * file to stdout. * */ void lcmaps_show_variables(void) { var_t* var = top_var; while (var) { lcmaps_log_debug(1, "var: %s = %s\n", var->name, var->value); var = var->next; } } lcmaps-1.6.6/src/evaluationmanager/pdl_yacc.y0000644001726200004540000000746712471136645016221 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://eu-egee.org/partners/ for details on the copyright holders. * For license conditions see the license file or * http://eu-egee.org/license.html */ /* * Copyright (c) 2003 EU DataGrid http://www.eu-datagrid.org/ * * $Id: pdl_yacc.y 17546 2014-02-27 13:40:10Z msalle $ * * Copyright (c) 2003 by * G.M. Venekamp * NIKHEF Amsterdam, the Netherlands * * This software is distributed under a BSD-style open source * licence. For a complete description of the licence take a look * at: http://eu-datagrid.web.cern.ch/eu-datagrid/license.html * */ %{ /* * Copyright (c) 2002 EU DataGrid http://www.eu-datagrid.org/ * * * Author: G.M. Venekamp (venekamp@nikhef.nl) * * * This software is distributed under a BSD-style open source * licence. For a complete description of the licence take a look * at: http://eu-datagrid.web.cern.ch/eu-datagrid/license.html * */ #include #include #include "evaluationmanager/pdl.h" #include "evaluationmanager/pdl_variable.h" #include "evaluationmanager/pdl_policy.h" #include "evaluationmanager/pdl_rule.h" %} %union { record_t* record; rule_t* rule; }; %token LABEL PATH TERM TRANS EMPTYLINE COMMENT PVAR STRING %type config var_list var policy_list string %type policy rule; %token_table %nonassoc LABEL %% config: /* empty */ { lcmaps_pdl_warning(PDL_WARNING, "Config file is empty."); } | var_list policy_list | policy_list | var_list { lcmaps_pdl_warning(PDL_ERROR, "Config file contains no policy rules."); } ; var_list: var | var_list var ; var: PVAR '=' PATH { lcmaps_set_path($3); } | PVAR '=' { lcmaps_pdl_warning(PDL_INFO, "Empty value assigned to path: ignoring this line."); lcmaps_set_path(NULL); } | TERM '=' string { lcmaps_add_variable($1, $3); } | TERM '=' TERM { lcmaps_add_variable($1, $3); } ; string: STRING { $$ = $1; } | string STRING { $$ = lcmaps_concat_strings_with_space($1, $2); } ; policy_list: LABEL policy { lcmaps_add_policy($1, $2); } | policy_list LABEL policy { lcmaps_add_policy($2, $3); } | policy_list LABEL { lcmaps_pdl_warning(PDL_WARNING, "expecting rule definitions."); lcmaps_pdl_warning(PDL_WARNING, "no rules specified for policy: '%s' at line %d.", $2->string, $2->lineno); lcmaps_remove_policy($2); } | LABEL { lcmaps_pdl_warning(PDL_WARNING, "expecting rule definitions."); lcmaps_pdl_warning(PDL_WARNING, "no rules specified for policy: '%s' at line %d.", $1->string, $1->lineno); lcmaps_remove_policy($1); } ; policy: rule { $$ = $1; } | policy rule { $$ = $1; } ; rule: TERM TRANS TERM { $$ = lcmaps_add_rule($1, $3, 0); } | TERM TRANS TERM '|' TERM { $$ = lcmaps_add_rule($1, $3, $5); } | '~' TERM TRANS TERM { $$ = lcmaps_add_rule($2, 0, $4); } ; %% void lcmaps_set_yylval(record_t* r) { yylval.record = r; } /* Our pdl_yyparse() is just a wrapper around yyparse() */ int pdl_yyparse (void) { return yyparse(); } lcmaps-1.6.6/src/evaluationmanager/evaluationmanager.c0000644001726200004540000002407512471136645020111 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * \file evaluationmanager.c * * \brief Implementation of the evaluation manager interface. * * Besides the implementation of the interface of the evaluation * manager some additional functions are implemented here. Please * note that these are \b not part of the interface and hence should * not be used. Look in evaluationmanager.h for the functions that * can be called by external sources. * * * \author G.M. Venekamp (venekamp@nikhef.nl) * \version $Revision: 17818 $ * \date $Date: 2014-07-03 13:42:13 +0200 (Thu, 03 Jul 2014) $ * */ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include #include "pluginmanager/_lcmaps_pluginmanager.h" #include "lcmaps_log.h" #include "evaluationmanager.h" #include "evaluationmanager/pdl.h" #include "evaluationmanager/pdl_policy.h" #include "evaluationmanager/pdl_yacc.h" /*! * When the lcmaps_getPluginNameAndArgs() function has been called, the * global_plugin_list variable get initialized with the first element * of the list. This variable is later used to free the resources held * by the list. In addition, multiple calls to lcmaps_getPluginNameAndArgs() * result in returning the value of this pointer. * */ static lcmaps_db_entry_t* global_plugin_list = NULL; static int free_lcmaps_db_entry(void); /*! * Start the evaluation manager. * * \param name Name of the configure script. * \param argc number of policies * \param argv list of policies * \retval 0 when the call is successful, * \retval 1 otherwise. * */ int lcmaps_startEvaluationManager(const char* name, int argc, char*argv[]) { if (lcmaps_pdl_init(name) < 0) { lcmaps_stopEvaluationManager(); return -1; } lcmaps_SetSetOfRules(argc, argv); /* Let's see if the config file makes sence. */ pdl_yyparse(); /* * Check if there were any errors. Ifo so, there is not much point * on continuing. */ if (yyparse_errors()) { lcmaps_stopEvaluationManager(); return -1; } /* * It might be that we have allocated policy rulez without any rules * attachted to it. Before we can continue we must clean up the tree * a free the allocated policy rules with an empty rule set. */ lcmaps_cleanup_policies(); /* * Check to see if there are any recustions in the config file. * If so, continuing might/will cause an infinite loop. */ if (lcmaps_check_policies_for_recursion()) return -1; /* * We need to replace the variables found in the policy rules by * their respective values. */ lcmaps_reduce_policies(); return 0; } /*! * Get a list of plugins and their arguments based on the * configuration file. The memory that is allocted is freed during * the lcmaps_stopEvaluationManager() call. * * \param plugins Pointer to be intialized with the first entry * of the plugin list. * \retval 0 when the call is successful, * \retval 1 otherwise. * */ int lcmaps_getPluginNameAndArgs(lcmaps_db_entry_t** plugins) { const plugin_t* p_list, *tmp_p_list; lcmaps_db_entry_t* p=0; BOOL string_too_long; string_too_long = FALSE; /* Check if the plugins have been requested before. */ if (global_plugin_list) { *plugins = global_plugin_list; return 0; } /* Set to a safe default value. */ *plugins = 0; p_list = lcmaps_get_plugins(); while (p_list) { if (!*plugins) { *plugins = (lcmaps_db_entry_t*)malloc(sizeof(lcmaps_db_entry_t)); p = *plugins; } else { p->next = (lcmaps_db_entry_t*)malloc(sizeof(lcmaps_db_entry_t)); p = p->next; } /* Copy the name and arguments while respecting max. lengths. */ strncpy(p->pluginname, p_list->name, LCMAPS_MAXPATHLEN); if (strlen(p_list->name)>=LCMAPS_MAXPATHLEN) { lcmaps_log(LOG_ERR, "String too long to copy. Max length = %lu\n", (long unsigned)LCMAPS_MAXPATHLEN); string_too_long = TRUE; } if (p_list->args) { strncpy(p->pluginargs, p_list->args, LCMAPS_MAXARGSTRING); if (strlen(p_list->args)>LCMAPS_MAXARGSTRING) { lcmaps_log(LOG_ERR, "String too long to copy. Max length = %lu\n", (long unsigned)LCMAPS_MAXARGSTRING); string_too_long = TRUE; } } else *p->pluginargs = '\0'; p->next = 0; tmp_p_list = p_list->next; /* if (p_list->name) free(p_list->name); */ /* if (p_list->args) free(p_list->args); */ /* free((plugin_t*)p_list); */ p_list = tmp_p_list; /* Output some debug info. */ /* lcmaps_log_debug(1, "%s\n", p->pluginname); */ /* lcmaps_log_debug(1, "%s\n", p->pluginargs); */ } global_plugin_list = *plugins; return string_too_long ? -1 : 0; } /*! * Run the evaluation manager. The evaluation manager has to be * initialized by calling statrEvaluation Manager first. * * \retval 0 when the call is successful, * \retval 1 otherwise. * */ int lcmaps_runEvaluationManager(int argc, char *argv[]) { char* plugin_name = NULL; plugin_status_t result; policy_t * policy = NULL; policy_t * prev_policy = NULL; int i = 0; int found = 0; int rc = 0; result = EVALUATION_START; /* Note: returns the short pluginname, * lcmaps_runPlugin will figure out the long one */ while ((plugin_name = lcmaps_pdl_next_plugin(result))) { /* get active policy */ policy = lcmaps_get_current_policy(); /* * Check for explicitly demanded policies to be executed * If it is not the case, the old behaviour is unaffected. */ if (argc > 0) { /* Is the current policy selected to be executed? */ for (i = 0, found = 0; policy && (iname, argv[i])==0) { found = 1; break; } } /* Don't execute current policy as it is NOT selected to be executed */ if (found != 1) { /* Clean plug_name (malloc'ed output from lcmaps_pdl_next_plugin) */ if (plugin_name) { free(plugin_name); plugin_name = NULL; } /* * Set the result to EVALUATION_FAILURE in order to fall through * the next policy rule. This might take a few steps though! */ result = EVALUATION_FAILURE; continue; } } /* If the execution policy has switched to a new one: * First we need to clean the credential data structs to avoid * intermediate results of a failed policy execution to contaminate the next */ if (policy != prev_policy) { lcmaps_log(LOG_INFO, "Starting policy: %s\n",policy->name); lcmaps_log_debug(4, "evaluationmanager: Resetting credential data.\n"); /* This must not be reset on the final policy */ rc = lcmaps_resetCredentialData(); if (rc) { lcmaps_log_debug (5, "Resetting credential data failed: rc = %d", rc); } /* Update the prev_policy to the current to detect the change */ prev_policy = policy; } /* Execute selected plug-in */ result = (lcmaps_runPlugin(plugin_name) ? EVALUATION_FAILURE : EVALUATION_SUCCESS); lcmaps_log_debug(1, "Execution of plugin \"%s\". Result: %s.\n", plugin_name, (result==EVALUATION_SUCCESS) ? "Success" : "Failed"); if (plugin_name) { free(plugin_name); plugin_name = NULL; } } if (result==EVALUATION_START) lcmaps_log(LOG_ERR, "Initialization of the EvaluationManager either failed or was not done.\n"); return result==EVALUATION_SUCCESS ? 0 : 1; } /*! * Stop the evaluation manager after is has run successfully. * Strictly speaking, the evalauation manager needs no stopping. * This call is a good point to clean up the resources used by * the evaluation manager. * * \retval 0 when the call is successful, * \retval 1 otherwise. * */ int lcmaps_stopEvaluationManager(void) { lcmaps_log_debug(5, "lcmaps_stopEvaluationManager: cleaning up!\n"); lcmaps_free_resources(); free_lcmaps_db_entry(); /* Cleanup flex buffers and reinit flex */ pdl_lex_cleanup(); return 0; } /*! * During the getPluginsAndArgs() call, a list structure is created. * This structure is never cleaned automatically, nor can it be. When * it is necessay and safe to free the resources, call this function * * \retval 0 when the call is successful, * \retval 1 otherwise. * */ static int free_lcmaps_db_entry(void) { lcmaps_db_entry_t* plugin = global_plugin_list; while (plugin) { lcmaps_db_entry_t* tmp = plugin->next; free(plugin); plugin = tmp; } global_plugin_list = NULL; return 0; } lcmaps-1.6.6/src/evaluationmanager/pdl_yacc.h0000644001726200004540000000473112471136740016163 00000000000000 /* A Bison parser, made by GNU Bison 2.4.1. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LABEL = 258, PATH = 259, TERM = 260, TRANS = 261, EMPTYLINE = 262, COMMENT = 263, PVAR = 264, STRING = 265 }; #endif /* Tokens. */ #define LABEL 258 #define PATH 259 #define TERM 260 #define TRANS 261 #define EMPTYLINE 262 #define COMMENT 263 #define PVAR 264 #define STRING 265 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 1676 of yacc.c */ #line 48 "../../src/evaluationmanager/pdl_yacc.y" record_t* record; rule_t* rule; /* Line 1676 of yacc.c */ #line 79 "evaluationmanager/pdl_yacc.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; lcmaps-1.6.6/src/lcmaps_return_poolindex_without_gsi.c0000644001726200004540000004054612471136645020272 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_return_poolindex_without_gsi.c \brief This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS \author Martijn Steenbakkers for the EU DataGrid. This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS. As input it requires the DN and FQANs asserted to the user -# lcmaps_return_poolindex_without_gsi_va Returns the poolindex based on a variable argument list -# lcmaps_return_poolindex_without_gsi: interface function Returns the poolindex based on fixed arguments: security context, buffer and buffer length */ /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" #include #include #include #include /* LCMAPS includes */ #include "lcmaps.h" #include "lcmaps_account.h" #include "lcmaps_log.h" #include "lcmaps_return_poolindex_without_gsi.h" #include "pluginmanager/_lcmaps_log.h" #include "pluginmanager/_lcmaps_utils.h" /****************************************************************************** Module specific defines ******************************************************************************/ /* Default settings */ #define LCMAPS_MAX_POLICIES 10 /* Flags to influence behaviour of the interface */ #define DONT_REQUIRE_POOLINDEX ((unsigned short)0x0000) #define REQUIRE_POOLINDEX ((unsigned short)0x0001) /****************************************************************************** Module specific prototypes ******************************************************************************/ static int lcmaps_return_poolindex_without_gsi_va(int , ...); /****************************************************************************** Function: lcmaps_return_poolindex_without_gsi_va Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The arguments of this function are passed as a variable argument list. Parameters: narg: the number of arguments that follow ap: vararg list, that consists of - input: The DN of the user - input: The list of FQANs (type char**) - input: The number of FQANs in the list - output: a structure that contains account information: uid, gids (primary and secondary) and the poolindex - input, optional: the mapcounter Returns: 0: success 1: failure ******************************************************************************/ /*! \fn lcmaps_return_poolindex_without_gsi_va( int narg, va_list ap ) \brief LCMAPS returns the poolindex and user account information If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The arguments of this function are passed as a variable argument list. \param narg the number of arguments that follow \param ap va_arg list. This list currently contains: -# input: The DN of the user -# input: The list of FQANs (type char **) -# input: The number of FQANs in the list -# output: A structure that contains account information: uid, gids (primary and secondary) and the poolindex -# input, optional: the mapcounter \retval 0 success. \retval 1 failure. \internal */ static int lcmaps_return_poolindex_without_gsi_va( int narg, ... ) { va_list ap; char * user_dn = NULL; /* input variable */ char ** fqan_list = NULL; /* input variable */ int nfqan = -1; /* input variable */ int mapcounter = -1; /* input variable */ unsigned short flags = 0; /* input variable */ lcmaps_account_info_t * plcmaps_account = NULL; /* output variable */ char * lcmaps_policy_string = NULL; char * lcmaps_policies[LCMAPS_MAX_POLICIES]; int lcmaps_npols = LCMAPS_MAX_POLICIES; int rc = -1; uid_t uid = (uid_t)-1; gid_t * pgid_list = NULL; int npgid = 0; gid_t * sgid_list = NULL; int nsgid = 0; char * poolindex = NULL; int jj = 0; /* First initialize LCMAPS, initialize without file pointer or name which * will result in getting env var LCMAPS_LOG_FILE. Specify DO_USRLOG to try * that first, if that fails we will go automatically to syslog */ if (lcmaps_init_and_logfile(NULL, NULL, (unsigned short)(DO_USRLOG))) { lcmaps_log(LOG_ERR, "%s: LCMAPS initialization failure\n", __func__); return 1; } /* Parse arguments from va_list */ va_start(ap, narg); if (narg >= 4) { user_dn = va_arg(ap, char *); fqan_list = va_arg(ap, char **); nfqan = va_arg(ap, int); plcmaps_account = va_arg(ap, lcmaps_account_info_t *); if (narg >=5) { mapcounter = va_arg(ap, int); } if (narg >=6) { flags = (unsigned short)va_arg(ap, unsigned int); } } else { lcmaps_log(LOG_ERR, "%s: The number of arguments (%d) should be in the range %d-%d\n", __func__, narg, 4, 6); return 1; } va_end(ap); /* Parse policy environment variable */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) lcmaps_policies[jj] = 0; lcmaps_policy_string = getenv("LCMAPS_POLICY_NAME"); if ((rc = lcmaps_tokenize(lcmaps_policy_string, lcmaps_policies, &lcmaps_npols, ":")) != 0) { lcmaps_log(LOG_ERR, "%s: Cannot parse LCMAPS_POLICY_NAME environment variable, because\n", __func__); switch (rc) { case -1: lcmaps_log(LOG_ERR, "%s: of a malloc error\n", __func__); break; case -2: lcmaps_log(LOG_ERR, "%s: the policy list is too large (max = %d)\n", __func__, LCMAPS_MAX_POLICIES); break; case -3: lcmaps_log(LOG_ERR, "%s: of a non-matching quote\n", __func__); break; case -4: lcmaps_log(LOG_ERR, "%s: of invalid input\n", __func__); break; default: lcmaps_log(LOG_ERR, "%s: of an unknown error\n", __func__); break; } goto return_poolindex_without_gsi_error; } /* * Now that we have the credential let's run (and terminate) LCMAPS ! */ if (narg == 4) { rc = lcmaps_run_with_fqans_and_return_account( user_dn, fqan_list, nfqan, NULL, lcmaps_npols, lcmaps_policies, &uid, &pgid_list, &npgid, &sgid_list, &nsgid, &poolindex ); } else if ((narg == 5) || (narg == 6)) { rc = lcmaps_run_with_fqans_mapcounter_and_return_account( user_dn, fqan_list, nfqan, mapcounter, NULL, lcmaps_npols, lcmaps_policies, &uid, &pgid_list, &npgid, &sgid_list, &nsgid, &poolindex ); } if (rc != 0) { lcmaps_log (LOG_ERR, "LCMAPS failed to do mapping and return account information\n"); if (lcmaps_term()) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_poolindex_without_gsi_error; } goto return_poolindex_without_gsi_error; } /* * Check if a poolindex has been found. * If this is not the case and the flag REQUIRE_POOLINDEX has been set: * Error. */ if ( (poolindex == NULL) && ((flags & REQUIRE_POOLINDEX) == REQUIRE_POOLINDEX) ) { lcmaps_log (LOG_NOTICE, "LCMAPS failed to find a poolindex, error.\n"); if (lcmaps_term()) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_poolindex_without_gsi_error; } goto return_poolindex_without_gsi_error; } /* * Fill the lcmaps account information */ rc = lcmaps_account_info_fill( &uid, &pgid_list, &npgid, &sgid_list, &nsgid, &poolindex, plcmaps_account ); if (rc != 0) { lcmaps_log (LOG_NOTICE, "LCMAPS failed to do mapping and return account information\n"); if (lcmaps_term()) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_poolindex_without_gsi_error; } goto return_poolindex_without_gsi_error; } rc = lcmaps_term(); if (rc) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_poolindex_without_gsi_error; } /* Clean policies */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) { if ((lcmaps_policies[jj]) != NULL) { free(lcmaps_policies[jj]); lcmaps_policies[jj] = NULL; } } return 0; return_poolindex_without_gsi_error: /* Clean policies */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) { if ((lcmaps_policies[jj]) != NULL) { free(lcmaps_policies[jj]); lcmaps_policies[jj] = NULL; } } return 1; } /****************************************************************************** Function: lcmaps_return_poolindex_without_gsi Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The call will result in a failure if no poolindex is found (e.g. in the case of statically assigned accounts). Parameters: user_dn: The DN of the user (input) fqan_list: The list of FQANs (type char**) (input) nfqan: The number of FQANs in the list (input) plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure (if no poolindex is found) ******************************************************************************/ int lcmaps_return_poolindex_without_gsi( char * user_dn, char ** fqan_list, int nfqan, lcmaps_account_info_t * plcmaps_account ) { return (lcmaps_return_poolindex_without_gsi_va( 6, user_dn, fqan_list, nfqan, plcmaps_account, -1, REQUIRE_POOLINDEX)); } /****************************************************************************** Function: lcmaps_return_poolindex_with_mapcounter Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The call will result in a failure if no poolindex is found (e.g. in the case of statically assigned accounts). An additional counter may be added to enable multiple acccounts per set of user credentials. Parameters: user_dn: The DN of the user (input) fqan_list: The list of FQANs (type char**) (input) nfqan: The number of FQANs in the list (input) mapcounter: The counter which will be added to the poolindex, effectively enabling multiple account mappings plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure (if no poolindex is found) ******************************************************************************/ int lcmaps_return_poolindex_with_mapcounter( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_account_info_t * plcmaps_account ) { return (lcmaps_return_poolindex_without_gsi_va( 6, user_dn, fqan_list, nfqan, plcmaps_account, mapcounter, REQUIRE_POOLINDEX)); } /****************************************************************************** Function: lcmaps_return_account_without_gsi Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex (if available), alternatively named leaseid, to the calling application. The call will not result in a failure if no poolindex is found, so it supports poolaccounts and statically assigned accounts simultaneously. An additional counter may be added to enable multiple acccounts per set of user credentials. Parameters: user_dn: The DN of the user (input) fqan_list: The list of FQANs (type char**) (input) nfqan: The number of FQANs in the list (input) mapcounter: The counter which will be added to the poolindex, effectively enabling multiple account mappings plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure ******************************************************************************/ int lcmaps_return_account_without_gsi( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_account_info_t * plcmaps_account ) { return (lcmaps_return_poolindex_without_gsi_va( 6, user_dn, fqan_list, nfqan, plcmaps_account, mapcounter, DONT_REQUIRE_POOLINDEX)); } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps_return_poolindex_without_gsi.c,v $ $Date: 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) $ $Revision: 17647 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/lcmaps_gss_assist_gridmap.c0000644001726200004540000000614412471136645016126 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_gss_assist_gridmap.c \brief legacy interface for LCMAPS \author Martijn Steenbakkers for the EU DataGrid. The legacy interface to the LCMAPS module is the original gridmap interface provided by globus. Given the user distinguished name (DN) a username is returned, based on the gridmap file -# globus_gss_assist_gridmap: the interface */ #include "lcmaps_config.h" #include /* LCMAPS includes */ #include "lcmaps.h" #include "lcmaps_gss_assist_gridmap.h" int globus_gss_assist_gridmap( char * globusidp, char ** useridp ) { FILE * usrlog_fp=stderr; int retval; fprintf(stderr,"Using globus_gss_assist_gridmap interface of LCMAPS\n"); if (useridp == NULL) return 1; *useridp = NULL; /* Initialize, do user mapping and terminate LCMAPS */ retval=lcmaps_init(usrlog_fp); if (retval) { fprintf(stderr,"LCMAPS initialization failure.\n"); return 1; } retval = lcmaps_run_without_credentials_and_return_username( globusidp, NULL, useridp, 0, NULL); if (retval) { fprintf(stderr,"LCMAPS failed to find a username\n"); return 1; } retval=lcmaps_term(); if (retval) { fprintf(stderr,"LCMAPS termination failure\n"); return 1; } fprintf(stderr,"globus_gss_assist_gridmap interface of LCMAPS done\n"); return 0; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps_gss_assist_gridmap.c,v $ $Date: 2014-02-26 16:01:45 +0100 (Wed, 26 Feb 2014) $ $Revision: 17529 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/Makefile.am0000644001726200004540000002043312471136645012567 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17471 2014-02-21 10:28:50Z msalle $ # Define the targets to be built here ## SUBDIRS = evaluationmanager pluginmanager grid_credential_handling ## SUBDIRS = test #EXTRACOMPILEFLAGS = \ # -g -Wall \ # -O -Wuninitialized \ # -Wbad-function-cast -Wcast-align \ # -Wcast-qual -Wchar-subscripts -Winline \ # -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ # -Wredundant-decls -Wshadow \ # -Wpointer-arith -Wno-long-long # -pedantic # -Wredundant-decls -Wshadow -Wstrict-prototypes DEFINESCOMPILEFLAGS = \ -D'LCMAPS_ETC_HOME="@LCMAPS_ETC_HOME@"' \ -D'LCMAPS_LIB_HOME="@LCMAPS_LIB_HOME@"' \ -D'LCMAPS_MOD_HOME="@LCMAPS_MOD_HOME@"' AM_YFLAGS=-d AM_CFLAGS = ${EXTRACOMPILEFLAGS} ${DEFINESCOMPILEFLAGS} interfacedir = $(top_srcdir)/interface pkgconfigdir = $(libdir)/pkgconfig if LCMAPS_GSI_MODE AM_CPPFLAGS = \ -I$(interfacedir) \ -I$(top_builddir)/interface \ $(GLOBUS_GSSAPI_GSI_CFLAGS) $(GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS) \ $(VOMS_CFLAGS) \ $(ADD_THESE_DEFINES) pkgconfig_DATA = \ lcmaps.pc \ lcmaps-gss-assist-gridmap.pc \ lcmaps-return-poolindex.pc \ lcmaps-return-account-from-pem.pc \ lcmaps-verify-account-from-pem.pc else # LCMAPS_GSI_MODE AM_CPPFLAGS = \ -I$(interfacedir) \ -I$(top_builddir)/interface \ $(ADD_THESE_DEFINES) pkgconfig_DATA = \ lcmaps-without-gsi.pc \ lcmaps-gss-assist-gridmap-without-gsi.pc \ lcmaps-return-poolindex-without-gsi.pc endif # LCMAPS_GSI_MODE EXTRA_DIST= \ $(srcdir)/evaluationmanager/pdl_test.c \ $(srcdir)/evaluationmanager/examples/example_1.pdl \ $(srcdir)/lcmaps_test.c \ $(srcdir)/liblcmaps.sym GsiHandlingLocalHeaders = \ grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h \ grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h \ grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h GsiHandlingSources = \ grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c \ grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c X509HandlingLocalHeaders = \ grid_credential_handling/x509_handling/_lcmaps_x509_utils.h X509HandlingSources = \ grid_credential_handling/x509_handling/lcmaps_x509_utils.c GridCredentialHandlingLocalHeaders = \ grid_credential_handling/_lcmaps_runvars.h \ grid_credential_handling/_lcmaps_credential.h GridCredentialHandlingSources = \ grid_credential_handling/lcmaps_runvars.c \ grid_credential_handling/lcmaps_credential.c PluginmanagerLocalHeaders = \ pluginmanager/_lcmaps_cred_data.h \ pluginmanager/_lcmaps_pluginmanager.h \ pluginmanager/_lcmaps_db_read.h \ pluginmanager/_lcmaps_utils.h \ pluginmanager/_lcmaps_log.h PluginmanagerSources = \ pluginmanager/lcmaps_vo_data.c \ pluginmanager/lcmaps_cred_data.c \ pluginmanager/lcmaps_arguments.c \ pluginmanager/lcmaps_db_read.c \ pluginmanager/lcmaps_utils.c \ pluginmanager/lcmaps_log.c \ pluginmanager/lcmaps_pluginmanager.c EvaluationmanagerLocalHeaders = \ evaluationmanager/evaluationmanager.h \ evaluationmanager/pdl.h \ evaluationmanager/pdl_policy.h \ evaluationmanager/pdl_rule.h \ evaluationmanager/pdl_variable.h EvaluationmanagerSources = \ evaluationmanager/pdl_yacc.h \ evaluationmanager/pdl_yacc.y \ evaluationmanager/pdl_lex.l \ evaluationmanager/pdl_main.c \ evaluationmanager/pdl_variable.c \ evaluationmanager/pdl_policy.c \ evaluationmanager/pdl_rule.c \ evaluationmanager/evaluationmanager.c if LCMAPS_GSI_MODE lib_LTLIBRARIES = \ liblcmaps.la \ liblcmaps_verify_account_from_pem.la \ liblcmaps_return_account_from_pem.la \ liblcmaps_return_poolindex.la \ liblcmaps_gss_assist_gridmap.la liblcmaps_verify_account_from_pem_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_log.h \ pluginmanager/_lcmaps_utils.h \ $(interfacedir)/lcmaps_verify_account_from_pem.h \ lcmaps_verify_account_from_pem.c liblcmaps_verify_account_from_pem_la_LDFLAGS = liblcmaps_verify_account_from_pem_la_LIBADD = ./liblcmaps.la liblcmaps_return_account_from_pem_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_account.h \ pluginmanager/_lcmaps_utils.h \ $(interfacedir)/lcmaps_return_account_from_pem.h \ lcmaps_return_account_from_pem.c liblcmaps_return_account_from_pem_la_LDFLAGS = liblcmaps_return_account_from_pem_la_LIBADD = ./liblcmaps.la liblcmaps_return_poolindex_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_log.h \ pluginmanager/_lcmaps_utils.h \ grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h \ $(interfacedir)/lcmaps_return_poolindex.h \ lcmaps_return_poolindex.c liblcmaps_return_poolindex_la_LDFLAGS = liblcmaps_return_poolindex_la_LIBADD = \ ./liblcmaps.la \ $(GLOBUS_COMMON_LIBS) $(GLOBUS_COMMON_NOTHR_LIBS) \ $(GLOBUS_GSS_ASSIST_LIBS) $(GLOBUS_GSS_ASSIST_NOTHR_LIBS) \ $(GLOBUS_GSSAPI_GSI_LIBS) $(GLOBUS_GSSAPI_GSI_NOTHR_LIBS) liblcmaps_gss_assist_gridmap_la_SOURCES = \ $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_gss_assist_gridmap.h \ lcmaps_gss_assist_gridmap.c liblcmaps_gss_assist_gridmap_la_LDFLAGS = liblcmaps_gss_assist_gridmap_la_LIBADD = ./liblcmaps.la liblcmaps_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_types.h \ $(interfacedir)/lcmaps_cred_data.h \ $(interfacedir)/lcmaps_vo_data.h \ $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_arguments.h \ $(interfacedir)/lcmaps_utils.h \ $(interfacedir)/lcmaps_cred_data.h \ $(interfacedir)/lcmaps_account.h \ $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/_lcmaps.h \ lcmaps.c \ lcmaps_account.c \ $(GsiHandlingLocalHeaders) \ $(GsiHandlingSources) \ $(X509HandlingLocalHeaders) \ $(X509HandlingSources) \ $(GridCredentialHandlingSources) \ $(GridCredentialHandlingLocalHeaders) \ $(PluginmanagerSources) \ $(PluginmanagerLocalHeaders) \ $(EvaluationmanagerSources) \ $(EvaluationmanagerLocalHeaders) #liblcmaps_la_LDFLAGS = -export-symbols $(srcdir)/liblcmaps.sym liblcmaps_la_LIBADD = \ $(CRYPTO_LIBS) $(DL_LIBS) \ $(VOMS_CPP_LIBS) $(LEXLIB) \ $(GLOBUS_GSSAPI_GSI_LIBS) $(GLOBUS_GSSAPI_GSI_NOTHR_LIBS) \ $(GLOBUS_GSI_CREDENTIAL_LIBS) $(GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS) \ $(GLOBUS_COMMON_LIBS) $(GLOBUS_COMMON_NOTHR_LIBS) if LEX_HAS_D AM_LFLAGS=-D_XOPEN_SOURCE=500 endif # LEX_HAS_D else # LCMAPS_GSI_MODE lib_LTLIBRARIES = \ liblcmaps_without_gsi.la \ liblcmaps_return_poolindex_without_gsi.la \ liblcmaps_gss_assist_gridmap_without_gsi.la liblcmaps_without_gsi_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_types.h \ $(interfacedir)/lcmaps_cred_data.h \ $(interfacedir)/lcmaps_vo_data.h \ $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_arguments.h \ $(interfacedir)/lcmaps_utils.h \ $(interfacedir)/lcmaps_cred_data.h \ $(interfacedir)/lcmaps_account.h \ $(interfacedir)/_lcmaps.h \ lcmaps.c \ lcmaps_account.c \ $(GridCredentialHandlingSources) \ $(GridCredentialHandlingLocalHeaders) \ $(PluginmanagerSources) \ $(PluginmanagerLocalHeaders) \ $(EvaluationmanagerSources) \ $(EvaluationmanagerLocalHeaders) liblcmaps_without_gsi_la_LDFLAGS = liblcmaps_without_gsi_la_LIBADD = $(DL_LIBS) $(LEXLIB) if LEX_HAS_D AM_LFLAGS=-D_XOPEN_SOURCE=500 endif # LEX_HAS_D liblcmaps_return_poolindex_without_gsi_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_account.h \ $(interfacedir)/lcmaps_log.h \ $(interfacedir)/lcmaps_return_poolindex_without_gsi.h \ pluginmanager/_lcmaps_utils.h \ lcmaps_return_poolindex_without_gsi.c liblcmaps_return_poolindex_without_gsi_la_LDFLAGS = liblcmaps_return_poolindex_without_gsi_la_LIBADD = ./liblcmaps_without_gsi.la liblcmaps_gss_assist_gridmap_without_gsi_la_SOURCES = \ $(interfacedir)/lcmaps.h \ $(interfacedir)/lcmaps_basic.h \ $(interfacedir)/lcmaps_gss_assist_gridmap.h \ lcmaps_gss_assist_gridmap.c liblcmaps_gss_assist_gridmap_without_gsi_la_LDFLAGS = liblcmaps_gss_assist_gridmap_without_gsi_la_LIBADD = ./liblcmaps_without_gsi.la endif # LCMAPS_GSI_MODE lcmaps-1.6.6/src/lcmaps.c0000644001726200004540000020360012471136645012155 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \mainpage LCMAPS - Local Credential MAPping Service * * \section intro Introduction * * This document describes the LCMAPS API and the LCMAPS plugins. Please check the links above. * * \section interfaces the LCMAPS Interfaces * * -# The interface to the LCMAPS credential mapping framework is described in \ref LcmapsInterface * -# The LCMAPS plugins should use the LCMAPS API described in \ref APIforLcmapsPlugins * -# The interface that the plugins should provide to the LCMAPS framework is described in * \ref LcmapsPluginInterface * * \section plugins The LCMAPS plugins * A description of the LCMAPS plugins can be found * here ... * * ... the basic plugins: * -# \ref lcmaps_posix_enf.mod * -# \ref lcmaps_ldap_enf.mod * -# \ref lcmaps_localaccount.mod * -# \ref lcmaps_poolaccount.mod * * ... the voms-aware plugins: * -# \ref lcmaps_voms.mod * -# \ref lcmaps_voms_poolaccount.mod * -# \ref lcmaps_voms_localgroup.mod * -# \ref lcmaps_voms_poolgroup.mod * * ... miscellaneous: * -# \ref lcmaps_afs.mod * -# \ref lcmaps_jobrep.mod * -# \ref lcmaps_dummy_good.mod * -# \ref lcmaps_dummy_bad.mod * */ /*! \file lcmaps.c \brief the LCMAPS module - the local credential mapping service. \author Martijn Steenbakkers for the EU DataGrid. The interface to the LCMAPS module is composed of: -# lcmaps_init(): start the PluginManager --> load plugins, start evaluation manager -# lcmaps_run(): run the PluginManager --> run evaluation manager --> run plugins -# lcmaps_term(): stop the PluginManager */ #define _XOPEN_SOURCE 500 #include "lcmaps_config.h" #include #include #include #include #ifdef LCMAPS_GSI_MODE # include # include # include # include # include #endif /* LCMAPS includes */ /* #include "lcmaps_return_account_from_pem.h" */ /* #include "lcmaps_account.h" */ #include "lcmaps.h" #include "lcmaps_types.h" #include "lcmaps_cred_data.h" #include "pluginmanager/_lcmaps_pluginmanager.h" #include "pluginmanager/_lcmaps_log.h" #include "grid_credential_handling/_lcmaps_credential.h" /****************************************************************************** Define module specific variables ******************************************************************************/ static lcmaps_cred_id_t lcmaps_cred; /*!< \internal */ static int lcmaps_initialized = 0; /*!< \internal */ /****************************************************************************** Function: lcmaps_init_and_logfile Description: Select logging type Setup logging by providing a file handle or file name, error handling (not yet). Start PluginManager: read from LCMAPS config file, the plugins to be loaded Parameters: logfile: name of logfile fp: file handle for logging (from gatekeeper or other previously opened file handle) If the file handle is zero, assume that only syslogging is requested logtype: type of logging (usrlog and/or syslog) Returns: 0: initialization succeeded 1: initialization failed ******************************************************************************/ int lcmaps_init_and_logfile( char * logfile, FILE* fp, unsigned short logtype ) { if (lcmaps_initialized) { lcmaps_log_debug(LOG_DEBUG, "LCMAPS already initialized\n"); return 0; } /* start logging */ if (lcmaps_log_open(logfile,fp,logtype)) goto fail_lcmaps_init_and_logfile; lcmaps_log_time(LOG_DEBUG,"Initialization LCMAPS version %s\n",VERSION); /* Start PluginManager */ if (lcmaps_startPluginManager()) { lcmaps_log(LOG_ERR,"lcmaps_init() error: could not start plugin manager\n"); goto fail_lcmaps_init_and_logfile; } /* success */ lcmaps_initialized++; return 0; fail_lcmaps_init_and_logfile: return 1; } /****************************************************************************** Function: lcmaps_init_and_log Description: Select logging type Start PluginManager: read from LCMAPS config file, the plugins to be loaded Parameters: fp: file handle for logging (from gatekeeper or other previously opened file handle) If the file handle is zero, assume that only syslogging is requested logtype: type of logging (usrlog and/or syslog) Returns: 0: initialization succeeded 1: initialization failed ******************************************************************************/ int lcmaps_init_and_log( FILE* fp, unsigned short logtype ) { return lcmaps_init_and_logfile(NULL, fp, logtype); } /****************************************************************************** Function: lcmaps_init Description: Start PluginManager: read from LCMAPS config file, the plugins to be loaded Parameters: fp: file handle for logging (from gatekeeper or other previously opened file handle) If the file handle is zero, assume that only syslogging is requested Returns: 0: initialization succeeded 1: initialization failed ******************************************************************************/ int lcmaps_init( FILE* fp ) { /* set logging file descriptor, for the moment the gatekeeper logfile */ /* if fp == NULL --> syslogging, otherwise only DO_USRLOG */ if (fp) { return lcmaps_init_and_log(fp,DO_USRLOG); } else { return lcmaps_init_and_log(NULL,DO_SYSLOG); } } /****************************************************************************** Function: lcmaps_term Description: Terminate LCMAPS module: Parameters: Returns: 0: termination succeeded 1: termination failed ******************************************************************************/ int lcmaps_term(void) { /* although this a good idea to do here, the values are already cleaned, which kinda beat the point. */ #if 0 char lcmapsmappingresultoneliner[1024]; int i = 0; char * dn = NULL; int cntDNs = 0; uid_t uid = -1; int uid_cnt = 0; gid_t * pgids = NULL; int pgid_cnt = 0; gid_t * sgids = NULL; int sgid_cnt = 0; char ** fqans = NULL; int nfqans = 0; /* I need to publish the DN in most cases for the interaction, * so why not publish all the stuff I have on this mapping in the magic oneliner that was * requested somewhere way back when... */ bzero (lcmapsmappingresultoneliner, 1024); if ((dn = getCredentialData(DN, &cntDNs)) && cntDNs) { snprintf (lcmapsmappingresultoneliner, 1024, "%s", dn); } if ((uid = getCredentialData(UID, &uid_cnt)) && uid_cnt) { snprintf (lcmapsmappingresultoneliner, 1024, "%s:%d", lcmapsmappingresultoneliner, (int) uid); } if ((pgids = getCredentialData(PRI_GID, &pgid_cnt)) && pgid_cnt) { for (i = 0; i < pgid_cnt; i++) { snprintf (lcmapsmappingresultoneliner, 1024, "%s:%d", lcmapsmappingresultoneliner, (int) pgids[i]); } } if ((sgids = getCredentialData(SEC_GID, &sgid_cnt)) && sgid_cnt) { for (i = 0; i < sgid_cnt; i++) { snprintf (lcmapsmappingresultoneliner, 1024, "%s:%d", lcmapsmappingresultoneliner, (int) sgids[i]); } } if ((fqans = getCredentialData(LCMAPS_VO_CRED_STRING, &nfqans)) && nfqans) { for (i = 0; i < nfqans; i++) { snprintf (lcmapsmappingresultoneliner, 1024, "%s:%s", lcmapsmappingresultoneliner, fqans[i]); } } lcmaps_log_time(1, "lcmaps.mod-lcmaps_term(): %s\n", lcmapsmappingresultoneliner); fprintf (stderr, "lcmaps.mod-lcmaps_term(): %s\n", lcmapsmappingresultoneliner); /* end of new publishment */ #endif lcmaps_log_time(LOG_DEBUG,"Termination LCMAPS\n"); lcmaps_log_time(LOG_DEBUG, "%s(): terminating\n", __func__); if (lcmaps_stopPluginManager() != 0) return 1; if (lcmaps_log_close() != 0) return 1; if (lcmaps_initialized > 0) lcmaps_initialized--; #if 0 /* NOTE: these calls should be called before program end, but will also cleanup * structures which might have been from others... */ #ifdef LCMAPS_GSI_MODE /* Most reasonable place to cleanup openssl stuff, see also Jan Just's * grid-proxy-verify.c */ /* This cleans up the error queue, pid==0 means current thread */ lcmaps_log(LOG_DEBUG,"lcmaps_term(): Calling ERR_remove_state(0)\n"); ERR_remove_state(0); /* Cleans up mem from ERR_load_crypto_strings(), called by e.g. VOMS and * verify-proxy plugin */ lcmaps_log(LOG_DEBUG,"lcmaps_term(): Calling ERR_free_strings()\n"); ERR_free_strings(); /* cleans up OpenSSLs internal object table */ lcmaps_log(LOG_DEBUG,"lcmaps_term(): Calling OBJ_cleanup()\n"); OBJ_cleanup(); /* OpenSSL keeps an internal table of digest algorithms and ciphers. It uses * this table to lookup ciphers via functions such as * EVP_get_cipher_byname(). EVP_cleanup() removes all ciphers and digests * from the table. LCMAPS probably uses them only via VOMS */ lcmaps_log(LOG_DEBUG,"lcmaps_term(): Calling EVP_cleanup()\n"); EVP_cleanup(); /* See also http://www.openssl.org/support/faq.html#PROG13, * "I think I've detected a memory leak, is this a bug?" */ lcmaps_log(LOG_DEBUG,"lcmaps_term(): Calling CRYPTO_cleanup_all_ex_data()\n"); CRYPTO_cleanup_all_ex_data(); #endif #endif return 0; } /****************************************************************************** Function: lcmaps_run_without_credentials_and_return_username Description: Based on the only the user DN do the following: Do the user mapping based on the provided list of policies (first successful policy found in the lcmaps policy file (lcmaps.db) will result in the user mapping) and return user name. This interface can be used to provide the legacy GLOBUS_GSS_ASSIST_GRIDMAP() interface. Parameters: user_dn_tmp : user DN request : RSL string usernamep : pointer to user name (to be freed by calling application) npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ int lcmaps_run_without_credentials_and_return_username( char * user_dn_tmp, lcmaps_request_t request, char ** usernamep, int npols, char ** policynames ) { char * user_dn = NULL; uid_t * uid; int cntUid; struct passwd * user_info = NULL; int rc = 0; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_without_credentials_and_return_username; } lcmaps_log_time(LOG_DEBUG,"LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n",__func__); if (usernamep == NULL) goto fail_lcmaps_run_without_credentials_and_return_username; *usernamep = NULL; /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_without_credentials_and_return_username; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_without_credentials_and_return_username; } } if ((rc = lcmaps_credential_store_dn(user_dn_tmp, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_NO_DN) { lcmaps_log(LOG_ERR, "%s() error: storing EMPTY dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_without_credentials_and_return_username; } else { lcmaps_log(LOG_ERR, "%s() error: storing dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_without_credentials_and_return_username; } } user_dn = lcmaps_credential_get_dn(lcmaps_cred); if (user_dn == NULL) { lcmaps_log(LOG_ERR, "%s() error: user DN empty\n", __func__); goto fail_lcmaps_run_without_credentials_and_return_username; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, npols, policynames, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1, "%s: Error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_without_credentials_and_return_username; } /* Now try to get the userid drom the credential data */ uid = getCredentialData(UID, &cntUid); if (uid) { if ( (user_info = getpwuid(uid[0])) == NULL ) { lcmaps_log(LOG_ERR,"LCMAPS could not find the username related to uid: %d\n",uid[0]); return 1; } (*usernamep) = strdup(user_info->pw_name); if (*usernamep == NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); goto fail_lcmaps_run_without_credentials_and_return_username; } } else { lcmaps_log(LOG_ERR,"LCMAPS could not find any uid\n"); return 1; } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2,"%s(): succeeded\n",__func__); return 0; fail_lcmaps_run_without_credentials_and_return_username: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_with_fqans_mapcounter_and_return_account Description: LCMAPS will run with a list of FQANs and the DN as an input. In addition a list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by a wrapper function for the DYNAMIC ACCOUNTS SERVICE (DAS). Parameters: user_dn : the DN of the user fqan_list : the list of (VOMS) FQANs that have been asserted to the user nfqan : the number of FQANs in fqan_list mapcounter: : The counter which will be added to the poolindex, effectively enabling multiple account mappings request : RSL string npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation puid : pointer to the uid found (output parameter) ppgid_list : pointer to the list of primary gids found (output parameter) pnpgid : pointer to the number of primary gids found (output parameter) psgid_list : pointer to the list of secondary gids found (output parameter) pnsgid : pointer to the number of secondary gids found (output parameter) poolindexp : pointer to poolindex string (output parameter) Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ int lcmaps_run_with_fqans_mapcounter_and_return_account( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ) { int rc = 0; uid_t * uid = NULL; int cntUid = -1; gid_t * priGid = NULL; int cntPriGid = -1; gid_t * secGid = NULL; int cntSecGid = -1; char ** poolindex_list = NULL; char * poolindex = NULL; int cntpoolindex = 0; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_with_fqans_and_return_account; } lcmaps_log_time(LOG_DEBUG, "LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n", __func__); /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_fqans_and_return_account; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_fqans_and_return_account; } } if ((rc = lcmaps_credential_store_dn(user_dn, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_NO_DN) { lcmaps_log(LOG_ERR, "%s() error: storing EMPTY dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_fqans_and_return_account; } else { lcmaps_log(LOG_ERR, "%s() error: storing dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_fqans_and_return_account; } } if ((rc = lcmaps_credential_store_fqan_list(nfqan, fqan_list, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_fqans_and_return_account; } else if (rc == LCMAPS_CRED_NO_FQAN) /* Only issue a warning, no failure */ { lcmaps_log_debug(1, "%s() warning: fqan list is empty (rc = 0x%x)\n", __func__, rc); } else /* LCMAPS_CRED_ERROR */ { lcmaps_log(LOG_ERR, "%s() error: storing fqan list! (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_fqans_and_return_account; } } if (lcmaps_credential_store_mapcounter(mapcounter, &lcmaps_cred) != LCMAPS_CRED_SUCCESS) { lcmaps_log(LOG_ERR, "%s() error: storing mapcounter in lcmaps_cred\n",__func__); goto fail_lcmaps_run_with_fqans_and_return_account; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, npols, policynames, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1, "%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_with_fqans_and_return_account; } /* At this stage extract uid, gids and poolindex */ /* First the uid */ uid = (uid_t *) getCredentialData(UID, &cntUid); if (uid == NULL) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any uid\n", __func__); goto fail_lcmaps_run_with_fqans_and_return_account; } else if (cntUid != 1) { lcmaps_log_debug(1, "%s() error: LCMAPS found %d uids, only 1 allowed\n", __func__, cntUid); goto fail_lcmaps_run_with_fqans_and_return_account; } else { *puid = uid[0]; } /* Then the primary gids */ priGid = (gid_t *) getCredentialData(PRI_GID, &cntPriGid); if (priGid == NULL) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any gid, at least one required!\n", __func__); goto fail_lcmaps_run_with_fqans_and_return_account; } else { *pnpgid = cntPriGid; *ppgid_list = priGid; } /* Then the secondary gids */ secGid = (gid_t *) getCredentialData(SEC_GID, &cntSecGid); if (secGid == NULL) { lcmaps_log_debug(1, "%s: LCMAPS found no secondary groups\n", __func__); } else { *pnsgid = cntSecGid; *psgid_list = secGid; } /* And finally the poolindex */ poolindex_list = (char **) getCredentialData(POOL_INDEX, &cntpoolindex); if (poolindex_list && (cntpoolindex > 0)) { poolindex = (char *)(*(poolindex_list)); lcmaps_log_debug(5, "%s: found %d poolindices starting at address = %p\n", __func__, cntpoolindex, (void*)poolindex_list); lcmaps_log_debug(5, "%s(): found this poolindex %s\n", __func__, poolindex); *poolindexp = poolindex; } else { /* Version 1.3.3 and lower: Error if no poolindex found */ /* Now just continue. It's not up to us to decide if this is an error. */ /* It may just be a statically assigned account */ lcmaps_log_debug(5, "%s: LCMAPS could not find a poolindex (a statically assigned account?)\n", __func__); } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s: succeeded\n", __func__); return 0; fail_lcmaps_run_with_fqans_and_return_account: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s: failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_with_fqans_and_return_account Description: LCMAPS will run with a list of FQANs and the DN as an input. In addition a list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by a wrapper function for the DYNAMIC ACCOUNTS SERVICE (DAS). Parameters: user_dn : the DN of the user fqan_list : the list of (VOMS) FQANs that have been asserted to the user nfqan : the number of FQANs in fqan_list request : RSL string npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation puid : pointer to the uid found (output parameter) ppgid_list : pointer to the list of primary gids found (output parameter) pnpgid : pointer to the number of primary gids found (output parameter) psgid_list : pointer to the list of secondary gids found (output parameter) pnsgid : pointer to the number of secondary gids found (output parameter) poolindexp : pointer to poolindex string (output parameter) Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ int lcmaps_run_with_fqans_and_return_account( char * user_dn, char ** fqan_list, int nfqan, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ) { return lcmaps_run_with_fqans_mapcounter_and_return_account( user_dn, fqan_list, nfqan, -1, request, npols, policynames, puid, ppgid_list, pnpgid, psgid_list, pnsgid, poolindexp ); } /* * HERE FOLLOW THE GSI DEPENDENT INTERFACES */ #ifdef LCMAPS_GSI_MODE /****************************************************************************** Function: lcmaps_run Description: Do the user mapping based on the user's gss (gsi) credential and the job request. This is the legacy lcmaps interface and is used by the GATEKEEPER. Parameters: request: RSL string user_cred : user globus credential handle Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ #if ALLOW_EMPTY_CREDENTIALS int lcmaps_run( char * user_dn_tmp, gss_cred_id_t user_cred, lcmaps_request_t request ) #else int lcmaps_run( gss_cred_id_t user_cred, lcmaps_request_t request ) #endif { char * user_dn = NULL; int rc = 0; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run; } lcmaps_log_debug(LOG_DEBUG, "LCMAPS credential mapping request\n"); /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run; } } /* Store the gss_cred_id_t and the derivatives */ rc = lcmaps_credential_store_gss_cred_id_t_and_sub_elements(user_cred, &lcmaps_cred); if (rc != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist\n", __func__); goto fail_lcmaps_run; } else if (rc == LCMAPS_CRED_NO_GSS_CRED) { /* Use provided DN */ lcmaps_log(LOG_ERR, "%s() WARNING: empty credential found !\n", __func__); } else if (rc == LCMAPS_CRED_NO_FQAN) { /* No FQANs found or valid */ lcmaps_log(LOG_DEBUG, "%s() Debug: No VOMS FQANs were found, continuing without them.\n", __func__); } else { lcmaps_log(LOG_ERR, "%s() error: storing gss_credential or its derivative credentials\n", __func__); goto fail_lcmaps_run; } } /* Double check if I got a proper DN */ user_dn = lcmaps_credential_get_dn(lcmaps_cred); if (user_dn == NULL) { lcmaps_log(LOG_ERR, "%s() error: user DN empty\n", __func__); goto fail_lcmaps_run; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, 0, NULL, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1, "%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run; } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): succeeded\n", __func__); return 0; fail_lcmaps_run: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_and_return_username Description: do the user mapping based on the provided list of policies (first successful policy found in the lcmaps policy file (lcmaps.db) will result in the user mapping) and return user name. This interface is used by the GRIDFTP SERVER. Parameters: request : RSL string user_cred : user globus credential handle usernamep : pointer to user name (to be freed by calling application) npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ #if ALLOW_EMPTY_CREDENTIALS int lcmaps_run_and_return_username( char * user_dn_tmp, gss_cred_id_t user_cred, lcmaps_request_t request, char ** usernamep, int npols, char ** policynames ) #else int lcmaps_run_and_return_username( gss_cred_id_t user_cred, lcmaps_request_t request, char ** usernamep, int npols, char ** policynames ) #endif { char * user_dn = NULL; int rc = 0; uid_t * uid; int cntUid; struct passwd * user_info = NULL; char * req_username; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_and_return_username; } lcmaps_log_time(LOG_DEBUG, "LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n", __func__); if (usernamep == NULL) goto fail_lcmaps_run_and_return_username; /* Save input username */ req_username=*usernamep; *usernamep = NULL; /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_username; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_username; } } /* Store the gss_cred_id_t and the derivatives */ rc = lcmaps_credential_store_gss_cred_id_t_and_sub_elements(user_cred, &lcmaps_cred); if (rc != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist\n", __func__); goto fail_lcmaps_run_and_return_username; } else if (rc == LCMAPS_CRED_NO_GSS_CRED) { /* Use provided DN */ lcmaps_log(LOG_ERR, "%s() WARNING: empty credential found !\n", __func__); } else if (rc == LCMAPS_CRED_NO_FQAN) { /* No FQANs found or valid */ lcmaps_log(LOG_DEBUG, "%s() Debug: No VOMS FQANs were found, continuing without them.\n", __func__); } else { lcmaps_log(LOG_ERR, "%s() error: storing gss_credential or its derivative credentials\n", __func__); goto fail_lcmaps_run_and_return_username; } } #if 0 #if ALLOW_EMPTY_CREDENTIALS if ((rc = lcmaps_credential_store_dn(user_dn_tmp, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_NO_DN) { lcmaps_log(LOG_ERR, "%s() error: storing EMPTY dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_username; } else { lcmaps_log(LOG_ERR, "%s() error: storing dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_username; } } #endif #endif user_dn = lcmaps_credential_get_dn(lcmaps_cred); if (user_dn == NULL) { lcmaps_log(LOG_ERR, "%s() error: user DN empty\n", __func__); goto fail_lcmaps_run_and_return_username; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, req_username, npols, policynames, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1,"%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_and_return_username; } /* * Apparently lcmaps succeeded, so let's get the username from the credential repository * and return happily */ /* Now try to get the userid drom the credential data */ uid = getCredentialData(UID, &cntUid); if (uid) { if ( (user_info = getpwuid(uid[0])) == NULL ) { lcmaps_log_debug(1, "%s(): LCMAPS could not find the username related to uid: %d\n", __func__, uid[0]); return 1; } (*usernamep) = strdup(user_info->pw_name); if (*usernamep == NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); goto fail_lcmaps_run_and_return_username; } } else { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any uid\n", __func__); return 1; } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2,"%s(): succeeded\n", __func__); return 0; fail_lcmaps_run_and_return_username: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2,"%s(): failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_and_return_poolindex Description: do the user mapping based on the provided list of policies (first successful policy found in the lcmaps policy file (lcmaps.db) will result in the user mapping) and return the poolindex This interface was intended to be used by a wrapper function for the DYNAMIC ACCOUNTS SERVICE (DAS). Parameters: request : RSL string user_cred : user globus credential handle poolindexp : pointer to poolindex (to be freed by calling application). Note: poolindexp should be non-NULL at the start ! npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ #if ALLOW_EMPTY_CREDENTIALS int lcmaps_run_and_return_poolindex( char * user_dn_tmp, gss_cred_id_t user_cred, lcmaps_request_t request, char ** poolindexp, int npols, char ** policynames ) #else int lcmaps_run_and_return_poolindex( gss_cred_id_t user_cred, lcmaps_request_t request, char ** poolindexp, int npols, char ** policynames ) #endif { char * user_dn = NULL; char * poolindex = NULL; char ** tmpptr = NULL; int cntpoolindex = -1; int rc = 0; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_and_return_poolindex; } lcmaps_log_time(LOG_DEBUG, "LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n", __func__); if (poolindexp == NULL) goto fail_lcmaps_run_and_return_poolindex; *poolindexp = NULL; /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_poolindex; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_poolindex; } } /* Store the gss_cred_id_t and the derivatives */ rc = lcmaps_credential_store_gss_cred_id_t_and_sub_elements(user_cred, &lcmaps_cred); if (rc != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist\n", __func__); goto fail_lcmaps_run_and_return_poolindex; } else if (rc == LCMAPS_CRED_NO_GSS_CRED) { /* Use provided DN */ lcmaps_log(LOG_ERR, "%s() WARNING: empty credential found !\n", __func__); } else if (rc == LCMAPS_CRED_NO_FQAN) { /* No FQANs found or valid */ lcmaps_log(LOG_DEBUG, "%s() Debug: No VOMS FQANs were found, continuing without them.\n", __func__); } else { lcmaps_log(LOG_ERR, "%s() error: storing gss_credential or its derivative credentials\n", __func__); goto fail_lcmaps_run_and_return_poolindex; } } #if 0 #if ALLOW_EMPTY_CREDENTIALS if ((rc = lcmaps_credential_store_dn(user_dn_tmp, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_NO_DN) { lcmaps_log(LOG_ERR, "%s() error: storing EMPTY dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_poolindex; } else { lcmaps_log(LOG_ERR, "%s() error: storing dn in lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_return_poolindex; } } #endif #endif user_dn = lcmaps_credential_get_dn(lcmaps_cred); if (user_dn == NULL) { lcmaps_log(LOG_ERR, "%s() error: user DN empty\n", __func__); goto fail_lcmaps_run_and_return_poolindex; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, npols, policynames, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1,"%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_and_return_poolindex; } /* * Apparently lcmaps succeeded, so let's get the poolindex from the credential repository * and return happily */ tmpptr = (char **) getCredentialData(POOL_INDEX, &cntpoolindex); if (tmpptr && (cntpoolindex > 0)) { poolindex = (char *)(*(tmpptr)); lcmaps_log_debug(5, "%s(): found %d poolindeces at address = %p\n", __func__, cntpoolindex, (void*)tmpptr); lcmaps_log_debug(5, "lcmaps_run_and_return_poolindex(): found this poolindex %s\n", poolindex); *poolindexp = strdup(poolindex); if ( *poolindexp ==NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); goto fail_lcmaps_run_and_return_poolindex; } } else { lcmaps_log(LOG_ERR, "%s(): LCMAPS could not find the poolindex\n", __func__); goto fail_lcmaps_run_and_return_poolindex; } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2,"%s(): succeeded\n", __func__); return 0; fail_lcmaps_run_and_return_poolindex: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_with_pem_and_return_account Description: LCMAPS runs receiving a proxy credential in a PEM formatted string. A list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by the modified suexec wrapper. Parameters: user_dn : the user DN pem_string: : the PEM-encoded string containing the user proxy mapcounter: : The counter which will be added to the poolindex, effectively enabling multiple account mappings request : RSL string npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation puid : pointer to the uid found (output parameter) ppgid_list : pointer to the list of primary gids found (output parameter) pnpgid : pointer to the number of primary gids found (output parameter) psgid_list : pointer to the list of secondary gids found (output parameter) pnsgid : pointer to the number of secondary gids found (output parameter) poolindexp : pointer to poolindex string (output parameter) Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ int lcmaps_run_with_pem_and_return_account( char * user_dn, char * pem_string, int mapcounter, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ) { int rc = 0; uid_t * uid = NULL; int cntUid = -1; gid_t * priGid = NULL; int cntPriGid = -1; gid_t * secGid = NULL; int cntSecGid = -1; char ** poolindex_list = NULL; char * poolindex = NULL; int cntpoolindex = 0; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_with_pem_and_return_account; } lcmaps_log_time(LOG_DEBUG, "LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n", __func__); /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } } /* Store the credentials to be used by the plug-ins */ if ((rc = lcmaps_credential_store_pem_string_and_sub_elements(pem_string, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_NO_PEM_STRING) { lcmaps_log(LOG_ERR, "%s() error: PEM string is empty (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } else if ( (rc & LCMAPS_CRED_NO_X509_CHAIN) == LCMAPS_CRED_NO_X509_CHAIN) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve X509 chain from PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } else if ( (rc & LCMAPS_CRED_NO_X509_CRED) == LCMAPS_CRED_NO_X509_CRED) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve proxy certificate from PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } else if ( (rc & LCMAPS_CRED_NO_DN) == LCMAPS_CRED_NO_FQAN) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve DN from proxy certificate (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } /* If no fqans are found, this should not be fatal, but only if no other errors are found !*/ else if (rc == LCMAPS_CRED_NO_FQAN) /* Only issue a warning, no failure */ { lcmaps_log_debug(1, "%s() warning: fqan list is empty (rc = 0x%x)\n", __func__, rc); } else { lcmaps_log(LOG_ERR, "%s() error: Error storing PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_pem_and_return_account; } } if (lcmaps_credential_store_mapcounter(mapcounter, &lcmaps_cred) != LCMAPS_CRED_SUCCESS) { lcmaps_log(LOG_ERR, "%s() error: storing mapcounter in lcmaps_cred\n", __func__); goto fail_lcmaps_run_with_pem_and_return_account; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, npols, policynames, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1, "%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_with_pem_and_return_account; } /* At this stage extract uid, gids and poolindex */ /* First the uid */ uid = (uid_t *) getCredentialData(UID, &cntUid); if (uid == NULL) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any uid\n", __func__); goto fail_lcmaps_run_with_pem_and_return_account; } else if (cntUid != 1) { lcmaps_log_debug(1, "%s() error: LCMAPS found %d uids, only 1 allowed\n", __func__, cntUid); goto fail_lcmaps_run_with_pem_and_return_account; } else { *puid = uid[0]; } /* Then the primary gids */ priGid = (gid_t *) getCredentialData(PRI_GID, &cntPriGid); if (priGid == NULL) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any gid, at least one required!\n", __func__); goto fail_lcmaps_run_with_pem_and_return_account; } else { *pnpgid = cntPriGid; *ppgid_list = priGid; } /* Then the secondary gids */ secGid = (gid_t *) getCredentialData(SEC_GID, &cntSecGid); if (secGid == NULL) { lcmaps_log_debug(1, "%s(): LCMAPS found no secondary groups\n", __func__); } else { *pnsgid = cntSecGid; *psgid_list = secGid; } /* And finally the poolindex */ poolindex_list = (char **) getCredentialData(POOL_INDEX, &cntpoolindex); if (poolindex_list && (cntpoolindex > 0)) { poolindex = (char *)(*(poolindex_list)); lcmaps_log_debug(5, "%s(): found %d poolindeces at address = %p\n", __func__, cntpoolindex, poolindex); *poolindexp = strdup(poolindex); if ( *poolindexp ==NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); goto fail_lcmaps_run_with_pem_and_return_account; } } else { lcmaps_log_debug(5, "%s(): LCMAPS could not find the poolindex\n", __func__); /* goto fail_lcmaps_run_and_return_poolindex; */ } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): succeeded\n", __func__); return 0; fail_lcmaps_run_with_pem_and_return_account: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_and_verify_account_from_pem Description: LCMAPS verifies the account mapping based on the proxy credential in a PEM formatted string. A list of policies may be provided. This interface is intended to be used by the modified suexec wrapper. Parameters (only input): user_dn : the user DN pem_string: : the PEM-encoded string containing the user proxy uid : the uid of the account that should be verified pgid_list : the list of primary gids of the account that should be verified npgid : the number of primary gids of the account that should be verified sgid_list : the list of secondary gids of the account that should be verified nsgid : the number of secondary gids of the account that should be verified poolindex : poolindex string of the account that should be verified request : RSL string npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation Returns: 0: verification succeeded 1: verification failed ******************************************************************************/ int lcmaps_run_and_verify_account_from_pem( char * user_dn, char * pem_string, uid_t uid, gid_t * pgid_list, int npgid, gid_t * sgid_list, int nsgid, char * poolindex, lcmaps_request_t request, int npols, char ** policynames ) { int rc = 0; uid_t * puid = NULL; gid_t * priGid = NULL; gid_t * secGid = NULL; uid_t uid_found; int nuid_found; gid_t * pgid_list_found = NULL; int npgid_found; /* gid_t * sgid_list_found = NULL;*/ int nsgid_found; char * poolindex_found = NULL; char ** poolindex_list = NULL; int cntpoolindex = 0; struct passwd * user_info = NULL; struct group * group_info = NULL; char * lcmaps_verify_type = NULL; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_and_verify_account_from_pem; } lcmaps_log_time(LOG_DEBUG, "LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n", __func__); /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } } /* Store the credentials to be used by the plug-ins */ if ((rc = lcmaps_credential_store_pem_string_and_sub_elements(pem_string, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_NO_PEM_STRING) { lcmaps_log(LOG_ERR, "%s() error: PEM string is empty (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } else if ( (rc & LCMAPS_CRED_NO_X509_CHAIN) == LCMAPS_CRED_NO_X509_CHAIN) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve X509 chain from PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } else if ( (rc & LCMAPS_CRED_NO_X509_CRED) == LCMAPS_CRED_NO_X509_CRED) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve proxy certificate from PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } else if ( (rc & LCMAPS_CRED_NO_DN) == LCMAPS_CRED_NO_FQAN) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve DN from proxy certificate (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } /* If no fqans are found, this should not be fatal, but only if no other errors are found !*/ else if (rc == LCMAPS_CRED_NO_FQAN) /* Only issue a warning, no failure */ { lcmaps_log_debug(1, "%s() warning: fqan list is empty (rc = 0x%x)\n", __func__, rc); } else { lcmaps_log(LOG_ERR, "%s() error: Error storing PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } } if ((rc = lcmaps_credential_store_requested_account( &uid, &pgid_list, &npgid, &sgid_list, &nsgid, &poolindex, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_ERROR) { lcmaps_log(LOG_ERR, "%s() error: Error filling lcmaps_account_info_t (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } else { lcmaps_log(LOG_ERR, "%s() error: Unknown error (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_and_verify_account_from_pem; } } /* Run PluginManager in verification mode ! */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, npols, policynames, LCMAPS_VERIFICATION_MODE)) { lcmaps_log_debug(1, "%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_and_verify_account_from_pem; } /* At this stage extract uid, gids and poolindex and compare them to input */ /* First the uid */ puid = (uid_t *) getCredentialData(UID, &nuid_found); if (puid == NULL) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any uid\n", __func__); goto fail_lcmaps_run_and_verify_account_from_pem; } else if (nuid_found != 1) { lcmaps_log_debug(1, "%s() error: LCMAPS found %d uids, only 1 allowed\n", __func__, nuid_found); goto fail_lcmaps_run_and_verify_account_from_pem; } else { uid_found = puid[0]; } /* Then the primary gids */ priGid = (gid_t *) getCredentialData(PRI_GID, &npgid_found); if ((npgid_found < 1) || (priGid == NULL)) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any (primary) gid, at least one required!\n", __func__); goto fail_lcmaps_run_and_verify_account_from_pem; } else { pgid_list_found = priGid; } /* Then the secondary gids */ secGid = (gid_t *) getCredentialData(SEC_GID, &nsgid_found); if (secGid == NULL) { lcmaps_log_debug(1, "%s(): LCMAPS found no secondary groups\n", __func__); } /* else { sgid_list_found = secGid; }*/ /* And finally the poolindex */ poolindex_list = (char **) getCredentialData(POOL_INDEX, &cntpoolindex); if (poolindex_list && (cntpoolindex > 0)) { poolindex_found = (char *)(*(poolindex_list)); lcmaps_log_debug(5, "%s(): found %d poolindeces starting at address = %p\n", __func__, cntpoolindex, (void*)poolindex_list); lcmaps_log_debug(5, "%s(): found this poolindex %s\n", __func__, poolindex_found); } else { lcmaps_log_debug(5, "%s(): LCMAPS could not find the poolindex\n", __func__); } /* * Compare account-to-be-verified with account-found * Default: only verify uid * if LCMAPS_VERIFY_TYPE is set to * "uid": only verify the uid * "uid_pgid": only verify the uid and primary gid * "all": verify uid, primary gid and all secondary gids */ user_info = getpwuid(uid); lcmaps_verify_type = getenv("LCMAPS_VERIFY_TYPE"); if ( (lcmaps_verify_type == NULL) || (strcmp("uid", lcmaps_verify_type) == 0) ) { if (uid_found != uid) /* uid verification failure */ { lcmaps_log(LOG_ERR, "%s(): LCMAPS could not verify the requested account (uid=%d, name=%s)\n", __func__, uid, (user_info?user_info->pw_name:NULL)); goto fail_lcmaps_run_and_verify_account_from_pem; } } else if (strcmp("uid_pgid", lcmaps_verify_type) == 0) { if (uid_found != uid) /* uid verification failure */ { lcmaps_log(LOG_ERR, "%s(): LCMAPS could not verify the requested account (uid=%d, name=%s)\n", __func__, uid, (user_info?user_info->pw_name:NULL)); goto fail_lcmaps_run_and_verify_account_from_pem; } if ( (pgid_list == NULL) || (npgid < 1) ) { lcmaps_log(LOG_ERR, "%s(): LCMAPS was requested to verify the primary gids, but did not receive any on input (failure)", __func__); goto fail_lcmaps_run_and_verify_account_from_pem; } group_info = getgrgid(pgid_list[0]); if (pgid_list[0] != pgid_list_found[0]) /* pgid verification failure */ { lcmaps_log(LOG_ERR, "%s(): LCMAPS could not verify the requested primary gid (gid=%d, gname=%s)\n", __func__, pgid_list[0], (group_info?group_info->gr_name:NULL)); goto fail_lcmaps_run_and_verify_account_from_pem; } } else { lcmaps_log(LOG_ERR, "%s: Unknown verification type: %s() (failure)\n", __func__, lcmaps_verify_type); goto fail_lcmaps_run_and_verify_account_from_pem; } /* succes */ lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): succeeded\n", __func__); return 0; fail_lcmaps_run_and_verify_account_from_pem: lcmaps_release_cred(&lcmaps_cred); lcmaps_log_debug(2, "%s(): failed\n", __func__); return 1; } /****************************************************************************** Function: lcmaps_run_with_stack_of_x509_and_return_account Description: LCMAPS runs receiving a certificate chain, containing at least an End-Entity Certificate. A list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by the modified suexec wrapper. Parameters: cert_chain : The certificate chain to use for the mapping mapcounter: : The counter which will be added to the poolindex, effectively enabling multiple account mappings request : RSL string npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation puid : pointer to the uid found (output parameter) ppgid_list : pointer to the list of primary gids found (output parameter) pnpgid : pointer to the number of primary gids found (output parameter) psgid_list : pointer to the list of secondary gids found (output parameter) pnsgid : pointer to the number of secondary gids found (output parameter) poolindexp : pointer to poolindex string (output parameter) Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ int lcmaps_run_with_stack_of_x509_and_return_account( STACK_OF(X509) * cert_chain, int mapcounter, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ) { int rc = 0; int i = 0; uid_t * uid = NULL; int cntUid = -1; gid_t * priGid = NULL; int cntPriGid = -1; gid_t * secGid = NULL; int cntSecGid = -1; char ** poolindex_list = NULL; char * poolindex = NULL; int cntpoolindex = 0; if (lcmaps_initialized == 0) { lcmaps_log(LOG_ERR,"LCMAPS has to be initialized first !\n"); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } lcmaps_log_time(LOG_DEBUG, "LCMAPS credential mapping request\n"); lcmaps_log_debug(3, "Using \"%s\" interface of LCMAPS\n", __func__); /* * Create lcmaps credential: * fill it with the dn and extract it again */ if ((rc = lcmaps_credential_init(&lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if (rc == LCMAPS_CRED_INVOCATION_ERROR) { lcmaps_log(LOG_ERR, "%s() error: lcmaps_cred does not exist (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } else { lcmaps_log(LOG_ERR, "%s() error: cannot initialize lcmaps_cred (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } } /* Store the passed X509 credentials */ if ((rc = lcmaps_credential_store_x509_and_sub_elements(NULL, cert_chain, &lcmaps_cred)) != LCMAPS_CRED_SUCCESS) { if ( (rc & LCMAPS_CRED_NO_X509_CHAIN) == LCMAPS_CRED_NO_X509_CHAIN) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve X509 chain from PEM string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } else if ( (rc & LCMAPS_CRED_NO_X509_CRED) == LCMAPS_CRED_NO_X509_CRED) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve EEC or proxy certificate from certificate chain (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } else if ( (rc & LCMAPS_CRED_NO_DN) == LCMAPS_CRED_NO_FQAN) { lcmaps_log(LOG_ERR, "%s() error: Cannot retrieve DN from certificate chain (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } /* If no fqans are found, this should not be fatal, but only if no other errors are found !*/ else if (rc == LCMAPS_CRED_NO_FQAN) /* Only issue a warning, no failure */ { lcmaps_log_debug(1, "%s() warning: fqan list is empty (rc = 0x%x)\n", __func__, rc); } else { lcmaps_log(LOG_ERR, "%s() error: Error storing X.509 chain string (rc = 0x%x)\n", __func__, rc); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } } if (lcmaps_credential_store_mapcounter(mapcounter, &lcmaps_cred) != LCMAPS_CRED_SUCCESS) { lcmaps_log(LOG_ERR, "%s() error: storing mapcounter in lcmaps_cred\n", __func__); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } /* Run PluginManager */ if (lcmaps_runPluginManager(request, lcmaps_cred, NULL, npols, policynames, LCMAPS_NORMAL_MODE)) { lcmaps_log_debug(1, "%s() error: could not run plugin manager\n", __func__); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } /* At this stage extract uid, gids and poolindex */ /* First the uid */ uid = (uid_t *) getCredentialData(UID, &cntUid); if (uid == NULL) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any uid\n", __func__); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } else if (cntUid != 1) { lcmaps_log_debug(1, "%s() error: LCMAPS found %d uids, only 1 allowed\n", __func__, cntUid); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } else { *puid = uid[0]; } /* Then the primary gids */ priGid = (gid_t *) getCredentialData(PRI_GID, &cntPriGid); if (priGid == NULL || cntPriGid<=0) { lcmaps_log_debug(1, "%s() error: LCMAPS could not find any gid, at least one required!\n", __func__); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } else { *pnpgid = cntPriGid; /* Note: cntPriGid>0 */ *ppgid_list = malloc(sizeof(gid_t) * (size_t)cntPriGid); if (*ppgid_list == NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n",__func__); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } for (i = 0; i < cntPriGid; i++) { (*ppgid_list)[i] = priGid[i]; } } /* Then the secondary gids */ secGid = (gid_t *) getCredentialData(SEC_GID, &cntSecGid); if (secGid == NULL || cntSecGid<=0) { lcmaps_log_debug(1, "%s(): LCMAPS found no secondary groups\n", __func__); } else { *pnsgid = cntSecGid; /* Note: cntPriGid>0 */ *psgid_list = malloc(sizeof(gid_t) * (size_t)cntSecGid); if (*psgid_list == NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n",__func__); goto fail_lcmaps_run_with_stack_of_x509_and_return_account; } for (i = 0; i < cntSecGid; i++) { (*psgid_list)[i] = secGid[i]; } } /* And finally the poolindex */ poolindex_list = (char **) getCredentialData(POOL_INDEX, &cntpoolindex); if (poolindex_list && (cntpoolindex > 0)) { poolindex = (char *)(*(poolindex_list)); /* lcmaps_log_debug(3, "%s(): found %d poolindeces starting at address = %p\n", __func__, cntpoolindex, poolindex_list); */ lcmaps_log_debug(5, "%s(): found this poolindex %s\n", __func__, poolindex); *poolindexp = poolindex; } else { lcmaps_log_debug(5, "%s(): LCMAPS could not find the poolindex\n", __func__); /* goto fail_lcmaps_run_with_stack_of_x509_and_return_account; */ } /* succes */ lcmaps_release_cred_leave_STACK_OF_X509(&lcmaps_cred); lcmaps_log_debug(2, "%s(): succeeded\n", __func__); return 0; fail_lcmaps_run_with_stack_of_x509_and_return_account: lcmaps_release_cred_leave_STACK_OF_X509(&lcmaps_cred); lcmaps_log_debug(2, "%s(): failed\n", __func__); return 1; } #endif /* LCMAPS_GSI_MODE */ /* * END OF THE GSI DEPENDENT INTERFACES */ /* Return the Version information of LCMAPS. This information is set in the configure.ac file and parsed here */ int lcmaps_get_major_version (void) { int major = 0, minor = 0, patch = 0; if (sscanf(VERSION, "%d.%d.%d", &major, &minor, &patch) != 3) { lcmaps_log(LOG_ERR, "%s() error: LCMAPS could parse compile-time version information.\n", __func__); return 0; } else return major; } int lcmaps_get_minor_version (void) { int major = 0, minor = 0, patch = 0; if (sscanf(VERSION, "%d.%d.%d", &major, &minor, &patch) != 3) { lcmaps_log(LOG_ERR, "%s() error: LCMAPS could parse compile-time version information.\n", __func__); return 0; } else return minor; } int lcmaps_get_patch_version (void) { int major = 0, minor = 0, patch = 0; if (sscanf(VERSION, "%d.%d.%d", &major, &minor, &patch) != 3) { lcmaps_log(LOG_ERR, "%s() error: LCMAPS could parse compile-time version information.\n", __func__); return 0; } else return patch; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps.c,v $ $Date: 2014-07-07 21:28:25 +0200 (Mon, 07 Jul 2014) $ $Revision: 17839 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/lcmaps-verify-account-from-pem.pc.in0000644001726200004540000000055612471136645017423 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: lcmaps-verify-account-from-pem@LCMAPS_FLAVOUR_NAME@ Description: LCMAPS@LCMAPS_FLAVOUR_NAME@ verify account from PEM string mode Requires: lcmaps@LCMAPS_FLAVOUR_NAME@ Version: @VERSION@ Libs: -L${libdir} -llcmaps_verify_account_from_pem@LCMAPS_FLAVOUR@ Cflags: -I${includedir} lcmaps-1.6.6/src/pluginmanager/0000755001726200004540000000000012471136741013437 500000000000000lcmaps-1.6.6/src/pluginmanager/_lcmaps_utils.h0000644001726200004540000000710412471136644016372 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_utils.h \brief Internal header for the LCMAPS utilities. \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS utility functions: -# lcmaps_tokenize(): \internal */ #ifndef _LCMAPS_UTILS_H #define _LCMAPS_UTILS_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_utils.h" /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** OTHER STUFF ******************************************************************************/ /*! \name OTHER FUNCTIONS */ /*@{*/ /* Beginning of other functions */ /****************************************************************************** Function: lcmaps_tokenize() (in modified form from globus_gatekeeper_utils.c) Description: Breakup the command in to args, pointing the args array at the tokens. Replace white space at the end of each token with a null. A token maybe in quotes. Parameters: command: The command line to be parsed. args: A pointer to an array of pointers to be filled it n: Size of the array, on input, and set to size used on output. sep: string of separating characters Returns: 0 on success. -1 on to malloc -2 on to many args -3 on quote not matched ******************************************************************************/ extern int lcmaps_tokenize( const char * command, char ** args, int * n, const char * sep ); /*@}*/ /* End of other functions */ #endif /* _LCMAPS_UTILS_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/_lcmaps_utils.h,v $ $Date: 2014-02-25 16:11:54 +0100 (Tue, 25 Feb 2014) $ $Revision: 17511 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/lcmaps_utils.c0000644001726200004540000003133512471136644016231 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_utils.c \brief the utilities for the LCMAPS \author Martijn Steenbakkers for the EU DataGrid. */ /***************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Need _BSD_SOURCE for getgrouplist() */ #ifdef HAVE_GETGROUPLIST # ifdef __APPLE__ /* At least on MacOS getgrouplist() is defined in unistd.h, but only when NOT * POSIX_SOURCE, so don't define _XOPEN_SOURCE */ # include # else /* __APPLE__ */ # define _XOPEN_SOURCE 500 # define _BSD_SOURCE # endif /* __APPLE__ */ #else /* HAVE_GETGROUPLIST */ # define _XOPEN_SOURCE 500 #endif /* HAVE_GETGROUPLIST */ /* Needed for NULL */ #include #include #include #include #include #include #include #include "lcmaps_log.h" #include "lcmaps_utils.h" #include "pluginmanager/_lcmaps_utils.h" /****************************************************************************** Function: lcmaps_genfilename() (copied from GLOBUS gatekeeper.c) Description: generate an absolute file name given a starting prefix, a relative or absolute path, and a suffix Only use prefix if path is relative. Parameters: Returns: a pointer to a string which could be freeded. ******************************************************************************/ /*! \fn lcmaps_genfilename( char * prefixp, char * pathp, char * suffixp ) \brief Generate an absolute file name. Given a starting prefix, a relative or absolute path, and a suffix an absolute file name is generated. Uses the prefix only if the path is relative. (Copied (and modified) from GLOBUS gatekeeper.c) \param prefixp string containing the prefix to be prepended. \param pathp relative/absolute path to file name. \param suffixp string containing the suffix to be appended. \return pointer to a string containing the absolute path to the file, which has to be freed. */ char * lcmaps_genfilename( const char * prefixp, const char * pathp, const char * suffixp ) { char * newfilename; size_t prefixl, pathl, suffixl; const char * prefix, * path, * suffix; prefix = (prefixp) ? prefixp : ""; path = (pathp) ? pathp : ""; suffix = (suffixp) ? suffixp : ""; prefixl = strlen(prefix); pathl = strlen(path); suffixl = strlen(suffix); newfilename = (char *) calloc((size_t)1, (prefixl + pathl + suffixl + 3)); if (newfilename) { if (*path != '/') { strcat(newfilename, prefix); if ((prefixl != 0) && (prefix[prefixl-1] != '/')) { strcat(newfilename, "/"); } } strcat(newfilename, path); if ((pathl != 0) && (suffixl != 0) && (path[pathl-1] != '/') && suffix[0] != '/') { strcat(newfilename, "/"); } strcat(newfilename, suffix); } return newfilename; } /****************************************************************************** Function: lcmaps_tokenize() (in modified form from globus_gatekeeper_utils.c) Description: Breakup the command in to args, pointing the args array at the tokens. Replace white space at the end of each token with a null. A token maybe in quotes. Parameters: command: The command line to be parsed. args: A pointer to an array of pointers to be filled it n: Size of the array, on input, and set to size used on output. sep: string of seperating characters Returns: 0 on success. -1 on to malloc -2 on to many args -3 on quote not matched ******************************************************************************/ /*! \fn lcmaps_tokenize( const char * command, char ** args, int * n, char * sep ) \brief Break the argument string up into tokens Breakup the command in to arguments, pointing the args array at the tokens. Replace white space at the end of each token with a null. A token maybe in quotes. (Copied (and modified) from GLOBUS gatekeeper.c) \param command the command line to be parsed \param args pointer to an array of pointers to be filled \param n size of the array, on input, and set to size used on output \param sep string of separating characters \retval 0 succes \retval -1 malloc error \retval -2 too many args \retval -3 quote not matched \retval -4 invalid input \internal */ int lcmaps_tokenize( const char * command, char ** args, int * n, const char * sep ) { int maxargs; int i; const char * cp; const char * pp; const char * qp; char ** arg; if (args==NULL || n==NULL || sep==NULL) return -4; if (command==NULL) { args[0] = NULL; *n = 0; return 0; } arg = args; /* i = *n - 1; */ i = 0; maxargs = *n; cp = command; while (*cp) { /* skip leading sep characters */ while (*cp && strchr(sep, *cp)) { cp++; } pp = NULL; if (*cp == '\"') { cp++; pp = cp; if ((qp = strchr(cp,'\"')) == NULL) { *n = i; return -3; } cp = qp + 1; } else if (*cp) { pp = cp; if ((qp = strpbrk(cp,sep)) == NULL) { qp = strchr(cp,'\0'); } cp = qp; } else { continue; } if (pp) { /* * fill at most maxargs-1 arguments; let the last one point to NULL */ i++; if (i >= maxargs) { i--; *n = i; return(-2); /* too many args */ } *arg = (char*)malloc((size_t)(qp - pp) + 1); if (*arg == NULL) { i--; *n = i; return -1; } memcpy(*arg,pp,(size_t)(qp - pp)); *(*arg + (qp - pp)) = '\0'; arg++; } } *arg = NULL; *n = i; return(0); } /****************************************************************************** Function: lcmaps_get_gidlist() Description: Finds the list of gids for user in the group file (/etc/group) Returns a list of gid_t which should be freed by calling program. Parameters: username: the name of the user ngroups: ptr to int which will be filled with the number of gids. group_list: ptr to an array of gid_t. Returns: 0 on success. -1 on realloc failure -2 on getgrent failure 1 on failure ******************************************************************************/ /*! \fn lcmaps_get_gidlist( const char * username, int * ngroups, gid_t ** group_list ) \brief Finds the list of gids for user in the group file (/etc/group) Returns a list of gid_t which should be freed by calling program. \param username the name of the user \param ngroups ptr to int which will be filled with the number of gids \param group_list ptr to an array of gid_t \retval 0 success \retval -1 realloc failure \retval -2 getgrent failure \retval 1 failure */ int lcmaps_get_gidlist( const char * username, int * ngroups, gid_t ** group_list ) { #ifdef HAVE_GETGROUPLIST /* New method of obtaining secondary Group IDs from the system. Using * getgrouplist() is faster, because it performs a smarter search for * secondary Group IDs */ int ng = 0; #ifdef __APPLE__ int *groups = NULL; #else gid_t *groups = NULL; #endif struct passwd *pw; if (!ngroups || !group_list) { return 1; } pw = getpwnam(username); if (pw == NULL) return 1; #ifdef __APPLE__ if (getgrouplist(username, (int)(pw->pw_gid), NULL, &ng) < 0) { groups = (int *) malloc((size_t)ng * sizeof (gid_t)); if (groups == NULL) { lcmaps_log(LOG_ERR,"lcmaps_get_gidlist(): cannot malloc\n"); return -1; } getgrouplist(username, (int)(pw->pw_gid), groups, &ng); } *group_list = (gid_t*)groups; #else /* __APPLE__ */ if (getgrouplist(username, pw->pw_gid, NULL, &ng) < 0) { groups = (gid_t *) malloc((size_t)ng * sizeof (gid_t)); if (groups == NULL) { lcmaps_log(LOG_ERR,"lcmaps_get_gidlist(): cannot malloc\n"); return -1; } getgrouplist(username, pw->pw_gid, groups, &ng); } *group_list = groups; #endif /*__APPLE__ */ *ngroups = ng; return 0; #else /* HAVE_GETGROUPLIST */ /* This is the old way of doing it. It was reliable, but suffers an * increased load on LDAP based system due to the lookup of all the entries * in the database, each time you pass here */ struct group * group_info = NULL; gid_t * groups = NULL; gid_t * newgroups = NULL; int i = 0; /* rewind the file pointer to the beginning of the /etc/group file */ setgrent(); lcmaps_log_debug(2,"lcmaps_get_gidlist(): looping through group file\n"); *ngroups = 0; while ( ( group_info = getgrent() ) ) { char ** pgr_mem = group_info->gr_mem; char * gr_mem = NULL; /* lcmaps_log_debug(4,"lcmaps_get_gidlist(): group %s\n", group_info->gr_name); */ while ( (gr_mem = *pgr_mem) ) { /* lcmaps_log_debug(4,"lcmaps_get_gidlist(): group member %s\n", gr_mem); */ if (strncmp(username, gr_mem, strlen(username))==0) { /* lcmaps_log_debug(2,"lcmaps_get_gidlist(): found group %s for %s\n", group_info->gr_name, username); */ (*ngroups)++; /* Note: *ngroups is >=0 */ newgroups = (gid_t *) realloc(groups, ((size_t)(*ngroups) * sizeof(gid_t))); if (newgroups == NULL) { lcmaps_log(LOG_ERR,"lcmaps_get_gidlist(): cannot realloc\n"); free(groups); return -1; } groups=newgroups; groups[(*ngroups)-1] = group_info->gr_gid; } ++pgr_mem; } } if (errno==ENOMEM) { lcmaps_log(LOG_ERR,"lcmaps_get_gidlist(): Cannot read the group file, %s\n", strerror(errno)); free(groups); groups=NULL; /* Close the group file */ endgrent(); return -2; } *group_list=groups; lcmaps_log_debug(4,"lcmaps_get_gidlist(): %d groups found for %s\n", *ngroups, username); for (i = 0; i < *ngroups; i++) { lcmaps_log_debug(4,"lcmaps_get_gidlist(): group nr %d ==> gid_t %d\n", i+1, groups[i]); } /* Close the group file */ endgrent(); return 0; #endif } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/lcmaps_utils.c,v $ $Date: 2014-02-27 11:12:15 +0100 (Thu, 27 Feb 2014) $ $Revision: 17536 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/lcmaps_db_read.c0000644001726200004540000004352612471136644016456 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_db_read.c \brief the LCMAPS database reader \author Martijn Steenbakkers for the EU DataGrid. */ /***************************************************************************** Include header files ******************************************************************************/ #include #include #include #include "lcmaps_log.h" #include "_lcmaps_db_read.h" /****************************************************************************** Definitions ******************************************************************************/ #define MAXDBENTRIES 250 /*!< maximum number of LCMAPS database entries \internal */ #define MAXPAIRS 2 /*!< maximum number of variable-value pairs that will be parsed per line \internal */ #define WHITESPACE_CHARS " \t\n" /*!< \internal */ #define QUOTING_CHARS "\"" /*!< \internal */ #define ESCAPING_CHARS "\\" /*!< \internal */ #define COMMENT_CHARS "#" /*!< \internal */ /*! Characters separating variable-value pairs in the lcmaps database file \internal */ #define PAIR_SEP_CHARS "," /*! Characters separating variables from values \internal */ #define VARVAL_SEP_CHARS "=" /* * Characters that terminate pairs, values and variables in the lcmaps database file. This * is a combination of whitespace and separators. */ /*! Characters that terminate pairs in the lcmaps database file. This is a combination of whitespace and separators. \internal */ #if 0 #define PAIR_TERMINATOR_CHARS PAIR_SEP_CHARS WHITESPACE_CHARS #endif /*! Characters that terminate variables and values in the lcmaps database file. This is a combination of whitespace and separators. \internal */ #if 0 #define VARVAL_TERMINATOR_CHARS VARVAL_SEP_CHARS WHITESPACE_CHARS #endif #ifndef NUL #define NUL '\0' /*!< \internal */ #endif /****************************************************************************** Module specific prototypes ******************************************************************************/ static int lcmaps_db_read_entries(FILE *); static int lcmaps_db_parse_line(char *, lcmaps_db_entry_t **); static int lcmaps_db_parse_pair(char *, char **, char **); static int lcmaps_db_parse_string(char **); /****************************************************************************** Define module specific variables ******************************************************************************/ static lcmaps_db_entry_t * lcmaps_db_list=NULL; /*!< list of database entries */ /****************************************************************************** Function: lcmaps_db_read documentation in _lcmaps_db_read.h ******************************************************************************/ /*! \fn lcmaps_db_read( char * lcmaps_db_fname ) \brief Read database from file. \param lcmaps_db_fname database file. \return a pointer to the database list \internal */ lcmaps_db_entry_t ** lcmaps_db_read( char * lcmaps_db_fname ) { FILE * lcmaps_db_fhandle; int no_entries; lcmaps_db_fhandle = fopen(lcmaps_db_fname, "r"); if (lcmaps_db_fhandle == NULL) { /* Cannot open file */ return NULL; } no_entries=lcmaps_db_read_entries(lcmaps_db_fhandle); if (no_entries < 0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_read(): Parse error in line %d of %s\n", -(no_entries), lcmaps_db_fname); fclose(lcmaps_db_fhandle); return NULL; } else if (no_entries > MAXDBENTRIES) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_read(): Too many entries found in %s\n", lcmaps_db_fname); lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_read(): Only the first %d entries are used\n", MAXDBENTRIES); } fclose(lcmaps_db_fhandle); return &lcmaps_db_list; } /*! \fn lcmaps_db_read_entries( FILE * dbstream ) \brief Read db entries from stream and fill a lsit of db entries \param dbstream database stream \return the number of entries found (failure --> negative number) \internal */ static int lcmaps_db_read_entries( FILE * dbstream ) { char line[1024]; int nlines=0; int no_entries=0; lcmaps_db_entry_t * entry=NULL; nlines=0; no_entries=0; /* lcmaps_db_fill_entry(no_entries,NULL); */ while (fgets(line, (int)sizeof(line), dbstream)) { ++nlines; if (! lcmaps_db_parse_line(line, &entry)) { /* parse error, return line number */ if (entry != NULL) free(entry); return -(nlines); } if (entry != NULL) { lcmaps_log_debug(3,"line %d: %s, %s\n",nlines,entry->pluginname,entry->pluginargs); /* entry found */ ++no_entries; if (no_entries > MAXDBENTRIES) { if (entry != NULL) free(entry); return no_entries; } if ( lcmaps_db_fill_entry(&lcmaps_db_list, entry)==NULL ) { /* error filling lcmaps_db */ if (entry != NULL) free(entry); return -(nlines); } if (entry != NULL) free(entry); entry=NULL; } else { /* no entry found, but no error */ continue; } } if (entry != NULL) free(entry); return no_entries; } /****************************************************************************** Function: lcmaps_db_fill_entry documentation in _lcmaps_db_read.h ******************************************************************************/ /*! \fn lcmaps_db_fill_entry( lcmaps_db_entry_t ** list, lcmaps_db_entry_t * entry ) \brief Add a database entry to a list. \param list database list (array of database entry pointers) \param entry the database entry to be added \return a pointer to the newly created database entry in the list or NULL (error) \internal */ lcmaps_db_entry_t * lcmaps_db_fill_entry( lcmaps_db_entry_t ** list, lcmaps_db_entry_t * entry ) { lcmaps_db_entry_t * plist; if (entry == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_fill_entry(): error null entry\n"); return NULL; } if (!(*list)) { lcmaps_log_debug(2,"lcmaps.mod-lcmaps_db_fill_entry(): creating first list entry\n"); *list=plist=(lcmaps_db_entry_t *)malloc(sizeof(lcmaps_db_entry_t)); } else { lcmaps_log_debug(2,"lcmaps.mod-lcmaps_db_fill_entry(): creating new list entry\n"); plist=*list; while (plist->next) plist=plist->next; plist=plist->next=(lcmaps_db_entry_t *)malloc(sizeof(lcmaps_db_entry_t)); } if (!plist) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_fill_entry(): error creating new list entry\n"); return NULL; } plist->next=NULL; if (entry->pluginname != NULL) { strncpy(plist->pluginname,entry->pluginname,LCMAPS_MAXPATHLEN); (plist->pluginname)[LCMAPS_MAXPATHLEN]=NUL; } else strncpy(plist->pluginname,"",LCMAPS_MAXPATHLEN); if (entry->pluginargs != NULL) { strncpy(plist->pluginargs,entry->pluginargs,LCMAPS_MAXARGSTRING); (plist->pluginargs)[LCMAPS_MAXARGSTRING]=NUL; } else strncpy(plist->pluginargs,"",LCMAPS_MAXARGSTRING); return plist; } /*! \fn lcmaps_db_parse_line( char * line, lcmaps_db_entry_t ** entry ) \brief Parses database line and fills database structure \param line database line \param entry pointer to a pointer to a database structure (can/should be freed afterwards) \retval 1 succes. \retval 0 failure. \internal */ static int lcmaps_db_parse_line( char * line, lcmaps_db_entry_t ** entry ) { char * var_val_pairs[MAXPAIRS]; char * var; char * val; int ipair; int no_pairs; size_t len; lcmaps_db_entry_t * tmp_entry=NULL; /* Check arguments */ if ((line == NULL) || (*entry != NULL)) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_line(): something wrong with arguments\n"); goto error; } /* Skip over leading whitespace */ line += strspn(line, WHITESPACE_CHARS); /* Check for comment at start of line and ignore line if present */ if (strchr(COMMENT_CHARS, *line) != NULL) { /* Ignore line, return NULL entry. */ *entry=NULL; return 1; } /* Check for empty line */ if (*line == NUL) { /* Empty line, return NULL entry. */ *entry=NULL; return 1; } /* Look for variable-value pairs by checking the PAIR_SEP_CHARS */ ipair=0; len=0; while (*line != NUL) { len=strcspn(line, PAIR_SEP_CHARS); if (len > 0) { var_val_pairs[ipair] = line; ipair++; line+=len; if (*line == NUL) { /* probably end of line */ continue; } if (strchr(PAIR_SEP_CHARS, *line) != NULL) { *line=NUL; line += 1; } } else { /* len = 0, so *line=PAIR_SEP_CHARS */ line += 1; } line += strspn(line, WHITESPACE_CHARS); } no_pairs=ipair; if (no_pairs) { tmp_entry=malloc(sizeof(*tmp_entry)); if (tmp_entry == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_line(): error allocating memory\n"); goto error; } /* Initialize tmp_entry */ (tmp_entry->pluginname)[0] = NUL; (tmp_entry->pluginargs)[0] = NUL; for (ipair=0; ipair < no_pairs; ipair++) { int rc=0; lcmaps_log_debug(3,"pair %d:%s-endpair\n",ipair, var_val_pairs[ipair]); rc=lcmaps_db_parse_pair(var_val_pairs[ipair], &var, &val); if (! rc) { /* error parsing variable-value pair */ lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_line(): error parsing variable-value pair\n"); goto error; } lcmaps_log_debug(3,"var: %s, value: %s\n",var,val); if (strncmp(var,"pluginname",strlen("pluginname")) == 0) { /* found plugin name */ strncpy(tmp_entry->pluginname,val,LCMAPS_MAXPATHLEN); (tmp_entry->pluginname)[LCMAPS_MAXPATHLEN]=NUL; } else if (strncmp(var,"pluginargs",strlen("pluginargs")) == 0) { /* found plugin database */ strncpy(tmp_entry->pluginargs,val,LCMAPS_MAXARGSTRING); (tmp_entry->pluginargs)[LCMAPS_MAXARGSTRING]=NUL; } else { /* unknown option: do nothing */ } } } /* succes */ *entry=tmp_entry; return 1; error: if (tmp_entry != NULL) free(tmp_entry); return 0; } /*! \fn lcmaps_db_parse_pair( char * pair, char ** pvar, char ** pval ) \brief Parses a database variable-value pair and returns the variable name and its value \param pair string containing the pair \param pvar pointer to the variable string \param pval pointer to the value string \retval 1 succes. \retval 0 failure. \internal */ static int lcmaps_db_parse_pair( char * pair, char ** pvar, char ** pval ) { size_t len; char * var; char * val; if (pair == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_pair(): cannot parse empty pair\n"); return 0; } /* Skip over leading whitespace */ pair += strspn(pair, WHITESPACE_CHARS); if (*pair == NUL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_pair(): cannot parse empty pair\n"); return 0; } var=pair; len=strcspn(pair, VARVAL_SEP_CHARS); pair+=len; if (*pair == NUL) { /* Cannot find '=' */ lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_pair(): cannot find =\n"); return 0; } if (strchr(VARVAL_SEP_CHARS, *pair) != NULL) { /* Found ' var =' and replace '=' with NUL*/ *pair=NUL; if (! lcmaps_db_parse_string(&var)) { /* error parsing variable name */ return 0; } pair+=1; if (*pair==NUL) { /* No value found */ /* val=NULL; */ val=pair; *pvar=var; *pval=val; return 1; } else { /* Skip over leading whitespace */ pair += strspn(pair, WHITESPACE_CHARS); if (*pair == NUL) { /* No value found */ /* val=NULL; */ val=pair; *pvar=var; *pval=val; return 1; } val=pair; if (! lcmaps_db_parse_string(&val)) { /* error parsing value */ return 0; } } } else { /* Cannot find '=' */ lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_pair(): cannot find =\n"); return 0; } /* success */ *pvar=var; *pval=val; return 1; } /*! \fn lcmaps_db_parse_string( char ** pstring ) \brief Takes a string and removes prepending and trailing spaces and quotes (unless escaped) \param pstring pointer to a pointer to a char \retval 1 succes. \retval 0 failure. \internal */ static int lcmaps_db_parse_string( char ** pstring ) { char * end; char * string; string=*pstring; if (*string==NUL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_string(): error parsing null string\n"); return 0; } /* Is string quoted ? */ if (strchr(QUOTING_CHARS, *string) != NULL) { /* * Yes, skip over opening quote and look for unescaped * closing double quote */ string++; end=string; do { end += strcspn(end, QUOTING_CHARS); if (*end == NUL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_parse_string(): missing closing quote\n"); return 0; /* Missing closing quote */ } /* Make sure it's not escaped */ } while (strchr(ESCAPING_CHARS, *(end - 1)) != NULL); } else { end = string + strcspn(string, WHITESPACE_CHARS); } *end=NUL; *pstring=string; return 1; } /****************************************************************************** Function: lcmaps_db_clean_list documentation in _lcmaps_db_read.h ******************************************************************************/ /*! \fn lcmaps_db_clean_list( lcmaps_db_entry_t ** list ) \brief Clean/remove the database list \param list pointer to the database list \retval 0 succes. \retval 1 failure. \internal */ int lcmaps_db_clean_list( lcmaps_db_entry_t ** list ) { lcmaps_db_entry_t * entry; entry=*list; while (entry) { lcmaps_db_entry_t * next_entry; lcmaps_log_debug(2,"cleaning db entry for module %s\n",entry->pluginname); next_entry=entry->next; free(entry); entry=next_entry; } *list=entry=NULL; return 0; } /****************************************************************************** Function: lcmaps_db_clean documentation in _lcmaps_db_read.h ******************************************************************************/ /*! \fn lcmaps_db_clean() \brief Clean/remove the database structure. \retval 0 succes \retval 1 failure \internal */ int lcmaps_db_clean(void) { if(lcmaps_db_clean_list(&lcmaps_db_list) != 0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_db_clean() error: could not clean list\n"); return 1; } return 0; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/lcmaps_db_read.c,v $ $Date: 2014-02-26 16:01:45 +0100 (Wed, 26 Feb 2014) $ $Revision: 17529 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/_lcmaps_pluginmanager.h0000644001726200004540000001371212471136644020065 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_pluginmanager.h \brief API of the PluginManager \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS library functions: -# lcmaps_startPluginManager(): start the PluginManager --> load plugins, start evaluation manager -# lcmaps_runPluginManager(): run the PluginManager --> run evaluation manager --> run plugins -# lcmaps_stopPluginManager(): stop the PluginManager -# lcmaps_runPlugin(): run the specified plugin. (used by Evaluation Manager) -# lcmaps_resetCredentialData(): reset the Credential Data. (used by Evaluation Manager) */ #ifndef _LCMAPS_PLUGINMANAGER_H #define _LCMAPS_PLUGINMANAGER_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_types.h" #include "grid_credential_handling/_lcmaps_credential.h" /****************************************************************************** * Define constants *****************************************************************************/ #define LCMAPS_NORMAL_MODE (unsigned int) 0 #define LCMAPS_VERIFICATION_MODE (unsigned int) 1 /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_startPluginManager Description: Initialize PluginManager module: read from LCMAPS config file, the plugins to be loaded Initialize evaluation manager (get policy) Parameters: Returns: 0: succes 1: failure ******************************************************************************/ int lcmaps_startPluginManager(void); /****************************************************************************** Function: lcmaps_stopPluginManager Description: Terminate PluginManager module. Parameters: Returns: 0: termination succeeded 1: termination failed ******************************************************************************/ int lcmaps_stopPluginManager(void); /****************************************************************************** Function: lcmaps_runPluginManager Description: Run PluginManager: Contact Evaluation Manager with list of possible policies --> runs plugins The plugin manager can be run in verification mode or normal mode, depending on "verification switch". Parameters: request : RSL request lcmaps_cred : user credential npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation mode : Mode of running lcmaps: LCMAPS_NORMAL_MODE or LCMAPS_VERIFICATION_MODE Returns: 0: user mapping or mapping verification succeeded 1: user mapping or mapping verification failed ******************************************************************************/ int lcmaps_runPluginManager( lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred, char *requested_username, int npols, char ** policynames, unsigned int mode ); /****************************************************************************** Function: runPlugin Description: Run a plugin for the Evaluation Manager the result (succes or not will be passed to the Evaluation Manager) Parameters: pluginname: the name of the plugin module Returns: 0: plugin run succeeded 1: plugin run failed ******************************************************************************/ int lcmaps_runPlugin( const char * pluginname ); /****************************************************************************** Function: lcmaps_resetCredentialData Description: Reset the Credential data. Wrapper around lcmaps_cleanCredentialData() to be used by the Evaluation Manager, before a new policy is evaluated Parameters: none Returns: the return value of lcmaps_cleanCredentialData() ******************************************************************************/ int lcmaps_resetCredentialData(void); #endif /* _LCMAPS_PLUGINMANAGER_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h,v $ $Date: 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) $ $Revision: 17647 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/lcmaps_pluginmanager.c0000644001726200004540000013567712471136644017740 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_pluginmanager.c \brief the plugin manager for LCMAPS \author Martijn Steenbakkers for the EU DataGrid. The interface to the PluginManager module is composed of: -# lcmaps_startPluginManager(): start the PluginManager --> load plugins, start evaluation manager -# lcmaps_runPluginManager(): run the PluginManager --> run evaluation manager --> run plugins -# lcmaps_stopPluginManager(): stop the PluginManager -# reloadPluginManager(): reload the PluginManager ? (will we implement this ?) -# lcmaps_runPlugin(): run the specified plugin. (used by Evaluation Manager) -# lcmaps_resetCredentialData(): reset the Credential Data. (used by Evaluation Manager) */ /***************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include #include #include #include /* Programming interface to dynamic linking loader */ #ifdef HAVE_DLFCN_H # include #endif /* LCMAPS includes */ #include "lcmaps_types.h" #include "lcmaps_log.h" #include "lcmaps_arguments.h" #include "lcmaps_defines.h" #include "lcmaps_plugin_typedefs.h" #include "_lcmaps_utils.h" /*#include "_lcmaps_db_read.h"*/ #include "grid_credential_handling/_lcmaps_runvars.h" #include "_lcmaps_cred_data.h" #include "_lcmaps_pluginmanager.h" /* interface to evaluationmanager */ #include "../evaluationmanager/evaluationmanager.h" #include "../evaluationmanager/pdl.h" /****************************************************************************** Define constants ******************************************************************************/ #ifndef NUL #define NUL '\0' /*!< NUL character \internal */ #endif /* LCMAPS authorization module definitions */ #define USE_EVALUATIONMANAGER 1 /****************************************************************************** Type definitions ******************************************************************************/ /*! \typedef lcmaps_plugindl_t \struct lcmaps_plugindl_s \brief the type definition of the lcmaps plugin module structure \internal */ typedef struct lcmaps_plugindl_s { void * handle; /*!< dlopen handle to plugin module */ plugin_initialize_t *plugin_initialize; plugin_introspect_t *plugin_introspect; plugin_run_t *plugin_run; plugin_verify_t *plugin_verify; plugin_terminate_t *plugin_terminate; char pluginshortname[LCMAPS_MAXPATHLEN+1]; /*!< name of plugin without path */ char pluginabsname[LCMAPS_MAXPATHLEN+1]; /*!< absolute name of plugin */ char pluginargs[LCMAPS_MAXARGSTRING+1]; /*!< argument string */ int init_argc; /*!< number of arguments for the initialization function */ char * init_argv[LCMAPS_MAXARGS]; /*!< list of arguments for the initialization function */ int run_argc; /*!< number of arguments for the plugin run function (get credentials) */ lcmaps_argument_t * run_argv; /*!< list of arguments for the plugin run function (get credentials) */ struct lcmaps_plugindl_s * next; /*!< pointer to the next plugin in the plugin list */ } lcmaps_plugindl_t; /****************************************************************************** Module specific prototypes ******************************************************************************/ static lcmaps_plugindl_t * PluginInit(lcmaps_db_entry_t *, lcmaps_plugindl_t **); static void * get_procsymbol(void *, const char *); #ifdef LCMAPS_DEBUG static int print_lcmaps_plugin(int, lcmaps_plugindl_t *); #endif static int parse_args_plugin(const char *, const char *, char **, int *); static int clean_plugin_list(lcmaps_plugindl_t **); static int lcmaps_set_sigpipe_handler(void); static int lcmaps_reset_sigpipe_handler(void); static void lcmaps_sigpipe_handler(int sig); static int fexist(char *); static char * lcmaps_findplugin(char *); /****************************************************************************** Define module specific variables ******************************************************************************/ static unsigned int lcmaps_mode = LCMAPS_NORMAL_MODE; /*!< \internal */ static const char * lcmaps_db_file_default = NULL; /*!< \internal */ static const char * lcmaps_dir = NULL; /*!< \internal */ static lcmaps_plugindl_t * plugin_list = NULL; /*!< \internal */ static void (*lcmaps_stored_sigpipe_handler)(int) = NULL; /*!< \internal */ /****************************************************************************** Function: fexist() Description: check the existence of file corresponding to Parameters: path Returns: 1, if file exists ******************************************************************************/ /*! \fn fexist( char * path ) \brief check the existence of file corresponding to \ \param path absolute filename to be checked. \retval 1 file exists. \retval 0 failure. */ static int fexist( char * path ) { struct stat sbuf; int res; if(!path || !*path) return 0; res=stat(path,&sbuf); if (res) { if (errno==ENOENT) { return 0; } else { return -1; } } return 1; } /****************************************************************************** Function: lcmaps_findplugin() Description: Checks for file in standard directories Parameters: name Returns: returns filename found (should be freeed) or NULL ******************************************************************************/ /*! \fn lcmaps_findplugin( char * name ) \brief Checks for file in standard directories The directories that are checked are: - value of LCMAPS_MODULES_DIR env var (if set) - LCMAPS_MOD_HOME \param name string containing the file name \return pointer to a string containing the absolute path to the file, which has to be freed or NULL. */ char * lcmaps_findplugin( char * name ) { char *tmpname=NULL; char *lcmaps_modules_dir=NULL; char *pdl_path=NULL; /* New format for db: either path is set in db file and plugins have an * absolute path with respect to that (when path is relative, the eval * manager prefixes with $libdir) or there isn't a path set and the plugin * name is to be searched in either env var LCMAPS_MODULES_DIR if set, or in * build-time default LCMAPS_MOD_HOME */ pdl_path=lcmaps_pdl_path(); if (pdl_path) { /* Absolute path: test it */ tmpname=lcmaps_genfilename(pdl_path,name,NULL); if (!tmpname) { /* calloc error */ lcmaps_log(LOG_ERR,"lcmaps_findplugin(): Cannot calloc\n"); return NULL; } lcmaps_log_debug(LOG_DEBUG, "Looking for %s at %s...\n", name, tmpname); if (fexist(tmpname)) return tmpname; free(tmpname); } else { /* relative path: - do we have an LCMAPS_MODULES_DIR - if so then test there first */ lcmaps_modules_dir=getenv("LCMAPS_MODULES_DIR"); if (lcmaps_modules_dir) { /* test in and in LCMAPS_MODULES_DIR and build-time default * LCMAPS_MOD_HOME */ tmpname=lcmaps_genfilename(lcmaps_modules_dir,name,NULL); if (!tmpname) { /* calloc error */ lcmaps_log(LOG_ERR,"lcmaps_findplugin(): Cannot calloc\n"); return NULL; } lcmaps_log_debug(LOG_DEBUG, "Looking for %s at %s...\n", name, tmpname); if (fexist(tmpname)) return tmpname; free(tmpname); } /* No name so far: test default build-in location */ tmpname=lcmaps_genfilename(LCMAPS_MOD_HOME,name,NULL); if (!tmpname) { /* calloc error */ lcmaps_log(LOG_ERR,"lcmaps_findplugin(): Cannot calloc\n"); return NULL; } lcmaps_log_debug(5, "Looking for %s at %s...\n", name, tmpname); if (fexist(tmpname)) return tmpname; free(tmpname); } return NULL; } /****************************************************************************** Function: lcmaps_startPluginManager Description: Start PluginManager module: read from LCMAPS config file, the plugins to be loaded Start evaluation manager (get policy) Parameters: Returns: 0: succes 1: failure ******************************************************************************/ /*! \fn lcmaps_startPluginManager( ) \brief start the PluginManager start the PluginManager --> load plugins, start evaluation manager \retval 0 succes \retval 1 failure */ int lcmaps_startPluginManager( ) { #if USE_EVALUATIONMANAGER lcmaps_db_entry_t * lcmaps_db_handle=NULL; #else lcmaps_db_entry_t ** lcmaps_db_handle=NULL; #endif lcmaps_db_entry_t * ihandle=NULL; lcmaps_plugindl_t * plugin_entry=NULL; lcmaps_plugindl_t * plugin_entry_cmp=NULL; char * lcmaps_db_file=NULL; int ientry; int npol = 0; char * pol1 = NULL; /* get LCMAPS (database) home directory and set lcmaps_db_file */ lcmaps_dir = getenv("LCMAPS_DIR"); lcmaps_dir = (lcmaps_dir ? lcmaps_dir : getenv("LCMAPS_ETC_DIR") ); lcmaps_dir = (lcmaps_dir ? lcmaps_dir : LCMAPS_ETC_HOME ); lcmaps_db_file_default = getenv("LCMAPS_DB_FILE"); lcmaps_db_file_default = (lcmaps_db_file_default ? lcmaps_db_file_default : "lcmaps.db" ); lcmaps_db_file=lcmaps_genfilename(lcmaps_dir, lcmaps_db_file_default, NULL); /* Setting LCMAPS SIGPIPE handler - old SIGPIPE handler will be preserved */ lcmaps_set_sigpipe_handler(); #if USE_EVALUATIONMANAGER /* To be done: * Start evaluation manager (evaluates the LCMAPS policy database) */ lcmaps_log_debug(4,"lcmaps.mod-lcmaps_startPluginManager(): doing lcmaps_startEvaluationManager(%s)\n", lcmaps_db_file); if (lcmaps_startEvaluationManager(lcmaps_db_file, npol, &pol1 ) != 0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_startPluginManager(): lcmaps_startEvaluationManager(%s) failed\n", lcmaps_db_file); goto fail_lcmaps_startPluginManager; } #endif /* * retrieve PLUGIN MODULE info from evaluation manager and store * the info in a lcmaps_db structure */ lcmaps_log(LOG_DEBUG, "lcmaps.mod-lcmaps_startPluginManager(): Reading LCMAPS database %s\n", lcmaps_db_file); #if USE_EVALUATIONMANAGER if (lcmaps_getPluginNameAndArgs(&lcmaps_db_handle) != 0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_startPluginManager(): Error fetching list of plugins from evaluation manager\n"); goto fail_lcmaps_startPluginManager; } #else lcmaps_db_handle=lcmaps_db_read(lcmaps_db_file); #endif if (lcmaps_db_handle == NULL) { #if USE_EVALUATIONMANAGER lcmaps_log_debug(1,"lcmaps.mod-lcmaps_startPluginManager(): Evaluation manager found no plugins\n"); #else lcmaps_log_debug(1,"lcmaps.mod-lcmaps_startPluginManager(): no plugins found by lcmaps_db_read()\n"); #endif goto fail_lcmaps_startPluginManager; } /* * init the PLUGIN AUTHORIZATION MODULES (PluginInit) * - open plugins and check the symbols plugin_init and confirm_authorization * - run plugin_init */ ientry=0; #if USE_EVALUATIONMANAGER ihandle=lcmaps_db_handle; #else ihandle=*lcmaps_db_handle; #endif while (ihandle) { if (strlen(ihandle->pluginname) > 0) { lcmaps_log_debug(4,"lcmaps.mod-lcmaps_startPluginManager(): initializing plugin %s (db entry %d)\n", ihandle->pluginname, ientry); if ((plugin_entry=PluginInit(ihandle,&plugin_list)) == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_startPluginManager(): error initializing plugin: %s\n",ihandle->pluginname); goto fail_lcmaps_startPluginManager; } /* * Check if plugin is already registered by comparing the handles of * the plugins */ plugin_entry_cmp=plugin_list; while (plugin_entry_cmp) { if ( plugin_entry_cmp!=plugin_entry && plugin_entry_cmp->handle==plugin_entry->handle ) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_startPluginManager() error: trying to use plugin %s twice (registered before as %s)\n", plugin_entry->pluginshortname, plugin_entry_cmp->pluginshortname); goto fail_lcmaps_startPluginManager; } plugin_entry_cmp=plugin_entry_cmp->next; } } ientry++; ihandle=ihandle->next; } plugin_entry=plugin_list; while (plugin_entry) { #ifdef LCMAPS_DEBUG print_lcmaps_plugin(4,plugin_entry); #endif plugin_entry=plugin_entry->next; } /* clean PLUGIN authorization module database structure */ #if USE_EVALUATIONMANAGER /* * Do not clean lcmaps_db_entry_t structure since it is managed by the evaluation manager * and will be taken care of in lcmaps_stopEvaluationManager */ /* if (lcmaps_db_clean_list(&lcmaps_db_handle)) */ /* { */ /* lcmaps_log(1,"lcmaps.mod-lcmaps_startPluginManager() error: could not clean up plugin db structure\n"); */ /* goto fail_lcmaps_startPluginManager; */ /* } */ /* lcmaps_log_debug(5,"lcmaps.mod-lcmaps_startPluginManager(): cleaned lcmaps_db list: %p\n",lcmaps_db_handle); */ #else if (lcmaps_db_clean()) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_startPluginManager() error: could not clean up plugin db structure\n"); goto fail_lcmaps_startPluginManager; } lcmaps_log_debug(5,"lcmaps.mod-lcmaps_startPluginManager(): cleaned lcmaps_db list: %p\n",lcmaps_db_handle); #endif /* success */ if (lcmaps_db_file) free(lcmaps_db_file); return 0; fail_lcmaps_startPluginManager: /* failure */ #if USE_EVALUATIONMANAGER /* * Do not clean lcmaps_db_entry_t structure since it is managed by the evaluation manager * and will be taken care of in lcmaps_stopEvaluationManager */ /* lcmaps_db_clean_list(&lcmaps_db_handle); */ #else lcmaps_db_clean(); #endif /* Stop the evaluationmanager again, cleaning up e.g. lex/yacc memory */ lcmaps_stopPluginManager(); if (lcmaps_db_file) free(lcmaps_db_file); /* It is necessary to call lcmaps_free_resources() here in case LCMAPS * runs multiple times such as in gsisshd. Otherwise, on e.g. OpenSUSE, * memory corruption and/or improper close down of flex/yacc leads to a * segfaults. */ lcmaps_free_resources(); return 1; } /****************************************************************************** Function: PluginInit Description: Initialize the plugin - Create entry in (plugin)list - Open plugins and check the symbols plugin_init and confirm_authorization - run plugin_init Parameters: db_handle: handle to LCMAPS db (containing pluginname and pluginargs) list: pointer to list to which (plugin) module has to be added Returns: pointer to plugin structure NULL: could not initialize plugin ******************************************************************************/ /*! \fn PluginInit( lcmaps_db_entry_t * db_handle, lcmaps_plugindl_t ** list ) \brief Initialize the plugin. This function takes a plugin LCMAPS database entry and performs the following tasks: - Create entry in (plugin)list - Open the plugins and check the symbols plugin_init and confirm_authorization - run plugin_init \param db_handle handle to LCMAPS db (containing pluginname and pluginargs) \param list pointer to plugin structure list to which (plugin) module has to be added \return pointer to newly created plugin structure or NULL in case of failure \internal */ static lcmaps_plugindl_t * PluginInit( lcmaps_db_entry_t * db_handle, lcmaps_plugindl_t ** list ) { char * name; char * pname=NULL; char * args=NULL; void * plugin_handle; lcmaps_plugindl_t * pplugin=NULL; int i; int retval; plugin_initialize_t *plugin_initialize=NULL; plugin_introspect_t *plugin_introspect=NULL; plugin_run_t *plugin_run=NULL; plugin_verify_t *plugin_verify=NULL; plugin_terminate_t *plugin_terminate=NULL; name = db_handle->pluginname; args = db_handle->pluginargs; /* Find plugin module */ pname = lcmaps_findplugin(name); if (pname == NULL) { lcmaps_log(LOG_ERR, "lcmaps.mod-PluginInit(): plugin %s not found (arguments: %s)\n", name, args ); goto fail_PluginInit; } /* Try a dlopen() */ plugin_handle=dlopen(pname,RTLD_NOW); if (!plugin_handle) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): dlopen error for %s:\n %s\n", pname,dlerror() ); goto fail_PluginInit; } /* Check symbols */ plugin_initialize=(plugin_initialize_t*)get_procsymbol(plugin_handle,"plugin_initialize"); if (plugin_initialize == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): plugin %s not compliant. Missing function \"plugin_initialize()\"\n", name); goto fail_PluginInit; } else { lcmaps_log_debug(3,"lcmaps.mod-PluginInit(): found \"plugin_initialize()\"\n"); } plugin_run=(plugin_run_t*)get_procsymbol(plugin_handle,"plugin_run"); if (plugin_run == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): plugin %s not compliant. Missing function \"plugin_run()\"\n", name); goto fail_PluginInit; } else { lcmaps_log_debug(3,"lcmaps.mod-PluginInit(): found \"plugin_run()\"\n"); } plugin_terminate=(plugin_terminate_t*)get_procsymbol(plugin_handle,"plugin_terminate"); if (plugin_terminate == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): plugin %s not compliant. Missing function \"plugin_terminate()\"\n", name); goto fail_PluginInit; } else { lcmaps_log_debug(3,"lcmaps.mod-PluginInit(): found \"plugin_terminate()\"\n"); } plugin_introspect=(plugin_introspect_t*)get_procsymbol(plugin_handle,"plugin_introspect"); if (plugin_introspect == NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): plugin %s not compliant. Missing function \"plugin_introspect()\"\n", name); goto fail_PluginInit; } else { lcmaps_log_debug(3,"lcmaps.mod-PluginInit(): found \"plugin_introspect()\"\n"); } plugin_verify=(plugin_verify_t*)get_procsymbol(plugin_handle,"plugin_verify"); if (plugin_verify == NULL) { lcmaps_log(LOG_INFO,"lcmaps.mod-PluginInit(): no \"plugin_verify()\" method found in %s: old style plugin\n", name); } else { lcmaps_log_debug(3,"lcmaps.mod-PluginInit(): found \"plugin_verify()\"\n"); } /* Make a new entry at end of plugin list */ if (!*list) { lcmaps_log_debug(4,"lcmaps.mod-PluginInit(): creating first pluginlist entry\n"); *list=pplugin=(lcmaps_plugindl_t *)malloc(sizeof(lcmaps_plugindl_t)); } else { lcmaps_log_debug(4,"lcmaps.mod-PluginInit(): creating new pluginlist entry\n"); pplugin=*list; while (pplugin->next) pplugin=pplugin->next; pplugin=pplugin->next=(lcmaps_plugindl_t *)malloc(sizeof(lcmaps_plugindl_t)); } if (!pplugin) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): error creating new pluginlist entry\n"); goto fail_PluginInit; } /* Set plugin list elements */ pplugin->next=NULL; pplugin->handle=plugin_handle; pplugin->run_argc=0; pplugin->run_argv=NULL; pplugin->plugin_initialize = plugin_initialize; pplugin->plugin_introspect = plugin_introspect; pplugin->plugin_run = plugin_run; pplugin->plugin_verify = plugin_verify; pplugin->plugin_terminate = plugin_terminate; if (pname != NULL) { /* name without dir */ strncpy(pplugin->pluginshortname,name,LCMAPS_MAXPATHLEN); (pplugin->pluginshortname)[LCMAPS_MAXPATHLEN]=NUL; /* name with dir */ strncpy(pplugin->pluginabsname,pname,LCMAPS_MAXPATHLEN); (pplugin->pluginabsname)[LCMAPS_MAXPATHLEN]=NUL; } else { strncpy(pplugin->pluginshortname,"",LCMAPS_MAXPATHLEN); strncpy(pplugin->pluginabsname,"",LCMAPS_MAXPATHLEN); } if (args != NULL) { strncpy(pplugin->pluginargs,args,LCMAPS_MAXARGSTRING); (pplugin->pluginargs)[LCMAPS_MAXARGSTRING]=NUL; } else strncpy(pplugin->pluginargs,"",LCMAPS_MAXARGSTRING); /* Parse options */ if (parse_args_plugin(pname,args,pplugin->init_argv,&(pplugin->init_argc)) ) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): Could not parse arguments for plugin module %s\n", pname); goto fail_PluginInit; } for (i=0; i < pplugin->init_argc; ++i) lcmaps_log_debug(4,"%s arg %d = %s\n",pname,i,(pplugin->init_argv)[i]); /* Run plugin_initialize() */ retval=(*(pplugin->plugin_initialize))(pplugin->init_argc,pplugin->init_argv); if (retval != LCMAPS_MOD_SUCCESS ) { lcmaps_log_debug(1,"lcmaps.mod-PluginInit(): \"plugin_initialize()\" failed\n"); goto fail_PluginInit; } else { lcmaps_log_debug(4,"lcmaps.mod-PluginInit(): \"plugin_initialize()\" succeeded\n"); } /* Run plugin_introspect() */ retval=(*(pplugin->plugin_introspect))(&(pplugin->run_argc),&(pplugin->run_argv)); if (retval != LCMAPS_MOD_SUCCESS ) { lcmaps_log(LOG_ERR,"lcmaps.mod-PluginInit(): \"plugin_introspect()\" failed\n"); goto fail_PluginInit; } else { lcmaps_log_debug(4,"lcmaps.mod-PluginInit(): \"plugin_introspect()\" succeeded\n"); } /* free stuff */ if (pname) { free(pname); pname=NULL; } return pplugin; fail_PluginInit: if (pname) { free(pname); pname=NULL; } return NULL; } /****************************************************************************** Function: parse_args_plugin() Description: Parse the argument string of the plugin and create xargv and xargc Parameters: name: name of the plugin (goes into argv[0]) argstring: string containing the arguments xargv: array of argument strings (has to be freed later) xargc: number of arguments Returns: 0 on succes 1 on failure ******************************************************************************/ /*! \fn parse_args_plugin( const char * name, const char * argstring, char ** xargv, int * xargc ) \brief convert plugin argument string into xargc, xargv Parse the argument string of the plugin and create xargv and xargc \param name name of the plugin (goes into xargv[0]) \param argstring string containing the arguments \param xargv array of argument strings (has to be freed later) \param xargc number of arguments \retval 0 succes. \retval 1 failure. \internal */ static int parse_args_plugin( const char * name, const char * argstring, char ** xargv, int * xargc ) { size_t len=0; int i; int rc; /* Protect against empty name */ if (name==NULL) return 1; /* set modulename */ len=strlen(name); if ( (len > 0) && (len < LCMAPS_MAXPATHLEN) ) { xargv[0]=(char *)malloc(len+1); if (xargv[0] != NULL) strncpy(xargv[0],name,len+1); else return 1; } *xargc=LCMAPS_MAXARGS-1; if ( ( rc = lcmaps_tokenize(argstring, &xargv[1], xargc, " \t\n") ) ) { lcmaps_log(LOG_ERR,"lcmaps.mod-parse_args_plugin(): something wrong parsing arguments of %s, rc=%d\n", name, rc); (*xargc)++; return 1; } (*xargc)++; /* increase by one for xargv[0] */ lcmaps_log_debug(4,"lcmaps.mod-parse_args_plugin(): Found %d arguments:\n", *xargc); for (i=0; i < *xargc; i++) lcmaps_log_debug(4,"lcmaps.mod-parse_args_plugin(): %d --> %s\n", i, xargv[i]); return 0; } /****************************************************************************** Function: get_procsymbol Description: get procedure symbol from dlopen-ed library Parameters: handle: handle of dynamic library symname: name of procedure symbol Returns: handle to procedure symbol NULL: Could not get symbol ******************************************************************************/ /*! \fn get_procsymbol( void * handle, char * symname ) \brief get procedure symbol from dlopen-ed library \param handle handle of dynamic library \param symname name of procedure symbol \return handle to procedure symbol or NUll \internal */ static void *get_procsymbol( void * handle, const char * symname ) { void *symhandle=NULL; char *error; dlerror(); symhandle=dlsym(handle,symname); if ((error = dlerror()) != NULL) { lcmaps_log(LOG_ERR,"lcmaps.mod-get_procsymbol(): dlsym error: %s\n",error); return NULL; } return symhandle; } #ifdef LCMAPS_DEBUG /****************************************************************************** Function: print_lcmaps_plugin Description: print the lcmaps_plugindl_t structure Parameters: debug_lvl: debugging level plugin: plugin structure Returns: 1: succes 0: failure ******************************************************************************/ /*! \fn print_lcmaps_plugin( int debug_lvl, lcmaps_plugindl_t * plugin ) \brief print the lcmaps_plugindl_t structure \param debug_lvl debugging level \param plugin plugin structure \retval 0 succes. \retval 1 failure. \internal */ static int print_lcmaps_plugin( int debug_lvl, lcmaps_plugindl_t * plugin ) { char ** pstring = NULL; const char * argType = NULL; int * pint = NULL; int i = 0; void * value = NULL; lcmaps_log_debug(debug_lvl,"plugin name : %s\n",plugin->pluginabsname); lcmaps_log_debug(debug_lvl,"plugin arguments : %s\n",plugin->pluginargs); lcmaps_log_debug(debug_lvl,"plugin address : 0x%x\n",plugin); lcmaps_log_debug(debug_lvl,"plugin size : %d\n",sizeof(lcmaps_plugindl_t)); lcmaps_log_debug(debug_lvl,"plugin handle : 0x%x\n",plugin->handle); lcmaps_log_debug(debug_lvl,"plugin_initialize() : 0x%x\n",plugin->plugin_initialize); lcmaps_log_debug(debug_lvl,"plugin_run() : 0x%x\n",plugin->plugin_run); lcmaps_log_debug(debug_lvl,"plugin_verify() : 0x%x\n",plugin->plugin_verify); lcmaps_log_debug(debug_lvl,"plugin_terminate() : 0x%x\n",plugin->plugin_terminate); lcmaps_log_debug(debug_lvl,"plugin_introspect() : 0x%x\n",plugin->plugin_introspect); lcmaps_log_debug(debug_lvl,"plugin init_argc : %d\n",plugin->init_argc); for (i=0; i < plugin->init_argc; i++) lcmaps_log_debug(debug_lvl,"plugin init_argv[%2d] : %s\n",i,(plugin->init_argv)[i]); lcmaps_log_debug(debug_lvl,"plugin run_argc : %d\n",plugin->run_argc); for (i=0; i < plugin->run_argc; i++) { argType=((plugin->run_argv)[i]).argType; lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d] : 0x%x\n",i,(plugin->run_argv)+i); lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], argName : %s\n",i,((plugin->run_argv)[i]).argName); lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], argType : %s\n",i,((plugin->run_argv)[i]).argType); lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], argInOut : %d\n",i,((plugin->run_argv)[i]).argInOut); lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], value address : 0x%x\n",i,((plugin->run_argv)[i]).value); if (strcmp("char *",argType) == 0) { if ( ((plugin->run_argv)[i]).value != NULL) { /* pstring = (char **) (((plugin->run_argv)[i]).value); */ value = lcmaps_getArgValue( ((plugin->run_argv)[i]).argName, ((plugin->run_argv)[i]).argType, plugin->run_argc, plugin->run_argv ); if (value) { pstring = (char **) value; lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], char * value : %s\n",i,*pstring); } else lcmaps_log_debug(debug_lvl,"lcmaps_getArgValue() for plugin run_argv[%2d] returned NULL\n",i); } else { lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], char * value : none yet\n",i); } } if (strcmp("int",argType) == 0) { if ( ((plugin->run_argv)[i]).value != NULL) { /* pint = (int *) (((plugin->run_argv)[i]).value); */ pint = (int *) lcmaps_getArgValue( ((plugin->run_argv)[i]).argName, ((plugin->run_argv)[i]).argType, plugin->run_argc, plugin->run_argv ); if (value) { pint = (int *) value; lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], int value : %d\n",i,*pint); } else lcmaps_log_debug(debug_lvl,"lcmaps_getArgValue() for plugin run_argv[%2d] returned NULL\n",i); } else { lcmaps_log_debug(debug_lvl,"plugin run_argv[%2d], int value : none yet\n",i); } } } lcmaps_log_debug(debug_lvl,"plugin next : 0x%x\n",plugin->next); if (plugin->next != NULL) lcmaps_log_debug(debug_lvl,"plugin_next : %s\n",(plugin->next)->pluginabsname); else lcmaps_log_debug(debug_lvl,"plugin_next : last plugin in list\n"); return 1; } #endif /****************************************************************************** Function: clean_plugin_list Description: clean (free) the list of plugins and call the plugin termination functions Parameters: list: pointer to list of plugins which has to be freeed. Returns: 1: succes 0: failure ******************************************************************************/ /*! \fn clean_plugin_list( lcmaps_plugindl_t ** list ) \brief clean (free) the list of plugins and call the plugin termination functions \param list pointer to list of plugins which has to be freeed. \retval 0 succes. \retval 1 failure. \internal */ static int clean_plugin_list( lcmaps_plugindl_t ** list ) { int rc; lcmaps_plugindl_t * plugin_entry=NULL; plugin_entry=*list; while (plugin_entry) { lcmaps_plugindl_t * plugin_next; int i; rc = (*(plugin_entry->plugin_terminate))(); if (rc != LCMAPS_MOD_SUCCESS) { lcmaps_log(LOG_WARNING,"lcmaps.mod-clean_plugin_list(): failed to terminate plugin module %s\n", plugin_entry->pluginabsname); } lcmaps_log_debug(4, "lcmaps.mod-clean_plugin_list(): plugin module %s terminated\n", plugin_entry->pluginabsname); dlclose(plugin_entry->handle); plugin_next=plugin_entry->next; for (i=0; i < plugin_entry->init_argc; i++) { if ((plugin_entry->init_argv)[i] != NULL) { #ifdef LCMAPS_DEBUG lcmaps_log_debug(5,"Freeing %d - %s\n",i,(plugin_entry->init_argv)[i]); #endif free((plugin_entry->init_argv)[i]); } } free(plugin_entry); plugin_entry=plugin_next; } *list=plugin_entry=NULL; return 0; } /****************************************************************************** Function: lcmaps_runPluginManager Description: Run PluginManager: Contact Evaluation Manager with list of possible policies --> runs plugins The plugin manager can be run in verification mode or normal mode, depending on "verification switch". Parameters: request : RSL request lcmaps_cred : user credential npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation mode : Mode of running lcmaps: LCMAPS_NORMAL_MODE or LCMAPS_VERIFICATION_MODE Returns: 0: user mapping or mapping verification succeeded 1: user mapping or mapping verification failed ******************************************************************************/ /*! \fn lcmaps_runPluginManager( lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred, int npols, char ** policynames, unsigned int mode ) \brief Run the PluginManager This function runs the PluginManager for user mapping. Contact Evaluation Manager --> runs plugins \param request RSL request (job request) \param lcmaps_cred user credential \param npols number of policies to be considered for evaluation \param policynames the names of the policies to be considered for evaluation \param mode Mode of running lcmaps: LCMAPS_NORMAL_MODE or LCMAPS_VERIFICATION_MODE \retval 0 user mapping or mapping verification succeeded \retval 1 user mapping or mapping verification failed */ int lcmaps_runPluginManager( lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred, char *requested_username, int npols, char ** policynames, unsigned int mode ) { lcmaps_plugindl_t * plugin_entry=NULL; /* Set lcmaps mode */ lcmaps_mode = mode; if (lcmaps_mode == LCMAPS_NORMAL_MODE) { lcmaps_log_debug(4,"lcmaps.mod-lcmaps_runPluginManager(): Running in normal mode\n"); } else if (lcmaps_mode == LCMAPS_VERIFICATION_MODE) { lcmaps_log_debug(4,"lcmaps.mod-lcmaps_runPluginManager(): Running in verification mode\n"); } else { lcmaps_log(LOG_ERR, "lcmaps.mod-lcmaps_runPluginManager(): Attempt to run in illegal mode: %d (failure)\n", lcmaps_mode); return 1; } lcmaps_log_debug(5,"lcmaps.mod-lcmaps_runPluginManager(): extract RunVars\n"); if (lcmaps_extractRunVars(request, lcmaps_cred, requested_username) != 0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_runPluginManager(): error in creating list of run variables\n"); return 1; } plugin_entry=plugin_list; while (plugin_entry) { void * pvalue=NULL; const char * argName=NULL; const char * argType=NULL; int iarg=0; /* * Now that we know that we're running in verification mode or not, * check for the plugin_verify() method */ if ((lcmaps_mode == LCMAPS_VERIFICATION_MODE) && (plugin_entry->plugin_verify == NULL)) { lcmaps_log(LOG_ERR, "lcmaps.mod-lcmaps_runPluginManager(): Cannot find required \"plugin_verify()\" method in plugin \"%s\" (failure)\n", plugin_entry->pluginabsname); return 1; } for (iarg=0; iarg < plugin_entry->run_argc; iarg++) { argName=(plugin_entry->run_argv+iarg)->argName; argType=(plugin_entry->run_argv+iarg)->argType; #ifdef LCMAPS_DEBUG lcmaps_log_debug(5, "lcmaps.mod-lcmaps_runPluginManager(): Getting value of \"%s\" of type \"%s\" for plugin \"%s\"\n", argName, argType, plugin_entry->pluginabsname); #endif if ((pvalue=lcmaps_getRunVars(argName, argType)) == NULL) { lcmaps_log(LOG_ERR, "lcmaps.mod-lcmaps_runPluginManager(): could not GET requested variable \"%s\" of type \"%s\" for plugin \"%s\"\n", argName, argType, plugin_entry->pluginabsname); return 1; } #ifdef LCMAPS_DEBUG lcmaps_log_debug(5, "lcmaps.mod-lcmaps_runPluginManager(): Setting value of \"%s\" of type \"%s\" for plugin \"%s\", address: 0x%x\n", argName, argType, plugin_entry->pluginabsname, pvalue); #endif if (lcmaps_setArgValue(argName, argType, pvalue, plugin_entry->run_argc, &(plugin_entry->run_argv)) != 0) { lcmaps_log(LOG_ERR, "lcmaps.mod-lcmaps_runPluginManager(): could not SET requested variable \"%s\" of type \"%s\" for plugin \"%s\"\n", argName, argType, plugin_entry->pluginabsname); return 1; } } plugin_entry=plugin_entry->next; } #if USE_EVALUATIONMANAGER if (npols > 0) { int ipol = 0; lcmaps_log_debug(4,"lcmaps.mod-lcmaps_runPluginManager(): Do lcmaps_runEvaluationManager with the following policies:\n"); for (ipol = 0; ipol < npols; ipol ++) lcmaps_log_debug(1,"lcmaps.mod-lcmaps_runPluginManager(): %s\n", policynames[ipol]); } else lcmaps_log_debug(4,"lcmaps.mod-lcmaps_runPluginManager(): Do lcmaps_runEvaluationManager()\n"); if (lcmaps_runEvaluationManager(npols, policynames) != 0) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_runPluginManager(): Error running evaluation manager\n"); /* Print Post Run LCMAPS credentials */ lcmaps_printCredData(1); /* Failure */ return 1; } lcmaps_log_debug(3,"lcmaps.mod-lcmaps_runPluginManager(): lcmaps_runEvaluationManager() succeeded.\n"); #else /* The following will be taken over by the evaluation manager * It will call lcmaps_runPluginManager() directly and evaluate its return values */ plugin_entry=plugin_list; while (plugin_entry) { #ifdef LCMAPS_DEBUG print_lcmaps_plugin(4,plugin_entry); #endif lcmaps_log_debug(3,"lcmaps.mod-lcmaps_runPluginManager(): running %s\n",plugin_entry->pluginabsname); /* if (lcmaps_runPlugin(plugin_entry->pluginabsname)) {*/ if (lcmaps_runPlugin(plugin_entry->pluginshortname)) { lcmaps_log_debug(3,"lcmaps.mod-lcmaps_runPluginManager(): plugin %s failed\n",plugin_entry->pluginabsname); } plugin_entry=plugin_entry->next; } #endif /* Print Post Run LCMAPS credentials */ lcmaps_printCredData(1); /* Success */ return 0; } /****************************************************************************** Function: lcmaps_resetCredentialData Description: Reset the Credential data. Wrapper around lcmaps_cleanCredentialData() to be used by the Evaluation Manager, before a new policy is evaluated Parameters: none Returns: the return value of lcmaps_cleanCredentialData() ******************************************************************************/ /*! \fn lcmaps_resetCredentialData() \brief Reset the Credential data Wrapper around lcmaps_cleanCredentialData() to be used by the Evaluation Manager, before a new policy is evaluated \return the return value of lcmaps_cleanCredentialData() */ int lcmaps_resetCredentialData() { lcmaps_log_debug(3,"lcmaps.mod-lcmaps_resetCredentialData(): Called\n"); return lcmaps_cleanCredentialData(); } /****************************************************************************** Function: runPlugin Description: Run a plugin for the Evaluation Manager the result (succes or not will be passed to the Evaluation Manager) Parameters: pluginname: the name of the plugin module Returns: 0: plugin run succeeded 1: plugin run failed ******************************************************************************/ /*! \fn lcmaps_runPlugin( const char * pluginname ) \brief Run a plugin Run a plugin for the Evaluation Manager the result (succes or not will be passed to the Evaluation Manager) \param pluginname the name of the plugin module \retval 0 plugin run succeeded \retval 1 plugin run failed */ int lcmaps_runPlugin( const char * pluginname ) { lcmaps_plugindl_t * plugin_entry=NULL; int rc=1; int foundplugin=0; plugin_entry=plugin_list; while (plugin_entry) { #ifdef LCMAPS_DEBUG lcmaps_log_debug(5,"lcmaps.mod-lcmaps_runPlugin(): looking for plugin %s\n",pluginname); #endif /* Look for shortname since that's how they're in the policy! */ if (strcmp(plugin_entry->pluginshortname,pluginname) == 0) { lcmaps_log_debug (5,"lcmaps.mod-lcmaps_runPlugin(): found plugin %s\n",plugin_entry->pluginabsname); foundplugin++; break; } plugin_entry=plugin_entry->next; } if (!foundplugin) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_runPlugin(): could not find plugin %s\n",pluginname); return 1; } /* Actually run the plugin */ lcmaps_log_debug(3, "lcmaps.mod-lcmaps_runPlugin(): running plugin %s\n",plugin_entry->pluginabsname); if (lcmaps_mode == LCMAPS_VERIFICATION_MODE) { rc = (*(plugin_entry->plugin_verify))(plugin_entry->run_argc, plugin_entry->run_argv); } else /* LCMAPS_NORMAL_MODE */ { rc = (*(plugin_entry->plugin_run))(plugin_entry->run_argc, plugin_entry->run_argv); } return rc; } /****************************************************************************** Function: lcmaps_stopPluginManager Description: Terminate PluginManager module. Parameters: Returns: 0: termination succeeded 1: termination failed ******************************************************************************/ /*! \fn lcmaps_stopPluginManager( ) \brief Terminate the PluginManager module. stop the PluginManager --> terminate plugins, clean plugin list, (stop evaluation manager) \retval 0 succes \retval 1 failure */ int lcmaps_stopPluginManager( ) { lcmaps_log_debug(3,"lcmaps.mod-lcmaps_stopPluginManager(): cleaning credential data\n"); /* If I don't do lcmaps_term(), this will never be triggered */ /* lcmaps_printCredData(1); */ if (lcmaps_cleanCredentialData()!=0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_stopPluginManager() error: could not clean credential data list\n"); /* Resetting the LCMAPS SIGPIPE handler - old SIGPIPE handler will be preserved */ lcmaps_reset_sigpipe_handler(); return 1; } if (clean_plugin_list(&plugin_list)!=0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_stopPluginManager() error: could not clean up plugin list\n"); /* Resetting the LCMAPS SIGPIPE handler - old SIGPIPE handler will be preserved */ lcmaps_reset_sigpipe_handler(); return 1; } #if USE_EVALUATIONMANAGER if (lcmaps_stopEvaluationManager() != 0) { lcmaps_log(LOG_ERR,"lcmaps.mod-lcmaps_stopPluginManager(): error in lcmaps_stopEvaluationManager()\n"); /* Resetting the LCMAPS SIGPIPE handler - old SIGPIPE handler will be preserved */ lcmaps_reset_sigpipe_handler(); return 1; } #endif /* Resetting the LCMAPS SIGPIPE handler - old SIGPIPE handler will be preserved */ lcmaps_reset_sigpipe_handler(); return 0; } /****************************************************************************** Function: lcmaps_set_sigpipe_handler Description: Sets a new SIGPIPE signal handler, the old signal handler will be kept and nicely reset to the previous setting. Parameters: Returns: 0: termination succeeded 1: termination failed ******************************************************************************/ /*! \fn lcmaps_set_sigpipe_handler( ) \brief Sets a new SIGPIPE handler for LCMAPS. Sets a new SIGPIPE signal handler, the old signal handler will be kept and nicely reset to the previous setting. \retval 0 succes \retval 1 failure */ int lcmaps_set_sigpipe_handler() { /* Setting the SIGPIPE handler to the LCMAPS SIGPIPE handler */ lcmaps_stored_sigpipe_handler = signal(SIGPIPE, lcmaps_sigpipe_handler); return 0; } /****************************************************************************** Function: lcmaps_reset_sigpipe_handler Description: Resets the old SIGPIPE signal handler (if there was any). Parameters: Returns: 0: termination succeeded 1: termination failed ******************************************************************************/ /*! \fn lcmaps_reset_sigpipe_handler( ) \brief Resets the previous SIGPIPE handler for LCMAPS. Resets the old SIGPIPE signal handler (if there was any). \retval 0 succes \retval 1 failure */ int lcmaps_reset_sigpipe_handler() { /* Resetting the SIGPIPE handler to the previous handler */ signal(SIGPIPE, lcmaps_stored_sigpipe_handler); return 0; } /****************************************************************************** Function: lcmaps_sigpipe_handler Description: The SIGPIPE handler. Will log to the lcmaps log facility about the SIGPIPE, when caught. Parameters: int sig : The caught signal, see signal.h for details. Returns: void ******************************************************************************/ /*! \fn lcmaps_reset_sigpipe_handler( ) \brief The SIGPIPE handler. */ void lcmaps_sigpipe_handler(int sig) { if (sig == SIGPIPE) { lcmaps_log(LOG_NOTICE, "Caught signal SIGPIPE\n"); } } lcmaps-1.6.6/src/pluginmanager/_lcmaps_log.h0000644001726200004540000000751712471136644016023 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_log.h \brief Internal header file for LCMAPS logging routines. \author Martijn Steenbakkers for the EU DataGrid. \internal */ #ifndef _LCMAPS_LOG_H #define _LCMAPS_LOG_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_log.h" /****************************************************************************** Define constants ******************************************************************************/ #define MAX_LOG_BUFFER_SIZE ((size_t)2048) /*!< Maximum logging buffer size, length of log may not exceed this number \internal */ #define DO_USRLOG ((unsigned short)0x0001) /*!< flag to indicate that user logging has to be done \internal */ #define DO_SYSLOG ((unsigned short)0x0002) /*!< flag to indicate that syslogging has to be done \internal */ /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_log_open() Description: Start logging Parameters: path: path of logfile fp: file pointer to already opened file (or NULL) logtype: DO_USRLOG, DO_SYSLOG Returns: 0 succes 1 failure ******************************************************************************/ extern int lcmaps_log_open( char * path, FILE * fp, unsigned short logtype ); /****************************************************************************** Function: lcmaps_log_close() Description: Stop logging Parameters: Returns: 0 succes 1 failure ******************************************************************************/ extern int lcmaps_log_close(void); #endif /* _LCMAPS_LOG_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/_lcmaps_log.h,v $ $Date: 2013-12-08 16:15:30 +0100 (Sun, 08 Dec 2013) $ $Revision: 17212 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/lcmaps_arguments.c0000644001726200004540000002123712471136644017076 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_arguments.c \author Oscar Koeroo and Martijn Steenbakkers for the EU DataGrid. \brief LCMAPS module for creating and passing introspect/run argument lists The interface is composed of: -# lcmaps_setArgValue(): Set the value of argument with name argName of argType to value -# lcmaps_getArgValue(): Get the value of argument with name argName of argType -# lcmaps_findArgName(): Get index of argument with name argName -# lcmaps_cntArgs(): Count the number of arguments */ /***************************************************************************** Include header files ******************************************************************************/ /* Needed for NULL */ #include #include /* LCMAPS includes */ #include "lcmaps_arguments.h" /****************************************************************************** Function: lcmaps_setArgValue Description: Fill the "value" field of the argument with name "argName" and type "argType" with value. The argument list is searched for the combination (argName,argType). Parameters: argName: name of argument argType: type of argument argcx: number of arguments argvx: array of arguments structures Returns: 0: success -1: failure (could not find structure with name argName) ******************************************************************************/ /*! \fn lcmaps_setArgValue( const char *argName, const char *argType, void *value, int argcx, lcmaps_argument_t **argvx ) \brief Set the value of argument with name argName of argType to value Fill the "value" field of the argument with name "argName" and type "argType" with value. The argument list is searched for the combination (argName,argType). \param argName name of argument \param argType type of argument \param value a pointer to the value to which the argument should be set \param argcx number of arguments \param argvx array of arguments structures \return 0 in case of succes */ int lcmaps_setArgValue( const char *argName, const char *argType, void *value, int argcx, lcmaps_argument_t **argvx ) { int argNo = -1; /* find the argument name in the introSpect arguments list */ if ((argNo = lcmaps_findArgNameAndType(argName, argType, argcx, *argvx)) == -1) return -1; ((*argvx)[argNo]).value = value; return 0; } /****************************************************************************** Function: lcmaps_getArgValue Description: Gets the value of argType from values. The place within the lcmaps_argument_t values is determined by the argName listed in lcmaps_argument_t *argvx. Returns a void pointer to the value. Parameters: argName: name of argument argType: type of argument argcx: number of arguments argvx: array of arguments structures Returns: void pointer to the value or NULL ******************************************************************************/ /*! \fn lcmaps_getArgValue( const char *argName, const char *argType, int argcx, lcmaps_argument_t *argvx ) \brief Get the value of argument with name argName of argType Set the value of argType on the reserved place in values. The place within values is determined by the place where argName is found in the arguments list Returns a void pointer to the value. \param argName name of argument \param argType type of argument \param argcx number of arguments \param argvx array of arguments structures \return void pointer to the value or NULL */ void *lcmaps_getArgValue( const char *argName, const char *argType, int argcx, lcmaps_argument_t *argvx ) { int argNo = -1; /* find the argument name in the introSpect arguments list */ if ((argNo = lcmaps_findArgNameAndType(argName, argType, argcx, argvx)) == -1) return NULL; return (argvx[argNo].value); } /****************************************************************************** Function: lcmaps_findArgName Description: Search for argName in the arguments list. Returns the index to lcmaps_argument_t element. Parameters: argName: name of argument argcx: number of arguments argvx: array of arguments structures Returns: index to lcmaps_argument_t element ******************************************************************************/ /*! \fn lcmaps_findArgName( const char *argName, int argcx, lcmaps_argument_t *argvx ) \brief Get index of argument with name argName Search for argName in the arguments list. Returns the index to lcmaps_argument_t element. \param argName name of argument \param argcx number of arguments \param argvx array of arguments structures \return index to lcmaps_argument_t element */ int lcmaps_findArgName( const char *argName, int argcx, lcmaps_argument_t *argvx ) { int i = 0; for (i = 0; i < argcx; i++) { if (strcmp(argName, argvx[i].argName) == 0) return i; } return -1; } /****************************************************************************** Function: lcmaps_findArgNameAndType Description: Search for argName and Type in the arguments list. Returns the index to lcmaps_argument_t element. Parameters: argName: name of argument argType: type of argument argcx: number of arguments argvx: array of arguments structures Returns: index to lcmaps_argument_t element ******************************************************************************/ /*! \fn lcmaps_findArgNameAndType( const char *argName, const char *argType, int argcx, lcmaps_argument_t *argvx ) \brief Get index of argument with name argName Search for argName in the arguments list. Returns the index to lcmaps_argument_t element. \param argName name of argument \param argType type of argument \param argcx number of arguments \param argvx array of arguments structures \return index to lcmaps_argument_t element */ int lcmaps_findArgNameAndType( const char *argName, const char *argType, int argcx, lcmaps_argument_t *argvx ) { int i = 0; for (i = 0; i < argcx; i++) { if ((strcmp(argName, argvx[i].argName) == 0) && (strcmp(argType, argvx[i].argType) == 0)) return i; } return -1; } /****************************************************************************** Function: lcmaps_cntArgs Description: Count the number of arguments that are defined in a plug-in Returns this number. Parameters: argvx: array of arguments structures Returns: the number of arguments ******************************************************************************/ /*! \fn lcmaps_cntArgs( lcmaps_argument_t *argvx ) \brief Count the number of arguments Count the number of arguments that are defined in a plug-in Returns this number. \param argvx array of arguments structures \return the number of arguments */ int lcmaps_cntArgs(lcmaps_argument_t *argvx) { int i = 0; while (argvx[i].argName != NULL) { i++; } return i; } lcmaps-1.6.6/src/pluginmanager/lcmaps_cred_data.c0000644001726200004540000004403112471136644016774 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_cred_data.c \brief Routines to handle lcmaps credential data \author Oscar Koeroo and Martijn Steenbakkers for the EU DataGrid. */ #define _XOPEN_SOURCE 500 /***************************************************************************** Include header files ******************************************************************************/ #include #include #include #include #include #include "_lcmaps_cred_data.h" #include "lcmaps_log.h" #include "lcmaps_vo_data.h" /****************************************************************************** Module specific prototypes ******************************************************************************/ static int lcmaps_compare_gids(const void *, const void *); /****************************************************************************** Define module specific variables ******************************************************************************/ static cred_data_t credData = { (char *) NULL, /*!< user globus DN */ (uid_t *) NULL, /*!< list of userIDs */ (gid_t *) NULL, /*!< list of primary groupIDs */ (gid_t *) NULL, /*!< list of secondary groupIDs */ (lcmaps_vo_data_t *) NULL, /*!< list of VO data structures */ (char **) NULL, /*!< list of VO data strings */ (lcmaps_vo_mapping_t *) NULL, /*!< list of VO mapping structures */ 0, /*!< number of userIDs */ 0, /*!< number of primary groupIDs (in principle only one) */ 0, /*!< number of secondary groupIDs (could be any number) */ 0, /*!< number of VO data structures */ 0, /*!< number of VO data strings */ 0, /*!< number of VO mapping structures */ (char *) NULL, /*!< pool_index is the concat of a DN+GIDs for the DAS */ }; /****************************************************************************** Function: addCredentialData Description: Add a credential to the list of found credentials (uids, gids etc) Parameters: datatype: type of credential data: pointer to credential Returns: 0: success -1: failure (unknown data type, realloc error) ******************************************************************************/ /*! \fn addCredentialData( int datatype, void *data ) \brief Add a credential to the list of found credentials (uids, gids etc) The credential value is copied into list (memory is allocated for this) \param datatype type of credential \param data pointer to credential \return 0 in case of succes */ int addCredentialData( int datatype, void *data ) { switch(datatype) { case DN : if (data) { if ( (credData.dn = strdup(*(char **)data))==NULL) return -1; } break; case UID : if (data) { if ( (credData.cntUid+1) <= 0) return -1; if ( (credData.uid = (uid_t *) realloc(credData.uid, ((size_t)(credData.cntUid+1) * sizeof(uid_t)))) == NULL) return -1; credData.uid[credData.cntUid] = *((uid_t *)data); credData.cntUid++; } break; case PRI_GID : if (data) { credData.cntPriGid++; if ( credData.cntPriGid <= 0 ) return -1; if ( (credData.priGid = (gid_t *) realloc(credData.priGid, ((size_t)(credData.cntPriGid) * sizeof(gid_t)))) == NULL) return -1; credData.priGid[credData.cntPriGid - 1] = *((gid_t *)data); } break; case SEC_GID : if (data) { int foundgid; int igid = 0; gid_t newgid; newgid = *((gid_t *)data); /* Check if gid is already stored in the list */ foundgid = 0; for (igid = 0; igid < credData.cntSecGid; igid++) { if (newgid == credData.secGid[igid]) { foundgid = 1; break; } } if (foundgid) break; /* New gid so increase cntSecGid by 1, reallocate the array and sort it */ credData.cntSecGid++; if ( credData.cntSecGid <=0 ) return -1; if ( (credData.secGid = (gid_t *) realloc(credData.secGid, ((size_t)(credData.cntSecGid) * sizeof(gid_t)))) == NULL) return -1; credData.secGid[credData.cntSecGid - 1] = newgid; /* sort the secondaries with qsort */ if (credData.cntSecGid > 1) { qsort( credData.secGid, (size_t)credData.cntSecGid, sizeof(gid_t), (int (*)(const void *,const void *))lcmaps_compare_gids ); } } break; case LCMAPS_VO_CRED : if (data) { if ( (credData.cntVoCred+1) <= 0 ) return -1; if ( (credData.VoCred = (lcmaps_vo_data_t *) realloc(credData.VoCred, ((size_t)(credData.cntVoCred+1) * sizeof(lcmaps_vo_data_t)))) == NULL) return -1; lcmaps_copyVoData(&(credData.VoCred[credData.cntVoCred]), (lcmaps_vo_data_t *) data); credData.cntVoCred++; } break; case LCMAPS_VO_CRED_STRING : if (data) { if ( (credData.cntVoCredString+1) <= 0 ) return -1; if ( (credData.VoCredString = (char **) realloc(credData.VoCredString, ((size_t)(credData.cntVoCredString+1) * sizeof(char *)))) == NULL) return -1; if ( (credData.VoCredString[credData.cntVoCredString] = strdup(*((char **)data))) == NULL) return -1; credData.cntVoCredString++; } break; case LCMAPS_VO_CRED_MAPPING: if (data) { if ( (credData.cntVoCredMapping+1) <= 0) return -1; if ( (credData.VoCredMapping = (lcmaps_vo_mapping_t *) realloc(credData.VoCredMapping, ((size_t)(credData.cntVoCredMapping+1) * sizeof(lcmaps_vo_mapping_t)))) == NULL ) return -1; lcmaps_copyVoMapping(&(credData.VoCredMapping[credData.cntVoCredMapping]), (lcmaps_vo_mapping_t *) data); credData.cntVoCredMapping++; } break; case POOL_INDEX : if (data) { if ( (credData.pool_index = strdup(*(char **)data)) == NULL) return -1; } break; default : return -1; } return 0; } /****************************************************************************** Function: getCredentialData Description: Get pointer to a list of credential data of a certain type Parameters: datatype: type of credential count: number of credentials found in list of datatype Returns: pointer to list of credential data or NULL in case of failure ******************************************************************************/ /*! \fn getCredentialData( int datatype, int *count ) \brief Get pointer to a list of credential data of a certain type \param datatype type of credential \param count number of credentials found in list of datatype (filled by routine) \return pointer to list of credential data or NULL in case of failure */ void *getCredentialData( int datatype, int *count ) { switch(datatype) { case DN: if (credData.dn != NULL) *count = 1; else *count = 0; return &(credData.dn); case UID: *count = credData.cntUid; return (credData.uid); case PRI_GID: *count = credData.cntPriGid; return (credData.priGid); case SEC_GID: *count = credData.cntSecGid; return (credData.secGid); case LCMAPS_VO_CRED: *count = credData.cntVoCred; return (credData.VoCred); case LCMAPS_VO_CRED_STRING: *count = credData.cntVoCredString; return (credData.VoCredString); case LCMAPS_VO_CRED_MAPPING : *count = credData.cntVoCredMapping; return (credData.VoCredMapping); case POOL_INDEX: if (credData.pool_index != NULL) *count = 1; else *count = 0; return &(credData.pool_index); default : return NULL; } } /****************************************************************************** Function: lcmaps_cleanCredentialData Description: Clean the credData structure Parameters: none Returns: 0 ******************************************************************************/ /*! \fn lcmaps_cleanCredentialData() \brief Clean the credData structure \return 0 \internal */ int lcmaps_cleanCredentialData(void) { int i = 0; for (i = 0; i < credData.cntVoCred; i++) lcmaps_cleanVoData(&(credData.VoCred[i])); for (i = 0; i < credData.cntVoCredString; i++) if (credData.VoCredString[i]) free(credData.VoCredString[i]); for (i = 0; i < credData.cntVoCredMapping; i++) lcmaps_cleanVoMapping(&(credData.VoCredMapping[i])); if (credData.dn) free(credData.dn); if (credData.uid) free(credData.uid); if (credData.priGid) free(credData.priGid); if (credData.secGid) free(credData.secGid); if (credData.VoCred) free(credData.VoCred); if (credData.VoCredString) free(credData.VoCredString); if (credData.VoCredMapping) free(credData.VoCredMapping); if (credData.pool_index) free(credData.pool_index); credData.dn = NULL; credData.uid = NULL; credData.priGid = NULL; credData.secGid = NULL; credData.VoCred = NULL; credData.VoCredString = NULL; credData.VoCredMapping = NULL; credData.pool_index = NULL; credData.cntUid = 0; credData.cntPriGid = 0; credData.cntSecGid = 0; credData.cntVoCred = 0; credData.cntVoCredString = 0; credData.cntVoCredMapping = 0; return 0; } /****************************************************************************** Function: lcmaps_printCredData Description: print out the credData structure Parameters: debug_level: the debug level Returns: nothing ******************************************************************************/ /*! \fn lcmaps_printCredData(int debug_level) \brief Get pointer to a list of credential data of a certain type \param debug_level the debug level */ void lcmaps_printCredData(int debug_level) { int i = 0; size_t buflen, bufsize = 1500; char * buffer = NULL; int rc; /* 2048 is the max log line for sys log, 1500 is very safe */ if ( (buffer = calloc (sizeof(char), (bufsize + 1))) == NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); return; } lcmaps_log_debug(5, "Credential Print:\n"); if (credData.dn != NULL) { buflen=strlen(buffer); rc=snprintf (&buffer[buflen], bufsize - buflen, "DN:\"%s\"%s", credData.dn, (credData.cntUid > 0) || (credData.cntPriGid > 0) || (credData.cntSecGid > 0) ? "->" : ""); if (rc<0) lcmaps_log(LOG_INFO, "LCMAPS: Warning: error printing DN: %s\n",strerror(errno)); else if ((size_t)rc>=bufsize-buflen) lcmaps_log(LOG_INFO, "LCMAPS: Warning: output truncated for DN.\n"); /* lcmaps_log(debug_level, "dn: %s\n", credData.dn); */ } for (i = 0; i < credData.cntUid; i++) { buflen=strlen(buffer); rc=snprintf (&buffer[buflen], bufsize - buflen, "mapped uid:\'%d\'", credData.uid[i]); if (rc<0) lcmaps_log(LOG_INFO, "LCMAPS: Warning: error printing uid: %s\n",strerror(errno)); else if ((size_t)rc>=bufsize-buflen) lcmaps_log(LOG_INFO, "LCMAPS: Warning: output truncated for uid.\n"); /* lcmaps_log(debug_level, "uid : %d [%d/%d]\n", credData.uid[i], i+1, credData.cntUid); */ } for (i = 0; i < credData.cntPriGid; i++) { buflen=strlen(buffer); rc=snprintf (&buffer[buflen], bufsize - buflen, ",pgid:\'%d\'", credData.priGid[i]); if (rc<0) lcmaps_log(LOG_INFO, "LCMAPS: Warning: error printing pgid: %s\n",strerror(errno)); else if ((size_t)rc>=bufsize-buflen) lcmaps_log(LOG_INFO, "LCMAPS: Warning: output truncated for pgid.\n"); /* lcmaps_log(debug_level, "pgid : %d [%d/%d]\n", credData.priGid[i], i+1, credData.cntPriGid); */ } for (i = 0; i < credData.cntSecGid; i++) { buflen=strlen(buffer); rc=snprintf (&buffer[buflen], bufsize - buflen, ",sgid:\'%d\'", credData.secGid[i]); if (rc<0) lcmaps_log(LOG_INFO, "LCMAPS: Warning: error printing sgid: %s\n",strerror(errno)); else if ((size_t)rc>=bufsize-buflen) lcmaps_log(LOG_INFO, "LCMAPS: Warning: output truncated for sgid.\n"); /* lcmaps_log(debug_level, "sgid : %d [%d/%d]\n", credData.secGid[i], i+1, credData.cntSecGid); */ } /* Write generic DN to UID, GID and Secondary GID mappings */ if (strlen(buffer) > 0) lcmaps_log (LOG_NOTICE, "LCMAPS CRED FINAL: %s\n", buffer); /* Memory liberation */ free(buffer); buffer = NULL; /* Trying to one line VOMS info */ for (i = 0; i < credData.cntVoCred; i++) { lcmaps_log_debug(debug_level, "LCMAPS CRED FINAL: VO credential : [%d/%d]\n", i+1, credData.cntVoCred); lcmaps_printVoData(debug_level, &(credData.VoCred[i])); } for (i = 0; i < credData.cntVoCredString; i++) lcmaps_log(LOG_INFO, "LCMAPS CRED FINAL: VO credential string : %s [%d/%d]\n", credData.VoCredString[i], i+1, credData.cntVoCredString); /* Typically used */ for (i = 0; i < credData.cntVoCredMapping; i++) { lcmaps_log_debug(debug_level, "LCMAPS CRED FINAL: VO credential mapping : [%d/%d]\n", i+1, credData.cntVoCredMapping); /* lcmaps_printVoMapping(debug_level, &(credData.VoCredMapping[i])); */ if (credData.VoCredMapping[i].groupname) lcmaps_log(LOG_NOTICE,"LCMAPS CRED FINAL: FQAN:\"%s\"->mapped group:%d(%s)\n", credData.VoCredMapping[i].vostring, (int)credData.VoCredMapping[i].gid, credData.VoCredMapping[i].groupname); else lcmaps_log(LOG_NOTICE,"LCMAPS CRED FINAL: FQAN:\"%s\"->mapped group:%d\n", credData.VoCredMapping[i].vostring, (int)credData.VoCredMapping[i].gid); } /* Bonus */ if (credData.pool_index != NULL) { lcmaps_log(LOG_DEBUG,"LCMAPS CRED FINAL: POOL_INDEX:\"%s\"\n", credData.pool_index); } } static int lcmaps_compare_gids(const void * pgid1, const void * pgid2) { gid_t gid1, gid2; if (pgid1 == NULL) return 0; if (pgid2 == NULL) return 0; gid1 = *(const gid_t *) pgid1; gid2 = *(const gid_t *) pgid2; if (gid1 < gid2) return -1; else if (gid1 > gid2) return 1; return 0; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/lcmaps_cred_data.c,v $ $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ $Revision: 18216 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/lcmaps_log.c0000644001726200004540000005211712471136644015653 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_log.c \brief Logging routines for LCMAPS \author Martijn Steenbakkers for the EU DataGrid. */ #define _XOPEN_SOURCE 500 /***************************************************************************** Include header files ******************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include "_lcmaps_log.h" /****************************************************************************** Module specific prototypes ******************************************************************************/ #ifndef CONF_LCMAPS_DEBUG_LEVEL #define CONF_LCMAPS_DEBUG_LEVEL 4 /*!< default log level */ #endif /* CONF_LCMAPS_DEBUG_LEVEL */ static int lcmaps_debuglevel_to_sysloglevel(int); static const char * lcmaps_syslog_level_name_to_string(int); static char * lcmaps_get_time_string(void); /****************************************************************************** Define module specific variables ******************************************************************************/ static FILE * lcmaps_logfp=NULL; /*!< stream associated with logfile \internal */ static int logging_usrlog=0; /*!< flag to do user logging \internal */ static int logging_syslog=0; /*!< flag to use syslog \internal */ static int lcmaps_debug_level=LOG_INFO; /*!< log level \internal */ static char * extra_logstr = NULL; /*!< string to be included in every log statement \internal */ static int should_close_lcmaps_logfp = 0; /*!< Flag to check if the log stream should be closed \internal */ static int detected_old_plugin = 0; /*!< Flag that indicates that an old plugin has been detected */ /****************************************************************************** Function: lcmaps_debuglevel_to_sysloglevel() Description: Translation function from LCMAPS debug levels to syslog levels Parameters: configuration_level Returns: (int) sysloglevels ******************************************************************************/ static int lcmaps_debuglevel_to_sysloglevel(int configuration_level) { if (configuration_level < 0) return LOG_ERR; switch (configuration_level) { case 0 : case 1 : return LOG_ERR; case 2 : return LOG_WARNING; case 3 : return LOG_NOTICE; case 4 : return LOG_INFO; case 5 : return LOG_DEBUG; default : return LOG_DEBUG; } } /****************************************************************************** Function: lcmaps_syslog_level_name_to_string() Description: Syslog level name to string Parameters: syslog level Returns: char * name or UNKNOWN ******************************************************************************/ static const char * lcmaps_syslog_level_name_to_string(int syslog_level) { switch (syslog_level) { case LOG_EMERG : return "LOG_EMERG"; case LOG_ALERT : return "LOG_ALERT"; case LOG_CRIT : return "LOG_CRIT"; case LOG_ERR : return "LOG_ERR"; case LOG_WARNING : return "LOG_WARNING"; case LOG_NOTICE : return "LOG_NOTICE"; case LOG_INFO : return "LOG_INFO"; case LOG_DEBUG : return "LOG_DEBUG"; default : return "UNKNOWN"; } } /****************************************************************************** Function: lcmaps_log_open() Description: Start logging Parameters: path: path of logfile fp: file pointer to already opened file (or NULL) logtype: DO_USRLOG, DO_SYSLOG Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log_open( char * path, FILE * fp, unsigned short logtype ) \brief Start logging This function should only be used by the LCMAPS itself. It opens the logfile and tries to set the log level in the following order: -# Try if CONF_LCMAPS_DEBUG_LEVEL > 0 -# Try if environment variable LCMAPS_DEBUG_LEVEL is set and if it is an integer > 0 -# Otherwise set lcmaps_debug_level = LOG_INFO; \param path path of logfile. \param fp file pointer to already opened file (or NULL) \param logtype DO_USRLOG, DO_SYSLOG \retval 0 succes. \retval 1 failure. \internal */ int lcmaps_log_open(char * path, FILE * fp, unsigned short logtype ) { size_t j = 0; long longval; char * logfile; int conf_lcmaps_debug_level = 4; /* The LCMAPS debug messages setting in a range of 0-5, needs to be mapped onto Syslog levels. */ char * debug_env = NULL; char * logstr_env = NULL; detected_old_plugin = 0; /* Initializer */ /* syslog part */ if ((logtype & DO_SYSLOG) == DO_SYSLOG) { logging_syslog=1; } /* logfile part: either fp is given or need filename */ if ((logtype & DO_USRLOG) == DO_USRLOG) { if (lcmaps_logfp!=NULL) { lcmaps_log(LOG_DEBUG, "%s() has already been called before.\n", __func__); return 0; } /* filepointer or filename ? */ if (fp != NULL) { /* File already opened, should not be closed at the end */ lcmaps_logfp=fp; should_close_lcmaps_logfp = 0; logging_usrlog=1; } else { /* Need a filename: check argument and env variable */ logfile=(path ? path : getenv("LCMAPS_LOG_FILE")); if (logfile != NULL) { /* Try to append to file */ if ((lcmaps_logfp = fopen(logfile, "a")) != NULL) { should_close_lcmaps_logfp = 1; logging_usrlog=1; } else { logging_usrlog=0; logging_syslog=1; syslog(LOG_ERR, "%s(): Cannot open logfile %s, will use syslog: %s\n", __func__, logfile, strerror(errno)); } } else { logging_usrlog=0; logging_syslog=1; /* This is not an error: better not log at all as we haven't yet * set loglevel */ } } } /* Get the configuration for LCMAPS log leveling * 1. Try to get the LCMAPS_DEBUG_LEVEL value, if any. * 2. Set the default value for the CONF_LCMAPS_DEBUG_LEVEL, which can * typically come from the ./configure(.ac) */ if ( (debug_env = getenv("LCMAPS_DEBUG_LEVEL")) ) { /* convert into integer */ for (j = 0; j < strlen(debug_env); j++) { if (!isdigit((debug_env)[j])) { syslog(LOG_ERR, "%s(): found non-digit in environment variable in \"LCMAPS_DEBUG_LEVEL\" = %s\n", __func__, debug_env); return 1; } } errno=0; longval=strtol(debug_env, NULL, 10); if (errno!=0 || longval<0 || longval>5) { syslog(LOG_ERR, "%s(): environment variable value in \"LCMAPS_DEBUG_LEVEL\" should be 0 <= x <= 5.\n", __func__); return 1; } conf_lcmaps_debug_level=(int)longval; } else { /* Default debug_level, even when nothing else is provided */ conf_lcmaps_debug_level = (int) CONF_LCMAPS_DEBUG_LEVEL; } lcmaps_debug_level = lcmaps_debuglevel_to_sysloglevel(conf_lcmaps_debug_level); lcmaps_log(LOG_DEBUG,"%s(): setting log level to %d (LCMAPS_DEBUG_LEVEL), which translates to Syslog level \"%s\".\n", __func__, conf_lcmaps_debug_level, lcmaps_syslog_level_name_to_string(lcmaps_debug_level)); /* * Check if there is an extra log string * These environment variables are checked: JOB_REPOSITORY_ID and GATEKEEPER_JM_ID */ if ((logstr_env = getenv("LCMAPS_LOG_STRING")) != NULL ) { if ( (extra_logstr = strdup(logstr_env))==NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); return 1; } } return 0; } /****************************************************************************** Function: lcmaps_log() Description: Log information to file and or syslog Parameters: prty: syslog priority (if 0 don't syslog) fmt: string format Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log( int prty, char * fmt, ... ) \brief log information This function logs information for LCMAPS and its plugins. Syslog() is called with the specified priority. No syslog() is done if the priority is 0. \param prty syslog priority (if 0 don't syslog). \param fmt string format followed by variable argument list \retval 0 succes. \retval 1 failure. */ int lcmaps_log(int prty, const char * fmt, ...) { va_list pvar; char buf[MAX_LOG_BUFFER_SIZE]; int res,i; char * datetime = NULL; char * lcmaps_log_ident = NULL; /* Early cut-off from logging for both file and syslog */ if (prty > lcmaps_debug_level) return 1; va_start(pvar, fmt); res=vsnprintf(buf,MAX_LOG_BUFFER_SIZE,fmt,pvar); va_end(pvar); /* Replace unprintable characters with ? */ for (i=0; buf[i]!='\0'; i++) { if (buf[i]!='\n' && !isprint(buf[i])) buf[i]='?'; } /* Check return value */ if ( res < 0 ) { lcmaps_log(LOG_ERR, "lcmaps_log() error: %s\n",strerror(errno)); return 1; } /* truncate too long entries */ if ((size_t)res >= MAX_LOG_BUFFER_SIZE) snprintf(buf+MAX_LOG_BUFFER_SIZE-5,(size_t)5,"...\n"); /* Log to an opened file pointer */ if (logging_usrlog) { if (lcmaps_logfp == NULL) { syslog(LOG_ERR, "lcmaps_log() error: cannot open file descriptor"); /* switch over to syslog */ logging_usrlog=0; logging_syslog=1; } else { /* Get the (mandatory) prefixed datetime stamps */ datetime = lcmaps_get_time_string(); /* Must be free'd */ /* Prepend the loglines with a constant & significant string * that identifies the LCMAPS calling executable - Example: * "glexec" */ lcmaps_log_ident = getenv("LCMAPS_LOG_IDENT"); if (extra_logstr == NULL) { if (lcmaps_log_ident) { fprintf(lcmaps_logfp,"%s:lcmaps[%ld] %11s: %s: %s", lcmaps_log_ident, (long)getpid(), lcmaps_syslog_level_name_to_string(prty), datetime, buf); } else { fprintf(lcmaps_logfp,"lcmaps[%ld] %11s: %s: %s", (long)getpid(), lcmaps_syslog_level_name_to_string(prty), datetime, buf); } } else { if (lcmaps_log_ident) { fprintf(lcmaps_logfp,"%s:lcmaps[%ld] %11s: %s: %s: %s", lcmaps_log_ident, (long)getpid(), lcmaps_syslog_level_name_to_string(prty), datetime, extra_logstr, buf); } else { fprintf(lcmaps_logfp,"lcmaps[%ld] %11s: %s: %s: %s", (long)getpid(), lcmaps_syslog_level_name_to_string(prty), datetime, extra_logstr, buf); } } fflush(lcmaps_logfp); free(datetime); /* Liberation */ } } /* Log to SysLog */ if (logging_syslog) { /* Syslog broadcast protection - All LOG_EMERG, LOG_ALERT and LOG_CRIT * will be down-played to a LOG_ERR. */ if (prty < LOG_ERR) { prty = LOG_ERR; if (detected_old_plugin == 0) { detected_old_plugin = 1; /* Flag up */ lcmaps_log(LOG_WARNING, "Warning: detected an old plug-in based on its verbose output.\n"); } } #if 0 /* Mention the log priority explicitly, for debugging purposes */ if (extra_logstr == NULL) { syslog(prty, "lcmaps[%ld] %11s: %s", (long)getpid(), lcmaps_syslog_level_name_to_string(prty), buf); } else { syslog(prty, "lcmaps[%ld] %11s: %s: %s", (long)getpid(), lcmaps_syslog_level_name_to_string(prty), extra_logstr, buf); } #else if (extra_logstr == NULL) { syslog(prty, "lcmaps: %s", buf); } else { syslog(prty, "lcmaps: %s: %s", extra_logstr, buf); } #endif } return 0; } /****************************************************************************** Function: lcmaps_log_debug() Description: Print debugging information Parameters: debug_lvl: debugging level fmt: string format Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log_debug( int debug_lvl, char * fmt, ... ) \brief Print debugging information This function prints debugging information (using lcmaps_log with priority 1) provided debug_lvl <= DEBUG_LEVEL (default is 0). \param debug_lvl debugging level \param fmt string format followed by variable argument list \retval 0 succes. \retval 1 failure. */ int lcmaps_log_debug(int debug_lvl, const char * fmt, ...) { va_list pvar; char buf[MAX_LOG_BUFFER_SIZE]; int res; #if 0 /* If the LCMAPS definition of LOG_DEBUG (level 5) * is *not* explicitly set, do not even bother to * log anything */ if (debug_level < 5) { /* Cutting off LOG_DEBUG messages */ return 1; } #endif /* Early cut-off from logging for both file and syslog */ /* LOG_DEBUG, no exceptions */ if (LOG_DEBUG > lcmaps_debug_level) return 1; va_start(pvar, fmt); res=vsnprintf(buf,MAX_LOG_BUFFER_SIZE,fmt,pvar); va_end(pvar); /* Check return value */ if ( res < 0 ) { lcmaps_log(LOG_ERR, "lcmaps_log_debug() error: %s\n",strerror(errno)); return 1; } /* truncate too long entries */ if ((size_t)res >= MAX_LOG_BUFFER_SIZE) snprintf(buf+MAX_LOG_BUFFER_SIZE-5,(size_t)5,"...\n"); /* LOG_DEBUG, no exceptions */ /* NOTE: Make sure NOT to use buf directly, but do via a format string */ return lcmaps_log(LOG_DEBUG,"%s",buf); } /****************************************************************************** Function: lcmaps_log_a_string() Description: Log a string according to the passed format to file and or syslog Parameters: prty: syslog priority (if 0 don't syslog) fmt: string format the_string: the string Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log_a_string( int prty, char * fmt, char * the_string ) \brief log information This function logs information for LCMAPS and its plugins. Syslog() is called with the specified priority. No syslog() is done if the priority is 0. \param prty syslog priority (if 0 don't syslog). \param fmt string format \param the_string the string \retval 0 succes. \retval 1 failure. */ int lcmaps_log_a_string(int prty, const char * fmt, const char * the_string) { return lcmaps_log(prty, fmt, the_string); } /****************************************************************************** Function: lcmaps_log_a_string_debug() Description: Print debugging information Parameters: debug_lvl: debugging level fmt: string format the_string: the string Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log_a_string_debug( int debug_lvl, char * fmt, char * the_string ) \brief Print debugging information \param debug_lvl debugging level \param fmt string format \param the_string the string \retval 0 succes. \retval 1 failure. */ int lcmaps_log_a_string_debug(int debug_lvl, const char * fmt, const char * the_string) { return lcmaps_log_debug(debug_lvl, fmt, the_string); } /****************************************************************************** Function: lcmaps_log_close() Description: Stop logging Parameters: Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log_close() \brief Stop logging. \internal This function should only be used by the LCMAPS itself. \retval 0 succes. \retval 1 failure. \internal */ int lcmaps_log_close() { if (extra_logstr != NULL) { free(extra_logstr); extra_logstr = NULL; } if (should_close_lcmaps_logfp) { fclose(lcmaps_logfp); lcmaps_logfp=NULL; } return 0; } /****************************************************************************** Function: lcmaps_log_time() Description: Log information to file and or syslog with a timestamp Parameters: prty: syslog priority (if 0 don't syslog) fmt: string format Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_log_time( int prty, char * fmt, ... ) \brief log information with timestamp This function logs information with a timestamp for LCMAPS and its plugins. Syslog() is called with the specified priority. No syslog() is done if the priority is 0. \param prty syslog priority (if 0 don't syslog). \param fmt string format followed by variable argument list \retval 0 succes. \retval 1 failure. */ int lcmaps_log_time(int prty, const char * fmt, ...) { va_list pvar; char buf[MAX_LOG_BUFFER_SIZE]; int res; int rc = 0; va_start(pvar, fmt); res=vsnprintf(buf,MAX_LOG_BUFFER_SIZE,fmt,pvar); va_end(pvar); /* Check return value */ if ( res < 0 ) { lcmaps_log(LOG_ERR, "lcmaps_log_time() error: %s\n",strerror(errno)); return 1; } /* truncate too long entries */ if ((size_t)res >= MAX_LOG_BUFFER_SIZE) snprintf(buf+MAX_LOG_BUFFER_SIZE-5,(size_t)5,"...\n"); /* Do regular logging, time prefix is added by lcmaps_log() when logging to * file */ /* NOTE: make sure not to print buf directly, it might contain % */ rc = lcmaps_log(prty, "%s", buf); return rc; } /****************************************************************************** Function: lcmaps_get_time_string() Description: Log time information string in GMT The string is always 19 readable characters followed by a newline Parameters: Returns: !NULL succes NULL failure ******************************************************************************/ /*! \fn lcmaps_get_time_string(void) \brief Log time information string in GMT The string is always 19 readable characters followed by a newline \retval !NULL succes. \retval NULL failure. */ static char * lcmaps_get_time_string(void) { char * datetime; time_t mclock; struct tm * tmp; time(&mclock); /* Log in GMT, no exceptions */ tmp = gmtime(&mclock); if (!tmp) { return NULL; } datetime = malloc(sizeof(char) * 21); /* This string will always return 19 characters and \0 */ snprintf(datetime, (size_t)21, "%04d-%02d-%02d.%02d:%02d:%02dZ", tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec); return datetime; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/lcmaps_log.c,v $ $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ $Revision: 18216 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/lcmaps_vo_data.c0000644001726200004540000006500712471136644016511 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_vo_data.c \brief LCMAPS utilities for creating and accessing VO data structures \author Martijn Steenbakkers for the EU DataGrid. The interface is composed of: -# lcmaps_createVoData(): create a VoData structure -# lcmaps_deleteVoData(): delete a VoData structure -# lcmaps_copyVoData(): copy (the contents of) a VoData structure -# lcmaps_printVoData(): print the contents of a VoData structure -# lcmaps_stringVoData(): cast a VoData structure into a string */ #define _XOPEN_SOURCE 500 /****************************************************************************** Include header files ******************************************************************************/ #include #include #include #include #include #include "lcmaps_vo_data.h" #include "lcmaps_log.h" /****************************************************************************** Definitions ******************************************************************************/ #define VO_DATA_WHITESPACE_CHARS " \t\n" /* * VO mapping section */ /****************************************************************************** Function: lcmaps_createVoData Description: Create a VoData structure (store a VO, group, (subgroup,) role, capability combination). Allocate the memory. To be freed with lcmaps_deleteVoData(). Parameters: vo: name of the VO group: name of the group subgroup: name of the subgroup (ignored for the moment) role: the role capability: the capability (whatever it is) Returns: pointer to the VoData structure or NULL ******************************************************************************/ /*! \fn lcmaps_createVoData( const char * vo, const char * group, const char * subgroup, const char * role, const char * capability ) \brief Create a VoData structure Create a VoData structure (store a VO, group, (subgroup,) role, capability combination). Allocate the memory. To be freed with lcmaps_deleteVoData(). \param vo name of the VO \param group name of the group \param subgroup name of the subgroup (ignored for the moment) \param role the role \param capability the capability (whatever it is) \return pointer to the VoData structure or NULL */ lcmaps_vo_data_t * lcmaps_createVoData( const char * vo, const char * group, const char * subgroup, const char * role, const char * capability ) { lcmaps_vo_data_t * newVoData=NULL; newVoData = (lcmaps_vo_data_t *)malloc(sizeof(lcmaps_vo_data_t)); if (!newVoData) { lcmaps_log(LOG_ERR,"lcmaps_createVoData(): error in malloc for new VoData structure\n"); return NULL; } newVoData->vo = NULL; newVoData->group = NULL; newVoData->subgroup = NULL; newVoData->role = NULL; newVoData->capability = NULL; if (vo) { if ( (newVoData->vo = strdup(vo))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return NULL; } } if (group) { if ( (newVoData->group = strdup(group))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return NULL; } } if (subgroup) { if ( (newVoData->subgroup = strdup(subgroup))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return NULL; } } if (role) { if ( (newVoData->role = strdup(role))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return NULL; } } if (capability) { if ( (newVoData->capability = strdup(capability))==NULL) { lcmaps_log(LOG_ERR,"%s: Out of memory\n",__func__); return NULL; } } return newVoData; } /****************************************************************************** Function: lcmaps_deleteVoData Description: Delete a VoData structure that was previously created with lcmaps_createVoData(). The pointer to the VoData structure is finally set to NULL; Parameters: vo_data: pointer to a pointer to a VoData structure Returns: 0: success -1: failure (could not delete the structure or no structure found) ******************************************************************************/ /*! \fn lcmaps_deleteVoData( lcmaps_vo_data_t ** vo_data ) \brief Delete a VoData structure Delete a VoData structure that was previously created with lcmaps_createVoData(). The pointer to the VoData structure is finally set to NULL; \param vo_data pointer to a pointer to a VoData structure \retval 0 in case of success \retval -1 in case of failure */ int lcmaps_deleteVoData( lcmaps_vo_data_t ** vo_data ) { if (!vo_data) { lcmaps_log(LOG_ERR, "lcmaps_deleteVoData(): empty pointer as input !\n"); return -1; } if ( (*vo_data) ) { if ( (*vo_data)->vo) free( (*vo_data)->vo ); if ( (*vo_data)->group) free( (*vo_data)->group ); if ( (*vo_data)->subgroup) free( (*vo_data)->subgroup ); if ( (*vo_data)->role) free( (*vo_data)->role ); if ( (*vo_data)->capability) free( (*vo_data)->capability ); free( (*vo_data) ); } else { lcmaps_log_debug(2,"lcmaps_deleteVoData(): no lcmaps_vo_data_t found\n"); } *vo_data=NULL; return 0; } /****************************************************************************** Function: lcmaps_cleanVoData Description: Clean a VoData structure that was previously filled with lcmaps_copyVoData(). The contents are freed and set to zero. Parameters: vo_data: a pointer to a VoData structure Returns: 0: success -1: failure (could not clean the structure or no structure found) ******************************************************************************/ /*! \fn lcmaps_cleanVoData( lcmaps_vo_data_t * vo_data ) \brief Clean a VoData structure Clean a VoData structure that was previously filled with lcmaps_copyVoData(). The contents are freed and set to zero. \param vo_data a pointer to a VoData structure \retval 0 in case of success \retval -1 in case of failure */ int lcmaps_cleanVoData( lcmaps_vo_data_t * vo_data ) { if (!vo_data) { lcmaps_log(LOG_ERR, "lcmaps_cleanVoData():: no lcmaps_vo_data_t found\n"); return -1; } else { if ( (vo_data)->vo) { free( (vo_data)->vo ); vo_data->vo = NULL; } if ( (vo_data)->group) { free( (vo_data)->group ); vo_data->group = NULL; } if ( (vo_data)->subgroup) { free( (vo_data)->subgroup ); vo_data->subgroup = NULL; } if ( (vo_data)->role) { free( (vo_data)->role ); vo_data->role = NULL; } if ( (vo_data)->capability) { free( (vo_data)->capability ); vo_data->capability = NULL; } } return 0; } /****************************************************************************** Function: lcmaps_copyVoData Description: Copy a VoData structure into an empty VoData structure which has to exist. Parameters: dst_vo_data pointer to a empty VoData structure that should be filled src_vo_data pointer to the VoData structure that should be copied Returns: 0: success -1: failure (either src_vo_data or dst_vo_data was empty) ******************************************************************************/ /*! \fn lcmaps_copyVoData( lcmaps_vo_data_t * dst_vo_data, const lcmaps_vo_data_t * src_vo_data ) \brief Copy a VoData structure into an empty VoData structure Copy a VoData structure into an empty VoData structure which has to exist. \param dst_vo_data pointer to a empty VoData structure that should be filled \param src_vo_data pointer to the VoData structure that should be copied \retval 0 success \retval -1 failure (either src_vo_data or dst_vo_data was empty) */ int lcmaps_copyVoData( lcmaps_vo_data_t * dst_vo_data, const lcmaps_vo_data_t * src_vo_data ) { if ( (dst_vo_data) && (src_vo_data) ) { if (src_vo_data->vo) { if ( (dst_vo_data->vo = strdup(src_vo_data->vo))==NULL) return -1; } else dst_vo_data->vo = NULL; if (src_vo_data->group) { if ( (dst_vo_data->group = strdup(src_vo_data->group))==NULL) return -1; } else dst_vo_data->group = NULL; if (src_vo_data->subgroup) { if ( (dst_vo_data->subgroup = strdup(src_vo_data->subgroup))==NULL) return -1; } else dst_vo_data->subgroup = NULL; if (src_vo_data->role) { if ( (dst_vo_data->role = strdup(src_vo_data->role))==NULL) return -1; } else dst_vo_data->role = NULL; if (src_vo_data->capability) { if ( (dst_vo_data->capability = strdup(src_vo_data->capability))==NULL) return -1; } else dst_vo_data->capability = NULL; return 0; } else { return -1; } } /****************************************************************************** Function: lcmaps_printVoData Description: Print the contents of a VoData structure Parameters: debug_level: debug_level for which the contents will be printed vo_data: pointer to a VoData structure Returns: 0 (always) ******************************************************************************/ /*! \fn lcmaps_printVoData( int debug_level, const lcmaps_vo_data_t * vo_data ) \brief Print the contents of a VoData structure \param vo_data pointer to a VoData structure \param debug_level debug_level for which the contents will be printed \return 0 (always) */ int lcmaps_printVoData( int debug_level, const lcmaps_vo_data_t * vo_data ) { if (vo_data) { lcmaps_log_debug(debug_level,"lcmaps_printVoData(): address of vo data struct: %p\n", (const void*)vo_data); lcmaps_log_debug(debug_level,"lcmaps_printVoData(): VO: %s\n", vo_data->vo); lcmaps_log_debug(debug_level,"lcmaps_printVoData(): GROUP: %s\n", vo_data->group); lcmaps_log_debug(debug_level,"lcmaps_printVoData(): SUBGROUP: %s\n", vo_data->subgroup); lcmaps_log_debug(debug_level,"lcmaps_printVoData(): ROLE: %s\n", vo_data->role); lcmaps_log_debug(debug_level,"lcmaps_printVoData(): CAPABILITY: %s\n", vo_data->capability); } else { lcmaps_log_debug(debug_level,"lcmaps_printVoData(): empty pointer to vo data struct\n"); } return 0; } /****************************************************************************** Function: lcmaps_stringVoData Description: Cast a VoData structure into a string The user of this function should create the buffer of size nchars beforehand. In buffer a string like the following will be written: "/VO=fred/GROUP=fred/flintstone/ROLE=director/CAPABILITY=destroy" Currently the SUBGROUP entry is ignored. Only if the information is present in the VoData structure, it is added to the string. Both data for VO and GROUP are required (might change). Parameters: vo_data: pointer to a VoData structure buffer: pointer to character array of size nchars nchars: size of character array Returns: 0: success -1: failure ******************************************************************************/ /*! \fn lcmaps_stringVoData( const lcmaps_vo_data_t * vo_data, char * buffer, int nchars ) \brief Cast a VoData structure into a string The user of this function should create the buffer of size nchars beforehand. In buffer a string like the following will be written: "/VO=fred/GROUP=fred/flintstone/ROLE=director/CAPABILITY=destroy" Currently the SUBGROUP entry is ignored. Only if the information is present in the VoData structure, it is added to the string. Both data for VO and GROUP are required (might change). \param vo_data pointer to a VoData structure \param buffer pointer to character array of size nchars \param nchars size of character array \retval 0 in case of success \retval -1 in case of failure */ int lcmaps_stringVoData( const lcmaps_vo_data_t * vo_data, char * buffer, int nchars ) { int totalchars; char * strptr=NULL; char * bufptr=NULL; int buflen=0; bufptr=buffer; buflen=nchars; /* write "VO=" */ if ( vo_data->vo == NULL ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error no VO found\n"); return -1; } /* Skip over leading whitespace */ strptr=vo_data->vo; strptr += strspn(strptr, VO_DATA_WHITESPACE_CHARS); if ( (*strptr!='\0') && (strncmp(strptr,"NULL",(size_t)4)) ) { /* Convention for solaris 2.8 and glibc-2.1 and higher: * totalchars is the number of chars written (excluding \0) if enough space had been * available. * negative: error */ totalchars=snprintf(bufptr,(size_t)buflen,"/VO=%s",strptr); if ( totalchars < 0 ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error in snprintf(): %s\n", strerror(errno)); return -1; } else if ( (totalchars+1) > buflen ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): could not write all characters into buffer for VO. Excess of characters: %d\n",totalchars+1-buflen); return -1; } else { bufptr+=totalchars; buflen-=totalchars; } } else { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error no VO found\n"); return -1; } /* write "GROUP=" */ if ( vo_data->group == NULL ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error no VO-group found\n"); return -1; } /* Skip over leading whitespace */ strptr=vo_data->group; strptr += strspn(strptr, VO_DATA_WHITESPACE_CHARS); if ( (*strptr!='\0') && (strncmp(strptr,"NULL",(size_t)4)) ) { totalchars=snprintf(bufptr,(size_t)buflen,"/GROUP=%s",strptr); if ( totalchars < 0 ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error in snprintf(): %s\n", strerror(errno)); return -1; } else if ( (totalchars+1) > buflen ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): could not write all characters into buffer for GROUP. Excess of characters: %d\n",totalchars+1-buflen); return -1; } else { bufptr+=totalchars; buflen-=totalchars; } } else { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error no VO-group found\n"); return -1; } /* Skip subgroup for the moment (not clear how VOMS will evolve in this respect) */ /* write "ROLE=" */ if ( vo_data->role != NULL ) { /* Skip over leading whitespace */ strptr=vo_data->role; strptr += strspn(strptr, VO_DATA_WHITESPACE_CHARS); if ( (*strptr!='\0') && (strncmp(strptr,"NULL",(size_t)4)) ) { totalchars=snprintf(bufptr,(size_t)buflen,"/ROLE=%s",strptr); if ( totalchars < 0 ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error in snprintf(): %s\n", strerror(errno)); return -1; } else if ( (totalchars+1) > buflen ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): could not write all characters into buffer for ROLE. Excess of characters: %d\n",totalchars+1-buflen); return -1; } else { bufptr+=totalchars; buflen-=totalchars; } } } /* write "CAPABILITY=" */ if ( vo_data->capability != NULL ) { /* Skip over leading whitespace */ strptr=vo_data->capability; strptr += strspn(strptr, VO_DATA_WHITESPACE_CHARS); if ( (*strptr!='\0') && (strncmp(strptr,"NULL",(size_t)4)) ) { totalchars=snprintf(bufptr,(size_t)buflen,"/CAPABILITY=%s",strptr); if ( totalchars < 0 ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): error in snprintf(): %s\n", strerror(errno)); return -1; } else if ( (totalchars+1) > buflen ) { lcmaps_log(LOG_ERR,"lcmaps_stringVoData(): could not write all characters into buffer for CAPABILITY. Excess of characters: %d\n",totalchars+1-buflen); return -1; } else { bufptr+=totalchars; buflen-=totalchars; } } } return 0; } /* * VO mapping section */ /****************************************************************************** Function: lcmaps_createVoMapping Description: Create a VoMapping structure store the VO information string (or FQAN) in combination with the corresponding gid and groupname. Allocate the memory. To be freed with lcmaps_deleteVoMapping(). Parameters: vo_data_string: the VO information string (or FQAN) groupname: the (POSIX) group name gid: the (POSIX) gid Returns: pointer to the VoMapping structure or NULL ******************************************************************************/ /*! \fn lcmaps_createVoMapping( const char * vo_data_string, const char * groupname, const gid_t gid ) \brief Create a VoMapping structure Create a VoMapping structure store the VO information string (or FQAN) in combination with the corresponding gid. Allocate the memory. To be freed with lcmaps_deleteVoMapping(). \param vo_data_string the VO information string (or FQAN) \param groupname the (POSIX) group name \param gid the (POSIX) GID \return pointer to the VoMapping structure or NULL */ lcmaps_vo_mapping_t * lcmaps_createVoMapping( const char * vo_data_string, const char * groupname, const gid_t gid ) { lcmaps_vo_mapping_t * newVoMapping=NULL; newVoMapping = (lcmaps_vo_mapping_t *)malloc(sizeof(lcmaps_vo_mapping_t)); if (!newVoMapping) { lcmaps_log(LOG_ERR,"lcmaps_createVoMapping(): error in malloc for new VoMapping structure\n"); return NULL; } newVoMapping->vostring = NULL; newVoMapping->groupname = NULL; newVoMapping->gid = LCMAPS_NO_GID; if (vo_data_string) { if ( (newVoMapping->vostring = strdup(vo_data_string))==NULL ) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); return NULL; } } if (vo_data_string) { if ( (newVoMapping->groupname = strdup(groupname))==NULL ) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); return NULL; } } if (gid) newVoMapping->gid = gid; return newVoMapping; } /****************************************************************************** Function: lcmaps_deleteVoMapping Description: Delete a VoMapping structure that was previously created with lcmaps_createVoMapping(). The pointer to the VoMapping structure is finally set to NULL; Parameters: vo_mapping: pointer to a pointer to a VoMapping structure Returns: 0: success -1: failure (could not delete the structure or no structure found) ******************************************************************************/ /*! \fn lcmaps_deleteVoMapping( lcmaps_vo_mapping_t ** vo_mapping ) \brief Delete a VoMapping structure Delete a VoMapping structure that was previously created with lcmaps_createVoMapping(). The pointer to the VoMapping structure is finally set to NULL; \param vo_mapping pointer to a pointer to a VoMapping structure \retval 0 in case of success \retval -1 in case of failure */ int lcmaps_deleteVoMapping( lcmaps_vo_mapping_t ** vo_mapping ) { if (!vo_mapping) { lcmaps_log(LOG_ERR, "lcmaps_deleteVoMapping(): empty pointer as input !\n"); return -1; } if ( (*vo_mapping) ) { if ( (*vo_mapping)->vostring) free( (*vo_mapping)->vostring ); if ( (*vo_mapping)->groupname) free( (*vo_mapping)->groupname ); free( (*vo_mapping) ); } else { lcmaps_log_debug(2,"lcmaps_deleteVoMapping(): no lcmaps_vo_mapping_t found\n"); } *vo_mapping=NULL; return 0; } /****************************************************************************** Function: lcmaps_cleanVoMapping Description: Clean a VoMapping structure that was previously filled with lcmaps_copyVoMapping(). The contents are freed and set to zero. Parameters: vo_mapping: a pointer to a VoMapping structure Returns: 0: success -1: failure (could not clean the structure or no structure found) ******************************************************************************/ /*! \fn lcmaps_cleanVoMapping( lcmaps_vo_mapping_t * vo_mapping ) \brief Clean a VoMapping structure Clean a VoMapping structure that was previously filled with lcmaps_copyVoMapping(). The contents are freed and set to zero. \param vo_mapping a pointer to a VoMapping structure \retval 0 in case of success \retval -1 in case of failure */ int lcmaps_cleanVoMapping( lcmaps_vo_mapping_t * vo_mapping ) { if (!vo_mapping) { lcmaps_log(0, "lcmaps_cleanVoMapping():: no lcmaps_vo_mapping_t found\n"); return -1; } else { if ( (vo_mapping)->vostring) { free( (vo_mapping)->vostring ); vo_mapping->vostring = NULL; } if ( (vo_mapping)->groupname) { free( (vo_mapping)->groupname ); vo_mapping->groupname = NULL; } } return 0; } /****************************************************************************** Function: lcmaps_copyVoMapping Description: Copy a VoMapping structure into an empty VoMapping structure which has to exist. Parameters: dst_vo_mapping pointer to a empty VoMapping structure that should be filled src_vo_mapping pointer to the VoMapping structure that should be copied Returns: 0: success -1: failure (either src_vo_mapping or dst_vo_mapping was empty) ******************************************************************************/ /*! \fn lcmaps_copyVoMapping( lcmaps_vo_mapping_t * dst_vo_mapping, const lcmaps_vo_mapping_t * src_vo_mapping ) \brief Copy a VoMapping structure into an empty VoMapping structure Copy a VoMapping structure into an empty VoMapping structure which has to exist. \param dst_vo_mapping pointer to a empty VoMapping structure that should be filled \param src_vo_mapping pointer to the VoMapping structure that should be copied \retval 0 success \retval -1 failure (either src_vo_mapping or dst_vo_mapping was empty) */ int lcmaps_copyVoMapping( lcmaps_vo_mapping_t * dst_vo_mapping, const lcmaps_vo_mapping_t * src_vo_mapping ) { if ( (dst_vo_mapping) && (src_vo_mapping) ) { dst_vo_mapping->gid = src_vo_mapping->gid; if (src_vo_mapping->vostring) { if ( (dst_vo_mapping->vostring = strdup(src_vo_mapping->vostring)) == NULL) return -1; } else dst_vo_mapping->vostring = NULL; if (src_vo_mapping->groupname) { if ( (dst_vo_mapping->groupname = strdup(src_vo_mapping->groupname))==NULL) return -1; } else dst_vo_mapping->groupname = NULL; return 0; } else { return -1; } } /****************************************************************************** Function: lcmaps_printVoMapping Description: Print the contents of a VoMapping structure Parameters: debug_level: debug_level for which the contents will be printed vo_mapping: pointer to a VoMapping structure Returns: 0 (always) ******************************************************************************/ /*! \fn lcmaps_printVoMapping( int debug_level, const lcmaps_vo_mapping_t * vo_mapping ) \brief Print the contents of a VoMapping structure \param vo_mapping pointer to a VoMapping structure \param debug_level debug_level for which the contents will be printed \return 0 (always) */ int lcmaps_printVoMapping( int debug_level, const lcmaps_vo_mapping_t * vo_mapping ) { if (vo_mapping) { if (vo_mapping->groupname) lcmaps_log(debug_level,"lcmaps_printVoMapping(): VO string: \"%s\" -> mapped unix-group: %d(%s)\n", vo_mapping->vostring, (int)vo_mapping->gid, vo_mapping->groupname); else lcmaps_log(debug_level,"lcmaps_printVoMapping(): VO string: \"%s\" -> mapped unix-group: %d\n", vo_mapping->vostring, (int)vo_mapping->gid); } else { lcmaps_log_debug(debug_level,"lcmaps_printVoMapping(): empty pointer to vo mapping struct\n"); } return 0; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/lcmaps_vo_data.c,v $ $Date: 2014-07-08 10:39:48 +0200 (Tue, 08 Jul 2014) $ $Revision: 17848 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/_lcmaps_db_read.h0000644001726200004540000000543712471136644016621 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_db_read.h \brief Internal header file of LCMAPS database reader \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS database reader functions and typedefs. \internal */ #ifndef _LCMAPS_DB_READ_H #define _LCMAPS_DB_READ_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_db_read.h" /* #include "_lcmaps_defines.h" */ /****************************************************************************** * Module definition *****************************************************************************/ extern lcmaps_db_entry_t * lcmaps_db_fill_entry( lcmaps_db_entry_t ** plcmaps_db, lcmaps_db_entry_t * db_entry ); extern lcmaps_db_entry_t ** lcmaps_db_read( char * lcmaps_db_fname ); extern int lcmaps_db_clean_list( lcmaps_db_entry_t ** list ); extern int lcmaps_db_clean(void); #endif /* _LCMAPS_DB_READ_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/_lcmaps_db_read.h,v $ $Date: 2011-12-13 12:06:42 +0100 (Tue, 13 Dec 2011) $ $Revision: 15701 $ $Author: okoeroo $ ******************************************************************************/ lcmaps-1.6.6/src/pluginmanager/_lcmaps_cred_data.h0000644001726200004540000000471712471136644017147 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_cred_data.h \brief Internal header file of LCMAPS credential data \author Oscar Koeroo and Martijn Steenbakkers for the EU DataGrid. \internal */ #ifndef _LCMAPS_CRED_DATA_H #define _LCMAPS_CRED_DATA_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_cred_data.h" /****************************************************************************** * Module definition *****************************************************************************/ int lcmaps_cleanCredentialData(void); void lcmaps_printCredData(int debug_level); #endif /* _LCMAPS_CRED_DATA_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/pluginmanager/_lcmaps_cred_data.h,v $ $Date: 2011-03-04 21:55:13 +0100 (Fri, 04 Mar 2011) $ $Revision: 14868 $ $Author: dennisvd $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/0000755001726200004540000000000012471136741015571 500000000000000lcmaps-1.6.6/src/grid_credential_handling/x509_handling/0000755001726200004540000000000012471136741020142 500000000000000lcmaps-1.6.6/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h0000644001726200004540000001553212471136644023666 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_x509_utils.h \brief This file contains utility functions needed for x509 credential handling (openssl) \author Martijn Steenbakkers for EGEE This file contains the headers for utility functions to retrieve info from pem-encoded, x509 credentials/contexts Contains code contributed by Andrew McNab. */ #ifndef _LCMAPS_X509_UTILS_H #define _LCMAPS_X509_UTILS_H /****************************************************************************** Include header files ******************************************************************************/ #include /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_x509_to_dn() Description: Get the name of the X509 cert Parameters: px509: x5009 certificate Returns: dn (which should be freed) ******************************************************************************/ char * lcmaps_x509_to_dn(X509 * px509); /****************************************************************************** Function: lcmaps_x509_chain_to_dn() Description: Get the base DN of the X509 proxy cert Parameters: px509: x509 certificate certstack: certificate chain Returns: dn (which should be freed) ******************************************************************************/ char * lcmaps_x509_chain_to_dn(X509 * px509, STACK_OF(X509) *certstack); /****************************************************************************** Function: lcmaps_pem_string_to_x509 Description: Reads a X509 certificate from a PEM-encoded string Parameters: px: pointer to a X509 certificate cert_string: PEM-encoded string Returns: 0 on success, non-zero otherwise ******************************************************************************/ int lcmaps_pem_string_to_x509(X509 **px, char *certstring); /****************************************************************************** Function: lcmaps_pem_string_to_x509_chain Description: Creates a dynamically allocated stack of X509 certificate objects by walking through the PEM-encoded X509 certificates. Copied from gridsite (Andrew McNab), original name: GRSTx509StringToChain() Parameters: certstack: pointer to a stack of X509 certificates cert_string: PEM-encoded string Returns: 0 on success, non-zero otherwise ******************************************************************************/ int lcmaps_pem_string_to_x509_chain(STACK_OF(X509) **certstack, char *certstring); int lcmaps_x509IsCA (X509 *cert); void lcmaps_x509_free_chain(STACK_OF(X509) **); /****************************************************************************** Function: cgul_x509IsCA Description: Tests if the X509 * cert is a CA certificate or not Parameters: A X509 pointer Returns: 0 : Not a CA cert 1 : This is a CA cert ******************************************************************************/ int cgul_x509IsCA (X509 *cert); /****************************************************************************** Function: cgul_x509_select_eec_from_chain() Description: Get the End-Entity Certificate from a certificate chain Parameters: certstack: certificate chain Returns: pointer to X509 EEC ******************************************************************************/ X509 * cgul_x509_select_eec_from_chain (STACK_OF(X509) * chain); /****************************************************************************** Function: cgul_x509_select_final_cert_from_chain() Description: Get the Final Delegation from a certificate chain Parameters: certstack: certificate chain Returns: pointer to X509 final delegation ******************************************************************************/ X509 * cgul_x509_select_final_cert_from_chain (STACK_OF(X509) * chain); /****************************************************************************** Function: cgul_x509_chain_to_subject_dn() Description: Get the Subject DN of the End-Entity Certificate of the X509 cert Parameters: certstack: certificate chain Returns: Subject DN string (which should be freed) ******************************************************************************/ char * cgul_x509_chain_to_subject_dn(STACK_OF(X509) * chain); /****************************************************************************** Function: cgul_x509_chain_to_issuer_dn() Description: Get the Issuer DN of the End-Entity Certificate of the X509 cert Parameters: certstack: certificate chain Returns: Issuer DN string (which should be freed) ******************************************************************************/ char * cgul_x509_chain_to_issuer_dn(STACK_OF(X509) * chain); #endif /* _LCMAPS_X509_UTILS_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h,v $ $Date: 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) $ $Revision: 17647 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c0000644001726200004540000003120312471136644023513 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_x509_utils.c \brief This file contains utility functions needed for x509 credential handling (openssl) \author Martijn Steenbakkers for EGEE This file contains utility functions needed for x509 credential handling (openssl). Contains code contributed by Andrew McNab. */ /****************************************************************************** Include header files ******************************************************************************/ #if 0 #define DEBUG 0 #define HACK 0 #endif /* Needed for NULL */ #include /* For X509 and STACK_OF(X509) structs (output) */ #include #include #include #include #include /* LCMAPS includes */ #include "_lcmaps_x509_utils.h" #include "lcmaps_log.h" /****************************************************************************** Defines ******************************************************************************/ /****************************************************************************** Function: lcmaps_x509_free_chain() Description: Properly free a previously allocated STACK_OF(X509) *chain NOTE: we need a **chain, otherwise NULL is not returned... Parameters: chain: pointer to STACK_OF(X509) ******************************************************************************/ void lcmaps_x509_free_chain( STACK_OF(X509) ** chain ) { if (chain && *chain) { sk_X509_pop_free(*chain, X509_free); *chain = NULL; } } /****************************************************************************** Function: lcmaps_x509_to_dn() Description: Get the name of the X509 cert Parameters: px509: x509 certificate Returns: dn (which should be freed) ******************************************************************************/ char * lcmaps_x509_to_dn( X509 * px509 ) { if (!px509) { lcmaps_log(LOG_ERR, "%s(): No certificate found as input.\n", __func__); return NULL; } return X509_NAME_oneline(X509_get_subject_name(px509),NULL,0); } /****************************************************************************** Function: lcmaps_x509_chain_to_dn() Description: Get the base DN of the X509 proxy cert Watch out! This function changes the subject DN in the X509 structure! Parameters: px509: x509 certificate certstack: certificate chain Returns: dn (which should be freed) ******************************************************************************/ char * lcmaps_x509_chain_to_dn( X509 * px509, STACK_OF(X509) *certstack ) { return cgul_x509_chain_to_subject_dn(certstack); } /****************************************************************************** Function: lcmaps_pem_string_to_x509 Description: Reads a X509 certificate from a PEM-encoded string and returns the first X509 in the stack, which is the last certificate in the chain (EEC or final/leaf certificate/delegation) Parameters: px: pointer to an allocated X509 certificate. (needs free) cert_string: PEM-encoded string Returns: 0 on success, non-zero otherwise ******************************************************************************/ int lcmaps_pem_string_to_x509(X509 **px, char *certstring) { /* int rval = 0; */ STACK_OF (X509) * chain = NULL; X509 *cert = NULL; if (!px) { lcmaps_log(LOG_ERR, "%s: Error: No output pointer provided.\n", __func__); return -1; } if (lcmaps_pem_string_to_x509_chain(&chain, certstring) == 0) { /* Getting the final proxy (the Leaf proxy) */ cert = sk_X509_value(chain, 0); *px = X509_dup(cert); if (!(*px)) { lcmaps_x509_free_chain(&chain); /* note chain->NULL */ return -1; } lcmaps_x509_free_chain(&chain); /* note chain->NULL */ } else { return -1; } return 0; } /****************************************************************************** Function: lcmaps_pem_string_to_x509_chain Description: Creates a dynamically allocated stack of X509 certificate objects by walking through the PEM-encoded X509 certificates. Copied from gridsite (Andrew McNab), original name: GRSTx509StringToChain() Parameters: certstack: pointer to a stack of X509 certificates cert_string: PEM-encoded string Returns: 0 on success, non-zero otherwise ******************************************************************************/ int lcmaps_pem_string_to_x509_chain(STACK_OF(X509) **certstack, char *certstring) { STACK_OF(X509_INFO) *sk=NULL; BIO *certbio = NULL; X509_INFO *xi; *certstack = sk_X509_new_null(); if (*certstack == NULL) return -1; certbio = BIO_new_mem_buf(certstring, -1); sk=PEM_X509_INFO_read_bio(certbio, NULL, NULL, NULL); BIO_free(certbio); if (sk==NULL) { lcmaps_x509_free_chain( certstack ); /* *certstack ->NULL*/ return 1; } while (sk_X509_INFO_num(sk)) { xi=sk_X509_INFO_shift(sk); if (xi->x509 != NULL) { sk_X509_push(*certstack, xi->x509); xi->x509=NULL; } X509_INFO_free(xi); } sk_X509_INFO_free(sk); if (!sk_X509_num(*certstack)) { lcmaps_x509_free_chain( certstack ); /* *certstack -> NULL */ return 1; } return 0; } /****************************************************************************** Function: lcmaps_x509IsCA Description: Tests if the X509 * cert is a CA certificate or not Parameters: A X509 pointer Returns: 0 : Not a CA cert 1 : This is a CA cert ******************************************************************************/ int lcmaps_x509IsCA (X509 *cert) { return cgul_x509IsCA (cert); } /****************************************************************************** Function: cgul_x509IsCA Description: Tests if the X509 * cert is a CA certificate or not Parameters: A X509 pointer Returns: 0 : Not a CA cert 1 : This is a CA cert ******************************************************************************/ int cgul_x509IsCA (X509 *cert) { int purpose_id; purpose_id = X509_PURPOSE_get_by_sname("sslclient"); /* final argument to X509_check_purpose() is whether to check for CAness */ if (X509_check_purpose(cert, purpose_id + X509_PURPOSE_MIN, 1)) return 1; else return 0; } /****************************************************************************** Function: cgul_x509_select_eec_from_chain() Description: Get the End-Entity Certificate from a certificate chain Parameters: certstack: certificate chain Returns: pointer to X509 EEC ******************************************************************************/ X509 * cgul_x509_select_eec_from_chain (STACK_OF(X509) * chain) { int amount_of_CAs = 0; int i = 0; int depth = 0; /* I must have a certificate chain to work with */ if (!chain) { lcmaps_log(LOG_DEBUG, "%s: Empty chain, nothing to do\n", __func__); return NULL; } else { /* How many elements are there to the chain? */ depth = sk_X509_num(chain); /* How many CA certs are there in the chain? */ for (i = 0; i < depth; i++) { if (cgul_x509IsCA(sk_X509_value(chain, i))) amount_of_CAs++; } /* Getting the user cert (filtering the CAs and such) */ i = depth - (amount_of_CAs + 1); /* Next check also catches depth==0 */ if (i < 0) { /* Counting the stack went wrong. Errornous stack? */ return NULL; } /* The End-Entity Certificate */ return sk_X509_value(chain, i); } } /****************************************************************************** Function: cgul_x509_select_final_cert_from_chain() Description: Get the Final Delegation from a certificate chain Parameters: certstack: certificate chain Returns: pointer to X509 final delegation ******************************************************************************/ X509 * cgul_x509_select_final_cert_from_chain (STACK_OF(X509) * chain) { int amount_of_CAs = 0; int i = 0; int depth = 0; /* I must have a certificate chain to work with */ if (!chain) { return NULL; } else { /* How many elements are there to the chain? */ depth = sk_X509_num(chain); /* How many CA certs are there in the chain? */ for (i = 0; i < depth; i++) { if (cgul_x509IsCA(sk_X509_value(chain, i))) amount_of_CAs++; } /* Must have at least an EEC, possibly a delegation */ if (depth > amount_of_CAs) { /* Selecting EEC or final delegation */ return sk_X509_value(chain, 0); } else { /* Only CA files found */ return NULL; } } } /****************************************************************************** Function: cgul_x509_chain_to_subject_dn() Description: Get the Subject DN of the End-Entity Certificate of the X509 cert Parameters: certstack: certificate chain Returns: Subject DN string (which should be freed) ******************************************************************************/ char * cgul_x509_chain_to_subject_dn(STACK_OF(X509) * chain) { X509 * eec_cert = NULL; /* I need input */ if (chain == NULL) { return NULL; } /* Select the End-Entity Certificate from the certificate chain */ eec_cert = cgul_x509_select_eec_from_chain (chain); if (eec_cert == NULL) { lcmaps_log(LOG_DEBUG, "%s: No EEC found in the certificate chain.\n", __func__); return NULL; } else { /* You must FREE the DN after use */ return X509_NAME_oneline(X509_get_subject_name(eec_cert), NULL, 0); } } /****************************************************************************** Function: cgul_x509_chain_to_issuer_dn() Description: Get the Issuer DN of the End-Entity Certificate of the X509 cert Parameters: certstack: certificate chain Returns: Issuer DN string (which should be freed) ******************************************************************************/ char * cgul_x509_chain_to_issuer_dn(STACK_OF(X509) * chain) { X509 * eec_cert = NULL; if ((eec_cert = cgul_x509_select_eec_from_chain (chain)) == NULL) { return NULL; } else { /* You must FREE the Issuer DN after use */ return X509_NAME_oneline(X509_get_issuer_name (eec_cert), NULL, 0); } } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c,v $ $Date: 2015-01-13 12:28:19 +0100 (Tue, 13 Jan 2015) $ $Revision: 18158 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/_lcmaps_runvars.h0000644001726200004540000000635412471136644021072 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_runvars.h \brief API of runvars structure \author Martijn Steenbakkers for the EU DataGrid. This module takes the data that are presented to LCMAPS (the global credential and Job request) and extracts the variables that will be used by the plugins from it and stores them into a list. The interface to the LCMAPS module is composed of: -# lcmaps_extractRunVars(): takes the global credential and Job request and extracts run variables from them -# lcmaps_setRunVars(): adds run variables to a list -# lcmaps_getRunVars(): gets run variables from list */ #ifndef _LCMAPS_RUNVARS_H #define _LCMAPS_RUNVARS_H /***************************************************************************** Include header files ******************************************************************************/ /* LCMAPS includes */ #include "lcmaps_types.h" #include "_lcmaps_credential.h" /****************************************************************************** * Module definition *****************************************************************************/ int lcmaps_extractRunVars( lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred, char *requested_username ); void * lcmaps_getRunVars( const char *argName, const char *argType ); int lcmaps_setRunVars( const char *argName, const char *argType, void *value ); /* static lcmaps_request_t job_request; */ /* static lcmaps_cred_id_t lcmaps_credential; */ #endif /* _LCMAPS_RUNVARS_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h,v $ $Date: 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) $ $Revision: 17647 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/lcmaps_runvars.c0000644001726200004540000004676512471136644020740 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_runvars.c \brief Extract variables that will be used by the plugins \author Martijn Steenbakkers for the EU DataGrid. This module takes the data that are presented to LCMAPS (the global credential and Job request) and extracts the variables that will be used by the plugins from it and stores them into a list. The interface to the LCMAPS module is composed of: -# lcmaps_extractRunVars(): takes the global credential and Job request and extracts run variables from them -# lcmaps_setRunVars(): adds run variables to a list -# lcmaps_getRunVars(): gets run variables from list \internal */ /***************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Needed for NULL */ #include /* LCMAPS includes */ #include "lcmaps_log.h" #include "lcmaps_arguments.h" #include "lcmaps_types.h" #include "_lcmaps_runvars.h" #include "_lcmaps_credential.h" /****************************************************************************** Define constants ******************************************************************************/ /* * Extended for GUMS and Job Repository to include a whole array of VOMS Data Structures * #ifdef LCMAPS_GSI_MODE # define NUMBER_OF_RUNVARS ((int)16) #else # define NUMBER_OF_RUNVARS ((int)12) #endif * */ /* Make sure these numbers match number of entries in lcmaps_argument_t */ #ifdef LCMAPS_GSI_MODE # define NUMBER_OF_RUNVARS ((int)20) #else # define NUMBER_OF_RUNVARS ((int)15) #endif /****************************************************************************** Type definitions ******************************************************************************/ /****************************************************************************** Module specific prototypes ******************************************************************************/ /****************************************************************************** Define module specific variables ******************************************************************************/ static lcmaps_argument_t runvars_list[] = { { "user_dn" , "char *" , 0, NULL}, { "job_request" , "lcmaps_request_t" , 0, NULL}, { "job_request" , "char *" , 0, NULL}, { "fqan_list" , "char **" , 0, NULL}, { "nfqan" , "int" , 0, NULL}, { "mapcounter" , "int" , 0, NULL}, { "requested_uid", "uid_t" , 0, NULL}, { "requested_pgid_list", "gid_t *" , 0, NULL}, { "requested_npgid", "int" , 0, NULL}, { "requested_sgid_list", "gid_t *" , 0, NULL}, { "requested_nsgid", "int" , 0, NULL}, { "requested_poolindex", "char *" , 0, NULL}, /* Newly added to allow requesting target account in gsissh */ { "requested_username", "char *" , 0, NULL}, /* Newly added vo_data for GUMS and Job Repository */ { "voms_data_list", "lcmaps_vomsdata_t *" , 0, NULL}, { "nvoms_data" , "int" , 0, NULL}, #ifdef LCMAPS_GSI_MODE { "pem_string" , "char *" , 0, NULL}, { "px509_cred" , "X509 *" , 0, NULL}, { "px509_chain" , "STACK_OF(X509) *" , 0, NULL}, { "user_cred" , "gss_cred_id_t" , 0, NULL}, { "gss_context" , "gss_ctx_id_t" , 0, NULL}, #endif /* LCMAPS_GSI_MODE */ { NULL , NULL , -1, NULL} }; /*!< \internal */ /****************************************************************************** Function: lcmaps_extractRunVars() Description: extract the variables from user credential that can be used by the plugins Parameters: request: the job request (RSL) lcmaps_cred: the credential presented by the user Returns: 0 succes 1 failure ******************************************************************************/ /*! \fn lcmaps_extractRunVars( lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred ) \brief extract the variables from user credential that can be used by the plugins This function takes the user credential and job request (in RSL) and extracts the information which is published in the runvars_list. These variables can be accessed by the plugins. \param request the job request (RSL) \param lcmaps_cred the credential presented by the user \retval 0 succes. \retval 1 failure. \internal */ int lcmaps_extractRunVars( lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred, char *req_username ) { static lcmaps_request_t job_request; static lcmaps_cred_id_t lcmaps_credential; static char *requested_username; int number_of_runvars=0; const char * logstr = "lcmaps.mod-lcmaps_extractRunVars()"; /* Get the number of variables */ number_of_runvars = lcmaps_cntArgs(runvars_list); if (NUMBER_OF_RUNVARS != number_of_runvars) { lcmaps_log(LOG_ERR,"%s: conflict in number of run variables:\n", logstr); lcmaps_log(LOG_ERR,"%s: estimated = %d, defined = %d\n", logstr, number_of_runvars, NUMBER_OF_RUNVARS); return 1; } #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Number of runvars: %d\n", logstr, NUMBER_OF_RUNVARS); lcmaps_log_debug(2,"%s: Address of runvars_list (first element): 0x%x\n", logstr, runvars_list); #endif /* Save request en credential in static variables */ job_request=request; lcmaps_credential=lcmaps_cred; requested_username=req_username; /* decompose request and credential * for each run variable do lcmaps_setRunVars(name, type, value) */ /* Set user_dn */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"user_dn\": %s, address: 0x%x\n", logstr, lcmaps_credential.dn, &(lcmaps_credential.dn)); #endif if (lcmaps_setRunVars("user_dn" , "char *", (void *) &(lcmaps_credential.dn)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"user_dn\" variable\n", logstr); return 1; } /* Set the list of FQANs */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"fqan_list\", address: 0x%x\n", logstr, &(lcmaps_credential.fqan)); #endif if (lcmaps_setRunVars("fqan_list" , "char **", (void *) &(lcmaps_credential.fqan)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"fqan_list\" variable\n", logstr); return 1; } /* Set the number of FQANs */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"nfqan\": %d, address: 0x%x\n", logstr, lcmaps_credential.nfqan, &(lcmaps_credential.nfqan)); #endif if (lcmaps_setRunVars("nfqan" , "int", (void *) &(lcmaps_credential.nfqan)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"nfqan\" variable\n", logstr); return 1; } #ifdef LCMAPS_GSI_MODE /* Set user_cred */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"user_cred\"\n", logstr); #endif if (lcmaps_setRunVars("user_cred" , "gss_cred_id_t", (void *) &(lcmaps_credential.cred)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"user_cred\" variable\n", logstr); return 1; } /* Set security context */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"gss_context\"\n", logstr); #endif if (lcmaps_setRunVars("gss_context" , "gss_ctx_id_t", (void *) &(lcmaps_credential.context)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"gss_context\" variable\n", logstr); return 1; } /* Set pointer to X509 proxy certificate */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"px509_cred\"\n", logstr); #endif if (lcmaps_setRunVars("px509_cred" , "X509 *", (void *) &(lcmaps_credential.px509_cred)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"px509_cred\" variable\n", logstr); return 1; } /* Set pointer to X509 proxy certificate chain */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"px509_chain\"\n", logstr); #endif if (lcmaps_setRunVars("px509_chain" , "STACK_OF(X509) *", (void *) &(lcmaps_credential.px509_chain)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"px509_chain\" variable\n", logstr); return 1; } /* Set pointer to PEM string of proxy certificate */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"pem_string\"\n", logstr); #endif if (lcmaps_setRunVars("pem_string" , "char *", (void *) &(lcmaps_credential.pem_string)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"pem_string\" variable\n", logstr); return 1; } #endif /* LCMAPS_GSI_MODE */ /* Set job_request */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"job_request\" of type \"lcmaps_request_t\"\n", logstr); #endif if (lcmaps_setRunVars("job_request" , "lcmaps_request_t", (void *) &job_request) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"job_request\" variable of type \"lcmaps_request_t\"\n", logstr); return 1; } #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"job_request\" of type \"char *\"\n", logstr); #endif if (lcmaps_setRunVars("job_request" , "char *", (void *) &job_request) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"job_request\" variable of type \"char *\"\n", logstr); return 1; } /* Set the mapcounter */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"mapcounter\": %d, address: 0x%x\n", logstr, lcmaps_credential.mapcounter, &(lcmaps_credential.mapcounter)); #endif if (lcmaps_setRunVars("mapcounter" , "int", (void *) &(lcmaps_credential.mapcounter)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"mapcounter\" variable\n", logstr); return 1; } /* Set the requested uid */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_uid\": %d, address: 0x%x\n", logstr, (int) lcmaps_credential.requested_account.uid, &(lcmaps_credential.requested_account.uid)); #endif if (lcmaps_setRunVars("requested_uid" , "uid_t", (void *) &(lcmaps_credential.requested_account.uid)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_uid\" variable\n", logstr); return 1; } /* Set the list of requested primary gids */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_pgid_list\", address: 0x%x\n", logstr, &(lcmaps_credential.requested_account.pgid_list)); #endif if (lcmaps_setRunVars("requested_pgid_list" , "gid_t *", (void *) &(lcmaps_credential.requested_account.pgid_list)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_pgid_list\" variable\n", logstr); return 1; } /* Set the number of requested primary gids */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_npgid\": %d, address: 0x%x\n", logstr, lcmaps_credential.requested_account.npgid, &(lcmaps_credential.requested_account.npgid)); #endif if (lcmaps_setRunVars("requested_npgid" , "int", (void *) &(lcmaps_credential.requested_account.npgid)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_npgid\" variable\n", logstr); return 1; } /* Set the list of requested secondary gids */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_sgid_list\", address: 0x%x\n", logstr, &(lcmaps_credential.requested_account.sgid_list)); #endif if (lcmaps_setRunVars("requested_sgid_list" , "gid_t *", (void *) &(lcmaps_credential.requested_account.sgid_list)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_sgid_list\" variable\n", logstr); return 1; } /* Set the number of requested secondary gids */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_nsgid\": %d, address: 0x%x\n", logstr, lcmaps_credential.requested_account.nsgid, &(lcmaps_credential.requested_account.nsgid)); #endif if (lcmaps_setRunVars("requested_nsgid" , "int", (void *) &(lcmaps_credential.requested_account.nsgid)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_nsgid\" variable\n", logstr); return 1; } /* Set the requested poolindex */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_poolindex\", address: 0x%x\n", logstr, &(lcmaps_credential.requested_account.poolindex)); lcmaps_log_debug(2,"lcmaps.mod-lcmaps_extractRunVars(): requested_poolindex value: %s\n", (lcmaps_credential.requested_account).poolindex ? (lcmaps_credential.requested_account).poolindex : "(null)" ); #endif if (lcmaps_setRunVars("requested_poolindex" , "char *", (void *) &(lcmaps_credential.requested_account.poolindex)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_poolindex\" variable\n", logstr); return 1; } /* Set the requested username */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"requested_username\", address: 0x%x\n", logstr, &(requested_username)); lcmaps_log_debug(2,"lcmaps.mod-lcmaps_extractRunVars(): requested_username value: %s\n", requested_username ? requested_username : "(null)" ); #endif if (lcmaps_setRunVars("requested_username" , "char *", (void *) &(requested_username)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"requested_username\" variable\n", logstr); return 1; } /* Newly added vo_data for GUMS and Job Repository */ /* Set pointer to multiple VOMS Data structures */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"voms_data_list\"\n", logstr); #endif if (lcmaps_setRunVars("voms_data_list" , "lcmaps_vomsdata_t *", (void *) &(lcmaps_credential.voms_data_list)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"voms_data_list\" variable\n", logstr); return 1; } /* Set number of VOMS Data structures */ #ifdef LCMAPS_DEBUG lcmaps_log_debug(2,"%s: Setting \"nvoms_data\"\n", logstr); #endif if (lcmaps_setRunVars("nvoms_data" , "int", (void *) &(lcmaps_credential.nvoms_data)) != 0) { lcmaps_log(LOG_ERR,"%s: error while setting \"nvoms_data\" variable\n", logstr); return 1; } return 0; } /****************************************************************************** Function: lcmaps_getRunVars() Description: returns a void pointer to the requested value Parameters: argName: name of the variable argType: type of the variable Returns: void pointer to the value or NULL ******************************************************************************/ /*! \fn lcmaps_getRunVars( const char *argName, const char *argType ) \brief returns a void pointer to the requested value This function returns a void pointer to the requested variable with name argName and type argType in the runvars_list. Internally it uses lcmaps_getArgValue(). \param argName name of the variable \param argType type of the variable \returns void pointer to the value or NULL \internal */ void * lcmaps_getRunVars( const char *argName, const char *argType ) { /* do lcmaps_getArgValue with runvars_list and NUMBER_OF_RUNVARS */ return lcmaps_getArgValue(argName, argType, NUMBER_OF_RUNVARS, runvars_list); } /****************************************************************************** Function: lcmaps_setRunVars() Description: fill the runvars_list with a value for argName and argType Parameters: argName: name of the runvars variable argType: type of the runvars variable values: void pointer to the value Returns: 0 succes -1 failure ******************************************************************************/ /*! \fn lcmaps_setRunVars( const char *argName, const char *argType, void *value ) \brief fill the runvars_list with a value for argName and argType This function fills the (internal) runvars_list with the value for the variable with name argName and type argType. Internally lcmaps_setArgValue() is used. \param argName name of the runvars variable \param argType type of the runvars variable \param value void pointer to the value \retval 0 succes. \retval -1 failure. \internal */ int lcmaps_setRunVars( const char *argName, const char *argType, void *value ) { lcmaps_argument_t *pargument=NULL; #ifdef LCMAPS_DEBUG const char * logstr = "lcmaps.mod-lcmaps_setRunVars()"; #endif /* store address of 1st element of runvars_list in pargument, * the address of which can be passed on to lcmaps_setArgValue * (the address of runvars_list does not exist, since its only a symbol, not a value) */ pargument=runvars_list; #ifdef LCMAPS_DEBUG lcmaps_log_debug(3,"%s: Address of first element of runvars_list: 0x%x\n", logstr, runvars_list); lcmaps_log_debug(3,"%s: Address of address of first element of runvars_list: 0x%x\n", logstr, &pargument); #endif return lcmaps_setArgValue(argName, argType, value, NUMBER_OF_RUNVARS, &pargument); } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/lcmaps_runvars.c,v $ $Date: 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) $ $Revision: 17647 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/gsi_handling/0000755001726200004540000000000012471136741020217 500000000000000lcmaps-1.6.6/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c0000644001726200004540000002217612471136644023656 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_gsi_utils.c \brief This file contains utility functions to retrieve info from gsi credentials/contexts (at the gssapi level) \author Martijn Steenbakkers for EGEE This file contains utility functions to retrieve info from gsi credentials/contexts (at the gssapi level) Contains modified globus code. */ /****************************************************************************** Include header files ******************************************************************************/ /* Needed for NULL */ #include /* For X509 and STACK_OF(X509) structs (output) */ #include /* For the gss_cred_id_t struct (input) */ #include /* Defines globus_gsi_cred_handle_t (GSI (globus) credential, * part of gss_cred_id_desc) * and interface functions to globus_gsi_cred_handle_t: * globus_gsi_cred_get_cert() and globus_gsi_cred_get_cert_chain() */ #include /* LCMAPS includes */ #include "_lcmaps_globus_internal.h" #include "_lcmaps_gsi_utils.h" /****************************************************************************** Function: lcmaps_cred_to_x509() Description: Return the pointer to X509 structure from gss credential Parameters: cred: globus credential Returns: pointer to X509 struct or NULL ******************************************************************************/ /*! \fn lcmaps_cred_to_x509( gss_cred_id_t cred ) \brief Return the pointer to X509 structure from gss credential This function takes a gss credential as input and returns the corresponding X509 structure, which is allocated for this purpose (should be freed) \param cred the gss credential \return a pointer to a X509 struct or NULL */ X509 * lcmaps_cred_to_x509( gss_cred_id_t cred ) { /* Internally a gss_cred_id_t type is a pointer to a gss_cred_id_desc */ lcmaps_gss_cred_id_desc * cred_desc = NULL; globus_gsi_cred_handle_t gsi_cred_handle; X509 * px509=NULL; /* cast to gss_cred_id_desc */ if (cred != GSS_C_NO_CREDENTIAL) { cred_desc = (lcmaps_gss_cred_id_desc *) cred; if (globus_module_activate(GLOBUS_GSI_CREDENTIAL_MODULE) ==GLOBUS_SUCCESS) { gsi_cred_handle = cred_desc->cred_handle; if (globus_gsi_cred_get_cert(gsi_cred_handle, &px509) == GLOBUS_SUCCESS) { globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); return px509; } else { globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); return NULL; } } else { globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); return NULL; } } else { return NULL; } } /****************************************************************************** Function: lcmaps_cred_to_x509_chain() Description: Return the pointer to X509 chain from gss credential Parameters: cred: globus credential Returns: pointer to X509 chain or NULL ******************************************************************************/ /*! \fn lcmaps_cred_to_x509_chain( gss_cred_id_t cred ) \brief Return the pointer to X509 structure from gss credential This function takes a gss credential as input and returns the corresponding X509 chain, which is allocated for this purpose (should be freed) \param cred the gss credential \return a pointer to a X509 chain or NULL */ STACK_OF(X509) * lcmaps_cred_to_x509_chain( gss_cred_id_t cred ) { /* Internally a gss_cred_id_t type is a pointer to a gss_cred_id_desc */ lcmaps_gss_cred_id_desc * cred_desc = NULL; globus_gsi_cred_handle_t gsi_cred_handle; STACK_OF(X509) * px509_chain=NULL; /* cast to gss_cred_id_desc */ if (cred != GSS_C_NO_CREDENTIAL) { cred_desc = (lcmaps_gss_cred_id_desc *) cred; if (globus_module_activate(GLOBUS_GSI_CREDENTIAL_MODULE) ==GLOBUS_SUCCESS) { gsi_cred_handle = cred_desc->cred_handle; if (globus_gsi_cred_get_cert_chain(gsi_cred_handle, &px509_chain) == GLOBUS_SUCCESS) { globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); return px509_chain; } else { globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); return NULL; } } else { globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); return NULL; } } else { return NULL; } } /****************************************************************************** Function: Dig up the user gss credential from the security context Description: Dig up the user gss credential from the security context. Uses gss_assist libraries and, in case the delegate credential is empty, uses internal gsi libraries as well (hmmmm). Parameters: context_handle: the security context handle Returns: the user credential or GSS_C_NO_CREDENTIAL in case of failure ******************************************************************************/ gss_cred_id_t lcmaps_ctx_to_cred(gss_ctx_id_t context_handle) { gss_buffer_desc peer_name_buffer = GSS_C_EMPTY_BUFFER; OM_uint32 major_status = 0; OM_uint32 minor_status = 0; gss_cred_id_t peer_cred_handle = GSS_C_NO_CREDENTIAL; gss_cred_id_t deleg_cred_handle = GSS_C_NO_CREDENTIAL; gss_cred_id_t user_cred_handle = GSS_C_NO_CREDENTIAL; char * peer_subject = NULL; gss_name_t peer_cred_name = GSS_C_NO_NAME; gss_buffer_desc peer_cred_buffer_desc = GSS_C_EMPTY_BUFFER; gss_buffer_t peer_cred_buffer = &peer_cred_buffer_desc; OM_uint32 minor_status2; /* * Dig up the delegated credential handle, if it is empty, use the non delegated one */ deleg_cred_handle = (gss_cred_id_t)((lcmaps_gss_ctx_id_desc *)context_handle)->deleg_cred_handle; if (deleg_cred_handle == GSS_C_NO_CREDENTIAL) { /* Trying to use original user proxy ... */ peer_cred_handle = (gss_cred_id_t)((lcmaps_gss_ctx_id_desc *)context_handle)->peer_cred_handle; /* checking the subject name */ if ((major_status = gss_inquire_cred(&minor_status, peer_cred_handle, &peer_cred_name, NULL, NULL, NULL)) == GSS_S_COMPLETE) { major_status = gss_display_name(&minor_status, peer_cred_name, peer_cred_buffer, NULL); gss_release_name(&minor_status2, &peer_cred_name); } else { return GSS_C_NO_CREDENTIAL; } peer_subject = (char *)peer_cred_buffer_desc.value; if (peer_name_buffer.value != NULL) { if (strncmp(peer_name_buffer.value, peer_subject, strlen(peer_name_buffer.value)) != 0) { return GSS_C_NO_CREDENTIAL; } } user_cred_handle = peer_cred_handle; if (peer_cred_buffer_desc.value != NULL) { gss_release_buffer(&minor_status2, peer_cred_buffer); } peer_subject = NULL; } else { /* Trying to use delegated user proxy */ user_cred_handle = deleg_cred_handle; } return (user_cred_handle); } lcmaps-1.6.6/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h0000644001726200004540000000704212471136644024015 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_gsi_utils.h \brief This file contains the headers for utility functions to retrieve info from gsi credentials/contexts (at the gssapi level) \author Martijn Steenbakkers for EGEE This file contains utility functions to retrieve info from gsi credentials/contexts (at the gssapi and gsi level) The following functions are defined: -# lcmaps_cred_to_x509() -# lcmaps_cred_to_x509_chain() -# lcmaps_ctx_to_cred() */ #ifndef _LCMAPS_GSI_UTILS_H #define _LCMAPS_GSI_UTILS_H /****************************************************************************** Include header files ******************************************************************************/ #include #include /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_cred_to_x509() Description: Return the pointer to X509 structure from gss credential Parameters: cred: globus credential Returns: pointer to X509 struct or NULL ******************************************************************************/ X509 * lcmaps_cred_to_x509(gss_cred_id_t cred); /****************************************************************************** Function: lcmaps_cred_to_x509_chain() Description: Return the pointer to X509 chain from gss credential Parameters: cred: globus credential Returns: pointer to X509 chain or NULL ******************************************************************************/ STACK_OF(X509) * lcmaps_cred_to_x509_chain(gss_cred_id_t cred); /****************************************************************************** Function: lcmaps_ctx_to_cred() Description: Return cred from a gss context Parameters: cred: globus gss context Returns: pointer to globus credential or GSS_C_NO_CREDENTIAL ******************************************************************************/ gss_cred_id_t lcmaps_ctx_to_cred(gss_ctx_id_t); #endif /* _LCMAPS_GSI_UTILS_H */ lcmaps-1.6.6/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c0000644001726200004540000012012512471136644025077 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_voms_attributes.c \brief retrieve VOMS attributes (FQANs) from x509 \author Oscar Koeroo for EMI/IGE Last change: support for VOMS' generic attributes (Placi Flury flury@switch.ch) */ #define _XOPEN_SOURCE 600 /***************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" #include #include #include #include #include #include #include #include #include #include "lcmaps_log.h" #include "lcmaps_types.h" #include "_lcmaps_voms_attributes.h" #include "lcmaps_basic.h" /*#include "voms_apic.h"*/ #include /****************************************************************************** Definitions ******************************************************************************/ /* #define VOMS_BUFFER_SIZE 1024 */ #define DEFAULT_CERT_DIR "/etc/grid-security/certificates" #define DEFAULT_VOMS_DIR "/etc/grid-security/vomsdir" /* Define a VERIFY_FULL_KNOWN to a combination of all known flags, this makes * the checks a lot easier */ #define VERIFY_FULL_KNOWN (VERIFY_DATE | VERIFY_NOTARGET | VERIFY_KEY | VERIFY_SIGN | VERIFY_ORDER | VERIFY_ID | VERIFY_CERTLIST) /* valid flags for lcmaps_set_voms_verification_time() */ #define VERIFY_OFFSET_NOTBEFORE 1 #define VERIFY_OFFSET_NOTAFTER 2 /****************************************************************************** Module specific prototypes ******************************************************************************/ static void set_vomsdir_certdir(char **vomsdir, char **certdir); static void print_lcmaps_vomsdata(lcmaps_vomsdata_t * lcmaps_vomsdata); #ifdef LCMAPS_DEPRECATED static void print_vomsdata(struct vomsdata *); #endif /* LCMAPS_DEPRECATED */ /* static void lcmaps_fetch_VOMS_credentials(STACK_OF(X509) *, char ***, int *, lcmaps_vomsdata_t **); */ static int lcmaps_get_voms_generic_attributes(struct voms *vo, struct vomsdata *vd, lcmaps_voms_generic_attr_t **attr_list, int *nattrs); void lcmaps_print_stack_of_x509_to_string(STACK_OF(X509) * px509_chain, char *output_file); void lcmaps_print_x509_to_string(X509 * px509_cert, char *output_file); static time_t asn1TimeToTimeT(ASN1_TIME* asn1time); /****************************************************************************** Define module specific variables ******************************************************************************/ /* * Always verify all VOMS credentials by default */ static unsigned int verify_voms_flags = VERIFY_FULL; /* * Verification time for proxy. In case voms_verify_time_flags==1 the time is * relative to the notBefore time of the last proxy delegation and the actual * time can only be determined once we have the proxy cert. In case flags==0 * it is the UNIX time. */ static time_t voms_verify_time = 0; static int voms_verify_time_flags = 0; #ifdef GRST_ACTIVE #if 0 /* Everything ok (= OpenSSL X509_V_OK) */ #define GRST_RET_OK 0 /* Failed for unspecified reason */ #define GRST_RET_FAILED 1000 #define MAXTAG 500 #define GRST_PROXYCERTINFO_OID "1.3.6.1.4.1.3536.1.222" #define GRST_VOMS_OID "1.3.6.1.4.1.8005.100.100.5" #define GRST_VOMS_DIR "/etc/grid-security/vomsdir" #define GRST_ASN1_MAXTAGS 500 #endif #define GRST_ASN1_MAXCOORDLEN 50 struct GRSTasn1TagList { char treecoords[GRST_ASN1_MAXCOORDLEN + 1]; int start; int headerlength; int length; int tag; }; int GRSTasn1GetX509Name(char *, int, char *, char *, struct GRSTasn1TagList taglist[], int); #endif /* reverse error codes from voms_apic.h */ static const char *retmsg[] = { "VERR_NONE", "VERR_NOSOCKET", "VERR_NOIDENT", "VERR_COMM", "VERR_PARAM", "VERR_NOEXT", "VERR_NOINIT", "VERR_TIME", "VERR_IDCHECK", "VERR_EXTRAINFO", "VERR_FORMAT", "VERR_NODATA", "VERR_PARSE", "VERR_DIR", "VERR_SIGN", "VERR_SERVER", "VERR_MEM", "VERR_VERIFY", "VERR_IDENT", "VERR_TYPE" }; /****************************************************************************** Function: lcmaps_disable_voms_attributes_verification Description: Disables the verification in the VOMS API, identical to lcmaps_set_voms_attributes_verification(VERIFY_NONE); Parameters: Void Returns: Void ******************************************************************************/ void lcmaps_disable_voms_attributes_verification (void) { /* Set to verify no VOMS attributes */ verify_voms_flags=VERIFY_NONE; } /****************************************************************************** Function: lcmaps_enable_voms_attributes_verification Description: Enables the verification in the VOMS API, identical to lcmaps_set_voms_attributes_verification(VERIFY_FULL); Parameters: Void Returns: Void ******************************************************************************/ void lcmaps_enable_voms_attributes_verification (void) { /* Set to verify all VOMS attributes */ verify_voms_flags=VERIFY_FULL; } /****************************************************************************** Function: lcmaps_is_set_to_verify_voms_attributes Description: Will return the current setting to enable or disable the verification of the VOMS credentials by the VOMS API. I.e. it will return 1 only when *all* known enabling flags are set. See lcmaps_get_voms_attributes_verification() when a more detailed answer is needed. Parameters: Void Returns: 1 : Verification is enabled 0 : Verification is disabled ******************************************************************************/ int lcmaps_is_set_to_verify_voms_attributes (void) { /* When all (known) flags are set: return 1, otherwise 0 */ return (verify_voms_flags & VERIFY_FULL_KNOWN)==VERIFY_FULL_KNOWN ? 1 : 0; } /****************************************************************************** Function: lcmaps_set_voms_attributes_verification Description: Sets the verification level used by the VOMS API to a combination of flags as defined in voms_apic.h: VERIFY_FULL VERIFY_NONE VERIFY_DATE VERIFY_NOTARGET VERIFY_KEY VERIFY_SIGN VERIFY_ORDER VERIFY_ID VERIFY_CERTLIST When all known simple enabling flags (i.e. all except FULL and NONE) are set, lcmaps_is_set_to_verify_voms_attributes() will return 1. Parameters: int Returns: Void ******************************************************************************/ void lcmaps_set_voms_attributes_verification (unsigned int verify_flags) { /* set verification to specified flags */ verify_voms_flags=verify_flags; } /****************************************************************************** Function: lcmaps_get_voms_attributes_verification Description: Gets the verification level used by the VOMS API. The result is a combination of flags as defined in voms_apic.h: VERIFY_FULL VERIFY_NONE VERIFY_DATE VERIFY_NOTARGET VERIFY_KEY VERIFY_SIGN VERIFY_ORDER VERIFY_ID VERIFY_CERTLIST Parameters: void Returns: flags currently set ******************************************************************************/ unsigned int lcmaps_get_voms_attributes_verification (void) { return verify_voms_flags; } /****************************************************************************** Function: lcmaps_set_voms_verification_time Description: Sets the verification time to use to the given time. When flags is equal to 1 the time is relative to the notBefore time of the last proxy delegation in the chain. Parameters: time_t verification time int flags when 0 verification time is Unix time, otherwise it's number of seconds relative to notBefore. Returns: void ******************************************************************************/ void lcmaps_set_voms_verification_time(time_t verify_time, int flags) { voms_verify_time = verify_time; voms_verify_time_flags = flags; } /****************************************************************************** Function: lcmaps_get_voms_verification_time Description: Returns the absolute or relative verification time at which VOMS will verify the AC and signature chain. Parameters: time_t *verification_time (output) int *flags (output) Returns: int: 0 when success, -1 on error (and sets errno to EINVAL) ******************************************************************************/ int lcmaps_get_voms_verification_time(time_t *verify_time, int *flags) { if (verify_time==NULL || flags==NULL) { errno=EINVAL; return -1; } *verify_time = voms_verify_time; *flags = voms_verify_time_flags; return 0; } /************************************************************************** * Read the generic attributes from the usercert. * * Paramters: * vo: the VO data structure * vd: the overall VO information * attr_list: list of the generic attributes * nattrs: number of attributes * Return: * 0: success (notice, the attribute list can still be empty) * 1: failure (could not read certificate attributes) **************************************************************************/ static int lcmaps_get_voms_generic_attributes(struct voms *vo, struct vomsdata *vd, lcmaps_voms_generic_attr_t **attr_list, int *nattrs) { int handle, attrSrcNum; int attr_number = 0; int errno_local = 0; int i, j, k; /* struct attribute *tmp_list; */ struct attribute voms_ga; /* Could be the amount of vomsdata_t sources for Generic Attributes - need to check semantics */ attrSrcNum = VOMS_GetAttributeSourcesNumber(vo, vd, &errno_local); if (errno_local != 0) { lcmaps_log(LOG_ERR, "%s Error: VOMS_GetAttributeSourcesNumber(), %s", __func__, retmsg[errno_local]); return 1; } /* Count the list of (struct attribute)'s which each hold one Generic Attribute */ for (i = 0, *nattrs = 0; i < attrSrcNum; i++) { handle = VOMS_GetAttributeSourceHandle(vo, i, vd, &errno_local); if (errno_local != 0) { lcmaps_log(LOG_ERR, "%s Error: VOMS_AttributeSourceHandle(), %s", __func__, retmsg[errno_local]); *nattrs = 0; return 1; } attr_number = VOMS_GetAttributesNumber(vo, handle, vd, &errno_local); if (errno_local != 0 || attr_number<0) { lcmaps_log(LOG_ERR, "%s Error: VOMS_GetAttributesNumber(), %s", __func__, (errno_local ? retmsg[errno_local] : "negative number of attributes")); *nattrs = 0; return 1; } *nattrs += attr_number; } lcmaps_log_debug(3, "%s: found %d generic attributes. \n", __func__, *nattrs); /* Allocating lcmaps_voms_generic_attr_t's */ *attr_list = (lcmaps_voms_generic_attr_t *) calloc ((size_t)(*nattrs), sizeof(lcmaps_voms_generic_attr_t)); if (*attr_list == NULL) { lcmaps_log(LOG_ERR, "%s: Error: Could not allocate more memory: %s\n", __func__, strerror(errno)); return 1; } /* Loop the Generic Attributes in VOMS and copy them to LCMAPS - We want to own that memory */ for (i = 0, k = 0; i < attrSrcNum; i++) { /* Select a VOMS source object */ handle = VOMS_GetAttributeSourceHandle(vo, i, vd, &errno_local); if (errno_local) { lcmaps_log(LOG_ERR, "%s Error: VOMS_GetAttributeSourceHandle, %s \n", __func__, retmsg[errno_local]); goto lcmaps_get_attributes_cleanup; } /* Loop the VOMS source object for its VOMS Generic Attributes */ for (j = 0; j < VOMS_GetAttributesNumber(vo, handle, vd, &errno_local); j++) { if (errno_local) { lcmaps_log(LOG_ERR, "%s Error: VOMS_GetAttributesNumber, %s \n", __func__, retmsg[errno_local]); goto lcmaps_get_attributes_cleanup; } /* VOMS_GetAttribute(vo, handle, j, &(tmp_list[k++]), vd, &errno_local); */ voms_ga.name=voms_ga.value=voms_ga.qualifier=NULL; VOMS_GetAttribute(vo, handle, j, &voms_ga, vd, &errno_local); if (errno_local) { lcmaps_log(LOG_ERR, "%s Error: VOMS_GetAttribute, %s \n", __func__, retmsg[errno_local]); goto lcmaps_get_attributes_cleanup; } /* Copying the VOMS Generic Attributes */ if (voms_ga.name) { (*attr_list)[k].name = strdup(voms_ga.name); } else { (*attr_list)[k].name = NULL; } if (voms_ga.value) { (*attr_list)[k].value = strdup(voms_ga.value); } else { (*attr_list)[k].value = NULL; } if (voms_ga.qualifier) { (*attr_list)[k].qualifier = strdup(voms_ga.qualifier); } else { (*attr_list)[k].qualifier = NULL; } k++; } } return 0; lcmaps_get_attributes_cleanup: for (i = 0; (i < *nattrs) && *attr_list; i++) { free((*attr_list)[i].name); free((*attr_list)[i].value); free((*attr_list)[i].qualifier); } free(*attr_list); *attr_list = NULL; *nattrs = 0; return 1; } /****************************************************************************** Function: lcmaps_x509_to_voms_fqans Description: Extract from X509 certificate chain (of types X509, STACK_OF(X509)) a list of VOMS fully qualified attribute names (FQANs) Parameters: px509_cred: pointer to a x509 credential px509_chain: pointer to a x509 chain pnfqan: the number of fqans found. If the proxy is empty (VERR_NOEXT), this will be set to zero. Not an immediate error ! Returns: A list of fqans or NULL ******************************************************************************/ char **lcmaps_x509_to_voms_fqans(X509 * px509_cred, STACK_OF(X509) * px509_chain, lcmaps_vomsdata_t ** lcmaps_vomsdata, int *pnfqan) { char *certdir = NULL; char *vomsdir = NULL; struct vomsdata *vd = NULL; struct voms **volist = NULL; struct voms *vo = NULL; lcmaps_vomsdata_t *tmp_lcmaps_vomsdata = NULL; lcmaps_voms_t *tmp_lcmaps_voms = NULL; lcmaps_fqan_unix_t *tmp_fqan = NULL; /* lcmaps_voms_generic_attr_t * attr_list = NULL; */ char **fqans_list = NULL; int fqan_count = 0; int errNo = 0; int k,j; int nattrs = 0; const char *template_hint = "LCMAPS will ignore the VOMS extensions in the mapping sequence"; unsigned int verify_flags; unsigned long code; char *voms_errbuf=NULL; time_t verify_time=0,verify_time_offset=0; #ifdef DEPRECATED_VOMS_VERSION_CHECK int vomsmajor = -1; int vomsminor = -1; int vomspatch = -1; #endif #ifdef DEPRECATED_VOMS_VERSION_CHECK vomsmajor = getMajorVersionNumber(); vomsminor = getMinorVersionNumber(); vomspatch = getPatchVersionNumber(); #endif /* VOMS dir through API takes presedence over environment */ /* CA dir through API takes presedence over environment */ set_vomsdir_certdir(&vomsdir, &certdir); if ((vd = VOMS_Init(vomsdir, certdir)) == NULL) { lcmaps_log(LOG_ERR, "%s(): failed to initialize voms data structure. Either the VOMSDIR directory (%s) or the CA certificate directory (%s) does not exist.\n", __func__, vomsdir, certdir); goto fail_lcmaps_x509_to_voms_fqans; } lcmaps_log_debug(5, "%s(): VOMS data structure initialized\n", __func__); /* Do we want to override the verification time ? */ switch (voms_verify_time_flags) { case 0: verify_time=voms_verify_time; break; case VERIFY_OFFSET_NOTBEFORE: verify_time_offset=asn1TimeToTimeT(X509_get_notBefore(px509_cred)); if (verify_time_offset<0) { lcmaps_log(LOG_ERR, "Could not get notBefore time from leaf proxy: %s\n", strerror(errno)); goto fail_lcmaps_x509_to_voms_fqans; } lcmaps_log(LOG_INFO, "Setting verification time relative to notBefore time of leaf proxy: %ld + %ld.\n", verify_time_offset, voms_verify_time); verify_time=verify_time_offset+voms_verify_time; break; case VERIFY_OFFSET_NOTAFTER: verify_time_offset=asn1TimeToTimeT(X509_get_notAfter(px509_cred)); if (verify_time_offset<0) { lcmaps_log(LOG_ERR, "Could not get notAfter time from leaf proxy: %s\n", strerror(errno)); goto fail_lcmaps_x509_to_voms_fqans; } lcmaps_log(LOG_INFO, "Setting verification time relative to notAfter time of leaf proxy: %ld + %ld.\n", verify_time_offset, voms_verify_time); verify_time=verify_time_offset+voms_verify_time; break; default: lcmaps_log(LOG_ERR,"Unknown flag specified: %d\n", voms_verify_time_flags); goto fail_lcmaps_x509_to_voms_fqans; } /* Now set the actual time */ if (verify_time>0) { lcmaps_log(LOG_DEBUG,"Setting verification time to %ld seconds\n", verify_time); VOMS_SetVerificationTime(verify_time, vd, &errNo); } else if (verify_time<0) { lcmaps_log(LOG_ERR,"Verify time is invalid.\n"); goto fail_lcmaps_x509_to_voms_fqans; } #ifdef GUMSOSG /* * OSG GUMS - without verification */ /* * Switching off the verification of the VOMS Attributes, just reading... */ /* Warning! Warning! Warning! - Disabling the VOMS Verification here */ /* VOMS_SetVerificationType(VERIFY_NONE, vd, &errNo); */ lcmaps_disable_voms_attributes_verification(); #endif /* Enables or disables part of the VOMS attribute verification */ if (lcmaps_is_set_to_verify_voms_attributes() == 0) { verify_flags=lcmaps_get_voms_attributes_verification(); /* Even though all flags are specified essentially as bitmasks and hence * better used unsigned, VOMS_SetVerificationType() wants an int, cast * it only here */ VOMS_SetVerificationType((int)verify_flags, vd, &errNo); if (verify_flags==VERIFY_NONE) lcmaps_log_debug (1, "%s(): VOMS attribute verification is fully disabled.\n", __func__); else lcmaps_log_debug (1, "%s(): VOMS attribute verification is partially disabled, " "Enabled set is: 0x%08x.\n", __func__, verify_flags); } /* Extract the VOMS attributes */ if (VOMS_Retrieve(px509_cred, px509_chain, RECURSE_CHAIN, vd, &errNo)) { volist = vd->data; tmp_lcmaps_vomsdata =(lcmaps_vomsdata_t *) calloc((size_t)1, sizeof(lcmaps_vomsdata_t)); for(k = 0, (vo = volist[k]); (vo = volist[k]); k++){ lcmaps_log_debug(3, "%s(): setting voms data for VO == %s\n", __func__, vo->voname); lcmaps_log_debug(3, "%s(): setting voms data for VO server == %s\n", __func__, vo->server); /* can cast k(+1) to size_t as k>=0 */ tmp_lcmaps_voms = (lcmaps_voms_t *) realloc(tmp_lcmaps_voms,sizeof(lcmaps_voms_t) * (size_t)(k+1)); tmp_lcmaps_voms[k].user_dn = strdup(vo->user); tmp_lcmaps_voms[k].user_ca = strdup(vo->userca); tmp_lcmaps_voms[k].voms_issuer_dn = strdup(vo->server); tmp_lcmaps_voms[k].voms_issuer_ca = strdup(vo->serverca); tmp_lcmaps_voms[k].uri = strdup(vo->uri); tmp_lcmaps_voms[k].date1 = strdup(vo->date1); tmp_lcmaps_voms[k].date2 = strdup(vo->date2); tmp_lcmaps_voms[k].voname = strdup(vo->voname); switch (vo->type) { case TYPE_NODATA: lcmaps_log_debug(2, "%s(): NO DATA TYPE \n", __func__); break; case TYPE_CUSTOM: lcmaps_log_debug(2, "%s(): CUSTOM TYPE, %s\n", __func__, vo->custom); break; case TYPE_STD: lcmaps_log_debug(2, "%s(): TYP_STD\n", __func__); if (vo->fqan) { for (j = 0, tmp_fqan = NULL; (vo->fqan)[j]; j++) { /* can cast j(+1) to size_t as j>=0 */ tmp_fqan = (lcmaps_fqan_unix_t *) realloc(tmp_fqan,sizeof(lcmaps_fqan_unix_t) * (size_t)(j+1)); tmp_fqan[j].fqan = strdup((vo->fqan)[j]); tmp_fqan[j].uid = (uid_t)-1; tmp_fqan[j].gid = (gid_t)-1; /* make a copy for the char** list of fqans */ if(fqans_list == NULL) { fqans_list = (char **) calloc((size_t)1,sizeof(char*)); *fqans_list = NULL; } if(*fqans_list == NULL) { *fqans_list = strdup((vo->fqan)[j]); } else { /* can cast fqan_count to size_t as it's >=0 */ fqans_list = (char **) realloc(fqans_list, sizeof(char *) * (size_t)(fqan_count + 1)); fqans_list[fqan_count] = strdup((vo->fqan)[j]); } fqan_count++; } tmp_lcmaps_voms[k].fqan_unix = tmp_fqan; tmp_lcmaps_voms[k].nfqan = j; } /* read generic voms attributes */ tmp_lcmaps_voms[k].attr_list = NULL; tmp_lcmaps_voms[k].nattr = 0; #ifdef DEPRECATED_VOMS_VERSION_CHECK /* * The extraction of the Generic Attributes from VOMS * can only be performed when the version of the used * API is > 1.7.0 */ if ( (vomsmajor >= 1) && (vomsminor >= 7) && (vomspatch >= 0) ) { if (lcmaps_get_voms_generic_attributes(vo, vd, &tmp_lcmaps_voms[k].attr_list, &nattrs) == 0) { lcmaps_log_debug(4, "%s(): extracted '%d' generic voms attributes \n", __func__, nattrs); tmp_lcmaps_voms[k].nattr = nattrs; } else { lcmaps_log_debug(3, "%s(): could not extract any generic voms attributes (failure?)\n", __func__); } } #else if (lcmaps_get_voms_generic_attributes(vo, vd, &tmp_lcmaps_voms[k].attr_list, &nattrs) == 0) { lcmaps_log_debug(4, "%s(): extracted '%d' generic voms attributes \n", __func__, nattrs); tmp_lcmaps_voms[k].nattr = nattrs; } else { lcmaps_log_debug(3, "%s(): could not extract any generic voms attributes (failure?)\n", __func__); } #endif break; default: lcmaps_log_debug(2, "%s(): WARNING - unknown vo->type\n", __func__); } tmp_lcmaps_vomsdata->voms = tmp_lcmaps_voms; tmp_lcmaps_vomsdata->nvoms = k+1; } /* while */ if (vd->workvo && tmp_lcmaps_vomsdata) { tmp_lcmaps_vomsdata->workvo = strdup(vd->workvo); } else { tmp_lcmaps_vomsdata->workvo = NULL; } if (vd->extra_data && tmp_lcmaps_vomsdata) { tmp_lcmaps_vomsdata->extra_data = strdup(vd->extra_data); } else { tmp_lcmaps_vomsdata->extra_data = NULL; } goto success_lcmaps_x509_to_voms_fqans; } else { /* Non voms proxies will fall into this error: handle separately */ if (errNo == VERR_NOEXT) { /* Non voms proxies go here: set the number of fqans to zero. Not an error */ lcmaps_log_debug(2, "%s(): Debug: VOMS extensions not present in the certificate chain.\n", __func__); goto fail_lcmaps_x509_to_voms_fqans; } /* Dump OpenSSL stack, even though we don't have the VOMS error strings, * this can give useful feedback as we can look them up in the VOMS * source */ while ( (code=ERR_get_error() ) ) lcmaps_log(LOG_NOTICE,"OpenSSL error stack: %s\n", ERR_error_string(code,NULL)); /* Dump VOMS log message */ voms_errbuf = VOMS_ErrorMessage(vd, errNo, NULL, 0); /* Now parse the rest */ if (errNo == VERR_IDCHECK) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS User data in extension different from the real ones: %s. This could mean that the owner's VOMS credentials got transplanted/stolen from another. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_TIME) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS extensions expired for at least one of the VOs: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_ORDER) { lcmaps_log(LOG_ERR, "%s(): Warning: The ordering of the VOMS groups, as required by the client, was not delivered by VOMS: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_NOSOCKET) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS Socket problem: %s. (an error that indicates an ABI change in VOMS). %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_NOIDENT) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS Cannot identify itself (certificate problem): %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_COMM) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS server problem: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_PARAM) { lcmaps_log(LOG_ERR, "%s(): Warning: Wrong parameters for VOMS: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_NOINIT) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS initialization error: %s. Please check the VOMS directory (default: /etc/grid-security/vomsdir/) %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_EXTRAINFO) { lcmaps_log(LOG_ERR, "%s(): Warning: VO name and URI missing making it an invalid VOMS extension: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_FORMAT) { lcmaps_log(LOG_ERR, "%s(): Warning: Wrong VOMS data format making it an invalid VOMS extension: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_NODATA) { lcmaps_log(LOG_ERR, "%s(): Warning: Empty VOMS extension making it an invalid VOMS extension: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_PARSE) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS parse error making it an invalid VOMS extension: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_DIR) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS directory error: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_SIGN) { lcmaps_log(LOG_ERR, "%s(): Warning: VOMS Signature error making it an unverifiable VOMS extension: %s. Hint: check the VOMS directory (default: /etc/grid-security/vomsdir/) and the .lsc files. Also you could fall back on using installed VOMS host certificates. If the problem persists, contact the user. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_SERVER) { lcmaps_log(LOG_ERR, "%s(): Warning: Unidentifiable VOMS server: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_MEM) { lcmaps_log(LOG_ERR, "%s(): Warning: Memory problems in VOMS_Retrieve(): %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_VERIFY) { lcmaps_log(LOG_ERR, "%s(): Warning: Generic verification error for VOMS: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else if (errNo == VERR_TYPE) { lcmaps_log(LOG_ERR, "%s(): Warning: Returned VOMS data of unknown type: %s. %s.\n", __func__, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } else { lcmaps_log(LOG_ERR, "%s(): VOMS_Retrieve() error: %d --> %s %s.\n", __func__, errNo, voms_errbuf, template_hint); goto fail_lcmaps_x509_to_voms_fqans; } } success_lcmaps_x509_to_voms_fqans: free(vomsdir); free(certdir); lcmaps_log_debug(3, "%s(): Success, VOMS destroy\n", __func__); if (vd) VOMS_Destroy(vd); print_lcmaps_vomsdata(tmp_lcmaps_vomsdata); *lcmaps_vomsdata = tmp_lcmaps_vomsdata; *pnfqan = fqan_count; return fqans_list; fail_lcmaps_x509_to_voms_fqans: free(vomsdir); free(certdir); free(voms_errbuf); lcmaps_log_debug(3, "%s(): Failure, VOMS destroy\n", __func__); VOMS_Destroy(vd); *pnfqan = fqan_count; /* NOTE: invalid FQAN found only if this is != 0 */ return NULL; } static void set_vomsdir_certdir(char **vomsdir, char **certdir) { const char *tmp; /* Retrieve the vomsdir and certdir */ if ( (tmp=getenv("LCMAPS_X509_VOMS_DIR"))==NULL ) { if ( (tmp=getenv("X509_VOMS_DIR"))==NULL ) tmp=DEFAULT_VOMS_DIR; } *vomsdir=strdup(tmp); if ( (tmp=getenv("LCMAPS_X509_CERT_DIR"))==NULL ) { if ( (tmp=getenv("X509_CERT_DIR"))==NULL ) tmp=DEFAULT_CERT_DIR; } *certdir=strdup(tmp); } /****************************************************************************** Function: print_lcmaps_vomsdata Description: print the lcmaps_vomsdata structure Parameters: lcmaps_vomsdata_t * lcmaps_vomsdata Returns: void ******************************************************************************/ static void print_lcmaps_vomsdata(lcmaps_vomsdata_t * lcmaps_vomsdata) { const char *logstr = " print_lcmaps_vomsdata()"; int i = 0; int j = 0; if (lcmaps_vomsdata) { for (i = 0; i < lcmaps_vomsdata->nvoms; i++) { lcmaps_log_debug(3, "%s(): lcmaps_vomsdata->voms[ %d / %d ]\n", __func__, i + 1, lcmaps_vomsdata->nvoms); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].user_dn : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].user_dn); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].user_ca : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].user_ca); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].voms_issuer_dn : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].voms_issuer_dn); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].voms_issuer_ca : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].voms_issuer_ca); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].uri : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].uri); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].date1 : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].date1); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].date2 : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].date2); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].voname : %s\n", logstr, i + 1, lcmaps_vomsdata->voms[i].voname); for (j = 0; j < lcmaps_vomsdata->voms[i].nfqan; j++) { lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].fqan_unix[ %d / %d ]\n", logstr, i + 1, j + 1, lcmaps_vomsdata->voms[i].nfqan); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].fqan_unix[%d].fqan : %s\n", logstr, i + 1, j + 1, lcmaps_vomsdata->voms[i].fqan_unix[j].fqan); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].fqan_unix[%d].uid : %d\n", logstr, i + 1, j + 1, lcmaps_vomsdata->voms[i].fqan_unix[j].uid); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].fqan_unix[%d].gid : %d\n", logstr, i + 1, j + 1, lcmaps_vomsdata->voms[i].fqan_unix[j].gid); } for(j=0; j < lcmaps_vomsdata->voms[i].nattr; j++){ lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].attr_list[%d].name : %s\n", logstr, i+1, j+1, lcmaps_vomsdata->voms[i].attr_list[j].name ? lcmaps_vomsdata->voms[i].attr_list[j].name : "(n/a)"); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].attr_list[%d].value : %s\n", logstr, i+1, j+1, lcmaps_vomsdata->voms[i].attr_list[j].value ? lcmaps_vomsdata->voms[i].attr_list[j].value : "(n/a)"); lcmaps_log_debug(3, "%s: lcmaps_vomsdata->voms[%d].attr_list[%d].qualifier : %s\n", logstr, i+1, j+1, lcmaps_vomsdata->voms[i].attr_list[j].qualifier ? lcmaps_vomsdata->voms[i].attr_list[j].qualifier : "(n/a)"); } } if(lcmaps_vomsdata->workvo) lcmaps_log_debug(3, "%s: lcmaps_vomsdata->workvo : %s\n", logstr, lcmaps_vomsdata->workvo); if(lcmaps_vomsdata->extra_data) lcmaps_log_debug(3, "%s: lcmaps_vomsdata->extra_data : %s\n", logstr, lcmaps_vomsdata->extra_data); } else { lcmaps_log_debug(3, "%s(): No LCMAPS vomsdata found\n", __func__); } } /****************************************************************************** Function: asn1TimeToTimeT Description: Converts the asn1time to a time_t Parameters: asn1time: ASN1_TIME to convert Returns: time_t corresponding to the given ASN1_TIME or -1 on error ******************************************************************************/ static time_t asn1TimeToTimeT(ASN1_TIME* asn1time) { ASN1_GENERALIZEDTIME *asn1time_generalized=NULL; char *asn1time_string=NULL, *tz; char zone; struct tm time_tm; int year; time_t mytime; /* Convert to ASN1_GENERALIZEDTIME, which has a 4 digit year */ asn1time_generalized=ASN1_TIME_to_generalizedtime(asn1time, NULL); if (asn1time_generalized==NULL) { /* error */ errno=EINVAL; return -1; } /* Convert to a char * */ asn1time_string=(char*)ASN1_STRING_data(asn1time_generalized); /* Make sure to start with an empty struct */ memset(&time_tm,0,sizeof(struct tm)); if (strlen(asn1time_string)!=15) { /* dont understand */ errno=EINVAL; return -1; } if ((sscanf(asn1time_string, "%04d%02d%02d%02d%02d%02d%c", &year, &(time_tm.tm_mon), &(time_tm.tm_mday), &(time_tm.tm_hour), &(time_tm.tm_min), &(time_tm.tm_sec), &zone) != 7) || (zone != 'Z')) { /* dont understand */ errno=EINVAL; return -1; } /* time format fixups: tm_year is years since 1900 */ time_tm.tm_year=year-1900; /* month should be 0-11 */ --(time_tm.tm_mon); /* Convert to time_t: make sure TZ is undefined */ tz = getenv("TZ"); setenv("TZ", "", 1); tzset(); mytime = mktime(&time_tm); if (tz) setenv("TZ", tz, 1); else unsetenv("TZ"); tzset(); return mytime; } /****************************************************************************** Function: lcmaps_print_stack_of_x509_to_string Description: Extract from X509 certificate chain (STACK_OF(X509)) and write the output to a file. Simulair to `openssl x509 -in -text -noout Note: only for debugging purposes Parameters: px509_chain: pointer to a x509 chain Returns: void ******************************************************************************/ void lcmaps_print_stack_of_x509_to_string(STACK_OF(X509) * px509_chain, char *output_file) { if (px509_chain) { STACK_OF(X509) * dupChain = NULL; X509 *cert = NULL; /* dupChain = (STACK_OF(type) *) sk_X509_dup(px509_chain);*/ dupChain = sk_X509_dup(px509_chain); lcmaps_log_debug(1, "%s()\n", __func__); while ((cert = sk_X509_pop(dupChain))) { lcmaps_print_x509_to_string(cert, output_file); } if (dupChain) sk_X509_free(dupChain); } else { lcmaps_log_debug(1, "%s(): no input X509 chain!\n", __func__); } } /****************************************************************************** Function: lcmaps_print_x509_to_string Description: Extract from X509 certificate and write the output to a file. Simulair to `openssl x509 -in -text -noout Note: only for debugging purposes Parameters: px509: pointer to a x509 cert Returns: void ******************************************************************************/ void lcmaps_print_x509_to_string(X509 * px509, char *output_file) { if (px509) { FILE *tmpFile = NULL; lcmaps_log_debug(1, "%s()\n", __func__); tmpFile = fopen(output_file, "a"); X509_print_fp(tmpFile, px509); fclose(tmpFile); } else { lcmaps_log_debug(1, "%s(): no input X509 cert!\n", __func__); } } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c,v $ $Date: 2015-01-13 12:28:19 +0100 (Tue, 13 Jan 2015) $ $Revision: 18158 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h0000644001726200004540000001034012471136644025240 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_voms_attributes.h \brief This file contains the headers for the functions to retrieve VOMS attributes (fqans) from gsi credentials/contexts (at the gssapi level) \author Martijn Steenbakkers for EGEE This file contains the headers for the functions to retrieve VOMS attributes (fqans) from gsi credentials/contexts (at the gssapi level) The following functions are defined: -# lcmaps_gss_cred_to_voms_fqans() */ #ifndef _LCMAPS_VOMS_ATTRIBUTES_H #define _LCMAPS_VOMS_ATTRIBUTES_H /****************************************************************************** Include header files ******************************************************************************/ #include #include "lcmaps_types.h" /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_gss_cred_to_voms_fqans Description: Extract from a gsi credential (of type gss_cred_id_t) a list of VOMS fully qualified attribute names (FQANs) Parameters: gss_credential: gsi credential (of type gss_cred_id_t) pnfqan: the number of fqans found. If the proxy is empty (VERR_NOEXT), this will be set to zero. Not an immediate error ! Returns: A list of fqans or NULL ******************************************************************************/ char ** lcmaps_gss_cred_to_voms_fqans( gss_cred_id_t gss_credential, lcmaps_vomsdata_t ** lcmaps_vomsdata, int * pnfqan ); /****************************************************************************** Function: lcmaps_x509_to_voms_fqans Description: Extract from X509 certificate chain (of types X509, STACK_OF(X509)) a list of VOMS fully qualified attribute names (FQANs) Parameters: px509_cred: pointer to a x509 credential px509_chain: pointer to a x509 chain pnfqan: the number of fqans found. If the proxy is empty (VERR_NOEXT), this will be set to zero. Not an immediate error ! Returns: A list of fqans or NULL ******************************************************************************/ char ** lcmaps_x509_to_voms_fqans( X509 * px509_cred, STACK_OF(X509) * px509_chain, lcmaps_vomsdata_t ** lcmaps_vomsdata, int * pnfqan ); #endif /* _LCMAPS_VOMS_ATTRIBUTES_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h,v $ $Date: 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) $ $Revision: 17647 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h0000644001726200004540000000656312471136644025211 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! * This file defines globus structures needed to obtain a gss_cred_id_t from a * gss_ctx_id_t and a STACKOF X509 from a gss_cred_id_t. These extraction * functions are defined in _lcmaps_gsi_utils.h and should be provided by * globus. * Globus should NOT change the internal structures or we're in trouble... */ #ifndef _LCMAPS_GLOBUS_INTERNAL_H #define _LCMAPS_GLOBUS_INTERNAL_H #include #include #include typedef struct lcmaps_gss_cred_id_desc_struct { globus_gsi_cred_handle_t cred_handle; gss_name_t globusid; gss_cred_usage_t cred_usage; SSL_CTX * ssl_context; } lcmaps_gss_cred_id_desc; typedef enum { GSS_DELEGATION_START, GSS_DELEGATION_DONE, GSS_DELEGATION_COMPLETE_CRED, GSS_DELEGATION_SIGN_CERT } lcmaps_gss_delegation_state_t; typedef enum { GSS_CON_ST_HANDSHAKE = 0, GSS_CON_ST_FLAGS, GSS_CON_ST_REQ, GSS_CON_ST_CERT, GSS_CON_ST_DONE } lcmaps_gss_con_st_t; typedef struct lcmaps_gss_ctx_id_desc_struct{ globus_mutex_t mutex; globus_gsi_callback_data_t callback_data; gss_cred_id_t peer_cred_handle; gss_cred_id_t cred_handle; gss_cred_id_t deleg_cred_handle; globus_gsi_proxy_handle_t proxy_handle; OM_uint32 ret_flags; OM_uint32 req_flags; OM_uint32 ctx_flags; int cred_obtained; SSL * gss_ssl; BIO * gss_rbio; BIO * gss_wbio; BIO * gss_sslbio; lcmaps_gss_con_st_t gss_state; int locally_initiated; lcmaps_gss_delegation_state_t delegation_state; gss_OID_set extension_oids; } lcmaps_gss_ctx_id_desc; #endif /* _LCMAPS_GLOBUS_INTERNAL_H */ lcmaps-1.6.6/src/grid_credential_handling/lcmaps_credential.c0000644001726200004540000013205512471136644021336 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_credential.c \brief This files contains the methods to access a lcmaps credential \author Martijn Steenbakkers for EGEE This header contains the methods to access a lcmaps credential. The lcmaps credential is a generic container for all kinds of credentials: DN, GSI (gss_cred_id_t), security context (gss_ctx_id_t), or parsed voms attributes (FQANs) */ #define _XOPEN_SOURCE 500 /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include #include #ifdef LCMAPS_GSI_MODE # include # include # include "x509_handling/_lcmaps_x509_utils.h" # include "gsi_handling/_lcmaps_gsi_utils.h" # include "gsi_handling/_lcmaps_voms_attributes.h" #endif #include "_lcmaps_credential.h" /* LCMAPS includes */ #include "lcmaps_log.h" #include "lcmaps_account.h" #ifdef LCMAPS_GSI_MODE #if 0 #define TRUE 1 #define FALSE 0 #endif /****************************************************************************** Function: lcmaps_credential_store_gss_cred_id_t_and_sub_elements Description: Fill credential with gss_cred_id_t (internally gsi credential) and all the derivative credentials are extracted and stored too Parameters: gss_credential: gss credential (internally gsi credential) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: Succes LCMAPS_CRED_NO_GSS_CRED: The supplied credential is empty LCMAPS_CRED_NO_X509_CHAIN: No certificate chain to be extracted LCMAPS_CRED_NO_X509_CRED: No final certificate extracted LCMAPS_CRED_NO_DN: Failed to retrieve DN from gss_credential LCMAPS_CRED_NO_FQAN: failed to retrieve VOMS attributes, because the proxy does not contain them (VERR_NOEXT) LCMAPS_CRED_ERROR: error in retrieving VOMS attributes. LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_gss_cred_id_t_and_sub_elements( gss_cred_id_t user_cred, lcmaps_cred_id_t * plcmaps_credential ) { int retval = LCMAPS_CRED_SUCCESS; STACK_OF(X509) * certchain = NULL; X509 * cert = NULL; /* Only store the gss_cred_id_t */ retval = lcmaps_credential_store_gss_cred_id_t(user_cred, plcmaps_credential); if (retval != LCMAPS_CRED_SUCCESS) { return retval; } /* Retrieve a newly created X509 chain from gss credential (should be freed) */ if ((certchain = lcmaps_cred_to_x509_chain(user_cred))) { lcmaps_log_debug(LOG_DEBUG, "%s: found X509 chain inside gss credential\n", __func__); } else { lcmaps_log(LOG_ERR, "%s: could not convert the input GSS Credentials (a gss_cred_id_t object) to a certificate chain in a STACK_OF(X509) structure. (fatal error)\n", __func__); return LCMAPS_CRED_NO_GSS_CRED; } /* Retrieve a newly created X509 cert from gss credential (should be freed) */ if ((cert = lcmaps_cred_to_x509(user_cred))) { lcmaps_log_debug(LOG_DEBUG, "%s: found X509 certificate inside gss credential\n", __func__); } else { lcmaps_log(LOG_ERR, "%s: could not convert the input GSS Credentials (a gss_cred_id_t object) to a certificate in an X509 structure. (fatal error)\n", __func__); return LCMAPS_CRED_NO_GSS_CRED; } /* Insert the EEC or leaf/last delegation/proxy into the certificate stack * at the beginning of the stack effectively the beginning of the chain */ lcmaps_log(LOG_DEBUG, "%s: Pushing certificate for the final delegation into the chain...\n", __func__); sk_X509_insert(certchain, cert, 0); /* Store and extract credential derivatives from the X.509 based credentials */ retval |= lcmaps_credential_store_x509_and_sub_elements(cert, certchain, plcmaps_credential); /* NOTE: Adds cert NOT in the chain */ return retval; } /****************************************************************************** Function: lcmaps_credential_store_pem_string_and_sub_elements Description: Fill credential with PEM string and all the derivative credentials are extracted and stored too Parameters: gss_credential: gss credential (internally gsi credential) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: Succes LCMAPS_CRED_NO_X509_CHAIN: No certificate chain to be extracted LCMAPS_CRED_NO_X509_CRED: No final certificate extracted LCMAPS_CRED_NO_DN: Failed to retrieve DN from gss_credential LCMAPS_CRED_NO_FQAN: failed to retrieve VOMS attributes, because the proxy does not contain them (VERR_NOEXT) LCMAPS_CRED_ERROR: error in retrieving VOMS attributes. LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_pem_string_and_sub_elements( char * pem_string, lcmaps_cred_id_t * plcmaps_credential ) { int retval = LCMAPS_CRED_SUCCESS; STACK_OF(X509) * certchain = NULL; X509 * cert = NULL; #if 0 X509 * certPrime = NULL; #endif /* Store the PEM string */ retval = lcmaps_credential_store_pem_string(pem_string, plcmaps_credential); /* Convert from PEM to STACK_OF X.509 */ if (lcmaps_pem_string_to_x509_chain(&certchain, pem_string) != 0) { lcmaps_log(LOG_ERR, "%s: could not convert the input PEM string to a certificate chain in a STACK_OF(X509) structure. (fatal error)\n", __func__); return LCMAPS_CRED_NO_X509_CHAIN; } else { lcmaps_log_debug(LOG_DEBUG, "%s: found X509 chain inside PEM string\n", __func__); } /* Double check */ if (!certchain) { lcmaps_log(LOG_ERR, "%s: The lcmaps_pem_string_to_x509_chain() reported a positive result, but I don't have a chain... This is most unexpected.\n", __func__); return LCMAPS_CRED_NO_X509_CHAIN; } #if 0 /* Select the leaf certificate of the chain as the individual/last certificate */ certPrime = sk_X509_value(certchain, 0); if (!certPrime) { lcmaps_log(LOG_ERR, "%s: could not select an individual X509 structure. (fatal error).\n", __func__); return LCMAPS_CRED_NO_X509_CRED; } cert = X509_dup(certPrime); if (!cert) { lcmaps_log(LOG_ERR, "%s: could not duplicate an individual X509 structure. (fatal error).\n", __func__); return LCMAPS_CRED_NO_X509_CRED; } #endif cert=sk_X509_value(certchain, 0); if (!cert) { lcmaps_log(LOG_ERR, "%s: could not select an individual X509 structure. (fatal error).\n", __func__); return LCMAPS_CRED_NO_X509_CRED; } /* Store and extract credential derivatives from the X.509 based credentials */ retval |= lcmaps_credential_store_x509_and_sub_elements(cert, certchain, plcmaps_credential); /* NOTE: Adds cert also IN the CHAIN */ return retval; } /****************************************************************************** Function: lcmaps_credential_store_x509_and_sub_elements Description: Fill credential with a X.509 certificate and STACK_OF(X509) and all the derivative credentials are extracted and stored too Important note on our assumptions: We assume that the X509 *cert is a pointer to the first certificate in the stack, which means its effectivly the final certificate in the chain. This should typically be the EEC certificate or, using proxies, the final delegation in the chain. The calling function is responsible of providing a chain that has all the certificates in it, and optionally a pointer to the final certificate in the chain Parameters: X509 * final delegation or last certificate by convention STACK_OF(X509) * the certificate chain plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: Succes LCMAPS_CRED_NO_X509_CHAIN: No certificate chain to be extracted LCMAPS_CRED_NO_X509_CRED: No final certificate extracted LCMAPS_CRED_NO_DN: Failed to retrieve DN from gss_credential LCMAPS_CRED_NO_FQAN: failed to retrieve VOMS attributes, because the proxy does not contain them (VERR_NOEXT) LCMAPS_CRED_ERROR: error in retrieving VOMS attributes. LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_x509_and_sub_elements( X509 * cert, STACK_OF(X509) * certchain, lcmaps_cred_id_t * plcmaps_credential ) { int retval = LCMAPS_CRED_SUCCESS; char ** fqan_list = NULL; int nfqan = -1; lcmaps_vomsdata_t * lcmaps_vomsdata = NULL; char * subject_dn = NULL; char * issuer_dn = NULL; X509 * the_cert = NULL; /* Store the certificate chain credential */ if ((LCMAPS_CRED_NO_X509_CHAIN == lcmaps_credential_store_stack_of_x509(certchain, plcmaps_credential))) { lcmaps_log(LOG_ERR, "%s: could not store STACK_OF(X509)\n", __func__); return LCMAPS_CRED_NO_X509_CHAIN; } /* Supporting the case where there is a chain, but not an explicit * certificate. Defaulting on the final certificate in the chain (aka the * last delegation) */ if (cert == NULL && certchain != NULL) { the_cert = cgul_x509_select_final_cert_from_chain(certchain); } else { the_cert = cert; } /* Store the supplied certificate credential */ if ((LCMAPS_CRED_NO_X509_CRED == lcmaps_credential_store_x509(the_cert, plcmaps_credential))) { lcmaps_log(LOG_ERR, "%s: could not store STACK_OF(X509)\n", __func__); return LCMAPS_CRED_NO_X509_CRED; } /* Traverse the chain to find the EEC and allocate the space needed to store the entire Subject DN */ subject_dn = cgul_x509_chain_to_subject_dn(certchain); if (subject_dn == NULL) { /* Something is really wrong, this certificate doesn't have a Subject DN */ lcmaps_log(LOG_ERR, "%s: The EEC certificate in the certificate chain does not contain a Subject DN.\n", __func__); return LCMAPS_CRED_NO_DN; } /* Storing the Subject DN string */ if ((LCMAPS_CRED_NO_DN == lcmaps_credential_store_dn(subject_dn, plcmaps_credential))) { lcmaps_log(LOG_ERR, "%s: could not store Subject DN string\n", __func__); return LCMAPS_CRED_NO_DN; } /* Can free the subject_dn as it's dupped into the plcmaps_credential */ free(subject_dn); /* Traverse the chain to find the EEC and allocate the space needed to store the entire Issuer DN */ /* This information is not stored, but it's only used as a test to check if the EEC is properly created */ issuer_dn = cgul_x509_chain_to_issuer_dn(certchain); if (issuer_dn == NULL) { /* Something is really wrong, this certificate doesn't have a Subject DN */ lcmaps_log(LOG_ERR, "%s: The EEC certificate in the certificate chain does not contain an Issuer DN.\n", __func__); return LCMAPS_CRED_NO_DN; } /* Liberating memory - not stored */ free(issuer_dn); /* Get FQANs */ fqan_list = lcmaps_x509_to_voms_fqans(the_cert, certchain, &lcmaps_vomsdata, &nfqan); if (fqan_list == NULL) { if (nfqan == 0) { lcmaps_log(LOG_INFO, "%s: No VOMS FQANs found in X509 credentials\n", __func__); retval |= LCMAPS_CRED_NO_FQAN; plcmaps_credential->voms_data_list = NULL; } else { lcmaps_log(LOG_WARNING, "%s: Error retrieving VOMS attributes\n", __func__); return LCMAPS_CRED_ERROR; } } else { /* Store the FQAN list */ if ((retval |= lcmaps_credential_store_fqan_list(nfqan, fqan_list, plcmaps_credential)) != LCMAPS_CRED_SUCCESS) { lcmaps_clean_list_of_strings(nfqan, fqan_list); } else { lcmaps_clean_list_of_strings(nfqan, fqan_list); } /* Adding the LCMAPS voms data structure to the LCMAPS crednetials */ /* TODO */ if (lcmaps_vomsdata) { lcmaps_log_debug(3, "%s: Found LCMAPS vomsdata structure, adding it to the lcmaps_credentials.\n", __func__); plcmaps_credential->voms_data_list = lcmaps_vomsdata; } else { lcmaps_log_debug(3, "%s: Did not find LCMAPS a VOMS data structure in the certificate chain.\n", __func__); } } /* End Get FQANs */ return retval; } /****************************************************************************** Function: lcmaps_credential_store_gss_cred_id_t() Description: Fill credential with gss_cred_id_t (internally gsi credential) If the lcmaps credential does not yet contain the DN, try to retrieve it from the gss credential. If the lcmaps credential does not yet contain VOMS attributes, try to retrieve them from the gss credential. Parameters: gss_credential: gss credential (internally gsi credential) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_NO_GSS_CRED: The supplied credential is empty LCMAPS_CRED_NO_DN: failed to retrieve DN from gss_credential LCMAPS_CRED_NO_FQAN: failed to retrieve VOMS attributes, because the proxy does not contain them (VERR_NOEXT) LCMAPS_CRED_ERROR: error in retrieving VOMS attributes. LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_gss_cred_id_t( gss_cred_id_t gss_credential, lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) { return LCMAPS_CRED_INVOCATION_ERROR; } /* Check if the gss credential is empty */ if (gss_credential == GSS_C_NO_CREDENTIAL) return LCMAPS_CRED_NO_GSS_CRED; /* Fill credential, only if not filled before */ if (plcmaps_credential->cred == GSS_C_NO_CREDENTIAL) plcmaps_credential->cred = gss_credential; return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_get_gss_cred_id_t() Description: returns gss credential (internally gsi credential) Parameters: lcmaps_credential: lcmaps_credential Returns: gss credential ******************************************************************************/ gss_cred_id_t lcmaps_credential_get_gss_cred_id_t( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.cred); } /****************************************************************************** Function: lcmaps_credential_store_gss_ctx_id_t() Description: Fill credential with gss_ctx_id_t (gss security context) Parameters: gss_context: gss security context plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_credential_store_gss_ctx_id_t( gss_ctx_id_t gss_context, lcmaps_cred_id_t * plcmaps_credential ) { return LCMAPS_CRED_ERROR; } /****************************************************************************** Function: lcmaps_credential_get_gss_ctx_id_t() Description: returns gss security context Parameters: lcmaps_credential: lcmaps_credential Returns: gss security context ******************************************************************************/ gss_ctx_id_t lcmaps_credential_get_gss_ctx_id_t( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.context); } /****************************************************************************** Function: lcmaps_credential_store_pem_string() Description: Fill credential with PEM-encoded string, needs freeing! If the lcmaps credential does not yet contain the X509, try to retrieve it from the string Parameters: pem_string: PEM-encoded string plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_PEM_STRING: PEM-encoded string is empty LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist LCMAPS_CRED_ERROR: other error ******************************************************************************/ int lcmaps_credential_store_pem_string( char * pem_string, lcmaps_cred_id_t * plcmaps_credential ) { char *pem_tmp=NULL; if (plcmaps_credential == NULL) { return LCMAPS_CRED_INVOCATION_ERROR; } if (pem_string == NULL) return LCMAPS_CRED_NO_PEM_STRING; if ( (pem_tmp=strdup(pem_string))==NULL) return LCMAPS_CRED_ERROR; plcmaps_credential->pem_string = pem_tmp; return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_get_pem_string() Description: returns PEM-encoded string Parameters: lcmaps_credential: lcmaps_credential Returns: PEM-encoded string ******************************************************************************/ char * lcmaps_credential_get_pem_string( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.pem_string); } /****************************************************************************** Function: lcmaps_credential_store_stack_of_x509() Description: Fill credential with X.509 certificate information Parameters: px509_chain: x509 proxy chain plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_NO_X509_CHAIN: The supplied credential chain is empty LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_stack_of_x509( STACK_OF(X509) * px509_chain, lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) return LCMAPS_CRED_INVOCATION_ERROR; if (px509_chain == NULL) { return LCMAPS_CRED_NO_X509_CHAIN; } else { plcmaps_credential->px509_chain = px509_chain; return LCMAPS_CRED_SUCCESS; } } /****************************************************************************** Function: lcmaps_credential_store_x509() Description: Fill credential with X.509 certificate information Parameters: px509: x509 proxy certificate (final delegation) px509_chain: x509 proxy chain plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_NO_X509_CRED: The supplied credential is empty LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist LCMAPS_CRED_ERROR: other error ******************************************************************************/ int lcmaps_credential_store_x509( X509 * px509, lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) return LCMAPS_CRED_INVOCATION_ERROR; if (px509 == NULL) return LCMAPS_CRED_NO_X509_CRED; else { /* NOTE: the cert being stored here is the first of the chain and will * be freed as such. Hence DON'T dup it here */ plcmaps_credential->px509_cred = px509; return LCMAPS_CRED_SUCCESS; } } /****************************************************************************** Function: lcmaps_credential_get_x509_cred() Description: Return the X509 cert. Parameters: lcmaps_credential: lcmaps_credential Returns: the X509 cert. ******************************************************************************/ X509 * lcmaps_credential_get_x509_cred( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.px509_cred); } /****************************************************************************** Function: lcmaps_credential_get_x509_chain() Description: Return the X509 cert chain Parameters: lcmaps_credential: lcmaps_credential Returns: the X509 cert chain ******************************************************************************/ STACK_OF(X509) * lcmaps_credential_get_x509_chain( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.px509_chain); } #endif /* LCMAPS_GSI_MODE */ /****************************************************************************** Function: lcmaps_credential_store_dn() Description: Fill credential with dn Parameters: dn: distinguished name plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_DN: no DN to fill LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist LCMAPS_CRED_ERROR: other failure ******************************************************************************/ int lcmaps_credential_store_dn( char * dn, lcmaps_cred_id_t * plcmaps_credential ) { char *dn_tmp=NULL; if (plcmaps_credential == NULL) return LCMAPS_CRED_INVOCATION_ERROR; /* Check if the dn is empty */ if (dn == NULL) return LCMAPS_CRED_NO_DN; /* fill DN, only if not filled before from gss_cred or X509 */ if (plcmaps_credential->dn == NULL) { if ( (dn_tmp= strdup(dn)) == NULL) /* out of mem */ return LCMAPS_CRED_ERROR; plcmaps_credential->dn = dn_tmp; } return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_get_dn() Description: returns user dn Parameters: lcmaps_credential: lcmaps_credential Returns: user dn ******************************************************************************/ char * lcmaps_credential_get_dn( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.dn); } /****************************************************************************** Function: lcmaps_credential_store_fqan_list() Description: Fill credential with list of FQANs Parameters: nfqan: number of elements of the FQAN list fqan_list: FQAN list (list of strings) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_FQAN: supplied fqan list is empty LCMAPS_CRED_ERROR: failure, because of a malloc error or a malformed fqan list LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_lcmaps_vomsdata ( lcmaps_vomsdata_t * lcmaps_vomsdata, lcmaps_cred_id_t * plcmaps_credential ) { int i = 0; int j = 0; /* int nvoms = 0; */ if (plcmaps_credential == NULL) { lcmaps_log_debug(1,"lcmaps_credential_store_lcmaps_vomsdata(): Create lcmaps_cred_id_t first!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } /* Check if the voms_data_list is empty */ if (lcmaps_vomsdata == NULL) { lcmaps_log_debug(1,"lcmaps_credential_store_lcmaps_vomsdata(): Create lcmaps_vomsdata_t!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } /* Check if the nvoms itself is >0 */ if (lcmaps_vomsdata->nvoms <= 0) { lcmaps_log_debug(1,"lcmaps_credential_store_lcmaps_vomsdata(): nvoms <= 0!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } if (plcmaps_credential->voms_data_list == NULL) { plcmaps_credential->voms_data_list = (lcmaps_vomsdata_t *) malloc (sizeof (lcmaps_vomsdata_t)); /* lcmaps_vomsdata->nvoms >0 by now */ plcmaps_credential->voms_data_list->voms = (lcmaps_voms_t *) malloc (sizeof (lcmaps_voms_t) * (size_t)(lcmaps_vomsdata->nvoms)); for (i = 0; i < lcmaps_vomsdata->nvoms; i++) { plcmaps_credential->voms_data_list->nvoms = lcmaps_vomsdata->nvoms; plcmaps_credential->voms_data_list->voms[i].user_dn = strdup(lcmaps_vomsdata->voms[i].user_dn); plcmaps_credential->voms_data_list->voms[i].user_ca = strdup(lcmaps_vomsdata->voms[i].user_ca); plcmaps_credential->voms_data_list->voms[i].voms_issuer_dn = strdup(lcmaps_vomsdata->voms[i].voms_issuer_dn); plcmaps_credential->voms_data_list->voms[i].voms_issuer_ca = strdup(lcmaps_vomsdata->voms[i].voms_issuer_ca); plcmaps_credential->voms_data_list->voms[i].uri = strdup(lcmaps_vomsdata->voms[i].uri); plcmaps_credential->voms_data_list->voms[i].date1 = strdup(lcmaps_vomsdata->voms[i].date1); plcmaps_credential->voms_data_list->voms[i].date2 = strdup(lcmaps_vomsdata->voms[i].date2); plcmaps_credential->voms_data_list->voms[i].voname = strdup(lcmaps_vomsdata->voms[i].voname); plcmaps_credential->voms_data_list->voms[i].nfqan = lcmaps_vomsdata->voms[i].nfqan; if (lcmaps_vomsdata->voms[i].nfqan > 0) { plcmaps_credential->voms_data_list->voms[i].fqan_unix = (lcmaps_fqan_unix_t *) malloc (sizeof(lcmaps_fqan_unix_t) * (size_t)(lcmaps_vomsdata->voms[i].nfqan)); for (j = 0; j < lcmaps_vomsdata->voms[i].nfqan; j++) { plcmaps_credential->voms_data_list->voms[i].fqan_unix[j].fqan = strdup(lcmaps_vomsdata->voms[i].fqan_unix[j].fqan); plcmaps_credential->voms_data_list->voms[i].fqan_unix[j].uid = lcmaps_vomsdata->voms[i].fqan_unix[j].uid; plcmaps_credential->voms_data_list->voms[i].fqan_unix[j].gid = lcmaps_vomsdata->voms[i].fqan_unix[j].gid; } } else plcmaps_credential->voms_data_list->voms[i].fqan_unix = NULL; plcmaps_credential->voms_data_list->voms[i].nattr = lcmaps_vomsdata->voms[i].nattr; if (lcmaps_vomsdata->voms[i].nattr > 0) { plcmaps_credential->voms_data_list->voms[i].attr_list = (lcmaps_voms_generic_attr_t *) calloc((size_t)(lcmaps_vomsdata->voms[i].nattr),sizeof(lcmaps_voms_generic_attr_t)); lcmaps_log_debug (3, "-- total # of generic attributes in VO: (%d) \n", plcmaps_credential->voms_data_list->voms[i].nattr); for(j = 0; j < plcmaps_credential->voms_data_list->voms[i].nattr; j++){ plcmaps_credential->voms_data_list->voms[i].attr_list[j].name = strdup(lcmaps_vomsdata->voms[i].attr_list[j].name); plcmaps_credential->voms_data_list->voms[i].attr_list[j].value = strdup(lcmaps_vomsdata->voms[i].attr_list[j].value); plcmaps_credential->voms_data_list->voms[i].attr_list[j].qualifier = strdup(lcmaps_vomsdata->voms[i].attr_list[j].qualifier); } } else plcmaps_credential->voms_data_list->voms[i].attr_list = NULL; plcmaps_credential->voms_data_list->workvo = strdup(lcmaps_vomsdata->workvo); plcmaps_credential->voms_data_list->extra_data = strdup(lcmaps_vomsdata->extra_data); } } return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_store_fqan_list() Description: Fill credential with list of FQANs Parameters: nfqan: number of elements of the FQAN list fqan_list: FQAN list (list of strings) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_FQAN: supplied fqan list is empty LCMAPS_CRED_ERROR: failure, because of a malloc error or a malformed fqan list LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_fqan_list( int nfqan, char ** fqan_list, lcmaps_cred_id_t * plcmaps_credential ) { int i = 0; char * fqan = NULL; int retval = LCMAPS_CRED_SUCCESS; if (plcmaps_credential == NULL) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_fqan_list(): Create lcmaps_cred_id_t first!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } /* Check if the fqan list is empty */ if ((fqan_list == NULL) || (nfqan < 1)) return LCMAPS_CRED_NO_FQAN; /* Check if a FQAN list exists already. If so, return happily */ if (plcmaps_credential->fqan == NULL) { plcmaps_credential->nfqan = nfqan; /* nfqan >= 1 */ plcmaps_credential->fqan = (char **) malloc((size_t)nfqan * sizeof(char *)); if (plcmaps_credential->fqan == NULL) /* malloc error */ { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_fqan_list(): Malloc error!\n"); return LCMAPS_CRED_ERROR; } for (i = 0; i < nfqan; i++) { if ((fqan = fqan_list[i]) != NULL) { if ( ((plcmaps_credential->fqan)[i] = strdup(fqan)) == NULL) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_fqan_list(): Malloc error!\n"); return LCMAPS_CRED_ERROR; } } else { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_fqan_list(): malformed fqan list\n"); return LCMAPS_CRED_ERROR; } } } return retval; } /****************************************************************************** Function: lcmaps_credential_get_fqan_list() Description: returns the list of FQANs and number of elements Parameters: pnfqan: pointer to the number of FQANs in the list lcmaps_credential: lcmaps_credential Returns: list of FQANs ******************************************************************************/ char ** lcmaps_credential_get_fqan_list( int * pnfqan, lcmaps_cred_id_t lcmaps_credential ) { *pnfqan = lcmaps_credential.nfqan; return (lcmaps_credential.fqan); } /****************************************************************************** Function: lcmaps_credential_store_mapcounter() Description: stores mapcounter Parameters: mapcounter: the mapping counter plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_mapcounter( int mapcounter, lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_mapcounter(): Create lcmaps_cred_id_t first!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } plcmaps_credential->mapcounter = mapcounter; return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_get_mapcounter() Description: returns mapcounter Parameters: lcmaps_credential: lcmaps_credential Returns: mapcounter ******************************************************************************/ int lcmaps_credential_get_mapcounter( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.mapcounter); } /****************************************************************************** Function: lcmaps_credential_store_requested_account() Description: stores the requested account (the account that should be verified) in an lcmaps_account_info_t structure. Parameters: puid: pointer to the uid of the local account ppgid_list: pointer to the list of primary gids pnpgid: pointer to the number of primary gids found psgid_list: pointer to the list of secondary gids pnsgid: pointer to the number of secondary gids found ppoolindex: pointer to the pool index plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure, because error filling lcmaps_account_info_t LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_requested_account( uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** ppoolindex, lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_requested_account(): Create lcmaps_cred_id_t first!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } if (lcmaps_account_info_fill( puid, ppgid_list, pnpgid, psgid_list, pnsgid, ppoolindex, &(plcmaps_credential->requested_account)) ) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_store_requested_account(): Error storing requested account info\n"); return LCMAPS_CRED_ERROR; } return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_get_requested_account() Description: returns requested account in lcmaps_account_info_t format Parameters: lcmaps_credential: lcmaps_credential Returns: requested account ******************************************************************************/ lcmaps_account_info_t lcmaps_credential_get_requested_account( lcmaps_cred_id_t lcmaps_credential ) { return (lcmaps_credential.requested_account); } /****************************************************************************** Function: lcmaps_clean_list_of_strings() Description: clean list of strings Parameters: listlen: number of elements in the list of strings string_list: list of strings Returns: LCMAPS_CRED_SUCCESS ******************************************************************************/ int lcmaps_clean_list_of_strings( int listlen, char ** string_list ) { int i = 0; if (listlen > 0) { for (i = 0; i < listlen; i++) { if (string_list[i] != NULL) { free(string_list[i]); string_list[i]=NULL; } } } /* this removes the whole array of char* */ if (string_list != NULL) { free(string_list); string_list=NULL; } return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_credential_init() Description: initialize the lcmaps_cred_id_t: set the member values to the default values Parameters: plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failed to set the member values LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_init( lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) { lcmaps_log_debug(1,"lcmaps.mod-lcmaps_credential_init(): Create lcmaps_cred_id_t first!\n"); return LCMAPS_CRED_INVOCATION_ERROR; } #ifdef LCMAPS_GSI_MODE plcmaps_credential->cred = GSS_C_NO_CREDENTIAL; plcmaps_credential->context = GSS_C_NO_CONTEXT; /* It's in the planning to move this to the gsi-free */ /* area, once we use the globus-free voms parser (openssl based) */ plcmaps_credential->pem_string = (char *) NULL; plcmaps_credential->px509_cred = (X509 *) NULL; plcmaps_credential->px509_chain = (STACK_OF(X509) *) NULL; #endif plcmaps_credential->dn = (char *) NULL; plcmaps_credential->fqan = (char **) NULL; plcmaps_credential->nfqan = -1; plcmaps_credential->mapcounter = -1; if ( lcmaps_account_info_init(&(plcmaps_credential->requested_account)) ) { lcmaps_log_debug(1, "lcmaps.mod-lcmaps_credential_init(): Error initializing \"requested account\"-info\n"); return LCMAPS_CRED_ERROR; } return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_clean_vomsdata() Description: release vomsdata Parameters: vomsdata: pointer to lcmaps_vomsdata_t Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_clean_vomsdata(lcmaps_vomsdata_t * vomsdata){ int i,j; lcmaps_voms_t * ac_voms; if(vomsdata == NULL) return LCMAPS_CRED_SUCCESS; if(vomsdata->workvo) free(vomsdata->workvo); if(vomsdata->extra_data) free(vomsdata->extra_data); for (i = 0; i < vomsdata->nvoms; i++){ ac_voms = (vomsdata->voms)+i; free(ac_voms->user_dn); ac_voms->user_dn=NULL; free(ac_voms->user_ca); ac_voms->user_ca=NULL; free(ac_voms->voms_issuer_dn); ac_voms->voms_issuer_dn=NULL; free(ac_voms->voms_issuer_ca); ac_voms->voms_issuer_ca=NULL; free(ac_voms->uri); ac_voms->uri=NULL; free(ac_voms->date1); ac_voms->date1=NULL; free(ac_voms->date2); ac_voms->date2=NULL; free(ac_voms->voname); ac_voms->voname=NULL; for (j = 0; j < ac_voms->nfqan; j++) { free(ac_voms->fqan_unix[j].fqan); ac_voms->fqan_unix[j].fqan=NULL; } free(ac_voms->fqan_unix); ac_voms->fqan_unix=NULL; for (j = 0; (j < ac_voms->nattr) && (ac_voms->attr_list); j++) { free(ac_voms->attr_list[j].name); ac_voms->attr_list[j].name=NULL; free(ac_voms->attr_list[j].value); ac_voms->attr_list[j].value=NULL; free(ac_voms->attr_list[j].qualifier); ac_voms->attr_list[j].qualifier=NULL; } free(ac_voms->attr_list); ac_voms->attr_list=NULL; /* XXX the attr_list members are declared const, so they cannot be free()'d */ /*for(j=0; j < ac_voms->nattr; j++){ free(ac_voms->attr_list[j].name); free(ac_voms->attr_list[j].value); free(ac_voms->attr_list[j].qualifier); }*/ /* the following free is invalid, since you can free block compartimentalized when allocated as one chunk */ /* free(ac_voms); */ } free(vomsdata->voms); vomsdata->voms=NULL; free(vomsdata); vomsdata=NULL; return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_release_cred() Description: release lcmaps credential Parameters: plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_release_cred( lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) return LCMAPS_CRED_SUCCESS; free(plcmaps_credential->dn); lcmaps_clean_list_of_strings(plcmaps_credential->nfqan, plcmaps_credential->fqan); lcmaps_account_info_clean(&(plcmaps_credential->requested_account)); lcmaps_clean_vomsdata(plcmaps_credential->voms_data_list); #ifdef LCMAPS_GSI_MODE free(plcmaps_credential->pem_string); /* The px509_cred is since 25 januari a reference into the first element of the px509_chain * if (plcmaps_credential->px509_cred) X509_free(plcmaps_credential->px509_cred); */ if (plcmaps_credential->px509_chain) lcmaps_x509_free_chain(&(plcmaps_credential->px509_chain)); #endif return LCMAPS_CRED_SUCCESS; } /****************************************************************************** Function: lcmaps_release_cred_leave_STACK_OF_X509() Description: release lcmaps credential Parameters: plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_release_cred_leave_STACK_OF_X509( lcmaps_cred_id_t * plcmaps_credential ) { if (plcmaps_credential == NULL) return LCMAPS_CRED_SUCCESS; if (plcmaps_credential->dn != NULL) free(plcmaps_credential->dn); lcmaps_clean_list_of_strings(plcmaps_credential->nfqan, plcmaps_credential->fqan); lcmaps_account_info_clean(&(plcmaps_credential->requested_account)); lcmaps_clean_vomsdata(plcmaps_credential->voms_data_list); #ifdef LCMAPS_GSI_MODE /* The px509_cred is since 25 januari a reference into the first element of the px509_chain * if (plcmaps_credential->px509_cred) X509_free(plcmaps_credential->px509_cred); */ #if 0 if (plcmaps_credential->px509_chain) lcmaps_x509_free_chain(&(plcmaps_credential->px509_chain)); #endif #endif return LCMAPS_CRED_SUCCESS; } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/lcmaps_credential.c,v $ $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ $Revision: 18216 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/grid_credential_handling/_lcmaps_credential.h0000644001726200004540000005355412471136644021510 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file _lcmaps_credential.h \brief This header contains the methods to access a lcmaps credential \author Martijn Steenbakkers for EGEE This header contains the methods to access a lcmaps credential. The lcmaps credential is a generic container for all kinds of credentials: DN, GSI (gss_cred_id_t), security context (gss_ctx_id_t), or parsed voms attributes (FQANs) -# lcmaps_credential_store_dn(): -# lcmaps_credential_store_gss_cred_id_t(): -# lcmaps_credential_store_gss_ctx_id_t(): -# lcmaps_credential_store_pem_string(): -# lcmaps_credential_store_x509(): -# lcmaps_credential_store_fqan_list(): -# lcmaps_credential_get_dn(): -# lcmaps_credential_get_gss_cred_id_t(): -# lcmaps_credential_get_gss_ctx_id_t(): -# lcmaps_credential_get_pem_string(): -# lcmaps_credential_get_x509(): -# lcmaps_credential_get_fqan_list(): -# lcmaps_credential_release(): */ #ifndef _LCMAPS_CREDENTIAL_H #define _LCMAPS_CREDENTIAL_H /****************************************************************************** Include header files ******************************************************************************/ #ifdef LCMAPS_GSI_MODE # include # include #endif #include "lcmaps_account.h" #include "lcmaps_types.h" #include #include /****************************************************************************** Define constants ******************************************************************************/ #define LCMAPS_CRED_SUCCESS 0x0 #define LCMAPS_CRED_NO_GSS_CRED 0x1 #define LCMAPS_CRED_NO_GSS_CTX 0x2 #define LCMAPS_CRED_NO_PEM_STRING 0x4 #define LCMAPS_CRED_NO_X509_CRED 0x8 #define LCMAPS_CRED_NO_X509_CHAIN 0x16 #define LCMAPS_CRED_NO_DN 0x32 #define LCMAPS_CRED_NO_FQAN 0x64 #define LCMAPS_CRED_NO_NFQAN 0x128 #define LCMAPS_CRED_NO_MAPCOUNTER 0x256 #define LCMAPS_CRED_INVOCATION_ERROR 0x512 #define LCMAPS_CRED_ERROR 0x1024 /****************************************************************************** Type definitions ******************************************************************************/ /*! \struct lcmaps_cred_id_s \typedef lcmaps_cred_id_t \brief structure type representing an LCMAPS credential. */ typedef struct lcmaps_cred_id_s { #ifdef LCMAPS_GSI_MODE gss_cred_id_t cred; /*!< the original gss (globus) credential */ gss_ctx_id_t context; /*!< the gss security context */ /* It's in the planning to move this to the gsi-free */ /* area, once we use the globus-free voms parser (openssl based) */ char * pem_string; /*!< the proxy certificate as PEM-encoded string */ X509 * px509_cred; /*!< the proxy certificate as X509 struct */ STACK_OF(X509) * px509_chain; /*!< the chain of the proxy certificate as STACK_OF(X509) */ #endif lcmaps_vomsdata_t * voms_data_list; /*!< The VOMS Data structures which contain all known information per VOMS BLOB from a proxy, added for GUMS and the Job Repository */ int nvoms_data; /*!< The number of VOMS Data Structures, equal to the number of VOMS BLOBs in the proxy, added for GUMS and the Job Repository */ char * dn; /*!< the user distinguished name (DN) */ char ** fqan; /*!< the list of FQANs */ int nfqan; /*!< the number of FQANs */ int mapcounter; /*!< the counter to be used for multiple account mappings */ lcmaps_account_info_t requested_account; /*!< the account requested by the calling application, that should be verified */ } lcmaps_cred_id_t; /****************************************************************************** * Module definition *****************************************************************************/ /*! \name CREDENTIAL FUNCTIONS */ /*@{*/ /* Beginning of credential functions */ #ifdef LCMAPS_GSI_MODE /* TODO function textual headers */ int lcmaps_credential_store_gss_cred_id_t_and_sub_elements( gss_cred_id_t gss_cred_id, lcmaps_cred_id_t * plcmaps_credential ); int lcmaps_credential_store_pem_string_and_sub_elements( char * pem_string, lcmaps_cred_id_t * plcmaps_credential ); int lcmaps_credential_store_x509_and_sub_elements( X509 * cert, STACK_OF(X509) * certchain, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_gss_cred_id_t() Description: Fill credential with gss_cred_id_t (internally gsi credential) If the lcmaps credential does not yet contain the DN, try to retrieve it from the gss credential. If the lcmaps credential does not yet contain VOMS attributes, try to retrieve them from the gss credential. Parameters: gss_credential: gss credential (internally gsi credential) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_NO_GSS_CRED: The supplied credential is empty LCMAPS_CRED_ERROR: error in retrieving VOMS attributes. LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_gss_cred_id_t( gss_cred_id_t gss_credential, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_gss_cred_id_t() Description: returns gss credential (internally gsi credential) Parameters: lcmaps_credential: lcmaps_credential Returns: gss credential ******************************************************************************/ gss_cred_id_t lcmaps_credential_get_gss_cred_id_t( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_gss_ctx_id_t() Description: Fill credential with gss_ctx_id_t (gss security context) Parameters: gss_context: gss security context plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_credential_store_gss_ctx_id_t( gss_ctx_id_t gss_context, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_gss_ctx_id_t() Description: returns gss security context Parameters: lcmaps_credential: lcmaps_credential Returns: gss security context ******************************************************************************/ gss_ctx_id_t lcmaps_credential_get_gss_ctx_id_t( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_pem_string() Description: Fill credential with PEM-encoded string If the lcmaps credential does not yet contain the X509, try to retrieve it from the string Parameters: pem_string: PEM-encoded string plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_PEM_STRING: PEM-encoded string is empty LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_pem_string( char * pem_string, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_pem_string() Description: returns PEM-encoded string Parameters: lcmaps_credential: lcmaps_credential Returns: PEM-encoded string ******************************************************************************/ char * lcmaps_credential_get_pem_string( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_stack_of_x509() Description: Fill credential with X.509 certificate information Parameters: px509_chain: x509 proxy chain plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_NO_X509_CHAIN: The supplied credential chain is empty LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_stack_of_x509( STACK_OF(X509) * px509_chain, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_x509() Description: Fill credential with PEM-encoded string If the lcmaps credential does not yet contain the X509, try to retrieve it from the string Parameters: px509: x509 proxy certificate plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: succes LCMAPS_CRED_NO_X509_CRED: The supplied credential is empty LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_x509( X509 * px509, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_x509_cred() Description: Return the X509 cert. Parameters: lcmaps_credential: lcmaps_credential Returns: the X509 cert. ******************************************************************************/ X509 * lcmaps_credential_get_x509_cred( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_x509_chain() Description: Return the X509 cert chain Parameters: lcmaps_credential: lcmaps_credential Returns: the X509 cert chain ******************************************************************************/ STACK_OF(X509) * lcmaps_credential_get_x509_chain( lcmaps_cred_id_t lcmaps_credential ); #endif /* LCMAPS_GSI_MODE */ /****************************************************************************** Function: lcmaps_credential_store_dn() Description: Fill credential with dn Parameters: dn: distinguished name plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_DN: no DN to fill LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_dn( char * dn, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_dn() Description: returns user dn Parameters: lcmaps_credential: lcmaps_credential Returns: user dn ******************************************************************************/ char * lcmaps_credential_get_dn( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_lcmaps_vomsdata() Description: Fill credential with LCMAPS vomsdata list Parameters: lcmaps_credential: lcmaps_credential lcmaps_vomsdata_t: LCMAPS vomsdata Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_FQAN: supplied fqan list is empty LCMAPS_CRED_ERROR: failure, because of a malloc error or a malformed fqan list LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_lcmaps_vomsdata ( lcmaps_vomsdata_t * lcmaps_vomsdata, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_fqan_list() Description: Fill credential with list of FQANs Parameters: nfqan: number of elements of the FQAN list fqan_list: FQAN list (list of strings) plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_NO_FQAN: supplied fqan list is empty LCMAPS_CRED_ERROR: failure, because of a malloc error or a malformed fqan list LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_fqan_list( int nfqan, char ** fqan_list, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_fqan_list() Description: returns the list of FQANs and number of elements Parameters: pnfqan: pointer to the number of FQANs in the list lcmaps_credential: lcmaps_credential Returns: list of FQANs ******************************************************************************/ char ** lcmaps_credential_get_fqan_list( int * pnfqan, lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_mapcounter() Description: stores mapcounter Parameters: mapcounter: the mapping counter plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_mapcounter( int mapcounter, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_mapcounter() Description: returns mapcounter Parameters: lcmaps_credential: lcmaps_credential Returns: mapcounter ******************************************************************************/ int lcmaps_credential_get_mapcounter( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_store_requested_account() Description: stores the requested account (the account that should be verified) in an lcmaps_account_info_t structure. Parameters: puid: pointer to the uid of the local account ppgid_list: pointer to the list of primary gids pnpgid: pointer to the number of primary gids found psgid_list: pointer to the list of secondary gids pnsgid: pointer to the number of secondary gids found ppoolindex: pointer to the pool index plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure, because error filling lcmaps_account_info_t LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_store_requested_account( uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** ppoolindex, lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_credential_get_requested_account() Description: returns requested account in lcmaps_account_info_t format Parameters: lcmaps_credential: lcmaps_credential Returns: requested account ******************************************************************************/ lcmaps_account_info_t lcmaps_credential_get_requested_account( lcmaps_cred_id_t lcmaps_credential ); /****************************************************************************** Function: lcmaps_clean_list_of_strings() Description: clean list of strings Parameters: listlen: number of elements in the list of strings string_list: list of strings Returns: LCMAPS_CRED_SUCCESS ******************************************************************************/ int lcmaps_clean_list_of_strings( int listlen, char ** string_list ); /****************************************************************************** Function: lcmaps_credential_init() Description: initialize the lcmaps_cred_id_t: set the member values to the default values Parameters: plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failed to set the member values LCMAPS_CRED_INVOCATION_ERROR: failure, because lcmaps_credential does not exist ******************************************************************************/ int lcmaps_credential_init( lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_release_cred() Description: release lcmaps credential Parameters: plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_release_cred( lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_release_cred_leave_STACK_OF_X509() Description: release lcmaps credential, but leave the STACK_OF_X509 Parameters: plcmaps_credential: pointer to lcmaps_credential Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_release_cred_leave_STACK_OF_X509( lcmaps_cred_id_t * plcmaps_credential ); /****************************************************************************** Function: lcmaps_clean_vomsdata() Description: release vomsdata Parameters: vomsdata: pointer to lcmaps_vomsdata_t Returns: LCMAPS_CRED_SUCCESS: success LCMAPS_CRED_ERROR: failure ******************************************************************************/ int lcmaps_clean_vomsdata( lcmaps_vomsdata_t * vomsdata ); /*@}*/ /* End of credential functions */ #endif /* _LCMAPS_CREDENTIAL_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/grid_credential_handling/_lcmaps_credential.h,v $ $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ $Revision: 18216 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/liblcmaps.sym0000644001726200004540000000252612471136645013236 00000000000000addCredentialData getCredentialData lcmaps_account_info_clean lcmaps_account_info_fill lcmaps_account_info_init lcmaps_cleanVoData lcmaps_cleanVoMapping lcmaps_cntArgs lcmaps_copyVoData lcmaps_copyVoMapping lcmaps_createVoData lcmaps_createVoMapping lcmaps_deleteVoData lcmaps_deleteVoMapping lcmaps_disable_voms_attributes_verification lcmaps_enable_voms_attributes_verification lcmaps_findArgName lcmaps_findArgNameAndType lcmaps_genfilename lcmaps_getArgValue lcmaps_get_gidlist lcmaps_get_major_version lcmaps_get_minor_version lcmaps_get_patch_version lcmaps_get_voms_attributes_verification lcmaps_get_voms_verification_time lcmaps_init lcmaps_init_and_log lcmaps_init_and_logfile lcmaps_init_name_args lcmaps_is_set_to_verify_voms_attributes lcmaps_log lcmaps_log_a_string lcmaps_log_a_string_debug lcmaps_log_debug lcmaps_log_time lcmaps_printVoData lcmaps_printVoMapping lcmaps_run lcmaps_run_and_return_poolindex lcmaps_run_and_return_username lcmaps_run_and_verify_account_from_pem lcmaps_run_with_fqans_and_return_account lcmaps_run_with_fqans_mapcounter_and_return_account lcmaps_run_with_pem_and_return_account lcmaps_run_with_stack_of_x509_and_return_account lcmaps_run_without_credentials_and_return_username lcmaps_setArgValue lcmaps_set_voms_attributes_verification lcmaps_set_voms_verification_time lcmaps_stringVoData lcmaps_term lcmaps_tokenize lcmaps-1.6.6/src/lcmaps_return_poolindex.c0000644001726200004540000004330212471136645015636 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_return_poolindex.c \brief This interface returns the poolindex, i.e. leaseid, using LCMAPS \author Martijn Steenbakkers for the EU DataGrid. If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. -# lcmaps_return_poolindex_va Returns the poolindex based on a variable argument list -# lcmaps_return_poolindex Returns the poolindex based on fixed arguments: security context, buffer and buffer length -# lcmaps_return_poolindex_from_gss_cred Returns the poolindex based on fixed arguments: gss credential, buffer and buffer length */ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include #include /* globus headers */ #include #include /* LCMAPS includes */ #include "lcmaps.h" #include "lcmaps_log.h" #include "lcmaps_return_poolindex.h" #include "pluginmanager/_lcmaps_log.h" #include "pluginmanager/_lcmaps_utils.h" /* Next header defines functions needed to dig into the internal globus structs * Actual structs are defined in globus_internal.h */ #include "grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h" /****************************************************************************** Module specific defines ******************************************************************************/ /* Default settings */ #define LCMAPS_MAX_POLICIES 10 /****************************************************************************** Module specific prototypes ******************************************************************************/ static gss_cred_id_t dig_up_gss_cred_from_context(gss_ctx_id_t); static int lcmaps_return_poolindex_va(int , ...); /****************************************************************************** Function: Dig up the user gss credential from the security context Description: Dig up the user gss credential from the security context. Uses gss_assist libraries and, in case the delegate credential is empty, uses internal gsi libraries as well (hmmmm). Parameters: context_handle: the security context handle Returns: the user credential or GSS_C_NO_CREDENTIAL in case of failure ******************************************************************************/ static gss_cred_id_t dig_up_gss_cred_from_context( gss_ctx_id_t context_handle ) { gss_name_t peer = GSS_C_NO_NAME; gss_buffer_desc peer_name_buffer = GSS_C_EMPTY_BUFFER; OM_uint32 major_status = 0; OM_uint32 minor_status = 0; int rc = -1; int initiator = -1; gss_cred_id_t user_cred_handle = GSS_C_NO_CREDENTIAL; rc = globus_module_activate(GLOBUS_GSI_GSS_ASSIST_MODULE); if (rc != GLOBUS_SUCCESS) { lcmaps_log (LOG_ERR, "Error activating GLOBUS_GSI_GSS_ASSIST_MODULE\n"); return GSS_C_NO_CREDENTIAL; } rc = globus_module_activate(GLOBUS_GSI_GSSAPI_MODULE); if (rc != GLOBUS_SUCCESS) { lcmaps_log (LOG_ERR, "Error activating GLOBUS_GSI_GSSAPI_MODULE\n"); return GSS_C_NO_CREDENTIAL; } major_status = gss_inquire_context(&minor_status, context_handle, GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL, &initiator, GLOBUS_NULL); if(GSS_ERROR(major_status)) { lcmaps_log (LOG_ERR, "GSS failed: Cannot inquire context, Major:%8.8x Minor:%8.8x\n", major_status, minor_status); goto dig_up_gss_cred_from_context_finalize; } major_status = gss_inquire_context(&minor_status, context_handle, initiator ? GLOBUS_NULL : &peer, initiator ? &peer : GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL, GLOBUS_NULL); if(GSS_ERROR(major_status)) { lcmaps_log (LOG_ERR, "GSS failed: Cannot inquire context, Major:%8.8x Minor:%8.8x\n", major_status, minor_status); goto dig_up_gss_cred_from_context_finalize; } major_status = gss_display_name(&minor_status, peer, &peer_name_buffer, GLOBUS_NULL); if(GSS_ERROR(major_status)) { lcmaps_log (LOG_ERR, "GSS failed: Cannot display name of peer, Major:%8.8x Minor:%8.8x\n", major_status, minor_status); gss_release_name(&minor_status, &peer); goto dig_up_gss_cred_from_context_finalize; } gss_release_name(&minor_status, &peer); /* peer_name_buffer.value is a void* */ lcmaps_log (LOG_INFO, "Found name of peer: %s\n", (char*)(peer_name_buffer.value)); /* * Sometimes the delegated credential returned by * globus_gss_assist_accept_sec_context()/gss_accept_sec_context() is empty. * In particular this is true for gatekeeper pings * (globusrun -a: "authenticate only", should be "authenticate+authorize only"). * In this case the gatekeeper should not act on behalf of the user so it does * not receive the delegated proxy. * However, LCAS and LCMAPS need a user credential for the authorization chain. * This user credential is contained in the context, we have to dig it out. * This requires two additional header files: gssapi_openssl.h, globus_gsi_gss_constants.h. */ user_cred_handle = lcmaps_ctx_to_cred(context_handle); dig_up_gss_cred_from_context_finalize: globus_module_deactivate(GLOBUS_GSI_GSSAPI_MODULE); globus_module_deactivate(GLOBUS_GSI_GSS_ASSIST_MODULE); return user_cred_handle; /* might be equal to GSS_C_NO_CREDENTIAL */ } /****************************************************************************** Function: lcmaps_return_poolindex_va Description: If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. The arguments of this function are passed as a variable argument list. Parameters: narg: the number of arguments that follow ap: vararg list, that consists of - The GSS Security context established during invocation of the calling service. This parameter is of type gss_ctx_id_t. - A pointer to a buffer. This buffer will contain the poolindex (NUL terminated string) upon successful return. This parameter is of type char *. - The length of the above mentioned buffer. This parameter is of type unsigned int. Returns: 0: success 1: failure ******************************************************************************/ /*! \fn lcmaps_return_poolindex_va( int narg, va_list ap ) \brief LCMAPS returns the poolindex If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. The arguments of this function are passed as a variable argument list. \param narg the number of arguments that follow This list currently contains: -# The GSS Security context established during invocation of the calling service. This parameter is of type gss_ctx_id_t. -# A pointer to a buffer. This buffer will contain the poolindex (NUL terminated string) upon successful return. This parameter is of type char *. -# The length of the above mentioned buffer. This parameter is of type unsigned int. \retval 0 success. \retval 1 failure. */ static int lcmaps_return_poolindex_va( int narg, ... ) { va_list ap; gss_ctx_id_t context_handle = GSS_C_NO_CONTEXT; char * poolindex_buffer = NULL; size_t buffer_length = 0; char * lcmaps_policy_string = NULL; char * lcmaps_policies[LCMAPS_MAX_POLICIES]; int lcmaps_npols = LCMAPS_MAX_POLICIES; int rc = -1; gss_cred_id_t user_cred_handle = GSS_C_NO_CREDENTIAL; char * poolindex = NULL; int jj = 0; /* First initialize LCMAPS, initialize without file pointer or name which * will result in getting env var LCMAPS_LOG_FILE. Specify DO_USRLOG to try * that first, if that fails we will go automatically to syslog */ if (lcmaps_init_and_logfile(NULL, NULL, (unsigned short)(DO_USRLOG))) { lcmaps_log(LOG_ERR, "%s: LCMAPS initialization failure\n", __func__); return 1; } /* Parse arguments from va_list */ va_start(ap, narg); if (narg == 3) { context_handle = va_arg(ap, gss_ctx_id_t); poolindex_buffer = va_arg(ap, char *); buffer_length = (size_t)va_arg(ap, unsigned int); } else if (narg == 4) { context_handle = va_arg(ap, gss_ctx_id_t); poolindex_buffer = va_arg(ap, char *); buffer_length = (size_t)va_arg(ap, unsigned int); user_cred_handle = va_arg(ap, gss_cred_id_t); } else { lcmaps_log(LOG_ERR, "%s: The number of arguments (%d) should be in the range %d-%d\n", __func__, narg, 3, 4); return 1; } va_end(ap); /* Parse policy environment variable */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) lcmaps_policies[jj] = 0; lcmaps_policy_string = getenv("LCMAPS_POLICY_NAME"); if ((rc = lcmaps_tokenize(lcmaps_policy_string, lcmaps_policies, &lcmaps_npols, ":")) != 0) { lcmaps_log(LOG_ERR, "%s: Cannot parse LCMAPS_POLICY_NAME environment variable, because\n", __func__); switch (rc) { case -1: lcmaps_log(LOG_ERR, "%s: of a malloc error\n", __func__); break; case -2: lcmaps_log(LOG_ERR, "%s: the policy list is too large (max = %d)\n", __func__, LCMAPS_MAX_POLICIES); break; case -3: lcmaps_log(LOG_ERR, "%s: of a non-matching quote\n", __func__); break; case -4: lcmaps_log(LOG_ERR, "%s: of invalid input\n", __func__); break; default: lcmaps_log(LOG_ERR, "%s: of an unknown error\n", __func__); break; } goto return_poolindex_error; } /* * Retrieve clients (delegated) credential * Check if by any chance the gss credential was directly given to us and * then use it. If not then plan B: use the security context. * Plan B: * First check who initiated the context (should not be us, I think) and * retrieve the name of the peer (=client) * Then dig out the peer's credential from the context structure * (not nice, will globus provide a mechanism for this in the future ?) */ if (user_cred_handle == GSS_C_NO_CREDENTIAL) { /* plan B */ user_cred_handle = dig_up_gss_cred_from_context(context_handle); if (user_cred_handle == GSS_C_NO_CREDENTIAL) { lcmaps_log (LOG_ERR, "LCMAPS could not find a valid user gss credential\n"); goto return_poolindex_error; } } /* * Now that we have the credential let's run (and terminate) LCMAPS ! */ #if ALLOW_EMPTY_CREDENTIALS rc = lcmaps_run_and_return_poolindex( NULL, user_cred_handle, NULL, &poolindex, lcmaps_npols, lcmaps_policies); #else rc = lcmaps_run_and_return_poolindex( user_cred_handle, NULL, &poolindex, lcmaps_npols, lcmaps_policies); #endif if (rc != 0) { lcmaps_log (LOG_ERR, "LCMAPS failed to do mapping and return poolindex\n"); if (lcmaps_term()) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_poolindex_error; } goto return_poolindex_error; } /* Now copy poolindex into buffer */ if (poolindex) { if(strlen(poolindex) + 1 > buffer_length) { lcmaps_log (LOG_ERR, "Buffer (length=%lu) too small for poolindex (length=%lu)\n", (long unsigned)(buffer_length-1), (long unsigned)strlen(poolindex)); free(poolindex); goto return_poolindex_error; } else { strncpy(poolindex_buffer, poolindex, buffer_length); lcmaps_log(LOG_DEBUG, "lcmaps_return_poolindex(): Returning poolindex %s\n", poolindex); } free(poolindex); } else { lcmaps_log (LOG_ERR, "LCMAPS could not find the poolindex\n"); goto return_poolindex_error; } rc = lcmaps_term(); if (rc) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_poolindex_error; } return 0; return_poolindex_error: return 1; } /****************************************************************************** Function: lcmaps_return_poolindex Description: If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. Parameters: context_handle: The GSS Security context established during invocation of the calling service. This parameter is of type gss_ctx_id_t. poolindex_buffer: A pointer to a buffer. This buffer will contain the poolindex (NUL terminated string) upon successful return. This parameter is of type char *. buffer_length: The length of the above mentioned buffer. This parameter is of type unsigned int. Returns: 0: success 1: failure ******************************************************************************/ int lcmaps_return_poolindex( gss_ctx_id_t context_handle, char * poolindex_buffer, unsigned int buffer_length ) { return (lcmaps_return_poolindex_va(3, context_handle, poolindex_buffer, buffer_length)); } /****************************************************************************** Function: lcmaps_return_poolindex_from_gss_cred Description: If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. Instead of using the security context as an input it uses a gss credential (type gss_cred_id_t). Parameters: credential_handle: The GSS credential (of type gss_cred_id_t) of the user. poolindex_buffer: A pointer to a buffer. This buffer will contain the poolindex (NUL terminated string) upon successful return. This parameter is of type char *. buffer_length: The length of the above mentioned buffer. This parameter is of type unsigned int. Returns: 0: success 1: failure ******************************************************************************/ int lcmaps_return_poolindex_from_gss_cred( gss_cred_id_t credential_handle, char * poolindex_buffer, unsigned int buffer_length ) { return (lcmaps_return_poolindex_va( 4, GSS_C_NO_CONTEXT, poolindex_buffer, buffer_length, credential_handle) ); } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps_return_poolindex.c,v $ $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ $Revision: 18216 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/lcmaps_account.c0000644001726200004540000001522712471136645013677 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_account.c \brief Utility functions to initialize, fill and clean an lcmaps account structure. \author Martijn Steenbakkers for the EU DataGrid. Utility functions to initialize, fill and clean an lcmaps account structure. This account structure is used by several lcmaps interfaces. */ #define _XOPEN_SOURCE 500 /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include #include #include "lcmaps_account.h" /****************************************************************************** Function: lcmaps_account_info_init() Description: Initialize the account info structure Parameters: plcmaps_account: pointer to the account info struct to be filled Returns: 0: succes 1: failed to initialize the account info structure ******************************************************************************/ int lcmaps_account_info_init( lcmaps_account_info_t * plcmaps_account ) { if (plcmaps_account == NULL) { /* nothing to initialize */ return 0; } plcmaps_account->uid = (uid_t)-1; plcmaps_account->pgid_list = NULL; plcmaps_account->npgid = 0; plcmaps_account->sgid_list = NULL; plcmaps_account->nsgid = 0; plcmaps_account->poolindex = NULL; return 0; } /****************************************************************************** Function: lcmaps_account_info_fill() Description: Fill structure with account info Parameters: puid: ptr to the uid of the local account ppgid_list: ptr to the list of primary gids pnpgid: ptr to the number of primary gids found psgid_list: ptr to the list of secondary gids pnsgid: ptr to the number of secondary gids found ppoolindex: ptr to the pool index plcmaps_account: pointer to the account info struct to be filled Returns: 0: succes 1: failed to fill the account info structure -1: other failure ******************************************************************************/ int lcmaps_account_info_fill( uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** ppoolindex, lcmaps_account_info_t * plcmaps_account ) { int i = 0; if (plcmaps_account == NULL) { /* lcmaps_account struct has to exist before invocation */ return -1; } /* initialize the struct */ plcmaps_account->uid = (uid_t)-1; plcmaps_account->pgid_list = NULL; plcmaps_account->npgid = 0; plcmaps_account->sgid_list = NULL; plcmaps_account->nsgid = 0; plcmaps_account->poolindex = NULL; if (puid && ppgid_list && pnpgid && psgid_list && pnsgid && ppoolindex) { plcmaps_account->uid = *puid; if (*pnpgid > 0) { if (*ppgid_list == NULL) return -1; plcmaps_account->pgid_list = (gid_t *) malloc((size_t)(*pnpgid) * sizeof(gid_t)); if (plcmaps_account->pgid_list == NULL) { /* malloc error */ return -1; } for (i = 0; i < *pnpgid; i++) { (plcmaps_account->pgid_list)[i] = (*ppgid_list)[i]; } } plcmaps_account->npgid = *pnpgid; if (*pnsgid > 0) { if (*psgid_list == NULL) return -1; plcmaps_account->sgid_list = (gid_t *) malloc((size_t)(*pnsgid) * sizeof(gid_t)); if (plcmaps_account->sgid_list == NULL) { /* malloc error */ return -1; } for (i = 0; i < *pnsgid; i++) { (plcmaps_account->sgid_list)[i] = (*psgid_list)[i]; } } plcmaps_account->nsgid = *pnsgid; if (*ppoolindex != NULL) { plcmaps_account->poolindex = strdup(*ppoolindex); if (plcmaps_account->poolindex == NULL) { /* malloc error */ return -1; } } } else { return 1; } return 0; } /****************************************************************************** Function: lcmaps_account_info_clean() Description: Clean the account info structure Parameters: plcmaps_account: pointer to the account info struct to be filled Returns: 0: succes 1: failed to clean the account info structure ******************************************************************************/ int lcmaps_account_info_clean( lcmaps_account_info_t * plcmaps_account ) { if (plcmaps_account == NULL) { /* nothing to clean */ return 0; } if (plcmaps_account->pgid_list) free(plcmaps_account->pgid_list); if (plcmaps_account->sgid_list) free(plcmaps_account->sgid_list); if (plcmaps_account->poolindex) free(plcmaps_account->poolindex); return 0; } lcmaps-1.6.6/src/lcmaps.pc.in0000644001726200004540000000043312471136645012741 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: lcmaps Description: LCMAPS Requires.private: globus-gssapi-gsi, globus-gss-assist, globus-gsi-cert-utils, voms-2.0, openssl Version: @VERSION@ Libs: -L${libdir} -llcmaps Cflags: -I${includedir} lcmaps-1.6.6/src/lcmaps_verify_account_from_pem.c0000644001726200004540000002065412471136645017147 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_verify_account_from_pem.c \brief This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS and takes the user credential in PEM format as input \author Martijn Steenbakkers for the EU DataGrid. This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS. As input it requires the user credential in PEM format -# lcmaps_verify_account_from_pem: interface function */ /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include /* LCMAPS includes */ #include "lcmaps.h" #include "lcmaps_log.h" #include "lcmaps_verify_account_from_pem.h" #include "pluginmanager/_lcmaps_log.h" #include "pluginmanager/_lcmaps_utils.h" /****************************************************************************** Module specific defines ******************************************************************************/ /* Default settings */ #define LCMAPS_MAX_POLICIES 10 /****************************************************************************** Module specific prototypes ******************************************************************************/ int lcmaps_verify_account_from_pem_va (int narg, ...); /****************************************************************************** Function: lcmaps_verify_account_from_pem_va Description: Verify the account mapping from the supplied user credential. Parameters: narg: the number of arguments that follow ap: vararg list, that consists of - input: The PEM-encoded string containing the user proxy - input: a structure that contains account information: uid, gids (primary and secondary) and the poolindex Returns: 0: success 1: failure ******************************************************************************/ int lcmaps_verify_account_from_pem_va( int narg, ... ) { va_list ap; char * pem_string = NULL; /* input variable */ lcmaps_account_info_t lcmaps_account; /* input variable */ char * lcmaps_policy_string = NULL; char * lcmaps_policies[LCMAPS_MAX_POLICIES]; int lcmaps_npols = LCMAPS_MAX_POLICIES; int rc = -1; int jj = 0; /* First initialize LCMAPS, initialize without file pointer or name which * will result in getting env var LCMAPS_LOG_FILE. Specify DO_USRLOG to try * that first, if that fails we will go automatically to syslog */ if (lcmaps_init_and_logfile(NULL, NULL, (unsigned short)(DO_USRLOG))) { lcmaps_log(LOG_ERR, "%s: LCMAPS initialization failure\n", __func__); goto verify_account_from_pem_error; } /* Parse arguments from va_list */ va_start(ap, narg); if (narg == 2) { pem_string = va_arg(ap, char *); lcmaps_account = va_arg(ap, lcmaps_account_info_t); } else { lcmaps_log(LOG_ERR, "%s: The number of arguments (%d) should be 2\n", __func__, narg); return 1; } va_end(ap); /* Parse policy environment variable */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) lcmaps_policies[jj] = 0; lcmaps_policy_string = getenv("LCMAPS_POLICY_NAME"); if ((rc = lcmaps_tokenize(lcmaps_policy_string, lcmaps_policies, &lcmaps_npols, ":")) != 0) { lcmaps_log(LOG_ERR, "%s: Cannot parse LCMAPS_POLICY_NAME environment variable, because\n", __func__); switch (rc) { case -1: lcmaps_log(LOG_ERR, "%s: of a malloc error\n", __func__); break; case -2: lcmaps_log(LOG_ERR, "%s: the policy list is too large (max = %d)\n", __func__, LCMAPS_MAX_POLICIES); break; case -3: lcmaps_log(LOG_ERR, "%s: of a non-matching quote\n", __func__); break; case -4: lcmaps_log(LOG_ERR, "%s: invalid input\n", __func__); break; default: lcmaps_log(LOG_ERR, "%s: of an unknown error\n", __func__); break; } goto verify_account_from_pem_error; } /* * Now that we have the credential let's run (and terminate) LCMAPS ! */ rc = lcmaps_run_and_verify_account_from_pem( NULL, pem_string, lcmaps_account.uid, lcmaps_account.pgid_list, lcmaps_account.npgid, lcmaps_account.sgid_list, lcmaps_account.nsgid, lcmaps_account.poolindex, NULL, lcmaps_npols, lcmaps_policies ); if (rc != 0) { lcmaps_log(LOG_NOTICE, "LCMAPS failed to verify the account mapping\n"); if (lcmaps_term()) { lcmaps_log(LOG_ERR, "LCMAPS termination failure\n"); goto verify_account_from_pem_error; } goto verify_account_from_pem_error; } rc = lcmaps_term(); if (rc) { lcmaps_log(LOG_ERR, "LCMAPS termination failure\n"); goto verify_account_from_pem_error; } /* Clean policies */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) { if ((lcmaps_policies[jj]) != NULL) { free(lcmaps_policies[jj]); lcmaps_policies[jj] = NULL; } } return 0; verify_account_from_pem_error: /* Clean policies */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) { if ((lcmaps_policies[jj]) != NULL) { free(lcmaps_policies[jj]); lcmaps_policies[jj] = NULL; } } return 1; } /****************************************************************************** Function: lcmaps_verify_account_from_pem Description: Verify the account mapping from the supplied user credential. Parameters: pem_string: : The PEM-encoded string containing the user proxy lcmaps_account : A structure that contains account information: (input) uid, gids (primary and secondary). Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure ******************************************************************************/ int lcmaps_verify_account_from_pem( char * pem_string, lcmaps_account_info_t lcmaps_account ) { return (lcmaps_verify_account_from_pem_va(2, pem_string, lcmaps_account)); } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps_verify_account_from_pem.c,v $ $Date: 2014-03-04 16:17:33 +0100 (Tue, 04 Mar 2014) $ $Revision: 17597 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/lcmaps_return_account_from_pem.c0000644001726200004540000003714312471136645017163 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_return_account_from_pem.c \brief This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS and takes the user credential in PEM format as input \author Martijn Steenbakkers for the EU DataGrid. This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS. As input it requires the user credential in PEM format -# lcmaps_return_account_from_pem: interface function */ #define _XOPEN_SOURCE 600 /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_config.h" /* Needed for NULL */ #include #include #include #include #include /* LCMAPS includes */ #include "lcmaps.h" #include "lcmaps_log.h" #include "lcmaps_account.h" #include "lcmaps_return_account_from_pem.h" #include "pluginmanager/_lcmaps_utils.h" #include "pluginmanager/_lcmaps_log.h" /****************************************************************************** Module specific defines ******************************************************************************/ /* Default settings */ #define LCMAPS_MAX_POLICIES 10 #define LCMAPS_DEFAULT_DB_FILE "lcmaps.db" #if defined(DONT_ALLOW_ABSOLUTE_LCMAPS_DB_FILE) ||\ defined(CHECK_LCMAPS_DB_PERMISSIONS) # define LCMAPS_REQUIRED_DB_PATH LCMAPS_ETC_HOME #endif /* * If the following is set, LCMAPS will not allow the environment variable * LCMAPS_DB_FILE to contain an absolute path. * For now I don't see cases were this is necessary, so unset it */ #define DONT_ALLOW_ABSOLUTE_LCMAPS_DB_FILE 0 /* * Also this should ideally happen in the calling application (glexec) * so unset it. */ #define CHECK_LCMAPS_DB_PERMISSIONS 0 /****************************************************************************** Function: lcmaps_return_account_from_pem_va Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The arguments of this function are passed as a variable argument list. Parameters: narg: the number of arguments that follow ap: vararg list, that consists of - input: The PEM-encoded string containing the user proxy - output: a structure that contains account information: uid, gids (primary and secondary) and the poolindex - input, optional: the mapcounter Returns: 0: success 1: failure ******************************************************************************/ static int lcmaps_return_account_from_pem_va( int narg, ... ) { va_list ap; char * pem_string = NULL; /* input variable */ int mapcounter = -1; /* input variable */ lcmaps_account_info_t * plcmaps_account = NULL; /* output variable */ char * lcmaps_policy_string = NULL; char * lcmaps_policies[LCMAPS_MAX_POLICIES]; int lcmaps_npols = LCMAPS_MAX_POLICIES; const char * lcmaps_db_file_env = NULL; char * lcmaps_db_file = NULL; int rc = -1; uid_t uid = (uid_t)-1; gid_t * pgid_list = NULL; int npgid = 0; gid_t * sgid_list = NULL; int nsgid = 0; char * poolindex = NULL; int jj = 0; #if CHECK_LCMAPS_DB_PERMISSIONS struct stat prg_info; /* program info holder */ struct stat dir_info; /* directory info holder */ #endif /* First initialize LCMAPS, initialize without file pointer or name which * will result in getting env var LCMAPS_LOG_FILE. Specify DO_USRLOG to try * that first, if that fails we will go automatically to syslog */ if (lcmaps_init_and_logfile(NULL, NULL, (unsigned short)(DO_USRLOG))) { lcmaps_log(LOG_ERR, "%s: LCMAPS initialization failure\n", __func__); goto return_account_from_pem_error; } /* * Set the lcmaps_db_file. If we're very paranoid we set * DONT_ALLOW_ABSOLUTE_LCMAPS_DB_FILE, but normally this is not needed, * because the calling application (glexec) should take care that the * environment variables are set correctly */ #if DONT_ALLOW_ABSOLUTE_LCMAPS_DB_FILE /* * "Another exception is made for the lcmaps.db file: This interface is used * by VO services (i.e. not site-controlled services), so the VO should not * be able to determine which lcmaps.db file (or in the future a general * lcmaps config file) they take." */ if ( (lcmaps_db_file_env = getenv("LCMAPS_DB_FILE")) != NULL) { /* * OK, one tries to set the location of the lcmaps.db file. * We don't allow paths to be included in the filename. LCMAPS will add * the site-controlled path to it. * If a path is found: error * If no path is found: add the default path to it and performs various * checks */ if (strchr(lcmaps_db_file_env, '/') != NULL) { lcmaps_log(LOG_ERR, "%s: (LCMAPS_DB_FILE = %s)\n", __func__, lcmaps_db_file_env); lcmaps_log(LOG_ERR, "%s: Attempt to include path to lcmaps.db file by environment variable\n", __func__); lcmaps_log(LOG_ERR, "%s: This is not allowed for this lcmaps interface\n", __func__); return 1; } } else { lcmaps_db_file_env = LCMAPS_DEFAULT_DB_FILE; } /* prepend required path */ lcmaps_db_file = (char *) malloc(strlen(LCMAPS_REQUIRED_DB_PATH) + 2 + strlen(lcmaps_db_file_env)); if (lcmaps_db_file==NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); return 1; } sprintf(lcmaps_db_file, "%s/%s", LCMAPS_REQUIRED_DB_PATH, lcmaps_db_file_env); #else /* DONT_ALLOW_ABSOLUTE_LCMAPS_DB_FILE */ lcmaps_db_file_env = getenv("LCMAPS_DB_FILE"); lcmaps_db_file_env = (lcmaps_db_file_env ? lcmaps_db_file_env : LCMAPS_DEFAULT_DB_FILE ); lcmaps_db_file = strdup(lcmaps_db_file_env); if (lcmaps_db_file==NULL) { lcmaps_log(LOG_ERR, "%s: Out of memory\n", __func__); return 1; } #endif /* DONT_ALLOW_ABSOLUTE_LCMAPS_DB_FILE */ /* * Check the lcmaps_db_file. * Again, if we're very paranoid we set CHECK_LCMAPS_DB_PERMISSIONS, but * normally this is not needed, because the calling application (glexec) * should do that. */ #if CHECK_LCMAPS_DB_PERMISSIONS /* * Check lcmaps.db file: * - Should be in a directory owned by root, which non-writable for others. * - Should be owned by root and non-writable for others. * If checks are ok reset environment variable */ /* * Stat the directory of lcmaps.db and verify it is a directory, or error * out. */ if (((lstat(LCMAPS_REQUIRED_DB_PATH, &dir_info)) != 0) || !(S_ISDIR(dir_info.st_mode))) { lcmaps_log(LOG_ERR, "%s: cannot stat directory: (%s)\n", __func__, LCMAPS_REQUIRED_DB_PATH); if (lcmaps_db_file) {free(lcmaps_db_file); lcmaps_db_file = NULL;} return 1; } /* * Error out if the directory is not owned by root */ if ((dir_info.st_uid != 0) || (dir_info.st_gid != 0)) { lcmaps_log(LOG_ERR, "%s: directory is not owned by root: (%s)\n", __func__, LCMAPS_REQUIRED_DB_PATH); if (lcmaps_db_file) {free(lcmaps_db_file); lcmaps_db_file = NULL;} return 1; } /* * Error out if the directory is writable by others. */ if (dir_info.st_mode & S_IWOTH) { lcmaps_log(LOG_ERR, "%s: directory is writable by others: (%s)\n", __func__, LCMAPS_REQUIRED_DB_PATH); if (lcmaps_db_file) {free(lcmaps_db_file); lcmaps_db_file = NULL;} return 1; } /* * Error out if we cannot stat the lcmaps.db file. */ if (((lstat(lcmaps_db_file, &prg_info)) != 0) || (S_ISLNK(prg_info.st_mode))) { lcmaps_log(LOG_ERR, "%s: cannot stat program: (%s)\n", __func__, lcmaps_db_file); if (lcmaps_db_file) {free(lcmaps_db_file); lcmaps_db_file = NULL;} return 1; } /* * Error out if the lcmaps.db file is not owned by root */ if ((prg_info.st_uid != 0) || (prg_info.st_gid != 0)) { lcmaps_log(LOG_ERR, "%s: file is not owned by root: (%s)\n", __func__, lcmaps_db_file); if (lcmaps_db_file) {free(lcmaps_db_file); lcmaps_db_file = NULL;} return 1; } /* * Error out if the lcmaps.db file is writable by others. */ if (prg_info.st_mode & S_IWOTH) { lcmaps_log(LOG_ERR, "%s: file is writable by others: (%s)\n", __func__, lcmaps_db_file); if (lcmaps_db_file) {free(lcmaps_db_file); lcmaps_db_file = NULL;} return 1; } #endif /* CHECK_LCMAPS_DB_PERMISSIONS*/ /* Everything's fine, so set (overwrite!) the environment variable. */ setenv("LCMAPS_DB_FILE", lcmaps_db_file, 1); if (lcmaps_db_file) { free(lcmaps_db_file); lcmaps_db_file = NULL; } /* Parse arguments from va_list */ va_start(ap, narg); if (narg == 3) { pem_string = va_arg(ap, char *); mapcounter = va_arg(ap, int); plcmaps_account = va_arg(ap, lcmaps_account_info_t *); } else { lcmaps_log(LOG_ERR, "%s: The number of arguments (%d) should be 3\n", __func__, narg); return 1; } va_end(ap); /* Parse policy environment variable */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) lcmaps_policies[jj] = 0; lcmaps_policy_string = getenv("LCMAPS_POLICY_NAME"); if ((rc = lcmaps_tokenize(lcmaps_policy_string, lcmaps_policies, &lcmaps_npols, ":")) != 0) { lcmaps_log(LOG_ERR, "%s: Cannot parse LCMAPS_POLICY_NAME environment variable, because\n", __func__); switch (rc) { case -1: lcmaps_log(LOG_ERR, "%s: of a malloc error\n", __func__); break; case -2: lcmaps_log(LOG_ERR, "%s: the policy list is too large (max = %d)\n", __func__, LCMAPS_MAX_POLICIES); break; case -3: lcmaps_log(LOG_ERR, "%s: of a non-matching quote\n", __func__); break; case -4: lcmaps_log(LOG_ERR, "%s: invalid input\n", __func__); break; default: lcmaps_log(LOG_ERR, "%s: of an unknown error\n", __func__); break; } goto return_account_from_pem_error; } /* * Now that we have the credential let's run (and terminate) LCMAPS ! */ rc = lcmaps_run_with_pem_and_return_account( NULL, pem_string, mapcounter, NULL, lcmaps_npols, lcmaps_policies, &uid, &pgid_list, &npgid, &sgid_list, &nsgid, &poolindex ); if (rc != 0) { lcmaps_log (LOG_ERR, "LCMAPS failed to do mapping and return account information\n"); if (lcmaps_term()) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_account_from_pem_error; } goto return_account_from_pem_error; } /* * Fill the lcmaps account information */ rc = lcmaps_account_info_fill( &uid, &pgid_list, &npgid, &sgid_list, &nsgid, &poolindex, plcmaps_account ); if (rc != 0) { lcmaps_log (LOG_ERR, "LCMAPS failed to do mapping and return account information\n"); if (lcmaps_term()) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_account_from_pem_error; } goto return_account_from_pem_error; } /* Now we're done with the poolindex (has been dupped into plcmaps_account), * so free it */ free(poolindex); rc = lcmaps_term(); if (rc) { lcmaps_log (LOG_ERR, "LCMAPS termination failure\n"); goto return_account_from_pem_error; } /* Clean policies */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) { if ((lcmaps_policies[jj]) != NULL) { free(lcmaps_policies[jj]); lcmaps_policies[jj] = NULL; } } return 0; return_account_from_pem_error: /* Clean policies */ for (jj=0; jj < LCMAPS_MAX_POLICIES; jj++) { if ((lcmaps_policies[jj]) != NULL) { free(lcmaps_policies[jj]); lcmaps_policies[jj] = NULL; } } return 1; } /****************************************************************************** Function: lcmaps_return_account_from_pem Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. Parameters: mapcounter: : The counter which will be added to the poolindex, effectively enabling multiple account mappings pem_string: : The PEM-encoded string containing the user proxy plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure ******************************************************************************/ int lcmaps_return_account_from_pem( char * pem_string, int mapcounter, lcmaps_account_info_t * plcmaps_account ) { return (lcmaps_return_account_from_pem_va(3, pem_string, mapcounter, plcmaps_account)); } /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps_return_account_from_pem.c,v $ $Date: 2014-03-04 16:17:33 +0100 (Tue, 04 Mar 2014) $ $Revision: 17597 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/src/lcmaps-return-poolindex.pc.in0000644001726200004540000000052312471136645016255 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: lcmaps-return-poolindex@LCMAPS_FLAVOUR_NAME@ Description: LCMAPS@LCMAPS_FLAVOUR_NAME@ return poolindex mode Requires: lcmaps@LCMAPS_FLAVOUR_NAME@ Version: @VERSION@ Libs: -L${libdir} -llcmaps_return_poolindex@LCMAPS_FLAVOUR@ Cflags: -I${includedir} lcmaps-1.6.6/src/lcmaps_test.c0000644001726200004540000002114612471136645013217 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_test.c \brief Program to test the LCMAPS and its plugins \author Martijn Steenbakkers for the EU DataGrid. This program has elements of the edg-gatekeeper to be able to test the LCMAPS and its plugins without having the edg-gatekeeper installed. To run it : just run ./lcmaps-test It is not possible (yet) to feed a user credential (proxy) to the program. */ #include "lcmaps_config.h" #include #include #include #include #include "globus_gss_assist.h" /* Programming interface to dynamic linking loader */ #if HAVE_DLFCN_H #include #endif #if LINKED_LCMAPS #include "lcmaps.h" #endif static void failure(short failure_type, char *s); static void notice(int, char *s); #define FAILED_AUTHORIZATION 1 #define FAILED_SERVICELOOKUP 2 #define FAILED_SERVER 3 #define FAILED_NOLOGIN 4 #define FAILED_AUTHENTICATION 5 #define FAILED_PING 6 static char tmpbuf[1024]; #define notice2(i,a,b) {sprintf(tmpbuf, a,b); notice(i,tmpbuf);} #define notice3(i,a,b,c) {sprintf(tmpbuf, a,b,c); notice(i,tmpbuf);} #define notice4(i,a,b,c,d) {sprintf(tmpbuf, a,b,c,d); notice(i,tmpbuf);} #define failure2(t,a,b) {sprintf(tmpbuf, a,b); failure(t,tmpbuf);} #define failure3(t,a,b,c) {sprintf(tmpbuf, a,b,c); failure(t,tmpbuf);} #define failure4(t,a,b,c,d) {sprintf(tmpbuf, a,b,c,d); failure(t,tmpbuf);} static char * lcmapsmod_name= NULL; static gss_cred_id_t delegated_cred_handle = GSS_C_NO_CREDENTIAL; static FILE * usrlog_fp=NULL; int main() { char * lcmaps_request="Test lcmaps_request"; char * client_name="/O=dutchgrid/O=users/O=nikhef/CN=Martijn Steenbakkers"; int retval=0; usrlog_fp=stderr; /* Load proxy */ { OM_uint32 major_status; OM_uint32 minor_status; char * proxyname = "/home/gridtest/cvs/fabric_mgt/gridification/lcmaps/modules/voms/x509up_u500"; setenv("X509_USER_PROXY",proxyname,1); major_status = globus_gss_assist_acquire_cred(&minor_status, GSS_C_INITIATE, /* or GSS_C_ACCEPT */ &delegated_cred_handle); if (major_status != GSS_S_COMPLETE) { globus_gss_assist_display_status(stderr, "Some failure message here", major_status, minor_status, 0); return 1; } } #if LINKED_LCMAPS { int retval; notice(0,"Using linked in version of LCMAPS"); /* Initialize, send authorization request to and terminate the LCMAPS */ retval=lcmaps_init(usrlog_fp); if (retval) { failure(FAILED_SERVER, "LCMAPS initialization failure."); } #if ALLOW_EMPTY_CREDENTIALS retval=lcmaps_run(client_name,delegated_cred_handle, lcmaps_request); #else retval=lcmaps_run(delegated_cred_handle, lcmaps_request); #endif /* ALLOW_EMPTY_CREDENTIALS */ if (retval) { failure(FAILED_AUTHORIZATION, "LCMAPS failed authorization."); } retval=lcmaps_term(); if (retval) { failure(FAILED_SERVER, "LCMAPS termination failure."); } } #else /* LINKED_LCMAPS */ lcmapsmod_name="/usr/lib/lcmaps/lcmaps.mod"; { void *handle; char *error; int retval; int (*LcmapsInit)(FILE *); int (*LcmapsTerm)(); #if ALLOW_EMPTY_CREDENTIALS int (*LcmapsRun)(char*, gss_cred_id_t, char*); notice(0,"temporarily ALLOW empty credentials"); #else int (*LcmapsRun)(gss_cred_id_t, char*); #endif notice2(0,"lcmapsmod_name = %s",lcmapsmod_name); handle = dlopen(lcmapsmod_name,RTLD_LAZY|RTLD_GLOBAL); if (!handle) { notice2(0,"dlopen error: %s",dlerror()); failure2(FAILED_SERVER,"Cannot open LCMAPS module of %s",lcmapsmod_name); } else { /* Check the symbols */ LcmapsInit=dlsym(handle,"lcmaps_init"); if ((error = dlerror()) != NULL) { notice2(0,"dlsym error: %s",error); dlclose(handle); failure(FAILED_SERVER,"LCMAPS module not compliant."); } LcmapsRun=dlsym(handle,"lcmaps_run"); if ((error = dlerror()) != NULL) { notice2(0,"dlsym error: %s",error); dlclose(handle); failure(FAILED_SERVER,"LCMAPS module not compliant."); } LcmapsTerm=dlsym(handle,"lcmaps_term"); if ((error = dlerror()) != NULL) { notice2(0,"dlsym error: %s",error); dlclose(handle); failure(FAILED_SERVER,"LCMAPS module not compliant."); } /* Initialize, send authorization request to and terminate the LCMAPS */ retval=(*LcmapsInit)(usrlog_fp); if (retval) { dlclose(handle); failure(FAILED_SERVER, "LCMAPS initialization failure."); } #if ALLOW_EMPTY_CREDENTIALS retval=(*LcmapsRun)(client_name, delegated_cred_handle, lcmaps_request); #else retval=(*LcmapsRun)(delegated_cred_handle, lcmaps_request); #endif if (retval) { if ((*LcmapsTerm)()) { dlclose(handle); failure(FAILED_SERVER, "LCMAPS termination failure."); } dlclose(handle); failure(FAILED_NOLOGIN, "LCMAPS failed user mapping."); } retval=(*LcmapsTerm)(); if (retval) { dlclose(handle); failure(FAILED_SERVER, "LCMAPS termination failure."); } dlclose(handle); } } #endif /* LINKED_LCMAPS */ fprintf(usrlog_fp,"return value= %d\n",retval); return 0; } /****************************************************************************** Function: notice() Description: Parameters: prty is the syslog priority, but if = 0, then dont syslog. Returns: ******************************************************************************/ static void notice(int prty, char * s) { { fprintf(usrlog_fp, "Notice: %d: %s\n", prty, s); } } /* notice() */ /****************************************************************************** Function: failure() Description: Parameters: Returns: ******************************************************************************/ static void failure(short failure_type, char * s) { fprintf(stderr,"Failure: %s\n", s); { fprintf(usrlog_fp, "Failure: %s\n", s); } exit(1); } /* failure() */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/src/lcmaps_test.c,v $ $Date: 2013-11-29 12:23:41 +0100 (Fri, 29 Nov 2013) $ $Revision: 17191 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/configure0000744001726200004540000237576112471136673011675 00000000000000#! /bin/sh # From configure.ac Revision: 17727 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for lcmaps 1.6.6. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # # Copyright (c) 2009 The EU EGEE Project # See LICENCE file for details # ## -------------------- ## ## 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 # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # 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 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+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} 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 test -x / || 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 : export CONFIG_SHELL # 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 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+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 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 about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a 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_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_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; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # 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 -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' 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 as_test_x='test -x' as_executable_p=as_fn_executable_p # 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 &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='lcmaps' PACKAGE_TARNAME='lcmaps' PACKAGE_VERSION='1.6.6' PACKAGE_STRING='lcmaps 1.6.6' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/lcmaps_config.h.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS LCMAPS_PATCH_VERSION LCMAPS_MINOR_VERSION LCMAPS_MAJOR_VERSION LCMAPS_MOD_HOME LCMAPS_LIB_HOME LCMAPS_ETC_HOME ADD_THESE_DEFINES LCMAPS_FLAVOUR_NAME LCMAPS_FLAVOUR LCMAPS_GSI_MODE_FALSE LCMAPS_GSI_MODE_TRUE VOMS_STATIC_NOTHR_LIBS VOMS_STATIC_THR_LIBS VOMS_CPP_NOTHR_LIBS VOMS_CPP_THR_LIBS VOMS_NOTHR_LIBS VOMS_THR_LIBS VOMS_STATIC_LIBS VOMS_CPP_LIBS VOMS_LIBS VOMS_CFLAGS GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS GLOBUS_GSI_CREDENTIAL_THR_LIBS GLOBUS_GSI_CREDENTIAL_THR_CFLAGS GLOBUS_GSI_CREDENTIAL_LIBS GLOBUS_GSI_CREDENTIAL_CFLAGS GLOBUS_GSS_ASSIST_NOTHR_LIBS GLOBUS_GSS_ASSIST_NOTHR_CFLAGS GLOBUS_GSS_ASSIST_THR_LIBS GLOBUS_GSS_ASSIST_THR_CFLAGS GLOBUS_GSS_ASSIST_LIBS GLOBUS_GSS_ASSIST_CFLAGS GLOBUS_GSSAPI_GSI_NOTHR_LIBS GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS GLOBUS_GSSAPI_GSI_THR_LIBS GLOBUS_GSSAPI_GSI_THR_CFLAGS GLOBUS_GSSAPI_GSI_LIBS GLOBUS_GSSAPI_GSI_CFLAGS GLOBUS_COMMON_NOTHR_LIBS GLOBUS_COMMON_NOTHR_CFLAGS GLOBUS_COMMON_THR_LIBS GLOBUS_COMMON_THR_CFLAGS GLOBUS_COMMON_LIBS GLOBUS_COMMON_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG GLOBUS_NOTHR_FLAVOR GLOBUS_THR_FLAVOR GLOBUS_FLAVOR CRYPTO_LIBS SHREXT ENABLE_HEADERS_FALSE ENABLE_HEADERS_TRUE DL_LIBS LEX_HAS_D_FALSE LEX_HAS_D_TRUE LEXLIB LEX_OUTPUT_ROOT LEX YFLAGS YACC CXXCPP CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL LN_S 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 DISTBIN WORKDIR AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V 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_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_headers enable_gsi_mode with_globus_prefix with_globus_libdir with_globus_flavor with_globus_thr_flavor with_globus_nothr_flavor with_globus_flavorincdir with_voms_prefix with_voms_includes with_voms_libdir enable_osg with_lcmaps_moduledir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CPP CXXCPP YACC YFLAGS PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLOBUS_COMMON_CFLAGS GLOBUS_COMMON_LIBS GLOBUS_GSSAPI_GSI_CFLAGS GLOBUS_GSSAPI_GSI_LIBS GLOBUS_GSS_ASSIST_CFLAGS GLOBUS_GSS_ASSIST_LIBS GLOBUS_GSI_CREDENTIAL_CFLAGS GLOBUS_GSI_CREDENTIAL_LIBS VOMS_CFLAGS VOMS_LIBS' # 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 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 lcmaps 1.6.6 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/lcmaps] --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 lcmaps 1.6.6:";; 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] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --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) --enable-headers build headers --enable-gsi-mode create lcmaps flavour that provides a GSI interface (default) --enable-osg Enables the Open Science Grid specific build option 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-globus-prefix=PFX prefix where GLOBUS is installed. --with-globus-libdir=DIR directory where GLOBUS libraries are installed (default either GLOBUS-PREFIX/lib or GLOBUS-PREFIX/lib64). --with-globus-flavor globus flavor --with-globus-thr-flavor globus threaded flavor --with-globus-nothr-flavor globus non-threaded flavor --with-globus-flavorincdir flavored includedir, i.e. location of globus_config.h --with-voms-prefix=PFX prefix where VOMS is installed (default is /usr) --with-voms-includes=DIR directory where VOMS headers are installed (default is VOMS-PREFIX/include) --with-voms-libdir=DIR directory where VOMS libraries are installed (default is VOMS-PREFIX/lib or VOMS_PREFIX/lib64) --with-lcmaps-moduledir=DIR Specify the default install location of the LCMAPS plug-ins, when relative: prefix with LIBDIR [default=LIBDIR/lcmaps] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor CXXCPP C++ preprocessor YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GLOBUS_COMMON_CFLAGS C compiler flags for GLOBUS_COMMON, overriding pkg-config GLOBUS_COMMON_LIBS linker flags for GLOBUS_COMMON, overriding pkg-config GLOBUS_GSSAPI_GSI_CFLAGS C compiler flags for GLOBUS_GSSAPI_GSI, overriding pkg-config GLOBUS_GSSAPI_GSI_LIBS linker flags for GLOBUS_GSSAPI_GSI, overriding pkg-config GLOBUS_GSS_ASSIST_CFLAGS C compiler flags for GLOBUS_GSS_ASSIST, overriding pkg-config GLOBUS_GSS_ASSIST_LIBS linker flags for GLOBUS_GSS_ASSIST, overriding pkg-config GLOBUS_GSI_CREDENTIAL_CFLAGS C compiler flags for GLOBUS_GSI_CREDENTIAL, overriding pkg-config GLOBUS_GSI_CREDENTIAL_LIBS linker flags for GLOBUS_GSI_CREDENTIAL, overriding pkg-config VOMS_CFLAGS C compiler flags for VOMS, overriding pkg-config VOMS_LIBS linker flags for VOMS, overriding pkg-config 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 the package provider. _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 lcmaps configure 1.6.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Copyright (c) 2009 The EU EGEE Project See LICENCE file for details _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 || 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 declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #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 || 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 # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $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 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $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 eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { 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 eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=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 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_type 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 lcmaps $as_me 1.6.6, which was generated by GNU Autoconf 2.69. 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 am__api_version='1.13' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$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. # 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 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else 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; } # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file 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 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 if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done 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; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file 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 --is-lightweight"; then am_missing_run="$MISSING " 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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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; } 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 as_fn_executable_p "$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 # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' 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='lcmaps' VERSION='1.6.6' 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"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # 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}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Notices. #Environment. WORKDIR=`pwd` DISTBIN=$WORKDIR/../../dist # Checks for programs. 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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $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 as_fn_executable_p "$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 as_fn_executable_p "$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 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 #include struct stat; /* 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 10 /bin/sh. echo '/* dummy */' > 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 as_fn_executable_p "$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 as_fn_executable_p "$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 10 /bin/sh. echo '/* dummy */' > 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 { $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 { $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 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" # 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 # 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" as_fn_executable_p "$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" as_fn_executable_p "$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" as_fn_executable_p "$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" as_fn_executable_p "$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 &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 &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 as_fn_executable_p "$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 as_fn_executable_p "$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; } # 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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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*|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" ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; 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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 as_fn_executable_p "$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 to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #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 _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 to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #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 _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 #include #include #include 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 _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 _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 #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF 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 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.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # 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="$sys_lib_dlsearch_path_spec $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 #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* 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 #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* 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 to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #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 _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 to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #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 _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 &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 &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 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.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # 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="$sys_lib_dlsearch_path_spec $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: for ac_prog in 'bison -y' byacc 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_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$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 YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" yacc_version=$($YACC --version 2> /dev/null|head -1|sed 's/[^0-9]\+//') if test "x$yacc_version" != "x"; then yacc_major=$(echo $yacc_version|cut -d. -f1) yacc_minor=$(echo $yacc_version|cut -d. -f2) { $as_echo "$as_me:${as_lineno-$LINENO}: yacc is \"$YACC\" version is $yacc_major.$yacc_minor" >&5 $as_echo "$as_me: yacc is \"$YACC\" version is $yacc_major.$yacc_minor" >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: yacc is \"$YACC\" version is unknown" >&5 $as_echo "$as_me: yacc is \"$YACC\" version is unknown" >&6;} fi for ac_prog in flex lex 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_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$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 LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" 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 "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "#define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi if test "$LEX"="flex"; then if $LEX -DTEST -V > /dev/null 2> /dev/null; then LEX_HAS_D_TRUE= LEX_HAS_D_FALSE='#' else LEX_HAS_D_TRUE='#' LEX_HAS_D_FALSE= fi fi # Checks for libraries. # dlopen library { $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 : DL_LIBS=-ldl else as_fn_error $? "cannot find libdl" "$LINENO" 5 fi # Checks for header files. for ac_header in dlfcn.h stdlib.h string.h syslog.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$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 # Checks for typedefs, structures, and compiler characteristics. ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # Checks for library functions. for ac_func in malloc realloc setenv strchr strcspn strdup strerror strpbrk strspn strtol getgrouplist do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Building headers mode enable_build_headers_default=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable building header files" >&5 $as_echo_n "checking whether to enable building header files... " >&6; } # Check whether --enable-headers was given. if test "${enable_headers+set}" = set; then : enableval=$enable_headers; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } enable_build_headers="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_build_headers_default" >&5 $as_echo "$enable_build_headers_default" >&6; } enable_build_headers=$enable_build_headers_default fi # Building GLOBUS mode enable_gsi_mode_default=yes # Check whether --enable-gsi-mode was given. if test "${enable_gsi_mode+set}" = set; then : enableval=$enable_gsi_mode; enable_gsi_mode=$enableval else enable_gsi_mode=$enable_gsi_mode_default fi # When building headers only if test "x$enable_build_headers" = "xyes"; then ENABLE_HEADERS_TRUE= ENABLE_HEADERS_FALSE='#' else ENABLE_HEADERS_TRUE='#' ENABLE_HEADERS_FALSE= fi # Check whether --with-globus_prefix was given. if test "${with_globus_prefix+set}" = set; then : withval=$with_globus_prefix; ac_globus_prefix=$with_globus_prefix else ac_globus_prefix=${GLOBUS_LOCATION:-} fi # Check whether --with-globus_libdir was given. if test "${with_globus_libdir+set}" = set; then : withval=$with_globus_libdir; ac_globus_libdir=$with_globus_libdir fi # Check whether --with-globus_flavor was given. if test "${with_globus_flavor+set}" = set; then : withval=$with_globus_flavor; else with_globus_flavor=${GLOBUS_FLAVOR:-} fi # Check whether --with-globus_thr_flavor was given. if test "${with_globus_thr_flavor+set}" = set; then : withval=$with_globus_thr_flavor; else with_globus_thr_flavor=${GLOBUS_FLAVOR:-} fi # Check whether --with-globus_nothr_flavor was given. if test "${with_globus_nothr_flavor+set}" = set; then : withval=$with_globus_nothr_flavor; else with_globus_nothr_flavor=${GLOBUS_FLAVOR:-} fi # Check whether --with-globus_flavorincdir was given. if test "${with_globus_flavorincdir+set}" = set; then : withval=$with_globus_flavorincdir; ac_globus_flavorincdir=$with_globus_flavorincdir else with_globus_flavorincdir=${GLOBUS_FLAVOR:-} fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; 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_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$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 PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; 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_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$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 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" 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 PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; 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; } PKG_CONFIG="" fi fi if test "x$enable_build_headers" = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: \"building headers\"" >&5 $as_echo "$as_me: \"building headers\"" >&6;} LCMAPS_FLAVOUR="" LCMAPS_FLAVOUR_NAME="" $as_echo "#define ENABLE_HEADERS 1" >>confdefs.h else # Find proper shared library extension eval SHREXT=$shrext_cmds # Configuration items ac_config_files="$ac_config_files src/Makefile" ac_config_files="$ac_config_files examples/Makefile" ac_config_files="$ac_config_files etc/Makefile" $as_echo "#define ENABLE_HEADERS 0" >>confdefs.h if test "x$enable_gsi_mode" = "xyes"; then : LCMAPS_FLAVOUR="" LCMAPS_FLAVOUR_NAME="" $as_echo "#define LCMAPS_GSI_MODE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: Creating GSI flavour of LCMAPS" >&5 $as_echo "Creating GSI flavour of LCMAPS" >&6; } # not sure what canonical symbol we should check for here # NOTE: we should check for libcrypto, but presumably due to a clash # with globus linking explicitly against libcrypto leads to a segv... { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X509_free in -lcrypto" >&5 $as_echo_n "checking for X509_free in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_X509_free+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $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 X509_free (); int main () { return X509_free (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_X509_free=yes else ac_cv_lib_crypto_X509_free=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_crypto_X509_free" >&5 $as_echo "$ac_cv_lib_crypto_X509_free" >&6; } if test "x$ac_cv_lib_crypto_X509_free" = xyes; then : CRYPTO_LIBS=-lcrypto else as_fn_error $? "cannot find libcrypto" "$LINENO" 5 fi # Check globus modules if test "x$globus_tested" = "x"; then : globus_tested="yes" if test "x$with_globus_thr_flavor" != "x" ; then if test "x$with_globus_nothr_flavor" != "x" -o test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_thr_flavor GLOBUS_THR_FLAVOR=$with_globus_thr_flavor elif test "x$with_globus_nothr_flavor" != "x" ; then if test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_nothr_flavor GLOBUS_NOTHR_FLAVOR=$with_globus_nothr_flavor elif test "x$with_globus_flavor" != "x" ; then ac_globus_flavor=$with_globus_flavor GLOBUS_FLAVOR=$with_globus_flavor fi if test "x$ac_globus_prefix" = "x" -a -d /usr/include/globus ; then ac_globus_prefix=/usr fi if test "x$ac_globus_prefix" = "x" -a -d /opt/globus ; then ac_globus_prefix=/opt/globus fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for globus version" >&5 $as_echo_n "checking for globus version... " >&6; } if test "x$ac_globus_prefix" = "x" ; then ac_globus_version_script=`which globus-version 2> /dev/null` else ac_globus_version_script=$ac_globus_prefix/bin/globus-version fi if test "x$ac_globus_version_script" != "x" ; then ac_globus_version=`grep 'GLOBUS_VERSION=' $ac_globus_version_script | head -1 | cut -d'"' -f2` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_globus_version" >&5 $as_echo "$ac_globus_version" >&6; } if test "x$ac_globus_version" != "x" ; then ac_globus_major=`echo $ac_globus_version|cut -d. -f1` ac_globus_minor=`echo $ac_globus_version|cut -d. -f2` ac_globus_release=`echo $ac_globus_version|cut -d. -f3` fi if test "x$ac_globus_prefix" != "x" ; then if test "x$ac_globus_libdir" = "x" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_globus_prefix/lib64 \ -a ! -h $ac_globus_prefix/lib64 ; then num=`find $ac_globus_prefix/lib64 -name "libglobus*"|wc -l` if test $num -gt 0 ; then ac_globus_libdir="$ac_globus_prefix/lib64" else ac_globus_libdir="$ac_globus_prefix/lib" fi else ac_globus_libdir="$ac_globus_prefix/lib" fi fi ac_globus_ldflags="-L$ac_globus_libdir" if test -d "$ac_globus_prefix/include/globus" ; then ac_globus_cflags=-I$ac_globus_prefix/include/globus if test "x$ac_globus_flavorincdir" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_flavorincdir" elif test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_prefix/include/globus/$ac_globus_flavor" else ac_globus_cflags="$ac_globus_cflags -I$ac_globus_libdir/globus/include" fi ac_globus_libsuffix="" else if test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags=-I$ac_globus_prefix/include/$ac_globus_flavor ac_globus_libsuffix=_$ac_globus_flavor elif test -d "$ac_globus_prefix/include"; then ac_globus_cflags=-I$ac_globus_prefix/include else ac_globus_cflags="" ac_globus_libsuffix="" fi fi fi fi if test "x$with_globus_prefix" = "x" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_COMMON" >&5 $as_echo_n "checking for GLOBUS_COMMON... " >&6; } if test -n "$GLOBUS_COMMON_CFLAGS"; then pkg_cv_GLOBUS_COMMON_CFLAGS="$GLOBUS_COMMON_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-common\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-common") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_COMMON_CFLAGS=`$PKG_CONFIG --cflags "globus-common" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_COMMON_LIBS"; then pkg_cv_GLOBUS_COMMON_LIBS="$GLOBUS_COMMON_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-common\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-common") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_COMMON_LIBS=`$PKG_CONFIG --libs "globus-common" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_COMMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-common" 2>&1` else GLOBUS_COMMON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-common" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_COMMON_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_COMMON_CFLAGS=$pkg_cv_GLOBUS_COMMON_CFLAGS GLOBUS_COMMON_LIBS=$pkg_cv_GLOBUS_COMMON_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi if test "$have_globus_mod" = "no" ; then ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_common" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_common$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_COMMON at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_COMMON at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_COMMON_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_COMMON_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_COMMON_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_COMMON_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_COMMON_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_COMMON_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi fi else ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_common" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_common$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_COMMON at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_COMMON at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_COMMON_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_COMMON_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_COMMON_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_COMMON_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_COMMON_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_COMMON_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi if test "$have_globus_mod" = "no" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_COMMON" >&5 $as_echo_n "checking for GLOBUS_COMMON... " >&6; } if test -n "$GLOBUS_COMMON_CFLAGS"; then pkg_cv_GLOBUS_COMMON_CFLAGS="$GLOBUS_COMMON_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-common\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-common") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_COMMON_CFLAGS=`$PKG_CONFIG --cflags "globus-common" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_COMMON_LIBS"; then pkg_cv_GLOBUS_COMMON_LIBS="$GLOBUS_COMMON_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-common\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-common") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_COMMON_LIBS=`$PKG_CONFIG --libs "globus-common" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_COMMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-common" 2>&1` else GLOBUS_COMMON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-common" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_COMMON_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_COMMON_CFLAGS=$pkg_cv_GLOBUS_COMMON_CFLAGS GLOBUS_COMMON_LIBS=$pkg_cv_GLOBUS_COMMON_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi fi fi have_globus_common=$have_globus_mod if test "x$have_globus_common" != "xyes" ; then { { $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 globus-common found\" See \`config.log' for more details" "$LINENO" 5; } fi if test "x$globus_tested" = "x"; then : globus_tested="yes" if test "x$with_globus_thr_flavor" != "x" ; then if test "x$with_globus_nothr_flavor" != "x" -o test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_thr_flavor GLOBUS_THR_FLAVOR=$with_globus_thr_flavor elif test "x$with_globus_nothr_flavor" != "x" ; then if test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_nothr_flavor GLOBUS_NOTHR_FLAVOR=$with_globus_nothr_flavor elif test "x$with_globus_flavor" != "x" ; then ac_globus_flavor=$with_globus_flavor GLOBUS_FLAVOR=$with_globus_flavor fi if test "x$ac_globus_prefix" = "x" -a -d /usr/include/globus ; then ac_globus_prefix=/usr fi if test "x$ac_globus_prefix" = "x" -a -d /opt/globus ; then ac_globus_prefix=/opt/globus fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for globus version" >&5 $as_echo_n "checking for globus version... " >&6; } if test "x$ac_globus_prefix" = "x" ; then ac_globus_version_script=`which globus-version 2> /dev/null` else ac_globus_version_script=$ac_globus_prefix/bin/globus-version fi if test "x$ac_globus_version_script" != "x" ; then ac_globus_version=`grep 'GLOBUS_VERSION=' $ac_globus_version_script | head -1 | cut -d'"' -f2` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_globus_version" >&5 $as_echo "$ac_globus_version" >&6; } if test "x$ac_globus_version" != "x" ; then ac_globus_major=`echo $ac_globus_version|cut -d. -f1` ac_globus_minor=`echo $ac_globus_version|cut -d. -f2` ac_globus_release=`echo $ac_globus_version|cut -d. -f3` fi if test "x$ac_globus_prefix" != "x" ; then if test "x$ac_globus_libdir" = "x" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_globus_prefix/lib64 \ -a ! -h $ac_globus_prefix/lib64 ; then num=`find $ac_globus_prefix/lib64 -name "libglobus*"|wc -l` if test $num -gt 0 ; then ac_globus_libdir="$ac_globus_prefix/lib64" else ac_globus_libdir="$ac_globus_prefix/lib" fi else ac_globus_libdir="$ac_globus_prefix/lib" fi fi ac_globus_ldflags="-L$ac_globus_libdir" if test -d "$ac_globus_prefix/include/globus" ; then ac_globus_cflags=-I$ac_globus_prefix/include/globus if test "x$ac_globus_flavorincdir" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_flavorincdir" elif test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_prefix/include/globus/$ac_globus_flavor" else ac_globus_cflags="$ac_globus_cflags -I$ac_globus_libdir/globus/include" fi ac_globus_libsuffix="" else if test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags=-I$ac_globus_prefix/include/$ac_globus_flavor ac_globus_libsuffix=_$ac_globus_flavor elif test -d "$ac_globus_prefix/include"; then ac_globus_cflags=-I$ac_globus_prefix/include else ac_globus_cflags="" ac_globus_libsuffix="" fi fi fi fi if test "x$with_globus_prefix" = "x" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSSAPI_GSI" >&5 $as_echo_n "checking for GLOBUS_GSSAPI_GSI... " >&6; } if test -n "$GLOBUS_GSSAPI_GSI_CFLAGS"; then pkg_cv_GLOBUS_GSSAPI_GSI_CFLAGS="$GLOBUS_GSSAPI_GSI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gssapi-gsi\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gssapi-gsi") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSSAPI_GSI_CFLAGS=`$PKG_CONFIG --cflags "globus-gssapi-gsi" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_GSSAPI_GSI_LIBS"; then pkg_cv_GLOBUS_GSSAPI_GSI_LIBS="$GLOBUS_GSSAPI_GSI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gssapi-gsi\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gssapi-gsi") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSSAPI_GSI_LIBS=`$PKG_CONFIG --libs "globus-gssapi-gsi" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_GSSAPI_GSI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-gssapi-gsi" 2>&1` else GLOBUS_GSSAPI_GSI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-gssapi-gsi" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_GSSAPI_GSI_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_GSSAPI_GSI_CFLAGS=$pkg_cv_GLOBUS_GSSAPI_GSI_CFLAGS GLOBUS_GSSAPI_GSI_LIBS=$pkg_cv_GLOBUS_GSSAPI_GSI_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi if test "$have_globus_mod" = "no" ; then ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_gssapi_gsi" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_gssapi_gsi$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSSAPI_GSI at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_GSSAPI_GSI at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_GSSAPI_GSI_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSSAPI_GSI_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_GSSAPI_GSI_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_GSSAPI_GSI_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSSAPI_GSI_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi fi else ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_gssapi_gsi" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_gssapi_gsi$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSSAPI_GSI at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_GSSAPI_GSI at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_GSSAPI_GSI_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSSAPI_GSI_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_GSSAPI_GSI_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_GSSAPI_GSI_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSSAPI_GSI_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi if test "$have_globus_mod" = "no" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSSAPI_GSI" >&5 $as_echo_n "checking for GLOBUS_GSSAPI_GSI... " >&6; } if test -n "$GLOBUS_GSSAPI_GSI_CFLAGS"; then pkg_cv_GLOBUS_GSSAPI_GSI_CFLAGS="$GLOBUS_GSSAPI_GSI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gssapi-gsi\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gssapi-gsi") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSSAPI_GSI_CFLAGS=`$PKG_CONFIG --cflags "globus-gssapi-gsi" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_GSSAPI_GSI_LIBS"; then pkg_cv_GLOBUS_GSSAPI_GSI_LIBS="$GLOBUS_GSSAPI_GSI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gssapi-gsi\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gssapi-gsi") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSSAPI_GSI_LIBS=`$PKG_CONFIG --libs "globus-gssapi-gsi" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_GSSAPI_GSI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-gssapi-gsi" 2>&1` else GLOBUS_GSSAPI_GSI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-gssapi-gsi" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_GSSAPI_GSI_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_GSSAPI_GSI_CFLAGS=$pkg_cv_GLOBUS_GSSAPI_GSI_CFLAGS GLOBUS_GSSAPI_GSI_LIBS=$pkg_cv_GLOBUS_GSSAPI_GSI_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi fi fi have_globus_gssapi_gsi=$have_globus_mod if test "x$have_globus_gssapi_gsi" != "xyes" ; then { { $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 globus-gssapi-gsi found\" See \`config.log' for more details" "$LINENO" 5; } fi if test "x$globus_tested" = "x"; then : globus_tested="yes" if test "x$with_globus_thr_flavor" != "x" ; then if test "x$with_globus_nothr_flavor" != "x" -o test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_thr_flavor GLOBUS_THR_FLAVOR=$with_globus_thr_flavor elif test "x$with_globus_nothr_flavor" != "x" ; then if test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_nothr_flavor GLOBUS_NOTHR_FLAVOR=$with_globus_nothr_flavor elif test "x$with_globus_flavor" != "x" ; then ac_globus_flavor=$with_globus_flavor GLOBUS_FLAVOR=$with_globus_flavor fi if test "x$ac_globus_prefix" = "x" -a -d /usr/include/globus ; then ac_globus_prefix=/usr fi if test "x$ac_globus_prefix" = "x" -a -d /opt/globus ; then ac_globus_prefix=/opt/globus fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for globus version" >&5 $as_echo_n "checking for globus version... " >&6; } if test "x$ac_globus_prefix" = "x" ; then ac_globus_version_script=`which globus-version 2> /dev/null` else ac_globus_version_script=$ac_globus_prefix/bin/globus-version fi if test "x$ac_globus_version_script" != "x" ; then ac_globus_version=`grep 'GLOBUS_VERSION=' $ac_globus_version_script | head -1 | cut -d'"' -f2` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_globus_version" >&5 $as_echo "$ac_globus_version" >&6; } if test "x$ac_globus_version" != "x" ; then ac_globus_major=`echo $ac_globus_version|cut -d. -f1` ac_globus_minor=`echo $ac_globus_version|cut -d. -f2` ac_globus_release=`echo $ac_globus_version|cut -d. -f3` fi if test "x$ac_globus_prefix" != "x" ; then if test "x$ac_globus_libdir" = "x" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_globus_prefix/lib64 \ -a ! -h $ac_globus_prefix/lib64 ; then num=`find $ac_globus_prefix/lib64 -name "libglobus*"|wc -l` if test $num -gt 0 ; then ac_globus_libdir="$ac_globus_prefix/lib64" else ac_globus_libdir="$ac_globus_prefix/lib" fi else ac_globus_libdir="$ac_globus_prefix/lib" fi fi ac_globus_ldflags="-L$ac_globus_libdir" if test -d "$ac_globus_prefix/include/globus" ; then ac_globus_cflags=-I$ac_globus_prefix/include/globus if test "x$ac_globus_flavorincdir" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_flavorincdir" elif test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_prefix/include/globus/$ac_globus_flavor" else ac_globus_cflags="$ac_globus_cflags -I$ac_globus_libdir/globus/include" fi ac_globus_libsuffix="" else if test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags=-I$ac_globus_prefix/include/$ac_globus_flavor ac_globus_libsuffix=_$ac_globus_flavor elif test -d "$ac_globus_prefix/include"; then ac_globus_cflags=-I$ac_globus_prefix/include else ac_globus_cflags="" ac_globus_libsuffix="" fi fi fi fi if test "x$with_globus_prefix" = "x" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSS_ASSIST" >&5 $as_echo_n "checking for GLOBUS_GSS_ASSIST... " >&6; } if test -n "$GLOBUS_GSS_ASSIST_CFLAGS"; then pkg_cv_GLOBUS_GSS_ASSIST_CFLAGS="$GLOBUS_GSS_ASSIST_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gss-assist\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gss-assist") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSS_ASSIST_CFLAGS=`$PKG_CONFIG --cflags "globus-gss-assist" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_GSS_ASSIST_LIBS"; then pkg_cv_GLOBUS_GSS_ASSIST_LIBS="$GLOBUS_GSS_ASSIST_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gss-assist\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gss-assist") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSS_ASSIST_LIBS=`$PKG_CONFIG --libs "globus-gss-assist" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_GSS_ASSIST_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-gss-assist" 2>&1` else GLOBUS_GSS_ASSIST_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-gss-assist" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_GSS_ASSIST_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_GSS_ASSIST_CFLAGS=$pkg_cv_GLOBUS_GSS_ASSIST_CFLAGS GLOBUS_GSS_ASSIST_LIBS=$pkg_cv_GLOBUS_GSS_ASSIST_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi if test "$have_globus_mod" = "no" ; then ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_gss_assist" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_gss_assist$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSS_ASSIST at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_GSS_ASSIST at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_GSS_ASSIST_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSS_ASSIST_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_GSS_ASSIST_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSS_ASSIST_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_GSS_ASSIST_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSS_ASSIST_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi fi else ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_gss_assist" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_gss_assist$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSS_ASSIST at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_GSS_ASSIST at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_GSS_ASSIST_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSS_ASSIST_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_GSS_ASSIST_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSS_ASSIST_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_GSS_ASSIST_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSS_ASSIST_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi if test "$have_globus_mod" = "no" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSS_ASSIST" >&5 $as_echo_n "checking for GLOBUS_GSS_ASSIST... " >&6; } if test -n "$GLOBUS_GSS_ASSIST_CFLAGS"; then pkg_cv_GLOBUS_GSS_ASSIST_CFLAGS="$GLOBUS_GSS_ASSIST_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gss-assist\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gss-assist") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSS_ASSIST_CFLAGS=`$PKG_CONFIG --cflags "globus-gss-assist" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_GSS_ASSIST_LIBS"; then pkg_cv_GLOBUS_GSS_ASSIST_LIBS="$GLOBUS_GSS_ASSIST_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gss-assist\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gss-assist") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSS_ASSIST_LIBS=`$PKG_CONFIG --libs "globus-gss-assist" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_GSS_ASSIST_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-gss-assist" 2>&1` else GLOBUS_GSS_ASSIST_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-gss-assist" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_GSS_ASSIST_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_GSS_ASSIST_CFLAGS=$pkg_cv_GLOBUS_GSS_ASSIST_CFLAGS GLOBUS_GSS_ASSIST_LIBS=$pkg_cv_GLOBUS_GSS_ASSIST_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi fi fi have_globus_gss_assist=$have_globus_mod if test "x$have_globus_gss_assist" != "xyes" ; then { { $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 globus-gss-assist found\" See \`config.log' for more details" "$LINENO" 5; } fi if test "x$globus_tested" = "x"; then : globus_tested="yes" if test "x$with_globus_thr_flavor" != "x" ; then if test "x$with_globus_nothr_flavor" != "x" -o test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_thr_flavor GLOBUS_THR_FLAVOR=$with_globus_thr_flavor elif test "x$with_globus_nothr_flavor" != "x" ; then if test "x$with_globus_flavor" != "x" ; then { { $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 build against multiple flavor types See \`config.log' for more details" "$LINENO" 5; } fi ac_globus_flavor=$with_globus_nothr_flavor GLOBUS_NOTHR_FLAVOR=$with_globus_nothr_flavor elif test "x$with_globus_flavor" != "x" ; then ac_globus_flavor=$with_globus_flavor GLOBUS_FLAVOR=$with_globus_flavor fi if test "x$ac_globus_prefix" = "x" -a -d /usr/include/globus ; then ac_globus_prefix=/usr fi if test "x$ac_globus_prefix" = "x" -a -d /opt/globus ; then ac_globus_prefix=/opt/globus fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for globus version" >&5 $as_echo_n "checking for globus version... " >&6; } if test "x$ac_globus_prefix" = "x" ; then ac_globus_version_script=`which globus-version 2> /dev/null` else ac_globus_version_script=$ac_globus_prefix/bin/globus-version fi if test "x$ac_globus_version_script" != "x" ; then ac_globus_version=`grep 'GLOBUS_VERSION=' $ac_globus_version_script | head -1 | cut -d'"' -f2` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_globus_version" >&5 $as_echo "$ac_globus_version" >&6; } if test "x$ac_globus_version" != "x" ; then ac_globus_major=`echo $ac_globus_version|cut -d. -f1` ac_globus_minor=`echo $ac_globus_version|cut -d. -f2` ac_globus_release=`echo $ac_globus_version|cut -d. -f3` fi if test "x$ac_globus_prefix" != "x" ; then if test "x$ac_globus_libdir" = "x" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_globus_prefix/lib64 \ -a ! -h $ac_globus_prefix/lib64 ; then num=`find $ac_globus_prefix/lib64 -name "libglobus*"|wc -l` if test $num -gt 0 ; then ac_globus_libdir="$ac_globus_prefix/lib64" else ac_globus_libdir="$ac_globus_prefix/lib" fi else ac_globus_libdir="$ac_globus_prefix/lib" fi fi ac_globus_ldflags="-L$ac_globus_libdir" if test -d "$ac_globus_prefix/include/globus" ; then ac_globus_cflags=-I$ac_globus_prefix/include/globus if test "x$ac_globus_flavorincdir" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_flavorincdir" elif test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags="$ac_globus_cflags -I$ac_globus_prefix/include/globus/$ac_globus_flavor" else ac_globus_cflags="$ac_globus_cflags -I$ac_globus_libdir/globus/include" fi ac_globus_libsuffix="" else if test "x$ac_globus_flavor" != "x" ; then ac_globus_cflags=-I$ac_globus_prefix/include/$ac_globus_flavor ac_globus_libsuffix=_$ac_globus_flavor elif test -d "$ac_globus_prefix/include"; then ac_globus_cflags=-I$ac_globus_prefix/include else ac_globus_cflags="" ac_globus_libsuffix="" fi fi fi fi if test "x$with_globus_prefix" = "x" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSI_CREDENTIAL" >&5 $as_echo_n "checking for GLOBUS_GSI_CREDENTIAL... " >&6; } if test -n "$GLOBUS_GSI_CREDENTIAL_CFLAGS"; then pkg_cv_GLOBUS_GSI_CREDENTIAL_CFLAGS="$GLOBUS_GSI_CREDENTIAL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gsi-credential\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gsi-credential") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSI_CREDENTIAL_CFLAGS=`$PKG_CONFIG --cflags "globus-gsi-credential" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_GSI_CREDENTIAL_LIBS"; then pkg_cv_GLOBUS_GSI_CREDENTIAL_LIBS="$GLOBUS_GSI_CREDENTIAL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gsi-credential\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gsi-credential") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSI_CREDENTIAL_LIBS=`$PKG_CONFIG --libs "globus-gsi-credential" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_GSI_CREDENTIAL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-gsi-credential" 2>&1` else GLOBUS_GSI_CREDENTIAL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-gsi-credential" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_GSI_CREDENTIAL_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_GSI_CREDENTIAL_CFLAGS=$pkg_cv_GLOBUS_GSI_CREDENTIAL_CFLAGS GLOBUS_GSI_CREDENTIAL_LIBS=$pkg_cv_GLOBUS_GSI_CREDENTIAL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi if test "$have_globus_mod" = "no" ; then ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_gsi_credential" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_gsi_credential$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSI_CREDENTIAL at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_GSI_CREDENTIAL at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_GSI_CREDENTIAL_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSI_CREDENTIAL_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_GSI_CREDENTIAL_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSI_CREDENTIAL_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi fi else ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS ac_save_LDFLAGS=$LDFLAGS ac_try_CFLAGS=$ac_globus_cflags if test "xglobus_gsi_credential" = "x" ; then ac_try_LIBS="" else ac_try_LIBS="-lglobus_gsi_credential$ac_globus_libsuffix" fi ac_try_CPPFLAGS=$ac_try_CFLAGS if test "x$ac_globus_libdir" != "x" ; then ac_try_LDFLAGS="$ac_globus_ldflags" if test "x$LD_LIBRARY_PATH" != "x" ; then ac_save_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH="$ac_globus_libdir:$LD_LIBRARY_PATH" else export LD_LIBRARY_PATH="$ac_globus_libdir" fi if test "x$DYLD_LIBRARY_PATH" != "x" ; then ac_save_DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH="$ac_globus_libdir:$DYLD_LIBRARY_PATH" else export DYLD_LIBRARY_PATH="$ac_globus_libdir" fi fi CFLAGS="$ac_try_CFLAGS $CFLAGS" CPPFLAGS="$ac_try_CPPFLAGS $CPPFLAGS" LIBS="$ac_try_LIBS $LIBS" LDFLAGS="$ac_try_LDFLAGS $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSI_CREDENTIAL at system default and $ac_globus_libdir" >&5 $as_echo_n "checking for GLOBUS_GSI_CREDENTIAL at system default and $ac_globus_libdir... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) {return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_mod=yes else have_mod=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mod" >&5 $as_echo "$have_mod" >&6; } if test "x$have_mod" = "xyes" ; then have_globus_mod=yes if test "x$with_globus_thr_flavor" != "x" ; then GLOBUS_GSI_CREDENTIAL_THR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSI_CREDENTIAL_THR_CFLAGS=$ac_try_CFLAGS elif test "x$with_globus_nothr_flavor" != "x" ; then GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS=$ac_try_CFLAGS else GLOBUS_GSI_CREDENTIAL_LIBS="$ac_try_LDFLAGS $ac_try_LIBS" GLOBUS_GSI_CREDENTIAL_CFLAGS=$ac_try_CFLAGS fi else have_globus_mod=no fi CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LIBS=$ac_save_LIBS LDFLAGS=$ac_save_LDFLAGS if test "x$ac_save_LD_LIBRARY_PATH" = "x" ; then unset LD_LIBRARY_PATH else LD_LIBRARY_PATH=$ac_save_LD_LIBRARY_PATH fi if test "x$ac_save_DYLD_LIBRARY_PATH" = "x" ; then unset DYLD_LIBRARY_PATH else DYLD_LIBRARY_PATH=$ac_save_DYLD_LIBRARY_PATH fi if test "$have_globus_mod" = "no" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOBUS_GSI_CREDENTIAL" >&5 $as_echo_n "checking for GLOBUS_GSI_CREDENTIAL... " >&6; } if test -n "$GLOBUS_GSI_CREDENTIAL_CFLAGS"; then pkg_cv_GLOBUS_GSI_CREDENTIAL_CFLAGS="$GLOBUS_GSI_CREDENTIAL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gsi-credential\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gsi-credential") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSI_CREDENTIAL_CFLAGS=`$PKG_CONFIG --cflags "globus-gsi-credential" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLOBUS_GSI_CREDENTIAL_LIBS"; then pkg_cv_GLOBUS_GSI_CREDENTIAL_LIBS="$GLOBUS_GSI_CREDENTIAL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"globus-gsi-credential\""; } >&5 ($PKG_CONFIG --exists --print-errors "globus-gsi-credential") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLOBUS_GSI_CREDENTIAL_LIBS=`$PKG_CONFIG --libs "globus-gsi-credential" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLOBUS_GSI_CREDENTIAL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "globus-gsi-credential" 2>&1` else GLOBUS_GSI_CREDENTIAL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "globus-gsi-credential" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLOBUS_GSI_CREDENTIAL_PKG_ERRORS" >&5 have_globus_mod=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_globus_mod=no else GLOBUS_GSI_CREDENTIAL_CFLAGS=$pkg_cv_GLOBUS_GSI_CREDENTIAL_CFLAGS GLOBUS_GSI_CREDENTIAL_LIBS=$pkg_cv_GLOBUS_GSI_CREDENTIAL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_globus_mod=yes fi fi fi have_globus_gsi_credential=$have_globus_mod if test "x$have_globus_gsi_credential" != "xyes" ; then { { $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 globus-gsi-credentials found\" See \`config.log' for more details" "$LINENO" 5; } fi # Check voms location, only check for C API have_voms=no # Check whether --with-voms-prefix was given. if test "${with_voms_prefix+set}" = set; then : withval=$with_voms_prefix; ac_voms_prefix=$withval else ac_voms_prefix=/usr fi # Check whether --with-voms-includes was given. if test "${with_voms_includes+set}" = set; then : withval=$with_voms_includes; ac_voms_includes=$withval else ac_voms_includes=$ac_voms_prefix/include fi # Check whether --with-voms-libdir was given. if test "${with_voms_libdir+set}" = set; then : withval=$with_voms_libdir; ac_voms_libdir=$withval fi have_voms_pkgconfig=no if test "x$with_voms_prefix" = "x" -a \ "x$with_voms_includes" = "x" -a \ "x$with_voms_libdir" = "x" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS" >&5 $as_echo_n "checking for VOMS... " >&6; } if test -n "$VOMS_CFLAGS"; then pkg_cv_VOMS_CFLAGS="$VOMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_CFLAGS=`$PKG_CONFIG --cflags "voms-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$VOMS_LIBS"; then pkg_cv_VOMS_LIBS="$VOMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_LIBS=`$PKG_CONFIG --libs "voms-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VOMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "voms-2.0" 2>&1` else VOMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "voms-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$VOMS_PKG_ERRORS" >&5 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS" >&5 $as_echo_n "checking for VOMS... " >&6; } if test -n "$VOMS_CFLAGS"; then pkg_cv_VOMS_CFLAGS="$VOMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_CFLAGS=`$PKG_CONFIG --cflags "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$VOMS_LIBS"; then pkg_cv_VOMS_LIBS="$VOMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_LIBS=`$PKG_CONFIG --libs "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VOMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "voms-1.0" 2>&1` else VOMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "voms-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$VOMS_PKG_ERRORS" >&5 have_voms=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_voms=no else VOMS_CFLAGS=$pkg_cv_VOMS_CFLAGS VOMS_LIBS=$pkg_cv_VOMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_voms=yes fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS" >&5 $as_echo_n "checking for VOMS... " >&6; } if test -n "$VOMS_CFLAGS"; then pkg_cv_VOMS_CFLAGS="$VOMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_CFLAGS=`$PKG_CONFIG --cflags "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$VOMS_LIBS"; then pkg_cv_VOMS_LIBS="$VOMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_LIBS=`$PKG_CONFIG --libs "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VOMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "voms-1.0" 2>&1` else VOMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "voms-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$VOMS_PKG_ERRORS" >&5 have_voms=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_voms=no else VOMS_CFLAGS=$pkg_cv_VOMS_CFLAGS VOMS_LIBS=$pkg_cv_VOMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_voms=yes fi else VOMS_CFLAGS=$pkg_cv_VOMS_CFLAGS VOMS_LIBS=$pkg_cv_VOMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_voms=yes fi if test "$have_voms" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS installation at system default and ${ac_voms_prefix}" >&5 $as_echo_n "checking for VOMS installation at system default and ${ac_voms_prefix}... " >&6; } ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS if test -n "$ac_voms_libdir" ; then VOMS_PATH_LIBS="-L$ac_voms_libdir" elif test -n "$ac_voms_prefix" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_voms_prefix/lib64 \ -a ! -h $ac_voms_prefix/lib64 ; then ac_voms_libdir="$ac_voms_prefix/lib64" else ac_voms_libdir="$ac_voms_prefix/lib" fi VOMS_PATH_LIBS="-L$ac_voms_libdir" else VOMS_PATH_LIBS="" fi if test "x$ac_voms_includes" != "x" ; then VOMS_CFLAGS="-I$ac_voms_includes" fi VOMS_LIBS="$VOMS_PATH_LIBS -lvomsc -lvomsapi" VOMS_CPP_LIBS="$VOMS_PATH_LIBS -lvomsapi" VOMS_STATIC_LIBS="$ac_voms_libdir/libvomsc.a" if test -n "$GLOBUS_THR_FLAVOR" ; then VOMS_THR_LIBS="$VOMS_PATH_LIBS -lvomsc_$GLOBUS_THR_FLAVOR" VOMS_CPP_THR_LIBS="$VOMS_PATH_LIBS -lvomsapi_$GLOBUS_THR_FLAVOR" VOMS_STATIC_THR_LIBS="$ac_voms_libdir/libvomsc_$GLOBUS_THR_FLAVOR.a" else VOMS_THR_LIBS="" VOMS_CPP_THR_LIBS="" VOMS_STATIC_THR_LIBS="" fi if test -n "$GLOBUS_NOTHR_FLAVOR" ; then VOMS_NOTHR_LIBS="$VOMS_PATH_LIBS -lvomsc_$GLOBUS_NOTHR_FLAVOR" VOMS_CPP_NOTHR_LIBS="$VOMS_PATH_LIBS -lvomsapi_$GLOBUS_NOTHR_FLAVOR" VOMS_STATIC_NOTHR_LIBS="$ac_voms_libdir/libvomsc_$GLOBUS_NOTHR_FLAVOR.a" else VOMS_NOTHR_LIBS="" VOMS_CPP_NOTHR_LIBS="" VOMS_STATIC_NOTHR_LIBS="" 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 CFLAGS="$GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS $GLOBUS_GSSAPI_GSI_CFLAGS $VOMS_CFLAGS $CFLAGS" LIBS="$VOMS_LIBS $VOMS_THR_LIBS $VOMS_NOTHR_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { struct vomsdata *voms_info = VOMS_Init("/tmp", "/tmp") ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_vomsc_valid=yes else ac_cv_vomsc_valid=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ac_save_CFLAGS LIBS=$ac_save_LIBS 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}: result: $ac_cv_vomsc_valid for c api" >&5 $as_echo "$ac_cv_vomsc_valid for c api" >&6; } if test "x$ac_cv_vomsc_valid" = "xyes" ; then have_voms=yes else VOMS_LIBS="" VOMS_THR_LIBS="" VOMS_NOTHR_LIBS="" VOMS_CPP_LIBS="" VOMS_CPP_THR_LIBS="" VOMS_CPP_NOTHR_LIBS="" VOMS_STATIC_LIBS="" VOMS_STATIC_THR_LIBS="" VOMS_STATIC_NOTHR_LIBS="" have_voms=no fi else VOMS_CPP_LIBS=${VOMS_LIBS} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS installation at system default and ${ac_voms_prefix}" >&5 $as_echo_n "checking for VOMS installation at system default and ${ac_voms_prefix}... " >&6; } ac_save_CFLAGS=$CFLAGS ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS if test -n "$ac_voms_libdir" ; then VOMS_PATH_LIBS="-L$ac_voms_libdir" elif test -n "$ac_voms_prefix" ; then if test "x$host_cpu" = "xx86_64" \ -a -e $ac_voms_prefix/lib64 \ -a ! -h $ac_voms_prefix/lib64 ; then ac_voms_libdir="$ac_voms_prefix/lib64" else ac_voms_libdir="$ac_voms_prefix/lib" fi VOMS_PATH_LIBS="-L$ac_voms_libdir" else VOMS_PATH_LIBS="" fi if test "x$ac_voms_includes" != "x" ; then VOMS_CFLAGS="-I$ac_voms_includes" fi VOMS_LIBS="$VOMS_PATH_LIBS -lvomsc -lvomsapi" VOMS_CPP_LIBS="$VOMS_PATH_LIBS -lvomsapi" VOMS_STATIC_LIBS="$ac_voms_libdir/libvomsc.a" if test -n "$GLOBUS_THR_FLAVOR" ; then VOMS_THR_LIBS="$VOMS_PATH_LIBS -lvomsc_$GLOBUS_THR_FLAVOR" VOMS_CPP_THR_LIBS="$VOMS_PATH_LIBS -lvomsapi_$GLOBUS_THR_FLAVOR" VOMS_STATIC_THR_LIBS="$ac_voms_libdir/libvomsc_$GLOBUS_THR_FLAVOR.a" else VOMS_THR_LIBS="" VOMS_CPP_THR_LIBS="" VOMS_STATIC_THR_LIBS="" fi if test -n "$GLOBUS_NOTHR_FLAVOR" ; then VOMS_NOTHR_LIBS="$VOMS_PATH_LIBS -lvomsc_$GLOBUS_NOTHR_FLAVOR" VOMS_CPP_NOTHR_LIBS="$VOMS_PATH_LIBS -lvomsapi_$GLOBUS_NOTHR_FLAVOR" VOMS_STATIC_NOTHR_LIBS="$ac_voms_libdir/libvomsc_$GLOBUS_NOTHR_FLAVOR.a" else VOMS_NOTHR_LIBS="" VOMS_CPP_NOTHR_LIBS="" VOMS_STATIC_NOTHR_LIBS="" 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 CFLAGS="$GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS $GLOBUS_GSSAPI_GSI_CFLAGS $VOMS_CFLAGS $CFLAGS" LIBS="$VOMS_LIBS $VOMS_THR_LIBS $VOMS_NOTHR_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { struct vomsdata *voms_info = VOMS_Init("/tmp", "/tmp") ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_vomsc_valid=yes else ac_cv_vomsc_valid=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ac_save_CFLAGS LIBS=$ac_save_LIBS 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}: result: $ac_cv_vomsc_valid for c api" >&5 $as_echo "$ac_cv_vomsc_valid for c api" >&6; } if test "x$ac_cv_vomsc_valid" = "xyes" ; then have_voms=yes else VOMS_LIBS="" VOMS_THR_LIBS="" VOMS_NOTHR_LIBS="" VOMS_CPP_LIBS="" VOMS_CPP_THR_LIBS="" VOMS_CPP_NOTHR_LIBS="" VOMS_STATIC_LIBS="" VOMS_STATIC_THR_LIBS="" VOMS_STATIC_NOTHR_LIBS="" have_voms=no fi if test "$have_voms" = "no" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS" >&5 $as_echo_n "checking for VOMS... " >&6; } if test -n "$VOMS_CFLAGS"; then pkg_cv_VOMS_CFLAGS="$VOMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_CFLAGS=`$PKG_CONFIG --cflags "voms-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$VOMS_LIBS"; then pkg_cv_VOMS_LIBS="$VOMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_LIBS=`$PKG_CONFIG --libs "voms-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VOMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "voms-2.0" 2>&1` else VOMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "voms-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$VOMS_PKG_ERRORS" >&5 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS" >&5 $as_echo_n "checking for VOMS... " >&6; } if test -n "$VOMS_CFLAGS"; then pkg_cv_VOMS_CFLAGS="$VOMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_CFLAGS=`$PKG_CONFIG --cflags "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$VOMS_LIBS"; then pkg_cv_VOMS_LIBS="$VOMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_LIBS=`$PKG_CONFIG --libs "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VOMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "voms-1.0" 2>&1` else VOMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "voms-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$VOMS_PKG_ERRORS" >&5 have_voms=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_voms=no else VOMS_CFLAGS=$pkg_cv_VOMS_CFLAGS VOMS_LIBS=$pkg_cv_VOMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_voms=yes fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VOMS" >&5 $as_echo_n "checking for VOMS... " >&6; } if test -n "$VOMS_CFLAGS"; then pkg_cv_VOMS_CFLAGS="$VOMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_CFLAGS=`$PKG_CONFIG --cflags "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$VOMS_LIBS"; then pkg_cv_VOMS_LIBS="$VOMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"voms-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "voms-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VOMS_LIBS=`$PKG_CONFIG --libs "voms-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then VOMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "voms-1.0" 2>&1` else VOMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "voms-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$VOMS_PKG_ERRORS" >&5 have_voms=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_voms=no else VOMS_CFLAGS=$pkg_cv_VOMS_CFLAGS VOMS_LIBS=$pkg_cv_VOMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_voms=yes fi else VOMS_CFLAGS=$pkg_cv_VOMS_CFLAGS VOMS_LIBS=$pkg_cv_VOMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_voms=yes fi if test "$have_voms" = "yes" ; then VOMS_CPP_LIBS=${VOMS_LIBS} fi fi fi VOMS_THR_LIBS=${VOMS_LIBS} VOMS_NOTHR_LIBS=${VOMS_LIBS} VOMS_CPP_THR_LIBS=${VOMS_CPP_LIBS} VOMS_CPP_NOTHR_LIBS=${VOMS_CPP_LIBS} { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"VOMS found $have_voms\"" >&5 $as_echo "\"VOMS found $have_voms\"" >&6; } if test "x$have_voms" = "xno" ; then { { $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 working voms found\" See \`config.log' for more details" "$LINENO" 5; } fi ac_config_files="$ac_config_files src/lcmaps.pc" ac_config_files="$ac_config_files src/lcmaps-gss-assist-gridmap.pc" ac_config_files="$ac_config_files src/lcmaps-return-poolindex.pc" ac_config_files="$ac_config_files src/lcmaps-return-account-from-pem.pc" ac_config_files="$ac_config_files src/lcmaps-verify-account-from-pem.pc" else LCMAPS_FLAVOUR="_without_gsi" LCMAPS_FLAVOUR_NAME="-without-gsi" PACKAGE="$PACKAGE-without-gsi" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Setting package name to $PACKAGE" >&5 $as_echo "Setting package name to $PACKAGE" >&6; } PACKAGE_TARNAME="$PACKAGE_TARNAME-without-gsi" { $as_echo "$as_me:${as_lineno-$LINENO}: result: setting package tarname $PACKAGE_TARNAME" >&5 $as_echo "setting package tarname $PACKAGE_TARNAME" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: Creating GSI-free flavour of LCMAPS" >&5 $as_echo "Creating GSI-free flavour of LCMAPS" >&6; } ac_config_files="$ac_config_files src/lcmaps-without-gsi.pc" ac_config_files="$ac_config_files src/lcmaps-gss-assist-gridmap-without-gsi.pc:src/lcmaps-gss-assist-gridmap.pc.in" ac_config_files="$ac_config_files src/lcmaps-return-poolindex-without-gsi.pc:src/lcmaps-return-poolindex.pc.in" fi fi if test x$enable_gsi_mode = xyes; then LCMAPS_GSI_MODE_TRUE= LCMAPS_GSI_MODE_FALSE='#' else LCMAPS_GSI_MODE_TRUE='#' LCMAPS_GSI_MODE_FALSE= fi # Set OSG macros when needed # Check whether --enable-osg was given. if test "${enable_osg+set}" = set; then : enableval=$enable_osg; ADD_THESE_DEFINES="-D ALLOW_EMPTY_CREDENTIALS -D CONF_LCMAPS_DEBUG_LEVEL=4 -D GUMSOSG" else ADD_THESE_DEFINES="-D ALLOW_EMPTY_CREDENTIALS -D CONF_LCMAPS_DEBUG_LEVEL=4" fi # Set default directories LCMAPS_ETC_HOME=${sysconfdir}/lcmaps LCMAPS_LIB_HOME=$libdir # Check whether --with-lcmaps_moduledir was given. if test "${with_lcmaps_moduledir+set}" = set; then : withval=$with_lcmaps_moduledir; if test "x`echo $withval|cut -c1`" = "x/" ; then : LCMAPS_MOD_HOME=$withval else LCMAPS_MOD_HOME=$LCMAPS_LIB_HOME/$withval fi else LCMAPS_MOD_HOME=$LCMAPS_LIB_HOME/lcmaps fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: LCMAPS_MOD_HOME set to $LCMAPS_MOD_HOME" >&5 $as_echo "LCMAPS_MOD_HOME set to $LCMAPS_MOD_HOME" >&6; } LCMAPS_MAJOR_VERSION=`echo ${VERSION}|cut -d. -f1` LCMAPS_MINOR_VERSION=`echo ${VERSION}|cut -d. -f2` LCMAPS_PATCH_VERSION=`echo ${VERSION}|cut -d. -f3` # Configuration items ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files doc/Makefile" ac_config_files="$ac_config_files doc/evaluationmanager/Makefile" ac_config_files="$ac_config_files interface/Makefile" ac_config_files="$ac_config_files interface/lcmaps_version.h" ac_config_files="$ac_config_files interface/lcmaps-interface.pc" ac_config_files="$ac_config_files interface/lcmaps-globus-interface.pc" ac_config_files="$ac_config_files interface/lcmaps-openssl-interface.pc" ac_config_files="$ac_config_files interface/lcmaps-basic-interface.pc" ac_config_headers="$ac_config_headers src/lcmaps_config.h" 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}' DEFS=-DHAVE_CONFIG_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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= 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 "${LEX_HAS_D_TRUE}" && test -z "${LEX_HAS_D_FALSE}"; then as_fn_error $? "conditional \"LEX_HAS_D\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_HEADERS_TRUE}" && test -z "${ENABLE_HEADERS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_HEADERS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LCMAPS_GSI_MODE_TRUE}" && test -z "${LCMAPS_GSI_MODE_FALSE}"; then as_fn_error $? "conditional \"LCMAPS_GSI_MODE\" 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 -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' 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 # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # 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 lcmaps $as_me 1.6.6, which was generated by GNU Autoconf 2.69. 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 case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_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 --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ lcmaps config.status 1.6.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 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;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --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" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; "src/lcmaps.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps.pc" ;; "src/lcmaps-gss-assist-gridmap.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-gss-assist-gridmap.pc" ;; "src/lcmaps-return-poolindex.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-return-poolindex.pc" ;; "src/lcmaps-return-account-from-pem.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-return-account-from-pem.pc" ;; "src/lcmaps-verify-account-from-pem.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-verify-account-from-pem.pc" ;; "src/lcmaps-without-gsi.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-without-gsi.pc" ;; "src/lcmaps-gss-assist-gridmap-without-gsi.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-gss-assist-gridmap-without-gsi.pc:src/lcmaps-gss-assist-gridmap.pc.in" ;; "src/lcmaps-return-poolindex-without-gsi.pc") CONFIG_FILES="$CONFIG_FILES src/lcmaps-return-poolindex-without-gsi.pc:src/lcmaps-return-poolindex.pc.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/evaluationmanager/Makefile") CONFIG_FILES="$CONFIG_FILES doc/evaluationmanager/Makefile" ;; "interface/Makefile") CONFIG_FILES="$CONFIG_FILES interface/Makefile" ;; "interface/lcmaps_version.h") CONFIG_FILES="$CONFIG_FILES interface/lcmaps_version.h" ;; "interface/lcmaps-interface.pc") CONFIG_FILES="$CONFIG_FILES interface/lcmaps-interface.pc" ;; "interface/lcmaps-globus-interface.pc") CONFIG_FILES="$CONFIG_FILES interface/lcmaps-globus-interface.pc" ;; "interface/lcmaps-openssl-interface.pc") CONFIG_FILES="$CONFIG_FILES interface/lcmaps-openssl-interface.pc" ;; "interface/lcmaps-basic-interface.pc") CONFIG_FILES="$CONFIG_FILES interface/lcmaps-basic-interface.pc" ;; "src/lcmaps_config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/lcmaps_config.h" ;; *) 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_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= 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` 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 ' >$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" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :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 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $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"" || { # Older Autoconf 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"` # 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'`; 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 lcmaps-1.6.6/etc/0000755001726200004540000000000012471136742010573 500000000000000lcmaps-1.6.6/etc/Makefile.in0000644001726200004540000003606212471136672012571 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 15706 2011-12-14 10:54:33Z okoeroo $ # Define the targets to be built here VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = etc DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/lcmaps_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(noinst_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ moduledir = @LCMAPS_MOD_HOME@ # These files should really not be installed, just serve as examples examples = vomapfile.in \ groupmapfile.in \ lcmaps.db.in noinst_DATA = $(examples:.in=) CLEANFILES = $(noinst_DATA) EXTRA_DIST = $(examples) #install-data-hook: # (cd $(sysconfdir); cp -p lcmaps.db.in lcmaps.db; cd -) edit = sed \ -e 's|@bindir[@]|$(bindir)|g' \ -e 's|@moduledir[@]|$(moduledir)|g' \ -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \ -e 's|@prefix[@]|$(prefix)|g' 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 etc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign etc/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): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: 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 $(DATA) 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: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) 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 \ cscopelist-am ctags-am 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 \ tags-am uninstall uninstall-am % :: %.in $(edit) $< >$@ # 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: lcmaps-1.6.6/etc/Makefile.am0000644001726200004540000000162012471136645012550 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 15706 2011-12-14 10:54:33Z okoeroo $ # Define the targets to be built here moduledir=@LCMAPS_MOD_HOME@ # These files should really not be installed, just serve as examples examples = vomapfile.in \ groupmapfile.in \ lcmaps.db.in noinst_DATA = $(examples:.in=) CLEANFILES = $(noinst_DATA) EXTRA_DIST=$(examples) #install-data-hook: # (cd $(sysconfdir); cp -p lcmaps.db.in lcmaps.db; cd -) edit = sed \ -e 's|@bindir[@]|$(bindir)|g' \ -e 's|@moduledir[@]|$(moduledir)|g' \ -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \ -e 's|@prefix[@]|$(prefix)|g' % :: %.in $(edit) $< >$@ lcmaps-1.6.6/etc/vomapfile.in0000644001726200004540000000031012471136645013021 00000000000000# For the wilma VO: #"/VO=wilma/GROUP=*" .wilma # For the fred VO: #"/VO=fred/GROUP=*" .fred # For the iteam VO: "/VO=iteam/GROUP=iteam*" .iteam # For the wpsix VO: "/VO=iteam/GROUP=wpsix*" .wpsix lcmaps-1.6.6/etc/groupmapfile.in0000644001726200004540000000116412471136645013541 00000000000000# Example groupmapfile: # Users with the exact VO-group info "/VO=fred/GROUP=fred/ROLE=husband" # will be added to the local group "fredje1" #"/VO=fred/GROUP=fred/ROLE=husband" fredje1 # Users with the VO-group info starting with "/VO=fred/GROUP=fred" # will be added to the allocated pool group "pool[1-9]*" #"/VO=fred/GROUP=fred*" .pool # All users from VO wilma will be added to the allocated pool group "pool[1-9]*" #"/VO=wilma/GROUP=*" .pool # For the ITeam VO: #"/VO=ITeam/GROUP=/ITeam/test iteamtest "/VO=ITeam/GROUP=/ITeam*" iteam # For the wpsix VO: #"/VO=WP6/GROUP=/WP6/test wpsixtest "/VO=WP6/GROUP=/WP6*" wpsix lcmaps-1.6.6/etc/lcmaps.db.in0000644001726200004540000001523412471136645012715 00000000000000## LCMAPS policy file/plugin definition ## ## This file contains example plug-in configurations and policies. ## For actual configurations, see the packages that use the LCMAPS ## framework such as glexec and lcas-lcmaps-gt4-interface. ## ## See the individual plug-in packages for a detailed explanation ## of options. ## ## ## The default path where modules are looked for. ## # path = LIBDIR/lcmaps ## ## ====================================================================== ## Section: PLUG-INS ## ====================================================================== ## ## The first section lists each plug-in by alias, name and parameters. ## Only the plug-ins that are used will actually be loaded. ## ## ## Dummy plug-in ## ## The dummy plug-in always returns good or bad. Optionally the 'good' ## plug-in may return a fixed mapping. ## # good = "lcmaps_dummy_good.mod" # "--dummy-username nobody" # "--dummy-group users" # bad = "lcmaps_dummy_bad.mod" ## ## ## Local account plug-in ## ## The localaccount plug-in looks up the user's DN in a static table ## called the grid-mapfile. If found, the user account is returned as ## the mapping. ## # localaccount = "lcmaps_localaccount.mod" # "-gridmapfile /etc/grid-security/grid-mapfile" ## ## Pool account plug-in ## ## The poolaccount plug-in enhances the localaccount plug-in by matching ## the user DN with a class of users called a pool. All users in a pool ## have the same prefix, and a numerical suffix, e.g. ops001, ops002, ... ## The entry in the grid-mapdir should be the prefix with a period in front, ## thus for the above example it should be '.ops'; the actual account to ## map is taken from the gridmapdir by claiming an available slot in the pool. # poolaccount = "lcmaps_poolaccount.mod" # "-gridmapfile /etc/grid-security/grid-mapfile" # "-gridmapdir /etc/grid-security/gridmapdir" # "-override_inconsistency" ## ## Posix enforcement plug-in ## ## The posix_enf plug-in takes the mapping as returned by earlier ## plug-ins and changes the user's identity according to the mapping, ## including any mapped secondary group ids. This is usually the last ## step in the chain. # posix_enf = "lcmaps_posix_enf.mod" # "-maxuid 1" # "-maxpgid 1" # "-maxsgid 32" ## ## VOMS data extraction plug-in ## Note: This plug-in is deprecated by the LCMAPS framework. ## LCMAPS itself can extract the VOMS attributes and make them available ## for other VOMS-aware plug-ins. ## ## Any VOMS attributes that were passed along with the credentials have ## to be extracted and verified, which the voms plug-in will take care ## of. This should precede the voms mapping plug-ins. # vomsextract = "lcmaps_voms.mod" # "-vomsdir /etc/grid-security/vomsdir" # "-certdir /etc/grid-security/certificates" ## ## VOMS local group mapping ## ## The voms_localgroup plugin will map the VOMS FQANs (Fully Qualified ## Attribute Names) to one or more locally known groups by matching each ## FQAN to a line in the groupmapfile. # vomslocalgroup = "lcmaps_voms_localgroup.mod" # "-groupmapfile /etc/grid-security/groupmapfile" # "-mapmin 0" ## ## VOMS pool group mapping ## ## The voms_localgroup plugin will map the VOMS FQANs (Fully Qualified ## Attribute Names) to one or more pool groups, by matching each ## FQAN to a line in the groupmapfile. ## A pool group is similar to a pool account. The plug-in can map a set ## of FQANs to a pool of Unix groups. ## The result will be that each of the wildcard matched FQANs will be ## mapped to a specific group. # vomspoolgroup = "lcmaps_voms_poolgroup.mod" # "-groupmapfile /etc/grid-security/groupmapfile" # "-groupmapdir /etc/grid-security/groupmapdir" # "-override_inconsistency" # "-mapmin 0" ## ## VOMS pool account mapping ## ## The voms_poolaccount plug-in maps FQANs to pool users, just like ## the plain poolaccount plug-in maps DNs. # vomspoolaccount = "lcmaps_voms_poolaccount.mod" # "-gridmapfile /etc/grid-security/grid-mapfile" # "-gridmapdir /etc/grid-security/gridmapdir" ## ## The LDAP enforcement plug-in ## ## The LDAP enforcement plug-in will update an LDAP directory after ## a successful mapping. Some systems require this as the mapped user ## needs certain tokens from the directory later on. As the update ## requires administrator privileges, the password is required. It ## should be stored in a file that ordinary users cannot read. # ldap_enf = "lcmaps_ldap_enf.mod" # "-maxuid 1" # "-maxpgid 1" # "-maxsgid 32" # "-hostname ldap.example.org" # "-port 389" # "-require_all_groups yes" # "-dn_manager \"cn=Manager,dc=root\"" # "-ldap_pw /opt/edg/etc/lcmaps/test_pw" # "-sb_groups \"ou=LocalGroups,dc=foobar,dc=ough\"" # "-sb_user \"ou=LocalUsers,dc=foobar,dc=ough\"" # "-timeout 5" ## ====================================================================== ## Section: POLICIES ## ====================================================================== ## ## The policies are labeled, but unless an explicit choice is made the ## first policy will be used. See the lcmaps.db(5) manual for an explanation ## of the semantics of the policies. ## ## This VOMS based policy will first try the localaccount plugin; if ## that succeeds, the posix_enf plugin is tried. Since there is no line ## starting with posix_enf, this this also a terminating plug-in. ## Should the localaccount plug-in fail, the next plug-in to try is ## the one to the right of the '|': vomsextract. This introduces an ## entire chain of plug-ins to follow ending with posix_enf. ## Should any plug-in fail, the total chain fails as there are no more '|' ## to indicate possible alternatives (so you could imagine '| fail' to the ## right of any rule that has no '|' in it). # voms: # localaccount -> posix_enf | vomsextract # vomsextract -> vomslocalgroup # vomslocalgroup -> vomspoolgroup # vomspoolgroup -> vomspoolaccount # vomspoolaccount -> ldap_enf # ldap_enf -> posix_enf ## The simple policy is left as an exercise to the reader. # simple: # localaccount -> posix_enf | poolaccount # poolaccount -> posix_enf lcmaps-1.6.6/interface/0000755001726200004540000000000012471136742011760 500000000000000lcmaps-1.6.6/interface/lcmaps_return_poolindex.h0000644001726200004540000001550612471136645017021 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /*! \file lcmaps_return_poolindex.h \brief This interface of LCMAPS takes the user gsi credential as input and returns the uid, gids and poolindex, i.e. leaseid. \author Martijn Steenbakkers for EGEE. This header contains the following LCMAPS library functions: -# lcmaps_return_poolindex Returns the poolindex based on fixed arguments: security context, buffer and buffer length -# lcmaps_return_poolindex_from_gss_cred Returns the poolindex based on fixed arguments: gss credential, buffer and buffer length In general the behaviour of LCMAPS can be influenced by setting the following environment variables: Env variable Description (default value) --------------- ----------- LCMAPS_LOG_FILE The logfile to which lcmaps log ("/var/log/lcmaps.log") messages will be written LCMAPS_DB_FILE the location (name) of the lcmaps policy file (LCMAPS_ETC_DIR"/lcmaps.db") LCMAPS_POLICY_NAME the name of the lcmaps policy (in the ("acquisition_policy") policy file) that should be evaluated LCMAPS_LOG_STRING A string that will be prepended to all ("poolindex :") LCMAPS logging messages. LCMAPS_DEBUG_LEVEL The debug level influences the logging ("0") verbosity. values 0-5. LCMAPS_MODULES_DIR The directory in which modules can be found. ("") Note: may be overwritten by what is in the policy file (the convential method) LCMAPS_ETC_DIR The directory of the lcmaps policy files ("/opt/glite/etc/lcmaps") and other config files. GRIDMAPDIR The directory in which the poolaccount leases ("") are registered. Note: may be overwritten by what is in the policy file (the convential method) \ingroup LcmapsGlobusInterface */ #ifndef LCMAPS_RETURN_POOLINDEX_H #define LCMAPS_RETURN_POOLINDEX_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_globus.h" /****************************************************************************** * Module definition *****************************************************************************/ /** \brief LCMAPS returns the poolindex If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. \param context_handle The GSS Security context established during invocation of the calling service. \param poolindex_buffer A pointer to a buffer. This buffer will contain the poolindex (NUL terminated string) upon successful return. \param buffer_length The length of the above mentioned buffer. \retval 0 success. \retval 1 failure. */ typedef int lcmaps_return_poolindex_t( gss_ctx_id_t context_handle, char * poolindex_buffer, unsigned int buffer_length ); /** \brief LCMAPS returns the poolindex If LCMAPS is invoked via this interface it will return the poolindex, alternatively named leaseid, to the calling application. Instead of using the security context as an input it uses a gss credential (type gss_cred_id_t). \param credential_handle The GSS credential (of type gss_cred_id_t) of the user. \param poolindex_buffer A pointer to a buffer. This buffer will contain the poolindex (NUL terminated string) upon successful return. \param buffer_length The length of the above mentioned buffer. \retval 0 success. \retval 1 failure. */ typedef int lcmaps_return_poolindex_from_gss_cred_t( gss_cred_id_t credential_handle, char * poolindex_buffer, unsigned int buffer_length ); #include "_lcmaps_return_poolindex.h" #ifndef LCMAPS_USE_DLOPEN lcmaps_return_poolindex_t lcmaps_return_poolindex; lcmaps_return_poolindex_from_gss_cred_t lcmaps_return_poolindex_from_gss_cred; #endif /* LCMAPS_USE_DLOPEN */ /** \brief Opaque handle type for the interface The opaque handle type that the API user should declare a single instance of. This must be passed to nearly all macros (in OO terms, this would be a derived type of LCMAPS_HANDLE). Usage: LCMAPS_HANDLE_RETURN_POOLINDEX handle; */ typedef _lcmaps_handle_return_poolindex_t LCMAPS_HANDLE_RETURN_POOLINDEX; /* typedef void * LCMAPS_HANDLE_RETURN_POOLINDEX; */ /** The declarator can be used to declare and init the handle in one go. */ #define LCMAPS_DECL_HANDLE_RETURN_POOLINDEX(l) \ _LCMAPS_DECL_HANDLE_RETURN_POOLINDEX(l) /** The initializer of the handle object. This macro must be called before any other macro using an LCMAPS_HANDLE. \param l An instance of LCMAPS_HANDLE_RETURN_POOLINDEX \retval 1 always. */ #define LCMAPS_INIT_HANDLE_RETURN_POOLINDEX(l) \ _LCMAPS_INIT_HANDLE_RETURN_POOLINDEX(l) /** This macro loads and prepares LCMAPS; must be called before any use of the interface functions, but after LCMAPS_INIT_HANDLE_RETURN_POOLINDEX. \param l an initialized handle \retval 0 in case of failure, inspect LCMAPS_ERRMSG(l) \retval 1 on success */ #define LCMAPS_LOAD_RETURN_POOLINDEX(l) \ _LCMAPS_LOAD_RETURN_POOLINDEX(l) /** \brief close the LCMAPS_HANDLE This macro closes any opened interface libraries and clears the handle. After this call the handle must be considered invalid. The LCMAPS_CLOSE_HANDLE can be found in lcmaps.h. */ #define LCMAPS_CLOSE_HANDLE_RETURN_POOLINDEX(l) \ LCMAPS_CLOSE_HANDLE(l) #endif /* LCMAPS_RETURN_POOLINDEX_H */ lcmaps-1.6.6/interface/lcmaps_log.h0000644001726200004540000001344612471136645014203 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_log.h \brief Logging API for the LCMAPS plugins and LCMAPS itself \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS logging functions The LCMAPS plugins can use this API to write output to the LCMAPS logging devices. -# lcmaps_log(): Log to LCMAPS logging devices. -# lcmaps_log_debug(): Produce debugging output. \ingroup APIforLcmapsPlugins */ #ifndef LCMAPS_LOG_H #define LCMAPS_LOG_H /****************************************************************************** Include header files ******************************************************************************/ #include /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_log() Description: Log information to file and or syslog Parameters: prty: syslog priority (if 0 don't syslog) fmt: string format Returns: 0 succes 1 failure ******************************************************************************/ #ifdef __GNUC__ extern int lcmaps_log(int prty, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #else extern int lcmaps_log(int prty, const char *fmt, ...); #endif /****************************************************************************** Function: lcmaps_log_debug() Description: Print debugging information Parameters: debug_lvl: debugging level fmt: string format Returns: 0 succes 1 failure ******************************************************************************/ #ifdef __GNUC__ extern int lcmaps_log_debug(int debug_lvl, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #else extern int lcmaps_log_debug(int debug_lvl, const char *fmt, ...); #endif /****************************************************************************** Function: lcmaps_log_time() Description: Log information to file and or syslog with a timestamp Parameters: prty: syslog priority (if 0 don't syslog) fmt: string format Returns: 0 succes 1 failure ******************************************************************************/ #ifdef __GNUC__ extern int lcmaps_log_time(int prty, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #else extern int lcmaps_log_time(int prty, const char *fmt, ...); #endif /****************************************************************************** Function: lcmaps_log_a_string() Description: Log a string according to the passed format to file and or syslog Parameters: prty: syslog priority (if 0 don't syslog) fmt: string format the_string: the string Returns: 0 succes 1 failure ******************************************************************************/ #ifdef __GNUC__ extern int lcmaps_log_a_string(int prty, const char *fmt, const char *the_string) __attribute__((deprecated)) __attribute__((format(printf,2,0))); #else extern int lcmaps_log_a_string(int prty, const char *fmt, const char *the_string); #endif /****************************************************************************** Function: lcmaps_log_a_string_debug() Description: Print debugging information Parameters: debug_lvl: debugging level fmt: string format the_string: the string Returns: 0 succes 1 failure ******************************************************************************/ #ifdef __GNUC__ extern int lcmaps_log_a_string_debug(int debug_lvl, const char *fmt, const char *the_string) __attribute__((deprecated)) __attribute__((format(printf,2,0))); #else extern int lcmaps_log_a_string_debug(int debug_lvl, const char *fmt, const char *the_string); #endif #endif /* LCMAPS_LOG_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_log.h,v $ $Date: 2014-07-07 17:24:01 +0200 (Mon, 07 Jul 2014) $ $Revision: 17831 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps-interface.pc.in0000644001726200004540000000033412471136645016050 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ Name: lcmaps-interface Description: LCMAPS header files Requires.private: lcmaps-globus-interface = @VERSION@ Version: @VERSION@ Cflags: -I${includedir} lcmaps-1.6.6/interface/lcmaps_defines.h0000644001726200004540000000710312471136645015030 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_defines.h \brief Public header file with common definitions for the LCMAPS (authorization modules) \author Martijn Steenbakkers for the EU DataGrid. Here the return values for the LCMAPS plugins/modules are defined as well as the default locations of the LCMAPS "etc", "lib" and "modules" directories. \ingroup APIforLcmapsPlugins */ #ifndef LCMAPS_DEFINES_H #define LCMAPS_DEFINES_H /****************************************************************************** Define constants ******************************************************************************/ #define LCMAPS_MOD_SUCCESS ((int)0) /*!< Return value of LCMAPS plugin module indicating succes (authorization granted)*/ #define LCMAPS_MOD_FAIL ((int)1) /*!< Return value of LCMAPS plugin module indicating failure (no authorization) */ #define LCMAPS_MOD_NOFILE ((int)2) /*!< Return value of LCMAPS plugin module indicating that no file could be found */ #define LCMAPS_MOD_ENTRY ((int)3) /*!< Return value of LCMAPS plugin module indicating that an entry was found */ #define LCMAPS_MOD_NOENTRY ((int)4) /*!< Return value of LCMAPS plugin module indicating that no entry was found */ #define LCMAPS_MAXPATHLEN ((size_t)500) /*!< maximum path lengths of files, used in plugin and database structures. \internal */ #define LCMAPS_MAXARGSTRING ((size_t)2000) /*!< maximum length of the plugin argument string as specified in the LCMAPS database. \internal */ #define LCMAPS_MAXARGS 51 /*!< maximum number of arguments (+1) to be passed to LCMAPS authorization plugins/modules. \internal */ #endif /* LCMAPS_DEFINES_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_defines.h,v $ $Date: 2013-12-08 16:15:30 +0100 (Sun, 08 Dec 2013) $ $Revision: 17212 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/Makefile.in0000644001726200004540000005772712471136672013771 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17210 2013-12-05 17:12:28Z msalle $ # Define the targets to be built here VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = interface DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/lcmaps_version.h.in $(srcdir)/lcmaps-interface.pc.in \ $(srcdir)/lcmaps-globus-interface.pc.in \ $(srcdir)/lcmaps-openssl-interface.pc.in \ $(srcdir)/lcmaps-basic-interface.pc.in \ $(Lcmapsinclude_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/lcmaps_config.h CONFIG_CLEAN_FILES = lcmaps_version.h lcmaps-interface.pc \ lcmaps-globus-interface.pc lcmaps-openssl-interface.pc \ lcmaps-basic-interface.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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)$(pkgconfigdir)" \ "$(DESTDIR)$(Lcmapsincludedir)" \ "$(DESTDIR)$(Lcmapsincludedir)" DATA = $(pkgconfig_DATA) HEADERS = $(Lcmapsinclude_HEADERS) $(nodist_Lcmapsinclude_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ pkgconfigdir = $(datadir)/pkgconfig pkgconfig_DATA = \ lcmaps-interface.pc \ lcmaps-globus-interface.pc \ lcmaps-openssl-interface.pc \ lcmaps-basic-interface.pc #if LCMAPS_GSI_MODE #Lcmapsincludedir = $(includedir)/lcmaps #LcmapsAPIHeaders= \ # lcmaps_return_poolindex.h \ # lcmaps_gss_assist_gridmap.h \ # lcmaps_return_account_from_pem.h \ # lcmaps_verify_account_from_pem.h \ # lcmaps_account.h \ # lcmaps_types.h \ # lcmaps_setup.h \ # lcmaps.h #else #Lcmapsincludedir = $(includedir)/lcmaps #LcmapsAPIHeaders= \ # lcmaps_return_poolindex_without_gsi.h \ # lcmaps_gss_assist_gridmap.h \ # lcmaps_account.h \ # lcmaps_types.h \ # lcmaps_setup.h \ # lcmaps.h #endif Lcmapsincludedir = $(includedir)/lcmaps LcmapsAPIHeaders = \ lcmaps_return_poolindex.h \ _lcmaps_return_poolindex.h \ lcmaps_return_poolindex_without_gsi.h \ lcmaps_gss_assist_gridmap.h \ _lcmaps_gss_assist_gridmap.h \ lcmaps_return_account_from_pem.h \ _lcmaps_return_account_from_pem.h \ lcmaps_verify_account_from_pem.h \ _lcmaps_verify_account_from_pem.h \ lcmaps_account.h \ lcmaps_types.h \ lcmaps.h \ _lcmaps.h \ lcmaps_if.h \ lcmaps_basic.h \ lcmaps_openssl.h \ lcmaps_globus.h LcmapsLibHeaders = \ lcmaps_vo_data.h \ lcmaps_db_read.h \ lcmaps_arguments.h \ lcmaps_cred_data.h \ lcmaps_modules.h \ lcmaps_defines.h \ lcmaps_utils.h \ lcmaps_log.h LcmapsPluginHeaders = \ lcmaps_plugin_typedefs.h \ lcmaps_plugin_prototypes.h Lcmapsinclude_HEADERS = \ $(LcmapsLibHeaders) \ $(LcmapsAPIHeaders) \ $(LcmapsPluginHeaders) EXTRA_DIST = lcmaps_version.h.in nodist_Lcmapsinclude_HEADERS = lcmaps_version.h # noinst_HEADERS = lcmaps_types.h lcmaps_account.h MAINTAINERCLEANFILES = Makefile.in 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 interface/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign interface/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): lcmaps_version.h: $(top_builddir)/config.status $(srcdir)/lcmaps_version.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-interface.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-interface.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-globus-interface.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-globus-interface.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-openssl-interface.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-openssl-interface.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ lcmaps-basic-interface.pc: $(top_builddir)/config.status $(srcdir)/lcmaps-basic-interface.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ 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_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-LcmapsincludeHEADERS: $(Lcmapsinclude_HEADERS) @$(NORMAL_INSTALL) @list='$(Lcmapsinclude_HEADERS)'; test -n "$(Lcmapsincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(Lcmapsincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(Lcmapsincludedir)" || exit 1; \ fi; \ 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)$(Lcmapsincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(Lcmapsincludedir)" || exit $$?; \ done uninstall-LcmapsincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(Lcmapsinclude_HEADERS)'; test -n "$(Lcmapsincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(Lcmapsincludedir)'; $(am__uninstall_files_from_dir) install-nodist_LcmapsincludeHEADERS: $(nodist_Lcmapsinclude_HEADERS) @$(NORMAL_INSTALL) @list='$(nodist_Lcmapsinclude_HEADERS)'; test -n "$(Lcmapsincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(Lcmapsincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(Lcmapsincludedir)" || exit 1; \ fi; \ 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)$(Lcmapsincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(Lcmapsincludedir)" || exit $$?; \ done uninstall-nodist_LcmapsincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_Lcmapsinclude_HEADERS)'; test -n "$(Lcmapsincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(Lcmapsincludedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ 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-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ 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" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ 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 $(DATA) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(Lcmapsincludedir)" "$(DESTDIR)$(Lcmapsincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: 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 "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-LcmapsincludeHEADERS \ install-nodist_LcmapsincludeHEADERS install-pkgconfigDATA 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: uninstall-LcmapsincludeHEADERS \ uninstall-nodist_LcmapsincludeHEADERS uninstall-pkgconfigDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install \ install-LcmapsincludeHEADERS 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-nodist_LcmapsincludeHEADERS install-pdf install-pdf-am \ install-pkgconfigDATA 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 tags tags-am uninstall \ uninstall-LcmapsincludeHEADERS uninstall-am \ uninstall-nodist_LcmapsincludeHEADERS uninstall-pkgconfigDATA # 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: lcmaps-1.6.6/interface/lcmaps_openssl.h0000644001726200004540000000744712471136645015111 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** \defgroup LcmapsOpensslInterface LCMAPS openssl dependent interfaces \brief This is a collection of interfaces that use openssl types and functions. The interface function is declared as a type, since the function is not pre-defined when using dlopen(). -# lcmaps_run_with_stack_of_x509_and_return_account(): To do the user mapping, based on a certificate chain and return the account information \ingroup LcmapsInterface */ /** \file lcmaps_openssl.h \brief Stack of X509 interface of the LCMAPS library. \author Oscar Koeroo for the EGEE project. \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS library functions: -# lcmaps_run_with_stack_of_x509_and_return_account(): To do the user mapping, based on a certificate chain and return the account information \ingroup LcmapsOpensslInterface */ #ifndef LCMAPS_X509_H #define LCMAPS_X509_H /****************************************************************************** Include header files ******************************************************************************/ #include #include #include "lcmaps_basic.h" /****************************************************************************** * Module definition *****************************************************************************/ /** \brief Run LCMAPS and map to an account based on the supplied certificate chain. LCMAPS runs receiving a certificate chain, containing at least an End-Entity Certificate. A list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. \param cert_chain The certificate chain to use for the mapping \param request RSL string (input) \param npols number of policies to be considered for evaluation (input) \param policynames the names of the policies to be considered for evaluation (input) \param puid the uid of the account \param ppgid_list the list of primary gids of the account \param pnpgid the number of primary gids of the account \param psgid_list the list of secondary gids of the account \param pnsgid the number of secondary gids of the account \param poolindexp poolindex string of the account \retval 0 mapping succeeded \retval 1 mapping failed */ typedef int lcmaps_run_with_stack_of_x509_and_return_account_t( STACK_OF(X509) * cert_chain, int mapcounter, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ); #ifndef LCMAPS_USE_DLOPEN lcmaps_run_with_stack_of_x509_and_return_account_t lcmaps_run_with_stack_of_x509_and_return_account; #endif /* LCMAPS_USE_DLOPEN */ #endif /* LCMAPS_X509_H */ lcmaps-1.6.6/interface/lcmaps-globus-interface.pc.in0000644001726200004540000000042012471136645017335 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ Name: lcmaps-globus-interface Description: LCMAPS header files with globus dependencies Requires.private: lcmaps-openssl-interface = @VERSION@, globus-gssapi-gsi Version: @VERSION@ Cflags: -I${includedir} lcmaps-1.6.6/interface/lcmaps_plugin_prototypes.h0000644001726200004540000001132112471136645017216 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_plugin_prototypes.h \brief plugin function prototypes */ #ifndef LCMAPS_PLUGIN_PROTOTYPES_H #define LCMAPS_PLUGIN_PROTOTYPES_H #include "lcmaps_plugin_typedefs.h" /****************************************************************************** Function: plugin_initialize Description: Initialize plugin Parameters: int argc, char **argv argv[0]: the name of the plugin Returns: LCMAPS_MOD_SUCCESS : succes LCMAPS_MOD_FAIL : failure LCMAPS_MOD_NOFILE : db file not found (will halt LCMAPS initialization) ******************************************************************************/ plugin_initialize_t plugin_initialize; /****************************************************************************** Function: plugin_introspect Description: return list of required arguments as argc,argv Parameters: int *argc, lcmaps_argument_t **argv Returns: LCMAPS_MOD_SUCCESS : succes LCMAPS_MOD_FAIL : failure ******************************************************************************/ plugin_introspect_t plugin_introspect; /****************************************************************************** Function: plugin_run Description: Gather credentials for LCMAPS Parameters: int argc: number of arguments lcmaps_argument_t *argv: list of arguments Returns: LCMAPS_MOD_SUCCESS: authorization succeeded LCMAPS_MOD_FAIL : authorization failed ******************************************************************************/ plugin_run_t plugin_run; /****************************************************************************** Function: plugin_verify Description: Verify if user is entitled to use local credentials based on his grid credentials. This means that the site should already have been set up by, e.g., LCMAPS in a previous run. This method will not try to setup account leases, modify (distributed) passwd/group files, etc. etc. The outcome should be identical to that of plugin_run(). In this particular case "plugin_verify()" is identical to "plugin_run()" Parameters: int argc: number of arguments lcmaps_argument_t *argv: list of arguments Returns: LCMAPS_MOD_SUCCESS: authorization succeeded LCMAPS_MOD_FAIL : authorization failed ******************************************************************************/ plugin_verify_t plugin_verify; /****************************************************************************** Function: plugin_terminate Description: Terminate plugin Parameters: Returns: LCMAPS_MOD_SUCCESS : succes LCMAPS_MOD_FAIL : failure ******************************************************************************/ plugin_terminate_t plugin_terminate; #endif /* LCMAPS_PLUGIN_PROTOTYPES_H */ lcmaps-1.6.6/interface/lcmaps_plugin_typedefs.h0000644001726200004540000000467412471136645016626 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_plugin_prototypes.h \brief plugin function prototypes */ #ifndef LCMAPS_PLUGIN_TYPEDEFS_H #define LCMAPS_PLUGIN_TYPEDEFS_H #include "lcmaps_arguments.h" typedef int plugin_initialize_t(int, char **); typedef int plugin_introspect_t(int *, lcmaps_argument_t **); typedef int plugin_run_t(int, lcmaps_argument_t *); typedef int plugin_verify_t(int, lcmaps_argument_t *); typedef int plugin_terminate_t(void); #endif /* LCMAPS_PLUGIN_TYPEDEFS_H */ lcmaps-1.6.6/interface/_lcmaps_verify_account_from_pem.h0000644001726200004540000001343612471136645020464 00000000000000/* * Copyright Stichting FOM, 2011 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \file _lcmaps_verify_account_from_pem.h \brief the secret interface specification This file has been cloned from _lcmaps_return_account_from_pem.h where every occurance of RETURN_ and return_ have been replaced by VERIFY_ and verify_ respectively. This is probably reason to further combine and generalize these interfaces. \ingroup LcmapsHiddenInterface */ #ifndef _LCMAPS_VERIFY_ACCOUNT_FROM_PEM_H #define _LCMAPS_VERIFY_ACCOUNT_FROM_PEM_H # ifdef LCMAPS_USE_DLOPEN /* Needed for NULL */ #include #include "_lcmaps.h" /*! \def LCMAPS_LIB_VERIFY_ACCOUNT_FROM_PEM \brief The name of the shared object that implements the interface. */ #define LCMAPS_LIB_VERIFY_ACCOUNT_FROM_PEM "liblcmaps_verify_account_from_pem" LIBSUFF /** \struct _lcmaps_handle_verify_account_from_pem_s \brief Struct containing all the LCMAPS functions, will be filled using dlsym() */ typedef struct _lcmaps_handle_verify_account_from_pem_s { const char *libfilename; const char *helpername; void *handle,*helper; /* handles to the LCMAPS library and its optional helper (the latter is needed for the 'old' API to provide missing symbols) */ char *errmsg; lcmaps_init_t *lcmaps_init; lcmaps_account_info_init_t *lcmaps_account_info_init; lcmaps_verify_account_from_pem_t *lcmaps_verify_account_from_pem; lcmaps_term_t *lcmaps_term; lcmaps_account_info_clean_t *lcmaps_account_info_clean; /* Remainder is for 'new' API */ /* LCMAPS_HANDLE_VERSION_MEMBERS; */ getMajorVersion_t *getMajorVersion; lcmaps_get_major_version_t *lcmaps_get_major_version; lcmaps_get_minor_version_t *lcmaps_get_minor_version; lcmaps_get_patch_version_t *lcmaps_get_patch_version; /* If the above cannot be found (old lcmaps) these values will be set to 0 */ int majorversion, minorversion, patchversion; /* Next three is the 'OSG API' */ lcmaps_disable_voms_attributes_verification_t *lcmaps_disable_voms_attributes_verification; lcmaps_enable_voms_attributes_verification_t *lcmaps_enable_voms_attributes_verification; lcmaps_is_set_to_verify_voms_attributes_t *lcmaps_is_set_to_verify_voms_attributes; /* Plus the new two more fine-grained functions */ lcmaps_set_voms_attributes_verification_t *lcmaps_set_voms_attributes_verification; lcmaps_get_voms_attributes_verification_t *lcmaps_get_voms_attributes_verification; /* Verification time of proxies */ lcmaps_set_voms_verification_time_t *lcmaps_set_voms_verification_time; lcmaps_get_voms_verification_time_t *lcmaps_get_voms_verification_time; } _lcmaps_handle_verify_account_from_pem_t; /* The declarator of the handle object */ #define _LCMAPS_DECL_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) \ _lcmaps_handle_verify_account_from_pem_t l = { \ LCMAPS_LIB_VERIFY_ACCOUNT_FROM_PEM, \ LCMAPS_FIXVOMSHACKSO, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ -1,-1,-1, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ }; /* The initializer of the handle object */ #define _LCMAPS_INIT_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) \ ( \ (l)->libfilename = LCMAPS_LIB_VERIFY_ACCOUNT_FROM_PEM, \ (l)->helpername = LCMAPS_FIXVOMSHACKSO, \ (l)->handle = (l)->helper = NULL, \ (l)->errmsg = NULL, \ (l)->majorversion = (l)->minorversion = (l)->patchversion = -1, \ (l)->lcmaps_init = NULL, \ (l)->lcmaps_account_info_init = NULL, \ (l)->lcmaps_verify_account_from_pem = NULL, \ (l)->lcmaps_term = NULL, \ (l)->lcmaps_account_info_clean = NULL, \ (l)->getMajorVersion = NULL, \ (l)->lcmaps_disable_voms_attributes_verification = NULL, \ (l)->lcmaps_enable_voms_attributes_verification = NULL, \ (l)->lcmaps_is_set_to_verify_voms_attributes = NULL, \ (l)->lcmaps_set_voms_attributes_verification = NULL, \ (l)->lcmaps_get_voms_attributes_verification = NULL, \ (l)->lcmaps_set_voms_verification_time = NULL, \ (l)->lcmaps_get_voms_verification_time = NULL, \ 1 \ ) /* The single macro to call to initialize lcmaps */ #define _LCMAPS_LOAD_VERIFY_ACCOUNT_FROM_PEM(l) \ ( \ _LCMAPS_LOAD_INTERFACE_WITH_FIX(l) \ && LCMAPS_LOAD_FUNC(l,lcmaps_init) \ && LCMAPS_LOAD_FUNC(l,lcmaps_account_info_init) \ && LCMAPS_LOAD_FUNC(l,lcmaps_verify_account_from_pem) \ && LCMAPS_LOAD_FUNC(l,lcmaps_term) \ && LCMAPS_LOAD_FUNC(l,lcmaps_account_info_clean) \ ) # else /* LCMAPS_USE_DLOPEN */ typedef void * _lcmaps_handle_verify_account_from_pem_t; #define _LCMAPS_DECL_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) #define _LCMAPS_INIT_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) (l = NULL) #define _LCMAPS_INTERFACE_VERIFY_ACCOUNT_FROM_PEM(l) (1) # endif /* LCMAPS_USE_DLOPEN */ #endif /* _LCMAPS_VERIFY_ACCOUNT_FROM_PEM_H */ lcmaps-1.6.6/interface/_lcmaps.h0000644001726200004540000001640212471136645013474 00000000000000#ifndef _LCMAPS_H #define _LCMAPS_H #ifdef LCMAPS_USE_DLOPEN #include /* Needed for NULL */ #include #endif /** \defgroup LcmapsHiddenInterface The dark side of the LCMAPS interface \brief This part of the interface should not be used or observed directly The macros and declarations in this section define most of the internal mechanics of the interface such as calling dlopen() and dlsym(). They are only meant to be used by the public part of the interface. The documentation serves as an aid in development, and is at the very most useful as a (bad) example. \warning Reading beyond this point may cause severe damage to one's appreciation of C programming. */ /*! \file _lcmaps.h \brief LCMAPS programming interface \authors Grid Security Middleware Team, Nikhef The following macro soup is too long, overly complicated and hard to follow. Here is why. An old bug in LCMAPS (actually, VOMS) was that it missed certain 'version' functions. Each component in gLite was required to have the functions getMajorVersion, getMinorVersion and getPatchVersion. Early versions of LCMAPS did not export these functions and none of the VOMS versions ever did (or ever will). Some versions of LCMAPS called these functions assuming they came from the VOMS library; in truth, the calls resolved to the functions (under the same name, as C doesn't support scoping or namespacing) in the LCAS library. In later versions of LCMAPS these calls were removed. This bug remained hidden for a long time as LCAS was always used in conjunction with LCMAPS. But when LCMAPS is used without LCAS, the above functions are no longer resolvable and calling them throws a run-time error. The workaround that is applied e.g. in gLExec is to load the LCAS library if an old version of LCMAPS is detected. Users of the interface that a) do not use LCAS in conjunction with LCMAPS and b) want to have the legacy behaviour of loading LCAS to provide the above missing functions should #define LCMAPS_UGLY_VERSION_BUG_HACK prior to including lcmaps.h. The logic followed by this macro is then as follows: - try to load the interface library with RTLD_NOW - if this fails, try to reload with RTLD_LAZY - if this also fails, the library is probably missing -> THE END - else, load the helper library; dlsym the getMajorVersion function; - if this fails, it's THE END - otherwise reload (again) with RTLD_NOW. This could fail but shouldn't. \ingroup LcmapsHiddenInterface */ /** \brief The getMajorVersion prototype This function is there only for testing whether the loading of the library in combination with the helper library will succeed. */ typedef int getMajorVersion_t (void); /** \brief the major version funtion, present in newer LCMAPS libraries This funtion is loaded if present and used (only once) to return the library version. */ typedef int lcmaps_get_major_version_t (void); /** \brief the major version funtion, present in newer LCMAPS libraries This funtion is loaded if present and used (only once) to return the library minor version. */ typedef int lcmaps_get_minor_version_t (void); /** \brief the major version funtion, present in newer LCMAPS libraries This funtion is loaded if present and used (only once) to return the library patchlevel version. */ typedef int lcmaps_get_patch_version_t (void); # ifndef LCMAPS_USE_DLOPEN lcmaps_get_major_version_t lcmaps_get_major_version; lcmaps_get_minor_version_t lcmaps_get_minor_version; lcmaps_get_patch_version_t lcmaps_get_patch_version; #endif /* LCMAPS_USE_DLOPEN */ /** \brief Collection of members to be included in the handle struct The LCMAPS_HANDLE structure varies for each interface, but they have some members in common. */ #define LCMAPS_HANDLE_VERSION_MEMBERS \ getMajorVersion_t *getMajorVersion; \ lcmaps_get_major_version_t *lcmaps_get_major_version; \ lcmaps_get_minor_version_t *lcmaps_get_minor_version; \ lcmaps_get_patch_version_t *lcmaps_get_patch_version; \ int majorversion,minorversion,patchversion #ifdef LCMAPS_USE_DLOPEN #define _LCMAPS_MAJOR_VERSION(l) ((l)->majorversion) #define _LCMAPS_MINOR_VERSION(l) ((l)->minorversion) #define _LCMAPS_PATCH_VERSION(l) ((l)->patchversion) #define _LCMAPS_SET_LIBFILE_PATH(l,p) ((l)->libfilename = (p)) #define _LCMAPS_SET_HELPER_PATH(l,p) ((l)->helpername = (p)) #define LCMAPS_LOAD_FUNC(l,f) \ ( \ dlerror(), \ (l)->f = (f ## _t *) dlsym(l->handle, #f), \ ((l)->errmsg = dlerror()) == NULL \ ) /* Calling a loaded function is generally done through the following functions */ #define _LCMAPS_CALL(l,f) ( (l)->f ) #define _LCMAPS_LOAD_INTERFACE(l,d) \ ( ( (l)->handle = dlopen((l)->libfilename, (d) | RTLD_GLOBAL)) != NULL ) /* store the error message and raise the error flag */ #define _LCMAPS_FAIL(l) ( ((l)->errmsg = dlerror()), 0) /* #define LCMAPS_SUCCESS(l) ((l)->errmsg = dlerror(), 1) */ #ifdef LCMAPS_UGLY_VERSION_BUG_HACK # define LCMAPS_FIXVOMSHACKSO "liblcas" LIBSUFF #else # define LCMAPS_FIXVOMSHACKSO "libvomsfix" LIBSUFF #endif #define _LCMAPS_LOAD_HELPER(l) \ ( \ (l)->helper = dlopen(LCMAPS_FIXVOMSHACKSO, RTLD_NOW | RTLD_GLOBAL) \ ) #define _LCMAPS_GET_VERSION_LEVEL(l,v) \ ( \ (l)->v ## version = \ ( LCMAPS_LOAD_FUNC(l, lcmaps_get_ ## v ## _version) ? \ ( (l)->lcmaps_get_ ## v ## _version() ) : \ 0 \ ) \ ) #define _LCMAPS_GET_VERSIONS(l) \ ( \ _LCMAPS_GET_VERSION_LEVEL(l,major), \ _LCMAPS_GET_VERSION_LEVEL(l,minor), \ _LCMAPS_GET_VERSION_LEVEL(l,patch), \ 1 \ ) /* loading the helper and finding getMajorVersion in case of an 'old' lcmaps */ #define _LCMAPS_LOAD_INTERFACE_WITH_HELPER(l) \ ( \ _LCMAPS_LOAD_INTERFACE(l, RTLD_LAZY) && \ _LCMAPS_LOAD_HELPER(l) && \ LCMAPS_LOAD_FUNC(l, getMajorVersion) && \ (dlclose((l)->handle) == 0) && \ _LCMAPS_LOAD_INTERFACE(l,RTLD_NOW) \ ) #define _LCMAPS_LOAD_INTERFACE_WITH_FIX(l) \ ( \ ( \ ( _LCMAPS_LOAD_INTERFACE(l,RTLD_NOW) \ || _LCMAPS_LOAD_INTERFACE_WITH_HELPER(l) \ ) && _LCMAPS_GET_VERSIONS(l) ) \ || _LCMAPS_FAIL(l) \ ) #define _LCMAPS_ERRMSG(l) (l->errmsg) #define _LCMAPS_REQUIRE_FUNC(l,f) LCMAPS_LOAD_FUNC(l,f) #define LCMAPS_CLOSE_HANDLE(l) \ ( \ dlerror(), \ ( (l)->handle ? dlclose((l)->handle) : 1), \ ( (l)->helper ? dlclose((l)->helper) : 1), \ ( (l)->handle = (l)->helper = NULL ), \ ( ( (l)->errmsg = dlerror() ) == NULL ) \ ) #else /* LCMAPS_USE_DLOPEN */ #define _LCMAPS_MAJOR_VERSION(l) (lcmaps_get_major_version()) #define _LCMAPS_MINOR_VERSION(l) (lcmaps_get_minor_version()) #define _LCMAPS_PATCH_VERSION(l) (lcmaps_get_patch_version()) #define _LCMAPS_SET_LIBFILE_PATH(l,p) (1) #define _LCMAPS_SET_HELPER_PATH(l,p) (1) #define LCMAPS_LOAD_FUNC(l,f) (1) #define _LCMAPS_REQUIRE_FUNC(l,f) (1) #define _LCMAPS_CALL(l,f) ( f ) #define _LCMAPS_ERRMSG(l) "This build is broken, LCMAPS_USE_DLOPEN is undefined." #define LCMAPS_CLOSE_HANDLE(l) (1) #endif /* LCMAPS_USE_DLOPEN */ #endif /* _LCMAPS_H */ lcmaps-1.6.6/interface/lcmaps_basic.h0000644001726200004540000004124412471136645014500 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** \defgroup LcmapsBasicInterface LCMAPS basic interfaces \brief This interface returns the uid, gids and poolindex, i.e. leaseid, using LCMAPS and takes the user credential in PEM format as input The interface function is declared as a type, since the function is not pre-defined when using dlopen(). -# lcmaps_return_account_from_pem_t: interface function type \ingroup LcmapsInterface */ /** \file lcmaps_basic.h \brief Basic interface of the LCMAPS library. \author Martijn Steenbakkers for the EU DataGrid. \author Oscar Koeroo for the EGEE project. This header contains the declarations of the LCMAPS library functions: -# lcmaps_init(): To initialize the LCMAPS module -# lcmaps_init_and_log(): To initialize the LCMAPS module and select logging type -# lcmaps_init_and_logfile(): To initialize the LCMAPS module, select logging type and set logfile -# lcmaps_run_without_credentials_and_return_username(): To do the user mapping, without credentials and return the user name -# lcmaps_run_with_fqans_mapcounter_and_return_account() To do the user mapping, based on DN+FQANs+mapcounter and return the account information -# lcmaps_run_with_fqans_and_return_account() To do the user mapping, based on DN+FQANs and return the account information -# lcmaps_term(): To cleanly terminate the module \ingroup LcmapsBasicInterface */ #ifndef LCMAPS_BASIC_H #define LCMAPS_BASIC_H /****************************************************************************** Include header files ******************************************************************************/ #include #include #include "lcmaps_version.h" #include "lcmaps_types.h" #include "lcmaps_if.h" /****************************************************************************** * Module definition *****************************************************************************/ /*! \brief Initialize the LCMAPS module. The function does the following: - initialize LCMAPS module. - setup logging, error handling (not yet). - start PluginManager \param fp file handle for logging (from gatekeeper or other previously opened file handle) If the file handle is zero, assume that only syslogging is requested \retval 0 initialization succeeded. \retval 1 initialization failed. */ typedef int lcmaps_init_t( FILE* fp ); /*! \brief Initialize the LCMAPS module and select logging type The function does the following: - initialize LCMAPS module. - setup logging, error handling (not yet). - start PluginManager \param fp file handle for logging (from gatekeeper or other previously opened file handle) If the file handle is zero, assume that only syslogging is requested \param logtype type of logging (usrlog and/or syslog) \retval 0 initialization succeeded. \retval 1 initialization failed. */ typedef int lcmaps_init_and_log_t( FILE* fp, unsigned short logtype ); /*! \brief Initialize the LCMAPS module, select logging type and set logfile The function does the following: - initialize LCMAPS module. - Setup logging by providing a file handle or file name, error handling (not yet). - start PluginManager \param logfile name of logfile \param fp file handle for logging (from gatekeeper or other previously opened file handle) If the file handle is zero, assume that only syslogging is requested \param logtype type of logging (usrlog and/or syslog) \retval 0 initialization succeeded. \retval 1 initialization failed. */ typedef int lcmaps_init_and_logfile_t( char * logfile, FILE* fp, unsigned short logtype ); /*! \brief Terminate the LCMAPS module. The function does the following: - terminate the LCMAPS module - terminate the plugins \retval 0 termination succeeded. \retval 1 termination failed. */ typedef int lcmaps_term_t(void); /*! \brief do the user mapping using only the user DN and return the username Based on the only the user DN do the following: Do the user mapping based on the provided list of policies (first successful policy found in the lcmaps policy file (lcmaps.db) will result in the user mapping) and return user name. This interface can be used to provide the legacy \b globus_gss_assist_gridmap() interface. \param user_dn_tmp user DN \param request authorization request as an RSL string \param usernamep pointer to user name (to be freed by calling application). Note: usernamep should be non-NULL at the start ! \param npols number of policies to be considered for evaluation \param policynames the names of the policies to be considered for evaluation \retval 0 mapping succeeded. \retval 1 mapping failed. */ typedef int lcmaps_run_without_credentials_and_return_username_t( char * user_dn_tmp, lcmaps_request_t request, char ** usernamep, int npols, char ** policynames ); /*! \brief let LCMAPS handle the user mapping based on fqans and return the account information LCMAPS will run with a list of FQANs and the DN as an input. In addition a list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by a wrapper function for the \b WorkSpace \b Service (WSS, f.q.a. Dynamic Account Service - DAS). \param user_dn the DN of the user \param fqan_list the list of (VOMS) FQANs that have been asserted to the user \param nfqan the number of FQANs in fqan_list \param mapcounter the counter which will be added to the poolindex, effectively enabling multiple account mappings \param request RSL string \param npols number of policies to be considered for evaluation \param policynames the names of the policies to be considered for evaluation \param puid pointer to the uid found (output parameter) \param ppgid_list pointer to the list of primary gids found (output parameter) \param pnpgid pointer to the number of primary gids found (output parameter) \param psgid_list pointer to the list of secondary gids found (output parameter) \param pnsgid pointer to the number of secondary gids found (output parameter) \param poolindexp pointer to poolindex string (output parameter) \retval 0 mapping succeeded. \retval 1 mapping failed. */ typedef int lcmaps_run_with_fqans_mapcounter_and_return_account_t( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ); /*! \brief let LCMAPS handle the user mapping based on fqans and return the account information LCMAPS will run with a list of FQANs and the DN as an input. In addition a list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by a wrapper function for the \b WorkSpace \b Service (WSS, f.q.a. Dynamic Account Service - DAS). \param user_dn the DN of the user \param fqan_list the list of (VOMS) FQANs that have been asserted to the user \param nfqan the number of FQANs in fqan_list \param request RSL string \param npols number of policies to be considered for evaluation \param policynames the names of the policies to be considered for evaluation \param puid pointer to the uid found (output parameter) \param ppgid_list pointer to the list of primary gids found (output parameter) \param pnpgid pointer to the number of primary gids found (output parameter) \param psgid_list pointer to the list of secondary gids found (output parameter) \param pnsgid pointer to the number of secondary gids found (output parameter) \param poolindexp pointer to poolindex string (output parameter) \retval 0 mapping succeeded. \retval 1 mapping failed. */ typedef int lcmaps_run_with_fqans_and_return_account_t( char * user_dn, char ** fqan_list, int nfqan, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ); #ifndef LCMAPS_USE_DLOPEN lcmaps_init_and_logfile_t lcmaps_init_and_logfile; lcmaps_init_t lcmaps_init; lcmaps_init_and_log_t lcmaps_init_and_log; lcmaps_term_t lcmaps_term; lcmaps_run_without_credentials_and_return_username_t lcmaps_run_without_credentials_and_return_username; lcmaps_run_with_fqans_mapcounter_and_return_account_t lcmaps_run_with_fqans_mapcounter_and_return_account; lcmaps_run_with_fqans_and_return_account_t lcmaps_run_with_fqans_and_return_account; #endif /*! \brief Do the mapping based on the user's credential in PEM-string format LCMAPS runs receiving a proxy credential in a PEM formatted string. A list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by the modified suexec wrapper. \param user_dn The DN of the user \param pem_string The PEM-encoded string containing the user proxy \param mapcounter The counter which will be added to the poolindex, effectively enabling multiple account mappings \param request RSL string \param npols Number of policies to be considered for evaluation \param policynames The names of the policies to be considered for evaluation \param puid Pointer to the uid found (output parameter) \param ppgid_list Pointer to the list of primary gids found (output parameter) \param pnpgid Pointer to the number of primary gids found (output parameter) \param psgid_list Pointer to the list of secondary gids found (output parameter) \param pnsgid Pointer to the number of secondary gids found (output parameter) \param poolindexp Pointer to poolindex string (output parameter) \retval 0 mapping succeeded \retval 1 mapping failed */ typedef int lcmaps_run_with_pem_and_return_account_t( char * user_dn, char * pem_string, int mapcounter, lcmaps_request_t request, int npols, char ** policynames, uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** poolindexp ); /*! \brief Verify the account mapping LCMAPS verifies the account mapping based on the proxy credential in a PEM formatted string. A list of policies may be provided. This interface is intended to be used by the modified suexec wrapper. \param user_dn the user DN (input) \param pem_string the PEM-encoded string containing the user proxy (input) \param uid the uid of the account that should be verified (input) \param pgid_list the list of primary gids of the account that should be verified (input) \param npgid the number of primary gids of the account that should be verified (input) \param sgid_list the list of secondary gids of the account that should be verified (input) \param nsgid the number of secondary gids of the account that should be verified (input) \param poolindex poolindex string of the account that should be verified (input) \param request RSL string (input) \param npols number of policies to be considered for evaluation (input) \param policynames the names of the policies to be considered for evaluation (input) \retval 0 verification succeeded \retval 1 verification failed */ typedef int lcmaps_run_and_verify_account_from_pem_t( char * user_dn, char * pem_string, uid_t uid, gid_t * pgid_list, int npgid, gid_t * sgid_list, int nsgid, char * poolindex, lcmaps_request_t request, int npols, char ** policynames ); #ifndef LCMAPS_USE_DLOPEN lcmaps_run_with_pem_and_return_account_t lcmaps_run_with_pem_and_return_account; lcmaps_run_and_verify_account_from_pem_t lcmaps_run_and_verify_account_from_pem; #endif /* LCMAPS_USE_DLOPEN */ /** \fn lcmaps_disable_voms_attributes_verification \brief disable all VOMS attribute verification by LCMAPS \since LCMAPS v1.4.21 \ingroup LcmapsBasicInterface \see lcmaps_set_voms_attributes_verification */ typedef void lcmaps_disable_voms_attributes_verification_t(void); /** \fn lcmaps_enable_voms_attributes_verification \brief enable full VOMS attribute verification by LCMAPS (on by default) \since LCMAPS v1.4.21 \ingroup LcmapsBasicInterface \see lcmaps_set_voms_attributes_verification */ typedef void lcmaps_enable_voms_attributes_verification_t(void); /** * \fn lcmaps_is_set_to_verify_voms_attributes \brief test if the VOMS attribute verification by LCMAPS is set. \since LCMAPS v1.4.21 \ingroup LcmapsBasicInterface \retval 0 if not set \retval >0 if set */ typedef int lcmaps_is_set_to_verify_voms_attributes_t(void); /** \fn lcmaps_set_voms_attributes_verification \brief sets set of to-be-verified VOMS attributes to verify_flags \since LCMAPS v1.6.5 \ingroup LcmapsBasicInterface \see lcmaps_get_voms_attributes_verification_t */ typedef void lcmaps_set_voms_attributes_verification_t (unsigned int verify_flags); /** \fn lcmaps_get_voms_attributes_verification \brief gets set of to-be-verified VOMS attributes \ingroup LcmapsBasicInterface \retval combination of flags, see voms_apic.h for valid flags \see lcmaps_set_voms_attributes_verification_t */ typedef unsigned int lcmaps_get_voms_attributes_verification_t (void); #ifndef LCMAPS_USE_DLOPEN lcmaps_disable_voms_attributes_verification_t lcmaps_disable_voms_attributes_verification; lcmaps_enable_voms_attributes_verification_t lcmaps_enable_voms_attributes_verification; lcmaps_is_set_to_verify_voms_attributes_t lcmaps_is_set_to_verify_voms_attributes; lcmaps_set_voms_attributes_verification_t lcmaps_set_voms_attributes_verification; lcmaps_get_voms_attributes_verification_t lcmaps_get_voms_attributes_verification; #endif /** * \fn lcmaps_set_voms_verification_time * \brief sets VOMS verification time to verify_time, either UNIX time * (flags==0), relative to notBefore of leaf proxy (flags==1) or relative to * notAfter (flags==2) * \ingroup LcmapsBasicInterface * \param verify_time (input) * \param flags (input) */ typedef void lcmaps_set_voms_verification_time_t(time_t verify_time, int flags); /** * \fn lcmaps_get_voms_verification_time * \brief gets VOMS verification time * \ingroup LcmapsBasicInterface * \param verify_time (output) * \param flags (output) * \retval 0 success, -1 error */ typedef int lcmaps_get_voms_verification_time_t(time_t *verify_time, int *flags); #ifndef LCMAPS_USE_DLOPEN lcmaps_set_voms_verification_time_t lcmaps_set_voms_verification_time; lcmaps_get_voms_verification_time_t lcmaps_get_voms_verification_time; #endif #endif /* LCMAPS_BASIC_H */ lcmaps-1.6.6/interface/lcmaps_return_poolindex_without_gsi.h0000644001726200004540000002775012471136645021452 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_return_poolindex_without_gsi.h \brief This interface of LCMAPS takes user DN+FQANS and a counter as input and returns the uid, gids and poolindex, i.e. leaseid. \author Martijn Steenbakkers for EGEE. This header contains the following LCMAPS library functions: -# lcmaps_return_poolindex_without_gsi Returns the poolindex based on fixed arguments: security context, buffer and buffer length In general the behaviour of LCMAPS can be influenced by setting the following environment variables: Env variable Description (default value) --------------- ----------- LCMAPS_LOG_FILE The logfile to which lcmaps log ("/var/log/lcmaps.log") messages will be written LCMAPS_DB_FILE the location (name) of the lcmaps policy file (LCMAPS_ETC_DIR"/lcmaps.db") LCMAPS_POLICY_NAME the list of the lcmaps policies (in the ("acquisition_policy") policy file) that should be evaluated until a policy succeeds. The policies are separated by ':', e.g. "das_voms:default:". LCMAPS_LOG_STRING A string that will be prepended to all ("poolindex :") LCMAPS logging messages. If this variable is not set a default will be taken which includes a timestamp LCMAPS_DEBUG_LEVEL The debug level influences the logging ("0") verbosity. values 0-5. LCMAPS_MODULES_DIR The directory in which modules can be found. ("") Note: may be overwritten by what is in the policy file (the convential method) LCMAPS_ETC_DIR The directory of the lcmaps policy files ("/opt/glite/etc/lcmaps") and other config files. GRIDMAPDIR The directory in which the poolaccount leases ("") are registered. Note: may be overwritten by what is in the policy file (the convential method) \ingroup LcmapsInterface */ #ifndef LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI_H #define LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_account.h" /****************************************************************************** Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_return_poolindex_without_gsi Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The call will result in a failure if no poolindex is found (e.g. in the case of statically assigned accounts). Parameters: user_dn: The DN of the user (input) fqan_list: The list of FQANs (type char**) (input) nfqan: The number of FQANs in the list (input) plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure (if no poolindex is found) ******************************************************************************/ /*! \fn lcmaps_return_poolindex_without_gsi( char * user_dn, char ** fqan_list, int nfqan, lcmaps_account_info_t * plcmaps_account ) \brief LCMAPS returns the poolindex and account information If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The call will result in a failure if no poolindex is found (e.g. in the case of statically assigned accounts). \param user_dn The DN of the user (input) \param fqan_list The list of FQANs (type char**) (input) \param nfqan The number of FQANs in the list (input) \param plcmaps_account A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. \retval 0 success. \retval 1 failure (if no poolindex is found). */ int lcmaps_return_poolindex_without_gsi( char * user_dn, char ** fqan_list, int nfqan, lcmaps_account_info_t * plcmaps_account ); /****************************************************************************** Function: lcmaps_return_poolindex_with_mapcounter Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The call will result in a failure if no poolindex is found (e.g. in the case of statically assigned accounts). An additional counter may be added to enable multiple acccounts per set of user credentials. Parameters: user_dn: The DN of the user (input) fqan_list: The list of FQANs (type char**) (input) nfqan: The number of FQANs in the list (input) mapcounter: The counter which will be added to the poolindex, effectively enabling multiple account mappings plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure (if no poolindex is found) ******************************************************************************/ /*! \fn lcmaps_return_poolindex_with_mapcounter( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_account_info_t * plcmaps_account ) \brief LCMAPS returns the poolindex and account information If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. The call will result in a failure if no poolindex is found (e.g. in the case of statically assigned accounts). An additional counter may be added to enable multiple acccounts per set of user credentials. \param user_dn The DN of the user (input) \param fqan_list The list of FQANs (type char**) (input) \param nfqan The number of FQANs in the list (input) \param mapcounter The counter which will be added to the poolindex, effectively enabling multiple account mappings \param plcmaps_account A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. \retval 0 success. \retval 1 failure (if no poolindex is found). */ int lcmaps_return_poolindex_with_mapcounter( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_account_info_t * plcmaps_account ); /****************************************************************************** Function: lcmaps_return_account_without_gsi Description: If LCMAPS is invoked via this interface it will return the user account info and poolindex (if available), alternatively named leaseid, to the calling application. The call will not result in a failure if no poolindex is found, so it supports poolaccounts and statically assigned accounts simultaneously. An additional counter may be added to enable multiple acccounts per set of user credentials. Parameters: user_dn: The DN of the user (input) fqan_list: The list of FQANs (type char**) (input) nfqan: The number of FQANs in the list (input) mapcounter: The counter which will be added to the poolindex, effectively enabling multiple account mappings plcmaps_account: A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure ******************************************************************************/ /*! \fn lcmaps_return_account_without_gsi( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_account_info_t * plcmaps_account ) \brief LCMAPS returns the poolindex and account information If LCMAPS is invoked via this interface it will return the user account info and poolindex (if available), alternatively named leaseid, to the calling application. The call will not result in a failure if no poolindex is found, so it supports poolaccounts and statically assigned accounts simultaneously. An additional counter may be added to enable multiple acccounts per set of user credentials. \param user_dn The DN of the user (input) \param fqan_list The list of FQANs (type char**) (input) \param nfqan The number of FQANs in the list (input) \param mapcounter The counter which will be added to the poolindex, effectively enabling multiple account mappings \param plcmaps_account A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. \retval 0 success. \retval 1 failure. */ int lcmaps_return_account_without_gsi( char * user_dn, char ** fqan_list, int nfqan, int mapcounter, lcmaps_account_info_t * plcmaps_account ); #endif /* LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI_H */ lcmaps-1.6.6/interface/lcmaps_utils.h0000644001726200004540000001136512471136645014560 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_utils.h \brief API for the utilities for the LCMAPS \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS utility functions: -# lcmaps_genfilename(): -# lcmaps_getfexist(): -# lcmaps_findfile(): -# lcmaps_get_gidlist(): \ingroup APIforLcmapsPlugins */ #ifndef LCMAPS_UTILS_H #define LCMAPS_UTILS_H /****************************************************************************** Include header files ******************************************************************************/ #include #include /****************************************************************************** * Module definition *****************************************************************************/ /*! \name FILENAME FUNCTIONS */ /*@{*/ /* Beginning of filename functions */ /****************************************************************************** Function: lcmaps_genfilename() (copied from GLOBUS gatekeeper.c) Description: generate an absolute file name given a starting prefix, a relative or absolute path, and a suffix Only use prefix if path is relative. Parameters: Returns: a pointer to a string which could be freeded. ******************************************************************************/ extern char * lcmaps_genfilename( const char * prefix, const char * path, const char * suffix ); /****************************************************************************** Function: lcmaps_getfexist() Description: picks the first existing file in argument list Parameters: n : number of paths, ... : list of paths Returns: returns filename found or NULL ******************************************************************************/ extern char * lcmaps_getfexist( int n, ... ); /****************************************************************************** Function: lcmaps_findfile() Description: Checks for file in standard directories Parameters: name Returns: returns filename found (should be freeed) or NULL ******************************************************************************/ extern char * lcmaps_findfile( char * name ); /*@}*/ /* End of filename functions */ /****************************************************************************** Function: lcmaps_get_gidlist() Description: Finds the list of gids for user in the group file (/etc/group) Returns a list of gid_t which should be freed by calling program. Parameters: username: the name of the user ngroups: ptr to int which will be filled with the number of gids. group_list: ptr to an array of gid_t. Returns: 0 on success. -1 on realloc failure -2 on getgrent failure 1 on failure ******************************************************************************/ extern int lcmaps_get_gidlist( const char * username, int * ngroups, gid_t ** group_list ); #endif /* LCMAPS_UTILS_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_utils.h,v $ $Date: 2014-02-25 16:11:54 +0100 (Tue, 25 Feb 2014) $ $Revision: 17511 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps.h0000644001726200004540000000473312471136645013341 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /*! \file lcmaps.h \brief Basic interface of the LCMAPS library. \author Martijn Steenbakkers for the EU DataGrid. \author Oscar Koeroo for the EGEE project. In order to use this API, please set in your application the following defines: \def LCMAPS_GSI_MODE \brief If set, the GSI dependent interface can be used \b LCMAPS_USE_DLOPEN \brief If set, the interface takes care of loading the LCMAPS libraries with dlopen (so it has no link dependency to any particular version). \ingroup LcmapsInterface */ /** \defgroup LcmapsInterface The LCMAPS API for LCMAPS clients \brief The API is available by including one of the specific interface header files: - \ref lcmaps_return_account_from_pem.h - \ref lcmaps_verify_account_from_pem.h See \ref lcmaps_client.c "the examples" for an example of how to use the interface. FIXME: explain the actual interface. \example lcmaps_client.c This is an example program that uses the interface. It uses only one of the four different interfaces, but the others work along similar lines. For details on the various macros used in this example, see \ref lcmaps_if.h "the interface definition". */ #ifndef LCMAPS_H #define LCMAPS_H /****************************************************************************** Include header files ******************************************************************************/ #ifdef LCMAPS_GSI_MODE # include "lcmaps_openssl.h" # include "lcmaps_globus.h" #else # include "lcmaps_basic.h" #endif /** \fn lcmaps_disable_voms_attributes_verification This is the lcmaps_disable_voms_attributes_verification function documentation */ #endif /* LCMAPS_H */ lcmaps-1.6.6/interface/Makefile.am0000644001726200004540000000437212471136645013744 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17210 2013-12-05 17:12:28Z msalle $ # Define the targets to be built here pkgconfigdir = $(datadir)/pkgconfig pkgconfig_DATA = \ lcmaps-interface.pc \ lcmaps-globus-interface.pc \ lcmaps-openssl-interface.pc \ lcmaps-basic-interface.pc #if LCMAPS_GSI_MODE #Lcmapsincludedir = $(includedir)/lcmaps #LcmapsAPIHeaders= \ # lcmaps_return_poolindex.h \ # lcmaps_gss_assist_gridmap.h \ # lcmaps_return_account_from_pem.h \ # lcmaps_verify_account_from_pem.h \ # lcmaps_account.h \ # lcmaps_types.h \ # lcmaps_setup.h \ # lcmaps.h #else #Lcmapsincludedir = $(includedir)/lcmaps #LcmapsAPIHeaders= \ # lcmaps_return_poolindex_without_gsi.h \ # lcmaps_gss_assist_gridmap.h \ # lcmaps_account.h \ # lcmaps_types.h \ # lcmaps_setup.h \ # lcmaps.h #endif Lcmapsincludedir = $(includedir)/lcmaps LcmapsAPIHeaders= \ lcmaps_return_poolindex.h \ _lcmaps_return_poolindex.h \ lcmaps_return_poolindex_without_gsi.h \ lcmaps_gss_assist_gridmap.h \ _lcmaps_gss_assist_gridmap.h \ lcmaps_return_account_from_pem.h \ _lcmaps_return_account_from_pem.h \ lcmaps_verify_account_from_pem.h \ _lcmaps_verify_account_from_pem.h \ lcmaps_account.h \ lcmaps_types.h \ lcmaps.h \ _lcmaps.h \ lcmaps_if.h \ lcmaps_basic.h \ lcmaps_openssl.h \ lcmaps_globus.h LcmapsLibHeaders= \ lcmaps_vo_data.h \ lcmaps_db_read.h \ lcmaps_arguments.h \ lcmaps_cred_data.h \ lcmaps_modules.h \ lcmaps_defines.h \ lcmaps_utils.h \ lcmaps_log.h LcmapsPluginHeaders= \ lcmaps_plugin_typedefs.h \ lcmaps_plugin_prototypes.h Lcmapsinclude_HEADERS=\ $(LcmapsLibHeaders) \ $(LcmapsAPIHeaders) \ $(LcmapsPluginHeaders) EXTRA_DIST = lcmaps_version.h.in nodist_Lcmapsinclude_HEADERS=lcmaps_version.h # noinst_HEADERS = lcmaps_types.h lcmaps_account.h MAINTAINERCLEANFILES = Makefile.in lcmaps-1.6.6/interface/lcmaps_account.h0000644001726200004540000001467512471136645015063 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_account.h \brief Utility functions to initialize, fill and clean an lcmaps account structure. \author Martijn Steenbakkers for the EU DataGrid. Utility functions to initialize, fill and clean an lcmaps account structure. This account structure is used by several lcmaps interfaces. \ingroup LcmapsInterface */ #ifndef LCMAPS_ACCOUNT_H #define LCMAPS_ACCOUNT_H /****************************************************************************** Include header files ******************************************************************************/ #include #include #include /****************************************************************************** Type definitions ******************************************************************************/ /*! \struct lcmaps_account_info_s \typedef lcmaps_account_info_t \brief structure type that contains the local account information gathered by LCMAPS */ typedef struct lcmaps_account_info_s { uid_t uid; /*!< the uid of the local account */ gid_t * pgid_list; /*!< the list of primary gids */ int npgid; /*!< the number of primary gids found */ gid_t * sgid_list; /*!< the list of secondary gids */ int nsgid; /*!< the number of secondary gids found */ char * poolindex; /*!< the pool index */ } lcmaps_account_info_t; /****************************************************************************** Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_account_info_init() Description: Initialize the account info structure Parameters: plcmaps_account: pointer to the account info struct to be filled Returns: 0: succes 1: failed to initialize the account info structure ******************************************************************************/ /*! \fn lcmaps_account_info_init( lcmaps_account_info_t * plcmaps_account ) \brief Initialize the account info structure \param plcmaps_account pointer to the account info struct to be filled \retval 0 success. \retval 1 failed to clean the account info structure */ typedef int lcmaps_account_info_init_t( lcmaps_account_info_t * plcmaps_account ); lcmaps_account_info_init_t lcmaps_account_info_init; /****************************************************************************** Function: lcmaps_account_info_fill() Description: Fill structure with account info Parameters: puid: ptr to the uid of the local account ppgid_list: ptr to the list of primary gids pnpgid: ptr to the number of primary gids found psgid_list: ptr to the list of secondary gids pnsgid: ptr to the number of secondary gids found ppoolindex: ptr to the pool index plcmaps_account: pointer to the account info struct to be filled Returns: 0: succes 1: failed to fill the account info structure -1: other failure ******************************************************************************/ /*! \fn lcmaps_account_info_fill( uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** ppoolindex, lcmaps_account_info_t * plcmaps_account ) \brief Fill structure with account info \param puid ptr to the uid of the local account \param ppgid_list ptr to the list of primary gids \param pnpgid ptr to the number of primary gids found \param psgid_list ptr to the list of secondary gids \param pnsgid ptr to the number of secondary gids found \param ppoolindex ptr to the pool index \param plcmaps_account pointer to the account info struct to be filled \retval 0 success. \retval 1 failed to fill the account info structure \retval -1 other failure \internal */ int lcmaps_account_info_fill( uid_t * puid, gid_t ** ppgid_list, int * pnpgid, gid_t ** psgid_list, int * pnsgid, char ** ppoolindex, lcmaps_account_info_t * plcmaps_account ); /*! \brief Clean the account info structure \param plcmaps_account pointer to the account info struct to be filled \retval 0 success. \retval 1 failed to clean the account info structure */ typedef int lcmaps_account_info_clean_t( lcmaps_account_info_t * plcmaps_account ); /** \brief Clean the account info structure */ #ifndef LCMAPS_USE_DLOPEN lcmaps_account_info_clean_t lcmaps_account_info_clean; #endif /* LCMAPS_USE_DLOPEN */ #endif /* LCMAPS_ACCOUNT_H */ lcmaps-1.6.6/interface/_lcmaps_gss_assist_gridmap.h0000644001726200004540000001233312471136645017440 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \file _lcmaps_gss_assist_gridmap.h \brief This file holds implementation details of the \a lcmaps_gss_assist_gridmap interface that users of the API should not need to deal with. \author Dennis van Dok is taking all the blame \ingroup LcmapsHiddenInterface */ #ifndef _LCMAPS_GSS_ASSIST_GRIDMAP_H #define _LCMAPS_GSS_ASSIST_GRIDMAP_H /* Needed for NULL */ #include # ifdef LCMAPS_USE_DLOPEN /*! \def LCMAPS_LIB_GSS_ASSIST_GRIDMAP \brief The name of the shared object that implements the interface. */ #define LCMAPS_LIB_GSS_ASSIST_GRIDMAP "liblcmaps_gss_assist_gridmap" LIBSUFF /** \struct _lcmaps_handle_gss_assist_gridmap_s \brief Struct containing all the LCMAPS functions, will be filled using dlsym() */ typedef struct _lcmaps_handle_gss_assist_gridmap_s { const char *libfilename; const char *helpername; void *handle,*helper; /* handles to the LCMAPS library and its optional helper (the latter is needed for the 'old' API to provide missing symbols) */ char *errmsg; lcmaps_init_t *lcmaps_init; globus_gss_assist_gridmap_t *globus_gss_assist_gridmap; lcmaps_term_t *lcmaps_term; /* Remainder is for 'new' API */ /* LCMAPS_HANDLE_VERSION_MEMBERS; */ getMajorVersion_t *getMajorVersion; lcmaps_get_major_version_t *lcmaps_get_major_version; lcmaps_get_minor_version_t *lcmaps_get_minor_version; lcmaps_get_patch_version_t *lcmaps_get_patch_version; /* If the above cannot be found (old lcmaps) these values will be set to 0 */ int majorversion, minorversion, patchversion; /* Next three is the 'OSG API' */ lcmaps_disable_voms_attributes_verification_t *lcmaps_disable_voms_attributes_verification; lcmaps_enable_voms_attributes_verification_t *lcmaps_enable_voms_attributes_verification; lcmaps_is_set_to_verify_voms_attributes_t *lcmaps_is_set_to_verify_voms_attributes; /* Plus the new two more fine-grained functions */ lcmaps_set_voms_attributes_verification_t *lcmaps_set_voms_attributes_verification; lcmaps_get_voms_attributes_verification_t *lcmaps_get_voms_attributes_verification; /* Verification time of proxies */ lcmaps_set_voms_verification_time_t *lcmaps_set_voms_verification_time; lcmaps_get_voms_verification_time_t *lcmaps_get_voms_verification_time; } _lcmaps_handle_gss_assist_gridmap_t; /* The declarator of the handle object */ #define _LCMAPS_DECL_HANDLE_GSS_ASSIST_GRIDMAP(l) \ _lcmaps_handle_gss_assist_gridmap_t l = { \ LCMAPS_LIB_GSS_ASSIST_GRIDMAP, \ LCMAPS_FIXVOMSHACKSO, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ -1,-1,-1, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ }; /* The initializer of the handle object */ #define _LCMAPS_INIT_HANDLE_GSS_ASSIST_GRIDMAP(l) \ ( \ (l)->libfilename = LCMAPS_LIB_GSS_ASSIST_GRIDMAP, \ (l)->helpername = LCMAPS_FIXVOMSHACKSO, \ (l)->handle = (l)->helper = NULL, \ (l)->errmsg = NULL, \ (l)->majorversion = (l)->minorversion = (l)->patchversion = -1, \ (l)->lcmaps_init = NULL, \ (l)->lcmaps_gss_assist_gridmap = NULL, \ (l)->lcmaps_term = NULL, \ (l)->getMajorVersion = NULL, \ (l)->lcmaps_disable_voms_attributes_verification = NULL, \ (l)->lcmaps_enable_voms_attributes_verification = NULL, \ (l)->lcmaps_is_set_to_verify_voms_attributes = NULL, \ (l)->lcmaps_set_voms_attributes_verification = NULL, \ (l)->lcmaps_get_voms_attributes_verification = NULL, \ (l)->lcmaps_set_voms_verification_time = NULL, \ (l)->lcmaps_get_voms_verification_time = NULL, \ 1 \ ) /* The single macro to call to initialize lcmaps */ #define _LCMAPS_LOAD_GSS_ASSIST_GRIDMAP(l) \ ( \ _LCMAPS_LOAD_INTERFACE_WITH_FIX(l) \ && LCMAPS_LOAD_FUNC(l,lcmaps_init) \ && LCMAPS_LOAD_FUNC(l,lcmaps_gss_assist_gridmap) \ && LCMAPS_LOAD_FUNC(l,lcmaps_term) \ ) # else /* LCMAPS_USE_DLOPEN */ typedef void * _lcmaps_handle_gss_assist_gridmap_t; #define _LCMAPS_DECL_HANDLE_GSS_ASSIST_GRIDMAP(l) #define _LCMAPS_INIT_HANDLE_GSS_ASSIST_GRIDMAP(l) (l = NULL) #define _LCMAPS_INTERFACE_GSS_ASSIST_GRIDMAP(l) (1) # endif /* LCMAPS_USE_DLOPEN */ #endif /* _LCMAPS_GSS_ASSIST_GRIDMAP_H */ lcmaps-1.6.6/interface/lcmaps_vo_data.h0000644001726200004540000001344212471136645015033 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_vo_data.h \brief LCMAPS module for creating and accessing VO data structures \author Martijn Steenbakkers for the EU DataGrid. The interface is composed of: -# lcmaps_createVoData(): create a VoData structure -# lcmaps_deleteVoData(): delete a VoData structure -# lcmaps_cleanVoData(): clean a VoData structure -# lcmaps_copyVoData(): copy (the contents of) a VoData structure -# lcmaps_printVoData(): print the contents of a VoData structure -# lcmaps_stringVoData(): cast a VoData structure into a string -# lcmaps_createVoMapping(): create a VoMapping structure -# lcmaps_deleteVoMapping(): delete a VoMapping structure -# lcmaps_cleanVoMapping(): clean a VoMapping structure -# lcmaps_copyVoMapping(): copy (the contents of) a VoMapping structure -# lcmaps_printVoMapping(): print the contents of a VoMapping structure \ingroup APIforLcmapsPlugins */ #ifndef LCMAPS_VO_DATA_H #define LCMAPS_VO_DATA_H /****************************************************************************** Define constants ******************************************************************************/ #define LCMAPS_NO_GID (gid_t)(-1) /*!< Invalid GID */ /****************************************************************************** Include header files ******************************************************************************/ #include #include /****************************************************************************** Type definitions ******************************************************************************/ /*! \struct lcmaps_vo_data_s \typedef lcmaps_vo_data_t \brief structure type that contains the VO information found in the user's proxy certificate */ typedef struct lcmaps_vo_data_s { char * vo; /*!< name of the VO to which the user belongs */ char * group; /*!< group within the VO */ char * subgroup; /*!< subgroup name */ char * role; /*!< the user's role */ char * capability; /*!< the user's capability */ } lcmaps_vo_data_t; /*! \struct lcmaps_vo_mapping_s \typedef lcmaps_vo_mapping_t \brief structure type that contains the VO information string (or FQAN) and the local Gid it is mapped to. */ typedef struct lcmaps_vo_mapping_s { char * vostring; /*!< VO information string */ char * groupname; /*!< groupname the VO information string should be mapped to (according to the groupmapfile) */ gid_t gid; /*!< GID the VO information string should be mapped to (according to the groupmapfile) */ } lcmaps_vo_mapping_t; /****************************************************************************** * Module definition *****************************************************************************/ /* * VO data section */ extern lcmaps_vo_data_t * lcmaps_createVoData( const char * vo, const char * group, const char * subgroup, const char * role, const char * capability ); extern int lcmaps_deleteVoData( lcmaps_vo_data_t ** vo_data ); extern int lcmaps_cleanVoData( lcmaps_vo_data_t * vo_data ); extern int lcmaps_copyVoData( lcmaps_vo_data_t * dst_vo_data, const lcmaps_vo_data_t * src_vo_data ); extern int lcmaps_printVoData( int debug_level, const lcmaps_vo_data_t * vo_data ); extern int lcmaps_stringVoData( const lcmaps_vo_data_t * vo_data, char * buffer, int nchars ); /* * VO group mapping section */ extern lcmaps_vo_mapping_t * lcmaps_createVoMapping( const char * vo_data_string, const char * groupname, const gid_t gid ); extern int lcmaps_deleteVoMapping( lcmaps_vo_mapping_t ** vo_mapping ); extern int lcmaps_cleanVoMapping( lcmaps_vo_mapping_t * vo_mapping ); extern int lcmaps_copyVoMapping( lcmaps_vo_mapping_t * dst_vo_mapping, const lcmaps_vo_mapping_t * src_vo_mapping ); extern int lcmaps_printVoMapping( int debug_level, const lcmaps_vo_mapping_t * vo_mapping ); #endif /* LCMAPS_VO_DATA_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_vo_data.h,v $ $Date: 2015-02-02 11:25:33 +0100 (Mon, 02 Feb 2015) $ $Revision: 18215 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps_if.h0000644001726200004540000001103612471136645014011 00000000000000/** \file lcmaps_if.h \brief interface functions for lcmaps. This file contains the macros that come with the LCMAPS API. Strictly speaking, they are not part of the API functions in the LCMAPS libraries, but help to get LCMAPS loaded and ready to run. The macros can be used in two modes: -# when linking with LCMAPS at build-time -* when using dlopen() at run-time. In this mode, set #define LCMAPS_USE_DLOPEN The LCMAPS API for client applications makes use of run-time linking with dlopen(), in order to support all kinds of deployment scenarios. Since all of the actual linking is figured out at run-time, it becomes possible to use the resulting client in combination with many older (as well as newer) versions of LCMAPS. It is also possible to use the API with straightforward linking almost without any change in the code (but the compile and link steps will be different). By defining \b LCMAPS_USE_DLOPEN you select the dlopen() style linking of LCMAPS. By leaving it undefined, direct linking is used and the flag \verbatim -llcmaps_return_account_from_pem \endverbatim must be given at link time. \ingroup LcmapsInterface */ #include "_lcmaps.h" /** \brief Macro to retrieve the error message in case of a failure In some failure cases of the other macros, an error message can be retrieved with this macro. It is of type char * and may be overwritten by subsequent macro calls. \param l the LCMAPS_HANDLE \return string containing the error message */ #define LCMAPS_ERRMSG(l) _LCMAPS_ERRMSG(l) /** \brief Macro to load specific extra functions Newer versions of LCMAPS offer some features not found in older versions. Applications that want to exploit these functions should declare their intentions by calling LCMAPS_REQUIRE_FUNC for each function separately. \param l the LCMAPS_HANDLE \param f the function to include \retval 1 success \retval 0 failure */ #define LCMAPS_REQUIRE_FUNC(l,f) _LCMAPS_REQUIRE_FUNC(l,f) /** \defgroup VersionMacros Version macros The version of the LCMAPS library can be found by the functions lcmaps_get_major_version, lcmaps_get_minor_version and lcmaps_get_patch_version, but older versions of LCMAPS did not feature them. The following macros provide a safe way to retrieve these numbers, and they will return 0 in case the functions are not there. @{ */ /** \def LCMAPS_MAJOR_VERSION(handle) \brief the major version of the LCMAPS library \param handle the LCMAPS handle */ /** \def LCMAPS_MINOR_VERSION(handle) \brief the minor version of the LCMAPS library \param handle the LCMAPS handle */ /** \def LCMAPS_PATCH_VERSION(handle) \brief the patch version of the LMAPS library \param handle the LCMAPS handle */ #define LCMAPS_MAJOR_VERSION(handle) _LCMAPS_MAJOR_VERSION(handle) #define LCMAPS_MINOR_VERSION(handle) _LCMAPS_MINOR_VERSION(handle) #define LCMAPS_PATCH_VERSION(handle) _LCMAPS_PATCH_VERSION(handle) /**@}*/ /** The LCMAPS_HANDLE \a l is set to load the LCMAPS interface library from the system default locations. Applications may have reasons to load from a different location, so this macro can be used to set the name \a p of the shared object. This is going to be passed straight to dlopen(). Be mindful that as \a p is not copied, it remains within scope throughout the use of the handle. For convenience we define empty macros in the case we do not use dlopen(). \param l the LCMAPS_HANDLE \param p path (absolute or relative) to the shared object to be opened */ #define LCMAPS_SET_LIBFILE_PATH(l,p) _LCMAPS_SET_LIBFILE_PATH(l,p) /** The LCMAPS_HANDLE \a l will load a helper library as a workaround for a bug in older versions of LCMAPS. This macro can be used to override the name of this helper. The same caveat applies as with LCMAPS_SET_LIBFILE_PATH. For convenience we define empty macros in the case we do not use dlopen(). \param l the LCMAPS_HANDLE \param p path (absolute or relative) to the helper library to use. */ #define LCMAPS_SET_HELPER_PATH(l,p) _LCMAPS_SET_HELPER_PATH(l,p) /** \brief Macro to call a function Calls to the LCMAPS interface functions should be done through this macro. The function parameter list should follow the macro call, like so: LCMAPS_CALL(handle,lcmaps_init_t)(logfile) The list of functions that can be used is defined by each of the individual interface files. \param l the LCMAPS_HANDLE \param f the LCMAPS function to call. */ #define LCMAPS_CALL(l,f) _LCMAPS_CALL(l,f) lcmaps-1.6.6/interface/lcmaps_types.h0000644001726200004540000001036312471136645014561 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_types.h \brief Public header file with typedefs for LCMAPS \author Martijn Steenbakkers for the EU DataGrid. \ingroup APIforLcmapsPlugins Last change: support for VOMS' generic attributes (Placi Flury flury@switch.ch) */ #ifndef LCMAPS_TYPES_H #define LCMAPS_TYPES_H /****************************************************************************** Include header files ******************************************************************************/ #include #include /****************************************************************************** Type definitions ******************************************************************************/ /*! \typedef lcmaps_request_t \brief Type of the LCMAPS request expressed in RSL/JDL (Internal) just a string. */ typedef char *lcmaps_request_t; typedef struct lcmaps_fqan_unix_s { char * fqan; uid_t uid; gid_t gid; } lcmaps_fqan_unix_t; typedef struct lcmaps_voms_generic_attr_s{ /*!< basically same fields as in the voms_apic.h*/ char * name; char * value; char * qualifier; } lcmaps_voms_generic_attr_t; typedef struct lcmaps_voms_s { char * user_dn; /*!< the User DN */ char * user_ca; /*!< the User CA */ char * voms_issuer_dn; /*!< the VOMS ACs Issuer (DN) */ char * voms_issuer_ca; /*!< the VOMS ACs Issuer (CA) */ char * uri; /*!< the VOMS uri */ char * date1; /*!< valid begin and end date per VOMS section */ char * date2; /*!< valid begin and end date per VOMS section */ char * voname; /*!< The VO name, not in FQAN format, just the name at the server */ lcmaps_fqan_unix_t * fqan_unix; /*!< the list of FQANs mapped with Unix UID and/or Unix GID */ int nfqan; /*!< the number of FQANs */ lcmaps_voms_generic_attr_t * attr_list; /*!< the list of generic voms attributes (name,value) pairs */ int nattr; /*!< the number of generic voms attributes */ } lcmaps_voms_t; typedef struct lcmaps_vomsdata_s { lcmaps_voms_t * voms; int nvoms; char * workvo; char * extra_data; } lcmaps_vomsdata_t; #endif /* LCMAPS_TYPES_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_types.h,v $ $Date: 2011-03-04 21:55:13 +0100 (Fri, 04 Mar 2011) $ $Revision: 14868 $ $Author: dennisvd $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps_arguments.h0000644001726200004540000001427312471136645015426 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_arguments.h \ingroup APIforLcmapsPlugins \author Martijn Steenbakkers and Oscar Koeroo for the EU DataGrid. \brief Public header file to be used by plugins Routines to access the plugin arguments. The interface is composed of: -# lcmaps_setArgValue(): Set the value of argument with name argName of argType to value -# lcmaps_getArgValue(): Get the value of argument with name argName of argType -# lcmaps_findArgName(): Get index of argument with name argName -# lcmaps_cntArgs(): Count the number of arguments */ #ifndef LCMAPS_ARGUMENTS_H #define LCMAPS_ARGUMENTS_H /****************************************************************************** Type definitions ******************************************************************************/ /*! \struct lcmaps_argument_s \typedef lcmaps_argument_t \brief Type of LCMAPS plugin run argument (to be passed to the plugin by plugin_run()) */ typedef struct lcmaps_argument_s { const char *argName; /*!< name of argument */ const char *argType; /*!< type of the argument */ int argInOut; /*!< input or output argument (0 = false = Input / 1 = true = Out) */ void *value; /*!< value of argument */ } lcmaps_argument_t; /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_setArgValue Description: Set the value of argType on the reserved place in values. The place within values is determined by the place where argName is found in the arguments list Parameters: argName: name of argument argType: type of argument argcx: number of arguments argvx: array of arguments structures Returns: 0: success -1: failure (could not find structure with name argName) ******************************************************************************/ extern int lcmaps_setArgValue(const char *argName, const char *argType, void *value, int argcx, lcmaps_argument_t **argvx); /****************************************************************************** Function: lcmaps_getArgValue Description: Gets the value of argType from values. The place within the lcmaps_argument_t values is determined by the argName listed in lcmaps_argument_t *argvx. Returns a void pointer to the value. Parameters: argName: name of argument argType: type of argument argcx: number of arguments argvx: array of arguments structures Returns: void pointer to the value or NULL ******************************************************************************/ extern void * lcmaps_getArgValue(const char *argName, const char *argType, int argcx, lcmaps_argument_t *argvx); /****************************************************************************** Function: lcmaps_findArgName Description: Search for argName in the arguments list. Returns the index to lcmaps_argument_t element. Parameters: argName: name of argument argcx: number of arguments argvx: array of arguments structures Returns: index to lcmaps_argument_t element ******************************************************************************/ extern int lcmaps_findArgName(const char *argName, int argcx, lcmaps_argument_t *argvx); /****************************************************************************** Function: lcmaps_findArgNameAndType Description: Search for argName and Type in the arguments list. Returns the index to lcmaps_argument_t element. Parameters: argName: name of argument argType: type of argument argcx: number of arguments argvx: array of arguments structures Returns: index to lcmaps_argument_t element ******************************************************************************/ extern int lcmaps_findArgNameAndType(const char *argName, const char *argType, int argcx, lcmaps_argument_t *argvx); /****************************************************************************** Function: lcmaps_cntArgs Description: Count the number of arguments that are defined in a plug-in Returns this number. Parameters: argvx: array of arguments structures Returns: the number of arguments ******************************************************************************/ extern int lcmaps_cntArgs(lcmaps_argument_t *argvx); #endif /* LCMAPS_ARGUMENTS_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_arguments.h,v $ $Date: 2015-02-02 11:25:33 +0100 (Mon, 02 Feb 2015) $ $Revision: 18215 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps_verify_account_from_pem.h0000644001726200004540000001623712471136645020327 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** \file lcmaps_verify_account_from_pem.h \brief This interface verifies the credential mapping from user credential in pem format. \author Martijn Steenbakkers for the EU DataGrid. \brief This interface verifies the credential mapping from user credential in pem format. As input it requires the user credential in PEM format and the lcmaps account from the type lcmaps_account_info_t. -# lcmaps_verify_account_from_pem: interface function In general the behaviour of LCMAPS can be influenced by setting the following environment variables: Env variable Description (default value) --------------- ----------- LCMAPS_LOG_FILE The logfile to which lcmaps log ("/var/log/lcmaps.log") messages will be written LCMAPS_DB_FILE the location (name) of the lcmaps policy file (LCMAPS_ETC_DIR"/lcmaps.db") LCMAPS_POLICY_NAME the list of the lcmaps policies (in the ("acquisition_policy") policy file) that should be evaluated until a policy succeeds. The policies are separated by ':', e.g. "policy_preferred:policy_fallback:". LCMAPS_LOG_STRING A string that will be prepended to all ("poolindex :") LCMAPS logging messages. If this variable is not set a default will be taken which includes a timestamp LCMAPS_DEBUG_LEVEL The debug level influences the logging ("0") verbosity. values 0-5. LCMAPS_MODULES_DIR The directory in which modules can be found. ("") Note: may be overwritten by what is in the policy file (the convential method) LCMAPS_ETC_DIR The directory of the lcmaps policy files ("/opt/glite/etc/lcmaps") and other config files. In this case this location is hardcoded to be "/opt/glite/etc/lcmaps", because this lcmaps interface is used by VO-services and, therefore, not controlled by the site. GRIDMAPDIR The directory in which the poolaccount leases ("") are registered. Note: may be overwritten by what is in the policy file (the convential method) \ingroup LcmapsBasicInterface */ #ifndef LCMAPS_VERIFY_ACCOUNT_FROM_PEM_H #define LCMAPS_VERIFY_ACCOUNT_FROM_PEM_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_account.h" #include "lcmaps_basic.h" /****************************************************************************** Module definition *****************************************************************************/ /****************************************************************************** Function: lcmaps_verify_account_from_pem Description: Verify the account mapping from the supplied user credential. Parameters: pem_string: : The PEM-encoded string containing the user proxy lcmaps_account : A structure that contains account information: (input) uid, gids (primary and secondary). Please use lcmaps_account_info_clean() to clean this structure after use. Returns: 0: success 1: failure ******************************************************************************/ /*! lcmaps_verify_account_from_pem( char * pem_string, lcmaps_account_info_t lcmaps_account ) \brief Verify the account mapping from the supplied user credential. \param pem_string The PEM-encoded string containing the user proxy \param lcmaps_account A structure that contains account information: (input) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. \retval 0 success. \retval 1 failure. */ typedef int lcmaps_verify_account_from_pem_t( char * pem_string, lcmaps_account_info_t lcmaps_account ); #include "_lcmaps_verify_account_from_pem.h" #ifndef LCMAPS_USE_DLOPEN lcmaps_verify_account_from_pem_t lcmaps_verify_account_from_pem; #endif /* LCMAPS_USE_DLOPEN */ /** The opaque handle type that the API user should declare a single instance of. This must be passed to nearly all macros (in OO terms, this would be a derived type of LCMAPS_HANDLE). Usage: LCMAPS_HANDLE_VERIFY_ACCOUNT_FROM_PEM handle; */ typedef _lcmaps_handle_verify_account_from_pem_t LCMAPS_HANDLE_VERIFY_RETURN_ACCOUNT_FROM_PEM; /** The declarator can be used to declare and init the handle in one go. */ #define LCMAPS_DECL_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) \ _LCMAPS_DECL_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) /** The initializer of the handle object. This macro must be called before any other macro using an LCMAPS_HANDLE. \param l An instance of LCMAPS_HANDLE_VERIFY_ACCOUNT_FROM_PEM \retval 1 always. */ #define LCMAPS_INIT_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) \ _LCMAPS_INIT_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) /** This macro loads and prepares LCMAPS; must be called before any use of the interface functions, but after LCMAPS_INIT_HANDLE_VERIFY_ACCOUNT_FROM_PEM. \param l an initialized handle \retval 0 in case of failure, inspect LCMAPS_ERRMSG(l) \retval 1 on success */ #define LCMAPS_LOAD_VERIFY_ACCOUNT_FROM_PEM(l) \ _LCMAPS_LOAD_VERIFY_ACCOUNT_FROM_PEM(l) /** \brief close the LCMAPS_HANDLE This macro closes any opened interface libraries and clears the handle. After this call the handle must be considered invalid. The LCMAPS_CLOSE_HANDLE can be found in lcmaps.h. */ #define LCMAPS_CLOSE_HANDLE_VERIFY_ACCOUNT_FROM_PEM(l) \ LCMAPS_CLOSE_HANDLE(l) #endif /* LCMAPS_VERIFY_ACCOUNT_FROM_PEM_H */ lcmaps-1.6.6/interface/lcmaps_cred_data.h0000644001726200004540000001274212471136645015326 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_cred_data.h \brief Public header file to be used by plugins Routines to access the credential data that are gathered by the plugins. \author Martijn Steenbakkers and Oscar Koeroo for the EU DataGrid. \ingroup APIforLcmapsPlugins */ #ifndef LCMAPS_CRED_DATA_H #define LCMAPS_CRED_DATA_H /****************************************************************************** Define constants ******************************************************************************/ #define DN 5 #define UID 10 #define PRI_GID 20 #define SEC_GID 30 #define LCMAPS_VO_CRED 90 #define LCMAPS_VO_CRED_STRING 100 #define LCMAPS_VO_CRED_MAPPING 110 #define POOL_INDEX 200 /****************************************************************************** Include header files ******************************************************************************/ #include #include #include #include "lcmaps_vo_data.h" /****************************************************************************** Type definitions ******************************************************************************/ /*! \struct cred_data_s \typedef cred_data_t \brief structure type that contains the gathered (local) credentials en VOMS info */ typedef struct cred_data_s { char *dn; /*!< user globus DN */ uid_t *uid; /*!< list of userIDs */ gid_t *priGid; /*!< list of primary groupIDs */ gid_t *secGid; /*!< list of secondary groupIDs */ lcmaps_vo_data_t *VoCred; /*!< list of VO data structures */ char **VoCredString; /*!< list of VO data strings */ lcmaps_vo_mapping_t *VoCredMapping; /*!< list of VO mapping structures */ int cntUid; /*!< number of userIDs */ int cntPriGid; /*!< number of primary groupIDs (in principle only one) */ int cntSecGid; /*!< number of secondary groupIDs (could be any number) */ int cntVoCred; /*!< number of VO data structures */ int cntVoCredString; /*!< number of VO data strings */ int cntVoCredMapping; /*!< number of VO mapping structures */ char *pool_index; /*!< pool_index is the concat of a DN+GIDs for the DAS */ } cred_data_t; /****************************************************************************** * Module definition *****************************************************************************/ /****************************************************************************** Function: addCredentialData Description: Add a credential to the list of found credentials (uids, gids etc) Parameters: datatype: type of credential data: pointer to credential Returns: 0: success -1: failure (unknown data type, realloc error) ******************************************************************************/ extern int addCredentialData(int datatype, void *data); /****************************************************************************** Function: getCredentialData Description: Get pointer to a list of credential data of a certain type Parameters: datatype: type of credential count: number of credentials found in list of datatype Returns: pointer to list of credential data or NULL in case of failure ******************************************************************************/ extern void *getCredentialData(int datatype, int *count); #endif /* LCMAPS_CRED_DATA_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_cred_data.h,v $ $Date: 2015-02-02 11:25:33 +0100 (Mon, 02 Feb 2015) $ $Revision: 18215 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps_modules.h0000644001726200004540000000476012471136645015071 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_modules.h \brief The LCMAPS authorization plugins/modules should "include" this file. \author Martijn Steenbakkers for the EU DataGrid. This file includes the header files that are needed by the LCMAPS authorization plugins/modules. \ingroup APIforLcmapsPlugins */ /*! \defgroup APIforLcmapsPlugins The LCMAPS API for LCMAPS plugins \brief The API is available by including the header lcmaps_modules.h */ #ifndef LCMAPS_MODULES_H #define LCMAPS_MODULES_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_utils.h" #include "lcmaps_log.h" #include "lcmaps_types.h" #include "lcmaps_defines.h" #endif /* LCMAPS_MODULES_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_modules.h,v $ $Date: 2011-03-04 21:55:13 +0100 (Fri, 04 Mar 2011) $ $Revision: 14868 $ $Author: dennisvd $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps-basic-interface.pc.in0000644001726200004540000000030512471136645017125 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ Name: lcmaps-basic-interface Description: LCMAPS header files with globus dependencies Version: @VERSION@ Cflags: -I${includedir} lcmaps-1.6.6/interface/_lcmaps_return_account_from_pem.h0000644001726200004540000001512712471136645020476 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \file _lcmaps_return_account_from_pem.h \brief This file holds implementation details of the \a lcmaps_return_account_from_pem interface that users of the API should not need to deal with. \author Dennis van Dok is taking all the blame \ingroup LcmapsHiddenInterface */ #ifndef _LCMAPS_RETURN_ACCOUNT_FROM_PEM_H #define _LCMAPS_RETURN_ACCOUNT_FROM_PEM_H # ifdef LCMAPS_USE_DLOPEN /* Needed for NULL */ #include /*! \brief The name of the shared object that implements the interface. This is passed straight to dlopen(). */ #define LCMAPS_LIB_RETURN_ACCOUNT_FROM_PEM "liblcmaps_return_account_from_pem" LIBSUFF /** \brief LCMAPS Handle implementation. This struct contains all the LCMAPS functions to be filled using dlsym(). */ typedef struct _lcmaps_handle_return_account_from_pem_s { const char *libfilename; /**< the name of the library file to dlopen() for this interface */ const char *helpername; /**< the name of the helper library in case LCMAPS is really old */ void *handle, /**< handle to the LCMAPS interface library obtained from dlopen() */ *helper; /**< handles to the optional helper (needed for the 'old' API to provide missing symbols) */ char *errmsg; /**< the error string obtained from either dlopen() or dlsym() */ lcmaps_init_t *lcmaps_init; /**< handle to the lcmaps_init() function */ lcmaps_account_info_init_t *lcmaps_account_info_init; /**< */ lcmaps_return_account_from_pem_t *lcmaps_return_account_from_pem; /**< */ lcmaps_term_t *lcmaps_term; /**< */ lcmaps_account_info_clean_t *lcmaps_account_info_clean; /**< */ /* Remainder is for 'new' API */ /* LCMAPS_HANDLE_VERSION_MEMBERS; */ getMajorVersion_t *getMajorVersion; /**< */ lcmaps_get_major_version_t *lcmaps_get_major_version; /**< */ lcmaps_get_minor_version_t *lcmaps_get_minor_version; /**< */ lcmaps_get_patch_version_t *lcmaps_get_patch_version; /**< */ /* If the above cannot be found (old lcmaps) these values will be set to 0 */ int majorversion, /**< */ minorversion, /**< */ patchversion; /**< the version numbers to retrieve, or 0 if not present*/ /* Next three is the 'OSG API' */ lcmaps_disable_voms_attributes_verification_t *lcmaps_disable_voms_attributes_verification; /**< */ lcmaps_enable_voms_attributes_verification_t *lcmaps_enable_voms_attributes_verification; /**< */ lcmaps_is_set_to_verify_voms_attributes_t *lcmaps_is_set_to_verify_voms_attributes; /**< */ /* Plus the new two more fine-grained functions */ lcmaps_set_voms_attributes_verification_t *lcmaps_set_voms_attributes_verification; lcmaps_get_voms_attributes_verification_t *lcmaps_get_voms_attributes_verification; /* Verification time of proxies */ lcmaps_set_voms_verification_time_t *lcmaps_set_voms_verification_time; lcmaps_get_voms_verification_time_t *lcmaps_get_voms_verification_time; } _lcmaps_handle_return_account_from_pem_t; /** \brief The declarator of the handle object Be careful to line up the initializers with the members of _lcmaps_handle_return_account_from_pem_t. \see _lcmaps_handle_return_account_from_pem_t */ #define _LCMAPS_DECL_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) \ _lcmaps_handle_return_account_from_pem_t l = { \ LCMAPS_LIB_RETURN_ACCOUNT_FROM_PEM, \ LCMAPS_FIXVOMSHACKSO, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ -1,-1,-1, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ }; /** \brief Initializer of the handle object The user has a choice to use either _LCMAPS_DECL_HANDLE_RETURN_ACCOUNT_FROM_PEM or have a separate declaration of a handle object, e.g. for dynamic allocation. This macro should be called to do the initialization. \see _lcmaps_handle_return_account_from_pem_t */ #define _LCMAPS_INIT_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) \ ( \ (l)->libfilename = LCMAPS_LIB_RETURN_ACCOUNT_FROM_PEM, \ (l)->helpername = LCMAPS_FIXVOMSHACKSO, \ (l)->handle = (l)->helper = NULL, \ (l)->errmsg = NULL, \ (l)->majorversion = (l)->minorversion = (l)->patchversion = -1, \ (l)->lcmaps_init = NULL, \ (l)->lcmaps_account_info_init = NULL, \ (l)->lcmaps_return_account_from_pem = NULL, \ (l)->lcmaps_term = NULL, \ (l)->lcmaps_account_info_clean = NULL, \ (l)->getMajorVersion = NULL, \ (l)->lcmaps_disable_voms_attributes_verification = NULL, \ (l)->lcmaps_enable_voms_attributes_verification = NULL, \ (l)->lcmaps_is_set_to_verify_voms_attributes = NULL, \ (l)->lcmaps_set_voms_attributes_verification = NULL, \ (l)->lcmaps_get_voms_attributes_verification = NULL, \ (l)->lcmaps_set_voms_verification_time = NULL, \ (l)->lcmaps_get_voms_verification_time = NULL, \ 1 \ ) /* The single macro to call to initialize lcmaps */ #define _LCMAPS_LOAD_RETURN_ACCOUNT_FROM_PEM(l) \ ( \ _LCMAPS_LOAD_INTERFACE_WITH_FIX(l) \ && LCMAPS_LOAD_FUNC(l,lcmaps_init) \ && LCMAPS_LOAD_FUNC(l,lcmaps_account_info_init) \ && LCMAPS_LOAD_FUNC(l,lcmaps_return_account_from_pem) \ && LCMAPS_LOAD_FUNC(l,lcmaps_term) \ && LCMAPS_LOAD_FUNC(l,lcmaps_account_info_clean) \ ) # else /* LCMAPS_USE_DLOPEN */ typedef void * _lcmaps_handle_return_account_from_pem_t; #define _LCMAPS_DECL_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) \ _lcmaps_handle_return_account_from_pem_t l = NULL; #define _LCMAPS_INIT_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) (*(l) = NULL) #define _LCMAPS_LOAD_RETURN_ACCOUNT_FROM_PEM(l) (1) # endif /* LCMAPS_USE_DLOPEN */ #endif /* _LCMAPS_RETURN_ACCOUNT_FROM_PEM_H */ lcmaps-1.6.6/interface/lcmaps_globus.h0000644001726200004540000001346512471136645014716 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** \defgroup LcmapsGlobusInterface The LCMAPS Globus dependent interfaces \brief These interface functions require Globus data types This part of the API defines types and functions for the Globus GSI interface. This includes all of the interfaces found in lcmaps_openssl.h, and lcmaps_basic.h. \ingroup LcmapsInterface */ /** \file lcmaps_globus.h \brief GSS dependent functions of the LCMAPS library. \author Martijn Steenbakkers for the EU DataGrid. \author Oscar Koeroo for the EGEE project. This header contains the declarations of the LCMAPS library functions: -# lcmaps_run(): To do the user mapping -# lcmaps_run_and_return_username(): To do the user mapping and return the user name -# lcmaps_run_and_return_poolindex(): To do the user mapping and return the poolindex And the following -# lcmaps_return_poolindex() Returns the poolindex based on fixed arguments: security context, buffer and buffer length -# lcmaps_return_poolindex_from_gss_cred() Returns the poolindex based on fixed arguments: gss credential, buffer and buffer length \ingroup LcmapsGlobusInterface */ #ifndef LCMAPS_GLOBUS_H #define LCMAPS_GLOBUS_H /****************************************************************************** Include header files ******************************************************************************/ /* Needed for NULL */ #include #include #include "_lcmaps.h" #include "lcmaps_types.h" #include "lcmaps_openssl.h" /****************************************************************************** * Module definition *****************************************************************************/ /*! \brief let LCMAPS handle the user mapping Do the user mapping based on the user's gss (gsi) credential and the job request. As a back-up for empty credentials the user DN may be specified as well. This is the legacy lcmaps interface and is used by the \b gatekeeper. \param user_dn_tmp user DN \param user_cred GSS/GSI user credential \param request authorization request as RSL string \retval 0 mapping succeeded. \retval 1 mapping failed. */ typedef int lcmaps_run_t( char * user_dn_tmp, gss_cred_id_t user_cred, lcmaps_request_t request ); /*! \brief let LCMAPS handle the user mapping and return user name do the user mapping based on the provided list of policies (first successful policy found in the lcmaps policy file (lcmaps.db) will result in the user mapping) and return user name. As a back-up for empty credentials the user DN may be specified as well. For this \b ALLOW_EMPTY_CREDENTIALS should be defined. This interface is used by the \b GridFTP server. \param user_dn_tmp user DN \param user_cred GSS/GSI user credential \param request authorization request as RSL string \param usernamep pointer to user name (to be freed by calling application). Note: usernamep should be non-NULL at the start ! \param npols number of policies to be considered for evaluation \param policynames the names of the policies to be considered for evaluation \retval 0 mapping succeeded. \retval 1 mapping failed. */ typedef int lcmaps_run_and_return_username_t( char * user_dn_tmp, gss_cred_id_t user_cred, lcmaps_request_t request, char ** usernamep, int npols, char ** policynames ); /*! \brief let LCMAPS handle the user mapping and return a poolindex do the user mapping based on the provided list of policies (first successful policy found in the lcmaps policy file (lcmaps.db) will result in the user mapping) and return the poolindex As a back-up for empty credentials the user DN may be specified as well. For this \b ALLOW_EMPTY_CREDENTIALS should be defined. This interface was intended to be used by a wrapper function for the \b WorkSpace \b Service (WSS, f.q.a. Dynamic Account Service - DAS). \param user_dn_tmp user DN \param user_cred GSS/GSI user credential \param request authorization request as RSL string \param poolindexp pointer to poolindex (to be freed by calling application). Note: poolindex should be non-NULL at the start ! \param npols number of policies to be considered for evaluation \param policynames the names of the policies to be considered for evaluation \retval 0 mapping succeeded. \retval 1 mapping failed. */ typedef int lcmaps_run_and_return_poolindex_t( char * user_dn_tmp, gss_cred_id_t user_cred, lcmaps_request_t request, char ** poolindexp, int npols, char ** policynames ); # ifndef LCMAPS_USE_DLOPEN lcmaps_run_t lcmaps_run; lcmaps_run_and_return_username_t lcmaps_run_and_return_username; lcmaps_run_and_return_poolindex_t lcmaps_run_and_return_poolindex; # endif /* LCMAPS_USE_DLOPEN */ #endif /* LCMAPS_GLOBUS_H */ lcmaps-1.6.6/interface/lcmaps_gss_assist_gridmap.h0000644001726200004540000000646212471136645017307 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** \file lcmaps_gss_assist_gridmap.h \brief This interface is equal to the gss_assist_gridmap interface, but uses the LCMAPS libraries in the back. \author Martijn Steenbakkers for the EU DataGrid. This header contains the following LCMAPS library functions: -# globus_gss_assist_gridmap Legacy interface \ingroup LcmapsBasicInterface */ #ifndef LCMAPS_GSS_ASSIST_GRIDMAP_H #define LCMAPS_GSS_ASSIST_GRIDMAP_H #include "lcmaps_basic.h" /****************************************************************************** * Module definition *****************************************************************************/ typedef int globus_gss_assist_gridmap_t( char * globusidp, char ** useridp ); #include "_lcmaps_gss_assist_gridmap.h" #ifndef LCMAPS_USE_DLOPEN /** \brief declaration of the interface function The interface function needs to be declared when linking rather than dlopen()'ing. */ globus_gss_assist_gridmap_t globus_gss_assist_gridmap; #endif /* LCMAPS_USE_DLOPEN */ /** \brief Opaque handle type for the interface The opaque handle type that the API user should declare a single instance of. This must be passed to nearly all macros (in OO terms, this would be a derived type of LCMAPS_HANDLE). Usage: LCMAPS_HANDLE_GSS_ASSIST_GRIDMAP handle; */ typedef _lcmaps_handle_gss_assist_gridmap_t LCMAPS_HANDLE_GSS_ASSIST_GRIDMAP; /** The declarator can be used to declare and init the handle in one go. */ #define LCMAPS_DECL_HANDLE_GSS_ASSIST_GRIDMAP(l) \ _LCMAPS_DECL_HANDLE_GSS_ASSIST_GRIDMAP(l) /** The initializer of the handle object. This macro must be called before any other macro using an LCMAPS_HANDLE. \param l An instance of LCMAPS_HANDLE_GSS_ASSIST_GRIDMAP \retval 1 always. */ #define LCMAPS_INIT_HANDLE_GSS_ASSIST_GRIDMAP(l) \ _LCMAPS_INIT_HANDLE_GSS_ASSIST_GRIDMAP(l) /** This macro loads and prepares LCMAPS; must be called before any use of the interface functions, but after LCMAPS_INIT_HANDLE_GSS_ASSIST_GRIDMAP. \param l an initialized handle \retval 0 in case of failure, inspect LCMAPS_ERRMSG(l) \retval 1 on success */ #define LCMAPS_LOAD_GSS_ASSIST_GRIDMAP(l) \ _LCMAPS_LOAD_GSS_ASSIST_GRIDMAP(l) /** \brief close the LCMAPS_HANDLE This macro closes any opened interface libraries and clears the handle. After this call the handle must be considered invalid. The LCMAPS_CLOSE_HANDLE can be found in lcmaps.h. */ #define LCMAPS_CLOSE_HANDLE_GSS_ASSIST_GRIDMAP(l) \ LCMAPS_CLOSE_HANDLE(l) #endif /* LCMAPS_GSS_ASSIST_GRIDMAP_H */ lcmaps-1.6.6/interface/_lcmaps_return_poolindex.h0000644001726200004540000001311712471136645017154 00000000000000/* * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \file _lcmaps_return_poolindex.h \brief This file holds implementation details of the \a lcmaps_return_poolindex interface that users of the API should not need to deal with. \author Dennis van Dok is taking all the blame \ingroup LcmapsHiddenInterface */ #ifndef _LCMAPS_RETURN_POOLINDEX_H #define _LCMAPS_RETURN_POOLINDEX_H #include # ifdef LCMAPS_USE_DLOPEN /*! \def LCMAPS_LIB_RETURN_POOLINDEX \brief The name of the shared object that implements the interface. */ #define LCMAPS_LIB_RETURN_POOLINDEX "liblcmaps_return_poolindex" LIBSUFF /** \struct _lcmaps_handle_return_poolindex_s \brief Struct containing all the LCMAPS functions, will be filled using dlsym() */ typedef struct _lcmaps_handle_return_poolindex_s { const char *libfilename; const char *helpername; void *handle,*helper; /* handles to the LCMAPS library and its optional helper (the latter is needed for the 'old' API to provide missing symbols) */ char *errmsg; lcmaps_init_t *lcmaps_init; lcmaps_account_info_init_t *lcmaps_account_info_init; lcmaps_return_poolindex_t *lcmaps_return_poolindex; lcmaps_return_poolindex_from_gss_cred_t *lcmaps_return_poolindex_from_gss_cred; lcmaps_term_t *lcmaps_term; lcmaps_account_info_clean_t *lcmaps_account_info_clean; /* Remainder is for 'new' API */ /* LCMAPS_HANDLE_VERSION_MEMBERS; */ getMajorVersion_t *getMajorVersion; lcmaps_get_major_version_t *lcmaps_get_major_version; lcmaps_get_minor_version_t *lcmaps_get_minor_version; lcmaps_get_patch_version_t *lcmaps_get_patch_version; /* If the above cannot be found (old lcmaps) these values will be set to 0 */ int majorversion, minorversion, patchversion; /* Next three is the 'OSG API' */ lcmaps_disable_voms_attributes_verification_t *lcmaps_disable_voms_attributes_verification; lcmaps_enable_voms_attributes_verification_t *lcmaps_enable_voms_attributes_verification; lcmaps_is_set_to_verify_voms_attributes_t *lcmaps_is_set_to_verify_voms_attributes; /* Plus the new two more fine-grained functions */ lcmaps_set_voms_attributes_verification_t *lcmaps_set_voms_attributes_verification; lcmaps_get_voms_attributes_verification_t *lcmaps_get_voms_attributes_verification; /* Verification time of proxies */ lcmaps_set_voms_verification_time_t *lcmaps_set_voms_verification_time; lcmaps_get_voms_verification_time_t *lcmaps_get_voms_verification_time; } _lcmaps_handle_return_poolindex_t; /* The declarator of the handle object */ #define _LCMAPS_DECL_HANDLE_RETURN_POOLINDEX(l) \ _lcmaps_handle_return_poolindex_t l = { \ LCMAPS_LIB_RETURN_POOLINDEX, \ LCMAPS_FIXVOMSHACKSO, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ -1,-1,-1, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ NULL, \ }; /* The initializer of the handle object */ #define _LCMAPS_INIT_HANDLE_RETURN_POOLINDEX(l) \ ( \ (l)->libfilename = LCMAPS_LIB_RETURN_POOLINDEX, \ (l)->helpername = LCMAPS_FIXVOMSHACKSO, \ (l)->handle = (l)->helper = NULL, \ (l)->errmsg = NULL, \ (l)->majorversion = (l)->minorversion = (l)->patchversion = -1, \ (l)->lcmaps_init = NULL, \ (l)->lcmaps_return_poolindex = NULL, \ (l)->lcmaps_return_poolindex_from_gss_cred = NULL, \ (l)->lcmaps_term = NULL, \ (l)->getMajorVersion = NULL, \ (l)->lcmaps_disable_voms_attributes_verification = NULL, \ (l)->lcmaps_enable_voms_attributes_verification = NULL, \ (l)->lcmaps_is_set_to_verify_voms_attributes = NULL, \ (l)->lcmaps_set_voms_attributes_verification = NULL, \ (l)->lcmaps_get_voms_attributes_verification = NULL, \ (l)->lcmaps_set_voms_verification_time = NULL, \ (l)->lcmaps_get_voms_verification_time = NULL, \ 1 \ ) /* The single macro to call to initialize lcmaps */ #define _LCMAPS_LOAD_RETURN_POOLINDEX(l) \ ( \ _LCMAPS_LOAD_INTERFACE_WITH_FIX(l) \ && LCMAPS_LOAD_FUNC(l,lcmaps_init) \ && LCMAPS_LOAD_FUNC(l,lcmaps_return_poolindex) \ && LCMAPS_LOAD_FUNC(l,lcmaps_return_poolindex_from_gss_cred) \ && LCMAPS_LOAD_FUNC(l,lcmaps_term) \ ) # else /* LCMAPS_USE_DLOPEN */ typedef void * _lcmaps_handle_return_poolindex_t; #define _LCMAPS_DECL_HANDLE_RETURN_POOLINDEX(l) #define _LCMAPS_INIT_HANDLE_RETURN_POOLINDEX(l) (l = NULL) #define _LCMAPS_INTERFACE_RETURN_POOLINDEX(l) (1) # endif /* LCMAPS_USE_DLOPEN */ #endif /* _LCMAPS_RETURN_POOLINDEX_H */ lcmaps-1.6.6/interface/lcmaps_return_account_from_pem.h0000644001726200004540000001016512471136645020334 00000000000000/* * Copyright © Stichting FOM. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \file lcmaps_return_account_from_pem.h \brief Include file for the return account from PEM interface \author The Nikhef Grid Security Middleware Team \ingroup LcmapsBasicInterface */ #ifndef LCMAPS_RETURN_ACCOUNT_FROM_PEM_H #define LCMAPS_RETURN_ACCOUNT_FROM_PEM_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_account.h" #include "lcmaps_basic.h" /** \brief Return the mapped account and poolindex If LCMAPS is invoked via this interface it will return the user account info and poolindex, alternatively named leaseid, to the calling application. \param pem_string The PEM-encoded string containing the user proxy \param mapcounter The counter which will be added to the poolindex, effectively enabling multiple account mappings \param plcmaps_account A structure that contains account information: (output) uid, gids (primary and secondary) and the poolindex Please use lcmaps_account_info_clean() to clean this structure after use. \retval 0 success. \retval 1 failure. */ typedef int lcmaps_return_account_from_pem_t( char * pem_string, int mapcounter, lcmaps_account_info_t * plcmaps_account ); /** The interface handle details are found in this 'implementation' header file that the API user should never bother to see. */ #include "_lcmaps_return_account_from_pem.h" #ifndef LCMAPS_USE_DLOPEN /** \brief declaration of the interface function The interface function needs to be declared when linking rather than dlopen()'ing. */ lcmaps_return_account_from_pem_t lcmaps_return_account_from_pem; #endif /* LCMAPS_USE_DLOPEN */ /** \brief Opaque handle type for the interface The opaque handle type that the API user should declare a single instance of. This must be passed to nearly all macros (in OO terms, this would be a derived type of LCMAPS_HANDLE). Usage: LCMAPS_HANDLE_RETURN_ACCOUNT_FROM_PEM handle; */ typedef _lcmaps_handle_return_account_from_pem_t LCMAPS_HANDLE_RETURN_ACCOUNT_FROM_PEM; /* typedef void * LCMAPS_HANDLE_RETURN_ACCOUNT_FROM_PEM; */ /** The declarator can be used to declare and init the handle in one go. */ #define LCMAPS_DECL_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) \ _LCMAPS_DECL_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) /** The initializer of the handle object. This macro must be called before any other macro using an LCMAPS_HANDLE. \param l An instance of LCMAPS_HANDLE_RETURN_ACCOUNT_FROM_PEM \retval 1 always. */ #define LCMAPS_INIT_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) \ _LCMAPS_INIT_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) /** This macro loads and prepares LCMAPS; must be called before any use of the interface functions, but after LCMAPS_INIT_HANDLE_RETURN_ACCOUNT_FROM_PEM. \param l an initialized handle \retval 0 in case of failure, inspect LCMAPS_ERRMSG(l) \retval 1 on success */ #define LCMAPS_LOAD_RETURN_ACCOUNT_FROM_PEM(l) \ _LCMAPS_LOAD_RETURN_ACCOUNT_FROM_PEM(l) /** \brief close the LCMAPS_HANDLE This macro closes any opened interface libraries and clears the handle. After this call the handle must be considered invalid. The LCMAPS_CLOSE_HANDLE can be found in lcmaps.h. */ #define LCMAPS_CLOSE_HANDLE_RETURN_ACCOUNT_FROM_PEM(l) \ LCMAPS_CLOSE_HANDLE(l) #endif /* LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI_H */ lcmaps-1.6.6/interface/lcmaps_version.h.in0000644001726200004540000000055012471136645015504 00000000000000#ifndef _LCMAPS_VERSION_H #define _LCMAPS_VERSION_H #ifndef LCMAPS_API_MAJOR_VERSION #define LCMAPS_API_MAJOR_VERSION @LCMAPS_MAJOR_VERSION@ #endif #ifndef LCMAPS_API_MINOR_VERSION #define LCMAPS_API_MINOR_VERSION @LCMAPS_MINOR_VERSION@ #endif #ifndef LCMAPS_API_PATCH_VERSION #define LCMAPS_API_PATCH_VERSION @LCMAPS_PATCH_VERSION@ #endif #endif lcmaps-1.6.6/interface/lcmaps_db_read.h0000644001726200004540000000561512471136645015001 00000000000000/** * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright * holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * Authors: * 2009- * Oscar Koeroo * Mischa Sall\'e * David Groep * NIKHEF Amsterdam, the Netherlands * * * 2007-2009 * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * * 2003-2007 * Martijn Steenbakkers * Gerben Venekamp * Oscar Koeroo * David Groep * NIKHEF Amsterdam, the Netherlands * */ /*! \file lcmaps_db_read.h \brief header file for LCMAPS database structure \author Martijn Steenbakkers for the EU DataGrid. This header contains the declarations of the LCMAPS database structure \internal */ #ifndef LCMAPS_DB_READ_H #define LCMAPS_DB_READ_H /****************************************************************************** Include header files ******************************************************************************/ #include "lcmaps_defines.h" /****************************************************************************** Type definitions ******************************************************************************/ /*! \struct lcmaps_db_entry_s \typedef lcmaps_db_entry_t \brief LCMAPS database element structure type \internal */ typedef struct lcmaps_db_entry_s { char pluginname[LCMAPS_MAXPATHLEN+1]; /*!< Name of authorization plugin/module */ char pluginargs[LCMAPS_MAXARGSTRING+1]; /*!< Argument list to be passed to authorization plugin/module */ struct lcmaps_db_entry_s * next; /*!< handle to next db element */ } lcmaps_db_entry_t; #endif /* LCMAPS_DB_READ_H */ /****************************************************************************** CVS Information: $Source: /srv/home/dennisvd/svn/mw-security/lcmaps/interface/lcmaps_db_read.h,v $ $Date: 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) $ $Revision: 18216 $ $Author: msalle $ ******************************************************************************/ lcmaps-1.6.6/interface/lcmaps-openssl-interface.pc.in0000644001726200004540000000040512471136645017530 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ Name: lcmaps-openssl-interface Description: LCMAPS header files with globus dependencies Requires.private: lcmaps-basic-interface = @VERSION@, openssl Version: @VERSION@ Cflags: -I${includedir} lcmaps-1.6.6/bootstrap0000744001726200004540000000316012471136645011703 00000000000000#! /bin/sh # $Id: bootstrap 17405 2014-02-11 09:32:14Z msalle $ # Copyright (c) Members of the EGEE Collaboration. 2004-2010. # See http://www.eu-egee.org/partners/ for details on the copyright # holders. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Authors: # 2009- # Oscar Koeroo # Mischa Sall\'e # David Groep # NIKHEF Amsterdam, the Netherlands # # # 2007-2009 # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands # # 2003-2007 # Martijn Steenbakkers # Gerben Venekamp # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands # set -x # On MacOS X, the GNU libtool is named `glibtool'. HOSTOS=`uname` LIBTOOLIZE=libtoolize if test "$HOSTOS"x = Darwinx; then LIBTOOLIZE=glibtoolize fi $LIBTOOLIZE --force --copy && \ aclocal -I project && \ autoheader --force && \ automake --add-missing --copy && \ autoconf || echo "Something went wrong! Check the above output." lcmaps-1.6.6/doc/0000755001726200004540000000000012471136742010565 500000000000000lcmaps-1.6.6/doc/lcmaps_include.tex.in0000644001726200004540000000122112471136645014614 00000000000000% % definitions affected by configure % \newcommand{\packver}{@BASEPACKAGE@-@MAJORVERSION@.@MINORVERSION@} \newcommand{\package}{@BASEPACKAGE@} \newcommand{\version}{@MAJORVERSION@.@MINORVERSION@} \newcommand{\completeversion}{@MAJORVERSION@.@MINORVERSION@.@PATCHVERSION@} % % definitions % \def\bi{\begin{itemize}} \def\ei{\end{itemize}} \def\bd{\begin{description}} \def\ed{\end{description}} \def\beq{\begin{equation}} \def\eeq{\end{equation}} \def\bdm{\begin{displaymath}} \def\edm{\end{displaymath}} \def\btb{\begin{tabular}} \def\etb{\end{tabular}} \def\bfig{\begin{figure}} \def\efig{\end{figure}} \def\btab{\begin{table}} \def\etab{\end{table}} lcmaps-1.6.6/doc/lcmaps_gen_poolacc_ldif0000644001726200004540000000506512471136645015246 00000000000000#! /usr/bin/perl # Copyright (c) Members of the EGEE Collaboration. 2004-2010. # See http://www.eu-egee.org/partners/ for details on the copyright # holders. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Authors: # 2009- # Oscar Koeroo # Mischa Sall\'e # David Groep # NIKHEF Amsterdam, the Netherlands # # # 2007-2009 # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands # # 2003-2007 # Martijn Steenbakkers # Gerben Venekamp # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands $opt_n=50; $opt_l=3; $opt_basedn="dc=farmnet,dc=nikhef,dc=nl"; $opt_nfs="hooimijt:/export/cache/edgdevtb/poolaccounts"; @optdef=qw( v vo=s n:i basedn l:i b|uidbase:i g|gid=i ); use Getopt::Long; $Getopt::Long::ignorecase=0; &GetOptions(@optdef); $opt_vo or die "No VO specified\n"; length($opt_vo)>5 and die "VO name too long\n"; $opt_g or die "No GroupID specified\n"; $opt_b or die "No start of UID numbering specified\n"; $opt_v and print "Generating VO $opt_vo with $opt_n accounts\n"; $opt_v and print "in DIT position $opt_basedn\n"; $fmtstring='%s%0'.$opt_l.'d'; for($i=1;$i<=$opt_n;$i++) { $uid=sprintf($fmtstring,$opt_vo,$i); $n=$i+$opt_b; print "dn: uid=$uid, ou=PoolAccounts, $opt_basedn\n"; print "objectclass: top\n"; print "objectclass: posixAccount\n"; print "cn: VO $opt_vo member no $i\n"; print "uid: $uid\n"; print "uidNumber: $n\n"; print "gidNumber: $opt_g\n"; print "homeDirectory: /home/$uid\n"; print "loginShell: /bin/sh\n"; print "description: $opt_nfs/$uid\n"; print "\n"; print "dn: cn=$uid,ou=pool,ou=auto.home,ou=automount,$opt_basedn\n"; print "objectclass: top\n"; print "objectclass: automount\n"; print "cn: $uid\n"; print "automountInformation: $opt_nfs/$uid\n"; print "description: EDG dev testbed pool account $uid\n"; print "\n"; } lcmaps-1.6.6/doc/Makefile.in0000644001726200004540000004616212471136671012564 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17211 2013-12-06 13:26:28Z msalle $ # Define the targets to be built here VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = doc DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(dist_man_MANS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/lcmaps_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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; }; \ } man3dir = $(mandir)/man3 am__installdirs = "$(DESTDIR)$(man3dir)" NROFF = nroff MANS = $(dist_man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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 = $(datadir)/man 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@ dist_man_MANS = man/lcmaps.3 PACKAGEFILES = ../LICENSE ../AUTHORS ../README ../README.NO_LDAP ../INSTALL ./INSTALL_WITH_WORKSPACE_SERVICE userdocdir = $(prefix)/share/doc/@PACKAGE@-@VERSION@ PDFLATEX = PATH=/usr/local/bin:$$PATH pdflatex EXAMPLES = $(PLUGINEXAMPLES) $(DBEXAMPLES) PDFS = lcmaps.pdf EXTRA_DIST = \ $(EXAMPLES) $(EPSFIGURES) $(SCRIPTFILES) $(PACKAGEFILES) \ CHANGES_1.2.x-1.3.x \ datagrid.eps \ gridmapfile.ex \ groupmapfile.ex \ lcmaps.db.ex \ lcmaps_gen_poolacc_ldif \ lcmaps_gen_poolgroup_ldif \ lcmaps_include.tex.in \ lcmaps_make_poolacc_dir \ lcmaps_setup_pool \ lcmaps.tex \ evaluationmanager/Makefile.am \ evaluationmanager/Makefile.in \ evaluationmanager/pdl_requirements.bib \ evaluationmanager/pdl_requirements.tex \ evaluationmanager/figures/datagrid.eps \ evaluationmanager/figures/example1.eps \ evaluationmanager/figures/example1.fig \ evaluationmanager/figures/example2.eps \ evaluationmanager/figures/example2.fig \ evaluationmanager/figures/example3.eps \ evaluationmanager/figures/example3.fig \ evaluationmanager/figures/example4.eps \ evaluationmanager/figures/example4.fig \ evaluationmanager/figures/example_real.eps \ evaluationmanager/figures/example_real.fig \ evaluationmanager/figures/nikhef.eps # The automake manual says: 'if configure built it, then distclean should delete it.' # This file was generated by configure, but is it used? DISTCLEANFILES = evaluationmanager/Makefile TEXS = lcmaps.tex all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man3: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man3dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.3[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ done; } uninstall-man3: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man3dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: 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 $(MANS) installdirs: for dir in "$(DESTDIR)$(man3dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: 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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." 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-man 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-man3 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-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man3 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am 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-man3 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 tags-am uninstall uninstall-am uninstall-man \ uninstall-man3 $(PDFS): $(TEXS) $(PDFLATEX) $(TEXS) pdf: $(PDFS) doc: pdf clean:; rm -f $(PDFS) # 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: lcmaps-1.6.6/doc/evaluationmanager/0000755001726200004540000000000012471136742014267 500000000000000lcmaps-1.6.6/doc/evaluationmanager/Makefile.in0000644001726200004540000005307012471136671016262 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 14868 2011-03-04 20:55:13Z dennisvd $ # Define the targets to be built here VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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 = doc/evaluationmanager DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/project/globus.m4 \ $(top_srcdir)/project/libtool.m4 \ $(top_srcdir)/project/ltoptions.m4 \ $(top_srcdir)/project/ltsugar.m4 \ $(top_srcdir)/project/ltversion.m4 \ $(top_srcdir)/project/lt~obsolete.m4 \ $(top_srcdir)/project/voms.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/lcmaps_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac 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)$(userdocdir)" DATA = $(userdoc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADD_THESE_DEFINES = @ADD_THESE_DEFINES@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISTBIN = @DISTBIN@ DLLTOOL = @DLLTOOL@ DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLOBUS_COMMON_CFLAGS = @GLOBUS_COMMON_CFLAGS@ GLOBUS_COMMON_LIBS = @GLOBUS_COMMON_LIBS@ GLOBUS_COMMON_NOTHR_CFLAGS = @GLOBUS_COMMON_NOTHR_CFLAGS@ GLOBUS_COMMON_NOTHR_LIBS = @GLOBUS_COMMON_NOTHR_LIBS@ GLOBUS_COMMON_THR_CFLAGS = @GLOBUS_COMMON_THR_CFLAGS@ GLOBUS_COMMON_THR_LIBS = @GLOBUS_COMMON_THR_LIBS@ GLOBUS_FLAVOR = @GLOBUS_FLAVOR@ GLOBUS_GSI_CREDENTIAL_CFLAGS = @GLOBUS_GSI_CREDENTIAL_CFLAGS@ GLOBUS_GSI_CREDENTIAL_LIBS = @GLOBUS_GSI_CREDENTIAL_LIBS@ GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_NOTHR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS = @GLOBUS_GSI_CREDENTIAL_NOTHR_LIBS@ GLOBUS_GSI_CREDENTIAL_THR_CFLAGS = @GLOBUS_GSI_CREDENTIAL_THR_CFLAGS@ GLOBUS_GSI_CREDENTIAL_THR_LIBS = @GLOBUS_GSI_CREDENTIAL_THR_LIBS@ GLOBUS_GSSAPI_GSI_CFLAGS = @GLOBUS_GSSAPI_GSI_CFLAGS@ GLOBUS_GSSAPI_GSI_LIBS = @GLOBUS_GSSAPI_GSI_LIBS@ GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS = @GLOBUS_GSSAPI_GSI_NOTHR_CFLAGS@ GLOBUS_GSSAPI_GSI_NOTHR_LIBS = @GLOBUS_GSSAPI_GSI_NOTHR_LIBS@ GLOBUS_GSSAPI_GSI_THR_CFLAGS = @GLOBUS_GSSAPI_GSI_THR_CFLAGS@ GLOBUS_GSSAPI_GSI_THR_LIBS = @GLOBUS_GSSAPI_GSI_THR_LIBS@ GLOBUS_GSS_ASSIST_CFLAGS = @GLOBUS_GSS_ASSIST_CFLAGS@ GLOBUS_GSS_ASSIST_LIBS = @GLOBUS_GSS_ASSIST_LIBS@ GLOBUS_GSS_ASSIST_NOTHR_CFLAGS = @GLOBUS_GSS_ASSIST_NOTHR_CFLAGS@ GLOBUS_GSS_ASSIST_NOTHR_LIBS = @GLOBUS_GSS_ASSIST_NOTHR_LIBS@ GLOBUS_GSS_ASSIST_THR_CFLAGS = @GLOBUS_GSS_ASSIST_THR_CFLAGS@ GLOBUS_GSS_ASSIST_THR_LIBS = @GLOBUS_GSS_ASSIST_THR_LIBS@ GLOBUS_NOTHR_FLAVOR = @GLOBUS_NOTHR_FLAVOR@ GLOBUS_THR_FLAVOR = @GLOBUS_THR_FLAVOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LCMAPS_ETC_HOME = @LCMAPS_ETC_HOME@ LCMAPS_FLAVOUR = @LCMAPS_FLAVOUR@ LCMAPS_FLAVOUR_NAME = @LCMAPS_FLAVOUR_NAME@ LCMAPS_LIB_HOME = @LCMAPS_LIB_HOME@ LCMAPS_MAJOR_VERSION = @LCMAPS_MAJOR_VERSION@ LCMAPS_MINOR_VERSION = @LCMAPS_MINOR_VERSION@ LCMAPS_MOD_HOME = @LCMAPS_MOD_HOME@ LCMAPS_PATCH_VERSION = @LCMAPS_PATCH_VERSION@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ 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@ 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@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ VOMS_CFLAGS = @VOMS_CFLAGS@ VOMS_CPP_LIBS = @VOMS_CPP_LIBS@ VOMS_CPP_NOTHR_LIBS = @VOMS_CPP_NOTHR_LIBS@ VOMS_CPP_THR_LIBS = @VOMS_CPP_THR_LIBS@ VOMS_LIBS = @VOMS_LIBS@ VOMS_NOTHR_LIBS = @VOMS_NOTHR_LIBS@ VOMS_STATIC_LIBS = @VOMS_STATIC_LIBS@ VOMS_STATIC_NOTHR_LIBS = @VOMS_STATIC_NOTHR_LIBS@ VOMS_STATIC_THR_LIBS = @VOMS_STATIC_THR_LIBS@ VOMS_THR_LIBS = @VOMS_THR_LIBS@ WORKDIR = @WORKDIR@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ SUFFIXES = .tex .aux .dvi .log .ps .bbl .pdf .html .eps LATEX = PATH=/usr/local/bin:$$PATH latex PDFLATEX = PATH=/usr/local/bin:$$PATH pdflatex LATEXHTML = PATH=/usr/local/bin:$$PATH latex2html BIBTEX = PATH=/usr/local/bin:$$PATH bibtex LATEX_ARGS = --interaction=nonstopmode LATEXHTML_ARGS = -no_footnode \ -link 1 \ -split 4 \ -t "PDL requirements" -address "Gerben Venekamp, `date +"%A %b %d %Y"`" \ -local_icons DVIPS = PATH=/usr/local/bin:$$PATH dvips EPSTOPDF = PATH=/usr/local/bin:$$PATH epstopdf PREVIEWER = xdvi -s 8 -paper a4 -expert PS_PREVIEWER = gv -scale -1 PDF_PREVIEWER = xpdf HTML_PREVIEWER = netscape EX = example1.eps example2.eps example3.eps example4.eps example_real.eps \ datagrid.eps nikhef.eps EXAMPLES = $(EX:%=figures/%) PDFEXAMPLES = $(EXAMPLES:%.eps=%.pdf) TEXS = pdl_requirements.tex AUXS = pdl_requirements.aux DVIS = pdl_requirements.dvi LOGS = pdl_requirements.log BIBS = pdl_requirements.bib BBLS = pdl_requirements.bbl BLGS = pdl_requirements.blg TOCS = pdl_requirements.toc PSS = pdl_requirements.ps PDFS = pdl_requirements.pdf HTMLS = pdl_requirements.html userdocdir = $(prefix)/share/doc/@PACKAGE@-@VERSION@ userdoc_DATA = $(DVIS) $(PSS) $(PDFS) $(HTMLS) EXTRA_DIST = pdl_requirements.tex pdl_requirements.bib all: all-am .SUFFIXES: .SUFFIXES: .tex .aux .dvi .log .ps .bbl .pdf .html .eps $(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 doc/evaluationmanager/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/evaluationmanager/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): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-userdocDATA: $(userdoc_DATA) @$(NORMAL_INSTALL) @list='$(userdoc_DATA)'; test -n "$(userdocdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(userdocdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(userdocdir)" || exit 1; \ fi; \ 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_DATA) $$files '$(DESTDIR)$(userdocdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(userdocdir)" || exit $$?; \ done uninstall-userdocDATA: @$(NORMAL_UNINSTALL) @list='$(userdoc_DATA)'; test -n "$(userdocdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(userdocdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: 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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(userdocdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: 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-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi-am: html-am: info: info-am info-am: install-data-am: install-userdocDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook 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-am: ps-am: uninstall-am: uninstall-userdocDATA .MAKE: install-am install-data-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am dist-hook distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-hook 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 install-userdocDATA \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-userdocDATA .tex.dvi : @echo LaTeXing $(<:%.tex=%) TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< ; \ done $(BIBTEX) $(BIBTEX_ARGS) $(<:%.tex=%) TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< ; \ done .tex.pdf : @echo PDF-LaTeXing $(<:%.tex=%) rm -f $(<:%.tex=%.aux) TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< ; \ done $(BIBTEX) $(BIBTEX_ARGS) $(<:%.tex=%) TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< ; \ done .tex.html : @echo LaTeX2html-ing $(<:%.tex=%) TEXINPUTS=:./style: $(LATEXHTML) $(LATEXHTML_ARGS) $< > /dev/null 2>&1 @if [ -e $(<:%.tex=%.html) ]; then \ if [ -L $(<:%.tex=%.html) ]; then \ rm $(<:%.tex=%.html); \ ln -s $(<:%.tex=%)/$(<:%.tex=%.html) $(<:%.tex=%.html); \ fi; \ else \ ln -s $(<:%.tex=%)/$(<:%.tex=%.html) $(<:%.tex=%.html); \ fi .dvi.ps : $(DVIPS) $(DVIPS_ARGS) -o $(<:%.dvi=%.ps) $< .eps.pdf : $(EPSTOPDF) --outfile=$(<:%.eps=%.pdf) $< #apidoc: apidoc/html/index.html apilatexdoc # #apidoc/html/index.html: # make -C ../../ apidoc # #apilatexdoc: apidoc/html/index.html # make -C apidoc/latex ps # make -C apidoc/latex pdf # #userdoc: $(apidoc_DATA) $(userdoc_DATA) dvi: $(DVIS) ps: $(PSS) html: $(HTMLS) pdf: $(PDFS) pdfex: $(PDFEXAMPLES) $(DVIS): $(BIBS) $(TEXS) $(EXAMPLES) $(AUXS): $(DVIS) $(PSS): $(BBLS) $(DVIS) $(PDFS): $(TEXS) $(PDFEXAMPLES) $(HTMLS): $(TEXS) $(AUXS) $(PDFEXAMPLES): $(EXAMPLES) #$(PLUGINEXAMPLES): ../plugin_example # @echo "Copying $(PLUGINEXAMPLES)" # @for example in $(PLUGINEXAMPLES); do \ # cp ../plugin_example/$$example .; \ # done #$(PACKAGEFILES): # echo "Copying $(PACKAGEFILES)" # @for packagefile in $(PACKAGEFILES); do \ # cp ../$$packagefile . ; \ # done clean:; rm -f $(DVIS) $(LOGS) $(AUXS) $(PSS) $(TOCS) $(BBLS) $(BLGS) $(PDFEXAMPLES) \ A4pdl_requirements.ps pdl_requirements.pdf pdl_requirements.html pdl_requirements.out rm -rf pdl_requirements preview: $(DVIS) @echo "Starting DVI previewer." @for i in $(DVIS) ; do \ $(PREVIEWER) $$i > /dev/null 2>&1 & \ done ps_preview: $(PSS) @echo @echo "Starting postscript previewer." @for i in $(PSS) ; do \ $(PS_PREVIEWER) $$i > /dev/null & \ done pdf_preview: $(PDFS) @echo @echo "Starting pdf previewer." @for i in $(PDFS) ; do \ $(PDF_PREVIEWER) $$i > /dev/null & \ done hard:; @touch $(TEXS) dist-hook: mkdir $(distdir)/figures ( \ for example in $(EX) ; do \ cp -p $(srcdir)/figures/$$example $(distdir)/figures; \ done \ ) install-data-hook: @echo Installing html files of latex2html documentation @echo Creating pdl_requirements html directory $(INSTALL) -d $(DESTDIR)$(userdocdir)/pdl_requirements @( \ cd pdl_requirements; \ for htmlfile in * ; do \ $(INSTALL_DATA) $$htmlfile $(DESTDIR)$(userdocdir)/pdl_requirements/$$htmlfile; \ done \ ) # 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: lcmaps-1.6.6/doc/evaluationmanager/pdl_requirements.bib0000644001726200004540000000105312471136645020250 00000000000000@Unpublished{ref:genericPDL, author = {A. Taal and et.al.}, title = {Policies in a Generic AAA Environment}, note = {\url{http://www.aaaarch.org/doc08/taal-aaaarch-generic-pol-00.txt}}, month = {November}, year = {2000}, } @inproceedings{ref:lobo99policy, author = {Jorge Lobo and Randeep Bhatia and Shamim A. Naqvi}, title = {A Policy Description Language}, booktitle = {{AAAI}/{IAAI}}, pages = {291-298}, year = {1999}, note = {\url{http://citeseer.nj.nec.com/lobo99policy.html}} }lcmaps-1.6.6/doc/evaluationmanager/Makefile.am0000644001726200004540000001247712471136645016260 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 14868 2011-03-04 20:55:13Z dennisvd $ # Define the targets to be built here SUFFIXES = .tex .aux .dvi .log .ps .bbl .pdf .html .eps LATEX = PATH=/usr/local/bin:$$PATH latex PDFLATEX = PATH=/usr/local/bin:$$PATH pdflatex LATEXHTML = PATH=/usr/local/bin:$$PATH latex2html BIBTEX = PATH=/usr/local/bin:$$PATH bibtex LATEX_ARGS = --interaction=nonstopmode LATEXHTML_ARGS = -no_footnode \ -link 1 \ -split 4 \ -t "PDL requirements" -address "Gerben Venekamp, `date +"%A %b %d %Y"`" \ -local_icons DVIPS = PATH=/usr/local/bin:$$PATH dvips EPSTOPDF = PATH=/usr/local/bin:$$PATH epstopdf PREVIEWER = xdvi -s 8 -paper a4 -expert PS_PREVIEWER = gv -scale -1 PDF_PREVIEWER = xpdf HTML_PREVIEWER = netscape ## ## Definitions for current job ## EX = example1.eps example2.eps example3.eps example4.eps example_real.eps \ datagrid.eps nikhef.eps EXAMPLES = $(EX:%=figures/%) PDFEXAMPLES = $(EXAMPLES:%.eps=%.pdf) TEXS = pdl_requirements.tex AUXS = pdl_requirements.aux DVIS = pdl_requirements.dvi LOGS = pdl_requirements.log BIBS = pdl_requirements.bib BBLS = pdl_requirements.bbl BLGS = pdl_requirements.blg TOCS = pdl_requirements.toc PSS = pdl_requirements.ps PDFS = pdl_requirements.pdf HTMLS = pdl_requirements.html userdocdir = $(prefix)/share/doc/@PACKAGE@-@VERSION@ userdoc_DATA = $(DVIS) $(PSS) $(PDFS) $(HTMLS) EXTRA_DIST = pdl_requirements.tex pdl_requirements.bib ## ## teach 'make' how to convert LaTeX to dvi, and dvi to postscript ## .tex.dvi : @echo LaTeXing $(<:%.tex=%) TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< ; \ done $(BIBTEX) $(BIBTEX_ARGS) $(<:%.tex=%) TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(LATEX) $(LATEX_ARGS) $< ; \ done .tex.pdf : @echo PDF-LaTeXing $(<:%.tex=%) rm -f $(<:%.tex=%.aux) TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< ; \ done $(BIBTEX) $(BIBTEX_ARGS) $(<:%.tex=%) TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< -@while [ `grep -c 'Rerun to get' $(<:%.tex=%.log)` -ne 0 ]; do \ echo Rerunning to get cross references right ; \ TEXINPUTS=:./style: $(PDFLATEX) $(LATEX_ARGS) $< ; \ done .tex.html : @echo LaTeX2html-ing $(<:%.tex=%) TEXINPUTS=:./style: $(LATEXHTML) $(LATEXHTML_ARGS) $< > /dev/null 2>&1 @if [ -e $(<:%.tex=%.html) ]; then \ if [ -L $(<:%.tex=%.html) ]; then \ rm $(<:%.tex=%.html); \ ln -s $(<:%.tex=%)/$(<:%.tex=%.html) $(<:%.tex=%.html); \ fi; \ else \ ln -s $(<:%.tex=%)/$(<:%.tex=%.html) $(<:%.tex=%.html); \ fi .dvi.ps : $(DVIPS) $(DVIPS_ARGS) -o $(<:%.dvi=%.ps) $< .eps.pdf : $(EPSTOPDF) --outfile=$(<:%.eps=%.pdf) $< ## ## possible targets; e.g. do 'make ps_preview' to preview the PostScript file ## #apidoc: apidoc/html/index.html apilatexdoc # #apidoc/html/index.html: # make -C ../../ apidoc # #apilatexdoc: apidoc/html/index.html # make -C apidoc/latex ps # make -C apidoc/latex pdf # #userdoc: $(apidoc_DATA) $(userdoc_DATA) dvi: $(DVIS) ps: $(PSS) html: $(HTMLS) pdf: $(PDFS) pdfex: $(PDFEXAMPLES) $(DVIS): $(BIBS) $(TEXS) $(EXAMPLES) $(AUXS): $(DVIS) $(PSS): $(BBLS) $(DVIS) $(PDFS): $(TEXS) $(PDFEXAMPLES) $(HTMLS): $(TEXS) $(AUXS) $(PDFEXAMPLES): $(EXAMPLES) #$(PLUGINEXAMPLES): ../plugin_example # @echo "Copying $(PLUGINEXAMPLES)" # @for example in $(PLUGINEXAMPLES); do \ # cp ../plugin_example/$$example .; \ # done #$(PACKAGEFILES): # echo "Copying $(PACKAGEFILES)" # @for packagefile in $(PACKAGEFILES); do \ # cp ../$$packagefile . ; \ # done clean:; rm -f $(DVIS) $(LOGS) $(AUXS) $(PSS) $(TOCS) $(BBLS) $(BLGS) $(PDFEXAMPLES) \ A4pdl_requirements.ps pdl_requirements.pdf pdl_requirements.html pdl_requirements.out rm -rf pdl_requirements preview: $(DVIS) @echo "Starting DVI previewer." @for i in $(DVIS) ; do \ $(PREVIEWER) $$i > /dev/null 2>&1 & \ done ps_preview: $(PSS) @echo @echo "Starting postscript previewer." @for i in $(PSS) ; do \ $(PS_PREVIEWER) $$i > /dev/null & \ done pdf_preview: $(PDFS) @echo @echo "Starting pdf previewer." @for i in $(PDFS) ; do \ $(PDF_PREVIEWER) $$i > /dev/null & \ done hard:; @touch $(TEXS) ## dist-hook: mkdir $(distdir)/figures ( \ for example in $(EX) ; do \ cp -p $(srcdir)/figures/$$example $(distdir)/figures; \ done \ ) install-data-hook: @echo Installing html files of latex2html documentation @echo Creating pdl_requirements html directory $(INSTALL) -d $(DESTDIR)$(userdocdir)/pdl_requirements @( \ cd pdl_requirements; \ for htmlfile in * ; do \ $(INSTALL_DATA) $$htmlfile $(DESTDIR)$(userdocdir)/pdl_requirements/$$htmlfile; \ done \ ) lcmaps-1.6.6/doc/evaluationmanager/pdl_requirements.tex0000644001726200004540000006776312471136645020340 00000000000000% % Author: G.M. Venekamp % \documentclass[a4paper, 11pt]{article} \usepackage{calc, graphicx, fancyhdr, float, ifthen, varioref, url, xspace} \usepackage{tabularx, fancyvrb, amsmath, rotating} %\usepackage[T1]{fontenc} %\usepackage{ae} \newcommand{\currentversion}{0.1} \newcommand{\cpp}{C\raisebox{.5ex}{{\tiny++}\xspace}} \newcommand{\Class}[1]{\textsf{#1}} \newcommand{\Process}[1]{\texttt{#1}} \newcommand{\Call}[1]{\texttt{#1}} \newcommand{\Event}[1]{\texttt{#1}} \newcommand{\State}[1]{\texttt{#1}} \newcommand{\Transition}[1]{\texttt{#1}} \newcommand{\cleartooddpage}{\ifthenelse{\isodd{\value{page}}}{\clearpage\mbox{}\thispagestyle{empty}\clearpage}{\clearpage}} %\newcommand{\pdlnot}{{\scriptstyle\sim}} \newcommand{\pdlnot}{\raisebox{-1ex}{\textasciitilde}} \newcommand{\q}{\text{'}} % New environment called entry. % It prints the label of an item in the margin right to the item itself. \newcommand{\entrylabel}[1]{% \parbox[b]{\labelwidth}{\makebox[0pt][r]{\textsf{#1:}}}% \hfill\relax} \newenvironment{entry}% {\begin{list}{}{\renewcommand{\makelabel}{\entrylabel}% \setlength{\labelwidth}{0pt}% \setlength{\leftmargin}{\labelwidth+\labelsep-0.5em}% }}% {\end{list}} \newcommand{\entryAlabel}[1]{% \parbox[b]{\labelwidth}{\makebox[0pt][r]{\textit{#1} --}}% \hfill\relax} \newenvironment{entryA}% {\begin{list}{}{\renewcommand{\makelabel}{\entryAlabel}% \setlength{\labelwidth}{0pt}% \setlength{\leftmargin}{22mm}% }}% {\end{list}} % New environment \newenvironment{BNFarray}% {\settowidth{\arraycolsep}{ }\[\begin{array}{rcl}} {\end{array}\]\relax} \newcommand{\underscore}{\hskip.1em\leaders \hrule height .4pt depth 0pt width .5em \hskip.5em \hskip.1em} \newcommand{\RQlabel}{RQ} \newcounter{RQnumber} \newcommand{\RQ}{\item[\theRQnumber]} \newcommand{\Rationale}{\item[Rationale]} \newenvironment{requirement}[1][NoRQlabel]% { \ifthenelse{\equal{#1}{NoRQlabel}}{}{\gdef\RQlabel{#1}\setcounter{RQnumber}{0}} \gdef\theRQnumber{\RQlabel\underscore\arabic{RQnumber}}\refstepcounter{RQnumber} \begin{entry}}% {\end{entry}} % Change the margins locally. It takes two arguments. % First one widen/shrinks the left maregin, second argument % widens/shrinks the right margin. If argument is negative, % the margin is widened, while its shrinks by positive numbers. \newenvironment{changemargin}[2]{\begin{list}{}{% \setlength{\topsep}{0pt}\setlength{\leftmargin}{0pt} \setlength{\rightmargin}{0pt} %\setlength{\listparindent}{\parindent} %\setlength{\itemindent}{\parindent} \setlength{\listparindent}{0pt} \setlength{\itemindent}{0pt} \setlength{\parsep}{0pt plus 1pt} \addtolength{\leftmargin}{#1}\addtolength{\rightmargin}{#2}% }\item } {\end{list}} \title{Policy Discription Language Module\\\Large\textit{Requirements \& design}} \author{G.M. Venekamp \\ \small \texttt{venekamp@nikhef.nl}} \pagestyle{fancy} \addtolength{\headheight}{1.6pt} \lhead{\itshape \nouppercase{\leftmark}} % doc version does not fit in the center of the head, because % the section mark overwrites the center when a subsection % title is too long. It happnes already with three long words! %\chead{\small doc version \currentversion} \rhead{\itshape \nouppercase{\rightmark}} \lfoot{\small \textit{DataGrid/pdl\\doc version \currentversion}} \cfoot{\vspace{-.5ex}\thepage} \rfoot{\vspace{-2ex}\includegraphics[width=1.5cm]{figures/nikhef}} \begin{document} %\DeclareGraphicsExtensions{.eps,.pdf} \maketitle \thispagestyle{empty} \centerline{\includegraphics[width=4cm]{figures/datagrid}} \vspace{2ex} \abstract{When a user or service has been authenticated and is allowed into the system, the system must provide the user or service with a suitable environment. In order to decide which environment is correct, the user or service needs to provide a set of credentials. Based upon these credentials, the system assigns the allowed resources. In order to accomplish the above, the system must know about policies for assigning resources to a user or service. To be as flexible as possible, a configuration file is used for describing policies. A small and simple yet powerful language has been developed to describe the policy rules of a site. This document describes the policy description language design.} \vfill \begin{changemargin}{-3.5cm}{-3.5cm} \sffamily \hfill\mbox{\slshape document version: \currentversion} \vspace*{-2ex} \centerline{\rule{\textwidth+6cm}{.3mm}} \vspace{2ex} \end{changemargin} \begin{changemargin}{-3.5cm}{-3.5cm} \sffamily \small \noindent{Document history:}\\[1ex] \begin{tabularx}{\linewidth}{|l|l|l|X|} \hline \textbf{Date} & \textbf{Version} & \textbf{Author} & \textbf{Change} \\ \hline \hline 10 February 2003 & 0.1 & G.M. Venekamp & Initial document.\\ \hline \end{tabularx} \end{changemargin} \cleartooddpage % First page of the table of contents should not have any % fancy headers. \thispagestyle{empty} \renewcommand{\thepage}{\roman{page}} \tableofcontents \cleartooddpage \renewcommand{\thepage}{\arabic{page}} \setcounter{page}{1} \section{Introduction} When a user or server wants to make use of a grid enabled computer, it first needs permission to enter the grid enabled service. After it has been determined that the user is allowed onto the system, it must be decided what the user is allowed to do and what to use. The right environment must be set up. In other words, the system must be able to determine what resources are available to a particular user. The system is aided by the fact that each user carries a set of credentials. These credentials describe what a user is allowed to do. For example, the credentials tell of which virtual organization (VO) a user is a member. The user can selected anyone of these VOs to be used on his account. With this information the system is able to tell how much disk space may be used, how many processors are reserved for the VO, billing, etc. The system must consult these credentials in order to determine the environment. Having credentials is not enough. A site might want to have control of the way the environment is setup. Consider the following: A user might be a member of a VO that has access to your site. At the same time this user has a local account on your site. When this user want to use some of the resources of the site, either it is done on the account of the VO or as a local user of that system. A site has a choice now. When a user with a local account wants to make use of the resources, a site can decide that the user can use the resources under his/her own account regardless of any VO he/she is a member of. Of course a site might also decide that even though a user has a local account, he/she needs to use the VO affiliation first. For this reason, each site has a set of policies. These policies, together with the credentials, determine the environment of the user. The policy rules are described in a configuration file. This configuration file is composed of plain text to make it readable by humans and editable by a wide range of editors. Another important fact is the readability of the file. This should be is as intuitive as possible. If the description of policies is too difficult, errors are easily made. Mistakes can lead to assigning resources to a person which has no right to that particular resource. It would be embarrassing to send the billing to the wrong VO. Clearly, this must be prevented as much as possible. By trying to keep the language a simple as possible, it is our believe that these kinds of mistakes should be kept to a minimum. Also, by not over complicating the structure of the configuration file, graphical user interfaces can be easily created. Thus, further limiting unwanted mistakes. This is, however, not the first goal at this stage of development, but it might be desirable once the subsystem is in use by less experienced users. \subsubsection*{\sc Structure of the document} The following section describes the requirements of the language. Requirements help us understand what it is we really want. This is followed by a discussion on existing solutions and their usability to the project. Since non of the existing solution fulfill our needs, we have to come up with our own language. Section~\ref{sec:design} shows the design of that language. \cleartooddpage \section{Requirements} \begin{requirement}[pdl] \label{RQ:readability} \RQ The configuration file must be in a human readable format. \Rationale When the configuration file is in a human readable format, it can be edited in any plain text editor by any human. This relinquishes the needs for a GUI to edit configuration files and can be done quite easily remotely. \end{requirement} \begin{requirement} \RQ The configuration file must support comments. \Rationale The configuration file becomes more readable by adding comments. This should lead to a better interpretation of the file and reduce the number of errors made. \end{requirement} \begin{requirement} \RQ The configuration language must support for more than one policy rule. \Rationale By allowing several smaller policy rules, instead of one huge rule, the readability of the configuration file is enhanced and thereby reducing the number of errors. \end{requirement} \begin{requirement} \RQ A policy must be reusable inside another policy. \Rationale By allowing policy rules to contain policy rules, one reduces the amount of double policy rules. Thus limiting the number of errors. Should an error be discovered and fixed, it is fixed for all policy rules. No fixes are forgotten this way. \end{requirement} \begin{requirement}\label{rq:paths} \RQ The language must support both a \textsc{true} and \textsc{false} path, when a part of the policy rules fails. \Rationale Policy modules return either \textsc{true} or \textsc{false}. When a module succeeds or fails, two different paths can be taken to complete the policy. The language must reflect this behaviour. \end{requirement} \cleartooddpage \section{Existing solutions} The language that is going to be used in the configuration files to describe policy rules must be readable to a human and not too difficult to grasp its meaning. To make it readable means to use the plain text character set. It can be read by a large variety of editors across all platforms. When remote administration is needed, the plain text character set insures the best compatible solution. \subsection{Boolean expressions} One of the approaches that have been considered are boolean expressions. All requirements are met. However, there is one drawback of using boolean expressions; they get more complicated as the length of the expression grows. For example, the boolean expression: \[ q_1 \wedge (q_2 \vee q_3) \] is quite easy to interpret and understand. The story is all together quite different for the following expression: \[ q_1 \wedge q_2 \wedge ((q_3 \wedge q_4) \vee ((q_5 \vee (q_6 \wedge q_7)) \wedge q_8)) \] Therefore we have decided not to use boolean expressions as our configuration language. \subsubsection{Policies in a Generic AAA Environment}\label{sec:GenericAAA} In~\cite{ref:genericPDL}, a generic policy language is described. In essence, the language is still a boolean expression. The basis of the language is that of the form: `\textbf{if} \textit{condition} \textbf{then} \textit{action}', where the condition is a boolean expression in k-DNF form. For our purpose, the action is of less interest to us. For us, it is the modules (a tuple from the k-DNF expression) that performs the action and at the same time provide the condition. To conclude, we did not choose this solution because: \begin{enumerate} \item boolean expressions are the core of the language, making it harder to read; \item the `\textbf{if} \textit{condition} \textbf{then} \textit{action}' does not map to our domain as well as we would like. \end{enumerate} \subsubsection{A Policy Description Language} In~\cite{ref:lobo99policy}, Lobo describes yet another approach to a Policy Description Language. This is much the same as A.~Taal does in: Policies in a Generic AAA Environment. This approach is less expressive. Therefore based on the same reasons as mentioned above (section~\ref{sec:GenericAAA}), this approach is not pursued any further. \subsection{PAM} As stated in the previous section, using a human readable format is not enough. The language itself must also be easy to interpret by a human. One such solution is PAM (Pluggable Authentication Modules). Within PAM the success of a module is either: required, optional or sufficient. The meaning of each conditional is the following: \begin{entryA} \item[required] this module must return success in order to have the overall result be successful; \item[optional] if this module fails the overall result can still be successful if another module in the stack returns success; \item[sufficient] if this module is successful, skip the remaining modules in the stack, even if they are labeled as required. \end{entryA} This is in conflict with requirement~\vref{rq:paths}. When it is sufficient for a module to succeed, PAM exits and returns \textsc{true} to indicate that it has successfully exited. One cannot, based on the success of the sufficient module, evaluate additional modules. Only on the failure of the module, will PAM continue with the next listed module on the stack. \cleartooddpage \section{Design}\label{sec:design} Our solution is to envision the policy rules as a Deterministic Finite Automata (DFA). DFAs are composed of states and transitions from one state to another. Precisely one of the states of a DFA has to be a starting state. This state is identified by an arrow, with a filled disk attached to the beginning, pointing to the start state. There is always exactly one start state per DFA. Also, a DFA has at least one end state. These are drawn with an inner circle. Unlike start states, a DFA can have more than one end state. Transitions are drawn as arrows originating from, and pointing to, a state. Transitions only happen when the conditions for the transition have been met. When no more transitions can be made, the DFA is said to have been terminated. If it terminates in an end point the DFA has succeeded, if not, it has failed. Normally, a transition can be anything. In our case however, we know that there are only two possible transitions: \textsc{true} or \textsc{false}. We can use this a priori knowledge in designing our language, i.e. we do not have to specify the transition type; it is either \textsc{true} or \textsc{false}. Also with regard to termination of the DFA, we do it slightly different. When the DFA reaches an end state, the evaluation of that state determines the success or failure of the DFA. This is in contrast to reaching an end state and reporting success. One can view this difference as a compression. This way one less state needs to be drawn. \marginpar{\scriptsize klopt dit gramaticaal wel?} \subsection{DFA example} The following figure illustrates a DFA in which three states $\{q_1, q_2, q_3\}$ need to be visited. In each state a different module is evaluated and the result is used for the transition. Since we are only interested in successful evaluations, the transition only takes place when a module returns \textsc{true}. Given the following DFA: \begin{figure}[htb] \centerline{\includegraphics[scale=.6]{figures/example1}} \caption{Simple DFA containing three states and only one \textsc{true} transitions.} \label{fig:q1ANDq2ANDq3} \end{figure} we can say that the policy rule has succeeded when the module in state $q_3$ returns \textsc{true}. Should the result be \textsc{false} for the states $\{q_1, q_2\}$ then the policy rule has failed. When no transition can be made, the DFA terminates in that state and the policy rule has failed. Of course a \textsc{false} transition is also possible. We do need to make clear that a transaction needs to take place on the \textsc{false} condition. Therefore we introduce the letters \textsf{T} and \textsf{F} to denote \textsc{true} and \textsc{false} respectively. The following figure shows a DFA containing a \textsc{false} transition. \begin{figure}[htb] \centerline{\includegraphics[scale=.6]{figures/example2}} \caption{Simple DFA containing three states, two \textsc{true} and one \textsc{false} transitions.} \label{fig:q1ANDq2ORq3} \end{figure} The way this DFA should be read is as follows: $q_1$ must succeed and either $q_2$ or $q_3$ must succeed. In case the evaluation of $q_2$ is \textsc{true}, we do not need to evaluate $q_3$, because $q_2$ is marked as an end state. The policy rule has succeeded with the successful evaluation of $q_2$. Only when $q_2$ returns \textsc{false}, is the transition from $q_2$ to $q_3$ made and determines $q_3$ the success or failure of the policy rule. \subsubsection{Policy example}\label{sec:policy_example} Figure~\vref{fig:real_example} shows a real example of a policy. Sites which wish to give precedence to \textsf{localaccounts} over \textsf{poolaccounts} might want a policy like this. The policy checks if the user may use a \textsf{localaccount} first. If this is allowed, the policy then checks for \textsf{posix enforcement}. When all is okay, the policy has succeeded, otherwise it has not. However, it is possible that the \textsf{localaccount} does not allow for a local account because, the user has no local account at all. In this case the site policy tells that the \textsf{poolaccount} needs to be checked. When the \textsf{poolaccount} is successful, the \textsf{voms} will be checked. At last, the same \textsf{posix enforcement} need to be done as before. Only when the \textsf{posix enforcement} is successful, will the policy have succeeded. \begin{figure}[htb] \centerline{\includegraphics[scale=.6]{figures/example_real}} \caption{Real example.} \label{fig:real_example} \end{figure} In the above example the DFA starts at the \textsf{localaccount}. By letting it start at the \textsf{poolaccount} state and inverting the direction of the transition between \textsf{localaccount} and \textsf{poolaccount}, precedence is given to \textsf{poolaccount} instead of \textsf{localaccount}. Thus, even when a user has a local account, the system prefers pool account. This shows how system administrators are able to decide what happens on their system. \subsection{The language} DFAs give us a reasonable clear language to express policy rules. However, this is in direct violation of requirement~\ref{RQ:readability}. We need to translate the DFA into plain text. In order to describe the DFA, we only need to specify the transitions from one state to another. We use the `$\rightarrow$' symbol to indicate a transition. Thus $q_1 \rightarrow q_2$ means the transition from state $q_1$ to $q_2$. From this notation it is not clear what the condition of the transition is. Unless stated otherwise, the default condition of a transition is \textsc{true}. With these rules, the DFA of Figure~\ref{fig:q1ANDq2ANDq3} translates into: \begin{BNFarray} q_1 & \rightarrow & q_2 \\ q_2 & \rightarrow & q_3 \\ \end{BNFarray} If the DFA contains a \textsc{false} transition, then we need to tell that we do \emph{not} want to use the default \textsc{true} transition. This is accomplished by prefixing a tilde to a transition line. Thus, Figure~\ref{fig:q1ANDq2ORq3} translates into: \begin{BNFarray} q_1 & \rightarrow & q_2 \\ \pdlnot q_2 & \rightarrow & q_3 \\ \end{BNFarray} This kind of language is easily translated into plain text. The `$\rightarrow$' symbol can be written in plain text as: `\verb|->|'. For typographically reason we will use the `$\rightarrow$' symbol throughout this document. The language just describes can also be written down into Extended Backus Naur Form (EBNF). We use the following definitions: \begin{itemize} \item `$\star$' denotes zero or more repetitions; \item `+' denotes one or more repetitions; \item '$|$' denotes a choice; \item anything between quotes (') is taken as literal; \item reserved words are printed in bold. \end{itemize} Using the above definitions, we can express our language as follows: \begin{BNFarray} \it policy & ::= & rule\raisebox{.1ex}{\text{\scriptsize+}} \\ rule & ::= & term\ \rightarrow term \\ rule & ::= & term\ \rightarrow term\ \q|\q\ term \\ rule & ::= & \pdlnot term \ \rightarrow term \\ term & ::= & \text{[a--zA--Z0--9\_.]}\star \\ \end{BNFarray} The above reads: a policy contains at least one rule; a rule can be one of three forms; a term is composed out of characters, digits, underscores and punctuations. \subsubsection{Policy example} With the above definitions, the policy as described in \S~\ref{sec:policy_example} is thus written: \begin{BNFarray} localaccount & \rightarrow & posix\_\,enf\ |\ poolaccount \\ poolaccount & \rightarrow & voms \\ voms & \rightarrow & posix\_\,enf \\ \end{BNFarray} As one can see, this is fairly simple to interpret and understand. It also meets all requirements we have set ourselves. We would like more flexibility in the language. Thus, the basic idea will be extended. First, we will show some more complex artificial examples to demonstrate the ease of the language. \subsubsection{More elaborate DFAs} We will give two more examples of a DFA. This is to show that rather complicated policies can be written down in an understandable fashion. Suppose we have the following DFA: \begin{center} \includegraphics[scale=.6]{figures/example3} \end{center} This would translate into: \begin{BNFarray} q_1 & \rightarrow & q_2 \\ q_2 & \rightarrow & q_3 \\ q_3 & \rightarrow & q_4\ |\ q_5 \\ q_5 & \rightarrow & q_6 \\ \end{BNFarray} Even though the DFA has six states, the configuration file does not look overwhelming. Which is what we are looking for. As a last example we give the following DFA: \begin{center} \includegraphics[scale=.6]{figures/example4} \end{center} Again, this is translated into the following policy rule: \begin{BNFarray} q_1 & \rightarrow & q_2 \\ q_2 & \rightarrow & q_3\ |\ q_5 \\ q_3 & \rightarrow & q_4 \\ \pdlnot q_4 & \rightarrow & q_6 \\ q_5 & \rightarrow & q_6 \\ q_6 & \rightarrow & q_7 \\ \end{BNFarray} Still, the configuration file looks comprehensible despite the fact that several \textsc{true}/\textsc{false} transitions are present. \subsection{Extending the language} What we have described thus far is a very basic language. It does all that we need. Though, we would like to take it one step further. First of all, we would like to be able to use free variables. This allows us to use simpler naming in the policy rules. A free variable is defined as follows: \begin{BNFarray} \it var & ::= & \text{'='}\ term \\ \end{BNFarray} However, spaces are not allowed in this form, since a term cannot contain a space. If spaces are needed, the term needs to be a string: \begin{BNFarray} \it var & ::= & \text{'='}\ string \\ \end{BNFarray} A string is defined as the following regular expression: \begin{BNFarray} \it string & ::= & \backslash"[\text{\^{}}\backslash"\backslash n]\!\star\![\backslash"\backslash n] \\ % \"[^\"\n]*[\"\n] \end{BNFarray} The string matches any sequence that starts with a double quote, followed by any character that is not a newline and closed by a double quote. Sites might want to have more than one policy rule. Thus, we add the following line to the definition: \begin{BNFarray} \it config & ::= & var\!\star\ policy\text{':'\raisebox{.1ex}{\scriptsize+}}\\ \end{BNFarray} This gives every policy rule a label, thereby grouping them and being able to refer to each individual group. Now that policies are labeled we would like to have the ability to use a policy rule inside a policy rule. This means that a `term' can also be a `policy': \begin{BNFarray} \it term & ::= & policy \\ \end{BNFarray} All modules are stored at the same location. Therefore we have reserved one name: \textbf{path}. This is a special variable. It needs to be followed by the assignment character (=) and a Unix path. \begin{BNFarray} \it var & ::= & {\bf path\ \text{'='}\ } pvar \\ \end{BNFarray} The following regular expression defines paths: \begin{BNFarray} %[\/\.][^\/ \t\n]* \it pvar & ::= & \text{'='}\ [\backslash/\backslash .][\text{\^{}}\backslash/\ \backslash t \backslash n]\star\\ \end{BNFarray} Last but not least, we would like comments as well. A comment is defined in the following manner: \begin{BNFarray} \it comment & ::= & \text{'\#'}\ \{ any\_character \}\ \text{'\textbackslash n'}\\ \end{BNFarray} Given our original specification together with the above extensions, the complete EBNF notation for the language is: \begin{BNFarray} \it config & ::= & var\!\star\ policy\text{':'\raisebox{.1ex}{\scriptsize+}} \\ var & ::= & \text{'='}\ term \\ var & ::= & \text{'='}\ string \\ var & ::= & {\bf path\ \text{'='}\ } pvar \\ policy & ::= & rule\raisebox{.1ex}{\text{\scriptsize+}} \\ rule & ::= & term\ \rightarrow term \\ rule & ::= & term\ \rightarrow term\ \q|\q\ term \\ rule & ::= & \pdlnot term \ \rightarrow term \\ term & ::= & \text{[a--zA--Z0--9\_.]}\star \\ comment & ::= & \text{'\#'}\ \{ any\_character \}\ \text{'\textbackslash n'}\\ \end{BNFarray} \subsubsection{Policy example} Given the definition of the language in the previous paragraph. We can write a configuration file for the example in Figure~\vref{fig:real_example}:\\[.5\baselineskip] \begin{changemargin}{-2cm}{-2cm} \addtolength{\hsize}{1cm} \begin{Verbatim}[numbers=left, frame=single, commandchars=\\\{\}] # Configuration example in which local accounts are # preferred over pool accounts. # First we define the path where the modules can be found. path = /usr/lib/lcmaps/modules \label{lst:path} # Let us now define the variables. local = "lcmaps_localaccount.mod -gridmapfile /etc/grid-security/grid-mapfile" \label{lst:var_begin} pool = "lcmaps_poolaccount.mod -gridmapfile /etc/grid-security/grid-mapfile" voms = "lcmaps_voms.mod -vomsdir /etc/grid-security/certificates -certdir /etc/grid-security/certificates" posix = "lcmaps_posix.mod -maxuid 1 -maxpgid 1 -maxsgid 32" \label{lst:var_end} # We have one policy rule that is called default. default: \label{lst:policy_label} local -> posix | pool # See if local and posix do the job. \label{lst:policy_local} pool -> voms # If not: pool, voms and posix \label{lst:policy_pool} voms -> posix # need to do it. \label{lst:policy_voms} \end{Verbatim} \end{changemargin} \vspace{.5\baselineskip} The first interesting line to look at is line~\ref{lst:path}, we see the use of the reserved word \textbf{path}. Here the path is defined where the modules can be found. Lines~\ref{lst:var_begin}~--~\ref{lst:var_end} define four variables. Each variable is a module with its arguments. These variables are used in the policy rules as can be seen on lines~\ref{lst:policy_local}~--~\ref{lst:policy_voms}. Line~\ref{lst:policy_label} defines the name of the policy. \subsection{Final words} As one can see, policies in the graphical form of the DFA are quite easy to comprehend. On the other hand, translating from the graphical from to plain text is quite easy to do and not error prone. The resulting configuration file is still easy to interpret and understand. Mistakes completely eradicated. However, mistakes are less likely to be made by drawing a DFA and then translating it. As a bonus, one can easily create a GUI for creating and maintaining the policy rules. \cleartooddpage \bibliographystyle{plain} \bibliography{pdl_requirements} \end{document} lcmaps-1.6.6/doc/evaluationmanager/figures/0000755001726200004540000000000012471136742015733 500000000000000lcmaps-1.6.6/doc/evaluationmanager/figures/example1.fig0000644001726200004540000000213412471136645020060 00000000000000#FIG 3.2 Landscape Center Metric Letter 100.00 Single -2 1200 2 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 3487.500 2887.398 3060 2295 3473 2157 3915 2295 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 2495.742 2542.187 2288 2214 2565 2160 2792 2291 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 4615.692 3235.462 4156 2270 4573 2167 5026 2248 1 1 1.00 60.00 120.00 6 2812 2362 3037 2587 4 2 0 50 0 16 14 0.0000 4 165 120 2947 2497 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 2947 2587 1\001 -6 6 3940 2344 4165 2614 4 2 0 50 0 16 14 0.0000 4 165 120 4075 2479 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 4075 2614 2\001 -6 6 5065 2340 5290 2610 4 2 0 50 0 16 14 0.0000 4 165 120 5200 2475 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 5200 2610 3\001 -6 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 2925 2475 225 225 2925 2475 3105 2610 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4050 2475 225 225 4050 2475 4230 2610 1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2250 2250 45 45 2250 2250 2295 2250 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5175 2475 270 270 5175 2475 5175 2745 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5175 2475 225 225 5175 2475 5355 2610 lcmaps-1.6.6/doc/evaluationmanager/figures/example4.fig0000644001726200004540000000513412471136645020066 00000000000000#FIG 3.2 Landscape Center Metric Letter 100.00 Single -2 1200 2 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 3487.500 2887.398 3060 2295 3473 2157 3915 2295 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 2495.742 2542.187 2288 2214 2565 2160 2792 2291 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 1 1 0 4662.820 2265.259 4141 2675 4406 2877 4733 2925 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 4674.042 2689.889 4156 2270 4416 2075 4725 2025 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 5508.153 3390.709 5092 2742 5512 2620 5932 2747 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 5541.308 2664.540 5107 1857 5491 1749 5896 1819 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 6604.598 3204.126 6243 2765 6576 2636 6971 2769 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 5832.198 2458.020 6194 2272 6239 2454 6150 2712 1 1 1.00 60.00 120.00 6 7088 2811 7313 3036 4 2 0 50 0 16 14 0.0000 4 165 120 7223 2946 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 7223 3036 7\001 -6 6 5966 2809 6191 3034 4 2 0 50 0 16 14 0.0000 4 165 120 6101 2944 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 6101 3034 6\001 -6 6 4838 2814 5063 3039 4 2 0 50 0 16 14 0.0000 4 165 120 4973 2949 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 4973 3039 5\001 -6 6 5963 1909 6188 2134 4 2 0 50 0 16 14 0.0000 4 165 120 6098 2044 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 6098 2134 4\001 -6 6 4838 1911 5063 2136 4 2 0 50 0 16 14 0.0000 4 165 120 4973 2046 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 4973 2136 3\001 -6 6 3938 2358 4163 2583 4 2 0 50 0 16 14 0.0000 4 165 120 4073 2493 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 4073 2583 2\001 -6 6 2813 2361 3038 2586 4 2 0 50 0 16 14 0.0000 4 165 120 2948 2496 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 2948 2586 1\001 -6 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 2925 2475 225 225 2925 2475 3105 2610 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4050 2475 225 225 4050 2475 4230 2610 1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2250 2250 45 45 2250 2250 2295 2250 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4950 2025 225 225 4950 2025 5130 2160 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6075 2925 225 225 6075 2925 6255 3060 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4954 2924 225 225 4954 2924 5134 3059 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7200 2925 225 225 7200 2925 7380 3060 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7200 2925 274 274 7200 2925 7245 3195 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6075 2025 270 270 6075 2025 6075 2295 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6075 2025 225 225 6075 2025 6075 2250 4 1 0 50 0 18 12 0.0000 4 135 105 4320 3060 F\001 4 1 0 50 0 18 12 0.0000 4 135 120 4320 2070 T\001 4 1 0 50 0 18 12 0.0000 4 135 105 6345 2475 F\001 lcmaps-1.6.6/doc/evaluationmanager/figures/example1.eps0000644001726200004540000001111012471136645020074 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: example1.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Thu Feb 13 14:45:46 2003 %%For: venekamp@polymorf (Gerben Venekamp,H131,x2059) %%BoundingBox: 0 0 226 59 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 59 moveto 0 0 lineto 226 0 lineto 226 59 lineto closepath clip newpath % Fill background color 0 0 moveto 226 0 lineto 226 59 lineto 0 59 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -128.0 184.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06299 0.06299 sc /Helvetica ff 210.00 scf sf 2947 2497 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 2947 2587 m gs 1 -1 sc (1) col0 sh gr /Helvetica ff 210.00 scf sf 4075 2479 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 4075 2614 m gs 1 -1 sc (2) col0 sh gr /Helvetica ff 210.00 scf sf 5200 2475 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 5200 2610 m gs 1 -1 sc (3) col0 sh gr % Arc 7.500 slw gs clippath 3912 2328 m 3943 2277 l 3813 2199 l 3901 2287 l 3782 2250 l cp eoclip n 3487.5 2887.4 730.5 -125.8 -54.2 arc gs col0 s gr gr % arrowhead n 3782 2250 m 3901 2287 l 3813 2199 l 3782 2250 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 2783 2323 m 2822 2277 l 2708 2179 l 2780 2280 l 2669 2224 l cp eoclip n 2495.7 2542.2 388.4 -122.3 -40.3 arc gs col0 s gr gr % arrowhead n 2669 2224 m 2780 2280 l 2708 2179 l 2669 2224 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 5030 2281 m 5050 2224 l 4907 2174 l 5011 2243 l 4887 2231 l cp eoclip n 4615.7 3235.5 1069.3 -115.5 -67.4 arc gs col0 s gr gr % arrowhead n 4887 2231 m 5011 2243 l 4907 2174 l 4887 2231 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 2925 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 4050 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 2250 2250 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 5175 2475 270 270 0 360 DrawEllipse gs col0 s gr % Ellipse n 5175 2475 225 225 0 360 DrawEllipse gs col0 s gr $F2psEnd rs lcmaps-1.6.6/doc/evaluationmanager/figures/example3.eps0000644001726200004540000001425012471136645020106 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: example3.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Thu Feb 13 15:04:07 2003 %%For: venekamp@polymorf (Gerben Venekamp,H131,x2059) %%BoundingBox: 0 0 354 112 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 112 moveto 0 0 lineto 354 0 lineto 354 112 lineto closepath clip newpath % Fill background color 0 0 moveto 354 0 lineto 354 112 lineto 0 112 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -128.0 209.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06299 0.06299 sc /Helvetica ff 210.00 scf sf 2949 2499 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 2949 2589 m gs 1 -1 sc (1) col0 sh gr /Helvetica ff 210.00 scf sf 4070 2497 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 4070 2587 m gs 1 -1 sc (2) col0 sh gr /Helvetica ff 210.00 scf sf 5199 2495 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 5199 2585 m gs 1 -1 sc (3) col0 sh gr /Helvetica ff 150.00 scf sf 6097 3037 m gs 1 -1 sc (5) col0 sh gr /Helvetica ff 210.00 scf sf 6097 2947 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 210.00 scf sf 6099 2002 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 6099 2092 m gs 1 -1 sc (4) col0 sh gr /Helvetica ff 210.00 scf sf 7223 2902 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 7223 2992 m gs 1 -1 sc (6) col0 sh gr % Arc 7.500 slw gs clippath 5863 2955 m 5866 2895 l 5715 2888 l 5834 2924 l 5712 2947 l cp eoclip n 5827.0 2205.4 719.9 139.8 88.2 arcn gs col0 s gr gr % arrowhead n 5712 2947 m 5834 2924 l 5715 2888 l 5712 2947 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 5032 2324 m 5063 2273 l 4933 2195 l 5021 2283 l 4902 2246 l cp eoclip n 4612.7 2876.9 722.2 -126.3 -54.2 arc gs col0 s gr gr % arrowhead n 4902 2246 m 5021 2283 l 4933 2195 l 4902 2246 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 3912 2328 m 3943 2277 l 3813 2199 l 3901 2287 l 3782 2250 l cp eoclip n 3487.5 2887.4 730.5 -125.8 -54.2 arc gs col0 s gr gr % arrowhead n 3782 2250 m 3901 2287 l 3813 2199 l 3782 2250 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 2783 2323 m 2822 2277 l 2708 2179 l 2780 2280 l 2669 2224 l cp eoclip n 2495.7 2542.2 388.4 -122.3 -40.3 arc gs col0 s gr gr % arrowhead n 2669 2224 m 2780 2280 l 2708 2179 l 2669 2224 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 6990 2731 m 7015 2676 l 6877 2613 l 6974 2691 l 6852 2668 l cp eoclip n 6634.4 3325.2 720.5 -126.1 -60.5 arc gs col0 s gr gr % arrowhead n 6852 2668 m 6974 2691 l 6877 2613 l 6852 2668 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 5817 2009 m 5816 1949 l 5665 1952 l 5786 1980 l 5666 2011 l cp eoclip n 5752.4 2543.8 566.0 -149.4 -85.0 arc gs col0 s gr gr % arrowhead n 5666 2011 m 5786 1980 l 5665 1952 l 5666 2011 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 5178 2466 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 2925 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 4050 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 6075 1980 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 6075 2925 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 7200 2880 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 2250 2250 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 7200 2880 270 270 0 360 DrawEllipse gs col0 s gr % Ellipse n 6075 1980 270 270 0 360 DrawEllipse gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 5445 3015 m gs 1 -1 sc (F) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 5445 2025 m gs 1 -1 sc (T) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs lcmaps-1.6.6/doc/evaluationmanager/figures/example3.fig0000644001726200004540000000422312471136645020063 00000000000000#FIG 3.2 Landscape Center Metric Letter 100.00 Single -2 1200 2 5 1 0 1 0 7 50 0 -1 0.000 0 1 1 0 5826.984 2205.435 5277 2670 5452 2820 5850 2925 1 1 1.00 60.00 120.00 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 4612.748 2876.921 4185 2295 4592 2155 5035 2291 1 1 1.00 60.00 120.00 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 3487.500 2887.398 3060 2295 3473 2157 3915 2295 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 2495.742 2542.187 2288 2214 2565 2160 2792 2291 1 1 1.00 60.00 120.00 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 6634.430 3325.171 6210 2743 6614 2605 6989 2698 1 1 1.00 60.00 120.00 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 5752.365 2543.836 5265 2256 5474 2051 5802 1980 1 1 1.00 60.00 120.00 6 2814 2364 3039 2589 4 2 0 50 0 16 14 0.0000 4 165 120 2949 2499 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 2949 2589 1\001 -6 6 3935 2362 4160 2587 4 2 0 50 0 16 14 0.0000 4 165 120 4070 2497 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 4070 2587 2\001 -6 6 5064 2360 5289 2585 4 2 0 50 0 16 14 0.0000 4 165 120 5199 2495 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 5199 2585 3\001 -6 6 5962 2812 6187 3037 4 0 0 50 0 16 10 0.0000 4 120 90 6097 3037 5\001 4 2 0 50 0 16 14 0.0000 4 165 120 6097 2947 q\001 -6 6 5964 1867 6189 2092 4 2 0 50 0 16 14 0.0000 4 165 120 6099 2002 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 6099 2092 4\001 -6 6 7088 2767 7313 2992 4 2 0 50 0 16 14 0.0000 4 165 120 7223 2902 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 7223 2992 6\001 -6 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5178 2466 225 225 5178 2466 5358 2601 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 2925 2475 225 225 2925 2475 3105 2610 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4050 2475 225 225 4050 2475 4230 2610 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6075 1980 225 225 6075 1980 6255 2115 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6075 2925 225 225 6075 2925 6255 3060 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7200 2880 225 225 7200 2880 7380 3015 1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2250 2250 45 45 2250 2250 2295 2250 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7200 2880 270 270 7200 2880 7200 3150 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6075 1980 270 270 6075 1980 6075 2250 4 1 0 50 0 18 12 0.0000 4 135 105 5445 3015 F\001 4 1 0 50 0 18 12 0.0000 4 135 120 5445 2025 T\001 lcmaps-1.6.6/doc/evaluationmanager/figures/example2.eps0000644001726200004540000001134712471136645020111 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: example2.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Tue Feb 18 13:01:49 2003 %%For: venekamp@polymorf (Gerben Venekamp,H131,x2059) %%BoundingBox: 0 0 226 70 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 70 moveto 0 0 lineto 226 0 lineto 226 70 lineto closepath clip newpath % Fill background color 0 0 moveto 226 0 lineto 226 70 lineto 0 70 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -128.0 184.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06299 0.06299 sc /Helvetica ff 210.00 scf sf 2947 2500 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 2947 2590 m gs 1 -1 sc (1) col0 sh gr /Helvetica ff 210.00 scf sf 4075 2485 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 4075 2590 m gs 1 -1 sc (2) col0 sh gr /Helvetica ff 210.00 scf sf 5200 2512 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 5200 2587 m gs 1 -1 sc (3) col0 sh gr % Arc 7.500 slw gs clippath 3861 2311 m 3890 2259 l 3760 2184 l 3849 2270 l 3730 2236 l cp eoclip n 3473.1 2834.5 679.5 -127.4 -55.0 arc gs col0 s gr gr % arrowhead n 3730 2236 m 3849 2270 l 3760 2184 l 3730 2236 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 4980 2301 m 5006 2247 l 4870 2181 l 4965 2261 l 4844 2235 l cp eoclip n 4608.2 2887.7 722.7 -121.3 -59.0 arc gs col0 s gr gr % arrowhead n 4844 2235 m 4965 2261 l 4870 2181 l 4844 2235 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 2804 2311 m 2839 2262 l 2717 2174 l 2797 2269 l 2682 2223 l cp eoclip n 2506.1 2595.5 439.5 -119.8 -46.3 arc gs col0 s gr gr % arrowhead n 2682 2223 m 2797 2269 l 2717 2174 l 2682 2223 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 2925 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 4050 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 2250 2250 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 5175 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 5175 2475 274 274 0 360 DrawEllipse gs col0 s gr % Ellipse n 4050 2475 270 270 0 360 DrawEllipse gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 4635 2115 m gs 1 -1 sc (F) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs lcmaps-1.6.6/doc/evaluationmanager/figures/datagrid.eps0000644001726200004540000014112012471136645020144 00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 8.0.1 %%For: (kees huyser) (NIKHEF) %%Title: (datagrid.eps) %%CreationDate: (7/30/01) (2:48 PM) %%BoundingBox: 12 216 562 486 %%HiResBoundingBox: 12.5479 216 561.9844 485.0586 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 297.5 420.5 297.5 420.5 %AI3_TileBox: -110 136 692 704 %AI3_DocumentPreview: Header %AI5_ArtSize: 842 595 %AI5_RulerUnits: 1 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: -131.2417 733.3794 1 1274 955 18 1 1 3 40 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:-110 136 %%AI3_PaperRect:-14 581 828 -14 %%AI3_Margin:14 -13 -26 14 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade false put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI5_BeginPalette 0 0 Pb 1 1 1 1 k ([Registration]) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 0 79 128 255 Lb (Layer 1) Ln 0 A 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR -7894 479.3662 m 8489 479.3662 L (N) * -7894 360.3086 m 8489 360.3086 L (N) * 287.3335 8612 m 287.3335 -7771 L (N) * u *u 0 O 0.4588 0.5373 0.8941 Xa 1 D 288.0449 479.5273 m 215.2739 479.5273 156.2813 420.5342 156.2813 347.7637 c 156.2813 274.9922 215.2739 216 288.0449 216 c 360.8164 216 419.8086 274.9922 419.8086 347.7637 c 419.8086 420.5342 360.8164 479.5273 288.0449 479.5273 c f 0 D 288.0449 232.8818 m 224.5977 232.8818 173.1631 284.3164 173.1631 347.7637 c 173.1631 411.2109 224.5977 462.6455 288.0449 462.6455 c 351.4922 462.6455 402.9268 411.2109 402.9268 347.7637 c 402.9268 284.3164 351.4922 232.8818 288.0449 232.8818 c f *U 1 Ap 297.5156 471.0566 m 277.2803 471.0566 L 277.2803 224.9414 L 297.5156 224.9414 L 297.5156 471.0566 L f 164.3403 334.8223 m 164.3403 314.5879 L 410.4551 314.5879 L 410.4551 334.8223 L 164.3403 334.8223 L f /BBAccumRotation (1.570796) XT 164.3403 384.7041 m 164.3403 364.4697 L 410.4551 364.4697 L 410.4551 384.7041 L 164.3403 384.7041 L f /BBAccumRotation (1.570796) XT 193.3984 435.0566 m 193.3984 414.8223 L 383.2783 414.8223 L 383.2783 435.0566 L 193.3984 435.0566 L f /BBAccumRotation (1.570796) XT 193.3984 283.9258 m 193.3984 263.6914 L 383.2783 263.6914 L 383.2783 283.9258 L 193.3984 283.9258 L f /BBAccumRotation (1.570796) XT 0 Ap 308.251 468.8086 m 314.5889 468.8086 321.3516 468.8086 327.6455 468.8086 C F 304.9658 221.2373 m 299.8447 221.959 294.375 222.7559 289.2441 223.9727 C F 327.6455 468.8086 m 321.3516 468.8086 314.5889 468.8086 308.251 468.8086 C 339.2529 440.2598 358.6914 399.3477 358.6914 353.8809 c 358.6914 299.7129 331.1133 251.999 289.2441 223.9727 C 294.375 222.7559 299.8447 221.959 304.9658 221.2373 C 350.5801 260.0371 364.0918 267.8496 371.8682 353.8809 c 375.8633 398.0781 356.8262 438.5508 327.6455 468.8086 C f 285.2783 224.7803 m 244.0874 252.9121 217.0459 300.2363 217.0459 353.8809 c 217.0459 397.5078 234.9346 436.9492 263.7681 465.2939 C 258.0205 464.8486 252.2734 466.5488 246.5259 466.2656 C 219.9907 436.3594 203.8682 397.0059 203.8682 353.8809 c 203.8682 300.4678 228.5952 252.8369 267.2178 221.7871 C 273.8442 220.9355 279.5801 224.4893 285.2783 224.7803 C f 285.2783 224.7803 m 279.5801 224.4893 273.8442 220.9355 267.2178 221.7871 C F 246.5259 466.2656 m 252.2734 466.5488 258.0205 464.8486 263.7681 465.2939 C F U u 0 0 0 Xa 138.4287 283.1465 m 31.6064 283.1465 36.7827 283.1465 v 41.959 283.1465 12.5479 283.1465 12.5479 307.3809 c 12.5479 324.0869 12.5479 377.2627 y 16.7832 402.0859 37.3711 402.0859 v 57.959 402.0859 110.1938 402.0859 135.1348 402.0859 c 160.0757 402.0859 158.6641 380.0859 y 158.6641 360.3223 l 127.6055 360.3223 l 126.1934 373.2627 114.6641 373.2627 v 103.1348 373.2627 60.7822 373.2627 y 48.1943 370.4395 48.1943 360.6748 v 48.1943 350.9102 48.1943 326.4395 y 47.7236 315.2637 56.3706 315.2637 v 65.0176 315.2637 114.4292 315.2637 y 117.9121 315.7207 122 319.8086 v 126.0879 323.8965 125.7231 325.499 y 82.4292 325.499 l 82.4292 353.7344 l 158.6641 353.7344 l 158.6641 301.499 l 154.8989 283.1465 138.4287 283.1465 v f 384.6328 404.0566 m 384.6328 284.4697 l 347.3389 284.4697 l 347.3389 403.6445 l 384.6328 404.0566 l f *u 1 D 533.1035 402.7041 m 410.8682 402.7041 L 410.8682 283.998 L 525.6904 283.998 538.8672 283.998 v 552.0439 283.998 561.9844 308.1162 Y 561.9844 376.8223 L 553.0439 404.5859 533.1035 402.7041 Y f 0 D 525.2197 364.5869 m 525.2197 348.5869 525.2197 331.1748 v 525.2197 313.7627 510.6318 316.5869 Y 444.2793 316.5869 L 444.2793 373.998 L 492.749 374.4688 510.6318 374.4688 v 528.5146 374.4688 525.2197 364.5869 Y f *U *u 1 D 306.3975 326.9404 m 295.5747 325.0576 360.5146 350.4688 303.1035 401.293 c 301.4268 402.7773 304.3887 402.7041 296.7515 402.7041 c 264.7515 402.7041 185.6934 402.4688 Y 184.9873 284.0576 L 218.3984 284.0576 L 218.3984 316.5869 L 286.6333 316.5869 L 286.6333 283.4697 L 322.751 283.4697 L 322.751 322.7051 L 315.3154 328.4922 306.3975 326.9404 v f 0 D 283.8101 346.2344 m 275.8101 346.2344 218.8691 346.2344 Y 218.8691 373.998 L 283.8101 374.4688 L 296.5156 358.4688 283.8101 346.2344 V f *U U u *u 0.8588 0.8 0.7725 Xa 173.7935 458.3086 m 181.2388 458.3086 186.5708 456.5156 189.7896 452.9297 c 193.0083 449.3438 194.6177 442.6758 194.6177 432.9297 c 194.6177 425.5469 193.895 420.2188 192.4575 416.9492 c 191.02 413.6797 189.0278 411.3789 186.4888 410.0508 c 183.9497 408.7227 179.6724 408.0586 173.6646 408.0586 C 166.6177 408.0586 L 166.6177 458.3086 L 173.7935 458.3086 l f 138.1177 387.3086 m 180.6489 387.3086 l 185.7427 387.3086 191.4302 388.1289 197.7114 389.7734 c 202.3013 390.9922 206.5981 393.4258 210.6021 397.0703 c 214.6021 400.7109 217.731 405.2422 219.9849 410.6563 c 222.2388 416.0703 223.3677 423.6836 223.3677 433.5 c 223.3677 439.7344 222.606 445.6523 221.0903 451.2539 c 219.5747 456.8555 217.1294 461.7656 213.7622 465.9766 c 210.3911 470.1875 206.1255 473.4219 200.9653 475.6758 c 195.8013 477.9297 189.0317 479.0586 180.6489 479.0586 C 138.1177 479.0586 L 138.1177 387.3086 l f *U *u 282.3496 414.7344 m 282.3496 411.5977 281.8301 409.0469 280.791 407.082 c 279.752 405.1133 277.9941 403.4531 275.5176 402.0938 c 273.041 400.7344 270.3613 400.0586 267.4863 400.0586 c 264.7324 400.0586 262.6465 400.6836 261.2285 401.9375 c 259.8066 403.1914 259.0996 404.8242 259.0996 406.832 c 259.0996 408.543 259.8184 410.0898 261.2598 411.4727 c 262.6582 412.8086 265.9824 414.1445 271.2324 415.4844 c 275.084 416.4453 278.791 417.5508 282.3496 418.8086 C 282.3496 414.7344 l f 263.8652 438.0117 m 265.9902 439.375 269.1777 440.0586 273.4277 440.0586 c 276.7402 440.0586 279.0527 439.4219 280.373 438.1563 c 281.6895 436.8867 282.3496 434.6875 282.3496 431.5586 c 279.1387 430.2969 276.0996 429.2891 273.2324 428.5313 c 270.3613 427.7734 264.0957 426.4297 254.4316 424.5 c 246.3691 422.9023 240.8379 420.4883 237.8457 417.2539 c 234.8457 414.0195 233.3496 409.8789 233.3496 404.8398 c 233.3496 399.4609 235.4277 394.9453 239.584 391.2891 c 243.7402 387.6328 249.8262 385.8086 257.8457 385.8086 c 263.877 385.8086 269.1738 386.7227 273.7324 388.543 c 277.0645 389.9414 280.4199 392.25 283.7949 395.4688 c 284.084 393.5547 284.377 392.1445 284.6699 391.2305 c 284.9629 390.3164 285.5918 389.0078 286.5566 387.3086 C 310.5684 387.3086 l 309.2207 390.0469 308.3457 392.3008 307.9473 394.0703 c 307.5488 395.8398 307.3496 398.2852 307.3496 401.4023 C 307.3496 430.7891 l 307.3496 433.9063 306.7168 437.1914 305.4551 440.6445 c 304.1895 444.0977 302.4629 446.7734 300.2754 448.6719 c 297.1582 451.3672 293.2637 453.1484 288.5918 454.0117 c 283.916 454.875 277.7246 455.3086 270.0215 455.3086 c 265.2207 455.3086 260.7559 454.9492 256.6309 454.2305 c 252.5059 453.5117 249.2637 452.5 246.9082 451.1953 c 243.623 449.4219 241.1074 447.3125 239.3613 444.8672 c 237.6113 442.4219 236.2754 439.0664 235.3496 434.8086 C 259.8496 432.0586 l 260.8691 434.957 262.209 436.9414 263.8652 438.0117 c f *U *u 351.5547 479.0586 m 351.5547 453.8086 L 365.8047 453.8086 L 365.8047 435.0586 L 351.5547 435.0586 L 351.5547 411.5586 L 351.5547 408.7422 351.8242 406.8711 352.3711 405.9492 c 353.207 404.5195 354.6719 403.8086 356.7656 403.8086 c 358.6484 403.8086 361.2813 404.3516 364.6719 405.4453 c 366.5547 387.8281 L 360.2109 386.4844 354.293 385.8086 348.793 385.8086 c 342.4102 385.8086 337.707 386.6211 334.6836 388.2344 c 331.6602 389.8516 329.4258 392.3242 327.9766 395.6445 c 326.5273 398.9648 325.8047 404.3281 325.8047 411.7266 c 325.8047 435.0586 L 316.3047 435.0586 L 316.3047 453.8086 L 325.8047 453.8086 L 325.8047 465.9922 l 351.5547 479.0586 L f *U *u 423.6416 414.7344 m 423.6416 411.5977 423.1221 409.0469 422.083 407.082 c 421.0439 405.1133 419.2861 403.4531 416.8096 402.0938 c 414.333 400.7344 411.6533 400.0586 408.7783 400.0586 c 406.0244 400.0586 403.9385 400.6836 402.5205 401.9375 c 401.0986 403.1914 400.3916 404.8242 400.3916 406.832 c 400.3916 408.543 401.1104 410.0898 402.5518 411.4727 c 403.9502 412.8086 407.2744 414.1445 412.5244 415.4844 c 416.376 416.4453 420.083 417.5508 423.6416 418.8086 C 423.6416 414.7344 l f 1 D 405.1572 438.0117 m 407.2822 439.375 410.4697 440.0586 414.7197 440.0586 c 418.0322 440.0586 420.3447 439.4219 421.665 438.1563 c 422.9814 436.8867 423.6416 434.6875 423.6416 431.5586 c 420.4307 430.2969 417.3916 429.2891 414.5244 428.5313 c 411.6533 427.7734 405.3877 426.4297 395.7236 424.5 c 387.6611 422.9023 382.1299 420.4883 379.1377 417.2539 c 376.1377 414.0195 374.6416 409.8789 374.6416 404.8398 c 374.6416 399.4609 376.7197 394.9453 380.876 391.2891 c 385.0322 387.6328 391.1182 385.8086 399.1377 385.8086 c 405.1689 385.8086 410.4658 386.7227 415.0244 388.543 c 418.3564 389.9414 421.7119 392.25 425.0869 395.4688 c 425.376 393.5547 425.6689 392.1445 425.9619 391.2305 c 426.2549 390.3164 426.8838 389.0078 427.8486 387.3086 C 451.8604 387.3086 l 450.5127 390.0469 449.6377 392.3008 449.2393 394.0703 c 448.8408 395.8398 448.6416 398.2852 448.6416 401.4023 C 448.6416 430.7891 l 448.6416 433.9063 448.0088 437.1914 446.7471 440.6445 c 445.4814 444.0977 443.7549 446.7734 441.5674 448.6719 c 438.4502 451.3672 434.5557 453.1484 429.8838 454.0117 c 425.208 454.875 419.0166 455.3086 411.3135 455.3086 c 406.5127 455.3086 402.0479 454.9492 397.9229 454.2305 c 393.7979 453.5117 390.5557 452.5 388.2002 451.1953 c 384.915 449.4219 382.3994 447.3125 380.6533 444.8672 c 378.9033 442.4219 377.5674 439.0664 376.6416 434.8086 C 401.1416 432.0586 l 402.1611 434.957 403.501 436.9414 405.1572 438.0117 c f *U U u *u 0.9843 0.3255 0.0314 Xa 0 D 168.7935 464.3086 m 176.2388 464.3086 181.5708 462.5156 184.7896 458.9297 c 188.0083 455.3438 189.6177 448.6758 189.6177 438.9297 c 189.6177 431.5469 188.895 426.2188 187.4575 422.9492 c 186.02 419.6797 184.0278 417.3789 181.4888 416.0508 c 178.9497 414.7227 174.6724 414.0586 168.6646 414.0586 C 161.6177 414.0586 L 161.6177 464.3086 L 168.7935 464.3086 l f 133.1177 393.3086 m 175.6489 393.3086 l 180.7427 393.3086 186.4302 394.1289 192.7114 395.7734 c 197.3013 396.9922 201.5981 399.4258 205.6021 403.0703 c 209.6021 406.7109 212.731 411.2422 214.9849 416.6563 c 217.2388 422.0703 218.3677 429.6836 218.3677 439.5 c 218.3677 445.7344 217.606 451.6523 216.0903 457.2539 c 214.5747 462.8555 212.1294 467.7656 208.7622 471.9766 c 205.3911 476.1875 201.1255 479.4219 195.9653 481.6758 c 190.8013 483.9297 184.0317 485.0586 175.6489 485.0586 C 133.1177 485.0586 L 133.1177 393.3086 l f *U *u 277.3496 420.7344 m 277.3496 417.5977 276.8301 415.0469 275.791 413.082 c 274.752 411.1133 272.9941 409.4531 270.5176 408.0938 c 268.041 406.7344 265.3613 406.0586 262.4863 406.0586 c 259.7324 406.0586 257.6465 406.6836 256.2285 407.9375 c 254.8066 409.1914 254.0996 410.8242 254.0996 412.832 c 254.0996 414.543 254.8184 416.0898 256.2598 417.4727 c 257.6582 418.8086 260.9824 420.1445 266.2324 421.4844 c 270.084 422.4453 273.791 423.5508 277.3496 424.8086 C 277.3496 420.7344 l f 258.8652 444.0117 m 260.9902 445.375 264.1777 446.0586 268.4277 446.0586 c 271.7402 446.0586 274.0527 445.4219 275.373 444.1563 c 276.6895 442.8867 277.3496 440.6875 277.3496 437.5586 c 274.1387 436.2969 271.0996 435.2891 268.2324 434.5313 c 265.3613 433.7734 259.0957 432.4297 249.4316 430.5 c 241.3691 428.9023 235.8379 426.4883 232.8457 423.2539 c 229.8457 420.0195 228.3496 415.8789 228.3496 410.8398 c 228.3496 405.4609 230.4277 400.9453 234.584 397.2891 c 238.7402 393.6328 244.8262 391.8086 252.8457 391.8086 c 258.877 391.8086 264.1738 392.7227 268.7324 394.543 c 272.0645 395.9414 275.4199 398.25 278.7949 401.4688 c 279.084 399.5547 279.377 398.1445 279.6699 397.2305 c 279.9629 396.3164 280.5918 395.0078 281.5566 393.3086 C 305.5684 393.3086 l 304.2207 396.0469 303.3457 398.3008 302.9473 400.0703 c 302.5488 401.8398 302.3496 404.2852 302.3496 407.4023 C 302.3496 436.7891 l 302.3496 439.9063 301.7168 443.1914 300.4551 446.6445 c 299.1895 450.0977 297.4629 452.7734 295.2754 454.6719 c 292.1582 457.3672 288.2637 459.1484 283.5918 460.0117 c 278.916 460.875 272.7246 461.3086 265.0215 461.3086 c 260.2207 461.3086 255.7559 460.9492 251.6309 460.2305 c 247.5059 459.5117 244.2637 458.5 241.9082 457.1953 c 238.623 455.4219 236.1074 453.3125 234.3613 450.8672 c 232.6113 448.4219 231.2754 445.0664 230.3496 440.8086 C 254.8496 438.0586 l 255.8691 440.957 257.209 442.9414 258.8652 444.0117 c f *U *u 346.5547 485.0586 m 346.5547 459.8086 L 360.8047 459.8086 L 360.8047 441.0586 L 346.5547 441.0586 L 346.5547 417.5586 L 346.5547 414.7422 346.8242 412.8711 347.3711 411.9492 c 348.207 410.5195 349.6719 409.8086 351.7656 409.8086 c 353.6484 409.8086 356.2813 410.3516 359.6719 411.4453 c 361.5547 393.8281 L 355.2109 392.4844 349.293 391.8086 343.793 391.8086 c 337.4102 391.8086 332.707 392.6211 329.6836 394.2344 c 326.6602 395.8516 324.4258 398.3242 322.9766 401.6445 c 321.5273 404.9648 320.8047 410.3281 320.8047 417.7266 c 320.8047 441.0586 L 311.3047 441.0586 L 311.3047 459.8086 L 320.8047 459.8086 L 320.8047 471.9922 l 346.5547 485.0586 L f *U *u 418.6416 420.7344 m 418.6416 417.5977 418.1221 415.0469 417.083 413.082 c 416.0439 411.1133 414.2861 409.4531 411.8096 408.0938 c 409.333 406.7344 406.6533 406.0586 403.7783 406.0586 c 401.0244 406.0586 398.9385 406.6836 397.5205 407.9375 c 396.0986 409.1914 395.3916 410.8242 395.3916 412.832 c 395.3916 414.543 396.1104 416.0898 397.5518 417.4727 c 398.9502 418.8086 402.2744 420.1445 407.5244 421.4844 c 411.376 422.4453 415.083 423.5508 418.6416 424.8086 C 418.6416 420.7344 l f 1 D 400.1572 444.0117 m 402.2822 445.375 405.4697 446.0586 409.7197 446.0586 c 413.0322 446.0586 415.3447 445.4219 416.665 444.1563 c 417.9814 442.8867 418.6416 440.6875 418.6416 437.5586 c 415.4307 436.2969 412.3916 435.2891 409.5244 434.5313 c 406.6533 433.7734 400.3877 432.4297 390.7236 430.5 c 382.6611 428.9023 377.1299 426.4883 374.1377 423.2539 c 371.1377 420.0195 369.6416 415.8789 369.6416 410.8398 c 369.6416 405.4609 371.7197 400.9453 375.876 397.2891 c 380.0322 393.6328 386.1182 391.8086 394.1377 391.8086 c 400.1689 391.8086 405.4658 392.7227 410.0244 394.543 c 413.3564 395.9414 416.7119 398.25 420.0869 401.4688 c 420.376 399.5547 420.6689 398.1445 420.9619 397.2305 c 421.2549 396.3164 421.8838 395.0078 422.8486 393.3086 C 446.8604 393.3086 l 445.5127 396.0469 444.6377 398.3008 444.2393 400.0703 c 443.8408 401.8398 443.6416 404.2852 443.6416 407.4023 C 443.6416 436.7891 l 443.6416 439.9063 443.0088 443.1914 441.7471 446.6445 c 440.4814 450.0977 438.7549 452.7734 436.5674 454.6719 c 433.4502 457.3672 429.5557 459.1484 424.8838 460.0117 c 420.208 460.875 414.0166 461.3086 406.3135 461.3086 c 401.5127 461.3086 397.0479 460.9492 392.9229 460.2305 c 388.7979 459.5117 385.5557 458.5 383.2002 457.1953 c 379.915 455.4219 377.3994 453.3125 375.6533 450.8672 c 373.9033 448.4219 372.5674 445.0664 371.6416 440.8086 C 396.1416 438.0586 l 397.1611 440.957 398.501 442.9414 400.1572 444.0117 c f *U U 1 Ap 0 0 0 Xa 0 D 556.667 267.6426 m 16 267.6426 L 16 272.3096 L 556.667 272.3096 L 556.667 267.6426 L f LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF lcmaps-1.6.6/doc/evaluationmanager/figures/example4.eps0000644001726200004540000001570312471136645020113 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: example4.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Fri Feb 14 09:48:43 2003 %%For: venekamp@polymorf (Gerben Venekamp,H131,x2059) %%BoundingBox: 0 0 354 113 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 113 moveto 0 0 lineto 354 0 lineto 354 113 lineto closepath clip newpath % Fill background color 0 0 moveto 354 0 lineto 354 113 lineto 0 113 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -128.0 212.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06299 0.06299 sc /Helvetica ff 210.00 scf sf 7223 2946 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 7223 3036 m gs 1 -1 sc (7) col0 sh gr /Helvetica ff 210.00 scf sf 6101 2944 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 6101 3034 m gs 1 -1 sc (6) col0 sh gr /Helvetica ff 210.00 scf sf 4973 2949 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 4973 3039 m gs 1 -1 sc (5) col0 sh gr /Helvetica ff 210.00 scf sf 6098 2044 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 6098 2134 m gs 1 -1 sc (4) col0 sh gr /Helvetica ff 210.00 scf sf 4973 2046 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 4973 2136 m gs 1 -1 sc (3) col0 sh gr /Helvetica ff 210.00 scf sf 4073 2493 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 4073 2583 m gs 1 -1 sc (2) col0 sh gr /Helvetica ff 210.00 scf sf 2948 2496 m gs 1 -1 sc (q) dup sw pop neg 0 rm col0 sh gr /Helvetica ff 150.00 scf sf 2948 2586 m gs 1 -1 sc (1) col0 sh gr % Arc 7.500 slw gs clippath 3912 2328 m 3943 2277 l 3813 2199 l 3901 2287 l 3782 2250 l cp eoclip n 3487.5 2887.4 730.5 -125.8 -54.2 arc gs col0 s gr gr % arrowhead n 3782 2250 m 3901 2287 l 3813 2199 l 3782 2250 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 2783 2323 m 2822 2277 l 2708 2179 l 2780 2280 l 2669 2224 l cp eoclip n 2495.7 2542.2 388.4 -122.3 -40.3 arc gs col0 s gr gr % arrowhead n 2669 2224 m 2780 2280 l 2708 2179 l 2669 2224 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 4748 2954 m 4747 2894 l 4596 2897 l 4717 2925 l 4597 2956 l cp eoclip n 4662.8 2265.3 663.5 141.9 83.9 arcn gs col0 s gr gr % arrowhead n 4597 2956 m 4717 2925 l 4596 2897 l 4597 2956 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 4740 2054 m 4739 1994 l 4588 1997 l 4709 2025 l 4589 2056 l cp eoclip n 4674.0 2689.9 666.8 -141.0 -85.6 arc gs col0 s gr gr % arrowhead n 4589 2056 m 4709 2025 l 4588 1997 l 4589 2056 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 5930 2780 m 5959 2727 l 5827 2654 l 5918 2739 l 5798 2707 l cp eoclip n 5508.2 3390.7 770.7 -122.7 -56.6 arc gs col0 s gr gr % arrowhead n 5798 2707 m 5918 2739 l 5827 2654 l 5798 2707 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 5900 1852 m 5919 1795 l 5777 1746 l 5881 1814 l 5757 1803 l cp eoclip n 5541.3 2664.5 916.9 -118.3 -67.2 arc gs col0 s gr gr % arrowhead n 5757 1803 m 5881 1814 l 5777 1746 l 5757 1803 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 6966 2802 m 7000 2752 l 6875 2667 l 6958 2760 l 6841 2717 l cp eoclip n 6604.6 3204.1 568.8 -129.5 -49.9 arc gs col0 s gr gr % arrowhead n 6841 2717 m 6958 2760 l 6875 2667 l 6841 2717 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 6116 2710 m 6168 2739 l 6243 2609 l 6158 2698 l 6191 2579 l cp eoclip n 5832.2 2458.0 406.8 -27.2 38.6 arc gs col0 s gr gr % arrowhead n 6191 2579 m 6158 2698 l 6243 2609 l 6191 2579 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 2925 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 4050 2475 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 2250 2250 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 4950 2025 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 6075 2925 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 4954 2924 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 7200 2925 225 225 0 360 DrawEllipse gs col0 s gr % Ellipse n 7200 2925 274 274 0 360 DrawEllipse gs col0 s gr % Ellipse n 6075 2025 270 270 0 360 DrawEllipse gs col0 s gr % Ellipse n 6075 2025 225 225 0 360 DrawEllipse gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 4320 3060 m gs 1 -1 sc (F) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 4320 2070 m gs 1 -1 sc (T) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 6345 2475 m gs 1 -1 sc (F) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs lcmaps-1.6.6/doc/evaluationmanager/figures/example2.fig0000644001726200004540000000232712471136645020065 00000000000000#FIG 3.2 Landscape Center Metric Letter 100.00 Single -2 1200 2 5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 3473.101 2834.459 3060 2295 3475 2155 3863 2278 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 4608.157 2887.702 4233 2270 4608 2165 4980 2268 1 1 1.00 60.00 120.00 5 1 0 1 0 0 50 0 -1 0.000 0 0 1 0 2506.144 2595.544 2288 2214 2565 2160 2810 2278 1 1 1.00 60.00 120.00 6 2812 2365 3037 2590 4 2 0 50 0 16 14 0.0000 4 165 120 2947 2500 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 2947 2590 1\001 -6 6 3940 2365 4165 2590 4 2 0 50 0 16 14 0.0000 4 165 120 4075 2485 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 4075 2590 2\001 -6 6 5065 2362 5290 2587 4 2 0 50 0 16 14 0.0000 4 165 120 5200 2512 q\001 4 0 0 50 0 16 10 0.0000 4 120 90 5200 2587 3\001 -6 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 2925 2475 225 225 2925 2475 3105 2610 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4050 2475 225 225 4050 2475 4230 2610 1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2250 2250 45 45 2250 2250 2295 2250 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5175 2475 225 225 5175 2475 5355 2610 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5175 2475 274 274 5175 2475 5220 2745 1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4050 2475 270 270 4050 2475 4050 2745 4 1 0 50 0 18 12 0.0000 4 135 105 4635 2115 F\001 lcmaps-1.6.6/doc/evaluationmanager/figures/example_real.fig0000644001726200004540000000322012471136645020777 00000000000000#FIG 3.2 Landscape Center Metric Letter 100.00 Single -2 1200 2 6 5625 6675 6750 7425 6 5775 6750 6600 7275 4 1 0 50 0 16 14 0.0000 4 165 450 6210 6975 local\001 4 1 0 50 0 16 14 0.0000 4 150 780 6210 7230 account\001 -6 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6210 7064 540 360 6210 7064 6750 7424 -6 6 5625 7650 6750 8400 6 5775 7725 6600 8175 4 1 0 50 0 16 14 0.0000 4 210 405 6210 7920 pool\001 4 1 0 50 0 16 14 0.0000 4 150 780 6210 8175 account\001 -6 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6210 8011 540 360 6210 8011 6750 8371 -6 6 7200 7650 8325 8400 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 7740 8010 540 360 7740 8010 8280 8370 4 1 0 50 0 16 14 0.0000 4 120 525 7740 8100 voms\001 -6 6 7425 6825 8025 7275 4 1 0 50 0 16 14 0.0000 4 210 510 7740 7020 posix\001 4 1 0 50 0 16 14 0.0000 4 165 285 7740 7275 enf\001 -6 1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5175 6750 45 45 5175 6750 5220 6750 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 7740 7065 585 405 7740 7065 8325 7470 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 7740 7065 540 360 7740 7065 8280 7425 3 2 0 1 0 7 50 0 -1 0.000 0 1 0 3 1 1 1.00 60.00 120.00 5772 7274 5716 7532 5806 7775 0.000 -1.000 0.000 3 2 0 1 0 7 50 0 -1 0.000 0 1 0 3 1 1 1.00 60.00 120.00 6642 7806 6953 7724 7326 7783 0.000 -1.000 0.000 3 2 0 1 0 7 50 0 -1 0.000 0 1 0 3 1 1 1.00 60.00 120.00 8195 7806 8281 7604 8213 7315 0.000 -1.000 0.000 3 2 0 1 0 7 50 0 -1 0.000 0 1 0 3 1 1 1.00 60.00 120.00 6578 6809 6905 6692 7298 6795 0.000 -1.000 0.000 3 2 0 1 0 7 50 0 -1 0.000 0 1 0 3 1 1 1.00 60.00 120.00 5175 6750 5535 6615 5940 6750 0.000 -1.000 0.000 4 0 0 50 0 18 12 0.0000 4 135 120 6840 6660 T\001 4 0 0 50 0 18 12 0.0000 4 135 105 5535 7560 F\001 lcmaps-1.6.6/doc/evaluationmanager/figures/nikhef.eps0000644001726200004540000041223112471136645017635 00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 8.0.1 %%For: (kees huyser) (NIKHEF) %%Title: (NIKHEF.eps) %%CreationDate: (7/30/01) (2:48 PM) %%BoundingBox: -26 132 870 528 %%HiResBoundingBox: -25.8599 132.1709 869.75 527.2178 %%DocumentProcessColors: Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKCustomColor: 1 0 0.55 0 (Aqua) %%+ 1 0.5 0 0 (Blue) %%+ 0.5 0.4 0.3 0 (Blue Gray) %%+ 0.8 0.05 0 0 (Blue Sky) %%+ 0.5 0.85 1 0 (Brown) %%+ 1 0.9 0.1 0 (Dark Blue) %%+ 1 0.55 1 0 (Forest Green) %%+ 0.05 0.2 0.95 0 (Gold) %%+ 0.75 0.05 1 0 (Grass Green) %%+ 0 0.45 1 0 (Orange) %%+ 0.15 1 1 0 (Red) %%+ 0.45 0.9 0 0 (Violet) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 421 297 421 297 %AI3_TileBox: -167 -115 1000 705 %AI3_DocumentPreview: Header %AI5_ArtSize: 1218.8976 878.7402 %AI5_RulerUnits: 1 %AI5_ArtFlags: 0 1 0 1 0 1 1 0 0 %AI5_TargetResolution: 600 %AI5_NumLayers: 1 %AI5_OpenToView: -210.5 760.5 1 1265 947 18 0 1 7 43 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:-167 -115 %%AI3_PaperRect:-9 830 1181 -12 %%AI3_Margin:9 -10 -14 12 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade false put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Arrow1.2.out/in) (Arrow1.2.out/in) 1 1 39.4039 39.4039 [ %AI3_Tile (0 O 0 R 0.75 0.75 0.375 0 k 0.75 0.75 0.375 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 1 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 33.9039 15.6187 m 39.4247 20.202 L 39.4247 20.202 L 33.8869 24.6252 L S 39.2997 20.202 m 24.5706 20.202 l 20.4039 20.4792 20.4039 16.8125 v 20.4039 13.1458 20.4039 12.5625 y S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Arrow1.2.side) (Arrow1.2.side) 1 1 39.404 39.4039 [ %AI3_Tile (0 O 0 R 0.75 0.75 0.375 0 k 0.75 0.75 0.375 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 1 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 20.202 20.202 m 39.404 20.202 l S 33.904 15.6187 m 39.4248 20.202 L 39.4248 20.202 L 33.887 24.6252 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Bricks) (Bricks) 1.6 1.6 73.6 73.6 [ %AI3_Tile (0 O 0 R 0.3 0.85 0.85 0 k 0.3 0.85 0.85 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 1.6 1.6 m 1.6 73.6 L 73.6 73.6 L 73.6 1.6 L 1.6 1.6 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 1.6 70.01 m 73.6 70.01 l S 1.6 62.809 m 73.6 62.809 L S 1.6 55.609 m 73.6 55.609 L S 1.6 48.408 m 73.6 48.408 L S 1.6 41.208 m 73.6 41.208 L S 1.6 34.007 m 73.6 34.007 L S 1.6 26.807 m 73.6 26.807 L S 1.6 19.606 m 73.6 19.606 L S 1.6 12.406 m 73.6 12.406 L S 1.6 5.206 m 73.6 5.206 L S 70.01 70.01 m 70.01 62.822 l S 55.61 70.01 m 55.61 62.822 L S 41.21 70.01 m 41.21 62.822 L S 26.81 70.01 m 26.81 62.822 L S 12.41 70.01 m 12.41 62.822 L S 70.01 55.572 m 70.01 48.385 l S 55.61 55.572 m 55.61 48.385 L S 41.21 55.572 m 41.21 48.385 L S 26.81 55.572 m 26.81 48.385 L S 12.41 55.572 m 12.41 48.385 L S 70.01 41.197 m 70.01 34.01 l S 55.61 41.197 m 55.61 34.01 L S 41.21 41.197 m 41.21 34.01 L S 26.81 41.197 m 26.81 34.01 L S 12.41 41.197 m 12.41 34.01 L S 70.01 26.822 m 70.01 19.635 l S 55.61 26.822 m 55.61 19.635 L S 41.21 26.822 m 41.21 19.635 L S 26.81 26.822 m 26.81 19.635 L S 12.41 26.822 m 12.41 19.635 L S 70.01 12.385 m 70.01 5.197 l S 55.61 12.385 m 55.61 5.197 L S 41.21 12.385 m 41.21 5.197 L S 26.81 12.385 m 26.81 5.197 L S 12.41 12.385 m 12.41 5.197 L S 62.797 5.197 m 62.797 1.6 L S 48.397 5.197 m 48.397 1.6 L S 33.997 5.197 m 33.997 1.6 L S 19.597 5.197 m 19.597 1.6 L S 5.197 5.197 m 5.197 1.6 l S 62.797 19.635 m 62.797 12.447 L S 48.397 19.635 m 48.397 12.447 L S 33.997 19.635 m 33.997 12.447 L S 19.597 19.635 m 19.597 12.447 L S 5.197 19.635 m 5.197 12.447 l S 62.797 34.01 m 62.797 26.822 L S 48.397 34.01 m 48.397 26.822 L S 19.597 34.01 m 19.597 26.822 L S 5.197 34.01 m 5.197 26.822 l S 62.797 48.385 m 62.797 41.197 L S 48.397 48.385 m 48.397 41.197 L S 33.997 48.385 m 33.997 41.197 L S 19.597 48.385 m 19.597 41.197 L S 5.197 48.385 m 5.197 41.197 l S 62.797 62.822 m 62.797 55.635 L S 48.397 62.822 m 48.397 55.635 L S 33.997 62.822 m 33.997 55.635 L S 19.597 62.822 m 19.597 55.635 L S 5.197 62.822 m 5.197 55.635 l S 62.797 73.5589 m 62.797 70.072 L S 48.397 73.5589 m 48.397 70.072 L S 33.997 73.5589 m 33.997 70.072 L S 19.597 73.5589 m 19.597 70.072 L S 5.197 73.5589 m 5.197 70.072 l S 33.997 34.01 m 33.997 26.822 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Checks) (Checks) 1 1 31.3995 31.3995 [ %AI3_Tile (0 O 0 R 0 0.91 1 0 k 0 0.91 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 1 XR 19.9995 4.8 m 27.5995 4.8 L 27.5995 12.3995 L 19.9995 12.3995 L 19.9995 4.8 L f 31.3995 27.5995 m 31.3995 31.3995 L 27.5995 31.3995 L 27.5995 27.5995 L 31.3995 27.5995 L f 19.9995 27.5995 m 19.9995 19.9995 L 27.5995 19.9995 L 27.5995 27.5995 L 19.9995 27.5995 L f 0 XR 12.3995 12.3995 m 19.9995 12.3995 L 19.9995 19.9995 L 12.3995 19.9995 L 12.3995 12.3995 L f 1 XR 12.3995 27.5995 m 4.8 27.5995 L 4.8 19.9995 L 12.3995 19.9995 L 12.3995 27.5995 L f 4.8 12.3995 m 4.8 4.8 L 12.3995 4.8 L 12.3995 12.3995 L 4.8 12.3995 L f 19.9995 27.5995 m 19.9995 31.3995 L 12.3995 31.3995 L 12.3995 27.5995 L 19.9995 27.5995 L f 12.3995 4.8 m 12.3995 1 L 19.9995 1 L 19.9995 4.8 L 12.3995 4.8 L f 4.8 19.9995 m 1 19.9995 L 1 12.3995 L 4.8 12.3995 L 4.8 19.9995 L f 27.5995 19.9995 m 27.5995 12.3995 L 31.3995 12.3995 L 31.3995 19.9995 L 27.5995 19.9995 L f 4.8 31.3995 m 1 31.3995 L 1 27.5995 L 4.8 27.5995 L 4.8 31.3995 L f 27.5995 1 m 31.3995 1 L 31.3995 4.8 L 27.5995 4.8 L 27.5995 1 L f 1 4.8 m 1 1 L 4.8 1 L 4.8 4.8 L 1 4.8 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.05 0.2 0 k 0 0.05 0.2 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 1 XR 4.8 4.8 m 4.8 1 L 12.3995 1 L 12.3995 4.8 L 4.8 4.8 L f 4.8 12.3995 m 1 12.3995 L 1 4.8 L 4.8 4.8 L 4.8 12.3995 L f 19.9995 4.8 m 19.9995 1 L 27.5995 1 L 27.5995 4.8 L 19.9995 4.8 L f 12.3995 12.3995 m 12.3995 4.8 L 19.9995 4.8 L 19.9995 12.3995 L 12.3995 12.3995 L f 27.5995 4.8 m 31.3995 4.8 L 31.3995 12.3995 L 27.5995 12.3995 L 27.5995 4.8 L f 12.3995 19.9995 m 4.8 19.9995 L 4.8 12.3995 L 12.3995 12.3995 L 12.3995 19.9995 L f 4.8 27.5995 m 1 27.5995 L 1 19.9995 L 4.8 19.9995 L 4.8 27.5995 L f 19.9995 12.3995 m 27.5995 12.3995 L 27.5995 19.9995 L 19.9995 19.9995 L 19.9995 12.3995 L f 19.9995 19.9995 m 19.9995 27.5995 L 12.3995 27.5995 L 12.3995 19.9995 L 19.9995 19.9995 L f 27.5995 19.9995 m 31.3995 19.9995 L 31.3995 27.5995 L 27.5995 27.5995 L 27.5995 19.9995 L f 12.3995 27.5995 m 12.3995 31.3995 L 4.8 31.3995 L 4.8 27.5995 L 12.3995 27.5995 L f 27.5995 27.5995 m 27.5995 31.3995 L 19.9995 31.3995 L 19.9995 27.5995 L 27.5995 27.5995 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Confetti) (Confetti) 4.85 3.617 76.85 75.617 [ %AI3_Tile (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 4.85 3.617 m 4.85 75.617 L 76.85 75.617 L 76.85 3.617 L 4.85 3.617 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 g 0 G ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 10.6 64.867 m 7.85 62.867 l S 9.1 8.617 m 6.85 6.867 l S 78.1 68.617 m 74.85 67.867 l S 76.85 56.867 m 74.35 55.117 l S 79.6 51.617 m 76.6 51.617 l S 76.35 44.117 m 73.6 45.867 l S 78.6 35.867 m 76.6 34.367 l S 76.1 23.867 m 73.35 26.117 l S 78.1 12.867 m 73.85 13.617 l S 68.35 14.617 m 66.1 12.867 l S 76.6 30.617 m 73.6 30.617 l S 62.85 58.117 m 60.956 60.941 l S 32.85 59.617 m 31.196 62.181 l S 47.891 64.061 m 49.744 66.742 l S 72.814 2.769 m 73.928 5.729 l S 67.976 2.633 m 67.35 5.909 l S 61.85 27.617 m 59.956 30.441 l S 53.504 56.053 m 51.85 58.617 l S 52.762 1.779 m 52.876 4.776 l S 45.391 5.311 m 47.244 7.992 l S 37.062 3.375 m 35.639 5.43 l S 55.165 34.828 m 57.518 37.491 l S 20.795 3.242 m 22.12 5.193 l S 14.097 4.747 m 15.008 8.965 l S 9.736 1.91 m 8.073 4.225 l S 31.891 5.573 m 32.005 8.571 l S 12.1 70.367 m 15.6 68.867 l S 9.35 54.867 m 9.6 58.117 l S 12.85 31.867 m 14.35 28.117 l S 10.1 37.367 m 12.35 41.117 l S 34.1 71.117 m 31.85 68.617 l S 38.35 71.117 m 41.6 68.367 l S 55.1 71.117 m 58.35 69.117 l S 57.35 65.117 m 55.35 61.867 l S 64.35 66.367 m 69.35 68.617 l S 71.85 62.867 m 69.35 61.117 l S 23.6 70.867 m 23.6 67.867 l S 20.6 65.867 m 17.35 65.367 l S 24.85 61.367 m 25.35 58.117 l S 25.85 65.867 m 29.35 66.617 l S 14.1 54.117 m 16.85 56.117 l S 12.35 11.617 m 12.6 15.617 l S 12.1 19.867 m 14.35 22.367 l S 26.1 9.867 m 23.6 13.367 l S 34.6 47.117 m 32.1 45.367 l S 62.6 41.867 m 59.85 43.367 l S 31.6 35.617 m 27.85 36.367 l S 36.35 26.117 m 34.35 24.617 l S 33.85 14.117 m 31.1 16.367 l S 37.1 9.867 m 35.1 11.117 l S 34.35 20.867 m 31.35 20.867 l S 44.6 56.617 m 42.1 54.867 l S 47.35 51.367 m 44.35 51.367 l S 44.1 43.867 m 41.35 45.617 l S 43.35 33.117 m 42.6 30.617 l S 43.85 23.617 m 41.1 25.867 l S 44.35 15.617 m 42.35 16.867 l S 67.823 31.1 m 64.823 31.1 l S 27.1 32.617 m 29.6 30.867 l S 31.85 55.117 m 34.85 55.117 l S 19.6 40.867 m 22.1 39.117 l S 16.85 35.617 m 19.85 35.617 l S 20.1 28.117 m 22.85 29.867 l S 52.1 42.617 m 54.484 44.178 l S 52.437 50.146 m 54.821 48.325 l S 59.572 54.133 m 59.35 51.117 l S 50.185 10.055 m 53.234 9.928 l S 51.187 15.896 m 53.571 14.075 l S 58.322 19.883 m 59.445 16.823 l S 53.1 32.117 m 50.6 30.367 l S 52.85 24.617 m 49.6 25.617 l S 61.85 9.117 m 59.1 10.867 l S 69.35 34.617 m 66.6 36.367 l S 67.1 23.617 m 65.1 22.117 l S 24.435 46.055 m 27.484 45.928 l S 25.437 51.896 m 27.821 50.075 l S 62.6 47.117 m 65.321 46.575 l S 19.85 19.867 m 20.35 16.617 l S 21.85 21.867 m 25.35 22.617 l S 37.6 62.867 m 41.6 62.117 l S 38.323 42.1 m 38.823 38.6 l S 69.35 52.617 m 66.85 53.867 l S 14.85 62.117 m 18.1 59.367 l S 9.6 46.117 m 7.1 44.367 l S 20.6 51.617 m 18.6 50.117 l S 46.141 70.811 m 47.994 73.492 l S 69.391 40.561 m 71.244 43.242 l S 38.641 49.311 m 39.35 52.117 l S 25.141 16.811 m 25.85 19.617 l S 36.6 32.867 m 34.6 31.367 l S 6.1 68.617 m 2.85 67.867 l S 4.85 56.867 m 2.35 55.117 l S 7.6 51.617 m 4.6 51.617 l S 6.6 35.867 m 4.6 34.367 l S 6.1 12.867 m 1.85 13.617 l S 4.6 30.617 m 1.6 30.617 l S 72.814 74.769 m 73.928 77.729 l S 67.976 74.633 m 67.35 77.909 l S 52.762 73.779 m 52.876 76.776 l S 37.062 75.375 m 35.639 77.43 l S 20.795 75.242 m 22.12 77.193 l S 9.736 73.91 m 8.073 76.225 l S 10.1 23.617 m 6.35 24.367 l S 73.217 18.276 m 71.323 21.1 l S 28.823 39.6 m 29.505 42.389 l S 49.6 38.617 m 47.6 37.117 l S 60.323 73.6 m 62.323 76.6 l S 60.323 1.6 m 62.323 4.6 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (DblLine1.2.inner) (DblLine1.2.inner) 1 1 39.2705 39.2706 [ %AI3_Tile (0 O 0 R 1 0.14 0.09 0 k 1 0.14 0.09 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 39.2702 22.175 m 39.2702 13.6108 L 26.66 13.6108 L 26.66 1.0003 L 18.0958 1.0003 L 18.0948 22.175 L 18.0958 22.175 L 18.0958 22.1752 L 39.2702 22.175 L f 39.2708 24.6929 m 15.5779 24.6929 L 15.5779 1.0003 L 14.9037 1.0003 L 14.9032 25.3675 L 39.2708 25.3675 L 39.2708 24.6929 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (DblLine1.2.outer) (DblLine1.2.outer) 1 1.0003 39.2706 39.271 [ %AI3_Tile (0 O 0 R 1 0.14 0.09 0 k 1 0.14 0.09 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 39.2708 26.6602 m 13.6111 26.6602 L 13.6111 1.0005 L 22.1751 1 L 22.1751 18.096 L 39.2708 18.096 L 39.2708 26.6602 L f 39.2708 15.578 m 24.6928 15.578 L 24.6928 1 L 25.367 1 L 25.367 14.9038 L 39.2708 14.9038 L 39.2708 15.578 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (DblLine1.2.side) (DblLine1.2.side) 1 1 39.2706 39.2706 [ %AI3_Tile (0 O 0 R 1 0.14 0.09 0 k 1 0.14 0.09 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 39.2704 18.0958 m 39.2704 26.6598 L 1.0001 26.6598 L 1.0001 18.0958 L 39.2704 18.0958 L f 39.2704 14.9037 m 39.2704 15.5776 L 1.0001 15.5776 L 1.0001 14.9037 L 39.2704 14.9037 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Diamonds) (Diamonds) 1 1 37.1865 41.9411 [ %AI3_Tile (0 O 0 R 0.21 0 1 0 k 0.21 0 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 1.0002 1.0004 m 1.0002 41.9411 L 37.1865 41.9411 L 37.1865 1.0004 L 1.0002 1.0004 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 g 0 G ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 1 XR 19.0936 41.9408 m 19.0929 41.9408 L 19.0933 41.9402 L 19.0936 41.9408 L f 7.0311 41.9408 m 7.0304 41.9408 L 7.0308 41.9402 L 7.0311 41.9408 L f 31.1556 41.9408 m 31.1548 41.9408 L 31.1552 41.9402 L 31.1556 41.9408 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.76 0.9 0 0 k 0.76 0.9 0 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 1 XR 37.1865 1 m 37.1865 11.2349 L 31.1552 1 L 37.1865 1 L f 19.0933 1 m 31.1552 1 L 25.124 11.2349 L 19.0933 1 L f 7.0308 1 m 19.0933 1 L 13.062 11.2349 L 7.0308 1 L f 1 1 m 7.0308 1 L 1 11.2349 L 1 1 L f 37.1859 11.2349 m 37.1865 11.236 L 37.1865 31.7059 L 31.1552 21.4704 L 37.1859 11.2349 L f 19.0933 21.4704 m 25.124 11.2349 L 31.1552 21.4704 L 25.124 31.7059 L 19.0933 21.4704 L f 7.0308 21.4704 m 13.062 11.2349 L 19.0933 21.4704 L 13.062 31.7059 L 7.0308 21.4704 L f 1 31.7059 m 1 11.2349 L 7.0308 21.4704 L 1 31.7059 L f 37.1859 31.7059 m 37.1865 31.707 L 37.1865 41.9408 L 31.1556 41.9408 L 31.1552 41.9402 L 37.1859 31.7059 L f 25.124 31.7059 m 31.1552 41.9402 L 31.1548 41.9408 L 19.0936 41.9408 L 19.0933 41.9402 L 25.124 31.7059 L f 13.062 31.7059 m 19.0933 41.9402 L 19.0929 41.9408 L 7.0311 41.9408 L 7.0308 41.9402 L 13.062 31.7059 L f 7.0304 41.9408 m 1 41.9408 L 1 31.7059 L 7.0308 41.9402 L 7.0304 41.9408 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Hexagon) (Hexagon) 4 1.6 70.151 77.983 [ %AI3_Tile (0 O 0 R 0 1 0.35 0 k 0 1 0.35 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 70.151 77.983 m 70.151 1.6 L 4 1.6 L 4 77.983 L 70.151 77.983 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.9921 1 0 0 k 0.9921 1 0 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 20.538 30.244 m S 26.05 20.696 m 15.025 20.696 L 9.513 30.244 L 15.025 39.792 L 26.05 39.792 L 31.564 30.244 L 26.05 20.696 L s 20.537 11.148 m S 26.05 1.6 m 15.024 1.6 L 9.512 11.148 L 15.024 20.696 L 26.05 20.696 L 31.563 11.148 L 26.05 1.6 L s 53.614 30.244 m S 59.126 20.696 m 48.101 20.696 L 42.589 30.244 L 48.101 39.792 L 59.126 39.792 L 64.639 30.244 L 59.126 20.696 L s 53.614 11.148 m S 59.126 1.6 m 48.101 1.6 L 42.588 11.148 L 48.101 20.696 L 59.126 20.696 L 64.638 11.148 L 59.126 1.6 L s 20.538 68.436 m S 26.051 58.888 m 15.025 58.888 L 9.513 68.436 L 15.025 77.984 L 26.051 77.984 L 31.564 68.436 L 26.051 58.888 L s 20.538 49.34 m S 26.051 39.792 m 15.025 39.792 L 9.513 49.34 L 15.025 58.888 L 26.05 58.888 L 31.564 49.34 L 26.051 39.792 L s 53.614 68.436 m S 59.127 58.888 m 48.102 58.888 L 42.589 68.436 L 48.101 77.985 L 59.127 77.985 L 64.639 68.436 L 59.127 58.888 L s 53.614 49.34 m S 59.127 39.792 m 48.101 39.792 L 42.589 49.34 L 48.101 58.888 L 59.127 58.888 L 64.639 49.341 L 59.127 39.792 L s 4 20.696 m S 3.876 30.244 m 9.512 30.244 L 15.024 20.696 L 9.512 11.147 L 3.876 11.147 L S 37.075 20.696 m S 42.588 11.148 m 31.563 11.148 L 26.05 20.696 L 31.563 30.244 L 42.589 30.244 L 48.101 20.696 L 42.588 11.148 L s 37.076 58.888 m S 42.589 49.34 m 31.564 49.34 L 26.05 58.888 L 31.564 68.436 L 42.589 68.436 L 48.101 58.888 L 42.589 49.34 L s 70.151 20.696 m S 70.2094 11.147 m 64.639 11.147 L 59.127 20.696 L 64.639 30.244 L 70.2094 30.244 L S 70.152 58.888 m S 70.0427 49.34 m 64.639 49.34 L 59.127 58.888 L 64.639 68.436 L 70.0427 68.436 L S 4 58.888 m S 3.876 68.436 m 9.513 68.436 L 15.025 58.888 L 9.513 49.34 L 3.876 49.34 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Laurel.inner) (Laurel.inner) 1 1 28.5392 28.5392 [ %AI3_Tile (0 O 0 R 0 0.55 1 0.12 k 0 0.55 1 0.12 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 19.2768 15.3585 m 28.9144 15.3585 L 28.9144 14.2335 L 19.2768 14.2335 L 19.2768 15.3585 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.55 1 0.3 k 0 0.55 1 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 14.7461 18.9624 m 13.0264 17.8486 11.3273 14.4193 11.3273 10.0362 c 11.3273 5.6547 12.9768 2.1518 14.744 1.1112 C 14.7443 1.1112 L 16.4707 2.1518 18.1679 5.6547 18.1679 10.0362 c 18.1679 14.4143 16.432 17.8633 14.7461 18.9624 C f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Laurel.outer) (Laurel.outer) 1 1.3751 28.5393 28.9143 [ %AI3_Tile (0 O 0 R 0 0.55 1 0.12 k 0 0.55 1 0.12 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 14.2395 10.6375 m 14.2395 1 L 15.3645 1 L 15.3645 10.6375 L 14.2395 10.6375 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.55 1 0.3 k 0 0.55 1 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 10.5769 15.124 m 11.6906 16.8438 15.1198 18.5429 19.503 18.5429 c 23.8844 18.5429 27.3874 16.8935 28.428 15.1262 C 28.428 15.1259 L 27.3874 13.3995 23.8844 11.7023 19.503 11.7023 c 15.1249 11.7023 11.676 13.4382 10.5769 15.124 C f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Laurel.side) (Laurel.side) 1.3972 1 28.9364 28.5392 [ %AI3_Tile (0 O 0 R 0 0.55 1 0.12 k 0 0.55 1 0.12 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 29.1571 15.2998 m 1 15.2998 L 1 14.1748 L 29.1571 14.1748 L 29.1571 15.2998 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.55 1 0.3 k 0 0.55 1 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 2.0183 27.4787 m 1.5899 25.4751 2.8132 21.8488 5.9125 18.7494 c 9.0107 15.6513 12.654 14.3407 14.6395 14.8545 C 14.6398 14.8547 L 15.1246 16.8113 13.8478 20.4883 10.7496 23.5865 c 7.6538 26.6824 3.9876 27.8936 2.0183 27.4787 C f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.39 0.7 0.12 k 0 0.39 0.7 0.12 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 2.0183 2.0091 m 1.5899 4.0126 2.8132 7.6389 5.9125 10.7382 c 9.0107 13.8365 12.654 15.147 14.6395 14.6332 C 14.6398 14.633 L 15.1246 12.6765 13.8478 8.9993 10.7496 5.9011 c 7.6538 2.8054 3.9876 1.5941 2.0183 2.0091 C f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.55 1 0.3 k 0 0.55 1 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 15.821 2.0091 m 15.3925 4.0126 16.6159 7.6389 19.7152 10.7382 c 22.8134 13.8365 26.4567 15.147 28.4422 14.6332 C 28.4424 14.633 L 28.9273 12.6765 27.6505 8.9993 24.5523 5.9011 c 21.4565 2.8054 17.7903 1.5941 15.821 2.0091 C f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.39 0.7 0.12 k 0 0.39 0.7 0.12 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 15.821 27.4787 m 15.3925 25.4751 16.6159 21.8488 19.7152 18.7494 c 22.8134 15.6513 26.4567 14.3407 28.4422 14.8545 C 28.4424 14.8547 L 28.9273 16.8113 27.6505 20.4883 24.5523 23.5865 c 21.4565 26.6824 17.7903 27.8936 15.821 27.4787 C f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Leaves-fall) (Leaves-fall) 1 1 52.733 89.816 [ %AI3_Tile (0 O 0 R 0.05 0.2 1 0 k 0.05 0.2 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 52.733 89.816 m 52.733 1 L 1 1 L 1 89.816 L 52.733 89.816 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.83 0 1 0 k 0.83 0 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 1 D 0 XR 25.317 2.083 m 25.994 2.283 26.284 2.435 V 24.815 5.147 29.266 9.428 30.186 10.168 C 30.787 9.943 30.907 7.41 30.23 6.073 C 31.073 6.196 33.262 4.818 34.02 3.529 C 34.085 4.217 35.655 7.158 36.481 7.535 C 35.561 7.933 34.896 9.406 34.134 10.854 C 35.156 11.021 36.555 10.1 38.026 9.195 C 38.541 9.996 39.915 10.968 41.174 11.484 C 40.086 12.171 39.591 12.912 39.094 14.372 C 38.052 13.806 35.865 13.657 35.336 13.944 C 35.85 15.057 38.096 15.6 38.827 15.547 C 38.573 16.409 38.425 18.562 38.598 21.155 C 36.939 19.839 35.393 18.522 33.734 18.58 C 34.003 17.158 33.367 15.353 32.99 14.86 C 32.417 15.604 32.006 16.431 32.361 18.408 C 30.908 18.893 29.671 19.439 28.297 20.697 C 28.297 18.866 27.725 17.664 26.857 16.388 C 28.117 15.9 29.389 14.697 29.385 13.658 C 28.537 13.81 26.845 14.554 26.352 15.547 C 25.634 14.8 23.95 13.491 22.346 13.487 C 23.534 12.632 24.454 11.598 24.549 9.686 C 25.802 10.657 28.255 11.272 29.635 10.674 C 24.794 6.438 25.262 3.405 25.317 2.083 C f 12.412 33.743 m 11.887 33.272 11.691 33.01 V 14.182 31.192 11.928 25.366 11.415 24.303 C 10.776 24.247 9.369 26.988 9.405 28.486 C 8.273 27.73 6.608 27.851 5.006 28.137 C 5.578 27.049 5.177 25.104 4.376 24.303 C 5.378 24.339 6.729 23.624 8.038 22.643 C 7.203 21.823 5.376 21.984 3.46 22.643 C 3.46 21.27 2.638 19.533 1.801 18.351 C 3.117 18.408 4.262 17.722 5.12 16.691 C 5.785 18.26 7.819 19.373 8.725 19.324 C 8.742 17.959 7.169 15.869 6.147 15.47 C 6.747 14.801 7.766 13.27 8.725 10.854 C 9.524 12.78 10.694 14.022 11.927 14.955 C 10.785 16.517 10.959 17.388 11.358 18.866 C 12.101 18.325 13.132 17.893 13.303 15.89 C 15.02 16.176 16.156 16.104 17.653 15.203 C 17.198 16.865 17.195 18.466 17.515 20.166 C 15.665 20.026 14.105 20.239 13.075 21.728 C 13.905 21.955 16.165 22.014 17.039 21.082 C 17.366 22.064 18.261 23.47 19.707 24.164 C 18.267 24.424 17.282 25.523 16.373 27.209 C 15.66 25.793 13.433 24.128 11.93 24.073 C 13.933 28.137 13.933 31.055 12.412 33.743 C f 31.125 30.5 m 31.445 31.128 31.648 31.385 V 34.045 29.444 38.851 32.752 39.746 33.521 C 39.636 34.153 37.511 35.29 35.794 34.26 C 36.234 35.549 35.332 37.51 34.134 38.552 C 35.873 38.451 38.019 39.813 38.541 40.555 C 38.763 39.577 39.946 38.307 41.231 37.293 C 41.582 38.266 40.887 40.384 39.971 41.986 C 41.206 42.487 42.318 43.417 42.776 44.676 C 43.233 43.359 44.236 42.685 45.58 41.929 C 44.421 40.502 43.64 38.328 43.92 37.465 C 45.243 37.8 46.814 40.518 46.937 41.607 C 47.812 40.841 49.366 40.154 51.947 39.848 C 50.246 38.77 49.884 36.778 49.3 35.347 C 48.152 35.794 45.983 35.853 45.008 35.29 C 45.721 34.711 47.061 34.16 49.071 34.146 C 49.071 32.601 49.534 31.469 50.788 30.254 C 49.065 30.267 46.965 29.781 45.469 29.389 C 45.221 30.718 44.378 32.314 43.233 32.715 C 43.227 31.854 43.493 29.605 44.378 28.938 C 43.513 28.37 42.26 26.993 41.803 25.276 C 41.181 26.601 40.32 27.906 38.457 28.35 C 39.642 29.403 40.477 31.42 40.143 32.887 C 35.091 28.905 32.414 30.203 31.125 30.5 C f 25.317 46.491 m 25.994 46.691 26.284 46.843 V 24.815 49.556 29.266 53.837 30.186 54.576 C 30.787 54.351 30.907 51.818 30.23 50.482 C 31.073 50.605 33.262 49.227 34.02 47.938 C 34.085 48.625 35.655 51.566 36.481 51.944 C 35.561 52.341 34.896 53.814 34.134 55.263 C 35.156 55.43 36.555 54.508 38.026 53.603 C 38.541 54.404 39.915 55.377 41.174 55.892 C 40.086 56.579 39.591 57.321 39.094 58.78 C 38.052 58.215 35.865 58.065 35.336 58.353 C 35.85 59.465 38.096 60.008 38.827 59.955 C 38.573 60.817 38.425 62.97 38.598 65.563 C 36.939 64.247 35.393 62.931 33.734 62.988 C 34.003 61.567 33.367 59.761 32.99 59.268 C 32.417 60.012 32.006 60.839 32.361 62.817 C 30.908 63.302 29.671 63.847 28.297 65.106 C 28.297 63.274 27.725 62.073 26.857 60.796 C 28.117 60.308 29.389 59.106 29.385 58.067 C 28.537 58.219 26.845 58.963 26.352 59.955 C 25.634 59.209 23.95 57.899 22.346 57.895 C 23.534 57.041 24.454 56.006 24.549 54.094 C 25.802 55.065 28.255 55.68 29.635 55.083 C 24.794 50.846 25.262 47.814 25.317 46.491 C f 12.412 78.151 m 11.887 77.68 11.691 77.418 V 14.182 75.601 11.928 69.774 11.415 68.711 C 10.776 68.655 9.369 71.396 9.405 72.894 C 8.273 72.138 6.608 72.259 5.006 72.545 C 5.578 71.458 5.177 69.512 4.376 68.711 C 5.378 68.747 6.729 68.032 8.038 67.052 C 7.203 66.231 5.376 66.393 3.46 67.052 C 3.46 65.678 2.638 63.941 1.801 62.759 C 3.117 62.817 4.262 62.13 5.12 61.1 C 5.785 62.669 7.819 63.781 8.725 63.732 C 8.742 62.367 7.169 60.277 6.147 59.878 C 6.747 59.209 7.766 57.678 8.725 55.263 C 9.524 57.189 10.694 58.431 11.927 59.364 C 10.785 60.925 10.959 61.796 11.358 63.274 C 12.101 62.734 13.132 62.301 13.303 60.298 C 15.02 60.584 16.156 60.512 17.653 59.612 C 17.198 61.273 17.195 62.874 17.515 64.574 C 15.665 64.434 14.105 64.648 13.075 66.136 C 13.905 66.363 16.165 66.422 17.039 65.49 C 17.366 66.472 18.261 67.878 19.707 68.572 C 18.267 68.832 17.282 69.931 16.373 71.617 C 15.66 70.202 13.433 68.536 11.93 68.482 C 13.933 72.545 13.933 75.464 12.412 78.151 C f 31.125 74.908 m 31.445 75.537 31.648 75.794 V 34.045 73.853 38.851 77.161 39.746 77.929 C 39.636 78.562 37.511 79.698 35.794 78.668 C 36.234 79.957 35.332 81.918 34.134 82.96 C 35.873 82.86 38.019 84.221 38.541 84.963 C 38.763 83.986 39.946 82.716 41.231 81.701 C 41.582 82.675 40.887 84.792 39.971 86.394 C 41.206 86.895 42.318 87.825 42.776 89.084 C 43.233 87.768 44.236 87.093 45.58 86.337 C 44.421 84.91 43.64 82.736 43.92 81.873 C 45.243 82.208 46.814 84.926 46.937 86.016 C 47.812 85.249 49.366 84.563 51.947 84.257 C 50.246 83.179 49.884 81.187 49.3 79.756 C 48.152 80.203 45.983 80.262 45.008 79.698 C 45.721 79.119 47.061 78.569 49.071 78.554 C 49.071 77.009 49.534 75.877 50.788 74.663 C 49.065 74.675 46.965 74.189 45.469 73.798 C 45.221 75.126 44.378 76.723 43.233 77.123 C 43.227 76.262 43.493 74.013 44.378 73.347 C 43.513 72.779 42.26 71.401 41.803 69.684 C 41.181 71.009 40.32 72.314 38.457 72.759 C 39.642 73.812 40.477 75.829 40.143 77.295 C 35.091 73.313 32.414 74.611 31.125 74.908 C f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Polka dots) (Polka dots) 1 1 29.8 29.8 [ %AI3_Tile (0 O 0 R 0.45 0.9 0 0 k 0.45 0.9 0 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 1 1 m 1 29.8 L 29.8 29.8 L 29.8 1 L 1 1 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.09 0.18 0 0 k 0.09 0.18 0 0 K ) @ ( %AI6_BeginPatternLayer *u 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 11.08 8.2 m 11.08 9.791 9.79 11.08 8.2 11.08 c 6.609 11.08 5.32 9.791 5.32 8.2 c 5.32 6.61 6.609 5.32 8.2 5.32 c 9.79 5.32 11.08 6.61 11.08 8.2 c f 11.08 22.6 m 11.08 24.191 9.79 25.48 8.2 25.48 c 6.609 25.48 5.32 24.191 5.32 22.6 c 5.32 21.01 6.609 19.72 8.2 19.72 c 9.79 19.72 11.08 21.01 11.08 22.6 c f 18.28 15.4 m 18.28 16.991 16.99 18.28 15.4 18.28 c 13.809 18.28 12.52 16.991 12.52 15.4 c 12.52 13.81 13.809 12.52 15.4 12.52 c 16.99 12.52 18.28 13.81 18.28 15.4 c f 25.48 8.2 m 25.48 9.791 24.19 11.08 22.6 11.08 c 21.009 11.08 19.72 9.791 19.72 8.2 c 19.72 6.61 21.009 5.32 22.6 5.32 c 24.19 5.32 25.48 6.61 25.48 8.2 c f 25.48 22.6 m 25.48 24.191 24.19 25.48 22.6 25.48 c 21.009 25.48 19.72 24.191 19.72 22.6 c 19.72 21.01 21.009 19.72 22.6 19.72 c 24.19 19.72 25.48 21.01 25.48 22.6 c f *U 26.92 1 m 29.8 1 L 29.8 3.88 L 28.209 3.88 26.92 2.591 26.92 1 C f 15.4 3.88 m 13.809 3.88 12.52 2.591 12.52 1 C 18.28 1 L 18.28 2.591 16.99 3.88 15.4 3.88 c f 1 3.88 m 1 1 L 3.88 1 L 3.88 2.591 2.59 3.88 1 3.88 C f 1 XR 26.92 15.4 m 26.92 13.81 28.209 12.52 29.8 12.52 C 29.8 18.28 L 28.209 18.28 26.92 16.991 26.92 15.4 c f 0 XR 15.4 18.28 m 13.809 18.28 12.52 16.991 12.52 15.4 c 12.52 13.81 13.809 12.52 15.4 12.52 c 16.99 12.52 18.28 13.81 18.28 15.4 c 18.28 16.991 16.99 18.28 15.4 18.28 c f 1 XR 3.88 15.4 m 3.88 16.991 2.59 18.28 1 18.28 C 1 12.52 L 2.59 12.52 3.88 13.81 3.88 15.4 c f 0 XR 29.8 26.92 m 29.8 29.8 L 26.92 29.8 L 26.92 28.21 28.209 26.92 29.8 26.92 C f 15.4 26.92 m 16.99 26.92 18.28 28.21 18.28 29.8 C 12.52 29.8 L 12.52 28.21 13.809 26.92 15.4 26.92 c f 3.88 29.8 m 1 29.8 L 1 26.92 L 2.59 26.92 3.88 28.21 3.88 29.8 C f 1 XR 8.2 11.08 m 6.609 11.08 5.32 9.791 5.32 8.2 c 5.32 6.61 6.609 5.32 8.2 5.32 c 9.79 5.32 11.08 6.61 11.08 8.2 c 11.08 9.791 9.79 11.08 8.2 11.08 c f 22.6 11.08 m 21.009 11.08 19.72 9.791 19.72 8.2 c 19.72 6.61 21.009 5.32 22.6 5.32 c 24.19 5.32 25.48 6.61 25.48 8.2 c 25.48 9.791 24.19 11.08 22.6 11.08 c f 8.2 25.48 m 6.609 25.48 5.32 24.191 5.32 22.6 c 5.32 21.01 6.609 19.72 8.2 19.72 c 9.79 19.72 11.08 21.01 11.08 22.6 c 11.08 24.191 9.79 25.48 8.2 25.48 c f 22.6 25.48 m 21.009 25.48 19.72 24.191 19.72 22.6 c 19.72 21.01 21.009 19.72 22.6 19.72 c 24.19 19.72 25.48 21.01 25.48 22.6 c 25.48 24.191 24.19 25.48 22.6 25.48 c f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Random circles) (Random circles) 4.365 3.849 51.13 57.85 [ %AI3_Tile (0 O 0 R 0 0.1125 0.45 0 k 0 0.1125 0.45 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 4.365 3.849 m 4.365 57.85 L 51.13 57.85 L 51.13 3.849 L 4.365 3.849 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.41 0.7 1 0 k 0.41 0.7 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 45.429 36.274 m 45.843 36.991 45.598 37.908 44.88 38.323 c 44.163 38.737 43.245 38.491 42.831 37.774 c 42.417 37.056 42.663 36.139 43.38 35.725 c 44.098 35.31 45.015 35.556 45.429 36.274 c s 44.179 27.926 m 43.765 28.643 42.848 28.889 42.13 28.475 c 41.413 28.06 41.167 27.143 41.581 26.425 c 41.995 25.708 42.913 25.462 43.63 25.876 c 44.348 26.291 44.593 27.208 44.179 27.926 c s 35.929 41.024 m 35.515 41.741 34.598 41.987 33.88 41.573 c 33.163 41.158 32.917 40.241 33.331 39.524 c 33.745 38.806 34.663 38.56 35.38 38.975 c 36.098 39.389 36.343 40.306 35.929 41.024 c s 28.38 34.225 m 28.794 34.942 28.549 35.859 27.831 36.274 c 27.114 36.688 26.196 36.442 25.782 35.725 c 25.368 35.007 25.614 34.09 26.331 33.675 c 27.049 33.261 27.966 33.507 28.38 34.225 c s 31.179 28.024 m 30.765 28.741 29.848 28.987 29.13 28.573 c 28.413 28.158 28.167 27.241 28.581 26.524 c 28.995 25.806 29.913 25.56 30.63 25.975 c 31.348 26.389 31.593 27.306 31.179 28.024 c s 36.792 23.349 m 35.963 23.349 35.292 22.678 35.292 21.849 c 35.292 21.021 35.963 20.349 36.792 20.349 c 37.62 20.349 38.292 21.021 38.292 21.849 c 38.292 22.678 37.62 23.349 36.792 23.349 c s 10.888 34.175 m 10.474 34.893 10.72 35.81 11.437 36.225 c 12.155 36.639 13.072 36.393 13.486 35.675 c 13.901 34.958 13.655 34.041 12.937 33.626 c 12.22 33.212 11.303 33.458 10.888 34.175 c s 11.517 26.601 m 11.931 27.318 12.848 27.564 13.566 27.15 c 14.283 26.735 14.529 25.818 14.115 25.1 c 13.701 24.383 12.783 24.137 12.066 24.551 c 11.348 24.966 11.103 25.883 11.517 26.601 c s 16.782 41.426 m 17.196 42.143 18.114 42.389 18.831 41.975 c 19.549 41.56 19.794 40.643 19.38 39.926 c 18.966 39.208 18.049 38.962 17.331 39.377 c 16.614 39.791 16.368 40.708 16.782 41.426 c s 22.365 24.35 m 23.194 24.35 23.865 23.678 23.865 22.85 c 23.865 22.021 23.194 21.35 22.365 21.35 c 21.537 21.35 20.865 22.021 20.865 22.85 c 20.865 23.678 21.537 24.35 22.365 24.35 c s 45.385 7.849 m 44.971 7.132 44.053 6.886 43.336 7.3 c 42.619 7.714 42.373 8.632 42.787 9.349 c 43.201 10.067 44.119 10.312 44.836 9.898 c 45.553 9.484 45.799 8.567 45.385 7.849 c s 29.679 7.774 m 29.265 7.056 28.348 6.81 27.63 7.225 c 26.913 7.639 26.667 8.556 27.081 9.274 c 27.495 9.991 28.413 10.237 29.13 9.823 c 29.848 9.408 30.093 8.491 29.679 7.774 c s 35.542 11.349 m 34.713 11.349 34.042 12.021 34.042 12.849 c 34.042 13.678 34.713 14.349 35.542 14.349 c 36.37 14.349 37.042 13.678 37.042 12.849 c 37.042 12.021 36.37 11.349 35.542 11.349 c s 10.13 7.475 m 10.544 6.757 11.462 6.511 12.179 6.926 c 12.897 7.34 13.142 8.257 12.728 8.975 c 12.314 9.692 11.397 9.938 10.679 9.524 c 9.962 9.109 9.716 8.192 10.13 7.475 c s 20.203 13.349 m 21.031 13.349 21.703 14.021 21.703 14.849 c 21.703 15.678 21.031 16.349 20.203 16.349 c 19.375 16.349 18.703 15.678 18.703 14.849 c 18.703 14.021 19.375 13.349 20.203 13.349 c s 44.635 54.1 m 45.049 53.382 44.803 52.465 44.086 52.051 c 43.369 51.636 42.451 51.882 42.037 52.6 c 41.623 53.317 41.869 54.234 42.586 54.649 c 43.303 55.063 44.221 54.817 44.635 54.1 c s 36.841 48.1 m 36.427 47.382 35.509 47.136 34.792 47.551 c 34.074 47.965 33.828 48.882 34.243 49.6 c 34.657 50.317 35.574 50.563 36.292 50.149 c 37.009 49.734 37.255 48.817 36.841 48.1 c s 29.728 54.725 m 30.143 54.007 29.897 53.09 29.179 52.675 c 28.462 52.261 27.544 52.507 27.13 53.225 c 26.716 53.942 26.962 54.859 27.679 55.274 c 28.397 55.688 29.314 55.442 29.728 54.725 c s 10.86 54.1 m 10.446 53.382 10.691 52.465 11.409 52.051 c 12.126 51.636 13.044 51.882 13.458 52.6 c 13.872 53.317 13.626 54.234 12.909 54.649 c 12.191 55.063 11.274 54.817 10.86 54.1 c s 19.154 49.1 m 19.568 48.382 20.486 48.136 21.203 48.551 c 21.92 48.965 22.166 49.882 21.752 50.6 c 21.338 51.317 20.42 51.563 19.703 51.149 c 18.986 50.734 18.74 49.817 19.154 49.1 c s 51.88 38.85 m 51.052 38.85 50.38 39.521 50.38 40.35 c 50.38 41.178 51.052 41.85 51.88 41.85 c 52.709 41.85 53.38 41.178 53.38 40.35 c 53.38 39.521 52.709 38.85 51.88 38.85 c s 51.865 11.349 m 52.693 11.349 53.365 12.021 53.365 12.849 c 53.365 13.678 52.693 14.349 51.865 14.349 c 51.036 14.349 50.365 13.678 50.365 12.849 c 50.365 12.021 51.036 11.349 51.865 11.349 c s 30.179 18.524 m 29.765 19.241 28.848 19.487 28.13 19.073 c 27.413 18.658 27.167 17.741 27.581 17.024 c 27.995 16.306 28.913 16.06 29.63 16.475 c 30.348 16.889 30.593 17.806 30.179 18.524 c s 21.679 31.524 m 21.265 32.241 20.348 32.487 19.63 32.073 c 18.913 31.658 18.667 30.741 19.081 30.024 c 19.495 29.306 20.413 29.06 21.13 29.475 c 21.848 29.889 22.093 30.806 21.679 31.524 c s 37.914 33.399 m 37.5 34.116 36.583 34.362 35.865 33.948 c 35.148 33.533 34.902 32.616 35.316 31.899 c 35.73 31.181 36.648 30.935 37.365 31.35 c 38.083 31.764 38.328 32.681 37.914 33.399 c s 28.929 45.024 m 28.515 45.741 27.598 45.987 26.88 45.573 c 26.163 45.158 25.917 44.241 26.331 43.524 c 26.745 42.806 27.663 42.56 28.38 42.975 c 29.098 43.389 29.343 44.306 28.929 45.024 c s 12.429 45.524 m 12.015 46.241 11.098 46.487 10.38 46.073 c 9.663 45.658 9.417 44.741 9.831 44.024 c 10.245 43.306 11.163 43.06 11.88 43.475 c 12.598 43.889 12.843 44.806 12.429 45.524 c s 44.49 45.6 m 44.075 46.317 43.158 46.563 42.441 46.149 c 41.723 45.734 41.477 44.817 41.891 44.1 c 42.306 43.382 43.223 43.136 43.941 43.55 c 44.658 43.965 44.904 44.882 44.49 45.6 c s 12.679 18.524 m 12.265 19.241 11.348 19.487 10.63 19.073 c 9.913 18.658 9.667 17.741 10.081 17.024 c 10.495 16.306 11.413 16.06 12.13 16.475 c 12.848 16.889 13.093 17.806 12.679 18.524 c s 21.179 5.774 m 20.765 6.491 19.848 6.737 19.13 6.323 c 18.413 5.908 18.167 4.991 18.581 4.274 c 18.995 3.557 19.913 3.311 20.63 3.725 c 21.348 4.139 21.593 5.056 21.179 5.774 c s 38.929 5.274 m 38.515 5.991 37.598 6.237 36.88 5.823 c 36.163 5.408 35.917 4.491 36.331 3.774 c 36.745 3.057 37.663 2.811 38.38 3.225 c 39.098 3.639 39.343 4.556 38.929 5.274 c s 43.865 18.1 m 44.694 18.1 45.365 17.429 45.365 16.6 c 45.365 15.772 44.694 15.1 43.865 15.1 c 43.037 15.1 42.365 15.772 42.365 16.6 c 42.365 17.429 43.037 18.1 43.865 18.1 c s 51.13 4.6 m 50.302 4.6 49.63 3.928 49.63 3.1 c 49.63 2.272 50.302 1.6 51.13 1.6 c 51.959 1.6 52.63 2.272 52.63 3.1 c 52.63 3.928 51.959 4.6 51.13 4.6 c s 52.163 31.649 m 51.748 32.366 50.831 32.612 50.114 32.198 c 49.396 31.783 49.15 30.866 49.565 30.149 c 49.979 29.431 50.896 29.185 51.614 29.6 c 52.331 30.014 52.577 30.931 52.163 31.649 c s 51.85 51.35 m 51.021 51.35 50.35 50.678 50.35 49.85 c 50.35 49.021 51.021 48.35 51.85 48.35 c 52.678 48.35 53.35 49.021 53.35 49.85 c 53.35 50.678 52.678 51.35 51.85 51.35 c s 49.85 23.1 m 50.679 23.1 51.35 22.428 51.35 21.6 c 51.35 20.771 50.679 20.1 49.85 20.1 c 49.022 20.1 48.35 20.771 48.35 21.6 c 48.35 22.428 49.022 23.1 49.85 23.1 c s 5.13 38.85 m 4.302 38.85 3.63 39.521 3.63 40.35 c 3.63 41.178 4.302 41.85 5.13 41.85 c 5.959 41.85 6.63 41.178 6.63 40.35 c 6.63 39.521 5.959 38.85 5.13 38.85 c s 5.115 11.349 m 5.943 11.349 6.615 12.021 6.615 12.849 c 6.615 13.678 5.943 14.349 5.115 14.349 c 4.286 14.349 3.615 13.678 3.615 12.849 c 3.615 12.021 4.286 11.349 5.115 11.349 c s 4.38 4.6 m 3.552 4.6 2.88 3.928 2.88 3.1 c 2.88 2.272 3.552 1.6 4.38 1.6 c 5.209 1.6 5.88 2.272 5.88 3.1 c 5.88 3.928 5.209 4.6 4.38 4.6 c s 5.413 31.649 m 4.998 32.366 4.081 32.612 3.364 32.198 c 2.646 31.783 2.4 30.866 2.815 30.149 c 3.229 29.431 4.146 29.185 4.864 29.6 c 5.581 30.014 5.827 30.931 5.413 31.649 c s 5.1 51.35 m 4.271 51.35 3.6 50.678 3.6 49.85 c 3.6 49.021 4.271 48.35 5.1 48.35 c 5.928 48.35 6.6 49.021 6.6 49.85 c 6.6 50.678 5.928 51.35 5.1 51.35 c s 3.1 23.1 m 3.929 23.1 4.6 22.428 4.6 21.6 c 4.6 20.771 3.929 20.1 3.1 20.1 c 2.272 20.1 1.6 20.771 1.6 21.6 c 1.6 22.428 2.272 23.1 3.1 23.1 c s 21.194 59.775 m 20.78 60.492 19.863 60.738 19.145 60.324 c 18.428 59.909 18.182 58.992 18.596 58.275 c 19.01 57.558 19.928 57.312 20.645 57.726 c 21.363 58.14 21.608 59.057 21.194 59.775 c s 38.944 59.275 m 38.53 59.992 37.613 60.238 36.895 59.824 c 36.178 59.409 35.932 58.492 36.346 57.775 c 36.76 57.058 37.678 56.812 38.395 57.226 c 39.113 57.64 39.358 58.557 38.944 59.275 c s 51.145 58.601 m 50.317 58.601 49.645 57.929 49.645 57.101 c 49.645 56.273 50.317 55.601 51.145 55.601 c 51.974 55.601 52.645 56.273 52.645 57.101 c 52.645 57.929 51.974 58.601 51.145 58.601 c s 4.395 58.601 m 3.567 58.601 2.895 57.929 2.895 57.101 c 2.895 56.273 3.567 55.601 4.395 55.601 c 5.224 55.601 5.895 56.273 5.895 57.101 c 5.895 57.929 5.224 58.601 4.395 58.601 c s %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Rope.side) (Rope.side) 1 4.6 60.9998 33.3999 [ %AI3_Tile (0 O 0 R 0 0 0 1 k 0 0 0 1 K ) @ ( %AI6_BeginPatternLayer 800 Ar 1 J 1 j 0.6 w 4 M []0 d %AI3_Note: 0 D 0 XR 24.9999 7 m 15.6521 4.663 8.125 8.6981 1 14.1407 C S 36.9999 7 m 22.3477 3.337 12.168 15.3276 1 23.859 C S 48.9999 7 m 29.3464 2.0866 17.7386 25.3332 1 30.6213 C S 1 30.9999 m 24.9999 36.9999 36.9999 1 60.9998 7 C S 13 30.9999 m 32.6534 35.9133 44.2611 12.6667 60.9998 7.3786 C S 24.9999 30.9999 m 39.652 34.6629 49.8317 22.6722 60.9998 14.1407 C S 36.9999 30.9999 m 46.3476 33.3369 53.8749 29.3018 60.9998 23.859 C S 48.9999 30.9999 m 53.3464 32.0865 57.2978 31.7908 60.9998 30.6213 C S 13 7 m 8.6535 5.9134 4.7019 6.2091 1 7.3786 C S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Scales) (Scales) 1.6 9.3475 48.088 55.8355 [ %AI3_Tile (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 1.6 9.3475 m 1.6 55.8355 L 48.088 55.8355 L 48.088 9.3475 L 1.6 9.3475 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 g 0 G ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 17.0956 9.3475 m 12.8162 9.3475 9.3475 5.8787 9.3475 1.6 C 9.3475 5.8787 5.8787 9.3475 1.6 9.3475 C 1.6 13.6262 5.0687 17.095 9.3475 17.095 c 13.6268 17.095 17.0956 13.6262 17.0956 9.3475 C s 32.5918 9.3475 m 28.3125 9.3475 24.8437 5.8787 24.8437 1.6 C 24.8437 5.8787 21.3743 9.3475 17.0956 9.3475 C 17.0956 13.6262 20.5644 17.095 24.8437 17.095 c 29.1224 17.095 32.5918 13.6262 32.5918 9.3475 C s 48.088 9.3475 m 43.8087 9.3475 40.3399 5.8787 40.3399 1.6 C 40.3399 5.8787 36.8705 9.3475 32.5918 9.3475 C 32.5918 13.6262 36.0606 17.095 40.3399 17.095 c 44.6186 17.095 48.088 13.6262 48.088 9.3475 C s 17.0956 40.3393 m 12.8162 40.3393 9.3475 36.8699 9.3475 32.5912 C 9.3475 36.8699 5.8787 40.3393 1.6 40.3393 C 1.6 44.6181 5.0687 48.0874 9.3475 48.0874 c 13.6268 48.0874 17.0956 44.6181 17.0956 40.3393 C s 17.0956 24.8431 m 12.8162 24.8431 9.3475 21.3743 9.3475 17.095 C 9.3475 21.3743 5.8787 24.8431 1.6 24.8431 C 1.6 29.1218 5.0687 32.5912 9.3475 32.5912 c 13.6268 32.5912 17.0956 29.1218 17.0956 24.8431 C s 32.5918 24.8431 m 28.3125 24.8431 24.8437 21.3743 24.8437 17.095 C 24.8437 21.3743 21.3743 24.8431 17.0956 24.8431 C 17.0956 29.1218 20.5644 32.5912 24.8437 32.5912 c 29.1224 32.5912 32.5918 29.1218 32.5918 24.8431 C s 48.088 24.8431 m 43.8087 24.8431 40.3399 21.3743 40.3399 17.095 C 40.3399 21.3743 36.8705 24.8431 32.5918 24.8431 C 32.5918 29.1218 36.0606 32.5912 40.3399 32.5912 c 44.6186 32.5912 48.088 29.1218 48.088 24.8431 C s 32.5918 40.3393 m 28.3125 40.3393 24.8437 36.8699 24.8437 32.5912 C 24.8437 36.8699 21.3743 40.3393 17.0956 40.3393 C 17.0956 44.6181 20.5644 48.0874 24.8437 48.0874 c 29.1224 48.0874 32.5918 44.6181 32.5918 40.3393 C s 48.088 40.3393 m 43.8087 40.3393 40.3399 36.8699 40.3399 32.5912 C 40.3399 36.8699 36.8705 40.3393 32.5918 40.3393 C 32.5918 44.6181 36.0606 48.0874 40.3399 48.0874 c 44.6186 48.0874 48.088 44.6181 48.088 40.3393 C s 17.0956 55.8355 m 12.8162 55.8355 9.3475 52.3662 9.3475 48.0874 C 9.3475 52.3662 5.8787 55.8355 1.6 55.8355 C 1.6 60.1143 5.0687 63.5836 9.3475 63.5836 c 13.6268 63.5836 17.0956 60.1143 17.0956 55.8355 C s 32.5918 55.8355 m 28.3125 55.8355 24.8437 52.3662 24.8437 48.0874 C 24.8437 52.3662 21.3743 55.8355 17.0956 55.8355 C 17.0956 60.1143 20.5644 63.5836 24.8437 63.5836 c 29.1224 63.5836 32.5918 60.1143 32.5918 55.8355 C s 48.088 55.8355 m 43.8087 55.8355 40.3399 52.3662 40.3399 48.0874 C 40.3399 52.3662 36.8705 55.8355 32.5918 55.8355 C 32.5918 60.1143 36.0606 63.5836 40.3399 63.5836 c 44.6186 63.5836 48.088 60.1143 48.088 55.8355 C s %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (SolidStar.side) (SolidStar.side) 1 1 33.0117 33.0117 [ %AI3_Tile (0 O 0 R 0.05 0.2 0.95 0 k 0.05 0.2 0.95 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 1 D 0 XR 7.9689 26.0458 m 14.5331 22.9874 l 17.0095 29.7904 L 19.4859 22.9874 l 26.0473 26.0458 l 22.9889 19.4815 l 29.792 17.0052 l 22.9889 14.5288 l 26.0473 7.9674 l 19.4859 11.0257 l 17.0095 4.2226 l 14.5305 11.0257 l 7.9689 7.9674 l 11.0273 14.5288 l 4.2242 17.0052 l 11.0273 19.4843 L 7.9689 26.0458 l f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Stars) (Stars) 1 1 63.384 84.766 [ %AI3_Tile (0 O 0 R 1 0.9 0.1 0 k 1 0.9 0.1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D 0 XR 1 1 m 1 84.766 L 63.384 84.766 L 63.384 1 L 1 1 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0.25 1 0 k 0 0.25 1 0 K ) @ ( %AI6_BeginPatternLayer *u 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 37.668 67.113 m 43.924 62.567 L 41.535 55.213 L 47.791 59.757 L 54.046 55.212 L 51.657 62.566 L 57.914 67.112 L 50.18 67.112 L 47.791 74.467 L 45.402 67.113 L 37.668 67.113 L f 16.596 59.757 m 22.851 55.212 L 20.462 62.566 L 26.719 67.112 L 18.985 67.112 L 16.596 74.467 L 14.207 67.113 L 6.473 67.113 L 12.729 62.567 L 10.34 55.213 L 16.596 59.757 L f 20.462 20.683 m 26.719 25.229 L 18.985 25.229 L 16.596 32.584 L 14.207 25.23 L 6.473 25.23 L 12.729 20.684 L 10.34 13.33 L 16.596 17.874 L 22.851 13.329 L 20.462 20.683 L f 38.447 34.271 m 36.058 41.625 L 42.315 46.171 L 34.581 46.171 L 32.192 53.526 L 29.803 46.172 L 22.069 46.172 L 28.325 41.626 L 25.936 34.272 L 32.192 38.816 L 38.447 34.271 L f 51.657 20.683 m 57.914 25.229 L 50.18 25.229 L 47.791 32.584 L 45.402 25.23 L 37.668 25.23 L 43.924 20.684 L 41.535 13.33 L 47.791 17.874 L 54.046 13.329 L 51.657 20.683 L f *U 1 XR 34.581 4.288 m 32.192 11.643 L 29.803 4.289 L 22.069 4.289 L 26.5962 1 L 37.7885 1 L 42.315 4.288 L 34.581 4.288 L f 53.261 4.289 m 57.7882 1 L 63.384 1 L 63.384 11.643 L 60.995 4.289 L 53.261 4.289 L f 4.866 41.625 m 11.123 46.171 L 3.389 46.171 L 1 53.526 L 1 38.816 L 7.255 34.271 L 4.866 41.625 L f 36.058 41.625 m 42.315 46.171 L 34.581 46.171 L 32.192 53.526 L 29.803 46.172 L 22.069 46.172 L 28.325 41.626 L 25.936 34.272 L 32.192 38.816 L 38.447 34.271 L 36.058 41.625 L f 53.261 46.172 m 59.517 41.626 L 57.128 34.272 L 63.384 38.816 L 63.384 53.526 L 60.995 46.172 L 53.261 46.172 L f 4.866 83.508 m 6.5974 84.766 L 1 84.766 L 1 80.699 L 7.255 76.154 L 4.866 83.508 L f 25.936 76.155 m 32.192 80.699 L 38.447 76.154 L 36.058 83.508 L 37.7895 84.766 L 26.5951 84.766 L 28.325 83.509 L 25.936 76.155 L f 22.851 55.212 m 20.462 62.566 L 26.719 67.112 L 18.985 67.112 L 16.596 74.467 L 14.207 67.113 L 6.473 67.113 L 12.729 62.567 L 10.34 55.213 L 16.596 59.757 L 22.851 55.212 L f 41.535 55.213 m 47.791 59.757 L 54.046 55.212 L 51.657 62.566 L 57.914 67.112 L 50.18 67.112 L 47.791 74.467 L 45.402 67.113 L 37.668 67.113 L 43.924 62.567 L 41.535 55.213 L f 50.18 25.229 m 47.791 32.584 L 45.402 25.23 L 37.668 25.23 L 43.924 20.684 L 41.535 13.33 L 47.791 17.874 L 54.046 13.329 L 51.657 20.683 L 57.914 25.229 L 50.18 25.229 L f 18.985 25.229 m 16.596 32.584 L 14.207 25.23 L 6.473 25.23 L 12.729 20.684 L 10.34 13.33 L 16.596 17.874 L 22.851 13.329 L 20.462 20.683 L 26.719 25.229 L 18.985 25.229 L f 3.388 4.289 m 1 11.643 L 1 1 L 6.5948 1 L 11.122 4.289 L 3.388 4.289 L f 57.128 76.154 m 63.384 80.699 L 63.384 84.766 L 57.7855 84.766 L 59.517 83.508 L 57.128 76.154 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Stripes) (Stripes) 8.45 4.6001 80.45 76.6001 [ %AI3_Tile (0 O 0 R 1 0.07 1 0 k 1 0.07 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 3.6 w 4 M []0 d %AI3_Note: 0 D 0 XR 8.2 8.2 m 80.7 8.2 L S 8.2 22.6001 m 80.7 22.6001 L S 8.2 37.0002 m 80.7 37.0002 L S 8.2 51.4 m 80.7 51.4 L S 8.2 65.8001 m 80.7 65.8001 L S 8.2 15.4 m 80.7 15.4 L S 8.2 29.8001 m 80.7 29.8001 L S 8.2 44.2 m 80.7 44.2 L S 8.2 58.6001 m 80.7 58.6001 L S 8.2 73.0002 m 80.7 73.0002 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (TriBevel.outer) (TriBevel.outer) 1 1.0004 31.6124 31.6127 [ %AI3_Tile (0 O 0 R 0 0 0 0.3 k 0 0 0 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 31.6118 5.4917 m 27.1221 5.4917 L 27.1205 1.0011 L 27.8031 1.0011 L 27.8031 4.8091 L 31.6118 4.8091 L 31.6118 5.4917 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.2 k 0 0 0 0.2 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 31.6149 9.5062 m 23.1111 9.5062 L 23.1111 1.0015 L 27.1205 1.0015 L 27.1205 5.493 L 31.6144 5.493 L 31.6149 9.5062 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.4 k 0 0 0 0.4 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 31.6124 10.485 m 22.1297 10.485 L 22.1292 1.0015 L 23.1084 1.0015 L 23.1084 9.5049 L 31.6124 9.5049 L 31.6124 10.485 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.3 k 0 0 0 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 31.6129 17.2066 m 15.4064 17.2085 L 15.4064 1 L 22.1301 1 L 22.1301 10.4868 L 31.6129 10.4868 L 31.6129 17.2066 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.5 k 0 0 0 0.5 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 31.6149 18.3658 m 14.2517 18.3658 L 14.2515 1.0009 L 15.4043 1.0009 L 15.4043 17.2093 L 31.6149 17.2093 L 31.6149 18.3658 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.4 k 0 0 0 0.4 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 31.6124 30.4755 m 2.1395 30.4755 L 2.1395 1.0015 L 14.249 1 L 14.249 18.366 L 31.6149 18.366 L 31.6124 30.4755 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.6 k 0 0 0 0.6 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 15.4066 16.847 m 14.2778 18.3257 l 15.4066 17.2057 l 15.4066 16.847 l f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.5 k 0 0 0 0.5 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 23.1095 9.1906 m 22.1759 10.4392 l 23.1082 9.505 l 23.1095 9.1906 l f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.4 k 0 0 0 0.4 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 27.8039 4.6026 m 27.1619 5.4533 l 27.8029 4.8093 l 27.8039 4.6026 l f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (TriBevel.side) (TriBevel.side) 1.0006 1 29.0006 31.6124 [ %AI3_Tile (0 O 0 R 0 0 0 0.3 k 0 0 0 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 29 4.8087 m 29 4.8087 L 29.0026 5.4927 L 1.0026 5.4927 L 1 4.8087 L 1 4.8087 L 29 4.8087 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.2 k 0 0 0 0.2 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 29.0026 5.4927 m 29.0005 9.5045 L 1.0005 9.5045 L 1.0026 5.4927 L 29.0026 5.4927 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.4 k 0 0 0 0.4 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 29.0005 9.5045 m 29.0011 10.4865 L 1.0011 10.4865 L 1.0005 9.5045 L 29.0005 9.5045 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.3 k 0 0 0 0.3 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 29.0011 10.4865 m 29.003 17.209 L 1.003 17.209 L 1.0011 10.4865 L 29.0011 10.4865 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.5 k 0 0 0 0.5 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 29.003 17.209 m 29.0031 18.3656 L 1.0031 18.3656 L 1.003 17.209 L 29.003 17.209 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 0 0.4 k 0 0 0 0.4 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 29.0031 18.3656 m 29.0006 30.4752 L 1.0006 30.4752 L 1.0031 18.3656 L 29.0031 18.3656 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Waves-scroll) (Waves-scroll) 17.926 10.516 68.663 69.012 [ %AI3_Tile (0 O 0 R 1 0 0.3 0 k 1 0 0.3 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 1 D 0 XR 17.926 69.012 m 17.926 10.516 L 68.663 10.516 L 68.663 69.012 L 17.926 69.012 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.55 0 0 0 k 0.55 0 0 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 0.75 w 4 M []0 d %AI3_Note: 0 D 0 XR 65.335 70.465 m 65.881 68.746 67.444 68.168 68.663 69.012 C 67.538 69.668 68.011 71.255 69.686 70.933 c 72.124 70.464 71.894 67.213 70.53 65.589 c 68.561 63.245 64.565 60.995 53.241 71.117 C S 39.964 70.465 m 40.511 68.746 42.074 68.168 43.293 69.012 C 42.168 69.668 42.64 71.255 44.316 70.933 c 46.753 70.464 46.524 67.213 45.16 65.589 c 43.191 63.245 39.195 60.995 27.87 71.117 c S 14.594 70.465 m 15.141 68.746 16.704 68.168 17.923 69.012 C 16.798 69.668 17.27 71.255 18.945 70.933 c 21.382 70.464 21.153 67.213 19.789 65.589 c 17.821 63.245 13.825 60.995 2.5 71.117 c S 10.959 51.619 m 22.282 41.497 26.278 43.747 28.247 46.09 c 29.611 47.715 29.841 50.965 27.403 51.434 c 25.728 51.757 25.255 50.169 26.38 49.513 C 25.161 48.669 23.599 49.248 23.052 50.966 c 22.723 51.997 23.38 53.966 24.872 54.903 c 27.267 56.406 31.371 56.05 36.328 51.619 c 47.653 41.497 51.649 43.746 53.618 46.09 c 54.982 47.715 55.212 50.965 52.774 51.434 c 51.099 51.757 50.626 50.169 51.751 49.513 C 50.532 48.669 48.97 49.248 48.423 50.966 c 48.094 51.997 48.751 53.966 50.243 54.903 c 52.638 56.406 56.742 56.05 61.699 51.619 C 73.024 41.497 77.02 43.747 78.988 46.09 c S 70.156 32.12 m 65.199 36.551 61.095 36.907 58.7 35.404 c 57.208 34.468 56.552 32.499 56.88 31.468 c 57.427 29.749 58.99 29.171 60.208 30.015 C 59.083 30.671 59.556 32.258 61.231 31.936 c 63.669 31.467 63.439 28.216 62.075 26.592 c 60.106 24.248 56.11 21.998 44.786 32.12 C 39.829 36.551 35.725 36.907 33.33 35.404 c 31.838 34.468 31.182 32.499 31.51 31.468 c 32.056 29.749 33.619 29.171 34.838 30.015 C 33.713 30.671 34.186 32.258 35.861 31.936 c 38.299 31.467 38.069 28.216 36.705 26.592 c 34.737 24.248 30.74 21.998 19.415 32.12 c 14.458 36.551 10.354 36.907 7.96 35.404 c S 19.792 7.094 m 21.157 8.719 21.386 11.968 18.949 12.437 c 17.274 12.76 16.801 11.172 17.926 10.516 C 16.708 9.673 15.145 10.252 14.598 11.969 c 14.27 13 14.926 14.969 16.418 15.906 c 18.812 17.409 22.916 17.053 27.874 12.622 c 39.199 2.5 43.195 4.75 45.163 7.094 c 46.528 8.719 46.757 11.968 44.32 12.437 c 42.644 12.76 42.172 11.172 43.297 10.516 C 42.078 9.673 40.515 10.252 39.968 11.969 c 39.64 13 40.297 14.969 41.788 15.906 c 44.183 17.409 48.287 17.053 53.245 12.622 C 64.569 2.5 68.565 4.75 70.534 7.094 c 71.898 8.719 72.127 11.968 69.69 12.437 c 68.014 12.76 67.542 11.172 68.667 10.516 C 67.448 9.673 65.885 10.252 65.338 11.969 c 65.011 13 65.667 14.969 67.159 15.906 c 69.553 17.409 73.657 17.053 78.615 12.622 c S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Yellow Stripe) (Yellow Stripe) 8.4499 4.6 80.4499 76.6 [ %AI3_Tile (0 O 0 R 0 0.4 1 0 k 0 0.4 1 0 K ) @ ( %AI6_BeginPatternLayer 800 Ar 0 J 0 j 3.6 w 4 M []0 d %AI3_Note: 0 D 0 XR 8.1999 8.1999 m 80.6999 8.1999 L S 8.1999 22.6 m 80.6999 22.6 L S 8.1999 37.0001 m 80.6999 37.0001 L S 8.1999 51.3999 m 80.6999 51.3999 L S 8.1999 65.8 m 80.6999 65.8 L S 8.1999 15.3999 m 80.6999 15.3999 L S 8.1999 29.8 m 80.6999 29.8 L S 8.1999 44.1999 m 80.6999 44.1999 L S 8.1999 58.6 m 80.6999 58.6 L S 8.1999 73.0001 m 80.6999 73.0001 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np 15 Bn %AI5_BeginGradient: (Black & White) (Black & White) 0 2 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 %_Br [ 0 0 50 100 %_Bs 1 0 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Black, White) (Black, White) 0 2 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 %_Br [ 0 0 50 100 %_Bs 1 0 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Chrome) (Chrome) 0 6 Bd [ 0 < 464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B 3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130 3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625 2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A 1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F 0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504 04040403030302020202010101010000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A 1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515 15151515151414141414141414131313131313131312121212121212121211111111111111111010 1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C 0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707 07060606060606060606050505050505050504040404040404040303030303030303030202020202 02020201010101010101010000000000 > 1 %_Br 0 0.275 1 < 6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544 434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F > 1 %_Br 0 < 00000101010102020202030303040404040505050506060607070707080808090909090A0A0A0A0B 0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101011111112121212131313141414141515151516 161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021 212122222222232323232424242525252526262626272727282828282929292A2A2A2A2B2B2B2B2C 2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313132323233333333343434353535353636363637 373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142 42424343434344444444454545464646 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010 1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121 222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232 32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243 434444444545464647474748484949494A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354 54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464 6565666666676768686969696A6A6B6B > 1 %_Br 1 0 %_Br < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141 414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535 35343434333333323232323131313030302F2F2F2E2E2E2E2D2D2D2C2C2C2B2B2B2B2A2A2A292929 282828282727272626262525252524242423232322222222212121202020201F1F1F1E1E1E1D1D1D 1D1C1C1C1B1B1B1A1A1A1A1919191818181717171616161615151514141413131313121212111111 101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505 04040404030303020202010101010000 > 0 0 1 %_Br [ 1 0 50 92 %_Bs 0 0.275 1 0.12 1 50 59 %_Bs 0 0.275 1 0.42 1 50 50 %_Bs 1 0 50 49 %_Bs 1 0 50 41 %_Bs 1 0.3 0 0 1 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Green, Blue) (Green, Blue) 0 2 Bd [ < 99999A9A9B9B9B9C9C9D9D9D9E9E9F9F9FA0A0A1A1A1A2A2A3A3A3A4A4A5A5A5A6A6A7A7A7A8A8A9 A9A9AAAAABABABACACADADADAEAEAFAFAFB0B0B1B1B1B2B2B3B3B3B4B4B5B5B5B6B6B7B7B7B8B8B9 B9B9BABABBBBBBBCBCBDBDBDBEBEBFBFBFC0C0C1C1C1C2C2C3C3C3C4C4C5C5C5C6C6C7C7C7C8C8C9 C9C9CACACBCBCBCCCCCDCDCDCECECFCFCFD0D0D1D1D1D2D2D3D3D3D4D4D5D5D5D6D6D7D7D7D8D8D9 D9D9DADADBDBDBDCDCDDDDDDDEDEDFDFDFE0E0E1E1E1E2E2E3E3E3E4E4E5E5E5E6E6E7E7E7E8E8E9 E9E9EAEAEBEBEBECECEDEDEDEEEEEFEFEFF0F0F1F1F1F2F2F3F3F3F4F4F5F5F5F6F6F7F7F7F8F8F9 F9F9FAFAFBFBFBFCFCFDFDFDFEFEFFFF > < 000102020304050506070808090A0B0B0C0D0E0E0F101111121314141516171718191A1A1B1C1D1D 1E1F20202122232324252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3B3B 3C3D3E3E3F404141424344444546474748494A4A4B4C4D4D4E4F5050515253535455565657585959 5A5B5C5C5D5E5F5F606162626364656566676868696A6B6B6C6D6E6E6F7071717273747475767777 78797A7A7B7C7D7D7E7F80808182838384858686878889898A8B8C8C8D8E8F8F9091929293949595 96979898999A9B9B9C9D9E9E9FA0A1A1A2A3A4A4A5A6A7A7A8A9AAAAABACADADAEAFB0B0B1B2B3B3 B4B5B6B6B7B8B9B9BABBBCBCBDBEBFBF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br [ 1 0.75 0 0 1 50 100 %_Bs 0.6 0 1 0 1 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Orange, Green, Violet) (Orange, Green, Violet) 0 3 Bd [ < F0EFEFEFEEEEEEEDEDEDECECECEBEBEBEAEAEAE9E9E9E8E8E8E7E7E7E6E6E6E5E5E5E4E4E4E3E3E3 E3E2E2E2E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDBDADADAD9D9D9D8D8D8D7D7D7D6D6D6 D5D5D5D4D4D4D3D3D3D2D2D2D1D1D1D0D0D0CFCFCFCECECECDCDCDCCCCCCCBCBCBCACACAC9C9C9C8 C8C8C7C7C7C6C6C6C5C5C5C4C4C4C3C3C3C2C2C2C2C1C1C1C0C0C0BFBFBFBEBEBEBDBDBDBCBCBCBB BBBBBABABAB9B9B9B8B8B8B7B7B7B6B6B6B5B5B5B4B4B4B3B3B3B2B2B2B1B1B1B0B0B0AFAFAFAEAE AEADADADACACACABABABAAAAAAA9A9A9A8A8A8A7A7A7A6A6A6A5A5A5A4A4A4A3A3A3A2A2A2A1A1A1 A1A0A0A09F9F9F9E9E9E9D9D9D9C9C9C > < 5455555657575859595A5A5B5C5C5D5E5E5F5F6061616263636465656666676868696A6A6B6B6C6D 6D6E6F6F707171727273747475767677777879797A7B7B7C7C7D7E7E7F8080818282838384858586 87878888898A8A8B8C8C8D8D8E8F8F909191929393949495969697989899999A9B9B9C9D9D9E9E9F A0A0A1A2A2A3A4A4A5A5A6A7A7A8A9A9AAAAABACACADAEAEAFB0B0B1B1B2B3B3B4B5B5B6B6B7B8B8 B9BABABBBBBCBDBDBEBFBFC0C1C1C2C2C3C4C4C5C6C6C7C7C8C9C9CACBCBCCCCCDCECECFD0D0D1D2 D2D3D3D4D5D5D6D7D7D8D8D9DADADBDCDCDDDDDEDFDFE0E1E1E2E3E3E4E4E5E6E6E7E8E8E9E9EAEB EBECEDEDEEEFEFF0F0F1F2F2F3F4F4F5 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101020202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020303030303 > 1 %_Br < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0 > < A1A0A0A09F9F9F9E9E9E9D9D9D9D9C9C9C9B9B9B9A9A9A9999999898989797979696969595959594 94949393939292929191919090908F8F8F8E8E8E8E8D8D8D8C8C8C8B8B8B8A8A8A89898988888887 878787868686858585848484838383828282818181808080807F7F7F7E7E7E7D7D7D7C7C7C7B7B7B 7A7A7A79797978787878777777767676757575747474737373727272717171717070706F6F6F6E6E 6E6D6D6D6C6C6C6B6B6B6A6A6A6A6969696868686767676666666565656464646363636262626261 61616060605F5F5F5E5E5E5D5D5D5C5C5C5B5B5B5B5A5A5A59595958585857575756565655555554 54 > < F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFA FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD FDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFF FF > 0 1 %_Br [ 0.61 0.96 0 0.01 1 50 100 %_Bs 0.94 0.33 1 0 1 50 50 %_Bs 0 0.63 0.96 0 1 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Pink, Yellow, Green ) (Pink, Yellow, Green ) 0 3 Bd [ < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4D4E4F50 5152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273 > < 05050505050505050505050505050404040404040404040404040404040404040404040403030303 03030303030303030303030303030303030303020202020202020202020202020202020202020202 0201010101010101010101010101010101010101010101000000000000000000000000 > < CCCCCCCCCCCBCBCBCBCBCBCBCBCBCACACACACACACACACAC9C9C9C9C9C9C9C9C9C8C8C8C8C8C8C8C8 C8C7C7C7C7C7C7C7C7C7C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4C3C3C3 C3C3C3C3C3C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1C0C0C0C0C0C0C0C0C0BFBFBF > 0 1 %_Br < 0D0D0D0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0B 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A 0A0A0A09090909090909090909090909090909090909090808080808080808080808080808080808 08080807070707070707070707070707070707070706060606060606060606060606060606060605 05050505050505050505050505050505050404040404040404040404040404040404030303030303 03030303030303030303030202020202020202020202020202020201010101010101010101010101 010101000000000000000000 > < B3B2B2B2B1B1B1B0B0B0AFAFAEAEAEADADACACABABAAAAA9A9A8A8A7A7A6A6A5A5A4A4A3A3A2A2A1 A0A09F9F9E9E9D9D9C9B9B9A9A999898979796959594949392929190908F8F8E8D8D8C8B8B8A8989 88888786868584848382828180807F7E7D7D7C7B7B7A7979787777767575747372727170706F6E6D 6D6C6B6B6A69686867666565646363626160605F5E5D5D5C5B5A5A59585757565554545352515150 4F4E4D4D4C4B4A4A4948474646454443434241403F3F3E3D3C3B3B3A393837373635343333323130 2F2F2E2D2C2B2B2A2928272726252423222221201F1E1D1D1C1B1A1918181716151413131211100F 0E0E0D0C0B0A090908070605 > < 0000010101020202030304040505060607070808090A0A0B0B0C0C0D0E0E0F0F1011111213131415 151617171819191A1B1B1C1D1D1E1F1F202122222324242526272728292A2A2B2C2C2D2E2F303031 323333343536363738393A3A3B3C3D3E3E3F4041424243444546464748494A4B4B4C4D4E4F505051 5253545556565758595A5B5B5C5D5E5F6061626263646566676869696A6B6C6D6E6F707171727374 75767778797A7B7B7C7D7E7F80818283848586868788898A8B8C8D8E8F9091929394949596979899 9A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAAAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0 C1C2C3C4C5C6C7C8C9CACBCC > 0 1 %_Br [ 0.45 0 0.75 0 1 50 100 %_Bs 0 0.02 0.8 0 1 50 64 %_Bs 0.05 0.7 0 0 1 57 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Purple, Red, Yellow) (Purple, Red, Yellow) 0 3 Bd [ 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A > < CCCCCCCDCDCDCDCDCECECECECECFCFCFCFD0D0D0D0D0D1D1D1D1D1D2D2D2D2D2D3D3D3D3D3D4D4D4 D4D5D5D5D5D5D6D6D6D6D6D7D7D7D7D7D8D8D8D8D8D9D9D9D9DADADADADADBDBDBDBDBDCDCDCDCDC DDDDDDDDDDDEDEDEDEDFDFDFDFDFE0E0E0E0E0E1E1E1E1E1E2E2E2E2E2E3E3E3E3E4E4E4E4E4E5E5 E5E5E5E6E6E6E6E6E7E7E7E7E7E8E8E8E8E9E9E9E9E9EAEAEAEAEAEBEBEBEBEBECECECECECEDEDED EDEEEEEEEEEEEFEFEFEFEFF0F0F0F0F0F1F1F1F1F1F2F2F2F2F3F3F3F3F3F4F4F4F4F4F5F5F5F5F5 F6F6F6F6F6F7F7F7F7F8F8F8F8F8F9F9F9F9F9FAFAFAFAFAFBFBFBFBFBFCFCFCFCFDFDFDFDFDFEFE FEFEFEFFFFFF > 0 1 %_Br < E6E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBE BDBCBBBAB9B8B7B6B5B4B3B2B1B0AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796 9594939291908F8E8D8C8B8A898887868584838281807F7E7D7C7B7A797877767574737271706F6E 6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A49484746 4544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E 1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100 > < E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9EAEAEAEA EAEAEAEAEAEBEBEBEBEBEBEBEBEBECECECECECECECECECEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEE EEEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F3F3F3 F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7 F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFCFC FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFF > < 00010203040405060708090A0B0C0C0D0E0F10111213141415161718191A1B1C1D1D1E1F20212223 242525262728292A2B2C2D2D2E2F30313233343535363738393A3B3C3D3D3E3F4041424344454546 4748494A4B4C4D4E4E4F50515253545556565758595A5B5C5D5E5E5F60616263646566666768696A 6B6C6D6E6E6F70717273747576767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E 8F8F90919293949596979798999A9B9C9D9E9F9FA0A1A2A3A4A5A6A7A7A8A9AAABACADAEAFAFB0B1 B2B3B4B5B6B7B8B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C8C9CACBCC > 0 1 %_Br [ 0 0.04 1 0 1 50 100 %_Bs 0 1 0.8 0 1 50 50 %_Bs 0.9 0.9 0 0 1 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Rainbow) (Rainbow) 0 6 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 0 1 %_Br 1 < 0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E 2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556 5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E 7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6 A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6 F7F8F9FAFBFCFDFEFF > 0 0 1 %_Br 1 < 00000000000000000000000000000000000001010101010101010101010101010101010101010101 01010101010101010101010101010202020202020202020202020202020202020202020202020202 02020202020202020202030303030303030303030303030303030303030303030303030303030303 03030303030304040404040404040404040404040404040404040404040404040404040404040404 04040505050505050505050505050505050505050505050505050505050505050505050505050606 06060606060606060606060606060606060606060606060606060606060606060607070707070707 07070707070707070707070707070707 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 1 %_Br [ 0 1 0 0 1 50 100 %_Bs 1 1 0 0 1 50 80 %_Bs 1 0.0279 0 0 1 50 60 %_Bs 1 0 1 0 1 50 40 %_Bs 0 0 1 0 1 50 20 %_Bs 0 1 1 0 1 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Red & Yellow) (Red & Yellow) 0 2 Bd [ 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < FFFFFEFEFDFDFDFCFCFBFBFBFAFAF9F9F9F8F8F7F7F7F6F6F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0EF EFEFEEEEEDEDEDECECEBEBEBEAEAE9E9E9E8E8E7E7E7E6E6E5E5E5E4E4E3E3E3E2E2E1E1E1E0E0DF DFDFDEDEDDDDDDDCDCDBDBDBDADAD9D9D9D8D8D7D7D7D6D6D5D5D5D4D4D3D3D3D2D2D1D1D1D0D0CF CFCFCECECDCDCDCCCCCBCBCBCACAC9C9C9C8C8C7C7C7C6C6C5C5C5C4C4C3C3C3C2C2C1C1C1C0C0BF BFBFBEBEBDBDBDBCBCBBBBBBBABAB9B9B9B8B8B7B7B7B6B6B5B5B5B4B4B3B3B3B2B2B1B1B1B0B0AF AFAFAEAEADADADACACABABABAAAAA9A9A9A8A8A7A7A7A6A6A5A5A5A4A4A3A3A3A2A2A1A1A1A0A09F 9F9F9E9E9D9D9D9C9C9B9B9B9A9A9999 > 0 1 %_Br [ 0 1 0.6 0 1 50 100 %_Bs 0 0 1 0 1 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Steel Bar) (Steel Bar) 0 3 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 %_Br < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 %_Br [ 0 0 50 100 %_Bs 1 0 50 70 %_Bs 0 0 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (White & Red Radial) (White & Red Radial) 1 18 Bd [ 0 1 1 0 1 %_Br 0 1 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br 1 0 %_Br 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 %_Br 0 1 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br 1 0 %_Br 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 %_Br 0 1 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br 1 0 %_Br 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 %_Br 0 1 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br 1 0 %_Br 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 %_Br [ 0 1 1 0 1 50 0 %_Bs 0 1 1 0 1 50 0 %_Bs 0 1 1 0 1 50 12.5 %_Bs 0 0 0 0 1 50 12.5 %_Bs 0 0 0 0 1 50 25 %_Bs 0 1 1 0 1 50 25 %_Bs 0 1 1 0 1 50 37.5 %_Bs 0 0 0 0 1 50 37.5 %_Bs 0 0 0 0 1 50 50 %_Bs 0 1 1 0 1 50 50 %_Bs 0 1 1 0 1 50 62.5 %_Bs 0 0 0 0 1 50 62.5 %_Bs 0 0 0 0 1 50 75 %_Bs 0 1 1 0 1 50 75 %_Bs 0 1 1 0 1 50 87.5 %_Bs 0 0 0 0 1 50 87.5 %_Bs 0 0 0 0 1 50 100 %_Bs 0 1 1 0 1 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Yellow & Blue Radial) (Yellow & Blue Radial) 1 2 Bd [ < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 1415161718191A1B1C1D1E1F1F202122232425262728292A2A2B2C2D2E2F30313233343536363738 393A3B3C3D3E3F40414142434445464748494A4B4C4D4D4E4F50515253545556575858595A5B5C5D 5E5F60616263646465666768696A6B6C6D6E6F6F707172737475767778797A7B7B7C7D7E7F808182 83848586868788898A8B8C8D8E8F90919292939495969798999A9B9C9D9D9E9FA0A1A2A3A4A5A6A7 A8A9A9AAABACADAEAFB0B1B2B3B4B4B5B6B7B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C9CACBCB CCCDCECFD0D1D2D3D4D5D6D7D7D8D9DADBDCDDDEDFE0E1E2E2E3E4E5E6E7E8E9EAEBECEDEEEEEFF0 F1F2F3F4F5F6F7F8F9F9FAFBFCFDFEFF > < ABAAAAA9A8A8A7A6A5A5A4A3A3A2A1A1A09F9F9E9D9D9C9B9B9A9999989797969595949393929191 908F8F8E8D8D8C8B8B8A8989888787868585848383828181807F7F7E7D7D7C7B7B7A797978777776 7575747373727171706F6F6E6D6D6C6B6B6A6969686767666564646362626160605F5E5E5D5C5C5B 5A5A5958585756565554545352525150504F4E4E4D4C4C4B4A4A4948484746464544444342424140 403F3E3E3D3C3C3B3A3A3938383736363534343332323130302F2E2E2D2C2C2B2A2A292828272626 25242423222121201F1F1E1D1D1C1B1B1A1919181717161515141313121111100F0F0E0D0D0C0B0B 0A090908070706050504030302010100 > 0 1 %_Br [ 0 0.08 0.67 0 1 50 14 %_Bs 1 1 0 0 1 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Yellow & Orange Radial) (Yellow & Orange Radial) 1 2 Bd [ 0 < 0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122 232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748 494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F 707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C > < FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9 F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2 F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6 > 0 1 %_Br [ 0 0 1 0 1 52 19 %_Bs 0 0.55 0.9 0 1 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Yellow & Purple Radial) (Yellow & Purple Radial) 1 2 Bd [ < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 1415161718191A1B1C1D1E1F1F202122232425262728292A2A2B2C2D2E2F30313233343536363738 393A3B3C3D3E3F40414142434445464748494A4B4C4D4D4E4F50515253545556575858595A5B5C5D 5E5F60616263646465666768696A6B6C6D6E6F6F707172737475767778797A7B7B7C7D7E7F808182 83848586868788898A8B8C8D8E8F90919292939495969798999A9B9C9D9D9E9FA0A1A2A3A4A5A6A7 A8A9A9AAABACADAEAFB0B1B2B3B4B4B5B6B7B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C9CACBCB CCCDCECFD0D1D2D3D4D5D6D7D7D8D9DADBDCDDDEDFE0E1E2E2E3E4E5E6E7E8E9EAEBECEDEEEEEFF0 F1F2F3F4F5F6F7F8F9F9FAFBFCFDFEFF > < ABAAAAA9A8A8A7A6A5A5A4A3A3A2A1A1A09F9F9E9D9D9C9B9B9A9999989797969595949393929191 908F8F8E8D8D8C8B8B8A8989888787868585848383828181807F7F7E7D7D7C7B7B7A797978777776 7575747373727171706F6F6E6D6D6C6B6B6A6969686767666564646362626160605F5E5E5D5C5C5B 5A5A5958585756565554545352525150504F4E4E4D4C4C4B4A4A4948484746464544444342424140 403F3E3E3D3C3C3B3A3A3938383736363534343332323130302F2E2E2D2C2C2B2A2A292828272626 25242423222121201F1F1E1D1D1C1B1B1A1919181717161515141313121111100F0F0E0D0D0C0B0B 0A090908070706050504030302010100 > 0 1 %_Br [ 0 0.08 0.67 0 1 50 14 %_Bs 1 1 0 0 1 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Yellow, Violet, Orange, Blue) (Yellow, Violet, Orange, Blue) 0 4 Bd [ < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < A1A1A1A1A2A2A2A2A3A3A3A3A4A4A4A4A4A5A5A5A5A6A6A6A6A7A7A7A7A8A8A8A8A9A9A9A9AAAAAA AAAAABABABABACACACACADADADADAEAEAEAEAFAFAFAFB0B0B0B0B0B1B1B1B1B2B2B2B2B3B3B3B3B4 B4B4B4B5B5B5B5B6B6B6B6B6B7B7B7B7B8B8B8B8B9B9B9B9BABABABABBBBBBBBBCBCBCBCBCBDBDBD BDBEBEBEBEBFBFBFBFC0C0C0C0C1C1C1C1C2C2C2C2C2C3C3C3C3C4C4C4C4C5C5C5C5C6C6C6C6C7C7 C7C7C8C8C8C8C8C9C9C9C9CACACACACBCBCBCBCCCCCCCCCDCDCDCDCECECECECECFCFCFCFD0D0D0D0 D1D1D1D1D2D2D2D2D3D3D3D3D4D4D4D4D4D5D5D5D5D6D6D6D6D7D7D7D7D8D8D8D8D9D9D9D9DADADA DADADBDBDBDBDCDCDCDCDDDDDDDDDEDE > < F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CF CECDCCCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B4B3B2B1B0AFAEADACABAAA9 A8A7A6A5A4A3A2A1A09F9E9D9C9C9B9A999897969594939291908F8E8D8C8B8A8988878685848483 8281807F7E7D7C7B7A797877767574737271706F6E6D6C6C6B6A696867666564636261605F5E5D5C 5B5A59585756555454535251504F4E4D4C4B4A494847464544434241403F3E3D3C3C3B3A39383736 3534333231302F2E2D2C2B2A29282726252424232221201F1E1D1C1B1A191817161514131211100F 0E0D0C0C0B0A09080706050403020100 > 0 1 %_Br < 9C9B9A9A9998989796969595949393929191908F8F8E8E8D8C8C8B8A8A8989888787868585848383 82828180807F7E7E7D7C7C7B7B7A797978777776757574747372727170706F6E6E6D6D6C6B6B6A69 6968676766666564646362626161605F5F5E5D5D5C5B5B5A5A595858575656555454535352515150 4F4F4E4D4D4C4C4B4A4A4948484746464545444343424141403F3F3E3E3D3C3C3B3A3A3939383737 36353534333332323130302F2E2E2D2C2C2B2B2A292928272726252524242322222120201F1E1E1D 1D1C1B1B1A191918171716161514141312121111100F0F0E0D0D0C0B0B0A0A090808070606050404 030302010100 > < F5F4F4F4F3F3F3F2F2F2F1F1F1F0F0F0EFEFEFEEEEEEEDEDEDECECECEBEBEAEAEAE9E9E9E8E8E8E7 E7E7E6E6E6E5E5E5E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DFDFDEDEDEDDDDDDDCDCDCDBDBDBDADADA D9D9D9D8D8D8D7D7D7D6D6D6D5D5D5D4D4D3D3D3D2D2D2D1D1D1D0D0D0CFCFCFCECECECDCDCDCCCC CCCBCBCBCACACAC9C9C8C8C8C7C7C7C6C6C6C5C5C5C4C4C4C3C3C3C2C2C2C1C1C1C0C0C0BFBFBFBE BEBEBDBDBCBCBCBBBBBBBABABAB9B9B9B8B8B8B7B7B7B6B6B6B5B5B5B4B4B4B3B3B3B2B2B1B1B1B0 B0B0AFAFAFAEAEAEADADADACACACABABABAAAAAAA9A9A9A8A8A8A7A7A6A6A6A5A5A5A4A4A4A3A3A3 A2A2A2A1A1A1 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5 > < 03030303030202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020201010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000 > 1 %_Br < 0D0D0E0F0F10101111121313141415161617171819191A1A1B1C1C1D1D1E1E1F2020212122232324 2425262627272828292A2A2B2B2C2D2D2E2E2F30303131323333343435353637373838393A3A3B3B 3C3D3D3E3E3F3F404141424243444445454647474848494A4A4B4B4C4C4D4E4E4F4F505151525253 54545555565757585859595A5B5B5C5C5D5E5E5F5F60616162626363646565666667686869696A6B 6B6C6C6D6E6E6F6F70707172727373747575767677787879797A7B7B7C7C7D7D7E7F7F8080818282 8383848585868687878889898A8A8B8C8C8D8D8E8F8F90909192929393949495969697979899999A 9A9B9C > < 08090A0B0C0D0E0F0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E 2F303132333435363738393A3B3C3D3E3F40404142434445464748494A4B4C4D4E4F505152535455 565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717172737475767778797A7B7C 7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A2A3 A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACB CCCDCECFD0D1D2D3D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2 F3F4F5 > < F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CFCECDCCCB CAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0AFAEADACABAAA9A8A7A6A5A4A3 A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887868584838281807F7E7D7C7B 7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A59585756555453 5251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B 2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403 020100 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010202020202020202020202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020303 030303 > 1 %_Br [ 1 0.87 0 0 1 50 95 %_Bs 0 0.63 0.96 0 1 50 65 %_Bs 0.61 0.96 0 0.01 1 50 35 %_Bs 0.05 0.03 0.95 0 1 50 5 %_Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 1 1 1 1 k ([Registration]) Pc 1 1 1 1 k ([Registration]) Pc ([Registration]) Pc ([Registration]) Pc 0 0 0 0 k (C=0 M=0 Y=0 K=0) Pc 0 0 0 1 k (C=0 M=0 Y=0 K=100) Pc 0 0.45 0.6 0 k (C=0 M=45 Y=60 K=0) Pc 0 0.5 0.05 0 k (C=0 M=50 Y=5 K=0) Pc 0 0.9 1 0 k (C=0 M=90 Y=100 K=0) Pc 1 0.2 1 0 k (C=100 M=20 Y=100 K=0) Pc 1 0.4 0.15 0 k (C=100 M=40 Y=15 K=0) Pc 0.2 0 1 0 k (C=20 M=0 Y=100 K=0) Pc 0.25 1 0.25 0 k (C=25 M=100 Y=25 K=0) Pc 0.4 0.4 0.4 0 k (C=40 M=40 Y=40 K=0) Pc 0.4 0.7 1 0 k (C=40 M=70 Y=100 K=0) Pc 0.75 0.9 0 0 k (C=75 M=90 Y=0 K=0) Pc 1 0 0.55 0 (Aqua) 0 x (Aqua) Pc 1 0.5 0 0 (Blue) 0 x (Blue) Pc 0.5 0.4 0.3 0 (Blue Gray) 0 x (Blue Gray) Pc 0.8 0.05 0 0 (Blue Sky) 0 x (Blue Sky) Pc 0.5 0.85 1 0 (Brown) 0 x (Brown) Pc 1 0.9 0.1 0 (Dark Blue) 0 x (Dark Blue) Pc 1 0.55 1 0 (Forest Green) 0 x (Forest Green) Pc 0.05 0.2 0.95 0 (Gold) 0 x (Gold) Pc 0.75 0.05 1 0 (Grass Green) 0 x (Grass Green) Pc 0 0.45 1 0 (Orange) 0 x (Orange) Pc 0.15 1 1 0 (Red) 0 x (Red) Pc 0.45 0.9 0 0 (Violet) 0 x (Violet) Pc Bb 2 (Black, White) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Black, White) Pc Bb 2 (Chrome) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Chrome) Pc Bb 2 (Green, Blue) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Green, Blue) Pc Bb 2 (Orange, Green, Violet) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Orange, Green, Violet) Pc Bb 2 (Pink, Yellow, Green ) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Pink, Yellow, Green ) Pc Bb 2 (Purple, Red, Yellow) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Purple, Red, Yellow) Pc Bb 2 (Rainbow) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Rainbow) Pc Bb 2 (Steel Bar) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Steel Bar) Pc Bb 0 0 0 0 Bh 2 (White & Red Radial) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (White & Red Radial) Pc Bb 0 0 0 0 Bh 2 (Yellow & Orange Radial) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Yellow & Orange Radial) Pc Bb 0 0 0 0 Bh 2 (Yellow & Purple Radial) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Yellow & Purple Radial) Pc Bb 2 (Yellow, Violet, Orange, Blue) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Yellow, Violet, Orange, Blue) Pc (Arrow1.2.out/in) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Arrow1.2.out/in) Pc (Arrow1.2.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Arrow1.2.side) Pc (Bricks) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Bricks) Pc (Checks) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Checks) Pc (Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Confetti) Pc (DblLine1.2.inner) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (DblLine1.2.inner) Pc (DblLine1.2.outer) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (DblLine1.2.outer) Pc (DblLine1.2.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (DblLine1.2.side) Pc (Diamonds) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Diamonds) Pc (Hexagon) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Hexagon) Pc (Laurel.inner) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Laurel.inner) Pc (Laurel.outer) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Laurel.outer) Pc (Laurel.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Laurel.side) Pc (Leaves-fall) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Leaves-fall) Pc (Polka dots) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Polka dots) Pc (Random circles) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Random circles) Pc (Rope.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Rope.side) Pc (Scales) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Scales) Pc (SolidStar.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (SolidStar.side) Pc (Stars) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Stars) Pc (Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Stripes) Pc (TriBevel.outer) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (TriBevel.outer) Pc (TriBevel.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (TriBevel.side) Pc (Waves-scroll) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Waves-scroll) Pc 0 g (K=100) Pc 1 g (K=0) Pc 0 g (K=100) Pc 0.75 g (K=25) Pc 0.5 g (K=50) Pc 0.25 g (K=75) Pc 0 g (K=100) Pc Bb 2 (Black & White) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Black & White) Pc 0.25 0 0 0 k (C=25 M=0 Y=0 K=0) Pc 0.5 0 0 0 k (C=50 M=0 Y=0 K=0) Pc 0.75 0 0 0 k (C=75 M=0 Y=0 K=0) Pc 1 0 0 0 k (C=100 M=0 Y=0 K=0) Pc 0.25 0.25 0 0 k (C=25 M=25 Y=0 K=0) Pc 0.5 0.5 0 0 k (C=50 M=50 Y=0 K=0) Pc 0.75 0.75 0 0 k (C=75 M=75 Y=0 K=0) Pc 1 1 0 0 k (C=100 M=100 Y=0 K=0) Pc Bb 2 (Red & Yellow) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Red & Yellow) Pc 0 0.25 0 0 k (C=0 M=25 Y=0 K=0) Pc 0 0.5 0 0 k (C=0 M=50 Y=0 K=0) Pc 0 0.75 0 0 k (C=0 M=75 Y=0 K=0) Pc 0 1 0 0 k (C=0 M=100 Y=0 K=0) Pc 0 0.25 0.25 0 k (C=0 M=25 Y=25 K=0) Pc 0 0.5 0.5 0 k (C=0 M=50 Y=50 K=0) Pc 0 0.75 0.75 0 k (C=0 M=75 Y=75 K=0) Pc 0 1 1 0 k (C=0 M=100 Y=100 K=0) Pc Bb 0 0 0 0 Bh 2 (Yellow & Blue Radial) -7770.5 8488.5 0 0 1 0 0 1 0 0 Bg 0 BB (Yellow & Blue Radial) Pc 0 0 0.25 0 k (C=0 M=0 Y=25 K=0) Pc 0 0 0.5 0 k (C=0 M=0 Y=50 K=0) Pc 0 0 0.75 0 k (C=0 M=0 Y=75 K=0) Pc 0 0 1 0 k (C=0 M=0 Y=100 K=0) Pc 0.25 0 0.25 0 k (C=25 M=0 Y=25 K=0) Pc 0.5 0 0.5 0 k (C=50 M=0 Y=50 K=0) Pc 0.75 0 0.75 0 k (C=75 M=0 Y=75 K=0) Pc 1 0 1 0 k (C=100 M=0 Y=100 K=0) Pc (Yellow Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Yellow Stripe) Pc 0.25 0.125 0 0 k (C=25 M=13 Y=0 K=0) Pc 0.5 0.25 0 0 k (C=50 M=25 Y=0 K=0) Pc 0.75 0.375 0 0 k (C=75 M=38 Y=0 K=0) Pc 1 0.5 0 0 k (C=100 M=50 Y=0 K=0) Pc 0.125 0.25 0 0 k (C=13 M=25 Y=0 K=0) Pc 0.25 0.5 0 0 k (C=25 M=50 Y=0 K=0) Pc 0.375 0.75 0 0 k (C=38 M=75 Y=0 K=0) Pc 0.5 1 0 0 k (C=50 M=100 Y=0 K=0) Pc 0 0.25 0.125 0 k (C=0 M=25 Y=13 K=0) Pc 0 0.5 0.25 0 k (C=0 M=50 Y=25 K=0) Pc 0 0.75 0.375 0 k (C=0 M=75 Y=38 K=0) Pc 0 1 0.5 0 k (C=0 M=100 Y=50 K=0) Pc 0 0.125 0.25 0 k (C=0 M=13 Y=25 K=0) Pc 0 0.25 0.5 0 k (C=0 M=25 Y=50 K=0) Pc 0 0.375 0.75 0 k (C=0 M=38 Y=75 K=0) Pc 0 0.5 1 0 k (C=0 M=50 Y=100 K=0) Pc 0.125 0 0.25 0 k (C=13 M=0 Y=25 K=0) Pc 0.25 0 0.5 0 k (C=25 M=0 Y=50 K=0) Pc 0.375 0 0.75 0 k (C=38 M=0 Y=75 K=0) Pc 0.5 0 1 0 k (C=50 M=0 Y=100 K=0) Pc 0.25 0 0.125 0 k (C=25 M=0 Y=13 K=0) Pc 0.5 0 0.25 0 k (C=50 M=0 Y=25 K=0) Pc 0.75 0 0.375 0 k (C=75 M=0 Y=38 K=0) Pc 1 0 0.5 0 k (C=100 M=0 Y=50 K=0) Pc 0.25 0.125 0.125 0 k (C=25 M=13 Y=13 K=0) Pc 0.5 0.25 0.25 0 k (C=50 M=25 Y=25 K=0) Pc 0.75 0.375 0.375 0 k (C=75 M=38 Y=38 K=0) Pc 1 0.5 0.5 0 k (C=100 M=50 Y=50 K=0) Pc 0.25 0.25 0.125 0 k (C=25 M=25 Y=13 K=0) Pc 0.5 0.5 0.25 0 k (C=50 M=50 Y=25 K=0) Pc 0.75 0.75 0.375 0 k (C=75 M=75 Y=38 K=0) Pc 1 1 0.5 0 k (C=100 M=100 Y=50 K=0) Pc 0.125 0.25 0.125 0 k (C=13 M=25 Y=13 K=0) Pc 0.25 0.5 0.25 0 k (C=25 M=50 Y=25 K=0) Pc 0.375 0.75 0.375 0 k (C=38 M=75 Y=38 K=0) Pc 0.5 1 0.5 0 k (C=50 M=100 Y=50 K=0) Pc 0.125 0.25 0.25 0 k (C=13 M=25 Y=25 K=0) Pc 0.25 0.5 0.5 0 k (C=25 M=50 Y=50 K=0) Pc 0.375 0.75 0.75 0 k (C=38 M=75 Y=75 K=0) Pc 0.5 1 1 0 k (C=50 M=100 Y=100 K=0) Pc 0.125 0.125 0.25 0 k (C=13 M=13 Y=25 K=0) Pc 0.25 0.25 0.5 0 k (C=25 M=25 Y=50 K=0) Pc 0.375 0.375 0.75 0 k (C=38 M=38 Y=75 K=0) Pc 0.5 0.5 1 0 k (C=50 M=50 Y=100 K=0) Pc 0.25 0.125 0.25 0 k (C=25 M=13 Y=25 K=0) Pc 0.5 0.25 0.5 0 k (C=50 M=25 Y=50 K=0) Pc 0.75 0.375 0.75 0 k (C=75 M=38 Y=75 K=0) Pc 1 0.5 1 0 k (C=100 M=50 Y=100 K=0) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 0 79 128 255 Lb (Layer 1) Ln 0 A u 0 O 0 g 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR 155.605 251.6963 m 190.4409 251.6963 l 190.4409 410.3584 l 155.605 410.3584 l 155.605 251.6963 l f -25.8599 410.3584 m -25.8599 251.6963 l 2.9585 251.6963 l 2.9585 353.6709 l 78.9663 251.6963 l 112.2183 251.6963 l 112.2183 410.3584 l 78.9663 410.3584 l 78.9663 308.3838 l 2.9585 410.3584 l -25.8599 410.3584 l f 212.9272 495.2334 m 212.9272 166.8232 l 405.1597 240.6104 l 405.1597 421.7607 l 212.9272 495.2334 l f 0 1 1 0 k 231.9292 410.3584 m 231.9292 251.6963 l 263.2808 251.6963 l 263.2808 319.7842 l 336.1206 251.6963 l 382.6753 251.6963 l 299.7007 331.1865 l 382.6753 410.3584 l 336.1206 410.3584 l 263.2808 336.8857 l 263.2808 410.3584 l 231.9292 410.3584 l f 0 g 647.1133 251.6963 m 679.4141 251.6963 l 679.4141 410.3584 l 647.1133 410.3584 l 647.1133 251.6963 l f 647.1133 376.4717 m 738.6367 376.4717 l 738.6367 410.3584 l 647.1133 410.3584 l 647.1133 376.4717 l f 647.1133 251.6963 m 738.6367 251.6963 l 738.6367 280.1982 l 647.1133 280.1982 l 647.1133 251.6963 l f 647.1133 314.085 m 727.8711 314.085 l 727.8711 347.9697 l 647.1133 347.9697 l 647.1133 314.085 l f 781.3906 251.6963 m 812.7422 251.6963 l 812.7422 410.3584 l 781.3906 410.3584 l 781.3906 251.6963 l f 781.3906 376.4717 m 869.75 376.4717 l 869.75 410.3584 l 781.3906 410.3584 l 781.3906 376.4717 l f 781.3906 314.085 m 859.6133 314.085 l 859.6133 347.9697 l 781.3906 347.9697 l 781.3906 314.085 l f 622.4102 495.2334 m 622.4102 166.8232 l 431.1289 240.6104 l 431.1289 421.7607 l 622.4102 495.2334 l f 621.4609 527.2178 m 621.4609 515.8174 l 418.7769 436.6436 l 210.7104 515.8174 l 210.7104 527.2178 l 418.7769 447.7295 l 621.4609 527.2178 l f 621.4609 132.1709 m 621.4609 143.5713 l 418.7769 222.7451 l 210.7104 143.5713 l 210.7104 132.1709 l 418.7769 211.6592 l 621.4609 132.1709 l f 0 1 1 0 k 456.7813 410.3584 m 456.7813 251.6963 l 489.3984 251.6963 l 489.3984 314.085 l 564.1406 314.085 l 564.1406 251.6963 l 596.7578 251.6963 l 596.7578 410.3584 l 564.1406 410.3584 l 564.1406 347.9697 l 489.3984 347.9697 l 489.3984 410.3584 l 461.5313 410.3584 l 456.7813 410.3584 l f U LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF lcmaps-1.6.6/doc/evaluationmanager/figures/example_real.eps0000644001726200004540000001611012471136645021023 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: example_real.eps %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue May 27 14:40:31 2003 %%For: venekamp@polymorf (Gerben Venekamp,H131,x2059) %%BoundingBox: 0 0 203 117 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 117 moveto 0 0 lineto 203 0 lineto 203 117 lineto closepath clip newpath -322.6 527.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06299 0.06299 sc % % Fig objects follow % /Helvetica ff 210.00 scf sf 6210 6975 m gs 1 -1 sc (local) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica ff 210.00 scf sf 6210 7230 m gs 1 -1 sc (account) dup sw pop 2 div neg 0 rm col0 sh gr 7.500 slw % Ellipse n 6210 7064 540 360 0 360 DrawEllipse gs col0 s gr /Helvetica ff 210.00 scf sf 6210 7920 m gs 1 -1 sc (pool) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica ff 210.00 scf sf 6210 8175 m gs 1 -1 sc (account) dup sw pop 2 div neg 0 rm col0 sh gr % Ellipse n 6210 8011 540 360 0 360 DrawEllipse gs col0 s gr % Ellipse n 7740 8010 540 360 0 360 DrawEllipse gs col0 s gr /Helvetica ff 210.00 scf sf 7740 8100 m gs 1 -1 sc (voms) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica ff 210.00 scf sf 7740 7020 m gs 1 -1 sc (posix) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica ff 210.00 scf sf 7740 7275 m gs 1 -1 sc (enf) dup sw pop 2 div neg 0 rm col0 sh gr % Ellipse n 5175 6750 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 7740 7065 585 405 0 360 DrawEllipse gs col0 s gr % Ellipse n 7740 7065 540 360 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj gs clippath 5789 7803 m 5839 7771 l 5756 7644 l 5797 7761 l 5706 7676 l cp eoclip n 5772 7274 m 5771 7276 l 5769 7280 l 5766 7286 l 5762 7296 l 5757 7308 l 5751 7323 l 5744 7340 l 5738 7358 l 5732 7377 l 5727 7398 l 5722 7420 l 5718 7445 l 5716 7472 l 5715 7501 l 5716 7532 l 5719 7563 l 5724 7591 l 5730 7617 l 5737 7641 l 5745 7662 l 5753 7681 l 5761 7699 l 5770 7716 l 5778 7731 l 5786 7744 l 5793 7755 l 5806 7775 l gs col0 s gr gr % arrowhead 0 slj n 5706 7676 m 5797 7761 l 5756 7644 l 5706 7676 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj gs clippath 7331 7816 m 7349 7758 l 7205 7712 l 7311 7778 l 7187 7769 l cp eoclip n 6642 7806 m 6644 7805 l 6648 7803 l 6655 7799 l 6666 7794 l 6679 7788 l 6695 7780 l 6714 7772 l 6734 7764 l 6757 7756 l 6781 7749 l 6808 7742 l 6839 7736 l 6873 7731 l 6911 7726 l 6953 7724 l 6991 7724 l 7028 7725 l 7062 7727 l 7094 7730 l 7124 7734 l 7152 7739 l 7178 7744 l 7203 7749 l 7227 7755 l 7249 7761 l 7269 7766 l 7287 7771 l 7301 7775 l 7326 7783 l gs col0 s gr gr % arrowhead 0 slj n 7187 7769 m 7311 7778 l 7205 7712 l 7187 7769 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj gs clippath 8235 7289 m 8179 7312 l 8236 7452 l 8219 7330 l 8292 7429 l cp eoclip n 8195 7806 m 8197 7804 l 8200 7801 l 8205 7795 l 8213 7787 l 8221 7776 l 8231 7764 l 8241 7749 l 8250 7733 l 8259 7714 l 8267 7693 l 8273 7667 l 8278 7638 l 8281 7604 l 8281 7573 l 8279 7543 l 8275 7515 l 8271 7488 l 8265 7463 l 8259 7439 l 8252 7417 l 8244 7395 l 8237 7375 l 8230 7357 l 8224 7342 l 8213 7315 l gs col0 s gr gr % arrowhead 0 slj n 8292 7429 m 8219 7330 l 8236 7452 l 8292 7429 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj gs clippath 7299 6828 m 7323 6773 l 7185 6711 l 7283 6788 l 7161 6766 l cp eoclip n 6578 6809 m 6579 6808 l 6583 6806 l 6588 6802 l 6596 6796 l 6607 6788 l 6621 6779 l 6636 6769 l 6654 6759 l 6673 6749 l 6693 6738 l 6715 6729 l 6740 6720 l 6767 6711 l 6796 6704 l 6829 6698 l 6866 6694 l 6905 6692 l 6941 6692 l 6976 6695 l 7009 6698 l 7040 6703 l 7069 6709 l 7097 6716 l 7123 6724 l 7147 6732 l 7171 6740 l 7194 6749 l 7215 6757 l 7234 6766 l 7251 6773 l 7266 6780 l 7278 6786 l 7298 6795 l gs col0 s gr gr % arrowhead 0 slj n 7161 6766 m 7283 6788 l 7185 6711 l 7161 6766 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj gs clippath 5937 6783 m 5968 6731 l 5838 6654 l 5926 6742 l 5807 6705 l cp eoclip n 5175 6750 m 5177 6749 l 5180 6746 l 5187 6741 l 5196 6734 l 5208 6725 l 5224 6715 l 5241 6703 l 5261 6691 l 5282 6679 l 5305 6667 l 5330 6655 l 5357 6645 l 5386 6635 l 5418 6627 l 5454 6621 l 5493 6617 l 5535 6615 l 5573 6616 l 5610 6620 l 5645 6625 l 5677 6632 l 5707 6640 l 5736 6649 l 5762 6659 l 5788 6669 l 5812 6680 l 5835 6691 l 5856 6702 l 5876 6713 l 5893 6722 l 5908 6731 l 5920 6738 l 5940 6750 l gs col0 s gr gr % arrowhead 0 slj n 5807 6705 m 5926 6742 l 5838 6654 l 5807 6705 l cp gs 0.00 setgray ef gr col0 s /Helvetica-Bold ff 180.00 scf sf 6840 6660 m gs 1 -1 sc (T) col0 sh gr /Helvetica-Bold ff 180.00 scf sf 5535 7560 m gs 1 -1 sc (F) col0 sh gr $F2psEnd rs lcmaps-1.6.6/doc/Makefile.am0000644001726200004540000000373512471136645012553 00000000000000# Copyright (c) Members of the EGEE Collaboration. 2004. # See http://eu-egee.org/partners/ for details on the copyright holders. # For license conditions see the license file or # http://eu-egee.org/license.html # # Authors: Martijn Steenbakkers # # $Id: Makefile.am 17211 2013-12-06 13:26:28Z msalle $ # Define the targets to be built here mandir = $(datadir)/man dist_man_MANS = man/lcmaps.3 PACKAGEFILES = ../LICENSE ../AUTHORS ../README ../README.NO_LDAP ../INSTALL ./INSTALL_WITH_WORKSPACE_SERVICE userdocdir = $(prefix)/share/doc/@PACKAGE@-@VERSION@ PDFLATEX = PATH=/usr/local/bin:$$PATH pdflatex EXAMPLES = $(PLUGINEXAMPLES) $(DBEXAMPLES) PDFS = lcmaps.pdf EXTRA_DIST = \ $(EXAMPLES) $(EPSFIGURES) $(SCRIPTFILES) $(PACKAGEFILES) \ CHANGES_1.2.x-1.3.x \ datagrid.eps \ gridmapfile.ex \ groupmapfile.ex \ lcmaps.db.ex \ lcmaps_gen_poolacc_ldif \ lcmaps_gen_poolgroup_ldif \ lcmaps_include.tex.in \ lcmaps_make_poolacc_dir \ lcmaps_setup_pool \ lcmaps.tex \ evaluationmanager/Makefile.am \ evaluationmanager/Makefile.in \ evaluationmanager/pdl_requirements.bib \ evaluationmanager/pdl_requirements.tex \ evaluationmanager/figures/datagrid.eps \ evaluationmanager/figures/example1.eps \ evaluationmanager/figures/example1.fig \ evaluationmanager/figures/example2.eps \ evaluationmanager/figures/example2.fig \ evaluationmanager/figures/example3.eps \ evaluationmanager/figures/example3.fig \ evaluationmanager/figures/example4.eps \ evaluationmanager/figures/example4.fig \ evaluationmanager/figures/example_real.eps \ evaluationmanager/figures/example_real.fig \ evaluationmanager/figures/nikhef.eps # The automake manual says: 'if configure built it, then distclean should delete it.' # This file was generated by configure, but is it used? DISTCLEANFILES = evaluationmanager/Makefile TEXS = lcmaps.tex $(PDFS): $(TEXS) $(PDFLATEX) $(TEXS) pdf: $(PDFS) doc: pdf clean:; rm -f $(PDFS) lcmaps-1.6.6/doc/INSTALL_WITH_WORKSPACE_SERVICE0000644001726200004540000004646112471136645015204 00000000000000The combined installation of (glite-)gatekeeper+LCAS+LCMAPS and the workspace service _____________________________________________________________________________________ These instructions are due to change. The end result of this installation on the CE will be: 1. The workspace management system, which provides a management interface to the local user accounts on the CE 2. The (gsi-free) LCMAPS flavour that will be used as the backend to the workspace service. 3. The (glite-)gatekeeper. This is essentially the gt2.4 gatekeeper, modified to call out to LCAS and LCMAPS. 4. LCAS and gsi-flavour of LCMAPS that are used by the gatekeeper. Prerequisites: 0) Start from a clean RHE3 (or binary compatible, e.g. SL3, SLC3, CentOS) machine. 1) Install the host certificate and key in /etc/grid-security 2) Install the CA certificates in /etc/grid-security/certificates The CA rpms can be found in http://www.eugridpma.org/distribution/current/accredited/RPMS/ (wget --no-directories -r -l1 --no-parent -A "noarch.rpm" http://www.eugridpma.org/distribution/current/accredited/RPMS/ wget --no-directories -r -l1 --no-parent -A "noarch.rpm" http://www.eugridpma.org/distribution/current/) 3) Update the CRLs using, e.g. the edg-fetch-crl script Look in http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/ for the relevant rpms. I. Installation and configuration of LCMAPS (both flavours) ____________________________________________________________ 1) Install globus 2.4.3 from vdt, available from: http://egee-jra1-integration.web.cern.ch/egee-jra1-integration/repository/globus/2.4.3-VDT-1.2.0/rhel30_gcc32/RPMS/ Needed package for LCMAPS: vdt_globus_essentials-VDT1.2.0rh9-1.i386.rpm 2) Set up the gridmapdir in /etc/grid-security. You can use this script (on RedHat), but please have a look at it and edit it first!: http://www-unix.mcs.anl.gov/~tfreeman/local/pooled/admin/addpoolusers.sh In order to use it you have to do the following first: [root@kvasir root]# mkdir -p /etc/grid-security/gridmapdir [root@kvasir root]# mkdir /home/gpool NOTE: In a later stage, we make the gridmapdir directory owned by the globus user (now this user does not exist yet) 3) Install the voms C-api library. Unfortunately this is not packaged separatately from the rest of the voms-core package, so install everything from: http://glite.web.cern.ch/glite/packages/N20041215/bin/rhel30/i386/RPMS/glite-security-voms-1.2.26-22_N20041215.i386.rpm The certificates of the voms servers you trust should be stored in /etc/grid-security/vomsdir. 4) Install the lcmaps framework and plugins from org.glite. You need version 1.2.0 or higher, so you could take Nightly Build N20041215: http://glite.web.cern.ch/glite/packages/N20041215/bin/rhel30/i386/RPMS/ You need the following packages: glite-security-lcmaps-1.2.0-1_N20041215.i386.rpm glite-security-lcmaps-interface-1.2.0-1_N20041215.i386.rpm glite-security-lcmaps-plugins-basic-1.2.0-1_N20041215.i386.rpm glite-security-lcmaps-plugins-voms-1.2.0-1_N20041215.i386.rpm Of course "N20041215" should be replaced by the relevant nightly-build/integration-build number. 5) Unfortunately, the gsi-free version of LCMAPS that is needed for the workspace service is not packaged yet. It has to be built by hand from CVS, for which you can run this script: root@kvasir root]# cat build_lcmaps_gsifree.sh #!/bin/sh # mkdir -p /tmp/build_lcmaps_gsifree/EGEE cd /tmp/build_lcmaps_gsifree/EGEE export CVSROOT=":pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw" cvs co -r glite_branch_1_0_0_RC1 org.glite cvs co -r glite-security_branch_1_0_0_RC1 org.glite.security cvs co -r glite-security-lcmaps_branch_1_2_0_RC1 org.glite.security.lcmaps cvs co -r glite-security-lcmaps-interface_branch_1_2_0_RC1 org.glite.security.lcmaps-interface cvs co -r glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1 org.glite.security.lcmaps-plugins-basic cvs co -r glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1 org.glite.security.lcmaps-plugins-voms for i in lcmaps lcmaps-interface lcmaps-plugins-basic lcmaps-plugins-voms ; do \ cp org.glite.security/project/lcmaps.m4 org.glite.security.$i/project; \ cp org.glite/project/*m4 org.glite.security.$i/project; \ done mkdir stage for i in lcmaps lcmaps-interface lcmaps-plugins-basic lcmaps-plugins-voms ; do \ (cd org.glite.security.$i; \ make distclean; \ ./bootstrap; \ ./configure --prefix=/opt/glite --without-gsi-mode; \ make install); \ done [root@kvasir root]# This will checkout the lcmaps modules from the gLite RC1 (Release Candidate1) branch, build and install in /opt/glite 6) Configure the lcmaps.db files: We need to configure two lcmaps.db files. One for the lcmaps instance used by the gatekeeper and one for the instance used by the workspace system. For the gatekeeper: ------------------------------------------------------------------ root@kvasir root]# cat /opt/glite/etc/lcmaps/lcmaps.db # LCMAPS policy file/plugin definition # # default path path = /opt/glite/lib/modules # Plugin definitions: good = "lcmaps_dummy_good.mod" bad = "lcmaps_dummy_bad.mod" localaccount = "lcmaps_localaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" vomslocalgroup = "lcmaps_voms_localgroup.mod" "-groupmapfile /etc/grid-security/groupmapfile" "-mapmin 0" vomspoolaccount = "lcmaps_voms_poolaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" "-gridmapdir /etc/grid-security/gridmapdir" "-do_not_use_secondary_gids" posix_enf = "lcmaps_posix_enf.mod" "-maxuid 1" "-maxpgid 1" "-maxsgid 32" # Policies: voms: localaccount -> posix_enf | vomslocalgroup vomslocalgroup -> vomspoolaccount vomspoolaccount -> posix_enf [root@kvasir root]# ------------------------------------------------------------------ For the Workspace service: ------------------------------------------------------------------ [root@kvasir root]# cat /opt/glite/etc/lcmaps/lcmaps.db.without_gsi # LCMAPS policy file/plugin definition # # default path path = /opt/glite/lib/modules # Plugin definitions: good = "lcmaps_dummy_good.mod" bad = "lcmaps_dummy_bad.mod" localaccount = "lcmaps_localaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" vomslocalgroup = "lcmaps_voms_localgroup_without_gsi.mod" "-groupmapfile /etc/grid-security/groupmapfile" "-mapmin 0" vomspoolaccount = "lcmaps_voms_poolaccount_without_gsi.mod" "-gridmapfile /etc/grid-security/grid-mapfile" "-gridmapdir /etc/grid-security/gridmapdir" "-do_not_use_secondary_gids" # Policies: das_voms: localaccount -> good | vomslocalgroup vomslocalgroup -> vomspoolaccount [root@kvasir root]# ------------------------------------------------------------------ We don't need two lcmaps.db files anymore as soon as I have made some minor modificiations to the way the gatekeeper calls out to LCMAPS. More complex configurations are possible that enable the use of poolgroups (in a similar fassion to poolaccounts), AFS token acquisition and adding users to unix groups in a distributed authorization information db, such as ldap (an distributed alternative to /etc/passwd and /etc/group). Configuration examples will apear at: http://www.nikhef.nl/grid/lcaslcmaps/ 6) Configure the grid-mapfile. To the grid-mapfile (/etc/grid-security/grid-mapfile) VO-triplet lines have to be added for the supported VOMS VOs. To support the "EGEE" VO add the following line (FQAN format): "/EGEE/*" .gpool As soon as finer grained VOMS attributes are used, these can be used for finer grained mapping as well. 7) Configure the groupmapfile To the groupmapfile (/etc/grid-security/groupmapfile) lines have to be added for the supported VOMS VOs. To support the "EGEE" VO add the following line (FQAN format): "/EGEE/*" egee This means all users with an attribute "/EGEE/*" will be mapped to the group name "egee". This group has to exist before LCMAPS is run, so do a [root@kvasir root]# groupadd egee As in the case of the grid-mapfile: As soon as finer grained VOMS attributes are used, these can be used for finer grained mapping as well. ---> IMPORTANT <---: The format of the VO triplets in the groupmapfile and grid-mapfile has changed from version 1.2.x for LCMAPS. From version 1.2 and higher standard FQANs are used instead of our own format, as illustrated by this example: Old: "VO=Atlas/GROUP=/Atlas/MonteCarlo/ROLE=admin/CAPABILITY=none" New: "/Atlas/MonteCarlo/Role=admin/Capability=none" End of LCMAPS installation and configuration. II. Installation and configuration of LCAS __________________________________________ 1) Install the globus and VOMS libraries as described for the LCMAPS installation 2) Install gridsite for the GACL libraries needed by the LCAS VOMS plugin. Take for example: http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gridsite-1.1.3-1.i386.rpm 3) Install the lcas framework and plugins from org.glite. You need version 1.2.2 or higher (not yet available from a nightly build) You need the following packages: glite-security-lcas-1.2.2-1_.i386.rpm glite-security-lcas-interface-1.2.2-1_.i386.rpm glite-security-lcas-plugins-basic-1.2.2-1_.i386.rpm glite-security-lcas-plugins-voms-1.2.2-1_.i386.rpm The tag should be replaced by the relevant nightly-build/integration-build number. 4) Configuration of lcas.db In /opt/glite/etc/lcas/lcas.db the plug-ins are listed that lcas should call. It could look like: (version A) [root@kvasir glite]# cat /opt/glite/etc/lcas/lcas.db # LCAS database/plugin list # # Format of each line: # pluginname="", pluginargs="" # # pluginname="lcas_userban.mod",pluginargs="ban_users.db" pluginname="lcas_voms.mod",pluginargs="-vomsdir /etc/grid-security/vomsdir -certdir /etc/grid-security/certificates -authfile /etc/grid-security/grid-mapfile -authformat simple" [root@kvasir glite]# or: (version B) [root@kvasir glite]# cat /opt/glite/etc/lcas/lcas.db # LCAS database/plugin list # # Format of each line: # pluginname="", pluginargs="" # # pluginname="lcas_userban.mod",pluginargs="ban_users.db" pluginname="lcas_voms.mod",pluginargs="-vomsdir /etc/grid-security/vomsdir -certdir /etc/grid-security/certificates -authfile /opt/glite/etc/lcas/lcas_voms.gacl -authformat gacl -use_user_dn -gacl_use_voms_dn yes" [root@kvasir glite]# NOTE: Each plug-in definition can only occupy one line! 5) Configuration of ban_users.db The file /opt/glite/etc/lcas/ban_users.db contains a list of the DNs of those users that the sysadmin wants to ban from his fabric. If the plugin is used in lcas.db this file has to exist: [root@kvasir glite]# cat /opt/glite/etc/lcas/ban_users.db # # This file contains the globus user ids that are BANNED from this fabric # "/O=GetRID/O=abusers/CN=Endless Job" [root@kvasir glite]# 6) Configuration of grid-mapfile or lcas_voms.gacl - If site access is controlled by the grid-mapfile (lcas.db version A) nothing has to be done, since the grid-mapfile has aready been configured for LCMAPS. - If site access is controlled by a Grid ACL (GACL) the GACL file /opt/glite/etc/lcas/lcas_voms.gacl has to be created: [root@kvasir glite]# cat /opt/glite/etc/lcas/lcas_voms.gacl /O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kuiken.nikhef.nl EGEE /EGEE /O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kuiken.nikhef.nl egtest /egtest [root@kvasir glite]# End of LCAS installation and configuration III.Installation and configuration of the gatekeeper ____________________________________________________ 1) Install globus 2.4.3 from vdt, available from: http://egee-jra1-integration.web.cern.ch/egee-jra1-integration/repository/globus/2.4.3-VDT-1.2.0/rhel30_gcc32/RPMS/ Needed packages for the glite- and globus-gatekeeper: vdt_globus_essentials-VDT1.2.0rh9-1.i386.rpm vdt_globus_rm_essentials-VDT1.2.0rh9-1.i386.rpm vdt_globus_rm_server-VDT1.2.0rh9-1.i386.rpm vdt_globus_rm_client-VDT1.2.0rh9-1.i386.rpm (if client is needed) 2) Create the file /opt/glite/etc/ root@kvasir glite]# cat /opt/glite/etc/gatekeeper.conf -x509_cert_dir /etc/grid-security/certificates -x509_user_cert /etc/grid-security/hostcert.pem -x509_user_key /etc/grid-security/hostkey.pem -gridmap "/etc/grid-security/grid-mapfile" -home /opt/globus -e libexec -port 2119 -grid_services /opt/globus/etc/grid-services -logfile "/var/log/globus-gatekeeper.log" -acctfile /var/log/accountingtest.log -lcas_etc_dir "/opt/glite/etc/lcas/" -lcas_debug_level 0 -lcas_db_file lcas.db -lcmaps_etc_dir "/opt/glite/etc/lcmaps/" -lcmaps_debug_level 0 -lcmaps_db_file lcmaps.db root@kvasir glite]# 3) For the rest of the gatekeeper and jobmanager configuration procedure, please follow: http://egee-jra1-wm.mi.infn.it/egee-jra1-wm/lsfnode_install.shtml 4) Finally start the gatekeeper with: [root@kvasir glite]# /opt/glite/sbin/glite-gatekeeper -conf /opt/glite/etc/gatekeeper.conf.lcas GRAM contact: kvasir.nikhef.nl:2119:/O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kvasir.nikhef.nl 5) To create a VOMS proxy first on the client create the file /opt/glite/etc/vomses/EGEE-kuiken.nikhef.nl, such that: [martijn@kvasir martijn]$ cat /opt/glite/etc/vomses/EGEE-kuiken.nikhef.nl "EGEE" "kuiken.nikhef.nl" "15001" "/O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kuiken.nikhef.nl" "EGEE" "1" Furthermore you need to have the hostcert (.pem format) of this VO in /etc/grid-security/vomsdir. [root@kvasir glite]# cat /etc/grid-security/vomsdir/kuiken.nikhef.nl.pem -----BEGIN CERTIFICATE----- MIIE+jCCA+KgAwIBAgICAjwwDQYJKoZIhvcNAQEFBQAwUjELMAkGA1UEBhMCTkwx DzANBgNVBAoTBk5JS0hFRjEyMDAGA1UEAxMpTklLSEVGIG1lZGl1bS1zZWN1cml0 eSBjZXJ0aWZpY2F0aW9uIGF1dGgwHhcNMDQxMjE1MDkwODQyWhcNMDUxMjE1MDkw ODQyWjBTMRIwEAYDVQQKEwlkdXRjaGdyaWQxDjAMBgNVBAoTBWhvc3RzMRIwEAYD VQQLEwluaWtoZWYubmwxGTAXBgNVBAMTEGt1aWtlbi5uaWtoZWYubmwwgZ8wDQYJ KoZIhvcNAQEBBQADgY0AMIGJAoGBANE7qRVIBoazrFoVBeVnSZVz3Wf9m7wdoi97 YvbR4bPYQnrpYgdFNSSr5L5KMh0j3TQOKs3H5sUxtwMcAMYY9MTzKie94gm07ESp RPuR68Jg7nCRjKlqmww31wG4LSlFtORlNIltiqFkffsD64wti1jvcfKfabx3UNjA R1h4k+G7AgMBAAGjggJbMIICVzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DA+BgNV HR8ENzA1MDOgMaAvhi1odHRwOi8vY2VydGlmaWNhdGUubmlraGVmLm5sL21lZGl1 bS9jYWNybC5wZW0wGgYDVR0gBBMwETAPBg0rBgEEAdFCBAICAQIBMHoGA1UdIwRz MHGAFFsFOpnG1SK9/ZSA/BGo0PFx1kukoVakVDBSMQswCQYDVQQGEwJOTDEPMA0G A1UEChMGTklLSEVGMTIwMAYDVQQDEylOSUtIRUYgbWVkaXVtLXNlY3VyaXR5IGNl cnRpZmljYXRpb24gYXV0aIIBADAdBgNVHQ4EFgQURRT6uiZ52z0HQOsvbHVGGFS/ UJEwEQYJYIZIAYb4QgEBBAQDAgXgMDoGCWCGSAGG+EIBCAQtFitodHRwOi8vY2Vy dGlmaWNhdGUubmlraGVmLm5sL21lZGl1bS9wb2xpY3kvMIHZBglghkgBhvhCAQ0E gcsWgchDZXJ0aWZpY2F0ZSBpc3N1ZWQgdW5kZXIgRHV0Y2hHcmlkIGFuZCBOSUtI RUYgbWVkaXVtLXNlY3VyaXR5IHBvbGljeSB2ZXJzaW9uIDIuMTtsaW1pdGVkIGxp YWJpbGl0aWVzIGFwcGx5LCBzZWUgaHR0cDovL2NlcnRpZmljYXRlLm5pa2hlZi5u bC9tZWRpdW0vcG9saWN5LyBmb3IgZGV0YWlscztDZXJ0aWZpY2F0ZSBUYWc6IDQw OWJkN2E2LWQxM2JhOTAbBgNVHREEFDASghBrdWlrZW4ubmlraGVmLm5sMA0GCSqG SIb3DQEBBQUAA4IBAQCMcJtWXjTEYiQJfxc9S51bU9yNDOImWdwltxd/hPkLel5y hv3RHB3h1lo1WVffg10uxsvI1AQ8FCcJidl/eTfonFEV2JvC4ZnF1GS12jSWwPsb wlDEuBM8cB7zn/B1RFT2SKSUmxhnkBpW/r00ztNsJMe3fspoeEhxdPNfothno6du lVSJKyGVrA5zyLQh38HADOYoyhFTjzlJKcVhDc3zQJiYwxgO8BKAGqrVDyZIMcWR O1Bd93GfpmzgRk1XpwY0p46AEpwvXC+C1zS6J4kRxJ4Er2FPbwaSIu0E+aO4MG+q eZOUcAEz5WQDk0/FxdBWH5WyM0OzRXfP6a9jUzZ+ -----END CERTIFICATE----- [root@kvasir glite]# Then create the proxy: [martijn@kvasir martijn]$ /opt/glite/bin/voms-proxy-init -voms EGEE Your identity: /O=dutchgrid/O=users/O=nikhef/CN=Martijn Steenbakkers Enter GRID pass phrase for this identity: Creating temporary proxy ........................................ Done /O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kuiken.nikhef.nl /C=NL/O=NIKHEF/CN=NIKHEF medium-security certification auth Creating proxy .............................................. Done Your proxy is valid until Fri Dec 17 05:35:07 2004 martijn@kvasir martijn]$ /opt/globus/bin/globus-job-run kvasir /usr/bin/id -a uid=9000(gpool000) gid=503(egee) Yes, the mapping based on VOMS attributes has worked! IV. Installation and configuration of the workspace service ___________________________________________________________ 1) See http://www-unix.mcs.anl.gov/~tfreeman/workspace_service/ for the installation of the Workspace service. 2) NOTE: - It is advised to start with a fresh gt3.9.3 installation. - Before building the lcmaps backend fill in the right LCMAPS configuration values in the config.h file: #define LCMAPS_LOG_FILE "/opt/glite/var/log/lcmaps_workspace.log" #define LCMAPS_DB_FILE "/opt/glite/etc/lcmaps/lcmaps.db.without_gsi" #define LCMAPS_GRIDMAPDIR "/etc/grid-security/gridmapdir" #define LCMAPS_DEBUG_LEVEL "0" #define LCMAPS_POLICY_NAME "das_voms" #define LCMAPS_LOG_STRING "DAS poolindex" - The Makefile should use the right compilation flags: -I/opt/glite/include/glite/security/lcmaps/ -L/opt/glite/lib Links _____ gLite: http://glite.web.cern.ch/glite/ LCAS and LCMAPS: http://www.nikhef.nl/grid/lcaslcmaps/ Workspace service: http://www-unix.mcs.anl.gov/~tfreeman/workspace_service/ $Id: INSTALL_WITH_WORKSPACE_SERVICE 11755 2010-12-16 15:29:48Z dennisvd $ lcmaps-1.6.6/doc/datagrid.eps0000644001726200004540000014112012471136645012776 00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 8.0.1 %%For: (kees huyser) (NIKHEF) %%Title: (datagrid.eps) %%CreationDate: (7/30/01) (2:48 PM) %%BoundingBox: 12 216 562 486 %%HiResBoundingBox: 12.5479 216 561.9844 485.0586 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 297.5 420.5 297.5 420.5 %AI3_TileBox: -110 136 692 704 %AI3_DocumentPreview: Header %AI5_ArtSize: 842 595 %AI5_RulerUnits: 1 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: -131.2417 733.3794 1 1274 955 18 1 1 3 40 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:-110 136 %%AI3_PaperRect:-14 581 828 -14 %%AI3_Margin:14 -13 -26 14 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade false put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI5_BeginPalette 0 0 Pb 1 1 1 1 k ([Registration]) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 0 79 128 255 Lb (Layer 1) Ln 0 A 800 Ar 0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D 0 XR -7894 479.3662 m 8489 479.3662 L (N) * -7894 360.3086 m 8489 360.3086 L (N) * 287.3335 8612 m 287.3335 -7771 L (N) * u *u 0 O 0.4588 0.5373 0.8941 Xa 1 D 288.0449 479.5273 m 215.2739 479.5273 156.2813 420.5342 156.2813 347.7637 c 156.2813 274.9922 215.2739 216 288.0449 216 c 360.8164 216 419.8086 274.9922 419.8086 347.7637 c 419.8086 420.5342 360.8164 479.5273 288.0449 479.5273 c f 0 D 288.0449 232.8818 m 224.5977 232.8818 173.1631 284.3164 173.1631 347.7637 c 173.1631 411.2109 224.5977 462.6455 288.0449 462.6455 c 351.4922 462.6455 402.9268 411.2109 402.9268 347.7637 c 402.9268 284.3164 351.4922 232.8818 288.0449 232.8818 c f *U 1 Ap 297.5156 471.0566 m 277.2803 471.0566 L 277.2803 224.9414 L 297.5156 224.9414 L 297.5156 471.0566 L f 164.3403 334.8223 m 164.3403 314.5879 L 410.4551 314.5879 L 410.4551 334.8223 L 164.3403 334.8223 L f /BBAccumRotation (1.570796) XT 164.3403 384.7041 m 164.3403 364.4697 L 410.4551 364.4697 L 410.4551 384.7041 L 164.3403 384.7041 L f /BBAccumRotation (1.570796) XT 193.3984 435.0566 m 193.3984 414.8223 L 383.2783 414.8223 L 383.2783 435.0566 L 193.3984 435.0566 L f /BBAccumRotation (1.570796) XT 193.3984 283.9258 m 193.3984 263.6914 L 383.2783 263.6914 L 383.2783 283.9258 L 193.3984 283.9258 L f /BBAccumRotation (1.570796) XT 0 Ap 308.251 468.8086 m 314.5889 468.8086 321.3516 468.8086 327.6455 468.8086 C F 304.9658 221.2373 m 299.8447 221.959 294.375 222.7559 289.2441 223.9727 C F 327.6455 468.8086 m 321.3516 468.8086 314.5889 468.8086 308.251 468.8086 C 339.2529 440.2598 358.6914 399.3477 358.6914 353.8809 c 358.6914 299.7129 331.1133 251.999 289.2441 223.9727 C 294.375 222.7559 299.8447 221.959 304.9658 221.2373 C 350.5801 260.0371 364.0918 267.8496 371.8682 353.8809 c 375.8633 398.0781 356.8262 438.5508 327.6455 468.8086 C f 285.2783 224.7803 m 244.0874 252.9121 217.0459 300.2363 217.0459 353.8809 c 217.0459 397.5078 234.9346 436.9492 263.7681 465.2939 C 258.0205 464.8486 252.2734 466.5488 246.5259 466.2656 C 219.9907 436.3594 203.8682 397.0059 203.8682 353.8809 c 203.8682 300.4678 228.5952 252.8369 267.2178 221.7871 C 273.8442 220.9355 279.5801 224.4893 285.2783 224.7803 C f 285.2783 224.7803 m 279.5801 224.4893 273.8442 220.9355 267.2178 221.7871 C F 246.5259 466.2656 m 252.2734 466.5488 258.0205 464.8486 263.7681 465.2939 C F U u 0 0 0 Xa 138.4287 283.1465 m 31.6064 283.1465 36.7827 283.1465 v 41.959 283.1465 12.5479 283.1465 12.5479 307.3809 c 12.5479 324.0869 12.5479 377.2627 y 16.7832 402.0859 37.3711 402.0859 v 57.959 402.0859 110.1938 402.0859 135.1348 402.0859 c 160.0757 402.0859 158.6641 380.0859 y 158.6641 360.3223 l 127.6055 360.3223 l 126.1934 373.2627 114.6641 373.2627 v 103.1348 373.2627 60.7822 373.2627 y 48.1943 370.4395 48.1943 360.6748 v 48.1943 350.9102 48.1943 326.4395 y 47.7236 315.2637 56.3706 315.2637 v 65.0176 315.2637 114.4292 315.2637 y 117.9121 315.7207 122 319.8086 v 126.0879 323.8965 125.7231 325.499 y 82.4292 325.499 l 82.4292 353.7344 l 158.6641 353.7344 l 158.6641 301.499 l 154.8989 283.1465 138.4287 283.1465 v f 384.6328 404.0566 m 384.6328 284.4697 l 347.3389 284.4697 l 347.3389 403.6445 l 384.6328 404.0566 l f *u 1 D 533.1035 402.7041 m 410.8682 402.7041 L 410.8682 283.998 L 525.6904 283.998 538.8672 283.998 v 552.0439 283.998 561.9844 308.1162 Y 561.9844 376.8223 L 553.0439 404.5859 533.1035 402.7041 Y f 0 D 525.2197 364.5869 m 525.2197 348.5869 525.2197 331.1748 v 525.2197 313.7627 510.6318 316.5869 Y 444.2793 316.5869 L 444.2793 373.998 L 492.749 374.4688 510.6318 374.4688 v 528.5146 374.4688 525.2197 364.5869 Y f *U *u 1 D 306.3975 326.9404 m 295.5747 325.0576 360.5146 350.4688 303.1035 401.293 c 301.4268 402.7773 304.3887 402.7041 296.7515 402.7041 c 264.7515 402.7041 185.6934 402.4688 Y 184.9873 284.0576 L 218.3984 284.0576 L 218.3984 316.5869 L 286.6333 316.5869 L 286.6333 283.4697 L 322.751 283.4697 L 322.751 322.7051 L 315.3154 328.4922 306.3975 326.9404 v f 0 D 283.8101 346.2344 m 275.8101 346.2344 218.8691 346.2344 Y 218.8691 373.998 L 283.8101 374.4688 L 296.5156 358.4688 283.8101 346.2344 V f *U U u *u 0.8588 0.8 0.7725 Xa 173.7935 458.3086 m 181.2388 458.3086 186.5708 456.5156 189.7896 452.9297 c 193.0083 449.3438 194.6177 442.6758 194.6177 432.9297 c 194.6177 425.5469 193.895 420.2188 192.4575 416.9492 c 191.02 413.6797 189.0278 411.3789 186.4888 410.0508 c 183.9497 408.7227 179.6724 408.0586 173.6646 408.0586 C 166.6177 408.0586 L 166.6177 458.3086 L 173.7935 458.3086 l f 138.1177 387.3086 m 180.6489 387.3086 l 185.7427 387.3086 191.4302 388.1289 197.7114 389.7734 c 202.3013 390.9922 206.5981 393.4258 210.6021 397.0703 c 214.6021 400.7109 217.731 405.2422 219.9849 410.6563 c 222.2388 416.0703 223.3677 423.6836 223.3677 433.5 c 223.3677 439.7344 222.606 445.6523 221.0903 451.2539 c 219.5747 456.8555 217.1294 461.7656 213.7622 465.9766 c 210.3911 470.1875 206.1255 473.4219 200.9653 475.6758 c 195.8013 477.9297 189.0317 479.0586 180.6489 479.0586 C 138.1177 479.0586 L 138.1177 387.3086 l f *U *u 282.3496 414.7344 m 282.3496 411.5977 281.8301 409.0469 280.791 407.082 c 279.752 405.1133 277.9941 403.4531 275.5176 402.0938 c 273.041 400.7344 270.3613 400.0586 267.4863 400.0586 c 264.7324 400.0586 262.6465 400.6836 261.2285 401.9375 c 259.8066 403.1914 259.0996 404.8242 259.0996 406.832 c 259.0996 408.543 259.8184 410.0898 261.2598 411.4727 c 262.6582 412.8086 265.9824 414.1445 271.2324 415.4844 c 275.084 416.4453 278.791 417.5508 282.3496 418.8086 C 282.3496 414.7344 l f 263.8652 438.0117 m 265.9902 439.375 269.1777 440.0586 273.4277 440.0586 c 276.7402 440.0586 279.0527 439.4219 280.373 438.1563 c 281.6895 436.8867 282.3496 434.6875 282.3496 431.5586 c 279.1387 430.2969 276.0996 429.2891 273.2324 428.5313 c 270.3613 427.7734 264.0957 426.4297 254.4316 424.5 c 246.3691 422.9023 240.8379 420.4883 237.8457 417.2539 c 234.8457 414.0195 233.3496 409.8789 233.3496 404.8398 c 233.3496 399.4609 235.4277 394.9453 239.584 391.2891 c 243.7402 387.6328 249.8262 385.8086 257.8457 385.8086 c 263.877 385.8086 269.1738 386.7227 273.7324 388.543 c 277.0645 389.9414 280.4199 392.25 283.7949 395.4688 c 284.084 393.5547 284.377 392.1445 284.6699 391.2305 c 284.9629 390.3164 285.5918 389.0078 286.5566 387.3086 C 310.5684 387.3086 l 309.2207 390.0469 308.3457 392.3008 307.9473 394.0703 c 307.5488 395.8398 307.3496 398.2852 307.3496 401.4023 C 307.3496 430.7891 l 307.3496 433.9063 306.7168 437.1914 305.4551 440.6445 c 304.1895 444.0977 302.4629 446.7734 300.2754 448.6719 c 297.1582 451.3672 293.2637 453.1484 288.5918 454.0117 c 283.916 454.875 277.7246 455.3086 270.0215 455.3086 c 265.2207 455.3086 260.7559 454.9492 256.6309 454.2305 c 252.5059 453.5117 249.2637 452.5 246.9082 451.1953 c 243.623 449.4219 241.1074 447.3125 239.3613 444.8672 c 237.6113 442.4219 236.2754 439.0664 235.3496 434.8086 C 259.8496 432.0586 l 260.8691 434.957 262.209 436.9414 263.8652 438.0117 c f *U *u 351.5547 479.0586 m 351.5547 453.8086 L 365.8047 453.8086 L 365.8047 435.0586 L 351.5547 435.0586 L 351.5547 411.5586 L 351.5547 408.7422 351.8242 406.8711 352.3711 405.9492 c 353.207 404.5195 354.6719 403.8086 356.7656 403.8086 c 358.6484 403.8086 361.2813 404.3516 364.6719 405.4453 c 366.5547 387.8281 L 360.2109 386.4844 354.293 385.8086 348.793 385.8086 c 342.4102 385.8086 337.707 386.6211 334.6836 388.2344 c 331.6602 389.8516 329.4258 392.3242 327.9766 395.6445 c 326.5273 398.9648 325.8047 404.3281 325.8047 411.7266 c 325.8047 435.0586 L 316.3047 435.0586 L 316.3047 453.8086 L 325.8047 453.8086 L 325.8047 465.9922 l 351.5547 479.0586 L f *U *u 423.6416 414.7344 m 423.6416 411.5977 423.1221 409.0469 422.083 407.082 c 421.0439 405.1133 419.2861 403.4531 416.8096 402.0938 c 414.333 400.7344 411.6533 400.0586 408.7783 400.0586 c 406.0244 400.0586 403.9385 400.6836 402.5205 401.9375 c 401.0986 403.1914 400.3916 404.8242 400.3916 406.832 c 400.3916 408.543 401.1104 410.0898 402.5518 411.4727 c 403.9502 412.8086 407.2744 414.1445 412.5244 415.4844 c 416.376 416.4453 420.083 417.5508 423.6416 418.8086 C 423.6416 414.7344 l f 1 D 405.1572 438.0117 m 407.2822 439.375 410.4697 440.0586 414.7197 440.0586 c 418.0322 440.0586 420.3447 439.4219 421.665 438.1563 c 422.9814 436.8867 423.6416 434.6875 423.6416 431.5586 c 420.4307 430.2969 417.3916 429.2891 414.5244 428.5313 c 411.6533 427.7734 405.3877 426.4297 395.7236 424.5 c 387.6611 422.9023 382.1299 420.4883 379.1377 417.2539 c 376.1377 414.0195 374.6416 409.8789 374.6416 404.8398 c 374.6416 399.4609 376.7197 394.9453 380.876 391.2891 c 385.0322 387.6328 391.1182 385.8086 399.1377 385.8086 c 405.1689 385.8086 410.4658 386.7227 415.0244 388.543 c 418.3564 389.9414 421.7119 392.25 425.0869 395.4688 c 425.376 393.5547 425.6689 392.1445 425.9619 391.2305 c 426.2549 390.3164 426.8838 389.0078 427.8486 387.3086 C 451.8604 387.3086 l 450.5127 390.0469 449.6377 392.3008 449.2393 394.0703 c 448.8408 395.8398 448.6416 398.2852 448.6416 401.4023 C 448.6416 430.7891 l 448.6416 433.9063 448.0088 437.1914 446.7471 440.6445 c 445.4814 444.0977 443.7549 446.7734 441.5674 448.6719 c 438.4502 451.3672 434.5557 453.1484 429.8838 454.0117 c 425.208 454.875 419.0166 455.3086 411.3135 455.3086 c 406.5127 455.3086 402.0479 454.9492 397.9229 454.2305 c 393.7979 453.5117 390.5557 452.5 388.2002 451.1953 c 384.915 449.4219 382.3994 447.3125 380.6533 444.8672 c 378.9033 442.4219 377.5674 439.0664 376.6416 434.8086 C 401.1416 432.0586 l 402.1611 434.957 403.501 436.9414 405.1572 438.0117 c f *U U u *u 0.9843 0.3255 0.0314 Xa 0 D 168.7935 464.3086 m 176.2388 464.3086 181.5708 462.5156 184.7896 458.9297 c 188.0083 455.3438 189.6177 448.6758 189.6177 438.9297 c 189.6177 431.5469 188.895 426.2188 187.4575 422.9492 c 186.02 419.6797 184.0278 417.3789 181.4888 416.0508 c 178.9497 414.7227 174.6724 414.0586 168.6646 414.0586 C 161.6177 414.0586 L 161.6177 464.3086 L 168.7935 464.3086 l f 133.1177 393.3086 m 175.6489 393.3086 l 180.7427 393.3086 186.4302 394.1289 192.7114 395.7734 c 197.3013 396.9922 201.5981 399.4258 205.6021 403.0703 c 209.6021 406.7109 212.731 411.2422 214.9849 416.6563 c 217.2388 422.0703 218.3677 429.6836 218.3677 439.5 c 218.3677 445.7344 217.606 451.6523 216.0903 457.2539 c 214.5747 462.8555 212.1294 467.7656 208.7622 471.9766 c 205.3911 476.1875 201.1255 479.4219 195.9653 481.6758 c 190.8013 483.9297 184.0317 485.0586 175.6489 485.0586 C 133.1177 485.0586 L 133.1177 393.3086 l f *U *u 277.3496 420.7344 m 277.3496 417.5977 276.8301 415.0469 275.791 413.082 c 274.752 411.1133 272.9941 409.4531 270.5176 408.0938 c 268.041 406.7344 265.3613 406.0586 262.4863 406.0586 c 259.7324 406.0586 257.6465 406.6836 256.2285 407.9375 c 254.8066 409.1914 254.0996 410.8242 254.0996 412.832 c 254.0996 414.543 254.8184 416.0898 256.2598 417.4727 c 257.6582 418.8086 260.9824 420.1445 266.2324 421.4844 c 270.084 422.4453 273.791 423.5508 277.3496 424.8086 C 277.3496 420.7344 l f 258.8652 444.0117 m 260.9902 445.375 264.1777 446.0586 268.4277 446.0586 c 271.7402 446.0586 274.0527 445.4219 275.373 444.1563 c 276.6895 442.8867 277.3496 440.6875 277.3496 437.5586 c 274.1387 436.2969 271.0996 435.2891 268.2324 434.5313 c 265.3613 433.7734 259.0957 432.4297 249.4316 430.5 c 241.3691 428.9023 235.8379 426.4883 232.8457 423.2539 c 229.8457 420.0195 228.3496 415.8789 228.3496 410.8398 c 228.3496 405.4609 230.4277 400.9453 234.584 397.2891 c 238.7402 393.6328 244.8262 391.8086 252.8457 391.8086 c 258.877 391.8086 264.1738 392.7227 268.7324 394.543 c 272.0645 395.9414 275.4199 398.25 278.7949 401.4688 c 279.084 399.5547 279.377 398.1445 279.6699 397.2305 c 279.9629 396.3164 280.5918 395.0078 281.5566 393.3086 C 305.5684 393.3086 l 304.2207 396.0469 303.3457 398.3008 302.9473 400.0703 c 302.5488 401.8398 302.3496 404.2852 302.3496 407.4023 C 302.3496 436.7891 l 302.3496 439.9063 301.7168 443.1914 300.4551 446.6445 c 299.1895 450.0977 297.4629 452.7734 295.2754 454.6719 c 292.1582 457.3672 288.2637 459.1484 283.5918 460.0117 c 278.916 460.875 272.7246 461.3086 265.0215 461.3086 c 260.2207 461.3086 255.7559 460.9492 251.6309 460.2305 c 247.5059 459.5117 244.2637 458.5 241.9082 457.1953 c 238.623 455.4219 236.1074 453.3125 234.3613 450.8672 c 232.6113 448.4219 231.2754 445.0664 230.3496 440.8086 C 254.8496 438.0586 l 255.8691 440.957 257.209 442.9414 258.8652 444.0117 c f *U *u 346.5547 485.0586 m 346.5547 459.8086 L 360.8047 459.8086 L 360.8047 441.0586 L 346.5547 441.0586 L 346.5547 417.5586 L 346.5547 414.7422 346.8242 412.8711 347.3711 411.9492 c 348.207 410.5195 349.6719 409.8086 351.7656 409.8086 c 353.6484 409.8086 356.2813 410.3516 359.6719 411.4453 c 361.5547 393.8281 L 355.2109 392.4844 349.293 391.8086 343.793 391.8086 c 337.4102 391.8086 332.707 392.6211 329.6836 394.2344 c 326.6602 395.8516 324.4258 398.3242 322.9766 401.6445 c 321.5273 404.9648 320.8047 410.3281 320.8047 417.7266 c 320.8047 441.0586 L 311.3047 441.0586 L 311.3047 459.8086 L 320.8047 459.8086 L 320.8047 471.9922 l 346.5547 485.0586 L f *U *u 418.6416 420.7344 m 418.6416 417.5977 418.1221 415.0469 417.083 413.082 c 416.0439 411.1133 414.2861 409.4531 411.8096 408.0938 c 409.333 406.7344 406.6533 406.0586 403.7783 406.0586 c 401.0244 406.0586 398.9385 406.6836 397.5205 407.9375 c 396.0986 409.1914 395.3916 410.8242 395.3916 412.832 c 395.3916 414.543 396.1104 416.0898 397.5518 417.4727 c 398.9502 418.8086 402.2744 420.1445 407.5244 421.4844 c 411.376 422.4453 415.083 423.5508 418.6416 424.8086 C 418.6416 420.7344 l f 1 D 400.1572 444.0117 m 402.2822 445.375 405.4697 446.0586 409.7197 446.0586 c 413.0322 446.0586 415.3447 445.4219 416.665 444.1563 c 417.9814 442.8867 418.6416 440.6875 418.6416 437.5586 c 415.4307 436.2969 412.3916 435.2891 409.5244 434.5313 c 406.6533 433.7734 400.3877 432.4297 390.7236 430.5 c 382.6611 428.9023 377.1299 426.4883 374.1377 423.2539 c 371.1377 420.0195 369.6416 415.8789 369.6416 410.8398 c 369.6416 405.4609 371.7197 400.9453 375.876 397.2891 c 380.0322 393.6328 386.1182 391.8086 394.1377 391.8086 c 400.1689 391.8086 405.4658 392.7227 410.0244 394.543 c 413.3564 395.9414 416.7119 398.25 420.0869 401.4688 c 420.376 399.5547 420.6689 398.1445 420.9619 397.2305 c 421.2549 396.3164 421.8838 395.0078 422.8486 393.3086 C 446.8604 393.3086 l 445.5127 396.0469 444.6377 398.3008 444.2393 400.0703 c 443.8408 401.8398 443.6416 404.2852 443.6416 407.4023 C 443.6416 436.7891 l 443.6416 439.9063 443.0088 443.1914 441.7471 446.6445 c 440.4814 450.0977 438.7549 452.7734 436.5674 454.6719 c 433.4502 457.3672 429.5557 459.1484 424.8838 460.0117 c 420.208 460.875 414.0166 461.3086 406.3135 461.3086 c 401.5127 461.3086 397.0479 460.9492 392.9229 460.2305 c 388.7979 459.5117 385.5557 458.5 383.2002 457.1953 c 379.915 455.4219 377.3994 453.3125 375.6533 450.8672 c 373.9033 448.4219 372.5674 445.0664 371.6416 440.8086 C 396.1416 438.0586 l 397.1611 440.957 398.501 442.9414 400.1572 444.0117 c f *U U 1 Ap 0 0 0 Xa 0 D 556.667 267.6426 m 16 267.6426 L 16 272.3096 L 556.667 272.3096 L 556.667 267.6426 L f LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF lcmaps-1.6.6/doc/lcmaps_setup_pool0000644001726200004540000000461312471136645014166 00000000000000#! /bin/sh # Copyright (c) Members of the EGEE Collaboration. 2004-2010. # See http://www.eu-egee.org/partners/ for details on the copyright # holders. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Authors: # 2009- # Oscar Koeroo # Mischa Sall\'e # David Groep # NIKHEF Amsterdam, the Netherlands # # # 2007-2009 # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands # # 2003-2007 # Martijn Steenbakkers # Gerben Venekamp # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands cat < .\" Mischa Sall\'e .\" NIKHEF Amsterdam, the Netherlands .\" .\" 2006-2009 .\" Gerben Venekamp .\" NIKHEF Amsterdam, the Netherlands .\" .TH LCMAPS 3 "December 22, 2011" .SH NAME lcmaps \- The Local Credential MAPping Service .SH SYNOPSIS .nh .ad l .B lcmaps .hy .ad b .SH DESCRIPTION The LCMAPS framework is designed to take various credentials as input, e.g. a certificate and/or VOMS credentials, and map them to Unix credentials as output. Unix credentials are the basic POSIX credentials, i.e. User ID, Group ID and Secondary Group IDs. LCMAPS is a framework that can load and run one or more 'credential mapping' plugins. The framework will load and run plugins to perform the identity mapping. Site and organizations can create their own new functionality by creating new plugins. The LCMAPS framework exposes various APIs to push credentials into the framework and to get the account mapping results in return. The \fBlcmaps.db\fR configuration file configures the LCMAPS plugins and configures the order in which the plugins are launch. Some practical examples are shown below. LCMAPS is used by \fBgLExec\fR, the \fBlcas-lcmaps-gt(4)-interface\fR to interface with a Globus GT4 and GT5 Gatekeeper, GridFTP daemon and GSI-OpenSSHd, in StoRM and somewhere in XRootD. .SH INVOCATION When an application initializes LCMAPS the plugins will be loaded based on the \fBlcmaps.db\fR configuration file. The application can use one of the APIs to provide credentials as input. The loaded plugins will be executed in the sequence described in the same \fBlcmaps.db\fR configuration file. During a plugin's execution it has access to the credential data in the LCMAPS core memory. The plugin is also capable of writing credential mapping results in LCMAPS. The plugins can each resolve a part of the mapping and they can also perform actions based on these (intermediate) results, e.g. run setuid, setgid and setgroup calls or interact with an LDAP service. The plugins are executed in a state machine. When a plugin finishes successfully it can execute a different next plugin then when it failed. This allows LCMAPS to pass different plugins to resolve a credential mapping. .SH ENVIRONMENT .TP .BI GATEKEEPER_JM_ID Extra Gatekeeper log message to be able to more easily track a Job Manager ID. .TP .BI GLOBUSID See $GATEKEEPER\_JM\_ID. .TP .BI JOB_REPOSITORY_ID See $GATEKEEPER_JM_ID, but explicitly for the purpose of the LCMAPS Job Repository plugin. .TP .BI LCMAPS_DB_FILE Override the build-in default filename for the \fBlcmaps.db\fR configuration file with the value of this environment variable. .TP .BI LCMAPS_DEBUG_LEVEL Tune the logging output cut off level. The numbers resemble the numbers as used in previous released in the range [1\-5]. However, since LCMAPS version 1.5.0 these numbers resemble a numerically shifted Syslog number. .RS .TP .B 0 Silent logging, \fBno messages\fR will be written to file or Syslog. .TP .B 1 All messages with a priority of \fBLOG_ERR\fR are written to file or Syslog. More severe error messages are squashed down to the LOG_ERR priority. This is to prevent Syslog from blocking on default configurations and to prevent Syslog from broadcasting LCMAPS related messages on the connected TTYs when old plug-ins are used. .TP .B 2 All messages with a priority of \fBLOG_WARNING\fR or more severe, i.e. LOG_ERR, are written to file and/or Syslog. .TP .B 3 All messages with a priority of \fBLOG_NOTICE\fR or more severe, i.e. LOG_ERR or LOG_WARNING, are written to file and/or Syslog. This is the default advertised setting for the \fBlcas-lcmaps-gt-interface\fR and \fBglexec\fR. The "FINAL CRED" messages are written on LOG_NOTICE and indicate the resulting LCMAPS mapping from an X.509 and/or VOMS credential to a Unix/POSIX credential. .TP .B 4 All messages with a priority of \fBLOG_INFO\fR or more severe, i.e. all messages between (and including) LOG_ERR and LOG_INFO, are written to file and/or Syslog. This value is the \fBbuild-in default\fR. The success or failures of plug-ins are written on LOG_INFO. To see the flow of plug-ins this log level is the advised log level to set. .TP .B 5 All messages with a priority of \fBLOG_DEBUG\fR or more severe, i.e. all messages between (and including) LOG_ERR and LOG_DEBUG, are written to file and/or Syslog. This is the most verbose mode and should be used carefully as the amount of information flowing from here might hinder normal operation performance if the syslogd isn't able to keep up. .RE .TP .BI LCMAPS_DIR The base directory of the $LCMAPS_DB_FILE parameter. This variable is concatenated with the $LCMAPS_DB_FILE .TP .BI LCMAPS_ETC_DIR See $LCMAPS_DIR .TP .BI LCMAPS_LOG_FILE Overrides the build-in default file path to log the output to. When set, the logging will not go to Syslog. .TP .BI LCMAPS_LOG_STRING Prepend all log output messages with value of this environment variable .TP .BI LCMAPS_MODULES_DIR Directory to search for the LCMAPS plugins (or modules). Same as the \fBpath\fR option in the \fBlcmaps.db\fR file.. .TP .BI LCMAPS_POLICY_NAME A colon separated list of LCMAPS plugin execution policies. When this environment variable is present, only the listed execution policies will be executed. They will be executed in the order as written in the \fBlcmaps.db\fR file (from top to bottom). .TP .BI LCMAPS_VERIFY_TYPE Deprecated .TP .BI LCMAPS_VOMS_EXTRACT Deprecated .TP .BI LCMAPS_X509_CERT_DIR Specific setting equal to the $X509_CERT_DIR environment variable .TP .BI LCMAPS_X509_VOMS_DIR Specific setting equal to the $X509_VOMS_DIR environment variable .TP .BI X509_CERT_DIR The directory where all the CA files, e.g. CA certificate and CRL files, are located. The default location is: /etc/grid-security/certificates/. .TP .BI X509_VOMS_DIR This VOMS directory will hold the VOMS .lsc files and/or PEM files to authenticate the VOMS Attributes Certificates. Subdirectories are named by the VO name and scope the .lsc and PEM files in their authentication to one particular VO. The default location is: /etc/grid-security/vomsdir/. .SH "RETURN VALUES" .TP .B LCMAPS_SUCCESS Success. .TP .B LCMAPS_FAIL Failure. .SH NOTES For an API specification, please use \fBmake doc\fR to make the apidoc. .SH BUGS The apidoc is not complete. It has most interfaces, but needs to be checked for completeness. Please report any errors to the Nikhef Grid Middleware Security Team . .SH "SEE ALSO" .BR lcmaps.db (5), .BR lcas_lcmaps_gt4_interface (8), .BR lcas_lcmaps_gt_interface (8), .BR lcmaps_dummy_bad.mod (8), .BR lcmaps_dummy_good.mod (8), .BR lcmaps_ldap_enf.mod (8), .BR lcmaps_localaccount.mod (8), .BR lcmaps-plugins-c-pep (8), .BR lcmaps_plugins_scas_client (8), .BR lcmaps_poolaccount.mod (8), .BR lcmaps_posix_enf.mod (8), .BR lcmaps_tracking_groupid.mod (8), .BR lcmaps_verify_proxy.mod (8), .BR scas (8), .BR scas.conf (5), .BR glexec (1), .BR glexec.conf (5), .BR ees (1), .BR ees.conf (5) .SH AUTHORS LCMAPS and the LCMAPS plug-ins were written by the Grid Middleware Security Team . lcmaps-1.6.6/doc/lcmaps.db.ex0000644001726200004540000000452312471136645012714 00000000000000# LCMAPS policy file/plugin definition # # default path path = /usr/lib/lcmaps # Plugin definitions: localaccount = "lcmaps_localaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" poolaccount = "lcmaps_poolaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" "-gridmapdir /etc/grid-security/gridmapdir" "-override_inconsistency" posix_enf = "lcmaps_posix_enf.mod" "-maxuid 1" "-maxpgid 1" "-maxsgid 32" vomslocalgroup = "lcmaps_voms_localgroup.mod" "-groupmapfile /etc/grid-security/groupmapfile" "-mapmin 0" vomslocalaccount = "lcmaps_voms_localaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" vomspoolgroup = "lcmaps_voms_poolgroup.mod" "-groupmapfile /etc/grid-security/groupmapfile" "-groupmapdir /etc/grid-security/groupmapdir" "-override_inconsistency" "-mapmin 0" vomspoolaccount = "lcmaps_voms_poolaccount.mod" "-gridmapfile /etc/grid-security/grid-mapfile" "-gridmapdir /etc/grid-security/gridmapdir" ldap_enf = "lcmaps_ldap_enf.mod" "-maxuid 1" "-maxpgid 1" "-maxsgid 32" "-hostname ldap.example.org" "-port 389" "-require_all_groups yes" "-dn_manager \"cn=Manager,dc=root\"" "-ldap_pw /etc/lcmaps/test_pw" "-sb_groups \"ou=LocalGroups,dc=foobar,dc=ough\"" "-sb_user \"ou=LocalUsers,dc=foobar,dc=ough\"" "-timeout 5" # Policies: voms: vomslocalgroup -> vomslocalaccount | poolaccount vomslocalaccount -> posix_enf | vomspoolaccount vomspoolaccount -> posix_enf | poolaccount poolaccount -> posix_enf | localaccount localaccount -> posix_enf standard: localaccount -> posix_enf | poolaccount poolaccount -> posix_enf voms_ldap: localaccount -> posix_enf | vomslocalgroup vomslocalgroup -> vomspoolgroup vomspoolgroup -> vomspoolaccount vomspoolaccount -> ldap_enf ldap_enf -> posix_enf lcmaps-1.6.6/doc/lcmaps.tex0000644001726200004540000015266512471136645012527 00000000000000\documentclass[]{article} \usepackage[dutch,english]{babel} \usepackage{url} %\usepackage[pdftex,colorlinks]{hyperref} %\usepackage{html} %\usepackage{graphicx} %\usepackage{moreverb} %\usepackage{alltt} %\include{lcmaps_include} % % Start document % \begin{document} % % titlepage and table of contents % \begin{titlepage} \begin{center} \textsc{\LARGE LCMAPS}\\[1.5cm] \textsc{\Large version 1.5.0}\\[1.5cm] \hrule \vspace{0.4cm} {\huge \bfseries Local Credential Mapping Service } \\[0.4cm] \hrule \vspace{1.5cm} \emph{Author:}\\ Oscar \textsc{Koeroo} \vfill {\large \today} \end{center} \end{titlepage} % % All the chapters % \section{Introduction} The LCMAPS framework is designed to take various credentials as input, e.g. a certificate and/or VOMS\footnote{Virtual Organization Management System by INFN CNAF} credentials, and map them to Unix credentials as output. Unix credentials are the basic POSIX credentials, i.e. User ID, Group ID and Secondary Group IDs. LCMAPS is a framework that can load and run one or more 'credential mapping' plugins. The framework will load and run plugins to perform the identity mapping. Site and organizations can create their own new functionality by creating new plugins. The LCMAPS framework exposes various APIs to push credentials into the framework and to get the account mapping results in return. The \emph{lcmaps.db} configuration file configures the LCMAPS plugins and configures the order in which the plugins are launch. Some practical examples are shown below. LCMAPS is used by \emph{gLExec}, the \emph{lcas-lcmaps-gt4-interface} to interface with a Globus GT4 and GT5 Gatekeeper, GridFTP daemon and GSI-OpenSSHd, in StoRM and somewhere in Xrootd. \section{History} The Gridification subtask of WP4 of the European Datagrid project\footnote{European DataGrid: http://www.eu-datagrid.org} interfaces the local fabric to other middleware components by a number of services, among which the Local Centre Authorization Service (LCAS) handles authorization requests to the local computing fabric and the Local Credential Mapping Service (LCMAPS) provides all local credentials needed for jobs allowed into the fabric. This document describes a prototype version of LCMAPS, which is the second component released by the Gridification subtask, the first being LCAS. \section{The frameworks inner working and plugins} When an application intializes LCMAPS the plugins will be loaded based on the \emph{lcmaps.db} configuration file. The application can use one of the APIs to provide credentials as input. The loaded plugins will be executed in the sequence described in the same \emph{lcmaps.db} configuration file. During a plugin's execution it has access to the credential data in the LCMAPS core memory. The plugin is also capable of writing credential mapping results in LCMAPS. The plugins can each resolve a part of the mapping and they can also perform actions based on these (intermediate) results, e.g. run setuid, setgid and setgroup calls or interact with an LDAP service. The plugins are executed in a state machine. When a plugin finishes succesfully it can execute a different next plugin then when it failed. This allows LCMAPS to pass different plugins to resolve a credential mapping. \section{Installation} The easiest way of installing LCMAPS is to use the \emph{EPEL}, \emph{Debian}, \emph{Etics} or Nikhef software repositories\footnote{Nikhef software repository: http://software.nikhef.nl/}. The installation experience is similar when manually build from a tarbal with the command: \verb!./configure && make && sudo make install!. When you've downloaded the software from our Subversion repository the \verb!./bootstrap! command is mandatory. The software will be installed in the following system default locations. The locations can be altered at ./configure time or the system might have different default location specified then Debian and/or Fedora systems: \begin{list}{}{} \item [/usr/lib\{64\}/] The core library files will be located here. This includes the front-end API implementing libraries. \item [/usr/lib\{64\}/lcmaps/] This is the default path for all the LCMAPS plugins. The same directory is used to hold the LCMAPS plugins. \item [/etc/lcmaps/] The configuration file \emph{lcmaps.db} will be placed in this directory by default. \item [/usr/share/doc/lcmaps-\$\{version\}] The documentation and example files will be located here. \end{list} \subsection{Dependencies} The dependencies of LCMAPS are: \begin{list}{}{} \item vomsapi 1.6 or higher \item Globus 2.x through Globus 5.x. Older version of Globus are known to work. \item OpenSSL 0.9.7 through 1.0 \end{list} \subsection{Custom configure options} The LCMAPS \emph{configure} script is trying a few methods on finding the depending libraries on the system, including pkg-config. To be able to work with non-system distribution provided installation or personal compiles explicitly we provide several \emph{configure} options to work with: \begin{list}{}{} \item [--enable-headers] This switch will only build and install or distribute the header files to LCMAPS. The header files will contain the required type definitions for both the front-end/application interface as also the plugin interface. \item [--enable-gsi-mode] This option is \emph{on} by default and will build LCMAPS against the GSI interface libraries and OpenSSL. Switch this option to \emph{no} to create the \emph{lcmaps-without-gsi} flavor of LCMAPS. \item [--enable-osg] This option is \emph{off} by default. This option is used in the Open Science Grid build-flavor and will explicitly switch off the VOMS Attribute Certificate verification in the VOMS-api. This is to overload a default failure condition when the VOMS api could not verify the VOMS credentials. Note: Only enable this option if your infrastructure's security does not depend on the VOMS AC verification at all service nodes. \item [--with-globus-prefix=PFX] Allows you to select an alternative location to find the Globus headers and libraries needed to build LCMAPS. \item [--with-globus-libdir=DIR] Allows you to select an alternative directory for the Globus libraries. The default behaviour is to use the \$PFX setting of the previous option and add /lib, e.g. \$PFX/lib or \$PFX/lib64 \item [--with-globus-thr-flavor=FLAVOR] Sets the threaded flavor of Globus. This is not needed in Globus 5 (and up) installation. \item [--with-globus-nothr-flavor=FLAVOR] Sets the non-threaded flavor of Globus. This is not needed in Globus 5 (and up) installation. \item [--with-voms-prefix=PFX] Sets the directory where LCMAPS should look for the VOMS api libraries. The default is in /usr \item [--with-voms-includes=DIR] Override to the default \$VOMS\_PFX/include directory to look for the required VOMS header files. \item [--with-voms-libdir=DIR] Override to the default \$VOMS\_PFX/lib or \$VOMS\_PFX/lib64 directories to look for the required VOMS libraries. \end{list} \section{Common used paths} Here is a small list of commonly used files and paths used in the context of LCMAPS and its plugins. It's important to know that these paths are not created by LCMAPS. \begin{list}{}{} \item [/etc/grid-security/grid-mapfile] DN-based or VOMS FQAN-based auhtorization and mapping file used by various plugins. It maps DNs and/or FQANs to user accounts. \item [/etc/grid-security/vomapfile] Meant to be exclusively used as VOMS FQAN-based auhtorization and mapping file used by VOMS-specific various plugins. It maps FQANs to user accounts. \item [/etc/grid-security/groupmapfile] VOMS FQAN-based auhtorization and mapping file used by various VOMS plugins. It maps (secondary) Unix groups. \item [/etc/grid-security/vomsdir/] The VOMS directory will hold the VOMS .lsc files and/or PEM files to authenticate the VOMS Attributes Certificates. Subdirectories are named by the VO name and scope the .lsc and PEM files in their authentication to one particular VO. \item [/etc/grid-security/certificates/] The Certificate Authority (CA) directory filled with the supported CAs. It also contains the Certificate Revocation List (CRL) files and (Subject DN) signing namespace files of the CAs. \item [/etc/grid-security/gridmapdir/] The directory where all the user account mappings are held made by LCMAPS plugins that support the mapping of pool accounts. It will make a hardlink between a file entry representing the (Unix) account and the (encoded representation of the) certificate subject DN. The link is persistent and should be seen as a database that exposes the link between the Grid identity and the Unix identity. \item [/etc/grid-security/groupmapdir/] A similarly purposed directory, explicitly used by a VOMS-aware plugin that maps FQANs to a pool of (Unix) groups. \end{list} \section{Control through environment variables} The library can be steered using environment variables used in the running process. It's important to understand that plugins can use an additional set of environment variables for plugins specific purposes. Feature overloading the following set of environment variables is not adviced. \begin{list}{}{} \item [GATEKEEPER\_JM\_ID] Extra Gatekeeper log message to be able to more easily track a Job Manager ID. \item [GLOBUSID] See \$GATEKEEPER\_JM\_ID. \item [JOB\_REPOSITORY\_ID] See \$GATEKEEPER\_JM\_ID, but explicitly for the purpose of the LCMAPS Job Repository plugin. \item [LCMAPS\_DB\_FILE] Override the build-in default filename for the \emph{lcmaps.db} configuration file with the value of this environment variable. \item [LCMAPS\_DEBUG\_LEVEL] Tune the logging output cut off level. The numbers reasemble the numbers as used in previous released in the range 1-5. However, since LCMAPS version 1.5.0 these numbers resemble a numberically shifted Syslog number. \begin{list}{}{} \item [0] Silent logging, no messages will be written to file or Syslog. \item [1] All messages with a priority of BLOG\_ERR are written to file or Syslog. More severe error messages are squashed down to the LOG\_ERR priorirty. This is to prevent Syslog from blocking on default configurations and to prevent Syslog from broadcasting LCMAPS related messages on the connected TTYs when old plug-ins are used. \item [2] All messages with a priority of LOG\_WARNING or more severe, i.e. LOG\_ERR, are written to file and/or Syslog. \item [3] All messages with a priority of LOG\_NOTICE or more severe, i.e. LOG\_ERR or LOG\_WARNING, are written to file and/or Syslog. This is the default advertised setting for the lcas-lcmaps-gt-interface and glexec. The "FINAL CRED" messages are written on LOG\_NOTICE and indicate the resulting LCMAPS mapping from an X.509 and/or VOMS credential to a Unix/POSIX credential. \item [4] All messages with a priority of LOG\_INFO or more severe, i.e. all messages between (and including) LOG\_ERR and LOG\_INFO, are written to file and/or Syslog. This value is the build-in default. The success or failures of plug-ins are written on LOG\_INFO. To see the flow of plug-ins this log level is the advised log level to set. \item [5] All messages with a priority of LOG\_DEBUG or more severe, i.e. all messages between (and including) LOG\_ERR and LOG\_DEBUG, are written to file and/or Syslog. This is the most verbose mode and should be used carefully as the amount of information flowing from here might hinder normal operation performance if the syslogd isn't able to keep up. \end{list} \item [LCMAPS\_DIR] The base directory of the \$LCMAPS\_DB\_FILE parameter. This variable is concatinated with the \$LCMAPS\_DB\_FILE \item [LCMAPS\_ETC\_DIR] See \$LCMAPS\_DIR \item [LCMAPS\_LOG\_FILE] Overrides the build-in default file path to log the output to. When set, the logging will not go to Syslog. \item [LCMAPS\_LOG\_STRING] Prepend all log output messages with value of this environment variable \item [LCMAPS\_MODULES\_DIR] Directory to search for the LCMAPS plugins (or modules). Same as the \emph{path} option in the \emph{lcmaps.db} file.. \item [LCMAPS\_POLICY\_NAME] A colon separated list of LCMAPS plugin execution policies. When this environment variable is present, only the listed execution policies will be executed. They will be executed in the order as writen in the \emph{lcmaps.db} file (from top to bottom). \item [LCMAPS\_VERIFY\_TYPE] Depricated \item [LCMAPS\_VOMS\_EXTRACT] Depricated \item [LCMAPS\_X509\_CERT\_DIR] Specific setting equal to the \$X509\_CERT\_DIR environment variable \item [LCMAPS\_X509\_VOMS\_DIR] Specific setting equal to the \$X509\_VOMS\_DIR environment variable \item [X509\_CERT\_DIR] The directory where all the CA files, e.g. CA certificate and CRL files, are located. The default location is: /etc/grid-security/certificates/. \item [X509\_VOMS\_DIR] This VOMS directory will hold the VOMS .lsc files and/or PEM files to authenticate the VOMS Attributes Certificates. Subdirectories are named by the VO name and scope the .lsc and PEM files in their authentication to one particular VO. The default location is: /etc/grid-security/vomsdir/. \end{list} \section{Configuration} The default configuration file for LCMAPS is \emph{lcmaps.db}. This file defines the plug-in configurations and policy definitions as used by tools like gLExec and a Globus GridFTPd\footnote{The GridFTP daemon will need to be extended with the lcas-lcmaps-gt4-interface library}. As it is impossible to provide a default configuration that a) makes sense and b) doesn't require at least one plug-in that is not strictly required in every case. A few commonly used configration will be explained. The system administrator should pick and choose which parts are needed. The selected plug-ins are provided in separate packages. For more information, see lcmaps.db(5) and the documentation for each individual plugin, or go to \url{http://www.nikhef.nl/pub/projects/grid/gridwiki/index.php/Site_Access_Control} \subsection{gLExec example} \small \begin{verbatim} ## Documentation example for gLExec ## ## The default path where modules are looked for. Do not change this. path = /usr/lib64/lcmaps ## ====================================================================== ## Section: PLUG-INS ## ====================================================================== ## Tracking group plug-in ## ## The Tracking Group ID plug-in can reattach secondary Group IDs from ## the calling user to the mapped user account. This is to ensure that ## special tracking group IDs, attached by the batch system to a running ## job, also remain when e.g. gLExec is switching the Unix/POSIX process ## ownership. ## The tracking group plug-in can either preserve a fixed range of Unix ## Group IDs or can auto-discover tracking GIDs. The auto-discover works ## by assuming tracking GIDs are 'nameless', but should be used with ## care. # tracking_groupid = "lcmaps_tracking_groupid.mod" # "--tracking-groupid-min MINGID" # "--tracking-groupid-max MAXGID" ## verify-proxy ## ## The lcmaps_verify_proxy plugin verifies the validity of a proxy chain ## and (optionally) a valid delegation, including restrictions on the ## life time of any proxies in the chain. ## For more informaation about this plugin: ## http://www.nikhef.nl/pub/projects/grid/gridwiki/index.php/Verify-proxy ## verify_proxy = "lcmaps_verify_proxy.mod" ## " -certdir /etc/grid-security/certificates/" ## " --allow-limited-proxy" ## Posix enforcement plug-in ## ## The posix_enf plug-in takes the mapping as returned by earlier ## plug-ins and changes the user's identity according to the mapping, ## including any mapped secondary group ids. This is usually the last ## step in the chain. # posix_enf = "lcmaps_posix_enf.mod" # "-maxuid 1" # "-maxpgid 1" # "-maxsgid 32" ## ## VOMS local group mapping ## ## The voms_localgroup plugin will map the VOMS FQANs (Fully Qualified ## Attribute Names) to one or more locally known groups by matching each ## FQAN to a line in the groupmapfile. # vomslocalgroup = "lcmaps_voms_localgroup.mod" # "-groupmapfile /etc/grid-security/groupmapfile" # "-mapmin 0" ## VOMS pool account mapping ## ## The voms_poolaccount plug-in maps FQANs to pool users, just like ## the plain poolaccount plug-in maps DNs. # vomspoolaccount = "lcmaps_voms_poolaccount.mod" # "-gridmapfile /etc/grid-security/grid-mapfile" # "-gridmapdir /etc/grid-security/gridmapdir" ## ====================================================================== ## Section: POLICIES ## ====================================================================== ## ## The policies are labeled, and gLExec will use the policy named in ## glexec.conf(5); if no policy is declared the first one will be used. ## One of the simplest policies is to verify the validity of the user ## proxy, and mapping the DN to a local account in ## /etc/grid-security/grid-mapfile. This is the easiest setup to ## handle just a few users. The verify_proxy and localaccount ## plug-ins in the plug-in section should be uncommented, and the ## lcmaps-plugins-basic package must be installed. vomsawarelocalmapping: verify_proxy -> vomslocalgroup vomslocalgroup -> vomspoolaccount vomspoolaccount -> tracking_groupid tracking_groupid -> posix_enf | posix_enf \end{verbatim} \normalsize \subsection{GridFTPd example} \small \begin{verbatim} ## Documentation example for gLExec ## ## The default path where modules are looked for. Do not change this. path = /usr/lib64/lcmaps ## ====================================================================== ## Section: PLUG-INS ## ====================================================================== ## Posix enforcement plug-in ## ## The posix_enf plug-in takes the mapping as returned by earlier ## plug-ins and changes the user's identity according to the mapping, ## including any mapped secondary group ids. This is usually the last ## step in the chain. # posix_enf = "lcmaps_posix_enf.mod" # "-maxuid 1" # "-maxpgid 1" # "-maxsgid 32" ## ## VOMS local group mapping ## ## The voms_localgroup plugin will map the VOMS FQANs (Fully Qualified ## Attribute Names) to one or more locally known groups by matching each ## FQAN to a line in the groupmapfile. # vomslocalgroup = "lcmaps_voms_localgroup.mod" # "-groupmapfile /etc/grid-security/groupmapfile" # "-mapmin 0" ## VOMS pool account mapping ## ## The voms_poolaccount plug-in maps FQANs to pool users, just like ## the plain poolaccount plug-in maps DNs. # vomspoolaccount = "lcmaps_voms_poolaccount.mod" # "-gridmapfile /etc/grid-security/grid-mapfile" # "-gridmapdir /etc/grid-security/gridmapdir" ## ====================================================================== ## Section: POLICIES ## ====================================================================== ## ## The policies are labeled, and vomsawarelocalmapping is the first and ## only label vomsawarelocalmapping: vomslocalgroup -> vomspoolaccount vomspoolaccount -> posix_enf \end{verbatim} \normalsize \section{Debugging LCMAPS} LCMAPS will typically be logging in the same location as the service or tool that is initiating the LCMAPS library and its plugins. The plugin log records are embedded in the LCMAPS main framework logrecords. To start debugging a problem in LCMAPS, we recommend to look at the log file and increase the logging verbosity ultimately to level "5" by using the \emph{LCMAPS\_LOG\_LEVEL}. You can now see the plugins loading succesfully: \small \begin{verbatim} lcmaps_log_open(): setting debugging level to 5 lcmaps.mod-lcmaps_startPluginManager(): doing lcmaps_startEvaluationManager(/etc/lcmaps/lcmaps-glexec.db) Checking policy 'localonly' for recursions. No recursions were found. [...] lcmaps.mod-lcmaps_startPluginManager(): initializing plugin /usr/lib64/lcmaps/lcmaps_verify_proxy.mod (db entry 0) lcmaps.mod-PluginInit(): found "plugin_initialize()" lcmaps.mod-PluginInit(): found "plugin_run()" lcmaps.mod-PluginInit(): found "plugin_terminate()" lcmaps.mod-PluginInit(): found "plugin_introspect()" lcmaps.mod-PluginInit(): found "plugin_verify()" lcmaps.mod-PluginInit(): creating first pluginlist entry [...] \end{verbatim} \normalsize The start of an mapping request initiated using the LCMAPS PEM and return account API. When available the LCMAPS framework will also pre-load its memory with VOMS credentials, of which a summary is given here. Note: This feature depricates the LCMAPS VOMS extract plugin: \small \begin{verbatim} Using "lcmaps_run_with_pem_and_return_account" interface of LCMAPS Got individual certificate with subject: /O=dutchgrid/O=users/O=nikhef/CN=Oscar Koeroo/CN=proxy lcmaps_x509_to_voms_fqans(): voms data structure initialized lcmaps_x509_to_voms_fqans(): setting voms data for VO == dteam lcmaps_x509_to_voms_fqans(): setting voms data for VO server == /C=GR/O=HellasGrid/OU=hellasgrid.gr/CN=voms.hellasgrid.gr lcmaps_x509_to_voms_fqans(): TYP_STD lcmaps_get_attributes: found 0 generic attributes. lcmaps_x509_to_voms_fqans(): extracted '0' generic voms attributes lcmaps_x509_to_voms_fqans(): Success, VOMS destroy print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[ 1 / 1 ] print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].user_dn : /O=dutchgrid/O=users/O=nikhef/CN=Oscar Koeroo print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].user_ca : /C=NL/O=NIKHEF/CN=NIKHEF medium-security certification auth print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].voms_issuer_dn : /C=GR/O=HellasGrid/OU=hellasgrid.gr/CN=voms.hellasgrid.gr print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].voms_issuer_ca : /C=GR/O=HellasGrid/OU=Certification Authorities/CN=HellasGrid CA 2006 print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].uri : voms.hellasgrid.gr:15004 print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].date1 : 20110421100431Z print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].date2 : 20110422100431Z print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].voname : dteam print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].fqan_unix[ 1 / 1 ] print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].fqan_unix[1].fqan : /dteam/Role=NULL/Capability=NULL print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].fqan_unix[1].uid : -1 print_lcmaps_vomsdata(): lcmaps_vomsdata->voms[1].fqan_unix[1].gid : -1 lcmaps.mod-lcmaps_credential_store_x509(): Found LCMAPS vomsdata structure, adding it to the lcmaps_credentials. [...] \end{verbatim} \normalsize Each of the plugins will be loaded in the sequence described in the configuration section. Here is an example of the LCMAPS Verify Proxy plugin. \small \begin{verbatim} lcmaps.mod-lcmaps_runPluginManager(): Do lcmaps_runEvaluationManager() evaluationmanager: found plugin: /usr/lib64/lcmaps/lcmaps_verify_proxy.mod evaluationmanager: Resetting credential data. lcmaps.mod-lcmaps_resetCredentialData(): Called lcmaps.mod-lcmaps_runPlugin(): looking for plugin /usr/lib64/lcmaps/lcmaps_verify_proxy.mod lcmaps.mod-lcmaps_runPlugin(): found plugin /usr/lib64/lcmaps/lcmaps_verify_proxy.mod lcmaps.mod-lcmaps_runPlugin(): running plugin /usr/lib64/lcmaps/lcmaps_verify_proxy.mod lcmaps_plugin_verify_proxy-plugin_run(): lcmaps_plugin_verify_proxy-plugin_run(): found X.509 chain. lcmaps_plugin_verify_proxy-plugin_run(): found PEM string lcmaps_plugin_verify_proxy-plugin_run(): found lcmaps voms_data_list placeholder. lcmaps_plugin_verify_proxy-plugin_run(): vomsdata->nvoms = 1 lcmaps_plugin_verify_proxy-plugin_run(): vomsdata->voms = 19f9f500 lcmaps_plugin_verify_proxy-plugin_run(): vomsdata->voms[0] = 0 lcmaps_plugin_verify_proxy-plugin_run(): vomsdata->voms[0].userdn = /O=dutchgrid/O=users/O=nikhef/CN=Oscar Koeroo Debug: --- Reading the Private Key From PEM --- Info: Reading PEM string Debug: Reading Private key Debug: --- Welcome to the grid_verifyCert function --- Info: Using CA Directory: /etc/grid-security/certificates/ [...] \end{verbatim} \normalsize At the end of each plugin execution the LCMAPS framework will log if the module ended succesfully or not. This is important to understand the execution/control flow of the plugins by LCMAPS. \small \begin{verbatim} [...] lcmaps_runEvaluationManager: running plugin: /usr/lib64/lcmaps/lcmaps_verify_proxy.mod. : result true. \end{verbatim} \normalsize At the end of the exeuction of the LCMAPS framework a summary will be printed. The following example didn't map the user based on the VOMS FQANs but only on the DN to a \emph{uid} (Unix User ID) and \emph{pgid} (Unix primary Group ID): \small \begin{verbatim} LCMAPS CRED FINAL: DN:"/O=dutchgrid/O=users/O=nikhef/CN=Oscar Koeroo"->mapped uid:'539',pgid:'100' lcmaps.mod-lcmaps_run_with_pem_and_return_account(): LCMAPS found no secondary groups \end{verbatim} \normalsize % % Finish % \end{document} O OOO The local credentials that are gathered (UNIX uids, gids, VO information, AFS/Kerberos (?) tokens), are stored internally, but a new WP4 component, the job repository, is foreseen in which these credentials may be stored as well and which is accessible by other applications and services. The following LCMAPS plugins are currently available: \bi \item plugins providing the functionality that is equivalent to the functionality of the original gatekeeper: \bi \item \texttt{lcmaps\_localaccount.mod} (\textbf{A}): this plugin collects the local account name from a \emph{gridmap} file. \htmladdnormallink{More info ...}{apidoc/html/lcmaps_localaccount.mod.html} \item \texttt{lcmaps\_poolaccount} (\textbf{A}): this plugins collects a pool account name from a \emph{gridmap} file (leases in \$GRIDMAPDIR). \htmladdnormallink{More info ...}{apidoc/html/lcmaps_poolaccount.mod.html} \item \texttt{lcmaps\_posix\_enf.mod} (\textbf{E}): this plugin enforces the local credentials in the running process by posix system calls (setuid(), setgid() etc.). \htmladdnormallink{More info ...}{apidoc/html/lcmaps_posix_enf.mod.html} \item \texttt{lcmaps\_ldap\_enf.mod} (\textbf{E}): this plugin enforces the local credentials by setting the primary and secondary gids in the LDAP database that is used by the site as the source of account information for PAM or NSS. \htmladdnormallink{More info ...}{apidoc/html/lcmaps_ldap_enf.mod.html} \ei \item plugins that use the VOMS (VO Membership Service) attribute assertions in the user certificate for the credential mapping. \bi \item \texttt{lcmaps\_voms.mod} (\textbf{A}): this plugin extracts the VOMS information from the user X509 proxy certificate. \htmladdnormallink{More info ...}{apidoc/html/lcmaps_voms.mod.html} \item \texttt{lcmaps\_voms\_localgroup.mod} (\textbf{A}): this plugin tries to find a local group Id (gid) based on the VO information and a \emph{groupmapfile}. \htmladdnormallink{More info ...}{apidoc/html/lcmaps_voms_localgroup.mod.html} \item \texttt{lcmaps\_voms\_poolgroup.mod} (\textbf{A}): this plugin tries to find a pool group Id (gid) based on the VO information and a \emph{groupmapfile} (leases in \$GROUPMAPDIR) \htmladdnormallink{More info ...}{apidoc/html/lcmaps_voms_poolgroup.mod.html} \item \texttt{lcmaps\_voms\_poolaccount.mod} (\textbf{A}): this plugin tries to find a pool account based on the VO information and a \emph{gridmapfile} (leases in \$GRIDMAPDIR) \htmladdnormallink{More info ...}{apidoc/html/lcmaps_voms_poolaccount.mod.html} \ei \item plugins that give the user AFS (later also Kerberos5) access. \bi \item \texttt{lcmaps\_afs.mod} (\textbf{A/E}): this plugin has to run after the \texttt{lcmaps\_posix\_enf.mod} plugin has been run successfully. \htmladdnormallink{More info ...}{apidoc/html/lcmaps_afs.mod.html} \ei \item plugins that access (i.e. store lcmaps info in) the Job Repository: \bi \item \texttt{lcmaps\_jobrep.mod}: \htmladdnormallink{More info ...}{apidoc/html/lcmaps_jobrep.mod.html} \ei \item dummy plugins always answering yes or no (handy for testing the lcmaps policy: \bi \item \texttt{lcmaps\_dummy\_good.mod}: \htmladdnormallink{More info ...}{apidoc/html/lcmaps_dummy\_good.mod.html} \item \texttt{lcmaps\_dummy\_bad.mod}: \htmladdnormallink{More info ...}{apidoc/html/lcmaps_dummy\_bad.mod.html} \ei \ei More information on LCMAPS and other components of the Gridification subsystem can be found in: \bi \item the WP4 architecture document D4.2: \item plugins that use the VOMS (VO Membership Service) attribute assertions in the user certificate for the credential mapping. \htmladdnormallinkfoot{pdf version} {http://hep-proj-grid-fabric.web.cern.ch/hep-proj-grid-fabric/architecture/eu/WP4-architecture-2\_1.pdf} or \htmladdnormallinkfoot{doc version} {http://hep-proj-grid-fabric.web.cern.ch/hep-proj-grid-fabric/architecture/eu/WP4-architecture-2\_1.doc}. \item LCAS: \htmladdnormallinkfoot{http://www.dutchgrid.nl/DataGrid/wp4/lcas/edg-lcas-1.1/} {http://www.dutchgrid.nl/DataGrid/wp4/lcas/edg-lcas-1.1/} \item the description of the LCMAPS API: \htmladdnormallinkfoot{here}{apidoc/html/index.html} , \htmladdnormallinkfoot{PostScript file}{apidoc/latex/refman.ps} and \htmladdnormallinkfoot{PDF file}{apidoc/latex/refman.pdf}. \item the LCMAPS policy description language (pdl): \htmladdnormallinkfoot{here} {pdl\_requirements/index.html} , or as \htmladdnormallinkfoot{PostScript file}{pdl\_requirements.ps} or \htmladdnormallinkfoot{PDF file}{pdl\_requirements.pdf}. \item \htmladdnormallinkfoot{Job Repository} {../jr/index.html} \item the \htmladdnormallinkfoot{README}{README}, \htmladdnormallinkfoot{INSTALL}{INSTALL}, and \htmladdnormallinkfoot{LICENSE}{LICENSE} files. \item In \htmladdnormallinkfoot{README.AFS}{README.AFS} it is described what prerequisites are needed for the LCMAPS AFS module (most notably the gssklog package has to be setup). \item the file containing instructions how to avoid LDAP as a source of user accounting information \htmladdnormallinkfoot{README.NO\_LDAP}{README.NO\_LDAP}, \ei A few \emph{example} scripts are added, which can be used to setup poolaccounts, poolgroups in LDAP: \bi \item \htmladdnormallinkfoot{lcmaps\_gen\_poolacc\_ldif}{lcmaps\_gen\_poolacc\_ldif} \item \htmladdnormallinkfoot{lcmaps\_gen\_poolgroup\_ldif}{lcmaps\_gen\_poolgroup\_ldif} \item \htmladdnormallinkfoot{lcmaps\_make\_poolacc\_dir}{lcmaps\_make\_poolacc\_dir} \item \htmladdnormallinkfoot{lcmaps\_setup\_pool}{lcmaps\_setup\_pool} \ei \section{Installation} LCMAPS uses the globus security libraries (gss, gsi, openssl), which are provided by e.g. \htmladdnormallink{VDT}{http://www.lsc-group.phys.uwm.edu/vdt/edg_lcg.html} (Virtual Data Toolkit) and the VOMS API. These libraries in addition to the libraries listed \hyperref{here}{in table}{}{tab:rpms} , have to be installed on the CE. \btab \caption{RPMs to be installed. \label{tab:rpms} } \begin{center} \begin{htmlonly} \begin{tabular}{||l|l|l|l||} \hline RPM & min. version & description & URL \\ %\hline %\multicolumn{4}{ || c ||}{LCMAPS plugins} \\ \texttt{edg-lcmaps} & 0.0.16 & the LCMAPS library ( = pluginframework + utilities) and an example LCMAPS plugin & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{edg-lcmaps-basic\_plugins} & 0.0.16 & the LCMAPS plugins providing the basic globus-gatekeeper functionality & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{edg-lcmaps-voms\_plugins} & 0.0.16 & the LCMAPS plugins that base the credential mapping on the VO information inside the user certificate & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{edg-lcmaps-afs\_plugins} & 0.0.19 & the LCMAPS plugin that acquires an AFS token for the user (uses gssklog) & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{edg-lcmaps-jobrep\_plugins} & 0.0.23 & the LCMAPS plugin that stores user and job info in the Job Repository & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{edg-lcmaps-interface} & 0.0.1 & LCMAPS interface/API, only needed for software development (new plugins) & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{edg-lcfg-lcmaps} & 1.0 & the LCFG object that configures the LCMAPS configuration files & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} \\ \texttt{voms-api} & 1.1.16 & the VOMS API, used by \texttt{edg-lcmaps-voms\_plugins} & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp6/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp6/RPMS/} \\ \texttt{edg\_gatekeeper-gcc32dbg\_pgm} & 2.2.8 & the modified globus gatekeeper & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \texttt{globus-config} & 0.20-1 & globus configuration scripts, including the init.d gatekeeper script & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/globus/config/RPMS/} {http://datagrid.in2p3.fr/distribution/globus/config/RPMS/} \\ \texttt{edg-lcfg-globuscfg} & 1.3.12 & the LCFG component to manage the Globus configuration & \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} \\ \texttt{vdt\_globus\_essentials} & VDTALT1.1.8 & VDT globus rpm that contains a.o. the security libraries & \htmladdnormallink{http://www.lsc-group.phys.uwm.edu/vdt/vdt\_rpms/edg/vdt-1.1.8/globus\_coarse\_rpm/} {http://www.lsc-group.phys.uwm.edu/vdt/vdt\_rpms/edg/vdt-1.1.8/globus\_coarse\_rpm/} \\ \hline \end{tabular} \end{htmlonly} \begin{latexonly} \tiny \begin{tabular}{||l|l|l||} \hline RPM & min. version & description + URL \\ \hline \texttt{edg-lcmaps} & 0.0.16 & the LCMAPS library ( = pluginframework + utilities) and an example LCMAPS \\ && plugin \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{edg-lcmaps-basic\_plugins} & 0.0.16 & the LCMAPS plugins providing the basic globus-gatekeeper functionality \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{edg-lcmaps-voms\_plugins} & 0.0.16 & the LCMAPS plugins that base the credential mapping on the VO information \\ && inside the user certificate \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{edg-lcmaps-afs\_plugins} & 0.0.19 & the LCMAPS plugin that acquires an AFS token for the user (uses gssklog) \\ && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{edg-lcmaps-jobrep\_plugins} & 0.0.23 & the LCMAPS plugin that stores user and job info in the Job Repository \\ && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{edg-lcmaps-interface} & 0.0.1 & LCMAPS interface/API, only needed for software development (new plugins) \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{edg-lcfg-lcmaps} & 1.0 & the LCFG object that configures the LCMAPS configuration files \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} \\ \hline \texttt{voms-api} & 1.1.16 & the VOMS API, used by \texttt{edg-lcmaps-voms\_plugins} \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp6/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp6/RPMS/} \\ \hline \texttt{edg\_gatekeeper-gcc32dbg\_pgm} & 2.2.8 & the modified globus gatekeeper \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/gridification/RPMS/} \\ \hline \texttt{globus-config} & 0.20-1 & globus configuration scripts, including the init.d gatekeeper script \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/globus/config/RPMS/} {http://datagrid.in2p3.fr/distribution/globus/config/RPMS/} \\ \hline \texttt{edg-lcfg-globuscfg} & 1.3.12 & the LCFG component to manage the Globus configuration \\ \cline{3-3} && \htmladdnormallink{http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} {http://datagrid.in2p3.fr/distribution/autobuild/i386-rh7.3/wp4/edg-lcfg/RPMS/} \\ \hline \texttt{vdt\_globus\_essentials} & VDTALT1.1.8 & VDT globus rpm that contains a.o. the security libraries \\ \cline{3-3} && \htmladdnormallink{http://www.lsc-group.phys.uwm.edu/vdt/vdt\_rpms/edg/vdt-1.1.8/globus\_coarse\_rpm/} {http://www.lsc-group.phys.uwm.edu/vdt/vdt\_rpms/edg/vdt-1.1.8/globus\_coarse\_rpm/} \\ \hline \end{tabular} \end{latexonly} \end{center} \etab The LCMAPS library will be installed in \texttt{/opt/edg/lib/lcmaps/} and the example configuration files in \texttt{/opt/edg/etc/lcmaps/}. The LCMAPS plugins are all installed in the \texttt{lcmaps} subdirectory of the directory where LCMAPS is installed. \textbf{From CVS:}\\ The LCMAPS library and plugins can also be built directly from the \htmladdnormallinkfoot{cvs repository} {http://datagrid.in2p3.fr/cgi-bin/cvsweb.cgi/fabric\_mgt/gridification/lcmaps/} by the following steps: \bi \item \texttt{cvs export -r \ fabric\_mgt/gridification/lcmaps} -- export the source from CVS using a tagged version (e.g. v0\_0\_1) \item \texttt{cd fabric\_mgt/gridification/lcmaps; ./autogen.sh} -- run the bootstrap script to run autotools \item \texttt{./configure --prefix=} \texttt{--libdir=/lib/lcmaps} \\ \texttt{--includedir=/include/lcmaps} \texttt{--sysconfdir=/etc/lcmaps} -- run the configure script \item \texttt{make rpm} -- if you want to make the rpm \item \texttt{make; make install} -- build and install the LCMAPS Library and the LCMAPS plugins \item \texttt{make apidoc} -- if you want to create the API documentation. This is for example useful for developers of new LCMAPS plugins. \item \texttt{make userdoc} -- Generate this documentation. \ei \section{Configuration} The configuration involves both LCMAPS itself and the edg-gatekeeper. \subsection{Configuration of the edg-gatekeeper} The edg-gatekeeper is configurable with a few more command line options in addition to the normal globus-gatekeeper options: \begin{htmlonly} \bi \item \texttt{-lcmaps\_debug\_level }: set the debug level for LCMAPS (0--5, default: 0 (= no debugging)) \item \texttt{-lcmaps\_db\_file }: specifies the filename of the LCMAPS policy file (default: \texttt{lcmaps.db}). \item \texttt{-lcmaps\_etc\_dir }: specifies the directory where the LCMAPS configuration files are located (default: \texttt{/opt/edg/etc/lcmaps/}). \item \texttt{-lcmapsmod\_dir }: specifies the directory where the LCMAPS library is located (default: \texttt{/opt/edg/lib/lcmaps/}). \item \texttt{-lcas\_debug\_level }: set the debug level for LCAS (0--5, default: 0 (= no debugging)) \item \texttt{-lcas\_db\_file }: specifies the filename of the LCAS policy file (default: \texttt{lcas.db}). \item \texttt{-lcas\_etc\_dir }: specifies the directory where the LCAS authorization configuration files are located (default \texttt{/opt/edg/etc/lcas/}). \item \texttt{-lcas\_dir }: same as \textrm{-lcas\_etc\_dir }, deprecated. \item \texttt{-lcasmod\_dir }: specifies the directory where the LCAS library is located (default \texttt{/opt/edg/lib/lcas/}). \item \texttt{-plainoldglobus}: provides the old globus-gatekeeper functionality, LCAS and LCMAPS are not used. \item \texttt{-no\_lcas}: do not use LCAS. \item \texttt{-no\_lcmaps}: do not use LCMAPS (use standard gridmap functionality of gatekeeper). \ei \end{htmlonly} \begin{latexonly} \begin{tabbing} aaaaaaaaaaaaaaaaaaaaa: \= text \kill -lcmaps\_debug\_level $<$debug level$>$: \> set the debug level for LCMAPS (default: 0 (= no debugging))\\ -lcmaps\_db\_file $<$file$>$: \> specifies the filename of the LCMAPS policy file\\ \> (default: \texttt{lcmaps.db}).\\ -lcmaps\_etc\_dir $<$path$>$: \> specifies the directory where the LCMAPS configuration files\\ \> are located (default: \texttt{/opt/edg/etc/lcmaps/}).\\ -lcmapsmod\_dir $<$path$>$: \> specifies the directory where the LCMAPS library is located\\ \> (default: \texttt{/opt/edg/lib/lcmaps/}).\\ -lcas\_debug\_level $<$debug level$>$: \> set the debug level for LCAS (0--5, default: 0 (= no debugging))\\ -lcas\_db\_file $<$file$>$: \> specifies the filename of the LCAS policy file\\ (default: \texttt{lcas.db}).\\ -lcas\_etc\_dir $<$path$>$: \> specifies the directory where the LCAS authorization\\ \> configuration files are located (default \texttt{/opt/edg/etc/lcas/}).\\ -lcas\_dir $<$path$>$: \> same as \textrm{-lcas\_etc\_dir }, deprecated.\\ -lcasmod\_dir $<$path$>$: \> specifies the directory where the LCAS library is located\\ \> (default \texttt{/opt/edg/lib/lcas/}).\\ -plainoldglobus: \> provides the old globus-gatekeeper functionality,\\ \> LCAS and LCMAPS are not used.\\ -no\_lcas: \> do not use LCAS.\\ -no\_lcmaps: \> do not use LCMAPS (use standard gridmap functionality of\\ \> gatekeeper).\\ \end{tabbing} \end{latexonly} The directories where the poolaccount and poolgroup leases are registered, the so called gridmapdir and groupmapdir, can be passed to the gatekeeper by setting the environment variables \texttt{\$GRIDMAPDIR} and \texttt{\$GROUPMAPDIR} to the respective directories. The \texttt{globus.conf} file (usually residing in the \texttt{/etc} directory) contains the configuration parameters for the globus software. The gatekeeper init.d script uses this file to to configure the edg-gatekeeper. The following lines were added/modified in \texttt{/etc/globus.conf}: \bi \item[] \texttt{[gatekeeper]} \item[] \texttt{[...]} \item[] \texttt{globus\_gatekeeper=/opt/edg/sbin/edg-gatekeeper} \item[] \texttt{extra\_options="-lcas\_etc\_dir /opt/edg/etc/lcas/ -lcasmod\_dir /opt/edg/lib/lcas/ -lcas\_db\_file lcas.db -lcmaps\_etc\_dir /opt/edg/etc/lcmaps/ -lcmapsmod\_dir /opt/edg/lib/lcmaps -lcmaps\_db\_file lcmaps.db"} \ei The \texttt{globus\_gatekeeper=} line gives the path of the gatekeeper to be used and the \texttt{extra\_options=} line the gatekeeper options to be added. The \texttt{gridmapdir} and \texttt{groupmapdir} entries give the default locations for the poolaccount and poolgroup lease administration directories. \textbf{LCFG configuration:}\\ The \texttt{globus.conf} file can be created using the globus LCFG object contained in package \texttt{edg-lcfg-globuscfg}. The extra lines for the configuration files have to be specified in an LCFGng resource file in the way that is shown in the Computing Element resource file \htmladdnormallinkfoot{ComputingElement-cfg.h} {http://datagrid.in2p3.fr/cgi-bin/cvsweb.cgi/edg-release/ng\_source/ComputingElement-cfg.h}. \subsection{Configuration of LCMAPS} The LCMAPS reads its configuration, in particular the plugins that it should load and the local site policy from the file \texttt{lcmaps.db}. An example file is shown \begin{htmlonly} \htmladdnormallink{here}{lcmaps.db.ex}. \end{htmlonly} \begin{latexonly} here: \verbatiminput{lcmaps.db.ex} \end{latexonly} The default path to the LCMAPS plugins is specified on the line starting with \texttt{path =}. On the following lines aliases are defined for the complete plugin names and their options. For a description of the plugins and the options please refer to the man pages installed with the rpms, which can also be found in \htmladdnormallink{apidoc}{apidoc/html/pages.html}. In the current release the number of aliases attached to a plugin is limited to one. If one wants to use two aliases of for example the "localaccount" plugin, each alias corresponding to different options, this is not possible, unless a physical copy is mode of the plugin. This will be corrected in the next release. In the lines following the plugin definitions the local site policies are described. The policies follow the word ended by a colon. The policies are evaluated in order of appearance, until a policy evaluation returns a true result. In the example two policies are described: \begin{enumerate} \item default: This policy does pretty much the same as what the old gatekeeper did: check the gridmapfile with the user's DN for a local account or a poolaccount. \item voms: This policy uses the VOMS information in the user's proxy X509 certificate. First it checks if the VO info is actually there. If so, it tries to find local groups for this VO info or if it cannot find local groups it tries to find pool groups. If local groups \emph{were} found, in addition it will try to find pool groups. Then it will try to find a VOMS poolaccount (based on the VO information). The next step is to try to add the gids found to the LDAP directory (\texttt{ldap\_enf}) and enforce them in (\texttt{posix\_enf}) the calling process (become the user). \end{enumerate} A more elaborate description of the policy description language can be found \htmladdnormallinkfoot{here} {pdl\_requirements/index.html} , or as \htmladdnormallinkfoot{PostScript file}{pdl\_requirements.ps} or \htmladdnormallinkfoot{PDF file}{pdl\_requirements.pdf}. The configuration files needed by the plugins consist of the (ordinary) \texttt{grid-mapfile} (used by the plugins \texttt{localaccount}, \texttt{poolaccount} and \texttt{vomspoolaccount}) and a new file: the \texttt{groupmapfile} (used by the plugins vomslocalgroup and vomspoolgroup). This file contains line entries for "VO-GROUP-ROLE" combinations and a corresponding local/pool account. The "VO-GROUP-ROLE" combinations in the user's proxy will be compared to the entries in the \texttt{groupmapfile} and if a match is found, a gid is added to the list of local credentials for the user. An example \texttt{groupmapfile} is shown \begin{htmlonly} \htmladdnormallink{here}{groupmapfile.ex}. \end{htmlonly} \begin{latexonly} here: \verbatiminput{groupmapfile.ex} \end{latexonly} Note that one can use \texttt{'*'} as a wild character. The \texttt{vomspoolaccount} finds a pool account based on the VO information and on the user DN. Therefore, it looks in the \texttt{grid-mapfile} for "VO-GROUP-ROLE" combinations as is shown \begin{htmlonly} in \htmladdnormallink{this}{gridmapfile.ex} example. \end{htmlonly} \begin{latexonly} here: \verbatiminput{gridmapfile.ex} \end{latexonly} The leases that are maintained in the gridmapdir are, however, based on the user DN and the gids found prior to the \texttt{vomspoolaccount} call. The gridmapdir and groupmapdir directories that are needed by the various plugins can be set in the \texttt{lcmaps.db} file or by setting the environment variables \texttt{\$GRIDMAPDIR} and \texttt{\$GROUPMAPDIR} to the respective directories. \textbf{LCFG configuration:}\\ The LCMAPS policy file can also be created using the LCMAPS LCFG object contained in package \texttt{edg-lcfg-lcmaps}. The lines for the configuration files have to be specified in an LCFG resource file in the way that is shown in the Computing Element resource file \htmladdnormallinkfoot{ComputingElement-cfg.h} {http://datagrid.in2p3.fr/cgi-bin/cvsweb.cgi/edg-release/ng\_source/ComputingElement-cfg.h}. One should be careful when specifying asterixes and double quotes. The \texttt{groupmapfile} will be installed by the filecopy LCFG package \texttt{edg-lcfg-filecopy}. \section{Adding LCMAPS plugins} To be done. %In addition to the three standard authorization plugins, new plugins may be written. %The plugins have to be provided as shared objects. %When the LCAS receives an authorization request, it uses \texttt{dlopen} to open the plugin shared object. %The interface of the plugins to the LCAS consists of the following three functions, which are called %in order with a \texttt{dlsym} call by the LCAS: %\bi %\item \textbf{int plugin\_initialize(int argc, char **argv)}: \\ %Everything that is needed to initialize the plugin should be put inside this function. %Arguments as read from the LCAS database (\textbf{argc}, \textbf{argv}) are passed to the plugin. % %\item \textbf{int plugin\_confirm\_authorization(lcas\_request\_t request, lcas\_cred\_id\_t lcas\_cred)}: \\ %By this call, the LCAS asks the plugin for authorization by passing the request in RSL (later JDL) %and the user credential (\textbf{lcas\_cred}). %The user credential will contain information on the role the user wants to play. %In the RSL (JDL) the user might specify the resources he wants to use. %The authorization decision has to be made using this information. %The LCAS provides no library for parsing the RSL (JDL). %\item \textbf{int plugin\_terminate()}: \\ %Whatever is needed to terminate the plugin module goes in here. %\ei %If these symbols cannot be found by LCAS at runtime, an error occurs, resulting in an authorization failure. %More information on the plugin interface can be found in the \textbf{apidoc} documentation for the % \htmladdnormallink{plugin interface}{apidoc/html/group__PluginInterface.html}. %The LCAS Library also contains utilities for logging, file checking and (extremely simple) LCAS credential %handling. The API to be used by the LCAS plugins can be found in the \textbf{apidoc} documentation for the % \htmladdnormallink{API for the plugins}{apidoc/html/group__APIforPlugins.html}. %In order to use these utilities a line like %\begin{verbatim} %#include "lcas_modules.h" %\end{verbatim} %has to appear in the plugin source. %A line similar to %\begin{verbatim} %-I $GLOBUS_LOCATION/include/gcc32dbg -I /opt/edg/include/lcas %\end{verbatim} %has to be added to the compilation command line in order to include the LCAS and GLOBUS include directories. % %To make life easier for the plugin developer an example plugin has been written in C, %which is available in the LCAS % \htmladdnormallinkfoot{cvs repository} % {http://datagrid.in2p3.fr/cgi-bin/cvsweb.cgi/fabric\_mgt/gridification/lcas/plugin\_example}. %The example plugin is built using autotools (automake, autoconf, libtool), for which the files % \htmladdnormallinkfoot{configure.in} % {http://datagrid.in2p3.fr/cgi-bin/cvsweb.cgi/fabric\_mgt/gridification/lcas/configure.in} %and % \htmladdnormallinkfoot{Makefile.am} % {http://datagrid.in2p3.fr/cgi-bin/cvsweb.cgi/fabric\_mgt/gridification/lcas/plugin\_example/Makefile.am} %have to be present. %\begin{htmlonly} %The source code can be found % \htmladdnormallink{here}{apidoc/html/lcas__plugin__example_8c-source.html}. %\end{htmlonly} %\begin{latexonly} %The source code is shown here: %\tiny %\verbatiminput{lcas_plugin_example.c} %\end{latexonly} % %The new plugin can be tested without having a functioning edg-gatekeeper by running the program %\texttt{lcas-test} in the \texttt{src} directory of the LCAS cvs repository, %which is basically a copy of the part of the edg-gatekeeper that contacts the LCAS. \section{User guide} Empty. % % Finish % \end{document} lcmaps-1.6.6/doc/CHANGES_1.2.x-1.3.x0000644001726200004540000000164212471136645013100 00000000000000Changes between 1.2.x and 1.3.x: I. mapcounter functionality (multiple accounts per user) - lcmaps lib account moved to lcmaps lib - new method in lcmaps.c: lcmaps_run_with_fqans_mapcounter_and_return_account() II. PEM interface - new method in lcmaps.c: lcmaps_run_with_pem_and_return_account() - new method in lcmaps_return_account_from_pem.c: lcmaps_return_account_from_pem() - new method in lcmaps_verify_account_from_pem.c: lcmaps_verify_account_from_pem() - new pem routines in src/grid_credential_handling/x509 - routines in src/grid_credential_handling (lcmaps_credential.c and lcmaps_runvars.c) extended with pem format. - voms parsing routines in src/grid_credential_handling/gsi_handling extended with x509, stack_of(x509) method. III. verification mode for lcmaps and plugins - new method in lcmaps.c: lcmaps_run_and_verify_account_from_pem() - changes in lcmaps_pluginmanager.c IV. bug fix #8923 (enhancements) lcmaps-1.6.6/doc/lcmaps_gen_poolgroup_ldif0000644001726200004540000000423212471136645015647 00000000000000#! /usr/bin/perl # # Copyright (c) Members of the EGEE Collaboration. 2004-2010. # See http://www.eu-egee.org/partners/ for details on the copyright # holders. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Authors: # 2009- # Oscar Koeroo # Mischa Sall\'e # David Groep # NIKHEF Amsterdam, the Netherlands # # # 2007-2009 # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands # # 2003-2007 # Martijn Steenbakkers # Gerben Venekamp # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands $opt_n=50; $opt_l=3; $opt_basedn="dc=farmnet,dc=nikhef,dc=nl"; #$opt_nfs="hooimijt:/export/cache/edgdevtb/poolaccounts"; @optdef=qw( v pgb|poolgroupbase=s n:i basedn l:i b|gidbase:i ); use Getopt::Long; $Getopt::Long::ignorecase=0; &GetOptions(@optdef); $opt_pgb or die "No poolgroup basename specified\n"; length($opt_pgb)>5 and die "poolgroup basename too long\n"; $opt_b or die "No start of GID numbering specified\n"; $opt_v and print "Generating $opt_n poolgroups of basename $opt_pgb\n"; $opt_v and print "in DIT position $opt_basedn\n"; $fmtstring='%s%0'.$opt_l.'d'; for($i=1;$i<=$opt_n;$i++) { $gname=sprintf($fmtstring,$opt_pgb,$i); $n=$i+$opt_b; print "dn: cn=$gname, ou=PoolGroups, $opt_basedn\n"; print "objectclass: top\n"; print "objectclass: posixGroup\n"; print "cn: $gname\n"; print "gidNumber: $n\n"; print "description: poolgroup $n of $opt_pgb\n"; print "\n"; } lcmaps-1.6.6/doc/gridmapfile.ex0000644001726200004540000000036412471136645013333 00000000000000# Users with the VO-group info starting with "/VO=fred/GROUP=fred" # will receive an account from the 'fred' pool "/VO=fred/GROUP=fred*" .fred # All users from VO wilma will receive an account from the 'wilma' pool "/VO=wilma/GROUP=*" .wilma lcmaps-1.6.6/doc/lcmaps_make_poolacc_dir0000644001726200004540000000507012471136645015246 00000000000000#! /usr/bin/perl # # Copyright (c) Members of the EGEE Collaboration. 2004-2010. # See http://www.eu-egee.org/partners/ for details on the copyright # holders. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Authors: # 2009- # Oscar Koeroo # Mischa Sall\'e # David Groep # NIKHEF Amsterdam, the Netherlands # # # 2007-2009 # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands # # 2003-2007 # Martijn Steenbakkers # Gerben Venekamp # Oscar Koeroo # David Groep # NIKHEF Amsterdam, the Netherlands #ldapsearch -H ldap://tbn06.nikhef.nl/ \ # -b "ou=poolaccounts,dc=farmnet,dc=nikhef,dc=nl" -LLL -x \ # description | \ # awk -F: '/export/ {print "mkdir $NF" }' | \ # xargs mkdir use Net::LDAP qw(:all); # for all code use Net::LDAP::Util qw(ldap_error_name ldap_error_text); # for error handling use Getopt::Long; @optdef=qw( v:i ); $0 =~ s/.*\///; $Getopt::Long::ignorecase=0; &GetOptions(@optdef); $ldap = Net::LDAP->new( "tbn06.nikhef.nl", port=>389, timeout=>20 ); $ldap or die "Cannot contact remote tbn06: $!\n". " $ldap_error_name $ldap_error_text\n"; $results=$ldap->search( base=>"ou=poolaccounts,dc=farmnet,dc=nikhef,dc=nl", scope=>"sub", filter=>"(objectclass=*)" ); my @entries=$results->entries; foreach $entry ( @entries ) { $desc=$entry->get_value("description"); ($dir=$desc)=~s/.*://; $dir=~/\/export\// or next; $uid=$entry->get_value("uidNumber"); $gid=$entry->get_value("gidNumber"); print "mkdir -p $dir ; mkdir $dir/.ssh ; mkdir $dir/.globus\n"; print "ssh-keygen -f $dir/.ssh/id_rsa -q -t rsa -N \"\" -C \"autogenerated\" < /dev/null\n"; print "cat $dir/.ssh/id_rsa.pub > $dir/.ssh/authorized_keys2\n"; print "chmod 755 $dir\n"; print "chmod 755 $dir/.ssh\n"; print "chown -R $uid:$gid $dir\n"; } lcmaps-1.6.6/doc/groupmapfile.ex0000644001726200004540000000064612471136645013545 00000000000000# Users with the exact VO-group info "/VO=fred/GROUP=fred/ROLE=husband" # will be added to the local group "fredje1" "/VO=fred/GROUP=fred/ROLE=husband" fredje1 # Users with the VO-group info starting with "/VO=fred/GROUP=fred" # will be added to the allocated pool group "pool[1-9]*" "/VO=fred/GROUP=fred*" .pool # All users from VO wilma will be added to the allocated pool group "pool[1-9]*" "/VO=wilma/GROUP=*" .pool lcmaps-1.6.6/Doxyfile0000644001726200004540000013334712471136645011463 00000000000000# Doxyfile 1.3.5 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = lcmaps # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = $(VERSION) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = doc/apidoc # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, # Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en # (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, # Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is used # as the annotated text. Otherwise, the brief description is used as-is. If left # blank, the following values are used ("$name" is automatically replaced with the # name of the entity): "The $name class" "The $name widget" "The $name file" # "is" "provides" "specifies" "contains" "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = YES # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = NO # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = interface \ examples \ src \ src/evaluationmanager \ src/pluginmanager \ src/grid_credential_handling \ src/grid_credential_handling/gsi_handling \ ../lcmaps-plugins-basic/src/localaccount \ ../lcmaps-plugins-basic/src/poolaccount \ ../lcmaps-plugins-basic/src/ldap_enf \ ../lcmaps-plugins-basic/src/posix_enf \ ../lcmaps-plugins-basic/src/dummy \ ../lcmaps-plugins-voms/src/voms \ ../lcmaps-plugins-afs/src/afs \ ../lcmaps-plugins-jobrep/src/jobrep # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl *.cs *.php *.php3 *.inc FILE_PATTERNS = *.c \ *.h # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = CVS \ ../org.glite.security.lcmaps-plugins-jobrep/src/jobrep/lcmaps_voms_utils.c \ ../org.glite.security.lcmaps-plugins-jobrep/src/jobrep/lcmaps_voms_utils.h \ ../org.glite.security.lcmaps-plugins-jobrep/src/jobrep/jobrep_test.c \ ../org.glite.security.lcmaps-plugins-jobrep/src/jobrep/jobrep_test.h \ ../org.glite.security.lcmaps-interface/interface/lcmaps_types.h \ src/pluginmanager/lcmaps_test.c \ src/evaluationmanager/pdl_test.c # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = plugin_test.* \ lcmaps_gridlist.* \ test.c \ gridmap.c \ globus_* \ gssapi* \ pdl_lex.* \ pdl_yacc.* # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = YES # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = YES # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = STACK_OF(X509)=STACK_OF_X509 \ LCMAPS_GSI_MODE=1 \ ALLOW_EMPTY_CREDENTIALS=1 \ LCMAPS_USE_DLOPEN # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = LCMAPS_RETURN_POOLINDEX_C_STORAGE_CLASS \ LCMAPS_GSS_ASSIST_GRIDMAP_C_STORAGE_CLASS \ LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI_C_STORAGE_CLASS \ LCMAPS_C_STORAGE_CLASS # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse the # parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superseded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes that # lay further from the root node will be omitted. Note that setting this option to # 1 or 2 may greatly reduce the computation time needed for large code bases. Also # note that a graph may be further truncated if the graph's image dimensions are # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). # If 0 is used for the depth value (the default), the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO lcmaps-1.6.6/BUGS0000644001726200004540000000015412471136645010425 00000000000000There are no BUGS known in this version. If you found any, email us at grid-mw-security-support@nikhef.nl lcmaps-1.6.6/ChangeLog0000644001726200004540000213434512471136645011530 00000000000000------------------------------------------------------------------------ r18276 | msalle | 2015-02-18 17:09:01 +0100 (Wed, 18 Feb 2015) | 2 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/src/liblcmaps-noexport.sym M /trunk/lcmaps/src/liblcmaps.sym Minor addition to NEWS file, add new symbols to (unused) .sym files. ------------------------------------------------------------------------ r18217 | msalle | 2015-02-02 12:00:49 +0100 (Mon, 02 Feb 2015) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fix remaining documentation warnings. ------------------------------------------------------------------------ r18216 | msalle | 2015-02-02 11:46:42 +0100 (Mon, 02 Feb 2015) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_db_read.h M /trunk/lcmaps/interface/lcmaps_openssl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Fix minor compiler warnings: documentation mainly. ------------------------------------------------------------------------ r18215 | msalle | 2015-02-02 11:25:33 +0100 (Mon, 02 Feb 2015) | 3 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_basic.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_vo_data.h Fix doxygen/documentation compiler warnings (except retval which is a clang bug). ------------------------------------------------------------------------ r18213 | msalle | 2015-02-01 14:03:51 +0100 (Sun, 01 Feb 2015) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Stop pluginmanager if starting it failed: this will clean-up e.g. lex/yacc memory. ------------------------------------------------------------------------ r18158 | msalle | 2015-01-13 12:28:19 +0100 (Tue, 13 Jan 2015) | 8 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Fix few memory leaks: - certdir/vomsdir are dupped by VOMS_Init, so we can free them straight afterwards. - when selecting leaf cert, don't dup, just store. It's not freed itself in any case. - need to free lcmaps_credential->pem_string - simplify code-flow in conversion pem->chain ------------------------------------------------------------------------ r18118 | msalle | 2014-12-03 18:07:03 +0100 (Wed, 03 Dec 2014) | 2 lines Changed paths: M /trunk/lcmaps/doc/man/lcmaps.3 Range uses minus, not hyphen ------------------------------------------------------------------------ r17851 | msalle | 2014-07-08 19:23:48 +0200 (Tue, 08 Jul 2014) | 3 lines Changed paths: M /trunk/ees/src/main/main.c M /trunk/glexec/src/main_util.c M /trunk/lcas-lcmaps-gt4-interface/src/llgt_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps-plugins-afs/src/afs/lcmaps_afs.c M /trunk/lcmaps-plugins-basic/src/ban_dn/lcmaps_ban_dn.c M /trunk/lcmaps-plugins-basic/src/dummy/lcmaps_dummy_bad.c M /trunk/lcmaps-plugins-basic/src/dummy/lcmaps_dummy_good.c M /trunk/lcmaps-plugins-basic/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-basic/src/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps-plugins-basic/src/localaccount/lcmaps_localaccount.c M /trunk/lcmaps-plugins-basic/src/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps-plugins-basic/src/posix_enf/lcmaps_posix.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/lcmaps_c_pep.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/pep-c-obligation-handlers.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/pep-c-obligation-handlers_helpers.c M /trunk/lcmaps-plugins-jobrep/src/api/jobrep_odbc_api.c M /trunk/lcmaps-plugins-jobrep/src/jobrep/jobrep_data_handling.c M /trunk/lcmaps-plugins-jobrep/src/jobrep/lcmaps_jobrep.c M /trunk/lcmaps-plugins-tracking-groupid/src/tracking_groupid/lcmaps_tracking_groupid.c M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/lcmaps_verify_proxy.c M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/proxylifetime/lcmaps_proxylifetime.c M /trunk/lcmaps-plugins-voms/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_ban_fqan.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolgroup.c M /trunk/scas/src/scas-server/logging/scas_log.c M /trunk/scas/src/scas-server/main.c Fix compiler warnings resulting from casts, format etc. ------------------------------------------------------------------------ r17848 | msalle | 2014-07-08 10:39:48 +0200 (Tue, 08 Jul 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Cast to const void* instead of void* for printing, to prevent compiler warning. ------------------------------------------------------------------------ r17839 | msalle | 2014-07-07 21:28:25 +0200 (Mon, 07 Jul 2014) | 2 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Fix format related cast issues and use %p instead of 0x%x ------------------------------------------------------------------------ r17831 | msalle | 2014-07-07 17:24:01 +0200 (Mon, 07 Jul 2014) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_log.h Add correct format __attribute__ to vprintf type functions ------------------------------------------------------------------------ r17818 | msalle | 2014-07-03 13:42:13 +0200 (Thu, 03 Jul 2014) | 4 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Add printf format attribute for lcmaps_log() functions (and friends). Fix resulting compiler warnings, mostly casts, few missing or extra arguments. ------------------------------------------------------------------------ r17738 | msalle | 2014-04-10 15:28:41 +0200 (Thu, 10 Apr 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Use (local) defines for flags. At some point we should implement this in a nicer way via a header file. ------------------------------------------------------------------------ r17737 | msalle | 2014-04-10 15:20:49 +0200 (Thu, 10 Apr 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Fix two typos. ------------------------------------------------------------------------ r17735 | msalle | 2014-04-09 17:42:50 +0200 (Wed, 09 Apr 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Change confusing log messages talking about debugging level, change in log level. ------------------------------------------------------------------------ r17733 | msalle | 2014-04-09 17:18:18 +0200 (Wed, 09 Apr 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Also add the actual times in the log message about the relative verification times. ------------------------------------------------------------------------ r17727 | msalle | 2014-04-08 16:19:36 +0200 (Tue, 08 Apr 2014) | 13 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/_lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/_lcmaps_return_poolindex.h M /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_basic.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Add API two set the VOMS AC verification time, i.e. to wrap around the VOMS VOMS_SetVerificationTime() call. It can set the time to the UNIX time to use, or relative to the notBefore or notAfter time of the leaf proxy. Currently this can still fail in case the VOMS server cert has expired. A patch is submitted to have VOMS use the time also for the signature check. Also print the VOMS error together with our own error and print the (numerical) OpenSSL error stack. Unfortunately we don't have access to the VOMS error strings (and they are aimed at the voms tools). Add missing entries for the two functions added in 1.6.5. Update NEWS file. Update version. ------------------------------------------------------------------------ r17670 | msalle | 2014-03-21 12:48:34 +0100 (Fri, 21 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog M /trunk/lcmaps-plugins-afs/ChangeLog M /trunk/lcmaps-plugins-c-pep/ChangeLog M /trunk/lcmaps-plugins-jobrep/ChangeLog M /trunk/lcmaps-plugins-scas-client/ChangeLog A /trunk/saml2-xacml2-c-lib/xacml/ChangeLog M /trunk/scas/ChangeLog Updating ChangeLog files, adding ChangeLog file for xacml ------------------------------------------------------------------------ r17647 | msalle | 2014-03-13 11:56:06 +0100 (Thu, 13 Mar 2014) | 9 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_return_poolindex_without_gsi.h M /trunk/lcmaps/interface/lcmaps_verify_account_from_pem.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h Remove definitions of _C variables used to define _STORAGE_CLASS variables, which were used to declare function prototypes as extern except in the defining file. However, there is (normally) no need to declare a function prototype as extern in a header file: see C99 spec 6.2.2 point 5: "If the declaration of an identifier for a function has no storage-class specifier, its linkage is determined exactly as if it were declared with the storage-class specifier extern." ------------------------------------------------------------------------ r17646 | msalle | 2014-03-13 11:12:14 +0100 (Thu, 13 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Log differently when VERIFY_NONE or noLog differently when VERIFY_NONE or nott ------------------------------------------------------------------------ r17645 | msalle | 2014-03-13 10:59:54 +0100 (Thu, 13 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_basic.h Fix two typos ------------------------------------------------------------------------ r17644 | msalle | 2014-03-13 10:55:43 +0100 (Thu, 13 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_basic.h Forgot to change definitions from int -> unsigned int ------------------------------------------------------------------------ r17643 | msalle | 2014-03-13 10:51:28 +0100 (Thu, 13 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Get prototypes for VOMS functions from lcmaps_basic.h ------------------------------------------------------------------------ r17642 | msalle | 2014-03-13 10:36:33 +0100 (Thu, 13 Mar 2014) | 4 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c All flags are essentially bitmasks and we can therefore better use unsigned int, unfortunately VOMS_SetVerificationType() expects an int, so we have to cast somewhere. ------------------------------------------------------------------------ r17641 | msalle | 2014-03-13 10:28:16 +0100 (Thu, 13 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Missed one variable definition. ------------------------------------------------------------------------ r17640 | msalle | 2014-03-13 10:26:47 +0100 (Thu, 13 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/NEWS Fix entry for 1.6.5, part had been put under a (second) 1.6.4 entry ------------------------------------------------------------------------ r17639 | msalle | 2014-03-13 10:20:53 +0100 (Thu, 13 Mar 2014) | 19 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/interface/_lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/_lcmaps_return_poolindex.h M /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_basic.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Add two new API functions: void lcmaps_set_voms_attributes_verification (int verify_flags) int lcmaps_get_voms_attributes_verification (void) which provide more fine-grained setting of the VOMS verification: verify_flags should be a combination of the flags as specified in voms_apic.h: VERIFY_DATE, VERIFY_NOTARGET, VERIFY_KEY, VERIFY_SIGN, VERIFY_ORDER, VERIFY_ID, VERIFY_CERTLIST The old functions still work and behave as follows: lcmaps_enable_voms_attributes_verification -> sets VERIFY_FULL lcmaps_disable_voms_attributes_verification -> sets VERIFY_NONE lcmaps_is_set_to_verify_voms_attributes -> returns whether all *known* flags are set. The actual setting (overriding) of the flags, using VOMS_SetVerificationType() is *only* done when at least one of the known flags is unset. So when some unknown flag is added to the API and is not set, then we still do the full verification. Updated the NEWS file. ------------------------------------------------------------------------ r17636 | msalle | 2014-03-11 18:27:09 +0100 (Tue, 11 Mar 2014) | 2 lines Changed paths: M /trunk/glexec/src/glexec_epilog.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Replace #if HAVE... with #ifdef HAVE... ------------------------------------------------------------------------ r17597 | msalle | 2014-03-04 16:17:33 +0100 (Tue, 04 Mar 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c Only set DO_USRLOG: if that fails we automatically fall back to DO_SYSLOG, but we don't want both in general. ------------------------------------------------------------------------ r17596 | msalle | 2014-03-04 15:46:07 +0100 (Tue, 04 Mar 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Better not log at all when no logfile or pointer is specified: we haven't yet determined the loglevel. ------------------------------------------------------------------------ r17595 | msalle | 2014-03-04 15:42:31 +0100 (Tue, 04 Mar 2014) | 4 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Lower error to debug as it isn't an error: some interfaces always call lcmaps_log_open with both syslog and usrlog. If we don't have a logfile, just use syslog only. ------------------------------------------------------------------------ r17593 | msalle | 2014-03-04 15:08:21 +0100 (Tue, 04 Mar 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Fix remaining typos. ------------------------------------------------------------------------ r17592 | msalle | 2014-03-04 15:00:51 +0100 (Tue, 04 Mar 2014) | 10 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Fix https://bugzilla.nikhef.nl/show_bug.cgi?id=21 Cleanup log initialization: - in case no external logfile pointer is passed to LCMAPS, then in the lcmaps_*_account_from_pem and lcmaps_return_poolindex* interfaces, LCMAPS needs to use the LCMAPS_LOG_FILE environment variable. - get DO_USRLOG and DO_SYSLOG from _lcmaps_log.h. - remove related dead code. Update configure.ac and NEWS. ------------------------------------------------------------------------ r17559 | msalle | 2014-02-28 13:21:33 +0100 (Fri, 28 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Update ChangeLog ------------------------------------------------------------------------ r17553 | msalle | 2014-02-27 21:04:42 +0100 (Thu, 27 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps-plugins-afs/NEWS M /trunk/lcmaps-plugins-afs/configure.ac Update NEWS and version ------------------------------------------------------------------------ r17546 | msalle | 2014-02-27 14:40:10 +0100 (Thu, 27 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/liblcmaps-noexport.sym Replace lcmaps_warning into lcmaps_pdl_warning also in non-c/h files ------------------------------------------------------------------------ r17538 | msalle | 2014-02-27 11:38:17 +0100 (Thu, 27 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c Fix missing * ------------------------------------------------------------------------ r17537 | msalle | 2014-02-27 11:32:39 +0100 (Thu, 27 Feb 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h Fix renaming of lcmaps_warning into lcmaps_pdl_warning (it is not a general LCMAPS warning function) ------------------------------------------------------------------------ r17536 | msalle | 2014-02-27 11:12:15 +0100 (Thu, 27 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps-plugins-afs/src/afs/lcmaps_afs.c M /trunk/lcmaps-plugins-basic/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-basic/src/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps-plugins-basic/src/localaccount/lcmaps_localaccount.c M /trunk/lcmaps-plugins-basic/src/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/pep-c-interact.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/pep-c-obligation-handlers.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/pep-c-obligation-handlers_helpers.c M /trunk/lcmaps-plugins-jobrep/src/api/jobrep_odbc_api.c M /trunk/lcmaps-plugins-scas-client/src/saml2-xacml2/io_handler/ssl/ssl-common.c M /trunk/lcmaps-plugins-scas-client/src/saml2-xacml2/io_handler/xacml_io_ssl.c M /trunk/lcmaps-plugins-scas-client/src/scas-client/lcmaps_scas_client.c M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/proxylifetime/lcmaps_proxylifetime.c M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/verify-lib/src/verify_x509_utils.c M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/verify-lib/src_internal/_verify_x509.c M /trunk/lcmaps-plugins-voms/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localgroup.c M /trunk/scas/src/saml2-xacml2/io_handler/ssl/ssl-common.c M /trunk/scas/src/saml2-xacml2/io_handler/xacml_io_ssl.c M /trunk/scas/src/saml2-xacml2/server/pdp_xacml_authz_process.c M /trunk/scas/src/saml2-xacml2/server/pdp_xacml_lcas_lcmaps.c M /trunk/scas/src/scas-server/logging/scas_log.c M /trunk/scas/src/scas-server/main.c Fix GNU/pedantic compiler warnings ------------------------------------------------------------------------ r17529 | msalle | 2014-02-26 16:01:45 +0100 (Wed, 26 Feb 2014) | 7 lines Changed paths: M /trunk/glexec/src/glexec_ipc.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps-plugins-basic/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-basic/src/posix_enf/lcmaps_posix.c M /trunk/lcmaps-plugins-c-pep/src/c-pep/lcmaps_c_pep.c M /trunk/lcmaps-plugins-scas-client/interface/pep_obligation_handlers.h M /trunk/lcmaps-plugins-scas-client/src/saml2-xacml2/client/pep_obligation_handlers.c M /trunk/lcmaps-plugins-scas-client/src/saml2-xacml2/io_handler/network/net_common.c M /trunk/lcmaps-plugins-scas-client/src/scas-client/lcmaps_scas_client.c M /trunk/lcmaps-plugins-tracking-groupid/src/tracking_groupid/lcmaps_tracking_groupid.c M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/verify-lib/src_internal/_verify_x509.c M /trunk/lcmaps-plugins-voms/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localaccount.c M /trunk/scas/src/saml2-xacml2/io_handler/network/net_common.c M /trunk/scas/src/saml2-xacml2/io_handler/ssl/ssl-common.c M /trunk/scas/src/saml2-xacml2/io_handler/xacml_io_ssl.c Fix numerous small warnings: - break; after a return; is unreachable - unused macros Change back signature of the scas obligation handlers to be compatible with the type in the XACML library. Sync SCAS with lcmaps-plugins-scas-client ------------------------------------------------------------------------ r17513 | msalle | 2014-02-25 16:28:14 +0100 (Tue, 25 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Add missing } ------------------------------------------------------------------------ r17512 | msalle | 2014-02-25 16:23:05 +0100 (Tue, 25 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c Fix few more incorrect const char uses. ------------------------------------------------------------------------ r17511 | msalle | 2014-02-25 16:11:54 +0100 (Tue, 25 Feb 2014) | 4 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Add const to many implicitly constant variables, one exception: also change argName and argType in lcmaps_argument_t into const char *, since we initialize them normally with constant char * ------------------------------------------------------------------------ r17510 | msalle | 2014-02-25 15:27:01 +0100 (Tue, 25 Feb 2014) | 3 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Define log function prototypes with const char * instead of char *: they are not changed by the functions. ------------------------------------------------------------------------ r17507 | msalle | 2014-02-25 12:35:19 +0100 (Tue, 25 Feb 2014) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Protect against RH5 defining strdup() as a macro: by default gcc sets flags which cause strdup to be defined. So also check they aren't defined (as macro). Worst case then is a duplicate prototype. ------------------------------------------------------------------------ r17471 | msalle | 2014-02-21 11:28:50 +0100 (Fri, 21 Feb 2014) | 4 lines Changed paths: M /trunk/lcas-lcmaps-gt4-interface/src/Makefile.am M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps-plugins-c-pep/src/c-pep/Makefile.am M /trunk/lcmaps-plugins-jobrep/src/jobrep/Makefile.am M /trunk/lcmaps-plugins-scas-client/src/Makefile.am M /trunk/mwsec-utils/llrun/Makefile.am M /trunk/scas/src/Makefile.am Do not by default enable a large set of compiler warning flags: they are good for development, not for a distribution tarball... llrun: do enable -g and -O0 for GNU: it's a debug tool ------------------------------------------------------------------------ r17424 | msalle | 2014-02-13 15:50:57 +0100 (Thu, 13 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Update ChangeLog ------------------------------------------------------------------------ r17423 | msalle | 2014-02-13 14:55:35 +0100 (Thu, 13 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Cleanup yacc test. ------------------------------------------------------------------------ r17419 | msalle | 2014-02-12 21:51:16 +0100 (Wed, 12 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Fix implicit cast from int to size_t (only on platforms without getgrouplist). ------------------------------------------------------------------------ r17418 | msalle | 2014-02-12 21:43:35 +0100 (Wed, 12 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Add missing errno.h header file ------------------------------------------------------------------------ r17417 | msalle | 2014-02-12 20:14:28 +0100 (Wed, 12 Feb 2014) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Fix getgrouplist for MacOS: it has a different signature, needs unistd.h and should not have _XOPEN_SOURCE. ------------------------------------------------------------------------ r17416 | msalle | 2014-02-12 15:54:08 +0100 (Wed, 12 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c On MacOS at least getgrouplist() needs unistd.h ------------------------------------------------------------------------ r17415 | msalle | 2014-02-12 14:33:56 +0100 (Wed, 12 Feb 2014) | 13 lines Changed paths: M /trunk/lcmaps/NEWS D /trunk/lcmaps/lcmaps.spec M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Implement proper cleanup functions for lex, at least for flex. - after the evaluationmanager is done, we call our own wrapper function - this wrapper function calls yylex_destroy() when available. - it calls yy_delete_buffer etc. on older platforms. When there is no way to pass a correct _XOPEN_SOURCE macro to the lex output (i.e. flex is missing -D) we need to provide a proper strdup and fileno prototype to prevent a segfault (strdup will then return an int instead of a (char*) ). We now also don't need special CFLAGS, AM_CFLAGS is sufficient for all. Update NEWS file. ------------------------------------------------------------------------ r17410 | msalle | 2014-02-11 16:22:27 +0100 (Tue, 11 Feb 2014) | 3 lines Changed paths: M /trunk/glexec/src/main_util.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps-plugins-basic/src/posix_enf/lcmaps_posix.c Do not set *only* _BSD_SOURCE, but also _XOPEN_SOURCE macros. See man feature_test_macros: when we set both, we don't favour BSD versions. ------------------------------------------------------------------------ r17407 | msalle | 2014-02-11 12:43:45 +0100 (Tue, 11 Feb 2014) | 11 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Statically declare pdl_yylex() only for FLEX_SCANNER (this is defined in the .c output from flex). In that case, define yylex() as a wrapper around pdl_yylex(). Note that (older versions of) bison can only call yylex(). We now always declare yylex() in pdl.h, since even for flex we need a declaration: flex will declare a pdl_yylex() prototype for new flex, and nothing for old flex. ALso improve and fix the handling of lcmaps_init_name_args(). Change it's prototype to return an error value and log on which branch we are. Should not have initialized *plugin here, as it comes from caller. ------------------------------------------------------------------------ r17406 | msalle | 2014-02-11 10:33:32 +0100 (Tue, 11 Feb 2014) | 7 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Fix warnings about prototypes from (f)lex and yacc (bison): - define wrapper function for yyparse() inside pdl_yacc.y, for which we declare our own prototype in pdl.h. This wrapper function is the one called in the evaluationmanager.c. - define our own prototype via YY_DECL for the lexer (when using flex) pdl_yylex(). We can then also declare the prototype. ------------------------------------------------------------------------ r17405 | msalle | 2014-02-11 10:32:14 +0100 (Tue, 11 Feb 2014) | 3 lines Changed paths: M /trunk/ees/bootstrap M /trunk/glexec/bootstrap M /trunk/lcas/bootstrap M /trunk/lcas-lcmaps-gt4-interface/bootstrap M /trunk/lcas-plugins-basic/bootstrap M /trunk/lcas-plugins-check-executable/bootstrap M /trunk/lcas-plugins-voms/bootstrap M /trunk/lcmaps/bootstrap M /trunk/lcmaps-plugins-afs/bootstrap M /trunk/lcmaps-plugins-basic/bootstrap M /trunk/lcmaps-plugins-c-pep/bootstrap M /trunk/lcmaps-plugins-jobrep/bootstrap M /trunk/lcmaps-plugins-lcas/bootstrap M /trunk/lcmaps-plugins-scas-client/bootstrap M /trunk/lcmaps-plugins-tracking-groupid/bootstrap M /trunk/lcmaps-plugins-verify-proxy/bootstrap M /trunk/lcmaps-plugins-voms/bootstrap M /trunk/scas/bootstrap Add --force to autoheader: we do not provide our own headerfile template, so we want want to get that from autoheader. ------------------------------------------------------------------------ r17403 | msalle | 2014-02-10 11:56:07 +0100 (Mon, 10 Feb 2014) | 2 lines Changed paths: M /trunk/ees/bootstrap M /trunk/glexec/bootstrap M /trunk/lcas/bootstrap M /trunk/lcas-lcmaps-gt4-interface/bootstrap M /trunk/lcas-plugins-basic/bootstrap M /trunk/lcas-plugins-check-executable/bootstrap M /trunk/lcas-plugins-voms/bootstrap M /trunk/lcmaps/bootstrap M /trunk/lcmaps-plugins-afs/bootstrap M /trunk/lcmaps-plugins-basic/bootstrap M /trunk/lcmaps-plugins-c-pep/bootstrap M /trunk/lcmaps-plugins-jobrep/bootstrap M /trunk/lcmaps-plugins-lcas/bootstrap M /trunk/lcmaps-plugins-scas-client/bootstrap M /trunk/lcmaps-plugins-tracking-groupid/bootstrap M /trunk/lcmaps-plugins-verify-proxy/bootstrap M /trunk/lcmaps-plugins-voms/bootstrap M /trunk/saml2-xacml2-c-lib/xacml/bootstrap M /trunk/scas/bootstrap Update bootstrap scripts: should run libtoolize before aclocal ------------------------------------------------------------------------ r17402 | msalle | 2014-02-10 10:52:41 +0100 (Mon, 10 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c getgrouplist() needs _BSD_SOURCE ------------------------------------------------------------------------ r17401 | msalle | 2014-02-10 10:49:08 +0100 (Mon, 10 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Accidentally forgot to remove line. ------------------------------------------------------------------------ r17400 | msalle | 2014-02-10 10:40:49 +0100 (Mon, 10 Feb 2014) | 6 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Minor bugfixes: - some mallocs did not check for return value - need yylex prototype on older systems - invalid malloc+memcpy. Update NEWS file and version ------------------------------------------------------------------------ r17356 | msalle | 2014-02-06 17:11:01 +0100 (Thu, 06 Feb 2014) | 2 lines Changed paths: M /trunk/glexec/ChangeLog M /trunk/lcmaps/ChangeLog M /trunk/lcmaps-plugins-afs/ChangeLog M /trunk/lcmaps-plugins-basic/ChangeLog M /trunk/lcmaps-plugins-c-pep/ChangeLog M /trunk/lcmaps-plugins-jobrep/ChangeLog M /trunk/lcmaps-plugins-lcas/ChangeLog M /trunk/lcmaps-plugins-scas-client/ChangeLog M /trunk/lcmaps-plugins-tracking-groupid/ChangeLog M /trunk/lcmaps-plugins-verify-proxy/ChangeLog M /trunk/lcmaps-plugins-voms/ChangeLog M /trunk/scas/ChangeLog Update ChangeLog files. We are (hopefully) ready to release. ------------------------------------------------------------------------ r17353 | msalle | 2014-02-06 15:31:23 +0100 (Thu, 06 Feb 2014) | 2 lines Changed paths: M /trunk/lcmaps/NEWS Update NEWS for 1.6.2 ------------------------------------------------------------------------ r17289 | msalle | 2014-01-15 09:49:42 +0100 (Wed, 15 Jan 2014) | 3 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.db.ex Remove lcmaps_voms.mod from the lcmaps.db.ex example in the documentation and make its policies more standard. ------------------------------------------------------------------------ r17261 | msalle | 2013-12-19 12:30:58 +0100 (Thu, 19 Dec 2013) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Few improvements to protect against comparing size_t <0 or subtracting 1 from potentially zero unsigned variables. Use of multiple strlen -> in variable. ------------------------------------------------------------------------ r17257 | msalle | 2013-12-12 16:36:09 +0100 (Thu, 12 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fix segfault due to an old sprintf ------------------------------------------------------------------------ r17248 | msalle | 2013-12-12 13:40:53 +0100 (Thu, 12 Dec 2013) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Cleanup logging: too long -> truncate, when error: log that instead. Do not log on stderr. ------------------------------------------------------------------------ r17222 | msalle | 2013-12-09 17:26:53 +0100 (Mon, 09 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_plugin_prototypes.h Add comments to plugin prototypes ------------------------------------------------------------------------ r17221 | msalle | 2013-12-09 15:53:14 +0100 (Mon, 09 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c Provide yyparse protoype in evaluationmanager for bison version pre-2.6 ------------------------------------------------------------------------ r17220 | msalle | 2013-12-09 14:09:10 +0100 (Mon, 09 Dec 2013) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/lcmaps_plugin_typedefs.h Add missing #include for lcmaps_plugin_typedefs.h Replace if then else with AS_IF ------------------------------------------------------------------------ r17217 | msalle | 2013-12-09 11:24:10 +0100 (Mon, 09 Dec 2013) | 4 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c - Update list of headers for each without_gsi lib. - fix some of the #includes for without_gsi mode - fix implicit cast warnings. ------------------------------------------------------------------------ r17216 | msalle | 2013-12-08 22:06:09 +0100 (Sun, 08 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Convert printed size_t variables to long unsigned to prevent warning. ------------------------------------------------------------------------ r17215 | msalle | 2013-12-08 22:00:44 +0100 (Sun, 08 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_client.c M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/_lcmaps.h M /trunk/lcmaps/interface/_lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/_lcmaps_return_poolindex.h M /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_globus.h M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Add missing #include of stdio.h for NULL ------------------------------------------------------------------------ r17214 | msalle | 2013-12-08 17:34:01 +0100 (Sun, 08 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Should give full path to headers in interfacedir ------------------------------------------------------------------------ r17213 | msalle | 2013-12-08 16:27:42 +0100 (Sun, 08 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c printf format for size_t should be %u (or %lu) ------------------------------------------------------------------------ r17212 | msalle | 2013-12-08 16:15:30 +0100 (Sun, 08 Dec 2013) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Explicitly cast integer constants to right type. ------------------------------------------------------------------------ r17211 | msalle | 2013-12-06 14:26:28 +0100 (Fri, 06 Dec 2013) | 6 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/lcmaps_basic.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_openssl.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c - Cleanup included headers - Remove commented-out stuff from doc/Makefile.am - Do not install example plugin, only build it. - Add directly included headers at _SOURCES ------------------------------------------------------------------------ r17210 | msalle | 2013-12-05 18:12:28 +0100 (Thu, 05 Dec 2013) | 23 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/lcmaps_plugin_prototypes.h A /trunk/lcmaps/interface/lcmaps_plugin_typedefs.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Code cleanup and addition of plugin prototypes: - configure.ac * only link against dl when needed * remove obsolete of outdated tests - New headers lcmaps_plugin_prototypes.h (actual prototypes) and lcmaps_plugin_typedefs.h (function definition). lcmaps_plugin_prototypes.h is to be included by the plugins to provide the prototype, see also lcmaps_plugin_example.c lcmaps_pluginmanager.c: * remove 'general' plugin prototype and replace by proper prototypes - src/Makefile.am * cleanup include paths * cleanup EXTRA_DIST * set _XOPEN_SOURCE=500 for the lex code - Include non-standard headers using the proper subdir, we can then remove those dirs from the include path - make local functions static - add proper _XOPEN_SOURCE macros for -std=c99 - cleanup (partially) list of included headers - lineno is now always an int - handle errors in (v)snprintf ------------------------------------------------------------------------ r17191 | msalle | 2013-11-29 12:23:41 +0100 (Fri, 29 Nov 2013) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Remove reference to malloc.h ------------------------------------------------------------------------ r17190 | msalle | 2013-11-29 12:19:34 +0100 (Fri, 29 Nov 2013) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Add _XOPEN_SOURCE directives ------------------------------------------------------------------------ r17178 | dennisvd | 2013-11-25 11:54:01 +0100 (Mon, 25 Nov 2013) | 4 lines Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in remove architecture specific element from path in the example DB file, which goes to /usr/share. The /usr/lib vs. /usr/lib64 broke multilib installations. ------------------------------------------------------------------------ r17114 | msalle | 2013-11-06 15:43:43 +0100 (Wed, 06 Nov 2013) | 5 lines Changed paths: M /trunk/lcmaps/interface/lcmaps-globus-interface.pc.in M /trunk/lcmaps/interface/lcmaps-interface.pc.in M /trunk/lcmaps/interface/lcmaps-openssl-interface.pc.in M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps.pc.in - Move pkg-config requires for the interfaces to the Requires.private, cflags are still inherited. - Remove VOMS_CPP_LIBS from LDFLAGS of libraries that don't use VOMS directly. - Remove Libs.private for vomsapi, since we get it from the Requires.private. ------------------------------------------------------------------------ r16923 | msalle | 2013-02-27 14:09:27 +0100 (Wed, 27 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Updating ChangeLog ------------------------------------------------------------------------ r16922 | msalle | 2013-02-27 14:09:12 +0100 (Wed, 27 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am Adding BUGS to the dist tarball. ------------------------------------------------------------------------ r16921 | msalle | 2013-02-27 13:46:07 +0100 (Wed, 27 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog M /trunk/lcmaps-plugins-basic/ChangeLog M /trunk/lcmaps-plugins-voms/ChangeLog Updating ChangeLog files ------------------------------------------------------------------------ r16915 | msalle | 2013-02-27 11:33:42 +0100 (Wed, 27 Feb 2013) | 11 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Testing whether plugin is used twice was incomplete, inefficient and printed a broken error message. This is now fixed: - test that the actual library handle is different instead of the absolute pathname, this extends the error checking in case of symlinks or hardlinks to different names (which still don't work). - only check different plugin entries. - fix the error message, to print the two shortnames. - update NEWS file - update version ------------------------------------------------------------------------ r16905 | msalle | 2013-02-26 16:05:26 +0100 (Tue, 26 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Update ChangeLog ------------------------------------------------------------------------ r16904 | msalle | 2013-02-26 16:05:14 +0100 (Tue, 26 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/NEWS Add missing entry to NEWS file ------------------------------------------------------------------------ r16903 | msalle | 2013-02-26 16:02:38 +0100 (Tue, 26 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Updating ChangeLog ------------------------------------------------------------------------ r16899 | msalle | 2013-02-26 12:24:55 +0100 (Tue, 26 Feb 2013) | 6 lines Changed paths: M /trunk/lcas-lcmaps-gt4-interface/NEWS M /trunk/lcas-lcmaps-gt4-interface/configure.ac M /trunk/lcas-lcmaps-gt4-interface/doc/lcas_lcmaps_gt_interface.8 M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps-plugins-basic/NEWS M /trunk/lcmaps-plugins-basic/configure.ac M /trunk/lcmaps-plugins-basic/doc/lcmaps_localaccount.mod.8 M /trunk/lcmaps-plugins-basic/doc/lcmaps_poolaccount.mod.8 M /trunk/lcmaps-plugins-voms/NEWS M /trunk/lcmaps-plugins-voms/configure.ac M /trunk/lcmaps-plugins-voms/doc/lcmaps_voms_localaccount.mod.8 M /trunk/lcmaps-plugins-voms/doc/lcmaps_voms_poolaccount.mod.8 Updating versions for new gsissh features: - lcas_lcmaps_gt4_interface 0.3.0 - lcmaps 1.6.0 - lcas-plugins-basic 1.6.0 - lcas-plugins-voms 1.6.0 ------------------------------------------------------------------------ r16882 | msalle | 2013-02-25 16:38:59 +0100 (Mon, 25 Feb 2013) | 2 lines Changed paths: M /trunk/lcmaps/doc/man/lcmaps.3 Spell checked the manpage ------------------------------------------------------------------------ r16871 | msalle | 2013-02-25 14:12:10 +0100 (Mon, 25 Feb 2013) | 11 lines Changed paths: M /trunk/lcas-lcmaps-gt4-interface/NEWS M /trunk/lcmaps/NEWS M /trunk/lcmaps-plugins-basic/NEWS M /trunk/lcmaps-plugins-basic/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-basic/src/localaccount/lcmaps_localaccount.c M /trunk/lcmaps-plugins-basic/src/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps-plugins-voms/NEWS M /trunk/lcmaps-plugins-voms/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolaccount.c - Add support for the requested username in the poolaccount plugins: when a requested username is provided and does not match a resulting poolaccount mapping, the poolaccount plugin should fail. This is necessary to prevent LCMAPS to return succesfully with a different account then the requested username. - Update NEWS files with correct syntax for list of usernames (should be separated by a comma without any whitespace). - Make sure not to the a strncmp but a strcmp for the requested username. - Allow for a larger list of userids before calling realloc (was 4 now 256) - Clarify logmessage printed when a requested username is specified. ------------------------------------------------------------------------ r16862 | msalle | 2013-02-22 12:34:39 +0100 (Fri, 22 Feb 2013) | 3 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Cleanup code, protect against casting of NULL pointer return value of lcmaps_getArgValue() ------------------------------------------------------------------------ r16855 | msalle | 2013-02-21 20:24:33 +0100 (Thu, 21 Feb 2013) | 17 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Solve problem of storing requested_username without changing lcmaps_account_info_t (which would break plugins and gLExec), by passing extra arguments to internal functions: lcmaps_extractRunVars() lcmaps_runPluginManager() - lcmaps_account{.c,.h} are reverted - lcmaps_runPluginManager in lcmaps_pluginmanager.c only forwards the requested_username further to lcmaps_extractRunVars in lcmaps_runvars.c. - lcmaps_runvars.c now has the statics (needed for storing memory) local in lcmaps_extractRunVars instead of global, as long as they are on the heap, it's fine. - lcmaps_extractRunVars uses the input for separate parameter instead of new part of lcmaps_cred - All lcmaps interfaces in lcmaps.c pass NULL except for lcmaps_run_and_return_username which passes the req_username. ------------------------------------------------------------------------ r16850 | msalle | 2013-02-21 14:40:44 +0100 (Thu, 21 Feb 2013) | 7 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c Support input of a 'desired identity' for lcmaps_run_and_return_username() interface. LCMAPS will make this available to the plugins, which can use it to support grid-mapfile entries of the form "/DN" user1, user2 lcmaps_account_info_t now has an extra field, the username itself. ------------------------------------------------------------------------ r16744 | okoeroo | 2012-11-01 21:04:45 +0100 (Thu, 01 Nov 2012) | 1 line Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Revamped VOMS error messages because they are sometimes cryptic. They now also provide useful debugging hints for the admins. ------------------------------------------------------------------------ r16611 | msalle | 2012-10-25 14:51:27 +0200 (Thu, 25 Oct 2012) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Update ChangeLog ------------------------------------------------------------------------ r16543 | msalle | 2012-10-12 09:53:40 +0200 (Fri, 12 Oct 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Move cleanup of pdl memory in case of failure closer to pluginmanager to prevent missing prototype warning. ------------------------------------------------------------------------ r16542 | msalle | 2012-10-11 17:29:15 +0200 (Thu, 11 Oct 2012) | 5 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/lcmaps.c Bug fix for missing cleanup of pdl data when LCMAPS fails. This could trigger a segfault when LCMAPS is run multiple times, as in gsisshd, on certain systems. Updating version. ------------------------------------------------------------------------ r16521 | okoeroo | 2012-08-31 14:54:54 +0200 (Fri, 31 Aug 2012) | 1 line Changed paths: A /trunk/lcmaps/BUGS That bugs file ------------------------------------------------------------------------ r16420 | msalle | 2012-07-06 12:34:39 +0200 (Fri, 06 Jul 2012) | 3 lines Changed paths: M /trunk/lcmaps/ChangeLog Updating ChangeLog ------------------------------------------------------------------------ r16419 | msalle | 2012-07-05 17:23:06 +0200 (Thu, 05 Jul 2012) | 2 lines Changed paths: M /trunk/lcmaps/NEWS Updating the NEWS file. ------------------------------------------------------------------------ r16418 | msalle | 2012-07-05 17:15:51 +0200 (Thu, 05 Jul 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Add 'noyywrap' lex option to prevent a missing symbol error. ------------------------------------------------------------------------ r16409 | msalle | 2012-06-01 15:41:47 +0200 (Fri, 01 Jun 2012) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/_lcmaps.h M /trunk/lcmaps/interface/_lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/_lcmaps_return_poolindex.h M /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h Give all private macros prefix _, mainly in _lcmaps.h Most of these macros only work in the dlopen version. Updating version. ------------------------------------------------------------------------ r16405 | msalle | 2012-06-01 10:58:40 +0200 (Fri, 01 Jun 2012) | 17 lines Changed paths: M /trunk/lcmaps/interface/_lcmaps.h M /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_if.h Add few (empty) macros in the case LCMAPS_USE_DLOPEN is *not* defined, such that we can use the same code base in both cases: lcmaps_if.h: - always define LCMAPS_SET_LIBFILE_PATH and LCMAPS_SET_HELPER_PATH (the actual split is done in _lcmaps.h) _lcmaps.h: - _LCMAPS_SET_LIBFILE_PATH and _LCMAPS_SET_HELPER_PATH _lcmaps_return_account_from_pem.h: - _LCMAPS_DECL_HANDLE_RETURN_ACCOUNT_FROM_PEM should actually declare a variable, as it will be used later; - Rename the incorrect _LCMAPS_INTERFACE_RETURN_ACCOUNT_FROM_PEM into _LCMAPS_LOAD_RETURN_ACCOUNT_FROM_PEM and fix a problem in the definition of _LCMAPS_INIT_HANDLE_RETURN_ACCOUNT_FROM_PEM, needed to dereference the argument. ------------------------------------------------------------------------ r16329 | dennisvd | 2012-04-16 12:13:15 +0200 (Mon, 16 Apr 2012) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Updating ChangeLog ------------------------------------------------------------------------ r16328 | dennisvd | 2012-04-16 11:59:28 +0200 (Mon, 16 Apr 2012) | 2 lines Changed paths: M /trunk/lcmaps/NEWS updated the news for 1.5.5 ------------------------------------------------------------------------ r16327 | dennisvd | 2012-04-16 11:56:29 +0200 (Mon, 16 Apr 2012) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am Add -I../interface to the make rule for the NOGSI situation. This fixes the build failure with out-of-source builds (i.e. running configure from another directory than the top-level source). New version is 1.5.5. ------------------------------------------------------------------------ r16326 | dennisvd | 2012-04-16 09:49:48 +0200 (Mon, 16 Apr 2012) | 2 lines Changed paths: M /trunk/lcmaps/doc/man/lcmaps.3 typo: succesfully -> successfully (thanks, lintian!) ------------------------------------------------------------------------ r16256 | msalle | 2012-03-26 13:04:13 +0200 (Mon, 26 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Update ChangeLog ------------------------------------------------------------------------ r16234 | msalle | 2012-03-22 10:33:06 +0100 (Thu, 22 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Fix few typos ------------------------------------------------------------------------ r16233 | msalle | 2012-03-21 11:12:10 +0100 (Wed, 21 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Fix bug in parsing code: an unmatched " triggered an 'out of memory' error. ------------------------------------------------------------------------ r16186 | msalle | 2012-03-16 17:04:14 +0100 (Fri, 16 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Uncommenting export sym list, as we don't want to use it yet... ------------------------------------------------------------------------ r16184 | msalle | 2012-03-16 16:51:44 +0100 (Fri, 16 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Add missing continuation char ------------------------------------------------------------------------ r16183 | msalle | 2012-03-16 16:48:17 +0100 (Fri, 16 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Adding liblcmaps.sym to EXTRA_DIST ------------------------------------------------------------------------ r16178 | msalle | 2012-03-16 16:20:25 +0100 (Fri, 16 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Updating ChangeLog ------------------------------------------------------------------------ r16177 | msalle | 2012-03-16 16:16:23 +0100 (Fri, 16 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Protect large number of strdup() and *alloc() functions against out-of-mem ------------------------------------------------------------------------ r16161 | msalle | 2012-03-15 17:34:59 +0100 (Thu, 15 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Updating ChangeLog ------------------------------------------------------------------------ r16160 | msalle | 2012-03-15 17:32:47 +0100 (Thu, 15 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/NEWS Update NEWS file ------------------------------------------------------------------------ r16159 | msalle | 2012-03-15 17:15:50 +0100 (Thu, 15 Mar 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Replace unprintable chars by a ? ------------------------------------------------------------------------ r16140 | msalle | 2012-03-14 17:08:32 +0100 (Wed, 14 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Fix typo. ------------------------------------------------------------------------ r16139 | msalle | 2012-03-14 14:00:33 +0100 (Wed, 14 Mar 2012) | 6 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/liblcmaps-noexport.sym M /trunk/lcmaps/src/liblcmaps.sym M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Numerous fixes in unsafe log_* functions (fixes a SIGSEGV) Also replace logstr by __func__ Fix in credential store functions: make sure to dup the DN (fixes a SIGABRT or SIGSEGV). Need to export lcmaps_tokenize as it is being used by more than one lib. ------------------------------------------------------------------------ r16138 | okoeroo | 2012-03-14 11:23:51 +0100 (Wed, 14 Mar 2012) | 4 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac Updated NEWS file. ------------------------------------------------------------------------ r16137 | okoeroo | 2012-03-14 11:20:27 +0100 (Wed, 14 Mar 2012) | 7 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Fix to interpret the error code LCMAPS_CRED_NO_FQAN as a warning, not as an error. This problem was not observed in gLExec. This problem is confirmed in the newer LCAS-LCMAPS GT4 Interface code, due to the LCMAPS API is uses. Triggered by not having any VOMS credentials at all in the proxy certificate. ------------------------------------------------------------------------ r16136 | dennisvd | 2012-03-09 16:23:18 +0100 (Fri, 09 Mar 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am A /trunk/lcmaps/src/liblcmaps-noexport.sym A /trunk/lcmaps/src/liblcmaps.sym Introduce exported symbol list ------------------------------------------------------------------------ r15912 | msalle | 2012-01-30 14:18:36 +0100 (Mon, 30 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/ChangeLog Update ChangeLog ------------------------------------------------------------------------ r15897 | okoeroo | 2012-01-28 22:50:43 +0100 (Sat, 28 Jan 2012) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c LCMAPS will now push the certificate for the final delegation into the chain when LCMAPS has to work from a gss_cred_id_t. This is normative to what the framework expects, the plugins expect and what the other interfaces provide as well. ------------------------------------------------------------------------ r15896 | okoeroo | 2012-01-28 22:11:00 +0100 (Sat, 28 Jan 2012) | 5 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Reworked the certificate chain handling in LCMAPS. Should be normalized now thrhoughout the interfaces. ------------------------------------------------------------------------ r15895 | okoeroo | 2012-01-28 22:06:57 +0100 (Sat, 28 Jan 2012) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Removed dead code, cleaned code. ------------------------------------------------------------------------ r15894 | okoeroo | 2012-01-27 19:39:59 +0100 (Fri, 27 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Formating code only. Nothing done. ------------------------------------------------------------------------ r15885 | msalle | 2012-01-27 10:16:11 +0100 (Fri, 27 Jan 2012) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h Sync the internal globus struct with current version in http://viewcvs.globus.org/viewcvs.cgi/gsi/gssapi/source/library/gssapi_openssl.h Struct has not changed since version 1.4 Sat Jan 18 00:41:06 2003 UTC ------------------------------------------------------------------------ r15879 | msalle | 2012-01-26 16:07:15 +0100 (Thu, 26 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h Fix comment. ------------------------------------------------------------------------ r15877 | msalle | 2012-01-26 12:18:23 +0100 (Thu, 26 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h Add comments about internal globus structures and remove prototype of undefined (no longer defined) function. ------------------------------------------------------------------------ r15876 | msalle | 2012-01-26 12:07:08 +0100 (Thu, 26 Jan 2012) | 7 lines Changed paths: M /trunk/lcmaps/src/Makefile.am D /trunk/lcmaps/src/globus_gsi_gss_constants.h A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_globus_internal.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h D /trunk/lcmaps/src/grid_credential_handling/gsi_handling/globus_gsi_gss_constants.h D /trunk/lcmaps/src/grid_credential_handling/gsi_handling/gssapi_openssl.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c D /trunk/lcmaps/src/gssapi_openssl.h M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Cleanup of use of internal globus structures: introduce new header _lcmaps_globus_internal.h which defines the necessary structures locally (with non-clashing names). The necessary extraction functions are all defined in lcmaps_gsi_utils.c and are not publicly advertised. Cleanup of use of unused lcmaps_log_* variables in lcmaps_*_account_from_pem interfaces. ------------------------------------------------------------------------ r15866 | msalle | 2012-01-24 16:27:43 +0100 (Tue, 24 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Removing cleanup of buffer at EOF since it breaks multiple invocations of LCMAPS in one executable. ------------------------------------------------------------------------ r15861 | okoeroo | 2012-01-20 10:41:38 +0100 (Fri, 20 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac Bumping version of LCMAPS to 1.5.2 to reflect the getgrouplist() feature inclusion. ------------------------------------------------------------------------ r15860 | okoeroo | 2012-01-20 10:41:02 +0100 (Fri, 20 Jan 2012) | 8 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c When getgrouplist() is available on the system (checked for by ./configure), then the lcmaps_get_gidlist will internally use getgrouplist() to query the system for the (secondary) groups associated to a particular account. This function is notibly faster in environments where there is a central account database, e.g. LDAP. ------------------------------------------------------------------------ r15849 | msalle | 2012-01-16 11:55:04 +0100 (Mon, 16 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Update to call only yy_delete_buffer(), to stay compatible with flex 2.5.4. We seem to be using one buffer in any case. ------------------------------------------------------------------------ r15842 | msalle | 2012-01-11 12:38:36 +0100 (Wed, 11 Jan 2012) | 4 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Remove OpenSSL cleanup calls from lcmaps_term() since this might interfere with the calling application. ------------------------------------------------------------------------ r15840 | msalle | 2012-01-10 16:21:10 +0100 (Tue, 10 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Add cleanup code for OpenSSL to lcmaps_term(). Only OpenSSL leaks now come from VOMS. ------------------------------------------------------------------------ r15838 | msalle | 2012-01-10 15:37:37 +0100 (Tue, 10 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fix memleaks coming from flex. ------------------------------------------------------------------------ r15836 | dennisvd | 2012-01-10 12:49:11 +0100 (Tue, 10 Jan 2012) | 1695 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l A /trunk/mwsec-utils A /trunk/mwsec-utils/glexec_from_source A /trunk/mwsec-utils/lcaslcmaps_getaccount_cli A /trunk/mwsec-utils/lcmaps-tests A /trunk/mwsec-utils/lcmaps-tests/Makefile A /trunk/mwsec-utils/lcmaps-tests/config A /trunk/mwsec-utils/lcmaps-tests/config/unix.exp A /trunk/mwsec-utils/lcmaps-tests/lcmaps.db.in A /trunk/mwsec-utils/lcmaps-tests/lcmaps.test A /trunk/mwsec-utils/lcmaps-tests/lcmaps.test/nogsi.exp A /trunk/mwsec-utils/llgt_test A /trunk/mwsec-utils/llgt_test/Makefile A /trunk/mwsec-utils/llgt_test/llgt_test.c A /trunk/mwsec-utils/llrun A /trunk/mwsec-utils/llrun/build.sh A /trunk/mwsec-utils/llrun/ll_certification.sh A /trunk/mwsec-utils/llrun/llrun.c A /trunk/mwsec-utils/llrun/vomsfix.c A /trunk/mwsec-utils/mkgltempdir A /trunk/mwsec-utils/mkgltempdir/mkgltempdir A /trunk/mwsec-utils/sac_from_source A /trunk/mwsec-utils/sac_from_source/OSG_glite32cert.config A /trunk/mwsec-utils/sac_from_source/emi1rc.config A /trunk/mwsec-utils/sac_from_source/emi2rc.config A /trunk/mwsec-utils/sac_from_source/glexec_from_source.sh A /trunk/mwsec-utils/sac_from_source/glexec_globus_from_source.sh A /trunk/mwsec-utils/sac_from_source/glexec_globus_from_source.voms2.sh A /trunk/mwsec-utils/sac_from_source/glite32cert.config A /trunk/mwsec-utils/sac_from_source/glite32dev.config A /trunk/mwsec-utils/sac_from_source/glite_from_source.sh A /trunk/mwsec-utils/sac_from_source/internal-dev.config A /trunk/mwsec-utils/sac_from_source/nikhef_HEAD.config A /trunk/mwsec-utils/sac_from_source/sac_from_source.sh A /trunk/mwsec-utils/sutest A /trunk/mwsec-utils/sutest/sutest.c A /trunk/mwsec-utils/wrap-env-var A /trunk/mwsec-utils/wrap-env-var/Makefile.am A /trunk/mwsec-utils/wrap-env-var/README_glexecwrappers A /trunk/mwsec-utils/wrap-env-var/bootstrap A /trunk/mwsec-utils/wrap-env-var/configure.ac A /trunk/mwsec-utils/wrap-env-var/glexec_unwrapenv.pl A /trunk/mwsec-utils/wrap-env-var/glexec_warp.sh A /trunk/mwsec-utils/wrap-env-var/glexec_wrap.sh A /trunk/mwsec-utils/wrap-env-var/glexec_wrapenv.pl A /trunk/mwsec-utils/wrap-env-var/old A /trunk/mwsec-utils/wrap-env-var/old/unwrap-wrap-glexec-env.sh A /trunk/mwsec-utils/wrap-env-var/old/wrap-wrap-glexec-env.sh Copied from svn+ssh://svn@ndpfsvn.nikhef.nl/repos/pdpsoft/trunk/grid-mw-security/mwsec-utils Full change log: ------------------------------------------------------------------------ r2477 | msalle | 2012-01-09 11:34:56 +0100 (ma, 09 jan 2012) | 2 lines Changed paths: D /trunk/grid-mw-security/mwsec-utils/llrun/lcaslcmaps_getaccount_cli.c Removing old link ------------------------------------------------------------------------ r2476 | msalle | 2012-01-09 11:26:09 +0100 (ma, 09 jan 2012) | 2 lines Changed paths: M /trunk/grid-mw-security/mwsec-utils/llgt_test/llgt_test.c M /trunk/grid-mw-security/mwsec-utils/llrun/llrun.c Adding macros to test for dynamic library suffix. ------------------------------------------------------------------------ r2471 | msalle | 2012-01-06 11:34:26 +0100 (vr, 06 jan 2012) | 3 lines Changed paths: A /trunk/grid-mw-security/mwsec-utils/llgt_test A /trunk/grid-mw-security/mwsec-utils/llgt_test/Makefile A /trunk/grid-mw-security/mwsec-utils/llgt_test/llgt_test.c Adding llgt_test: a test tool for running the lcas-lcmaps-gt4-interface. ------------------------------------------------------------------------ r2470 | msalle | 2012-01-06 11:03:33 +0100 (vr, 06 jan 2012) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util A /trunk/grid-mw-security/mwsec-utils (from /trunk/grid-mw-security/glexec/util:2469) Moving glexec/util to mwsec-utils. ------------------------------------------------------------------------ r2469 | msalle | 2011-12-23 11:47:31 +0100 (vr, 23 dec 2011) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/sac_from_source/emi2rc.config Adding emi2 (RC) configs. ------------------------------------------------------------------------ r2468 | msalle | 2011-12-23 11:30:28 +0100 (vr, 23 dec 2011) | 7 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/sac_from_source.sh Numerous fixes to deal with the reorganised saml2-xacml2-c-lib: - it automatically figures out if there is a gsoap tarball shipped, if so it uses it, otherwise use system default - gsoap-prefix sets --with-gsoap=, also set in configflag file - component is not renamed inside the script, but an SVN tag can be specified as -C saml2_xacml2_c_lib,tag:tags/xacml/1_1_0 ------------------------------------------------------------------------ r2467 | dennisvd | 2011-12-22 16:49:28 +0100 (do, 22 dec 2011) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var/Makefile.am A /trunk/grid-mw-security/glexec/util/wrap-env-var/bootstrap A /trunk/grid-mw-security/glexec/util/wrap-env-var/configure.ac initial attempt at using autotools ------------------------------------------------------------------------ r2466 | msalle | 2011-12-21 13:13:08 +0100 (wo, 21 dec 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Updating version. ------------------------------------------------------------------------ r2430 | msalle | 2011-09-22 12:24:13 +0200 (do, 22 sep 2011) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/llrun/llrun.c Remove extra lcmaps_term calls (already called by the lcmaps_return_* functions). Add explicit call of va_end. Add (commented-out) calls to setvbuf to change to unbuffered output. ------------------------------------------------------------------------ r2419 | msalle | 2011-09-06 12:29:46 +0200 (di, 06 sep 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/sac_from_source.sh Use latest stable GT5 by default. ------------------------------------------------------------------------ r2302 | msalle | 2011-05-30 11:51:12 +0200 (ma, 30 mei 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/emi1rc.config M /trunk/grid-mw-security/glexec/util/sac_from_source/sac_from_source.sh Add EMI-1 tags for VOMS and PEP-API ------------------------------------------------------------------------ r2291 | msalle | 2011-05-03 14:50:52 +0200 (di, 03 mei 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/llrun/llrun.c Fix bug: fqans_idx was uninitialized. ------------------------------------------------------------------------ r2289 | msalle | 2011-04-29 11:48:03 +0200 (vr, 29 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/sac_from_source.sh Bumping version to 0.3.0: new tracking plugin etc. ------------------------------------------------------------------------ r2288 | msalle | 2011-04-29 11:46:35 +0200 (vr, 29 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/emi1rc.config Update LCMAPS-plugins-C-pep version to 1.1.4 ------------------------------------------------------------------------ r2285 | msalle | 2011-04-14 16:38:33 +0200 (do, 14 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/emi1rc.config Update lcmaps version and reorder in alphabetical order. ------------------------------------------------------------------------ r2282 | msalle | 2011-04-12 16:00:49 +0200 (di, 12 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/sac_from_source/emi1rc.config Update LL-GT4 and gLExec versions. ------------------------------------------------------------------------ r2276 | msalle | 2011-04-07 10:45:42 +0200 (do, 07 apr 2011) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli Adding symlinks to old dir names. ------------------------------------------------------------------------ r2275 | msalle | 2011-04-07 10:44:14 +0200 (do, 07 apr 2011) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util/glexec_from_source A /trunk/grid-mw-security/glexec/util/sac_from_source (from /trunk/grid-mw-security/glexec/util/glexec_from_source:2273) Renaming glexec_from_source dir into sac_from_source ------------------------------------------------------------------------ r2274 | msalle | 2011-04-07 10:43:18 +0200 (do, 07 apr 2011) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli Removing util/lcaslcmaps_getaccount_cli dir ------------------------------------------------------------------------ r2273 | msalle | 2011-04-07 10:41:35 +0200 (do, 07 apr 2011) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/ll_certification.sh A /trunk/grid-mw-security/glexec/util/llrun/ll_certification.sh (from /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/ll_certification.sh:2272) Moving ll_certification.sh into llrun directory ------------------------------------------------------------------------ r2272 | msalle | 2011-04-07 10:40:34 +0200 (do, 07 apr 2011) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/build.sh D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/llrun.c D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/vomsfix.c A /trunk/grid-mw-security/glexec/util/llrun (from /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli:2091) R /trunk/grid-mw-security/glexec/util/llrun/llrun.c (from /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/llrun.c:2093) Renaming lcas_lcmaps_get_account_cli directory into llrun ------------------------------------------------------------------------ r2271 | msalle | 2011-04-06 14:16:50 +0200 (wo, 06 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Small cosmetic change to printing results. ------------------------------------------------------------------------ r2270 | msalle | 2011-04-06 13:21:13 +0200 (wo, 06 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Updating C-pep version. ------------------------------------------------------------------------ r2269 | msalle | 2011-04-06 10:41:55 +0200 (wo, 06 apr 2011) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Adding lcmaps-plugins-tracking-groupid tag. ------------------------------------------------------------------------ r2268 | msalle | 2011-04-06 10:01:39 +0200 (wo, 06 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Adding support for lcmaps_plugins_tracking_groupid. ------------------------------------------------------------------------ r2254 | msalle | 2011-04-05 13:56:03 +0200 (di, 05 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Fix for non-locatable secondary globus deps: Set LD_LIBRARY_PATH ------------------------------------------------------------------------ r2252 | msalle | 2011-04-05 13:26:18 +0200 (di, 05 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Updating ees, glexec and lcmaps-plugins-basic versions. ------------------------------------------------------------------------ r2250 | okoeroo | 2011-04-04 22:06:27 +0200 (ma, 04 apr 2011) | 1 line Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/ll_certification.sh Able to build most to all interesting permutation of the LCAS and LCMAPS configuration file. (Yes, this is a lot of code monkey work) ------------------------------------------------------------------------ r2249 | msalle | 2011-04-04 18:00:25 +0200 (ma, 04 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update jobrep plugin version. ------------------------------------------------------------------------ r2248 | msalle | 2011-04-04 16:52:46 +0200 (ma, 04 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config gLExec tag: 0.8.7 ------------------------------------------------------------------------ r2247 | okoeroo | 2011-04-04 16:19:58 +0200 (ma, 04 apr 2011) | 1 line Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/ll_certification.sh Added LCAS config file creation lines ------------------------------------------------------------------------ r2246 | msalle | 2011-04-04 14:36:13 +0200 (ma, 04 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update EES and gLExec tags. ------------------------------------------------------------------------ r2245 | okoeroo | 2011-04-04 13:20:20 +0200 (ma, 04 apr 2011) | 1 line Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/ll_certification.sh New checks added ------------------------------------------------------------------------ r2244 | okoeroo | 2011-04-04 12:37:31 +0200 (ma, 04 apr 2011) | 1 line Changed paths: A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/ll_certification.sh Added the ll_certification.sh script. The script revolves around the llrun tool which is a stand-alone tool to test LCAS and LCMAPS. This new script will try out a set of configurations to assess if LCAS, LCMAPS and associated plug-ins are working as designed ------------------------------------------------------------------------ r2243 | msalle | 2011-04-04 11:33:02 +0200 (ma, 04 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh When DESTDIR="" is specified: explicitly remove the already set default setting. ------------------------------------------------------------------------ r2242 | msalle | 2011-04-01 17:23:54 +0200 (vr, 01 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update glexec version ------------------------------------------------------------------------ r2241 | msalle | 2011-04-01 16:13:30 +0200 (vr, 01 apr 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update EMI-1 versions. ------------------------------------------------------------------------ r2240 | msalle | 2011-03-31 17:48:41 +0200 (do, 31 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update versions to match EMI RC-3 and IGE ------------------------------------------------------------------------ r2239 | msalle | 2011-03-31 16:18:06 +0200 (do, 31 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update to EES to 0.0.7 ------------------------------------------------------------------------ r2238 | msalle | 2011-03-30 16:23:38 +0200 (wo, 30 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update EES tag ------------------------------------------------------------------------ r2237 | msalle | 2011-03-29 16:07:39 +0200 (di, 29 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update EES tag: 0.0.5 ------------------------------------------------------------------------ r2236 | msalle | 2011-03-28 15:49:27 +0200 (ma, 28 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Small fix: make dist should not lead to non-saving of voms flags. ------------------------------------------------------------------------ r2235 | msalle | 2011-03-24 14:04:50 +0100 (do, 24 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update tags: ees, lcmaps-plugins-c-pep, globus ------------------------------------------------------------------------ r2234 | msalle | 2011-03-22 11:53:05 +0100 (di, 22 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update lcmaps-plugins-jobrep version. ------------------------------------------------------------------------ r2230 | msalle | 2011-03-17 11:07:39 +0100 (do, 17 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Removing age, to follow new style in mwsec. ------------------------------------------------------------------------ r2225 | msalle | 2011-03-06 18:54:57 +0100 (zo, 06 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update versions to latest Release Candidate ------------------------------------------------------------------------ r2223 | msalle | 2011-03-04 14:13:55 +0100 (vr, 04 mrt 2011) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Remove tracking option: it doesn't make sense: we don't want to branch, just checkout ------------------------------------------------------------------------ r2220 | msalle | 2011-03-02 13:02:46 +0100 (wo, 02 mrt 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Updating glexec and lcmaps-plugins-c-pep versions, adding ees version. ------------------------------------------------------------------------ r2216 | msalle | 2011-03-01 13:28:27 +0100 (di, 01 mrt 2011) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Add missing --track option and changing the tag/branch name to include origin/ See git-checkout(1). ------------------------------------------------------------------------ r2215 | msalle | 2011-02-27 17:21:57 +0100 (zo, 27 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Fix typo in voms-includes dir. ------------------------------------------------------------------------ r2214 | msalle | 2011-02-25 16:13:31 +0100 (vr, 25 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Update jobrep tag ------------------------------------------------------------------------ r2213 | msalle | 2011-02-25 14:13:48 +0100 (vr, 25 feb 2011) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/emi1rc.config Tags for our emi-sac components matching EMI-1 ------------------------------------------------------------------------ r2208 | msalle | 2011-02-24 14:46:12 +0100 (do, 24 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/wrap-env-var/README_glexecwrappers M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrap.sh Update to remove /opt/glite reference. Now use /usr as default. ------------------------------------------------------------------------ r2206 | msalle | 2011-02-24 14:39:43 +0100 (do, 24 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Removing /opt/glite -> /usr ------------------------------------------------------------------------ r2205 | msalle | 2011-02-24 11:06:22 +0100 (do, 24 feb 2011) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Make failing dist tarball creation a non-fatal and separate error. Hence dependencies can still be successful. It will still be added to the failed components file to ease rebuilding. Also update the default svn root to the non-https Nikhef ndpf svn. ------------------------------------------------------------------------ r2184 | msalle | 2011-02-08 17:17:47 +0100 (di, 08 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Using default branch instead of tag for voms_git ------------------------------------------------------------------------ r2183 | msalle | 2011-02-07 17:12:24 +0100 (ma, 07 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Fix typo: lcmaps-interface should be lcmaps_interface ------------------------------------------------------------------------ r2182 | msalle | 2011-02-07 11:17:35 +0100 (ma, 07 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Update voms dependencies. ------------------------------------------------------------------------ r2181 | msalle | 2011-02-06 17:12:54 +0100 (zo, 06 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh VOMS still seems to have problems with default prefix: override it in any case. ------------------------------------------------------------------------ r2175 | msalle | 2011-02-03 15:55:16 +0100 (do, 03 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh EES is now properly in mwsec tree. ------------------------------------------------------------------------ r2174 | msalle | 2011-02-02 16:19:09 +0100 (wo, 02 feb 2011) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Rename voms component name into voms instead of org.glite.security.voms, for SVN and git. Also remove remaining remnants of build.common-cpp. ------------------------------------------------------------------------ r2171 | msalle | 2011-02-02 12:55:14 +0100 (wo, 02 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Install gsoap into the /gsoap-build directory. ------------------------------------------------------------------------ r2169 | msalle | 2011-02-02 11:52:10 +0100 (wo, 02 feb 2011) | 7 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh - Update usage/help text, in particular to clarify the different supported (configure) flags, also number of minor clarifications. - fix voms: no longer need to override default prefix. - fix bug in lcas-interface: forgot to set the checkout directory. - fix pep-api: new branch 2.0 does not need to override the prefix and datadir. ------------------------------------------------------------------------ r2165 | msalle | 2011-02-01 16:26:14 +0100 (di, 01 feb 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Move to version 2 of the PEP-api ------------------------------------------------------------------------ r2164 | msalle | 2011-02-01 11:00:46 +0100 (di, 01 feb 2011) | 8 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Add more general git support (gitget function) - gitrepo: and tag: are used to clone and checkout a git repository. - voms now defaults to git: * tag starting with glite-security-voms triggers CVS * tag svn triggers SVN * other tag git using that tag. Fix bug when forgetting to specify a component as first entry in a configline. ------------------------------------------------------------------------ r2163 | msalle | 2011-01-31 17:43:53 +0100 (ma, 31 jan 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh VOMS still sets default prefix on /opt/glite: override it. ------------------------------------------------------------------------ r2162 | msalle | 2011-01-31 17:09:14 +0100 (ma, 31 jan 2011) | 10 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Treat voms (git) on same footing as our own compo since it now properly conformsto the autotools. Removal of special voms= support, since it only complicates. Addition of make dist for voms (for git). Fix of old SVN (formerly devel) and CVS versions of VOMS: - set libdir correctly - use either ${prefix}/glite/security or ${myincludedir} (when specified) Properly use $PROG. ------------------------------------------------------------------------ r2161 | msalle | 2011-01-30 20:43:28 +0100 (zo, 30 jan 2011) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh - Make sure DISTDIR exists. - cleanup old-style voms (globus flavor) ------------------------------------------------------------------------ r2160 | msalle | 2011-01-30 18:40:33 +0100 (zo, 30 jan 2011) | 16 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Number of bug fixes: - removal globus libdir: it's almost impossible to hack around the hard-coded /lib - voms install location is now read in from file - rename gridsite_core module into gridsite, it wasn't consistent anyway - only save install locations for globus gridsite and voms when they fail: they're unimportant for other compos - properly return/propagate globus exit value. - fix mistake in setting old-style voms_includes - remove globus flavor from old-voms, it would not build libvomsapi.so, only flavoured ones and lcmaps etc. would fail. - set correct libdir for gsoap configure. Now builds on RH-5 old-style glite and new-style EPEL ------------------------------------------------------------------------ r2158 | msalle | 2011-01-28 15:47:39 +0100 (vr, 28 jan 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Fix voms_includes for old style voms. ------------------------------------------------------------------------ r2157 | msalle | 2011-01-28 15:18:24 +0100 (vr, 28 jan 2011) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Update ash -> sh and update globus flags for voms_cvs ------------------------------------------------------------------------ r2156 | msalle | 2011-01-28 14:45:46 +0100 (vr, 28 jan 2011) | 20 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh Many bugfixes, some new features: - jobrep_api and lcmaps_plugins_jobrep - make dist support, into DISTDIR which can be set using -F Only voms doesn't properly produce a dist tarball. - default DESTDIR is /tmp/build - removal of lcmaps .la files. - updates in help text. - always build in known_targets order, and skip duplicates (instead of error) - when building lcmaps/lcas don't build lcmaps/lcas-interface - support for libdir overrides. - split cvsget into cvsget and cvswebget - remove obsolete copy_files() - add warnings about 'created file' to failedfile.txt and configfile.txt - support for building externals gridsite, globus and voms in separate directories. - properly deal with lib vs lib64 in gridsite, voms and globus. - single flags: not combined lcmaps_flags but separate lcmaps_prefix_flag etc. - move from exit to myexit, which removes temp file. ------------------------------------------------------------------------ r2155 | msalle | 2011-01-25 18:12:52 +0100 (di, 25 jan 2011) | 11 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh (from /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh:2115) Major rework from glite_from_source.sh. Still in progress. New features: - uses the new mwsec svn repo by default. - installs in DESTDIR: sets correct flags for other components: can use to package tools. - saves configure flags for reuse - saves failed component name for reuse using -i - can import flags from file and command line (-f and -F) - can now specify tags etc. on commandline (-C) ------------------------------------------------------------------------ r2117 | okoeroo | 2010-12-16 12:12:55 +0100 (do, 16 dec 2010) | 8 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh Moved the lcmaps function to lcmaps_old. The new (plain) lcmaps function will NOT copy the .m4 files from the common_cpp directory. Further more the configure options are tailored to use the Globus non-threaded flavor (if a flavor is to be selected) and the VOMS library location is set. ------------------------------------------------------------------------ r2115 | msalle | 2010-12-01 16:12:20 +0100 (wo, 01 dec 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - new local function copy_files: srcdir targetdir files, only copies files when targetdir/file doesn't yet exist. ------------------------------------------------------------------------ r2114 | msalle | 2010-11-30 17:33:16 +0100 (di, 30 nov 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - fix for non-existing -n option for old cp: never fail on copy, just ignore return value. - removing common_cpp deps on lcmaps and lcmaps_interface ------------------------------------------------------------------------ r2113 | msalle | 2010-11-30 16:05:43 +0100 (di, 30 nov 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - changing cp flag -f into -n: only copy when doesn't exist. ------------------------------------------------------------------------ r2112 | okoeroo | 2010-11-27 19:25:07 +0100 (za, 27 nov 2010) | 3 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/nikhef_HEAD.config New config, only HEAD version for bleeding edge developments. ------------------------------------------------------------------------ r2110 | msalle | 2010-11-23 22:34:51 +0100 (di, 23 nov 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config Updating OSG_glite32cert.config to the decided lcmaps-plugins-scas-client version. ------------------------------------------------------------------------ r2108 | msalle | 2010-11-22 21:30:11 +0100 (ma, 22 nov 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh removing extraneous --with-globus flag for git voms build: it's no longer needed or understood. ------------------------------------------------------------------------ r2103 | msalle | 2010-11-18 18:27:11 +0100 (do, 18 nov 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/internal-dev.config Updating VOMS to certified version. ------------------------------------------------------------------------ r2100 | msalle | 2010-11-18 18:22:48 +0100 (do, 18 nov 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config Updating voms to latest in glite-3.2 certified. ------------------------------------------------------------------------ r2097 | msalle | 2010-11-18 17:36:44 +0100 (do, 18 nov 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config Updating: - glexec tag -> new one is certified - lcmaps (and interface) tag -> fixes bug found by Brian ------------------------------------------------------------------------ r2094 | msalle | 2010-11-18 15:37:44 +0100 (do, 18 nov 2010) | 6 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config - cert: new glexec 0.8.1-1 - dev: adding globus tag, updating lcmaps tag updating c-pep plugin tag ------------------------------------------------------------------------ r2093 | msalle | 2010-11-18 15:26:40 +0100 (do, 18 nov 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/llrun.c - Minor update of comments, reordering etc. - explicitly calling dlerror() before loading symbols to make sure we cannot fail on an old error (see dlsym manpage). ------------------------------------------------------------------------ r2092 | msalle | 2010-11-18 15:25:23 +0100 (do, 18 nov 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - Adding VOMS-from-git build, can be triggered using special tag:git for VOMS. ------------------------------------------------------------------------ r2091 | msalle | 2010-11-17 17:37:07 +0100 (wo, 17 nov 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/llrun.c Reordering typedef definition: lc*a*s_t needs opts_t and cred_t. ------------------------------------------------------------------------ r2090 | msalle | 2010-11-17 17:33:44 +0100 (wo, 17 nov 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Adding symlink lcaslcmaps_getaccount_cli.c to new style llrun.c ------------------------------------------------------------------------ r2089 | msalle | 2010-11-17 16:34:32 +0100 (wo, 17 nov 2010) | 7 lines Changed paths: D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/Makefile A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/build.sh D /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/llrun.c M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/vomsfix.c New version of the previous lcaslcmaps_getaccount_cli.c: - code cleanup - new lcmaps api support: disabling voms - support for different syslog facility. - adding a build.sh script to automat(g)ically build cross-platform ------------------------------------------------------------------------ r2088 | okoeroo | 2010-11-13 18:23:49 +0100 (za, 13 nov 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Added the use of the lcmaps_account_info_clean() function. It will be dynamically loaded and executed when the LCMAPS framework run is done, or when an error occured and the account information needs to be cleaned up. It will free the lcmaps_account_info_t struct. ------------------------------------------------------------------------ r2083 | okoeroo | 2010-11-10 12:15:40 +0100 (wo, 10 nov 2010) | 3 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/internal-dev.config Added special configuration for internal development purposes. ------------------------------------------------------------------------ r2081 | aramv | 2010-11-09 21:13:56 +0100 (di, 09 nov 2010) | 1 line Changed paths: M /trunk/grid-mw-security/ees-plugins-one/src/main.c M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Initial commit of EESObligationHandler prototype ------------------------------------------------------------------------ r2077 | okoeroo | 2010-11-08 22:35:14 +0100 (ma, 08 nov 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config Updated SCAS-Client tag ------------------------------------------------------------------------ r2076 | okoeroo | 2010-11-02 17:20:43 +0100 (di, 02 nov 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config Updated active development version of SCAS to the latest tag. Which solve the build issue that the man page will not be overwritten by GNU install. ------------------------------------------------------------------------ r2073 | msalle | 2010-11-02 13:22:02 +0100 (di, 02 nov 2010) | 17 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - glite_from_source.sh: lcmaps_interface no longer needs globus paths, since it no longer needs globus or voms. Only needs the m4 macros for the AC_DEFUNC() definitions in the configure. - OSG_glite32cert.config: - moving glexec tag to glite32cert part. - updating lcmaps(-interface) version to 1.4.25-1 - downgrading voms version to 1.9.17-1 (due to 2 voms bugs) - glite32cert.config: - updating glexec to new - downgrading voms version to 1.9.17-1 (due to 2 voms bugs) - glite32dev.config: - updating glexec, lcmaps and lcmaps_interface to latest versions. ------------------------------------------------------------------------ r2069 | msalle | 2010-10-28 22:02:34 +0200 (do, 28 okt 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - adding -v option: printing version. - first version: 0.1.0-1 ------------------------------------------------------------------------ r2066 | msalle | 2010-10-28 11:02:59 +0200 (do, 28 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir -V option should be lower case in help... ------------------------------------------------------------------------ r2065 | msalle | 2010-10-28 11:01:57 +0200 (do, 28 okt 2010) | 16 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir - few bug fixes: removal didn't work, because gLExec 0.8 (and 0.7) no longer stays in cwd if chdir to homedir fails, but *returns* to cwd. If that fails (e.g. permission denied) gLExec does a cd to /. Hence securedir must in any case be 711 when trying to remove tmpdir. Furthermore the argument to rmdir and rm -rf must be absolute. - adding -v option: version - updating help to show all possible options, including -h, -f and the new -v - fixing problem with options needing an argument, but not getting one: shift 2 failed resulting in an endless loop. - explicitly adding a path and having script figuring out the location of all the tools. - adding variable for rmdir. - changing one missing chmod into $chmod ------------------------------------------------------------------------ r2064 | msalle | 2010-10-22 13:26:00 +0200 (vr, 22 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - updating globus URL for tbz download ------------------------------------------------------------------------ r2063 | msalle | 2010-10-22 09:29:48 +0200 (vr, 22 okt 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - adding support for -x option: exit on error, in which case the script exits as soon as a target build fails. ------------------------------------------------------------------------ r2062 | msalle | 2010-10-21 17:03:37 +0200 (do, 21 okt 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - automatically making source, build and globus directories absolute by adding cwd. Updating usage() accordingly. - adding warning() convenience function. ------------------------------------------------------------------------ r2061 | msalle | 2010-10-21 15:59:47 +0200 (do, 21 okt 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - adding voms_devel() which is triggered when specifying special voms tag devel - updating glite32dev to actually use the voms_devel (as used in glite_branch_3_2_dev ------------------------------------------------------------------------ r2060 | msalle | 2010-10-21 15:33:08 +0200 (do, 21 okt 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.voms2.sh Syncing with glexec_globus_from_source.sh ------------------------------------------------------------------------ r2059 | msalle | 2010-10-21 15:32:39 +0200 (do, 21 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Removing dead code ------------------------------------------------------------------------ r2058 | msalle | 2010-10-21 15:28:45 +0200 (do, 21 okt 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config Updating lcmaps_plugins_basic tag and reordering to make differences with glite_3_2_cert clearer. ------------------------------------------------------------------------ r2053 | msalle | 2010-10-20 20:55:23 +0200 (wo, 20 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config - updating pep-c version to match glite_3_2_cert ------------------------------------------------------------------------ r2052 | msalle | 2010-10-20 11:04:27 +0200 (wo, 20 okt 2010) | 12 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - included error function - error when target is included >1 - usage() prints possible exit values - glexec pre-0.8 and newstyle both build, automatically switches based on given tag. - saml2-xacml2-c-lib looks for gsoaps-2.7*.tar.gz, if present: unpack, otherwise assume it's included in the source. This allows building both 0.0.* and 0.1.* versions. - ees svnroot autosetting updated: when no tag or HEAD is given, use trunk/ otherwise use tags/ ------------------------------------------------------------------------ r2051 | msalle | 2010-10-19 17:30:08 +0200 (di, 19 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32cert.config M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config HEAD doesn't work for EES, due to the svn nature... ------------------------------------------------------------------------ r2050 | msalle | 2010-10-19 17:29:10 +0200 (di, 19 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config lcas-plugins-basic tag didn't exist: should (probably) be the one from _cert ------------------------------------------------------------------------ r2049 | msalle | 2010-10-19 17:00:36 +0200 (di, 19 okt 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/OSG_glite32cert.config A /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32cert.config A /trunk/grid-mw-security/glexec/util/glexec_from_source/glite32dev.config - adding the suggested CVS tag configuration files ------------------------------------------------------------------------ r2048 | msalle | 2010-10-19 17:00:00 +0200 (di, 19 okt 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - adding possibility to print supported etics download platforms: -p help - clarifying usage() text - print warning text when no targets are specified ------------------------------------------------------------------------ r2047 | msalle | 2010-10-18 12:41:47 +0200 (ma, 18 okt 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh - fix lcmaps_interface: it needs globus (unfortunally), now it matches etics again. - print total build time in seconds. ------------------------------------------------------------------------ r2046 | msalle | 2010-10-15 15:48:52 +0200 (vr, 15 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh remove extra echo ------------------------------------------------------------------------ r2045 | msalle | 2010-10-15 15:47:30 +0200 (vr, 15 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh copy&paste typo: source is now in uppercase ------------------------------------------------------------------------ r2044 | msalle | 2010-10-15 15:36:02 +0200 (vr, 15 okt 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_from_source.sh (from /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh:2043) D /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh rename into glite_from_source.sh since it's not always globus from source ------------------------------------------------------------------------ r2043 | msalle | 2010-10-15 15:35:06 +0200 (vr, 15 okt 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh - merge globus source / etics: switched using -p ------------------------------------------------------------------------ r2042 | msalle | 2010-10-15 14:44:25 +0200 (vr, 15 okt 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh - bugfix: when using custom dir, svnget should remove that one. ------------------------------------------------------------------------ r2041 | msalle | 2010-10-15 14:36:56 +0200 (vr, 15 okt 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh - cvsget/svnget/get now can unpack in a custom dir: needed for lcmaps_interface which uses same lcmaps source as lcmaps itself. - when downloading via webcvs always remove old source dir. ------------------------------------------------------------------------ r2040 | msalle | 2010-10-14 17:24:17 +0200 (do, 14 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh Small change to make eval more reliable. ------------------------------------------------------------------------ r2039 | msalle | 2010-10-14 16:49:38 +0200 (do, 14 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh fix typo in ees component ------------------------------------------------------------------------ r2038 | msalle | 2010-10-14 16:16:13 +0200 (do, 14 okt 2010) | 7 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh - svn checkout needs explicit download directory. - fix copy&paste typo for lcmaps_plugins_voms - add missing setdeps for lcas_interface target ------------------------------------------------------------------------ r2037 | msalle | 2010-10-14 15:09:06 +0200 (do, 14 okt 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh Fixing typos in lcmaps_plugins_voms module ------------------------------------------------------------------------ r2036 | msalle | 2010-10-14 14:52:17 +0200 (do, 14 okt 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh - specified directories should be absolute - reorder build and print function ------------------------------------------------------------------------ r2035 | msalle | 2010-10-14 14:36:56 +0200 (do, 14 okt 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh ash(es) to sh ------------------------------------------------------------------------ r2034 | msalle | 2010-10-14 14:35:19 +0200 (do, 14 okt 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh Dropping newline in known target list ------------------------------------------------------------------------ r2033 | msalle | 2010-10-14 14:23:58 +0200 (do, 14 okt 2010) | 8 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh A /trunk/grid-mw-security/glexec/util/glexec_from_source/glite_globus_from_source.sh First checkin glexec_from_source new style, adding - config file - input file for targets - redirect of std{err,out} - ... ------------------------------------------------------------------------ r1983 | dennisvd | 2010-09-30 16:46:47 +0200 (do, 30 sep 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcmaps-tests/lcmaps.test/nogsi.exp removed spurious encoded '/' from the poolindex ------------------------------------------------------------------------ r1982 | dennisvd | 2010-09-30 16:27:30 +0200 (do, 30 sep 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/lcmaps-tests/Makefile A /trunk/grid-mw-security/glexec/util/lcmaps-tests/config A /trunk/grid-mw-security/glexec/util/lcmaps-tests/config/unix.exp A /trunk/grid-mw-security/glexec/util/lcmaps-tests/lcmaps.db.in A /trunk/grid-mw-security/glexec/util/lcmaps-tests/lcmaps.test A /trunk/grid-mw-security/glexec/util/lcmaps-tests/lcmaps.test/nogsi.exp Initial check-in of test suite. ------------------------------------------------------------------------ r1981 | dennisvd | 2010-09-30 16:23:32 +0200 (do, 30 sep 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/lcmaps-tests new test suite for lcmaps interfaces ------------------------------------------------------------------------ r1980 | dennisvd | 2010-09-30 15:05:16 +0200 (do, 30 sep 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Oscar gets a cookie for finding a copy+paste bug; loadlcmaps with the wrong mode. LCMAPS_RETURN_ACCOUNT_WITHOUT_GSI instead of LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI. ------------------------------------------------------------------------ r1977 | dennisvd | 2010-09-29 11:29:10 +0200 (wo, 29 sep 2010) | 1 line Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c strdup is not required for fqans ------------------------------------------------------------------------ r1950 | dennisvd | 2010-09-28 10:44:36 +0200 (di, 28 sep 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/Makefile rudimentary Makefile for building this utility. ------------------------------------------------------------------------ r1949 | dennisvd | 2010-09-27 22:35:52 +0200 (ma, 27 sep 2010) | 10 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Extended to include the without_gsi interface calls: - added command-line option to select mode - added command-line options to set DN and FQAN - renamed the lcmaps functions that were under control of #ifdef blocks to mode specific ones - conditional loading of symbols from lcmaps library depending on mode Yet untested. ------------------------------------------------------------------------ r1947 | okoeroo | 2010-09-24 15:42:55 +0200 (vr, 24 sep 2010) | 10 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Split the interfaces by using three different defines: Used by gLExec: #define LCMAPS_RETURN_ACCOUNT_FROM_PEM Use by Without GSI: #define LCMAPS_RETURN_POOLINDEX_WITHOUT_GSI #define LCMAPS_RETURN_ACCOUNT_WITHOUT_GSI ------------------------------------------------------------------------ r1928 | msalle | 2010-09-21 16:33:24 +0200 (di, 21 sep 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Make sure also TMPDIR is accessible for the target user. ------------------------------------------------------------------------ r1927 | msalle | 2010-09-21 15:54:45 +0200 (di, 21 sep 2010) | 8 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Two fixes: - mktemp only uses absolute path templates, including the main one for targetdir. gLExec tries a chmod to the target homedir, so the directory would have been made there, not in stickydir. - temporarily open securedir for mktemp, because glexec now runs in / not in the cwd of the calling user. ------------------------------------------------------------------------ r1926 | msalle | 2010-09-21 15:22:27 +0200 (di, 21 sep 2010) | 9 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir - making sure all paths are absolute, hopefully portable enough. For glexec itself, the location will be based on GLEXEC_LOCATION if set, or alternatively GLITE_LOCATION if that is set, or /opt/glite in other cases. Note that gLExec does not use PATH since it calls execve which ignores PATH. Note: it seems the current setup is broken, since securedir is 0700, which means any subdir is unaccessible?! ------------------------------------------------------------------------ r1900 | okoeroo | 2010-08-30 19:03:06 +0200 (ma, 30 aug 2010) | 9 lines Changed paths: M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrap.sh This fix will address GGUS ticket 58560: "glite-GLEXEC_wn makes uses of GLEXEC_LOCATION instead of GLITE_LOCATION" The script will build-up a BASEDIR. The GLEXEC_LOCATION will be used first, with a fall back to GLITE_LOCATION and if that is not set, the "/opt/glite" directory will be used as a best guess. ------------------------------------------------------------------------ r1875 | msalle | 2010-08-09 12:59:52 +0200 (ma, 09 aug 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.voms2.sh Adding missing lcmaps to list of deps for scas-client ------------------------------------------------------------------------ r1873 | msalle | 2010-08-04 16:42:17 +0200 (wo, 04 aug 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c - properly cleaning rsl and pemstring ------------------------------------------------------------------------ r1870 | msalle | 2010-07-30 12:28:50 +0200 (vr, 30 jul 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.voms2.sh - writing out {,} constructions - consistently using exit values ------------------------------------------------------------------------ r1859 | msalle | 2010-07-19 13:47:53 +0200 (ma, 19 jul 2010) | 10 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Making the getMajorVersion() lookup almost failsafe...: - It first looks in the global symbols using dlopen(NULL,...). This works when compiled with -rdynamic or -L. -lvomsfix - It then tries to dlopen libvomsfix.so. - When that fails, it tries to dlopen liblcas.so ------------------------------------------------------------------------ r1858 | msalle | 2010-07-19 12:22:33 +0200 (ma, 19 jul 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c By compiling with -rdynamic or linking with -export-dynamic, we can remove the external vomsfix library and instead include the missing symbols internally. ------------------------------------------------------------------------ r1841 | msalle | 2010-07-07 16:44:31 +0200 (wo, 07 jul 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Updating license & copyright ------------------------------------------------------------------------ r1840 | msalle | 2010-07-07 15:56:07 +0200 (wo, 07 jul 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_unwrapenv.pl M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrap.sh M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrapenv.pl Adding copyright & license ------------------------------------------------------------------------ r1839 | msalle | 2010-07-06 16:50:03 +0200 (di, 06 jul 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.voms2.sh Adding the EES ------------------------------------------------------------------------ r1838 | msalle | 2010-07-06 16:33:48 +0200 (di, 06 jul 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/vomsfix.c Moving the voms dirty hack fixes to a separate c file. By compiling those into a dynamic library we use it at build time and prevent the missing symbols even without linking/loading LCAS. ------------------------------------------------------------------------ r1837 | msalle | 2010-07-06 14:24:17 +0200 (di, 06 jul 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Fix for specifying -s twice (it closed stderr...). ------------------------------------------------------------------------ r1836 | msalle | 2010-07-06 11:45:31 +0200 (di, 06 jul 2010) | 6 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c - fix bug for optind: only decrease for -l and -L when no options were given. - do proper cast at dlsym - default: no external headers. - define dummy getMajorVersionNumber() etc. to fix bug with VOMS ------------------------------------------------------------------------ r1835 | msalle | 2010-07-06 10:54:36 +0200 (di, 06 jul 2010) | 6 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c - re-typedef-fing lcas_request_t - almost re-typedef-fing lcmaps_account_t - making both easily switchable between using the local typedef, or using the header file. ------------------------------------------------------------------------ r1834 | msalle | 2010-07-06 10:46:56 +0200 (di, 06 jul 2010) | 5 lines Changed paths: M /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Added more help text: - includes warnings on unset variables - these can partially be suppressed using the new option -q. ------------------------------------------------------------------------ r1833 | msalle | 2010-07-05 17:37:40 +0200 (ma, 05 jul 2010) | 5 lines Changed paths: A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli A /trunk/grid-mw-security/glexec/util/lcaslcmaps_getaccount_cli/lcaslcmaps_getaccount_cli.c Adding a demo LCAS/LCMAPS get account command line program, which mimics the behaviour of gLExec and can be used to debug the LCAS and LCMAPS config files setup. ------------------------------------------------------------------------ r1831 | msalle | 2010-06-30 18:00:06 +0200 (wo, 30 jun 2010) | 2 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.voms2.sh Adding test version for VOMS API version 2 ------------------------------------------------------------------------ r1830 | msalle | 2010-06-30 17:06:07 +0200 (wo, 30 jun 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Update for the new gsoap-from-tarball construction (in saml2_xacml2_c_lib) ------------------------------------------------------------------------ r1822 | msalle | 2010-06-29 17:48:23 +0200 (di, 29 jun 2010) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.dev.sh File is now the current glexec_globus_from_source.sh ------------------------------------------------------------------------ r1821 | msalle | 2010-06-29 17:06:11 +0200 (di, 29 jun 2010) | 4 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Move towards the new modular scripts, which can build all or just a few components. ------------------------------------------------------------------------ r1819 | msalle | 2010-06-25 16:24:49 +0200 (vr, 25 jun 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.dev.sh Fixing type in deps for lcas_plugins_voms ------------------------------------------------------------------------ r1818 | msalle | 2010-06-25 15:48:34 +0200 (vr, 25 jun 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.dev.sh fix temporary directory locations... ------------------------------------------------------------------------ r1817 | msalle | 2010-06-25 15:47:30 +0200 (vr, 25 jun 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.dev.sh Fix for unset globus flavour... ------------------------------------------------------------------------ r1816 | msalle | 2010-06-25 15:03:25 +0200 (vr, 25 jun 2010) | 3 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.dev.sh Adding the magic script... ------------------------------------------------------------------------ r1811 | msalle | 2010-06-23 21:05:22 +0200 (wo, 23 jun 2010) | 8 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Adding: LCMAPS plugins-afs LCMAPS plugins-gums SCAS LCAS-LCMAPS GT4-interface The GT4 interface needs two extra build targets for globus (only when from source). ------------------------------------------------------------------------ r1790 | msalle | 2010-06-18 14:23:05 +0200 (vr, 18 jun 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Adding lcas-plugins-voms and its dependency GridSite core ------------------------------------------------------------------------ r1789 | msalle | 2010-06-18 12:13:19 +0200 (vr, 18 jun 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh - build.common-cpp can use HEAD now (=3_2_8_1) ------------------------------------------------------------------------ r1788 | msalle | 2010-06-18 12:11:10 +0200 (vr, 18 jun 2010) | 2 lines Changed paths: D /trunk/grid-mw-security/glexec/util/glexec_from_source/common-cpp_gt5.patch - GT5 patch is no longer needed, thanks to Eamonn Kenny fixing build.common-cpp! ------------------------------------------------------------------------ r1787 | msalle | 2010-06-18 12:03:38 +0200 (vr, 18 jun 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Adding locations (commented out) for GT5 ------------------------------------------------------------------------ r1786 | msalle | 2010-06-17 21:21:37 +0200 (do, 17 jun 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh - fix -rpath option, not clear why it worked in the first place... Now should be ok for Darwin! ------------------------------------------------------------------------ r1785 | msalle | 2010-06-17 17:57:05 +0200 (do, 17 jun 2010) | 4 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source/common-cpp_gt5.patch Adding patch for org.glite.build.common-cpp/m4/globus.m4 to correctly detect Globus Toolkit 5. ------------------------------------------------------------------------ r1753 | msalle | 2010-06-10 16:47:28 +0200 (do, 10 jun 2010) | 3 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Re-enabled wget of globus tarball ------------------------------------------------------------------------ r1752 | msalle | 2010-06-10 16:43:43 +0200 (do, 10 jun 2010) | 10 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Heavily reworked the glexec-from-source scripts: - all builds are done via functions in order to allow the conditional builds, see next point. - all builds are conditional: when they are bound to fail, due to missing dependencies don't build. - a grand overview of the results is only presented at the end, specifying SUCCESS, FAILED, or MISSING DEPENDENCIES (=hasn't built) - use wget+tar instead of cvs co ------------------------------------------------------------------------ r1742 | msalle | 2010-06-04 14:26:35 +0200 (vr, 04 jun 2010) | 2 lines Changed paths: M /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh A /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_globus_from_source.sh Adding second script which ALSO builds globus from tarball! ------------------------------------------------------------------------ r1741 | msalle | 2010-06-04 10:26:18 +0200 (vr, 04 jun 2010) | 4 lines Changed paths: A /trunk/grid-mw-security/glexec/util/glexec_from_source A /trunk/grid-mw-security/glexec/util/glexec_from_source/glexec_from_source.sh Adding build script to build gLExec and its gLite dependencies from the CVS sources. ------------------------------------------------------------------------ r416 | okoeroo | 2009-06-10 09:58:56 +0200 (wo, 10 jun 2009) | 1 line Changed paths: M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_unwrapenv.pl M /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrapenv.pl Updated intended usage section in the scripts ------------------------------------------------------------------------ r410 | okoeroo | 2009-06-09 20:11:24 +0200 (di, 09 jun 2009) | 3 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var/README_glexecwrappers Adding README file to the repo ------------------------------------------------------------------------ r408 | okoeroo | 2009-06-09 20:00:56 +0200 (di, 09 jun 2009) | 3 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_warp.sh Adding symlink (can svn do this nicely) ------------------------------------------------------------------------ r407 | okoeroo | 2009-06-09 19:59:48 +0200 (di, 09 jun 2009) | 4 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrap.sh Adding the wrapper scripts, that wraps the environment variables wrapper and unwrapper scripts for gLExec ------------------------------------------------------------------------ r389 | okoeroo | 2009-06-04 11:27:14 +0200 (do, 04 jun 2009) | 3 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var/old A /trunk/grid-mw-security/glexec/util/wrap-env-var/old/unwrap-wrap-glexec-env.sh (from /trunk/grid-mw-security/glexec/util/wrap-env-var/unwrap-wrap-glexec-env.sh:365) A /trunk/grid-mw-security/glexec/util/wrap-env-var/old/wrap-wrap-glexec-env.sh (from /trunk/grid-mw-security/glexec/util/wrap-env-var/wrap-wrap-glexec-env.sh:365) D /trunk/grid-mw-security/glexec/util/wrap-env-var/unwrap-wrap-glexec-env.sh D /trunk/grid-mw-security/glexec/util/wrap-env-var/wrap-wrap-glexec-env.sh Moved my shell script solutions. ------------------------------------------------------------------------ r388 | okoeroo | 2009-06-04 11:25:29 +0200 (do, 04 jun 2009) | 4 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_unwrapenv.pl A /trunk/grid-mw-security/glexec/util/wrap-env-var/glexec_wrapenv.pl Added the wrap and unwrap scripts from Jan Just which are using Perl to shine the light. ------------------------------------------------------------------------ r365 | okoeroo | 2009-06-01 19:36:42 +0200 (ma, 01 jun 2009) | 4 lines Changed paths: A /trunk/grid-mw-security/glexec/util/wrap-env-var A /trunk/grid-mw-security/glexec/util/wrap-env-var/unwrap-wrap-glexec-env.sh A /trunk/grid-mw-security/glexec/util/wrap-env-var/wrap-wrap-glexec-env.sh Adding my gLExec environment variables wrap and unwrap scripts a pilot job framework examples. ------------------------------------------------------------------------ r31 | davidg | 2008-12-19 09:18:56 +0100 (vr, 19 dec 2008) | 2 lines Changed paths: A /branches D /grid-mw-security D /nl.nikhef.ndpf.tools A /tags A /trunk A /trunk/grid-mw-security (from /grid-mw-security:16) A /trunk/nl.nikhef.ndpf.tools (from /nl.nikhef.ndpf.tools:26) A /trunk/nl.nikhef.ndpf.tools/nikhef-directory-schema (from /nl.nikhef.ndpf.tools/nikhef-directory-schema:30) A /trunk/nl.nikhef.ndpf.tools/sccswhat (from /nl.nikhef.ndpf.tools/sccswhat:30) Created convention ------------------------------------------------------------------------ r16 | davidg | 2008-04-11 03:46:16 +0200 (vr, 11 apr 2008) | 2 lines Changed paths: M /grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Escaped the TMPDIR in the hel text ------------------------------------------------------------------------ r15 | davidg | 2008-04-10 11:01:14 +0200 (do, 10 apr 2008) | 2 lines Changed paths: M /grid-mw-security/glexec/util/mkgltempdir/mkgltempdir D /grid-mw-security/glexec/util/mkgltempdir/test.txt D /grid-mw-security/glexec/util/mkgltempdir/test2.txt error message logging repaired ------------------------------------------------------------------------ r14 | davidg | 2008-04-10 10:41:26 +0200 (do, 10 apr 2008) | 2 lines Changed paths: A /grid-mw-security/glexec/util/mkgltempdir/test2.txt Added ------------------------------------------------------------------------ r13 | davidg | 2008-04-10 10:28:40 +0200 (do, 10 apr 2008) | 2 lines Changed paths: A /grid-mw-security/glexec/util/mkgltempdir/test.txt test ------------------------------------------------------------------------ r12 | davidg | 2008-04-10 10:24:47 +0200 (do, 10 apr 2008) | 2 lines Changed paths: M /grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Keywords expanded ------------------------------------------------------------------------ r11 | davidg | 2008-04-10 10:23:30 +0200 (do, 10 apr 2008) | 2 lines Changed paths: A /grid-mw-security/glexec/util/mkgltempdir A /grid-mw-security/glexec/util/mkgltempdir/mkgltempdir Migrated from CVS ------------------------------------------------------------------------ r10 | davidg | 2008-04-10 10:20:09 +0200 (do, 10 apr 2008) | 2 lines Changed paths: M /grid-mw-security/glexec/util/sutest/sutest.c keywords added ------------------------------------------------------------------------ r9 | davidg | 2008-04-10 10:17:04 +0200 (do, 10 apr 2008) | 2 lines Changed paths: M /grid-mw-security/glexec/util/sutest/sutest.c trigger update ------------------------------------------------------------------------ r8 | davidg | 2008-04-10 10:15:41 +0200 (do, 10 apr 2008) | 2 lines Changed paths: M /grid-mw-security/glexec/util/sutest/sutest.c trigger commit only ------------------------------------------------------------------------ r7 | davidg | 2008-04-10 10:11:31 +0200 (do, 10 apr 2008) | 2 lines Changed paths: A /grid-mw-security A /grid-mw-security/glexec A /grid-mw-security/glexec/util A /grid-mw-security/glexec/util/sutest A /grid-mw-security/glexec/util/sutest/sutest.c Migrated from CVS ------------------------------------------------------------------------ ------------------------------------------------------------------------ r15835 | okoeroo | 2012-01-10 09:29:49 +0100 (Tue, 10 Jan 2012) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c Nothing but code style. ------------------------------------------------------------------------ r15831 | okoeroo | 2012-01-05 11:40:08 +0100 (Thu, 05 Jan 2012) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c forgot an integer. ------------------------------------------------------------------------ r15830 | okoeroo | 2012-01-05 11:39:11 +0100 (Thu, 05 Jan 2012) | 4 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Now explcitly copies the pgid and sgid lists. The caller need to free the lists. ------------------------------------------------------------------------ r15829 | msalle | 2012-01-05 10:45:45 +0100 (Thu, 05 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Fix double call to lcmaps_cred_to_x509_chain() which caused extensive memleak. ------------------------------------------------------------------------ r15828 | msalle | 2012-01-04 15:39:09 +0100 (Wed, 04 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Further remove remaining fprintf's ------------------------------------------------------------------------ r15827 | msalle | 2012-01-04 15:35:28 +0100 (Wed, 04 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c remove unused variable ------------------------------------------------------------------------ r15826 | msalle | 2012-01-04 15:32:25 +0100 (Wed, 04 Jan 2012) | 9 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Cleanup of code (in particular use of LCMAPS_POLICY_NAME): - don't use a default policy name, but parse all when none is given. This was already the behaviour when LCMAPS_POLICY_NAME=="" (and as such used by gLExec). - harden tokenize routine to prevent potential segfaults - replace fprintf(stderr with lcmaps_log(LOG_ERR - allow more than one policy for lcmaps_return_poolindex - log on LOG_INFO which policy is being evaluated. ------------------------------------------------------------------------ r15823 | msalle | 2012-01-04 12:14:49 +0100 (Wed, 04 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c Fix name clash in define between verify and return interfaces. ------------------------------------------------------------------------ r15822 | msalle | 2012-01-03 17:07:05 +0100 (Tue, 03 Jan 2012) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Fix debug and error messages in lcmaps_credential_store_gss_cred_id_t_and_sub_elements(), since they got mixed up. ------------------------------------------------------------------------ r15819 | okoeroo | 2012-01-02 10:39:12 +0100 (Mon, 02 Jan 2012) | 6 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c A dirty copy fubared the stack. Passing a clean copy is a lot more cleaner, although the client is now responsible of cleaning up the two structs. This needs some thinking... ------------------------------------------------------------------------ r15818 | okoeroo | 2012-01-01 15:20:00 +0100 (Sun, 01 Jan 2012) | 15 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/lcmaps.c The usage of lcmaps_run_with_stack_of_x509_and_return_account() triggered a Segfault in the calling application. This was caused by the lcmaps_release_cred() that cleaned the input credential of the type STACK_OF(X509)*. Solution: The lcmaps_release_cred() function is forked into a lcmaps_release_cred_leave_STACK_OF_X509() function that does NOT cleanup the STACK_OF(X509)*. All other gathered credentials are cleaned. Discovered in the LCMAPS-REST project. ------------------------------------------------------------------------ r15809 | okoeroo | 2011-12-22 16:51:01 +0100 (Thu, 22 Dec 2011) | 3 lines Changed paths: M /trunk/lcmaps/doc/man/lcmaps.3 LCMAPS man page update. Needs to be reworked to be a .src file ------------------------------------------------------------------------ r15805 | okoeroo | 2011-12-22 13:30:32 +0100 (Thu, 22 Dec 2011) | 4 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am D /trunk/lcmaps/doc/lcmaps.3 M /trunk/lcmaps/doc/man/lcmaps.3 Removed the doc/lcmaps.3 file, because the actual file is in doc/man/lcmaps.3 Also now nicely installed with the beauty of automake, and not with a post-install-hook. ------------------------------------------------------------------------ r15804 | okoeroo | 2011-12-22 13:27:03 +0100 (Thu, 22 Dec 2011) | 3 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/man/lcmaps.3 Updated lcmaps.3 manpage ------------------------------------------------------------------------ r15802 | okoeroo | 2011-12-22 12:08:47 +0100 (Thu, 22 Dec 2011) | 4 lines Changed paths: A /trunk/lcmaps/doc/lcmaps.3 Added man page for LCMAPS. ------------------------------------------------------------------------ r15801 | okoeroo | 2011-12-21 18:56:55 +0100 (Wed, 21 Dec 2011) | 4 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex A /trunk/lcmaps/doc/man A /trunk/lcmaps/doc/man/lcmaps.3 Updated doc/lcmaps.tex. Added a manpage for LCMAPS. ------------------------------------------------------------------------ r15791 | okoeroo | 2011-12-20 19:50:38 +0100 (Tue, 20 Dec 2011) | 4 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Added a (one time) warning when detected. ------------------------------------------------------------------------ r15786 | okoeroo | 2011-12-20 12:54:54 +0100 (Tue, 20 Dec 2011) | 9 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Version 1.5.1 - Log messages that are sent to Syslog with the priority equal to LOG_EMERG, LOG_ALERT or LOG_CRIT will be downplayed as LOG_ERR. Old LCMAPS plug-ins used a numerical range of 0-5 and this basically means that they are able to cast an error message of type LOG_EMERG, while universally the LOG_ERR is meant of even less significant then a LOG_ERR. ------------------------------------------------------------------------ r15716 | msalle | 2011-12-14 15:15:07 +0100 (Wed, 14 Dec 2011) | 2 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Removing '\t' characters from log strings. ------------------------------------------------------------------------ r15710 | okoeroo | 2011-12-14 15:02:14 +0100 (Wed, 14 Dec 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Updated ------------------------------------------------------------------------ r15709 | okoeroo | 2011-12-14 14:32:20 +0100 (Wed, 14 Dec 2011) | 3 lines Changed paths: M /trunk/lcmaps/ChangeLog Updated change log, pre-tagging ------------------------------------------------------------------------ r15707 | okoeroo | 2011-12-14 12:35:43 +0100 (Wed, 14 Dec 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Mischa won the argument from GGUS people. The default stays at LOG_INFO, other defaults must be made elsewhere. ------------------------------------------------------------------------ r15706 | okoeroo | 2011-12-14 11:54:33 +0100 (Wed, 14 Dec 2011) | 5 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/etc/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c LCMAPS: updated the default logging level from LOG_INFO to LOG_NOTICE. Tools using LCMAPS can easily override by build-in defaults. Fixed the ./configure steered @moduledir@ propagation into the lcmaps.db.in file to provide a properly functional lcmaps.db example. ------------------------------------------------------------------------ r15701 | okoeroo | 2011-12-13 12:06:42 +0100 (Tue, 13 Dec 2011) | 4 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h Even more pedantic comment fixes in LCMAPS... almost there. ------------------------------------------------------------------------ r15700 | okoeroo | 2011-12-13 11:54:16 +0100 (Tue, 13 Dec 2011) | 4 lines Changed paths: M /trunk/lcmaps/interface/_lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/_lcmaps_return_poolindex.h M /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_return_poolindex.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Pedantic checks may now be enabled. As LCMAPS should now be fairly "//" free, in favor of /* */ ------------------------------------------------------------------------ r15674 | okoeroo | 2011-12-09 12:49:36 +0100 (Fri, 09 Dec 2011) | 3 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex Added a title page to the lcmaps.tex file. ------------------------------------------------------------------------ r15673 | okoeroo | 2011-12-09 12:37:30 +0100 (Fri, 09 Dec 2011) | 5 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Cleaned dead code in LCMAPS Revived "make pdf" ------------------------------------------------------------------------ r15641 | okoeroo | 2011-11-28 12:21:26 +0100 (Mon, 28 Nov 2011) | 3 lines Changed paths: M /trunk/lcmaps/NEWS Updated NEWS file about the VOMS GA extraction when the VOMS verification was disabled. ------------------------------------------------------------------------ r15640 | okoeroo | 2011-11-28 12:19:07 +0100 (Mon, 28 Nov 2011) | 7 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Changed "lcmaps_get_attributes" to "lcmaps_get_voms_generic_attributes" Changed the variable errNo to errno_local in lcmaps_get_voms_generic_attributes. Only show and print the errno when the calloc() returned with an NULL. ------------------------------------------------------------------------ r15636 | okoeroo | 2011-11-27 12:40:08 +0100 (Sun, 27 Nov 2011) | 3 lines Changed paths: M /trunk/lcmaps/NEWS Updated NEWS file ------------------------------------------------------------------------ r15635 | okoeroo | 2011-11-26 22:49:21 +0100 (Sat, 26 Nov 2011) | 4 lines Changed paths: M /trunk/lcmaps/ChangeLog Adding new additions to the ChangeLog ------------------------------------------------------------------------ r15634 | okoeroo | 2011-11-26 22:16:03 +0100 (Sat, 26 Nov 2011) | 8 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/lcmaps.c Adjusted all the LCMAPS interfaces to support the renewed method. The credential handling is now homogeneous across all the LCMAPS interfaces. The plug-ins don't need to compensate for the variations anymore, and I'm going to remove those when I see them. ------------------------------------------------------------------------ r15633 | okoeroo | 2011-11-26 19:17:25 +0100 (Sat, 26 Nov 2011) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/lcmaps.c Harmonized the credential input interface for the PEM interface to the gss_cred_id_t, and tested with gLExec to works nicely. ------------------------------------------------------------------------ r15632 | okoeroo | 2011-11-26 18:37:29 +0100 (Sat, 26 Nov 2011) | 12 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c NEW: When the input is a gss_cred_id_t, the extracted certificate chain is now stored too in X509 * form. This enables the verify-proxy to function in the certificate life-time checking mode. Additionally: - Adding extra checks and messages. - Removed clumbsy method of storing gathered input credentials. Currently only processing the gss_cred_id_t input. ------------------------------------------------------------------------ r15622 | msalle | 2011-11-23 19:18:23 +0100 (Wed, 23 Nov 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/examples/Makefile.am Automatically discover shared library extension to use in plugin example. ------------------------------------------------------------------------ r15599 | okoeroo | 2011-11-22 15:28:51 +0100 (Tue, 22 Nov 2011) | 4 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_basic.h Added the include for stdio.h in lcmaps_basic.h as it was required for the FILE* definition in that header file. ------------------------------------------------------------------------ r15558 | okoeroo | 2011-11-14 16:01:15 +0100 (Mon, 14 Nov 2011) | 29 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Version 1.5.0 - updated release notes ------------------------------------- - Changing all log messages to match the logging method used in Syslog and especially the log priority/levels. - Fixed a problem when the "poolindex" was requested. It triggered a segmentation fault in two of the LCMAPS interface: -- lcmaps_run_and_return_poolindex -- lcmaps_run_with_pem_and_return_account - Harmonized logging via the lcmaps_log(), lcmaps_log_debug(), lcmaps_log_time(), lcmaps_log_a_string() and lcmaps_log_a_string_debug() functions for both log file writing and syslog writing. - Changed #define name DEBUG_LEVEL to CONF_LCMAPS_DEBUG_LEVEL - Changed the default value for CONF_LCMAPS_DEBUG_LEVEL from 0 (LOG_ERR) to 4 (LOG_INFO). - Harmonized the log line writing cut-off feature of log message between Syslog logging and logging to a file. This is based on the build in default and the LCMAPS_DEBUG_LEVEL environment variable value. Message that are cut-off are not even offered to Syslog anymore which speeds up the LCMAPS execution when the Syslog demon is hammered with info. - The log line output is changed to show the environment value of LCMAPS_LOG_IDENT in each line. The LCMAPS_LOG_IDENT value is meant to be set by programs like gLExec to indicate that they are running LCMAPS. This is default in Syslog, but missing in logging to file. - Log lines that log to file are prepended by the Syslog priority name. This allows easy filtering when needed. ------------------------------------------------------------------------ r15551 | okoeroo | 2011-11-10 10:05:10 +0100 (Thu, 10 Nov 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Added support for the LCMAPS_LOG_IDENT environment variable to prepend my log files. This can be abused, so the calling program needs to make sure this environment variable is cleaned. ------------------------------------------------------------------------ r15543 | okoeroo | 2011-11-09 16:19:11 +0100 (Wed, 09 Nov 2011) | 4 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c The new LCMAPS_DEBUG_LEVEL sweet spot is a value of 4 (see LOG_INFO) or 3 (see LOG_NOTICE). ------------------------------------------------------------------------ r15542 | okoeroo | 2011-11-09 16:08:58 +0100 (Wed, 09 Nov 2011) | 5 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Harmonized logging via the lcmaps_log(), lcmaps_log_debug(), lcmaps_log_time(), lcmaps_log_a_string() and lcmaps_log_a_string_debug() functions. ------------------------------------------------------------------------ r15531 | okoeroo | 2011-11-07 21:45:57 +0100 (Mon, 07 Nov 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c Move the "LCMAPS CRED FINAL" output from LOG_INFO to LOG_NOTICE. Tweaked some of the log messages. ------------------------------------------------------------------------ r15527 | okoeroo | 2011-11-06 22:34:18 +0100 (Sun, 06 Nov 2011) | 11 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Version 1.5.0 ------------- - Changing all log messages to match the logging method used in Syslog and especially the log priority/levels. - Fixed a problem when the "poolindex" was requested. It triggered a segmentation fault in two of the LCMAPS interface: -- lcmaps_run_and_return_poolindex -- lcmaps_run_with_pem_and_return_account ------------------------------------------------------------------------ r15519 | dennisvd | 2011-11-04 11:23:14 +0100 (Fri, 04 Nov 2011) | 4 lines Changed paths: D /trunk/lcmaps/CHANGES A /trunk/lcmaps/CHANGES.old (from /trunk/lcmaps/CHANGES:15516) rename CHANGES to CHANGES.old. All the change history should by in the ChangeLog file; the CHANGES.old file collects the earlier revision logs found in individual source files from the CVS era. ------------------------------------------------------------------------ r15518 | dennisvd | 2011-11-04 11:21:23 +0100 (Fri, 04 Nov 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac configure.ac: don't mention the CHANGES file as everything is actually in ChangeLog. ------------------------------------------------------------------------ r15517 | dennisvd | 2011-11-04 11:09:03 +0100 (Fri, 04 Nov 2011) | 2 lines Changed paths: M /trunk/lcmaps/LICENSE Updated the copyright notice to the current EMI default. ------------------------------------------------------------------------ r15516 | dennisvd | 2011-11-04 09:42:40 +0100 (Fri, 04 Nov 2011) | 2 lines Changed paths: A /trunk/lcmaps/CHANGES M /trunk/lcmaps/configure.ac Transferred change history to CHANGES file. ------------------------------------------------------------------------ r15515 | dennisvd | 2011-11-01 14:52:38 +0100 (Tue, 01 Nov 2011) | 2 lines Changed paths: M /trunk/lcmaps/LICENSE Replaced license text with the original Apache License 2.0 ------------------------------------------------------------------------ r15509 | msalle | 2011-10-24 15:53:49 +0200 (Mon, 24 Oct 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Fix typos in comments (no code change) ------------------------------------------------------------------------ r15490 | msalle | 2011-09-20 15:10:16 +0200 (Tue, 20 Sep 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Fix for lcmaps-without-gsi: only full lcmaps should check for libcrypto. ------------------------------------------------------------------------ r15489 | msalle | 2011-09-20 14:14:52 +0200 (Tue, 20 Sep 2011) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Add two missing header file includes (only shows up in -without-gsi mode). ------------------------------------------------------------------------ r15485 | msalle | 2011-09-19 16:41:24 +0200 (Mon, 19 Sep 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Bump version to 1.4.33 ------------------------------------------------------------------------ r15484 | msalle | 2011-09-19 12:28:14 +0200 (Mon, 19 Sep 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Add missing whitespace parsing line for path= line: otherwise each whitespace char is printed on stdout (?!). ------------------------------------------------------------------------ r15480 | msalle | 2011-09-16 14:24:02 +0200 (Fri, 16 Sep 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Missed one debug message in pdl_main file: changed lcmaps_log into lcmaps_log_debug ------------------------------------------------------------------------ r15479 | msalle | 2011-09-16 14:18:02 +0200 (Fri, 16 Sep 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Use lcmaps_log_debug instead of lcmaps_log for debug messages, use lcmaps_log_time for some error messages. ------------------------------------------------------------------------ r15478 | msalle | 2011-09-15 15:07:05 +0200 (Thu, 15 Sep 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Reordering location of some functions from lcmaps_utils.c to lcmaps_pluginmanager.c to simplify header file inclusion. Changing lcmaps_log into lcmaps_warning in pdl_yacc.y. ------------------------------------------------------------------------ r15477 | msalle | 2011-09-15 13:45:13 +0200 (Thu, 15 Sep 2011) | 7 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Adding our own definition for YY_FATAL_ERROR to try to prevent exit() appearing in the lcmaps library. (The default YY_FATAL_ERROR from (f)lex calls exit()). It now calls lcmaps_warning(PDL_ERROR, ...) which causes a nice clean error message about parsing of the db failed. Unfortunately, the exit symbol still appears in the lcmaps .so file. ------------------------------------------------------------------------ r15476 | msalle | 2011-09-14 17:38:30 +0200 (Wed, 14 Sep 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Some small fixes in pdl parsing code: - an extra path= was error becomes warning - adding debug output about path determination. ------------------------------------------------------------------------ r15470 | msalle | 2011-09-09 17:01:49 +0200 (Fri, 09 Sep 2011) | 20 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Reworking the "path =" parsing and handling. - path in db is optional, and can also be relative * if absent: 1) use env setting LCMAPS_MODULES_DIR or else 2) $libdir/lcmaps (unless overridden at build time). * When relative path: use $libdir+specified path. * When absolute: use only that. The parsing via lex has been further cleaned up and path = or path = # blabla is now valid syntax (identical to no path). Adding support for setting the modules dir at configure time using --with-lcmaps-moduledir=DIR which also can be relative (see above). Defaults have been changed to /lcmaps (was /modules) to comply with EPEL and in line with plugins and gLExec. ------------------------------------------------------------------------ r15466 | dennisvd | 2011-09-06 16:24:37 +0200 (Tue, 06 Sep 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am added -I../interface for lcmaps_version.h ------------------------------------------------------------------------ r15460 | msalle | 2011-08-19 11:32:10 +0200 (Fri, 19 Aug 2011) | 2 lines Changed paths: M /trunk/lcas/configure.ac M /trunk/lcas/src/grid_credential_handling/x509_handling/lcas_x509_utils.c M /trunk/lcas-plugins-voms/configure.ac M /trunk/lcas-plugins-voms/src/voms/lcas_voms.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps-plugins-jobrep/src/jobrep/lcmaps_jobrep.c Remove unneeded and incorrect cast. ------------------------------------------------------------------------ r15452 | msalle | 2011-08-17 16:28:15 +0200 (Wed, 17 Aug 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c enclose logstr var in #ifdef's to prevent a compiler warning (it's only used in debug mode in this function). ------------------------------------------------------------------------ r15451 | msalle | 2011-08-17 16:24:34 +0200 (Wed, 17 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_return_poolindex.h Also here: only define prototypes when NOT using dlopen. ------------------------------------------------------------------------ r15450 | msalle | 2011-08-17 16:20:33 +0200 (Wed, 17 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_openssl.h Fix typo: need function prototype when NOT using dlopen ------------------------------------------------------------------------ r15443 | msalle | 2011-08-17 09:36:17 +0200 (Wed, 17 Aug 2011) | 3 lines Changed paths: M /trunk/lcmaps/interface/lcmaps.h lcmaps.h must include lcmaps_openssl.h since the old-style lcmaps.h contained the openssl (X509) interface to lcmaps. ------------------------------------------------------------------------ r15422 | msalle | 2011-08-12 17:31:21 +0200 (Fri, 12 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps-globus-interface.pc.in M /trunk/lcmaps/interface/lcmaps-openssl-interface.pc.in Requires must be on single line. ------------------------------------------------------------------------ r15421 | dennisvd | 2011-08-11 16:32:59 +0200 (Thu, 11 Aug 2011) | 1 line Changed paths: M /trunk/lcmaps/Doxyfile A /trunk/lcmaps/examples/lcmaps_client.c M /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps-interface.pc.in M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_basic.h M /trunk/lcmaps/interface/lcmaps_globus.h M /trunk/lcmaps/interface/lcmaps_if.h added and updated documentation ------------------------------------------------------------------------ r15420 | msalle | 2011-08-11 16:07:59 +0200 (Thu, 11 Aug 2011) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps_basic.h A /trunk/lcmaps/interface/lcmaps_version.h.in Add support for LCMAPS_API_*_VERSION defines, giving the LCMAPS interface version used. ------------------------------------------------------------------------ r15419 | msalle | 2011-08-11 13:35:51 +0200 (Thu, 11 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/interface/_lcmaps.h Add missing 'lib' prefix to the helper so name. ------------------------------------------------------------------------ r15415 | msalle | 2011-08-10 17:20:31 +0200 (Wed, 10 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am Install lcmaps-interface.pc ------------------------------------------------------------------------ r15413 | dennisvd | 2011-08-10 17:09:15 +0200 (Wed, 10 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/bootstrap chain all commands conditionally ------------------------------------------------------------------------ r15411 | dennisvd | 2011-08-10 16:30:34 +0200 (Wed, 10 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac downgrade to .31 ------------------------------------------------------------------------ r15407 | msalle | 2011-08-10 15:33:15 +0200 (Wed, 10 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Use new AC_VOMS: check only for C api. ------------------------------------------------------------------------ r15405 | dennisvd | 2011-08-10 13:03:58 +0200 (Wed, 10 Aug 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/lcmaps-basic-interface.pc.in A /trunk/lcmaps/interface/lcmaps-globus-interface.pc.in A /trunk/lcmaps/interface/lcmaps-openssl-interface.pc.in added package config files for the split interfaces ------------------------------------------------------------------------ r15404 | dennisvd | 2011-08-09 17:09:52 +0200 (Tue, 09 Aug 2011) | 1 line Changed paths: M /trunk/lcmaps/AUTHORS M /trunk/lcmaps/Doxyfile A /trunk/lcmaps/dependencies.dot (from /branches/lcmaps_interface_typedefs/lcmaps/dependencies.dot:15403) M /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/_lcmaps.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/_lcmaps.h:15403) A /trunk/lcmaps/interface/_lcmaps_gss_assist_gridmap.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/_lcmaps_gss_assist_gridmap.h:15403) A /trunk/lcmaps/interface/_lcmaps_return_account_from_pem.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/_lcmaps_return_account_from_pem.h:15403) A /trunk/lcmaps/interface/_lcmaps_return_poolindex.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/_lcmaps_return_poolindex.h:15403) A /trunk/lcmaps/interface/_lcmaps_verify_account_from_pem.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/_lcmaps_verify_account_from_pem.h:15403) M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_account.h A /trunk/lcmaps/interface/lcmaps_basic.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/lcmaps_basic.h:15403) A /trunk/lcmaps/interface/lcmaps_globus.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/lcmaps_globus.h:15403) M /trunk/lcmaps/interface/lcmaps_gss_assist_gridmap.h A /trunk/lcmaps/interface/lcmaps_if.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/lcmaps_if.h:15403) A /trunk/lcmaps/interface/lcmaps_openssl.h (from /branches/lcmaps_interface_typedefs/lcmaps/interface/lcmaps_openssl.h:15403) M /trunk/lcmaps/interface/lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_return_poolindex.h M /trunk/lcmaps/interface/lcmaps_return_poolindex_without_gsi.h M /trunk/lcmaps/interface/lcmaps_verify_account_from_pem.h M /trunk/lcmaps/src/lcmaps.c merged branch lcmaps_interface_typedefs/lcmaps rev. 15360 thru 15403 with trunk ------------------------------------------------------------------------ r15316 | okoeroo | 2011-07-11 15:06:55 +0200 (Mon, 11 Jul 2011) | 4 lines Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c More pedantic debug output goes behind the LCMAPS_DEBUG ------------------------------------------------------------------------ r15315 | okoeroo | 2011-07-11 13:58:52 +0200 (Mon, 11 Jul 2011) | 1 line Changed paths: M /trunk/lcmaps/NEWS M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Add the LCMAPS_DEBUG #define to be used to build a developer debugging version of LCMAPS. The released version will not expose the amount of pedantic logging output, even in LCMAPS_DEBUG_LEVEL = 5. ------------------------------------------------------------------------ r15307 | okoeroo | 2011-07-11 09:43:03 +0200 (Mon, 11 Jul 2011) | 15 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c Adding the possibility to set the define: LCMAPS_DEBUG When set, it will enable code bits that print predantic error messages, for example: Jul 11 09:42:28 localhost glexec[31048]: lcmaps.mod-lcmaps_extractRunVars(): Setting "requested_pgid_list", address: 0x5633ec78 Jul 11 09:42:28 localhost glexec[31048]: lcmaps.mod-lcmaps_setRunVars(): Address of first element of runvars_list: 0x5633e880 Jul 11 09:42:28 localhost glexec[31048]: lcmaps.mod-lcmaps_setRunVars(): Address of address of first element of runvars_list: 0xa34aa80 Jul 11 09:42:28 localhost glexec[31048]: lcmaps.mod-lcmaps_extractRunVars(): Setting "requested_npgid": 0, address: 0x5633ec80 Jul 11 09:42:28 localhost glexec[31048]: lcmaps.mod-lcmaps_setRunVars(): Address of first element of runvars_list: 0x5633e880 Which is nice for a developer, but never for a sysadmin/user. ------------------------------------------------------------------------ r15304 | dennisvd | 2011-07-09 00:29:46 +0200 (Sat, 09 Jul 2011) | 1 line Changed paths: A /trunk/lcmaps/lcmaps.spec (from /packaging/fedora/trunk/lcmaps.spec:15303) add specfile ------------------------------------------------------------------------ r15301 | dennisvd | 2011-07-08 15:52:48 +0200 (Fri, 08 Jul 2011) | 1 line Changed paths: M /trunk/lcmaps/interface/Makefile.am incorporate patch by Mattias Ellert ------------------------------------------------------------------------ r15300 | dennisvd | 2011-07-08 15:48:32 +0200 (Fri, 08 Jul 2011) | 1 line Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/src/Makefile.am incorporate patch by Mattias Ellert ------------------------------------------------------------------------ r15293 | msalle | 2011-07-05 15:14:17 +0200 (Tue, 05 Jul 2011) | 5 lines Changed paths: M /trunk/lcmaps/interface/lcmaps-interface.pc.in M /trunk/lcmaps/src/Makefile.am Two fixes from Mattias: lcmaps-interface.pc shouldn't contain lib(dir) references and Makefile.am LIBADD shouldn't contain $(libdir) but can reference the .la files. This ensures that lcmaps-* libraries can find liblcmaps.so at build time. ------------------------------------------------------------------------ r15291 | dennisvd | 2011-07-01 16:04:32 +0200 (Fri, 01 Jul 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.pc.in make Requires into Requires.private to prevent downstream proliferation of requirements ------------------------------------------------------------------------ r15288 | msalle | 2011-06-29 14:13:24 +0200 (Wed, 29 Jun 2011) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am D /trunk/lcmaps/src/lcmaps-return-poolaccount.pc.in A /trunk/lcmaps/src/lcmaps-return-poolindex.pc.in (from /trunk/lcmaps/src/lcmaps-return-poolaccount.pc.in:15286) Fixing name of lcmaps-return-poolindex library and references for pkg-config: poolindex instead of poolaccount in the pc file. ------------------------------------------------------------------------ r15287 | msalle | 2011-06-29 13:24:03 +0200 (Wed, 29 Jun 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/lcmaps.pc.in Update the name of the voms pc file, so that at least for the 2.X series it works. LCMAPS can build against voms 1.X, but we cannot express something like 'Requires: voms-2.0 | voms-1.0' in pkg-config. ------------------------------------------------------------------------ r15286 | msalle | 2011-06-29 13:01:10 +0200 (Wed, 29 Jun 2011) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/lcmaps-gss-assist-gridmap.pc.in M /trunk/lcmaps/src/lcmaps-return-account-from-pem.pc.in M /trunk/lcmaps/src/lcmaps-return-poolaccount.pc.in M /trunk/lcmaps/src/lcmaps-verify-account-from-pem.pc.in Fix typo in 'Requirements:' lines in .pc files _without_gsi should have been -without-gsi. This only affects builds with a --disable-gsi mode. ------------------------------------------------------------------------ r15280 | okoeroo | 2011-04-21 13:51:27 +0200 (Thu, 21 Apr 2011) | 1 line Changed paths: M /trunk/lcas/doc/lcas.tex M /trunk/lcmaps/doc/lcmaps.tex Added debugging section and fixed some of the TeX. ------------------------------------------------------------------------ r15278 | okoeroo | 2011-04-21 11:27:03 +0200 (Thu, 21 Apr 2011) | 1 line Changed paths: M /trunk/lcas/doc/lcas.tex M /trunk/lcmaps/doc/lcmaps.tex Made adjustments to the lcmaps.tex and wrote examples and other things in the lcas.tex ------------------------------------------------------------------------ r15277 | okoeroo | 2011-04-21 02:02:57 +0200 (Thu, 21 Apr 2011) | 1 line Changed paths: M /trunk/lcmaps/doc/lcmaps.tex Ready for review doc/lcmaps.tex ------------------------------------------------------------------------ r15276 | okoeroo | 2011-04-21 01:20:08 +0200 (Thu, 21 Apr 2011) | 1 line Changed paths: M /trunk/lcmaps/doc/lcmaps.tex Adding more text and examples to the doc/lcmaps.tex ------------------------------------------------------------------------ r15275 | okoeroo | 2011-04-21 01:07:11 +0200 (Thu, 21 Apr 2011) | 1 line Changed paths: M /trunk/lcmaps/INSTALL Updated the INSTALL file from the doc/lcmaps.tex file. ------------------------------------------------------------------------ r15274 | okoeroo | 2011-04-20 22:27:45 +0200 (Wed, 20 Apr 2011) | 1 line Changed paths: M /trunk/lcmaps/INSTALL M /trunk/lcmaps/doc/lcmaps.tex Completely revamping the lcmaps.tex file, primarily to satisfy EMI-1 release criteria, but also to just do it in a maintainable way. ------------------------------------------------------------------------ r15273 | okoeroo | 2011-04-20 16:05:31 +0200 (Wed, 20 Apr 2011) | 4 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex Making significant changes to the lcmaps.tex file. Easier to read, shorter/to the point and with practical configuration examples. ------------------------------------------------------------------------ r15261 | okoeroo | 2011-04-19 16:20:00 +0200 (Tue, 19 Apr 2011) | 1 line Changed paths: A /trunk/lcmaps/NEWS Adding NEWS file ------------------------------------------------------------------------ r15250 | okoeroo | 2011-04-14 16:39:35 +0200 (Thu, 14 Apr 2011) | 1 line Changed paths: A /trunk/lcmaps/ChangeLog Adding ChangeLog file from svn log output ------------------------------------------------------------------------ r15248 | msalle | 2011-04-14 16:17:09 +0200 (Thu, 14 Apr 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Oops: forgotten to actually revert: now it's 1.4.28 ------------------------------------------------------------------------ r15247 | msalle | 2011-04-14 16:13:28 +0200 (Thu, 14 Apr 2011) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Add few extra safety features to prevent free problems: setting vars explicitly to NULL. Remove few unneeded else... Returning to 1.4.29 due to unneeded version bumping. ------------------------------------------------------------------------ r15240 | okoeroo | 2011-04-14 09:15:08 +0200 (Thu, 14 Apr 2011) | 10 lines Changed paths: M /trunk/lcmaps/bootstrap M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Fix for Savannah bug #80927 The offending code was donated by Placi to support VOMS Generic Attributes in LCMAPS for the lcmaps-plugins-voms-attr plugin (and possibly other 3rd party plugins). The code contained an unsafe cast of the VOMS api provided (struct attribute *) which was risky. The root of the problem was that LCMAPS got a pointer to the VOMS Generic Attributes of which the memory is owned by VOMS. These structures are most likely free'd by the VOMS_Destroy() call, and when LCMAPS is cleaning up, the double free() occured. This is now mitiagated by copying the VOMS Generic Attributes in our own lcmaps_vomsdata_t. Bumping version to 1.4.30 ------------------------------------------------------------------------ r15236 | okoeroo | 2011-04-13 16:06:29 +0200 (Wed, 13 Apr 2011) | 1 line Changed paths: M /trunk/lcmaps/configure.ac Bumping version of LCMAPS to 1.4.29 addressing the VOMS GA double free() issue ------------------------------------------------------------------------ r15235 | okoeroo | 2011-04-13 15:58:19 +0200 (Wed, 13 Apr 2011) | 1 line Changed paths: M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/lcmaps_test.c Fixing a problem found when using VOMS Generic Attributes. ------------------------------------------------------------------------ r15010 | dennisvd | 2011-03-18 00:51:17 +0100 (Fri, 18 Mar 2011) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am Re-enable libcrypto linking, but better. The -lcrypto is added to CRYPTO_LIBS, which gets included in liblcmaps_la_LIBS at the end of the list in case some Globus library overrides some symbols. ------------------------------------------------------------------------ r15006 | dennisvd | 2011-03-17 23:12:10 +0100 (Thu, 17 Mar 2011) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/etc/Makefile.am add some cleanup targets to pass 'make distcheck' ------------------------------------------------------------------------ r14974 | okoeroo | 2011-03-10 14:12:57 +0100 (Thu, 10 Mar 2011) | 1 line Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in Altered the explination to the voms_poolaccount plug-in ------------------------------------------------------------------------ r14973 | okoeroo | 2011-03-10 12:48:17 +0100 (Thu, 10 Mar 2011) | 1 line Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in Added deprecation notice on the lcmaps_voms.mod ------------------------------------------------------------------------ r14972 | dennisvd | 2011-03-10 12:09:58 +0100 (Thu, 10 Mar 2011) | 2 lines Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in fixed the dummy plugin description and example ------------------------------------------------------------------------ r14968 | dennisvd | 2011-03-09 00:05:31 +0100 (Wed, 09 Mar 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac version 1.4.28: do not install configuration files ------------------------------------------------------------------------ r14967 | dennisvd | 2011-03-09 00:04:23 +0100 (Wed, 09 Mar 2011) | 1 line Changed paths: M /trunk/lcmaps/etc/Makefile.am do not instal configuration files at all ------------------------------------------------------------------------ r14966 | dennisvd | 2011-03-09 00:02:45 +0100 (Wed, 09 Mar 2011) | 2 lines Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in expanded example with documentation. ------------------------------------------------------------------------ r14868 | dennisvd | 2011-03-04 21:55:13 +0100 (Fri, 04 Mar 2011) | 1 line Changed paths: M /trunk/lcmaps/AUTHORS M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/INSTALL M /trunk/lcmaps/LICENSE M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/README M /trunk/lcmaps/README.NO_LDAP M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/datagrid.eps M /trunk/lcmaps/doc/evaluationmanager/Makefile.am M /trunk/lcmaps/doc/evaluationmanager/figures/datagrid.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example1.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example1.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example2.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example2.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example3.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example3.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example4.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example4.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example_real.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example_real.fig M /trunk/lcmaps/doc/evaluationmanager/figures/nikhef.eps M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.bib M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex M /trunk/lcmaps/doc/gridmapfile.ex M /trunk/lcmaps/doc/groupmapfile.ex M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/doc/lcmaps_gen_poolacc_ldif M /trunk/lcmaps/doc/lcmaps_gen_poolgroup_ldif M /trunk/lcmaps/doc/lcmaps_include.tex.in M /trunk/lcmaps/doc/lcmaps_make_poolacc_dir M /trunk/lcmaps/doc/lcmaps_setup_pool M /trunk/lcmaps/etc/Makefile.am M /trunk/lcmaps/etc/groupmapfile.in M /trunk/lcmaps/etc/lcmaps.db.in M /trunk/lcmaps/etc/vomapfile.in M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_db_read.h M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/examples/example_1.pdl M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/gssapi_openssl.h M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c removed executable bit ------------------------------------------------------------------------ r14620 | msalle | 2011-02-23 16:04:26 +0100 (Wed, 23 Feb 2011) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am Fixing SEGV situation due to linking order problem. Leaving out libcrypto seems to fix this. Probably due to a clash between globus and openssl 1.0. ------------------------------------------------------------------------ r14617 | msalle | 2011-02-23 10:53:15 +0100 (Wed, 23 Feb 2011) | 2 lines Changed paths: M /trunk M /trunk/lcmaps Reverting, having the externals in trunk/ doesn't work. ------------------------------------------------------------------------ r14616 | msalle | 2011-02-23 10:49:45 +0100 (Wed, 23 Feb 2011) | 2 lines Changed paths: M /trunk M /trunk/lcmaps Moving externals to trunk/ itself. ------------------------------------------------------------------------ r14603 | okoeroo | 2011-02-14 14:24:46 +0100 (Mon, 14 Feb 2011) | 1 line Changed paths: M /trunk/lcmaps/configure.ac Bumping version of LCMAPS to 1.4.27 due to inclusion of the SIGPIPE. The SIGPIPE handler only prints a message to the LCMAPS logging facility to record the anomoly ------------------------------------------------------------------------ r14596 | dennisvd | 2011-02-11 12:31:11 +0100 (Fri, 11 Feb 2011) | 11 lines Changed paths: M /trunk/lcmaps/configure.ac Added check for libcrypto, globus-common and globus-gsi-credential The Autoconf script was missing a check on the required libcrypto.so library. While normally libssl and libcrypto go together in the openssl package, there is actually no dependency on libssl. Therefore the libssl check is added but commented out. Furthermore there were a few dependencies on globus libraries missing after they were rigorously weeded out, so globus-common and globus-gsi-credential are welcomed again. ------------------------------------------------------------------------ r14595 | dennisvd | 2011-02-11 12:26:18 +0100 (Fri, 11 Feb 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Fixed shared library dependencies liblcmaps_return_poolindex.so and liblcmaps.so The objective is to link shared libraries only to libraries that provide a symbol referenced by the target. ------------------------------------------------------------------------ r14594 | dennisvd | 2011-02-11 12:21:32 +0100 (Fri, 11 Feb 2011) | 10 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h Prevent 'redundant declaration' of yyin and yylex. The lexical scanner includes pdl.h, which declares yyin and yylex. But pdl_lex.c also contains (identical) declarations for the same symbols. Although this is mostly harmless, this is now prevented by making this declaration conditional, so only if pdl.h is *not* included by the scanner. (The remaining compiler warnings are known bugs in flex.) ------------------------------------------------------------------------ r14589 | okoeroo | 2011-02-08 15:49:22 +0100 (Tue, 08 Feb 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Included the setting and resetting of the SIGPIPE handler in the lcmaps_startPluginmanager and lcmaps_stopPluginmanager functions. ------------------------------------------------------------------------ r14588 | dennisvd | 2011-02-08 15:22:53 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c cleanup syslog calls ------------------------------------------------------------------------ r14587 | dennisvd | 2011-02-08 15:18:43 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_poolindex.c removed unused includes and variables ------------------------------------------------------------------------ r14586 | dennisvd | 2011-02-08 15:17:24 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/gssapi_openssl.h removed unneccessary includes ------------------------------------------------------------------------ r14585 | dennisvd | 2011-02-08 15:16:21 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am removed unneccessary GLOBUS variable settings ------------------------------------------------------------------------ r14584 | dennisvd | 2011-02-08 15:14:41 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c moved static variables to c file ------------------------------------------------------------------------ r14583 | dennisvd | 2011-02-08 14:56:35 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h removed unused variables ------------------------------------------------------------------------ r14582 | dennisvd | 2011-02-08 14:46:34 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac removed unneccessary globus modules. ------------------------------------------------------------------------ r14581 | dennisvd | 2011-02-08 14:45:54 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c cleanup of unused header files, code blocks and variables. ------------------------------------------------------------------------ r14580 | msalle | 2011-02-08 11:35:12 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Add missing signal.h header. ------------------------------------------------------------------------ r14578 | dennisvd | 2011-02-08 09:44:21 +0100 (Tue, 08 Feb 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c removed syslog.h from includes (unused) ------------------------------------------------------------------------ r14577 | okoeroo | 2011-02-07 16:35:00 +0100 (Mon, 07 Feb 2011) | 5 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Adding SIGPIPE setter, resetter and the SIGPIPE handle. ------------------------------------------------------------------------ r14572 | msalle | 2011-02-06 16:38:54 +0100 (Sun, 06 Feb 2011) | 10 lines Changed paths: M /trunk/lcas/configure.ac M /trunk/lcas-lcmaps-gt4-interface/configure.ac M /trunk/lcas-plugins-basic/configure.ac M /trunk/lcas-plugins-check-executable/configure.ac M /trunk/lcas-plugins-voms/configure.ac M /trunk/lcmaps/configure.ac M /trunk/lcmaps-plugins-afs/configure.ac M /trunk/lcmaps-plugins-jobrep/configure.ac M /trunk/lcmaps-plugins-voms/configure.ac M /trunk/m4/globus.m4 Major overhaul of globus.m4 and adaptation of all the configure.ac files. - we can either call e.g. AC_GLOBUS_CALLOUT and parse have_globus_callout or call AC_GLOBUS([CALLOUT],[action when found],[action when not found]) - AC_GLOBUS does an AC_REQUIRE on AC_GLOBUS_INIT. That macro defines the configure flags such as --with-globus-prefix etc. and then defines all the AC_GLOBUS_ macros. This way, we can modularly call all the globus package-macros and get only the CFLAGS and LIBS flags of the modules we actually use. ------------------------------------------------------------------------ r12375 | dennisvd | 2011-01-29 01:16:43 +0100 (Sat, 29 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Fixed typo Unkown -> Unknown ------------------------------------------------------------------------ r12366 | msalle | 2011-01-20 09:37:45 +0100 (Thu, 20 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/AUTHORS Update authors list ------------------------------------------------------------------------ r11975 | msalle | 2011-01-09 19:14:51 +0100 (Sun, 09 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps-return-poolaccount.pc.in Fix typo ------------------------------------------------------------------------ r11951 | msalle | 2011-01-07 13:02:43 +0100 (Fri, 07 Jan 2011) | 2 lines Changed paths: A /trunk/glexec/AUTHORS (from /trunk/glexec/MAINTAINERS:11944) D /trunk/glexec/MAINTAINERS M /trunk/glexec/Makefile.am A /trunk/lcas/AUTHORS (from /trunk/lcas/MAINTAINERS:11950) D /trunk/lcas/MAINTAINERS M /trunk/lcas/doc/Makefile.am M /trunk/lcas-lcmaps-gt4-interface/Makefile.am A /trunk/lcas-plugins-basic/AUTHORS (from /trunk/lcas-plugins-basic/MAINTAINERS:11946) D /trunk/lcas-plugins-basic/MAINTAINERS M /trunk/lcas-plugins-basic/Makefile.am A /trunk/lcas-plugins-check-executable/AUTHORS (from /trunk/lcas-plugins-check-executable/MAINTAINERS:11947) D /trunk/lcas-plugins-check-executable/MAINTAINERS M /trunk/lcas-plugins-check-executable/Makefile.am A /trunk/lcas-plugins-voms/AUTHORS (from /trunk/lcas-plugins-voms/MAINTAINERS:11947) D /trunk/lcas-plugins-voms/MAINTAINERS M /trunk/lcas-plugins-voms/Makefile.am A /trunk/lcmaps/AUTHORS (from /trunk/lcmaps/MAINTAINERS:11927) D /trunk/lcmaps/MAINTAINERS M /trunk/lcmaps/doc/Makefile.am A /trunk/lcmaps-plugins-afs/AUTHORS (from /trunk/lcmaps-plugins-afs/MAINTAINERS:11948) D /trunk/lcmaps-plugins-afs/MAINTAINERS M /trunk/lcmaps-plugins-afs/Makefile.am A /trunk/lcmaps-plugins-basic/AUTHORS (from /trunk/lcmaps-plugins-basic/MAINTAINERS:11948) D /trunk/lcmaps-plugins-basic/MAINTAINERS M /trunk/lcmaps-plugins-basic/Makefile.am A /trunk/lcmaps-plugins-c-pep/AUTHORS (from /trunk/lcmaps-plugins-c-pep/MAINTAINERS:11948) D /trunk/lcmaps-plugins-c-pep/MAINTAINERS M /trunk/lcmaps-plugins-c-pep/Makefile.am A /trunk/lcmaps-plugins-gums/AUTHORS (from /trunk/lcmaps-plugins-gums/MAINTAINERS:11948) D /trunk/lcmaps-plugins-gums/MAINTAINERS M /trunk/lcmaps-plugins-gums/Makefile.am A /trunk/lcmaps-plugins-scas-client/AUTHORS (from /trunk/lcmaps-plugins-scas-client/MAINTAINERS:11948) D /trunk/lcmaps-plugins-scas-client/MAINTAINERS M /trunk/lcmaps-plugins-scas-client/Makefile.am A /trunk/lcmaps-plugins-verify-proxy/AUTHORS (from /trunk/lcmaps-plugins-verify-proxy/MAINTAINERS:11948) D /trunk/lcmaps-plugins-verify-proxy/MAINTAINERS M /trunk/lcmaps-plugins-verify-proxy/Makefile.am A /trunk/lcmaps-plugins-voms/AUTHORS (from /trunk/lcmaps-plugins-voms/MAINTAINERS:11948) D /trunk/lcmaps-plugins-voms/MAINTAINERS M /trunk/lcmaps-plugins-voms/Makefile.am M /trunk/scas/Makefile.am Renaming MAINTAINERS in AUTHORS and let them be installed. ------------------------------------------------------------------------ r11941 | msalle | 2011-01-06 16:45:43 +0100 (Thu, 06 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am ... ------------------------------------------------------------------------ r11940 | msalle | 2011-01-06 16:44:09 +0100 (Thu, 06 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Add last missing file from dist. ------------------------------------------------------------------------ r11939 | msalle | 2011-01-06 16:39:08 +0100 (Thu, 06 Jan 2011) | 3 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/src/Makefile.am D /trunk/lcmaps/src/pluginmanager/.vilerc D /trunk/lcmaps/src/pluginmanager/_lcmaps_defines.h Add missing dist files, remove dead files. ------------------------------------------------------------------------ r11938 | msalle | 2011-01-06 15:28:50 +0100 (Thu, 06 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am Remove redundant foreign, it's now set in configure.ac ------------------------------------------------------------------------ r11937 | msalle | 2011-01-06 15:26:27 +0100 (Thu, 06 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Fix typo. ------------------------------------------------------------------------ r11936 | msalle | 2011-01-06 15:24:44 +0100 (Thu, 06 Jan 2011) | 4 lines Changed paths: M /trunk/lcmaps/bootstrap M /trunk/lcmaps/configure.ac Adding foreign to AM_INIT_AUTOMAKE flags, can then go out of bootstrap Adding AC_CONFIG_CONFIG_DIR to have macros included in dist and prevent a warning from autotools. ------------------------------------------------------------------------ r11916 | msalle | 2011-01-04 17:15:38 +0100 (Tue, 04 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Adding libdir explicitly to -llcmaps for dependent libraries ------------------------------------------------------------------------ r11909 | msalle | 2011-01-04 15:17:57 +0100 (Tue, 04 Jan 2011) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.pc.in Add correct globus requirements ------------------------------------------------------------------------ r11901 | msalle | 2011-01-04 09:34:29 +0100 (Tue, 04 Jan 2011) | 3 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/src/Makefile.am - lcmaps_defines.h should no longer include lcmaps_config.h - using previously defined interfacedir. ------------------------------------------------------------------------ r11877 | msalle | 2011-01-03 12:38:05 +0100 (Mon, 03 Jan 2011) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps-without-gsi.pc.in M /trunk/lcmaps/src/lcmaps.pc.in lcmaps and lcmaps-without-gsi are already different files: remove @LCMAPS_FLAVOUR@ and make the differences explicit ------------------------------------------------------------------------ r11871 | msalle | 2010-12-31 14:07:47 +0100 (Fri, 31 Dec 2010) | 3 lines Changed paths: M /trunk/glexec/bootstrap M /trunk/lcmaps/bootstrap M /trunk/lcmaps-plugins-afs/bootstrap M /trunk/lcmaps-plugins-basic/bootstrap M /trunk/lcmaps-plugins-c-pep/bootstrap M /trunk/lcmaps-plugins-gums/bootstrap M /trunk/lcmaps-plugins-scas-client/bootstrap M /trunk/lcmaps-plugins-verify-proxy/bootstrap M /trunk/lcmaps-plugins-voms/bootstrap Syncing all bootstrap files and removing reference to src/autogen which is no longer used. ------------------------------------------------------------------------ r11838 | msalle | 2010-12-27 11:36:42 +0100 (Mon, 27 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c - only define LCMAPS_MOD_HOME where needed and there based on LCMAPS_LIB_HOME. ------------------------------------------------------------------------ r11829 | msalle | 2010-12-26 17:32:52 +0100 (Sun, 26 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/bootstrap Set flavor strictness to foreign to prevent warnings: 'non-POSIX variable name' for automatic variable $<, see http://www.gnu.org/software/autoconf/manual/make/Automatic-Variables.html ------------------------------------------------------------------------ r11827 | msalle | 2010-12-26 17:03:08 +0100 (Sun, 26 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac D /trunk/lcmaps/project/ac_define_dir.m4 M /trunk/lcmaps/src/Makefile.am move towards makefile defines instead of using config.h file. ------------------------------------------------------------------------ r11826 | msalle | 2010-12-26 16:43:56 +0100 (Sun, 26 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am D /trunk/lcmaps/interface/lcmaps_setup.h M /trunk/lcmaps/src/Makefile.am D /trunk/lcmaps/src/lcmaps_setup.c remove unused lcmaps_setup function, .c and .h ------------------------------------------------------------------------ r11825 | msalle | 2010-12-26 12:15:16 +0100 (Sun, 26 Dec 2010) | 2 lines Changed paths: D /trunk/lcmaps/src/lcmaps_config.h.in lcmaps_config.h.in is created by bootstrap, so don't put it in svn ------------------------------------------------------------------------ r11824 | msalle | 2010-12-24 14:44:29 +0100 (Fri, 24 Dec 2010) | 3 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Fix missing globus libraries and remove -lssl and -lcrypto. Somehow this gave a segfault in VOMS?! ------------------------------------------------------------------------ r11823 | msalle | 2010-12-24 11:42:57 +0100 (Fri, 24 Dec 2010) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am Do NOT include lcmaps_config.h in the interface: it's lcmaps-local defines, not to be exposed to the plugins! ------------------------------------------------------------------------ r11822 | msalle | 2010-12-24 11:08:33 +0100 (Fri, 24 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Adding missing prefix lcmaps_ to add_policy ------------------------------------------------------------------------ r11821 | msalle | 2010-12-24 11:04:32 +0100 (Fri, 24 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h Add missing lcmaps_ prefix to add_policy() ------------------------------------------------------------------------ r11820 | msalle | 2010-12-23 16:57:59 +0100 (Thu, 23 Dec 2010) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps_defines.h A /trunk/lcmaps/project/ac_define_dir.m4 M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c Removal of ALL reference to opt/glite! Move of lcmaps_config.h to interface directory, sets also the system-dependent directories. ------------------------------------------------------------------------ r11817 | okoeroo | 2010-12-23 16:14:42 +0100 (Thu, 23 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Fixed a header include and function declaration. ------------------------------------------------------------------------ r11815 | okoeroo | 2010-12-23 14:35:40 +0100 (Thu, 23 Dec 2010) | 43 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Finished prefiing all the function calls. This excludes: Used by (3rd party) plug-ins: addCredentialData getCredentialData Generated by the parser: yy_create_buffer yy_delete_buffer yy_flush_buffer yy_scan_buffer yy_scan_bytes yy_scan_string yy_switch_to_buffer yyalloc yyerror yyfree yyget_debug yyget_in yyget_leng yyget_lineno yyget_out yyget_text yylex yylex_destroy yyparse yyparse_errors yypop_buffer_state yypush_buffer_state yyrealloc yyrestart yyset_debug yyset_in yyset_lineno yyset_out yywrap ------------------------------------------------------------------------ r11814 | okoeroo | 2010-12-23 12:49:48 +0100 (Thu, 23 Dec 2010) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Well maybe one more cycle is needed to fixed everything... ------------------------------------------------------------------------ r11809 | msalle | 2010-12-23 11:52:32 +0100 (Thu, 23 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps-interface.pc.in Remove reference to _without_gsi since interface is for both. ------------------------------------------------------------------------ r11808 | msalle | 2010-12-23 11:50:40 +0100 (Thu, 23 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Fix another typo... ------------------------------------------------------------------------ r11807 | msalle | 2010-12-23 11:48:34 +0100 (Thu, 23 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am update list of .pc files for -without-gsi ------------------------------------------------------------------------ r11806 | msalle | 2010-12-23 11:45:02 +0100 (Thu, 23 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Fix typo ... ------------------------------------------------------------------------ r11805 | msalle | 2010-12-23 11:43:47 +0100 (Thu, 23 Dec 2010) | 6 lines Changed paths: M /trunk/lcmaps/configure.ac - Update for single lcmaps-interface for both lcmaps types. - use enable_gsi_mode directly instead of lcmaps_gsi_mode - make sure LCMAPS_FLAVOUR and LCMAPS_FLAVOUR_NAME are always initialized. - update list of to-be-configured pc files in without-gsi ------------------------------------------------------------------------ r11804 | msalle | 2010-12-23 11:35:08 +0100 (Thu, 23 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am Always install full set of headers. ------------------------------------------------------------------------ r11803 | msalle | 2010-12-23 11:30:36 +0100 (Thu, 23 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am Always install lcmaps-interface.pc, both with and -without-gsi mode ------------------------------------------------------------------------ r11801 | okoeroo | 2010-12-22 22:45:50 +0100 (Wed, 22 Dec 2010) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/lcmaps_config.h.in Stage two of the clashing function names fix. One more round would do it. ------------------------------------------------------------------------ r11800 | msalle | 2010-12-22 17:28:28 +0100 (Wed, 22 Dec 2010) | 11 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/lcmaps-interface.pc.in M /trunk/lcmaps/src/Makefile.am A /trunk/lcmaps/src/lcmaps-gss-assist-gridmap.pc.in A /trunk/lcmaps/src/lcmaps-return-account-from-pem.pc.in A /trunk/lcmaps/src/lcmaps-return-poolaccount.pc.in A /trunk/lcmaps/src/lcmaps-verify-account-from-pem.pc.in A /trunk/lcmaps/src/lcmaps-without-gsi.pc.in M /trunk/lcmaps/src/lcmaps.pc.in Adding .pc files: - lcmaps (core) and all its secondary libraries: return-poolaccount, verify-account-from-pem, return-account-from-pem and gss-assist-gridmap. - lcmaps interface: always installed, both when building headers only and when building full tool. - differentiating between with and without-gsi mode. In latter case, gss-assist-gridmap doesn't seem to make sense, and lcmaps doesn't depend on VOMS and OpenSSL in that case. ------------------------------------------------------------------------ r11797 | okoeroo | 2010-12-22 16:08:12 +0100 (Wed, 22 Dec 2010) | 7 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/lcmaps_config.h.in M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c Intermediate check-in. The following fixes are done to essentially namespace the the function names in LCMAPS that are exposed to the outside world. ------------------------------------------------------------------------ r11779 | msalle | 2010-12-21 12:56:06 +0100 (Tue, 21 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am Install headers always in /lcmaps/ even for _without_gsi flavour. ------------------------------------------------------------------------ r11761 | msalle | 2010-12-20 12:04:30 +0100 (Mon, 20 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/src/lcmaps.pc.in User should use #include so don't add lcmaps/ ------------------------------------------------------------------------ r11760 | msalle | 2010-12-20 12:00:11 +0100 (Mon, 20 Dec 2010) | 3 lines Changed paths: D /trunk/lcmaps/bod_dummy D /trunk/lcmaps/build.xml M /trunk/lcmaps/configure.ac D /trunk/lcmaps/edg-lcmaps.spec.in D /trunk/lcmaps/modules D /trunk/lcmaps/project/build.number D /trunk/lcmaps/project/build.properties D /trunk/lcmaps/project/configure.properties.xml D /trunk/lcmaps/project/properties.xml D /trunk/lcmaps/project/version.properties D /trunk/lcmaps/src/evaluationmanager/Makefile.am D /trunk/lcmaps/src/grid_credential_handling/Makefile.am D /trunk/lcmaps/src/pluginmanager/Makefile.am D /trunk/lcmaps/src/test Removing lots of dead code and updating configure.ac to configure the actual Makefiles ------------------------------------------------------------------------ r11759 | msalle | 2010-12-17 12:49:10 +0100 (Fri, 17 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.pc.in fix syntax error: requirements are comma separated. ------------------------------------------------------------------------ r11758 | msalle | 2010-12-17 11:44:22 +0100 (Fri, 17 Dec 2010) | 2 lines Changed paths: A /trunk/lcmaps/src/lcmaps.pc.in Adding the actual new file lcmaps.pc.in ------------------------------------------------------------------------ r11757 | msalle | 2010-12-17 11:40:26 +0100 (Fri, 17 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/src/Makefile.am - Adding rudimentary .pc file support: probably need three or four. Also need probably search path ${includedir} not ${includedir}/lcmaps... - changing to ${includedir}/lcmaps instead of ..glite/security.. etc. ------------------------------------------------------------------------ r11756 | dennisvd | 2010-12-16 23:03:55 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/bootstrap Put -I project/ back where it belongs. ------------------------------------------------------------------------ r11755 | dennisvd | 2010-12-16 16:29:48 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/INSTALL M /trunk/lcmaps/LICENSE M /trunk/lcmaps/MAINTAINERS M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/README M /trunk/lcmaps/README.NO_LDAP M /trunk/lcmaps/bod_dummy M /trunk/lcmaps/bootstrap M /trunk/lcmaps/build.xml M /trunk/lcmaps/configure.ac M /trunk/lcmaps/doc/CHANGES_1.2.x-1.3.x M /trunk/lcmaps/doc/INSTALL_WITH_WORKSPACE_SERVICE M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/datagrid.eps M /trunk/lcmaps/doc/evaluationmanager/Makefile.am M /trunk/lcmaps/doc/evaluationmanager/figures/datagrid.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example1.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example1.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example2.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example2.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example3.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example3.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example4.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example4.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example_real.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example_real.fig M /trunk/lcmaps/doc/evaluationmanager/figures/nikhef.eps M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.bib M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex M /trunk/lcmaps/doc/gridmapfile.ex M /trunk/lcmaps/doc/groupmapfile.ex M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/doc/lcmaps_gen_poolacc_ldif M /trunk/lcmaps/doc/lcmaps_gen_poolgroup_ldif M /trunk/lcmaps/doc/lcmaps_include.tex.in M /trunk/lcmaps/doc/lcmaps_make_poolacc_dir M /trunk/lcmaps/doc/lcmaps_setup_pool M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/etc/Makefile.am M /trunk/lcmaps/etc/groupmapfile.in M /trunk/lcmaps/etc/lcmaps.db.in M /trunk/lcmaps/etc/vomapfile.in M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_db_read.h M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/interface/lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/interface/lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_return_poolindex.h M /trunk/lcmaps/interface/lcmaps_return_poolindex_without_gsi.h M /trunk/lcmaps/interface/lcmaps_setup.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/modules/Makefile.am M /trunk/lcmaps/modules/jobrepository/Makefile.am M /trunk/lcmaps/modules/jobrepository/globus_gsi_gss_constants.h M /trunk/lcmaps/modules/jobrepository/globus_i_gsi_credential.h M /trunk/lcmaps/modules/jobrepository/gssapi_openssl.h M /trunk/lcmaps/modules/jobrepository/jobrep_test.c M /trunk/lcmaps/modules/jobrepository/jobrep_test.h M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.h M /trunk/lcmaps/project/build.number M /trunk/lcmaps/project/build.properties M /trunk/lcmaps/project/configure.properties.xml M /trunk/lcmaps/project/globus.m4 M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/project/voms.m4 M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/examples/example_1.pdl M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/gssapi_openssl.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/gssapi_openssl.h M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_config.h.in M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/.vilerc M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_defines.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c M /trunk/lcmaps/src/test/Makefile.am M /trunk/lcmaps/src/test/test_pem.c M /trunk/lcmaps/src/test/test_pluginmanager.c This time, set the keywords right. ------------------------------------------------------------------------ r11754 | dennisvd | 2010-12-16 16:27:23 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/bootstrap test if keywords work... ------------------------------------------------------------------------ r11753 | dennisvd | 2010-12-16 16:26:04 +0100 (Thu, 16 Dec 2010) | 1 line Changed paths: D /trunk/lcmaps/autogen.sh removed autogen.sh in favor of bootstrap ------------------------------------------------------------------------ r11752 | dennisvd | 2010-12-16 16:22:31 +0100 (Thu, 16 Dec 2010) | 1 line Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/INSTALL M /trunk/lcmaps/LICENSE M /trunk/lcmaps/MAINTAINERS M /trunk/lcmaps/README M /trunk/lcmaps/README.NO_LDAP M /trunk/lcmaps/autogen.sh M /trunk/lcmaps/bod_dummy M /trunk/lcmaps/build.xml M /trunk/lcmaps/configure.ac M /trunk/lcmaps/doc/CHANGES_1.2.x-1.3.x M /trunk/lcmaps/doc/INSTALL_WITH_WORKSPACE_SERVICE M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/datagrid.eps M /trunk/lcmaps/doc/evaluationmanager/Makefile.am M /trunk/lcmaps/doc/evaluationmanager/figures/datagrid.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example1.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example1.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example2.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example2.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example3.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example3.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example4.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example4.fig M /trunk/lcmaps/doc/evaluationmanager/figures/example_real.eps M /trunk/lcmaps/doc/evaluationmanager/figures/example_real.fig M /trunk/lcmaps/doc/evaluationmanager/figures/nikhef.eps M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.bib M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex M /trunk/lcmaps/doc/gridmapfile.ex M /trunk/lcmaps/doc/groupmapfile.ex M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/doc/lcmaps_gen_poolacc_ldif M /trunk/lcmaps/doc/lcmaps_gen_poolgroup_ldif M /trunk/lcmaps/doc/lcmaps_include.tex.in M /trunk/lcmaps/doc/lcmaps_make_poolacc_dir M /trunk/lcmaps/doc/lcmaps_setup_pool M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/etc/Makefile.am M /trunk/lcmaps/etc/groupmapfile.in M /trunk/lcmaps/etc/lcmaps.db.in M /trunk/lcmaps/etc/vomapfile.in M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_db_read.h M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/interface/lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/interface/lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_return_poolindex.h M /trunk/lcmaps/interface/lcmaps_return_poolindex_without_gsi.h M /trunk/lcmaps/interface/lcmaps_setup.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/modules/Makefile.am M /trunk/lcmaps/modules/jobrepository/Makefile.am M /trunk/lcmaps/modules/jobrepository/globus_gsi_gss_constants.h M /trunk/lcmaps/modules/jobrepository/globus_i_gsi_credential.h M /trunk/lcmaps/modules/jobrepository/gssapi_openssl.h M /trunk/lcmaps/modules/jobrepository/jobrep_test.c M /trunk/lcmaps/modules/jobrepository/jobrep_test.h M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.h M /trunk/lcmaps/project/build.number M /trunk/lcmaps/project/build.properties M /trunk/lcmaps/project/configure.properties.xml M /trunk/lcmaps/project/globus.m4 M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/project/voms.m4 M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/examples/example_1.pdl M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/gssapi_openssl.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/gssapi_openssl.h M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_config.h.in M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/.vilerc M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_defines.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c M /trunk/lcmaps/src/test/Makefile.am M /trunk/lcmaps/src/test/test_pem.c M /trunk/lcmaps/src/test/test_pluginmanager.c keywords properties added ------------------------------------------------------------------------ r11751 | dennisvd | 2010-12-16 16:21:03 +0100 (Thu, 16 Dec 2010) | 1 line Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/bootstrap removed flags from aclocal and automake which are implied from Makefile.am ------------------------------------------------------------------------ r11750 | dennisvd | 2010-12-16 16:18:05 +0100 (Thu, 16 Dec 2010) | 1 line Changed paths: D /trunk/lcmaps/runautotools obsoleted runautotools (use bootstrap instead) ------------------------------------------------------------------------ r11749 | dennisvd | 2010-12-16 16:08:16 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac changed package name from glite-security-lcmaps to just lcmaps. ------------------------------------------------------------------------ r11748 | dennisvd | 2010-12-16 16:02:59 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps_config.h.in fixes to make 'make dist' work. ------------------------------------------------------------------------ r11747 | dennisvd | 2010-12-16 15:50:59 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am added 'foreign' option to top-level Makefile.am so autoreconf just works. ------------------------------------------------------------------------ r11745 | msalle | 2010-12-16 14:52:04 +0100 (Thu, 16 Dec 2010) | 3 lines Changed paths: A /trunk/lcmaps/project/globus.m4 A /trunk/lcmaps/project/voms.m4 Adding voms and globus m4 macros as symlinks to the corresponding ones in the m4/ external directory. ------------------------------------------------------------------------ r11744 | msalle | 2010-12-16 14:46:04 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps Changing toward externals directory instead of files: not everyone has svn 1.6 ------------------------------------------------------------------------ r11743 | msalle | 2010-12-16 14:08:40 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps Updating to reflect the external properties. ------------------------------------------------------------------------ r11742 | msalle | 2010-12-16 13:38:35 +0100 (Thu, 16 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps D /trunk/lcmaps/project/globus.m4 D /trunk/lcmaps/project/voms.m4 voms.m4 and globus.m4 will be externals. ------------------------------------------------------------------------ r11740 | msalle | 2010-12-16 12:44:36 +0100 (Thu, 16 Dec 2010) | 176 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/modules/jobrepository/Makefile.am M /trunk/lcmaps/project/globus.m4 D /trunk/lcmaps/project/globus_pkgconfig.m4 M /trunk/lcmaps/project/voms.m4 M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/Makefile.am M /trunk/lcmaps/src/test/Makefile.am Cumulative patch to sync CVS at CERN with SVN at Nikhef Working file: configure.ac ---------------------------- revision 1.66 date: 2010-12-16 10:17:22 +0000; author: msalle; state: Exp; lines: +18 -9; commitid: ZVhZsMQtEFfQzu0v; VOMS should only be checked in gsi-mode ---------------------------- revision 1.65 date: 2010-12-15 14:17:28 +0000; author: msalle; state: Exp; lines: +60 -82; commitid: IzxtVlJXGx0oVn0v; Rewrite of globus dependency checking: - New globus.m4 macro: - old style and tarball install: specify with-globus-nothr-flavor, otherwise just specify --with-globus-prefix (or nothing) - when globus-prefix is given: check first there, fallback pkg-config - when NO globus-prefix is given: check pkg-config, fallback system default - with-gsi-mode -> enable-gsi-mode ============================================================================= Working file: examples/Makefile.am ---------------------------- revision 1.7 date: 2010-12-15 21:00:15 +0000; author: msalle; state: Exp; lines: +2 -1; commitid: XME5uFClYYYraq0v; Add missing CFLAGS for examples/Makefile.am ---------------------------- revision 1.6 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +2 -2; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ============================================================================= Working file: modules/jobrepository/Makefile.am ---------------------------- revision 1.8 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +16 -6; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ============================================================================= Working file: project/globus.m4 ---------------------------- revision 1.4 date: 2010-12-16 10:12:37 +0000; author: msalle; state: Exp; lines: +27 -6; commitid: AhTKej0Bo454yu0v; - fix problem with old glite-3.1 VDT globus rpm (has broken globus-version) - add support for threaded flavor in globus.m4 (unused in LCMAPS). ---------------------------- revision 1.3 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +31 -39; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ---------------------------- revision 1.2 date: 2010-12-15 14:17:28 +0000; author: msalle; state: Exp; lines: +193 -270; commitid: IzxtVlJXGx0oVn0v; Rewrite of globus dependency checking: - New globus.m4 macro: - old style and tarball install: specify with-globus-nothr-flavor, otherwise just specify --with-globus-prefix (or nothing) - when globus-prefix is given: check first there, fallback pkg-config - when NO globus-prefix is given: check pkg-config, fallback system default - with-gsi-mode -> enable-gsi-mode ============================================================================= Working file: project/globus_pkgconfig.m4 ---------------------------- revision 1.3 date: 2010-12-15 14:17:28 +0000; author: msalle; state: dead; lines: +0 -0; commitid: IzxtVlJXGx0oVn0v; Rewrite of globus dependency checking: - New globus.m4 macro: - old style and tarball install: specify with-globus-nothr-flavor, otherwise just specify --with-globus-prefix (or nothing) - when globus-prefix is given: check first there, fallback pkg-config - when NO globus-prefix is given: check pkg-config, fallback system default - with-gsi-mode -> enable-gsi-mode ============================================================================= Working file: project/voms.m4 ---------------------------- revision 1.5 date: 2010-12-15 14:17:28 +0000; author: msalle; state: Exp; lines: +1 -1; commitid: IzxtVlJXGx0oVn0v; Rewrite of globus dependency checking: - New globus.m4 macro: - old style and tarball install: specify with-globus-nothr-flavor, otherwise just specify --with-globus-prefix (or nothing) - when globus-prefix is given: check first there, fallback pkg-config - when NO globus-prefix is given: check pkg-config, fallback system default - with-gsi-mode -> enable-gsi-mode ============================================================================= Working file: src/Makefile.am ---------------------------- revision 1.42 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +13 -7; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ============================================================================= Working file: src/evaluationmanager/Makefile.am ---------------------------- revision 1.20 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +2 -2; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ============================================================================= Working file: src/grid_credential_handling/Makefile.am ---------------------------- revision 1.4 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +8 -3; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ============================================================================= Working file: src/test/Makefile.am ---------------------------- revision 1.5 date: 2010-12-15 20:34:40 +0000; author: msalle; state: Exp; lines: +11 -5; commitid: Gxh3vnhNX4KzZp0v; Fixing Makefile.am for usage with new globus.m4 macros. - No longer rely on GLOBUS_CFLAGS and GLOBUS_NOTHR_CFLAGS and likewise for _LIBS/_LDFLAGS but on the package-local ones. - globus.m4 no longer AC_SUBST's these variables. - rename all non-exported variables in globus.m4 into ac_globus_* variables. - remove all direct usage of GLOBUS_LOCATION, that's internal in the globus.m4 macro. - add some documentation to globus.m4 - make exclusively usage of system libssl and libcrypto, will prevent errors in GT4 and necessary for GT5. ============================================================================= ------------------------------------------------------------------------ r11738 | msalle | 2010-12-07 20:49:04 +0100 (Tue, 07 Dec 2010) | 6 lines Changed paths: M /trunk/lcmaps/project/voms.m4 reordering the checking order for voms: 1) when --with-voms-prefix is given, check there and at system default, but NOT using pkg-config 2) if no --with... is given, check using pkg-config 3) if pkg-config fails check default location ------------------------------------------------------------------------ r11737 | msalle | 2010-12-07 16:09:29 +0100 (Tue, 07 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/doc/Makefile.am D /trunk/lcmaps/project/lcmaps.m4 M /trunk/lcmaps/project/voms.m4 - moving voms failure into configure.ac itself - moving contents/functionality of lcmaps.m4 into configure.ac itself: it only checks for the --with-gsi-mod flag. ------------------------------------------------------------------------ r11736 | msalle | 2010-12-07 14:24:06 +0100 (Tue, 07 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/project/voms.m4 Further cleanup of voms checking macro: - looking for voms_prefix/{lib,lib64} instead of /usr/{lib,lib64} - exiting on missing voms ------------------------------------------------------------------------ r11735 | msalle | 2010-12-06 16:22:04 +0100 (Mon, 06 Dec 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac D /trunk/lcmaps/project/glite.m4 D /trunk/lcmaps/project/glite_security.m4 A /trunk/lcmaps/project/voms.m4 moving towards ./configure without flags! - new option --with-voms-prefix instead of --with-glite-location - no glite.m4 necessary, it's done using --libdir and system defaults ------------------------------------------------------------------------ r11734 | msalle | 2010-12-02 16:14:49 +0100 (Thu, 02 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am - using VOMS_CPP_LIBS to correctly link. ------------------------------------------------------------------------ r11733 | okoeroo | 2010-12-02 16:07:35 +0100 (Thu, 02 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am The include path for the VOMS header files was set to be resolved by $(GLITE_CFLAGS)/glite/security/voms and is now replaced by the $(VOMS_CFLAGS) to work properly everywhere. ------------------------------------------------------------------------ r11732 | msalle | 2010-12-02 15:24:36 +0100 (Thu, 02 Dec 2010) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/globus_pkgconfig.m4 Making if-then-else for have_globus = yes/no local. The final have_globus = yes/no from pkg-config is lcmaps specific, and is hence moved to configure.ac. ------------------------------------------------------------------------ r11731 | msalle | 2010-12-01 20:41:51 +0100 (Wed, 01 Dec 2010) | 3 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/test/test_pem.c Updating #include to be conform new standard #include ------------------------------------------------------------------------ r11730 | msalle | 2010-12-01 13:47:53 +0100 (Wed, 01 Dec 2010) | 2 lines Changed paths: M /trunk/lcmaps/project/glite_security.m4 - fixing glite_security.m4 for both EPEL and glite 3.2 installations of VOMS ------------------------------------------------------------------------ r11729 | msalle | 2010-12-01 11:59:47 +0100 (Wed, 01 Dec 2010) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac - going back to old AC_VOMS calling, since AC_VOMS_PKGCONFIG is handled internally. ------------------------------------------------------------------------ r11728 | msalle | 2010-11-30 15:54:12 +0100 (Tue, 30 Nov 2010) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac A /trunk/lcmaps/project/glite.m4 A /trunk/lcmaps/project/glite_security.m4 A /trunk/lcmaps/project/globus.m4 A /trunk/lcmaps/project/globus_pkgconfig.m4 A /trunk/lcmaps/project/lcmaps.m4 M /trunk/lcmaps/src/Makefile.am - Making all m4's local in order to be able to tweak them. - configure will first try pkgconfig and fallback on old method. ------------------------------------------------------------------------ r11723 | okoeroo | 2010-11-13 18:34:13 +0100 (Sat, 13 Nov 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Bumped version to 1.4.26 Fixed a SEGFAULT situation found in xrootd ------------------------------------------------------------------------ r11717 | msalle | 2010-11-02 12:35:19 +0100 (Tue, 02 Nov 2010) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac Oops, still needed the correct AC_DEFUN's for a full lcmaps: - Hence, don't undefine the AC_GLOBUS and AC_VOMS, but just don't run them. - This means we need to copy globus.m4 and glite_security.m4 from build.common-cpp. ------------------------------------------------------------------------ r11716 | msalle | 2010-11-02 11:19:47 +0100 (Tue, 02 Nov 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumping version ------------------------------------------------------------------------ r11715 | msalle | 2010-11-02 11:09:03 +0100 (Tue, 02 Nov 2010) | 9 lines Changed paths: M /trunk/lcmaps/configure.ac Update for lcmaps-interface which doesn't need globus or voms, and should therefore not run AC_GLOBUS and AC_VOMS. We fix this by: - running them ONLY when the enable-headers is disabled. - In the case enable-headers is enabled, we define empty macros AC_GLOBUS and AC_VOMS but never run them (configure will see AC_GLOBUS even though it doesn't execute it). This way, only glite.m4 and lcmaps.m4 are needed for lcmaps-interface, i.e. the only dependency for lcmaps-interface will be commom-cpp. ------------------------------------------------------------------------ r11667 | msalle | 2010-08-30 16:24:13 +0200 (Mon, 30 Aug 2010) | 10 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c - splitting pluginname field into two fields in the *local* struct lcmaps_plugindl_t in lcmaps_pluginmanager.c. The problem is that the evaluationmanager not yet looks up the location (i.e. absolute path) of the plugins, but only stores the filename as specified in the .db file. When the pluginmanager tries to find them, it should therefore look for the filename only, not the full paths. By storing both in the internal struct, we can easily compare them with those of the evaluationmanager and also run them using the full path. ------------------------------------------------------------------------ r11659 | msalle | 2010-08-24 16:58:13 +0200 (Tue, 24 Aug 2010) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c - remove default path /usr/lib which interfered with lcmaps_findfile() - removed two array out-of-bound situations, in case pdl_path() length == 0 (should be much further simplified...). ------------------------------------------------------------------------ r11637 | okoeroo | 2010-08-09 14:49:20 +0200 (Mon, 09 Aug 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/lcmaps_config.h.in This doesn't seem to work cross-platform... not expected. On OSX this prevents the autotools to construct a Makefile.in. ------------------------------------------------------------------------ r11636 | okoeroo | 2010-08-09 12:42:48 +0200 (Mon, 09 Aug 2010) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac Improvements in configure.ac ------------------------------------------------------------------------ r11635 | okoeroo | 2010-08-06 15:45:04 +0200 (Fri, 06 Aug 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/lcmaps_config.h.in Compatible with new lcmaps-interface ------------------------------------------------------------------------ r11634 | okoeroo | 2010-08-06 11:54:23 +0200 (Fri, 06 Aug 2010) | 3 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/configure.ac D /trunk/lcmaps/project/lcmaps.m4 Added new configure option: --enable-headers This will select to exclusively build headers files (required for lcmaps-interface deprication). ------------------------------------------------------------------------ r11632 | okoeroo | 2010-08-06 09:29:52 +0200 (Fri, 06 Aug 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Added a debug message to the LCMAPS debug stream and bumped the version to 1.4.23. ------------------------------------------------------------------------ r11631 | okoeroo | 2010-08-05 23:04:16 +0200 (Thu, 05 Aug 2010) | 7 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/lcmaps.m4 M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Restored the configure.ac and Makefile.am to a working state. The --with-headers-only configure option is not functional in this check-in. Added the optional define (disabled by default) DEPRECATED_VOMS_VERSION_CHECK. The define will be removed eventually including the code it encapsulates. When enabled LCMAPS will try to call the removed get*VersionNumber() functions from the vomsapi. This is not the case as there is a name clash with the same function names exposed by the LCAS framework. The version check was used to determine if the VOMS api version was higher then 1.7.0 at run-time, and if true LCMAPS would also extract the VOMS Generic Attributes from the VOMS ACs. As we've progressed well passed the 1.7.0 version of the VOMS api, the deprication of the function in the VOMS api and the fact that in its absence the LCAS version of the function could have screwed up with this check in random cases, this code is now made depricated. ------------------------------------------------------------------------ r11629 | okoeroo | 2010-08-04 16:05:38 +0200 (Wed, 04 Aug 2010) | 2 lines Changed paths: A /trunk/lcmaps/project/lcmaps.m4 Adding lcmaps.m4 to own project tree, as I'm now going to use it slightly differently. ------------------------------------------------------------------------ r11624 | okoeroo | 2010-08-02 10:59:02 +0200 (Mon, 02 Aug 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumping version accordingly ------------------------------------------------------------------------ r11623 | okoeroo | 2010-08-02 10:57:30 +0200 (Mon, 02 Aug 2010) | 8 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/src/lcmaps.c Added new APIs: LCMAPS_C_STORAGE_CLASS int lcmaps_get_major_version (void); LCMAPS_C_STORAGE_CLASS int lcmaps_get_minor_version (void); LCMAPS_C_STORAGE_CLASS int lcmaps_get_patch_version (void); The goal is to be able to determine at run-time what the version of LCMAPS, which interfaces it could expose and what to expect of LCMAPS. ------------------------------------------------------------------------ r11588 | msalle | 2010-06-28 13:50:52 +0200 (Mon, 28 Jun 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c Prevent potential printing of (null). ------------------------------------------------------------------------ r11539 | okoeroo | 2010-06-15 17:18:09 +0200 (Tue, 15 Jun 2010) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Fixes for OSX building. ------------------------------------------------------------------------ r11536 | msalle | 2010-05-28 13:31:19 +0200 (Fri, 28 May 2010) | 9 lines Changed paths: M /trunk/lcmaps/configure.ac - To fix error: m4_require: circular dependency of AC_LANG_COMPILER(C++) it's necessary to check for the a C++ compiler beforehand! That's done by including AC_PROG_CXX, not only AC_PROG_CC. See definition of AC_COMPILE_IFELSE in general.m4: '...Requires that the compiler for the current language was checked for...' Note that AC_TRY_COMPILE is deprecated and should be replaced by AC_COMPILE_IFELSE. ------------------------------------------------------------------------ r11515 | okoeroo | 2010-04-17 09:57:27 +0200 (Sat, 17 Apr 2010) | 14 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c New added API. Reason: This is to lift the requirement for special builds for Open Science Grid. Function: lcmaps_disable_voms_attributes_verification Description: Disables the verification in the VOMS API Function: lcmaps_enable_voms_attributes_verification Description: Enables the verification in the VOMS API (default) Function: lcmaps_is_set_to_verify_voms_attributes Description: Will return the current setting to enable or disable the verification of the VOMS credentials by the VOMS API Bumping version to 1.4.21 (going for 1.5). ------------------------------------------------------------------------ r11514 | okoeroo | 2010-04-07 13:01:10 +0200 (Wed, 07 Apr 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Added missing prototypes and fixed variable qualifier problem. ------------------------------------------------------------------------ r11513 | okoeroo | 2010-04-07 12:41:41 +0200 (Wed, 07 Apr 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_setup.c Fixed typos and build problems. Bumping version to 1.4.20-1 (was 1.4.11-3). Potentially ready to jump to 1.5. ------------------------------------------------------------------------ r11512 | okoeroo | 2010-04-07 12:10:46 +0200 (Wed, 07 Apr 2010) | 33 lines Changed paths: M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c Added new CGUL function to aid the new interface to LCMAPS: /****************************************************************************** Function: lcmaps_run_with_stack_of_x509_and_return_account Description: LCMAPS runs receiving a certificate chain, containing at least an End-Entity Certificate. A list of policies may be provided. The allocated uid, gids and the poolindex will be returned to the calling application. This interface is intended to be used by the modified suexec wrapper. Parameters: cert_chain : The certificate chain to use for the mapping mapcounter: : The counter which will be added to the poolindex, effectively enabling multiple account mappings request : RSL string npols : number of policies to be considered for evaluation policynames : the names of the policies to be considered for evaluation puid : pointer to the uid found (output parameter) ppgid_list : pointer to the list of primary gids found (output parameter) pnpgid : pointer to the number of primary gids found (output parameter) psgid_list : pointer to the list of secondary gids found (output parameter) pnsgid : pointer to the number of secondary gids found (output parameter) poolindexp : pointer to poolindex string (output parameter) Returns: 0: mapping succeeded 1: mapping failed ******************************************************************************/ The interface has been added to the new core set of interfaces to LCMAPS ------------------------------------------------------------------------ r11505 | okoeroo | 2010-03-31 16:07:09 +0200 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Syncing version details. ------------------------------------------------------------------------ r11493 | okoeroo | 2010-03-31 15:24:34 +0200 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /trunk/lcmaps/autogen.sh M /trunk/lcmaps/bootstrap M /trunk/lcmaps/doc/lcmaps_gen_poolacc_ldif M /trunk/lcmaps/doc/lcmaps_gen_poolgroup_ldif M /trunk/lcmaps/doc/lcmaps_make_poolacc_dir M /trunk/lcmaps/doc/lcmaps_setup_pool M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/runautotools M /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h Bumping age and updated licence and copyright in the last 9 files. ------------------------------------------------------------------------ r11480 | okoeroo | 2010-02-24 15:23:39 +0100 (Wed, 24 Feb 2010) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Restored a fix to the original way of working. Testing again... ------------------------------------------------------------------------ r11455 | okoeroo | 2010-02-19 07:37:28 +0100 (Fri, 19 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_db_read.h M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/interface/lcmaps_gss_assist_gridmap.h M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/interface/lcmaps_return_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_return_poolindex.h M /trunk/lcmaps/interface/lcmaps_return_poolindex_without_gsi.h M /trunk/lcmaps/interface/lcmaps_setup.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_verify_account_from_pem.h M /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/modules/jobrepository/globus_gsi_gss_constants.h M /trunk/lcmaps/modules/jobrepository/globus_i_gsi_credential.h M /trunk/lcmaps/modules/jobrepository/gssapi_openssl.h M /trunk/lcmaps/modules/jobrepository/jobrep_test.c M /trunk/lcmaps/modules/jobrepository/jobrep_test.h M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.h M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/globus_gsi_gss_constants.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/gssapi_openssl.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/gssapi_openssl.h M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_defines.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c M /trunk/lcmaps/src/test/test_pem.c M /trunk/lcmaps/src/test/test_pluginmanager.c Updated and added licence ------------------------------------------------------------------------ r11437 | okoeroo | 2010-02-18 12:19:28 +0100 (Thu, 18 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Rewritten runEvaluationmanager function and moved the resetCredentialData() function one level up to allow for proper flow handling when dealing with multiple policies and demanding the final Credential Data state to be printed in the log. ------------------------------------------------------------------------ r11426 | okoeroo | 2010-02-17 12:03:14 +0100 (Wed, 17 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c Cleaner output ------------------------------------------------------------------------ r11424 | okoeroo | 2010-02-17 07:46:45 +0100 (Wed, 17 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Finished clean-up of logging output. This should be acceptable from the framework. ------------------------------------------------------------------------ r11417 | okoeroo | 2010-02-16 09:53:53 +0100 (Tue, 16 Feb 2010) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Don't clean gathered credential data until processed in the log file. Clean it after printing. ------------------------------------------------------------------------ r11416 | okoeroo | 2010-02-15 21:34:28 +0100 (Mon, 15 Feb 2010) | 8 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Fixed signed and unsigned conflicts in parsing routines when fullfilling rules and policys and recursion issues. This problem was hard to exploit, but a bug nontheless (unless somebody went beyond 2^31 plugins and policies) Also fixed the poolindex interface to LCMAPS. A symbol would not have been resolved during run-time as it has been depricated last year. Only used by the Globus DAS/Workspace Service interfacing (to the best of our knowledge). Fixed a problem in the logging facility during the initialization phase. The value was always overridden by the next call. I've removed the previous overridden call, which might call for bug Savannah bug #61772. ------------------------------------------------------------------------ r11415 | okoeroo | 2010-02-15 19:55:55 +0100 (Mon, 15 Feb 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Flawless build (and works) :-) The old (never used and not reachable) functions are now surrounded by the #ifdef LCMAPS_DEPRECATED construction. ------------------------------------------------------------------------ r11413 | okoeroo | 2010-02-15 17:56:34 +0100 (Mon, 15 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Need to set the yyin back to stdin to attend the closing procedure/ritual ------------------------------------------------------------------------ r11411 | okoeroo | 2010-02-15 16:38:18 +0100 (Mon, 15 Feb 2010) | 8 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h Cleaning: - Uninitialized values - Shadowed values - Misdeclarations - Misuse of 'const' EVERYWHERE! - brain dead code constructions... - and more. ------------------------------------------------------------------------ r11410 | okoeroo | 2010-02-15 16:05:02 +0100 (Mon, 15 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Cleaning dangerous code constructions. ------------------------------------------------------------------------ r11409 | msalle | 2010-02-15 13:17:37 +0100 (Mon, 15 Feb 2010) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c - fixed more instances of printing a NULL pointer. - introduced const variable undefined which is printed instead. ------------------------------------------------------------------------ r11408 | msalle | 2010-02-15 12:09:26 +0100 (Mon, 15 Feb 2010) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c - make sure level_str[] is initialized when it is used. - use NULL for pointers - check return value of strdup - don't print possibly NULL character arrays. ------------------------------------------------------------------------ r11386 | okoeroo | 2010-02-11 14:34:54 +0100 (Thu, 11 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Found a more generic location for the printCredData function to log the credential data that has lead to a particular mapping decision mapping. ------------------------------------------------------------------------ r11381 | okoeroo | 2010-02-11 10:47:30 +0100 (Thu, 11 Feb 2010) | 4 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Squashed a bunch of other log lines to make very distinct statements about the mapping result of LCMAPS. Ready for internal testing and pre-certification. ------------------------------------------------------------------------ r11375 | okoeroo | 2010-02-10 16:36:33 +0100 (Wed, 10 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Lots of logfile cosmetics done (as requested). ------------------------------------------------------------------------ r11369 | okoeroo | 2010-02-09 14:17:38 +0100 (Tue, 09 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Removed unworkable part. ------------------------------------------------------------------------ r11368 | okoeroo | 2010-02-09 12:59:58 +0100 (Tue, 09 Feb 2010) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Kicked out overly verbose statements with zero-added value. ------------------------------------------------------------------------ r11358 | okoeroo | 2010-02-08 09:12:44 +0100 (Mon, 08 Feb 2010) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Less verbose logging output on minimal loglevel. Only the successes of the plug-ins are reported per run. This is needed to diagnose the problems by its flow through the LCMAPS plug-in. I'm still building a new compound log-out line which signals who became what. ------------------------------------------------------------------------ r11330 | okoeroo | 2009-12-24 22:12:38 +0100 (Thu, 24 Dec 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Removed -Wstrict-prototypes compiler option due to the noise in the build logs (mostly due to the Globus library and the VOMS api) ------------------------------------------------------------------------ r11329 | okoeroo | 2009-12-24 21:47:35 +0100 (Thu, 24 Dec 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Pedantic code clean ups. ------------------------------------------------------------------------ r11328 | okoeroo | 2009-12-24 20:51:17 +0100 (Thu, 24 Dec 2009) | 13 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/interface/lcmaps.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h Added the magical list of compiler flags that are not included in a "-Wall" compile (from the example of gLExec). Side note: I'm thinking of kicking out the -strict-prototypes option as this will clutter the build report with issues found in the VOMS api and Globus library. Usually triggered by "int func();" declarations which should be "int func(void);" according to the (perhaps pedantic) language specs. Mostly code clean-ups and proper function declarations. Also kicked out unused variables. Also resolved an problem where the VOMS AC Generic Attributes are declared as const char *, which the code treats as char *. Administrative bump of the LCMAPS version to 1.4.9-1. (Yes, I've got a creative itch to scratch on Christmas Eve while enjoying the evening next to the tv with cake, drinks and such). :-) ------------------------------------------------------------------------ r11281 | msalle | 2009-09-03 15:52:38 +0200 (Thu, 03 Sep 2009) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version to 1.4.8-5 ------------------------------------------------------------------------ r11280 | msalle | 2009-09-03 15:28:02 +0200 (Thu, 03 Sep 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c Commented out last 'end_logging()' call as pointed out by Fabio Capannini. ------------------------------------------------------------------------ r11279 | msalle | 2009-09-03 15:02:26 +0200 (Thu, 03 Sep 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l Fixed comment typo ------------------------------------------------------------------------ r11278 | msalle | 2009-09-03 14:53:04 +0200 (Thu, 03 Sep 2009) | 12 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l - Fixed path definition: the former definition didn't manage to match paths starting with . as they would be caught by the TERM pattern which is higher up in the lex pattern list. Moving TERM down doesn't help because then TERMs starting with a dot would be matches as paths... Now a (sub)path can start with 0 or more . followed by a / So valid paths include /opt/glite ./opt/glite ../opt/glite But not opt/glite ------------------------------------------------------------------------ r11277 | msalle | 2009-09-03 12:24:59 +0200 (Thu, 03 Sep 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l (Hopefully) fixed lex error. ------------------------------------------------------------------------ r11267 | okoeroo | 2009-08-04 11:10:56 +0200 (Tue, 04 Aug 2009) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c If logging to Syslog is selected, then the priority of 0 would broadcast the message in the system by the syslogd This must be prevented, hence the following hack to map the priority 0 message to 1 Without this hack some messages would not be submitted to Syslog, because they are masked for a good reason. ------------------------------------------------------------------------ r11226 | msalle | 2009-06-29 22:14:25 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version ------------------------------------------------------------------------ r11225 | msalle | 2009-06-29 22:12:01 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Clarified in comment why we need sk_X509_free and not sk_X509_pop_free ------------------------------------------------------------------------ r11220 | msalle | 2009-06-29 17:54:13 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Putting remark (no code change) to point out the problem with sk_X509_dup() ------------------------------------------------------------------------ r11219 | msalle | 2009-06-29 17:34:00 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c trying to revert to JJK code to see if it solves the segfault ------------------------------------------------------------------------ r11218 | msalle | 2009-06-29 15:41:52 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c removed unused variable ------------------------------------------------------------------------ r11217 | msalle | 2009-06-29 15:25:31 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Added check on non-existent cert argument ------------------------------------------------------------------------ r11215 | msalle | 2009-06-29 14:47:54 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version ------------------------------------------------------------------------ r11214 | msalle | 2009-06-29 12:55:26 +0200 (Mon, 29 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c (Hopefully) finalized fix for double free problem with lcmaps_x509_free_chain() ------------------------------------------------------------------------ r11213 | msalle | 2009-06-26 17:14:32 +0200 (Fri, 26 Jun 2009) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c The chain argument for lcmaps_x509_free_chain() needs to be STACK_OF(X509) ** chain, otherwise the NULL doesn't come back to caller. Same as for lcas_x509_free_chain() ------------------------------------------------------------------------ r11180 | okoeroo | 2009-06-15 11:35:36 +0200 (Mon, 15 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/autogen.sh M /trunk/lcmaps/bootstrap Making a fix in the bootstrap/autogen.sh scripts to detect a Darwin machine (OSX) and use glibtoolize instead of libtoolize. ------------------------------------------------------------------------ r11179 | okoeroo | 2009-06-15 11:30:57 +0200 (Mon, 15 Jun 2009) | 2 lines Changed paths: A /trunk/lcmaps/autogen.sh Adding the autogen.sh (as symlink to bootstrap.sh) ------------------------------------------------------------------------ r11177 | okoeroo | 2009-06-12 12:40:37 +0200 (Fri, 12 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version. ------------------------------------------------------------------------ r11176 | okoeroo | 2009-06-12 12:12:45 +0200 (Fri, 12 Jun 2009) | 5 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Fixing a bug: when VOMS ACs are found, but not valid (for any reason), they will be ignored and stripped off. Also adding the patch supplied by Dennis to fix the building on Debian machines where Lex is not available, but Flex is. It should be solve by configure now. ------------------------------------------------------------------------ r11172 | msalle | 2009-06-04 10:44:36 +0200 (Thu, 04 Jun 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Fixed bug. ------------------------------------------------------------------------ r11047 | okoeroo | 2009-03-10 15:20:53 +0100 (Tue, 10 Mar 2009) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am Some doc work (not finished) ------------------------------------------------------------------------ r11046 | okoeroo | 2009-03-10 14:05:13 +0100 (Tue, 10 Mar 2009) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumping version for new release. ------------------------------------------------------------------------ r11038 | okoeroo | 2009-03-09 08:27:14 +0100 (Mon, 09 Mar 2009) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Removed requirement to finish the "with_pem" LCMAPS interface with a poolindex. Not having a poolindex is fine too. ------------------------------------------------------------------------ r10955 | okoeroo | 2009-02-18 21:19:23 +0100 (Wed, 18 Feb 2009) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Properly free'ing the certificate chain. (patch provided by Jan Just). ------------------------------------------------------------------------ r10893 | okoeroo | 2009-02-04 15:20:29 +0100 (Wed, 04 Feb 2009) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties bumped and syncing version ------------------------------------------------------------------------ r10891 | okoeroo | 2009-02-04 15:13:03 +0100 (Wed, 04 Feb 2009) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties bumped version ------------------------------------------------------------------------ r10890 | okoeroo | 2009-02-04 14:53:54 +0100 (Wed, 04 Feb 2009) | 5 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Solved invalid free. Only found when using multiple VOMS ACs. The VOMS AC list was allocated in one chunk, but is free'd in smaller parts. found by Jan Just ------------------------------------------------------------------------ r10761 | okoeroo | 2008-11-14 15:52:02 +0100 (Fri, 14 Nov 2008) | 7 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c Performed lots of weed cutting to disable the interface local log functions. A beautified clean up will follow soon. This one will be pushed to the certification. Note to self (and subscribed readers): There is a chance that the services that use LCMAPS don't call the initialization functions of LCMAPS and therefor the first log messages of the could be missed. If not properly initializated, LCMAPS will initialize itself so it should hurt too much. This is an attention point! I definately hope that I don't have to do more significant fixed to the framework on such a short notice... ------------------------------------------------------------------------ r10760 | okoeroo | 2008-11-14 14:13:22 +0100 (Fri, 14 Nov 2008) | 11 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c The interfaces of LCMAPS have stayed untouched for quite a while. It seems that they all have their own log facility which usually streams right along the regular logfile or doesn't create an error in the syslog mode, as it is either not selected or is running with sufficient privileges to create and open a log file in the /var/log/ directory. This has to change because of the glexec in the unprivileged run mode (aka without setuid aka logging-only mode). In this check-in I've brutally disabled the front-end seperated log facility and I've substituted the front-end specific log_line facility with the generic lcmaps_log facility. This doesn't function perfectly, as there are calls made to that log facility before the core of the LCMAPS framework is initialized and before the logging facility is started. The generic log facility gets the fire up kicker from the LCMAPS core initialization. This will need to be solved. I'll have to see if I can make it nice today or solve this someother time. As for now, this check-in works fine with an unprivileged glexec and is a key fix for that run mode. ------------------------------------------------------------------------ r10759 | okoeroo | 2008-11-14 12:23:35 +0100 (Fri, 14 Nov 2008) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c Adding a magic oneliner into the log. I have to test if this works correctly. It would comply to the wish of making all the essential mapping credential information be published in the logs for a given mapping request. ------------------------------------------------------------------------ r10392 | okoeroo | 2008-03-03 11:26:33 +0100 (Mon, 03 Mar 2008) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Fixed cleanup (free'ing) of vomsdata structure when VOMS GAs are used ------------------------------------------------------------------------ r10391 | okoeroo | 2008-02-29 15:39:18 +0100 (Fri, 29 Feb 2008) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Fixing initial problem described in bug #34020 ------------------------------------------------------------------------ r10350 | okoeroo | 2007-09-24 15:17:46 +0200 (Mon, 24 Sep 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties bumped version ------------------------------------------------------------------------ r10349 | okoeroo | 2007-09-24 15:16:04 +0200 (Mon, 24 Sep 2007) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Trying again to replace localtime with gmtime in lcmaps ------------------------------------------------------------------------ r10347 | okoeroo | 2007-09-20 13:43:45 +0200 (Thu, 20 Sep 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version ------------------------------------------------------------------------ r10346 | okoeroo | 2007-09-20 13:41:55 +0200 (Thu, 20 Sep 2007) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac Added the autoconf option to --enable-osg, which will trigger the needed #ifdef setting The default is NOT to enable this option. ------------------------------------------------------------------------ r10345 | okoeroo | 2007-09-19 20:45:01 +0200 (Wed, 19 Sep 2007) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Returned the state localtime() again, because of the OSG version that needs to be tagged first ------------------------------------------------------------------------ r10344 | okoeroo | 2007-09-19 13:20:28 +0200 (Wed, 19 Sep 2007) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps-interface/src/lcmaps_return_account_from_pem.c M /trunk/lcmaps-interface/src/lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps-interface/src/lcmaps_verify_account_from_pem.c Changed from localtime logging to gmtime logging ------------------------------------------------------------------------ r10264 | okoeroo | 2007-08-02 14:11:46 +0200 (Thu, 02 Aug 2007) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version. (This should be it) ------------------------------------------------------------------------ r10244 | okoeroo | 2007-07-09 14:01:53 +0200 (Mon, 09 Jul 2007) | 2 lines Changed paths: A /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c See previous comments ------------------------------------------------------------------------ r10243 | okoeroo | 2007-07-09 13:58:23 +0200 (Mon, 09 Jul 2007) | 2 lines Changed paths: A /trunk/lcmaps/src/lcmaps_return_poolindex.c Added for unification ------------------------------------------------------------------------ r10242 | okoeroo | 2007-07-09 13:56:33 +0200 (Mon, 09 Jul 2007) | 2 lines Changed paths: A /trunk/lcmaps/src/lcmaps_return_account_from_pem.c Added missing file for the grant unification (2) ------------------------------------------------------------------------ r10241 | okoeroo | 2007-07-09 13:44:56 +0200 (Mon, 09 Jul 2007) | 2 lines Changed paths: A /trunk/lcmaps/src/lcmaps_verify_account_from_pem.c Added missing file for the grant unification. ------------------------------------------------------------------------ r10240 | okoeroo | 2007-07-09 12:10:47 +0200 (Mon, 09 Jul 2007) | 7 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/lcmaps.h A /trunk/lcmaps/interface/lcmaps_gss_assist_gridmap.h A /trunk/lcmaps/interface/lcmaps_return_account_from_pem.h A /trunk/lcmaps/interface/lcmaps_return_poolindex.h A /trunk/lcmaps/interface/lcmaps_return_poolindex_without_gsi.h A /trunk/lcmaps/interface/lcmaps_verify_account_from_pem.h M /trunk/lcmaps/src/Makefile.am A /trunk/lcmaps/src/globus_gsi_gss_constants.h A /trunk/lcmaps/src/gssapi_openssl.h A /trunk/lcmaps/src/lcmaps_return_poolindex_without_gsi.c This integrates the LCMAPS-Interface into the LCMAPS main component. Solve circular dependency and build problems of the lcmaps-interface. !!! This will depricate the 'lcmaps-interface' component (in time...) !!! ------------------------------------------------------------------------ r10237 | okoeroo | 2007-07-06 13:36:03 +0200 (Fri, 06 Jul 2007) | 8 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version. Version 1.4.1.1 will have the VOMS GA support and will also solve the circular dependency issue. The dependencies in Etics will also be needing to changes. LCMAPS can now build on its own. Prior to this change it needed the lcmaps-interface. LCMAPS will not have the dependency on lcmaps-interface anymore (reflected in Etics). ------------------------------------------------------------------------ r10235 | okoeroo | 2007-07-06 12:12:18 +0200 (Fri, 06 Jul 2007) | 2 lines Changed paths: A /trunk/lcmaps/interface/lcmaps_setup.h Adding file from lcmaps-interface (solving circ dep issue) ------------------------------------------------------------------------ r10234 | okoeroo | 2007-07-06 12:11:43 +0200 (Fri, 06 Jul 2007) | 3 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Fixed compile bugs. Also I'm trying to solve the circular dependency issue ------------------------------------------------------------------------ r10233 | okoeroo | 2007-07-06 10:02:14 +0200 (Fri, 06 Jul 2007) | 3 lines Changed paths: M /trunk/lcmaps/runautotools M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Added better check for Globus when building without Etics. Also added prototype of a new function to extract GAs ------------------------------------------------------------------------ r10232 | okoeroo | 2007-07-05 16:51:05 +0200 (Thu, 05 Jul 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Version bump ------------------------------------------------------------------------ r10231 | okoeroo | 2007-07-05 16:49:50 +0200 (Thu, 05 Jul 2007) | 5 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Added support for Generic Attributes, code donation by Placi Flury from SWITCH Also the freeing of VOMS attributes from the LCMAPS framework is fixed with this version. (still need to do the checks, but it looks good) ------------------------------------------------------------------------ r10179 | okoeroo | 2007-05-14 16:15:02 +0200 (Mon, 14 May 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Tagged OSG variant, now removed it. ------------------------------------------------------------------------ r10177 | okoeroo | 2007-05-14 15:44:36 +0200 (Mon, 14 May 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac Added aditional compiler flags for OSG ------------------------------------------------------------------------ r10175 | okoeroo | 2007-05-14 13:53:26 +0200 (Mon, 14 May 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version ------------------------------------------------------------------------ r10174 | okoeroo | 2007-05-14 13:52:08 +0200 (Mon, 14 May 2007) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Added GUMSOSG compiler flag. ------------------------------------------------------------------------ r10164 | okoeroo | 2007-05-02 16:28:01 +0200 (Wed, 02 May 2007) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version ------------------------------------------------------------------------ r10163 | okoeroo | 2007-05-02 16:22:36 +0200 (Wed, 02 May 2007) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Fixed globus version dependency at build time for org.glite.security.lcmaps ------------------------------------------------------------------------ r10073 | okoeroo | 2006-12-08 15:06:14 +0100 (Fri, 08 Dec 2006) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/Makefile.am Two bytes set wrong means a md5enc(rant)load of problems ------------------------------------------------------------------------ r10043 | okoeroo | 2006-11-29 15:13:55 +0100 (Wed, 29 Nov 2006) | 5 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/Makefile.am Includes the CFLAGS fix for etics, plus bumped the version to 1.3.12 ps: Gives me troubles with the old build system... this is going to be an exiting transition between the two build environments... ------------------------------------------------------------------------ r10007 | okoeroo | 2006-10-24 12:14:28 +0200 (Tue, 24 Oct 2006) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Moved a few log messages to a higher log level ------------------------------------------------------------------------ r9973 | okoeroo | 2006-10-10 12:13:22 +0200 (Tue, 10 Oct 2006) | 5 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Code cleanup or basicly a big deletion of non used functions: thanks for the fish! Basicly to solve the seg fault problem when the frameworks are called with only a Short Lived Certificate instead of a proxy chain. A traditional chain has a minimum length of 3 (1: CA (or more sub-CA certs), 2: User cert, 3: Primary or first Proxy), the problem rises when the chain only has on CA (the fermi kCA) and a short lived cert which doesn't have a passprhase (by use of a semetrical encryption) set on the private key. ------------------------------------------------------------------------ r9966 | okoeroo | 2006-10-05 12:25:32 +0200 (Thu, 05 Oct 2006) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Very securly commented out the non-verification of the VOMS attributes. ------------------------------------------------------------------------ r9951 | okoeroo | 2006-09-21 16:11:51 +0200 (Thu, 21 Sep 2006) | 11 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c *** Don't use this version in Tagging *** For OSG: Searching the environment for the "LCMAPS_VOMS_EXTRACT" and the "disabled" value this will not kill the VOMS parsing all together (or actually bypassing the routines). Instead it will gently extract all the VOMS Attributes and set the VOMS_SetVerificationType(VERIFY_NONE, vd, &errNo) to not verify the credentials. Thus offloading the trust in the credentials to be checked elsewhere in a database that has extracted a VOMS Database in great detail (The GUMS system) giving the mapping controle to a site operator in a totally different way as we do in LCMAPS. ------------------------------------------------------------------------ r9933 | okoeroo | 2006-09-18 15:29:31 +0200 (Mon, 18 Sep 2006) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties bumped version to: 1.3.10 Includes disabling the VOMS parsing gracefully ------------------------------------------------------------------------ r9932 | okoeroo | 2006-09-18 15:28:02 +0200 (Mon, 18 Sep 2006) | 5 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Problem fixed. LCMAPS_VOMS_EXTRACT=disabled is what disables the VOMS parsing gracefully Everything else (like not setting it) will use the voms-api-c lib to parse the VOMS credentials. ------------------------------------------------------------------------ r9931 | okoeroo | 2006-09-18 14:07:54 +0200 (Mon, 18 Sep 2006) | 10 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c Scratched my own VOMS parser from the framework. Added the environment var: $LCMAPS_VOMS_EXTRACT="disabled" or else... When set, all VOMS parsing will be skipped. This is needed because the existing voms-api-c can't return a vomsdata struct without the verification running perfectly. In the LCG world, this environment option should stay untouched or not 'disabled' to function. I don't think this is a vulnerability, because in a full VOMS world this would result in a mapping if the VOMS credentials are neglected. ------------------------------------------------------------------------ r9921 | okoeroo | 2006-08-30 15:00:36 +0200 (Wed, 30 Aug 2006) | 7 lines Changed paths: M /trunk/lcmaps/build.xml M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c It works! At the moment the #define s are in the LCG OK state, I need to propagate the define to another location. But how do I build that into an ant switch??? Anyway... getting there... ------------------------------------------------------------------------ r9919 | okoeroo | 2006-08-28 16:45:47 +0200 (Mon, 28 Aug 2006) | 15 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c LCMAPS can now read the FQANs without the verification of them, needed for GUMS and OSG, ************** DO NOT ******************** USE THIS IN LCG/EGEE EVER.... I'll need to create a new branch I think... ------------------------------------------------------------------------ r9918 | okoeroo | 2006-08-25 15:35:51 +0200 (Fri, 25 Aug 2006) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Intermediate, neglect please ------------------------------------------------------------------------ r9905 | okoeroo | 2006-08-21 16:08:19 +0200 (Mon, 21 Aug 2006) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/configure.ac M /trunk/lcmaps-interface/interface/lcmaps_types.h M /trunk/lcmaps-interface/project/version.properties Bumped version: 1.3.9 Full support for the lcmaps_vomsdata_t struct to be used by any plugin. ------------------------------------------------------------------------ r9899 | okoeroo | 2006-08-18 15:19:17 +0200 (Fri, 18 Aug 2006) | 32 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c LCMAPS (specific) vomsdata type is usable by LCMAPS plugins: Introspect for: "voms_data_list", "lcmaps_vomsdata_t *" It form is like this: lcmaps_vomsdata_t lcmaps_voms_t * voms int nvoms char * workvo char * extra_data lcmaps_voms_t char * user_dn char * user_ca char * voms_issuer_dn char * voms_issuer_ca char * uri char * date1 char * date2 char * voname lcmaps_fqan_unix_t * fqan_unix nfqan nfqan lcmaps_fqan_unix_t char * fqan uid_t uid gid_t gid ------------------------------------------------------------------------ r9897 | okoeroo | 2006-08-17 11:01:43 +0200 (Thu, 17 Aug 2006) | 3 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c Made a big effort in getting our own LCMAPS VOMS structure up to speed. Simply because for the new external interfaces from the plugins, it is required to get more info then now available in the LCMAPS internals. ------------------------------------------------------------------------ r9890 | okoeroo | 2006-08-16 12:33:09 +0200 (Wed, 16 Aug 2006) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c changed lcmaps_voms_t ** to lcmaps_voms_t * ------------------------------------------------------------------------ r9885 | okoeroo | 2006-08-11 16:37:23 +0200 (Fri, 11 Aug 2006) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c added the correct num of runvars in the code. ------------------------------------------------------------------------ r9876 | okoeroo | 2006-07-20 16:27:32 +0200 (Thu, 20 Jul 2006) | 6 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c Added 'pem_string' to Run Vars in the framework, the plugins can now request the pem_string through their introspect functions and gain access to the string. Used for: - verify proxy - gums ------------------------------------------------------------------------ r9875 | okoeroo | 2006-07-20 12:34:04 +0200 (Thu, 20 Jul 2006) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Primary change is the clearing of some debug compiler switches for the sake of code clarity. ------------------------------------------------------------------------ r9846 | okoeroo | 2006-05-12 16:42:04 +0200 (Fri, 12 May 2006) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_types.h fix small inconsistance between the two lcmaps_types.h files ------------------------------------------------------------------------ r9845 | okoeroo | 2006-05-12 16:35:59 +0200 (Fri, 12 May 2006) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps-interface/interface/lcmaps_types.h Added lcmaps store advanced VOMS info in framework ------------------------------------------------------------------------ r9828 | okoeroo | 2006-05-12 12:00:04 +0200 (Fri, 12 May 2006) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version to 1.3.8 to get in sync with the tagsnames ------------------------------------------------------------------------ r9827 | okoeroo | 2006-05-12 11:58:40 +0200 (Fri, 12 May 2006) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties Bumped version to 1.3.5 This version solves bug #16633 ------------------------------------------------------------------------ r9825 | okoeroo | 2006-05-12 11:08:59 +0200 (Fri, 12 May 2006) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Commented out the calls to the functions 'lcmaps_print_x509_to_string' and 'lcmaps_print_stack_of_x509_to_string'. We don't need to print the certificate chain to file, when we are not debugging... ------------------------------------------------------------------------ r9824 | okoeroo | 2006-05-11 16:26:24 +0200 (Thu, 11 May 2006) | 5 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps-interface/interface/lcmaps_types.h Added new LCMAPS specific VOMS Data Structure to the runvars. This is to have more information about the VOMS credentials without having to include the VOMS API. Ofcourse the information is usually filled by the VOMS API, but we need to move around the structure in a more lighter way then such a big structure. ------------------------------------------------------------------------ r9823 | okoeroo | 2006-05-09 16:56:12 +0200 (Tue, 09 May 2006) | 8 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Major overhaul of the LCMAPS framework, with regards of the certificate credential handling. The certificate chain creation from PEM was the only part that worked correctly. The individual certificate was rubish for an unapparent reason. The indivi. cert is now created from the chain and set to the last certificate (the Leaf proxy). The DN extraction function works without the globus call to select the right certificate to extract the DN from. ------------------------------------------------------------------------ r9820 | okoeroo | 2006-05-04 16:26:05 +0200 (Thu, 04 May 2006) | 5 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Added a new debugging function: void lcmaps_stack_of_x509_to_string (STACK_OF(X509) * px509_chain); Currently only locally usable from lcmaps_voms_attributes.c ------------------------------------------------------------------------ r9819 | okoeroo | 2006-05-04 11:43:18 +0200 (Thu, 04 May 2006) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c Applyed patch to extract the voms api error message when the errorcode is VERR_VERIFY ------------------------------------------------------------------------ r9641 | msteenba | 2006-03-09 12:05:46 +0100 (Thu, 09 Mar 2006) | 2 lines Changed paths: M /branches/glite-security-lcmaps_branch_1_3_0/lcmaps/configure.ac M /branches/glite-security-lcmaps_branch_1_3_0/lcmaps/project/version.properties M /trunk/lcmaps/configure.ac change needed for automake-1.9 ------------------------------------------------------------------------ r9234 | msteenba | 2006-02-09 15:18:32 +0100 (Thu, 09 Feb 2006) | 2 lines Changed paths: A /trunk/lcmaps/doc/CHANGES_1.2.x-1.3.x added the changes between 1.2.x and 1.3.x ------------------------------------------------------------------------ r8726 | msteenba | 2006-01-05 12:08:52 +0100 (Thu, 05 Jan 2006) | 7 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c Merge with glite-security-lcmaps_branch_1_3_0 branch: version 1.3.4 (fixes bug #8923): - use libvomsapi instead of libvomsc (for voms > 1.6.0) - lcmaps_run_with_fqans_mapcounter_and_return_account() does not fail if poolindex not found - added missing free() - set default count to zero for DN and poolindex ------------------------------------------------------------------------ r8105 | msteenba | 2005-12-22 17:31:44 +0100 (Thu, 22 Dec 2005) | 4 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps-plugins-basic/src/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolaccount.c apply fixes from 1_3_0 branches: - fixed verification method for multiple accounts + some clean-up - added missing free() ------------------------------------------------------------------------ r8037 | msteenba | 2005-12-20 16:05:50 +0100 (Tue, 20 Dec 2005) | 2 lines Changed paths: M /trunk/lcas/src/lcas.c M /trunk/lcas-plugins-voms/src/voms/Makefile.am M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/test/Makefile.am M /trunk/lcmaps-plugins-verify-proxy/src/verify-proxy/Makefile.am M /trunk/lcmaps-plugins-voms/src/voms/Makefile.am use libvomsapi instead of libvomsc (for voms > 1.6.0) ------------------------------------------------------------------------ r7509 | msteenba | 2005-11-23 14:27:18 +0100 (Wed, 23 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/configure.ac M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/configure.ac M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/configure.ac M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-jobrep/configure.ac M /trunk/lcmaps-plugins-jobrep/project/version.properties M /trunk/lcmaps-plugins-verify-proxy/configure.ac M /trunk/lcmaps-plugins-verify-proxy/project/version.properties M /trunk/lcmaps-plugins-voms/configure.ac M /trunk/lcmaps-plugins-voms/project/version.properties updated version ------------------------------------------------------------------------ r7299 | msteenba | 2005-11-10 12:54:05 +0100 (Thu, 10 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h cosmetic ------------------------------------------------------------------------ r7275 | msteenba | 2005-11-09 12:02:26 +0100 (Wed, 09 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c removed the X509 cert + chain from the runvars ONLY in the gsi-free flavour section of LCMAPS ------------------------------------------------------------------------ r7259 | msteenba | 2005-11-08 16:46:03 +0100 (Tue, 08 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c added x509 and chain to the run variables ------------------------------------------------------------------------ r7197 | msteenba | 2005-11-04 15:57:44 +0100 (Fri, 04 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c improved logging ------------------------------------------------------------------------ r7196 | msteenba | 2005-11-04 15:55:41 +0100 (Fri, 04 Nov 2005) | 3 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c - fixed lcmaps_log() statement (pfff, was hard to find) - extended the account/uid/gid verification ------------------------------------------------------------------------ r7181 | msteenba | 2005-11-03 14:42:07 +0100 (Thu, 03 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c clean up and use lcmaps_log_a_string_debug for printing poolindex ------------------------------------------------------------------------ r7180 | msteenba | 2005-11-03 14:41:34 +0100 (Thu, 03 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c switched off debugging, correct value ------------------------------------------------------------------------ r7179 | msteenba | 2005-11-03 14:39:46 +0100 (Thu, 03 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c switch off debugging ------------------------------------------------------------------------ r7178 | msteenba | 2005-11-03 14:38:42 +0100 (Thu, 03 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c use strerror instead of sys_errlist ------------------------------------------------------------------------ r7159 | msteenba | 2005-11-02 18:30:35 +0100 (Wed, 02 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/test/Makefile.am M /trunk/lcmaps/src/test/test_pem.c A /trunk/lcmaps/src/test/test_pluginmanager.c add test of pluginmanager ------------------------------------------------------------------------ r7144 | msteenba | 2005-11-02 14:06:20 +0100 (Wed, 02 Nov 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am add lcmaps_account.c to gsi-free library ------------------------------------------------------------------------ r7040 | msteenba | 2005-10-24 16:44:10 +0200 (Mon, 24 Oct 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/test/Makefile.am M /trunk/lcmaps/src/test/test_pem.c Use default voms lib ------------------------------------------------------------------------ r6996 | msteenba | 2005-10-21 15:43:31 +0200 (Fri, 21 Oct 2005) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac add src/test/Makefile ------------------------------------------------------------------------ r6995 | msteenba | 2005-10-21 15:41:20 +0200 (Fri, 21 Oct 2005) | 3 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c A /trunk/lcmaps/src/test A /trunk/lcmaps/src/test/Makefile.am A /trunk/lcmaps/src/test/test_pem.c added basic test program for testing PEM->X509+chain->VOMS FQANs some clean up, but also added some ugly debug lines ------------------------------------------------------------------------ r6939 | msteenba | 2005-10-19 14:11:11 +0200 (Wed, 19 Oct 2005) | 3 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c - added logging for verification method - fix if statement ------------------------------------------------------------------------ r6722 | msteenba | 2005-10-04 15:13:34 +0200 (Tue, 04 Oct 2005) | 5 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/lcmaps_account.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps.c A /trunk/lcmaps/src/lcmaps_account.c M /trunk/lcmaps-interface/src/Makefile.am D /trunk/lcmaps-interface/src/lcmaps_account.c - Added the account information that should be verified by lcmaps to the run variables. TBD: implement verification method in plugins - moved lcmaps_account.c to lcmaps core. Had to duplicate lcmaps_account.h unfortunately ------------------------------------------------------------------------ r6701 | msteenba | 2005-10-03 18:06:09 +0200 (Mon, 03 Oct 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c adding verification mode - step 2. ------------------------------------------------------------------------ r6637 | msteenba | 2005-09-30 15:22:02 +0200 (Fri, 30 Sep 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c start implementation of verification mode ------------------------------------------------------------------------ r6631 | venekamp | 2005-09-26 16:00:11 +0200 (Mon, 26 Sep 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c ? ------------------------------------------------------------------------ r5889 | msteenba | 2005-08-12 15:14:45 +0200 (Fri, 12 Aug 2005) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c remove gridsite dependency ------------------------------------------------------------------------ r5867 | msteenba | 2005-08-11 14:36:38 +0200 (Thu, 11 Aug 2005) | 2 lines Changed paths: M /trunk/lcmaps/project/properties.xml require gridsite.m4 ------------------------------------------------------------------------ r5515 | msteenba | 2005-07-25 11:19:20 +0200 (Mon, 25 Jul 2005) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/runautotools M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c Some more changes, trying gridsite libs. NOT FINISHED ------------------------------------------------------------------------ r5309 | msteenba | 2005-07-15 19:31:02 +0200 (Fri, 15 Jul 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c made changes to lcmaps_run_with_pem_and_return_account() ------------------------------------------------------------------------ r5286 | msteenba | 2005-07-14 10:41:04 +0200 (Thu, 14 Jul 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/lcmaps.c cleaned up use of lcmaps_credential ------------------------------------------------------------------------ r4747 | msteenba | 2005-06-16 22:00:55 +0200 (Thu, 16 Jun 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/Makefile.am M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c A /trunk/lcmaps/src/grid_credential_handling/x509_handling A /trunk/lcmaps/src/grid_credential_handling/x509_handling/_lcmaps_x509_utils.h A /trunk/lcmaps/src/grid_credential_handling/x509_handling/lcmaps_x509_utils.c M /trunk/lcmaps/src/lcmaps.c halfway implementing the PEM interface ------------------------------------------------------------------------ r4705 | msteenba | 2005-06-14 20:04:27 +0200 (Tue, 14 Jun 2005) | 2 lines Changed paths: M /trunk/lcmaps/build.xml M /trunk/lcmaps-interface/build.xml synchronized with R1.2 branch: cruisecontrol fixes ------------------------------------------------------------------------ r4701 | msteenba | 2005-06-14 18:59:13 +0200 (Tue, 14 Jun 2005) | 2 lines Changed paths: A /trunk/lcmaps/runautotools A /trunk/lcmaps-interface/runautotools A /trunk/lcmaps-plugins-afs/runautotools A /trunk/lcmaps-plugins-basic/runautotools A /trunk/lcmaps-plugins-jobrep/runautotools A /trunk/lcmaps-plugins-voms/runautotools just a script to run autotools automagically with glite settings ------------------------------------------------------------------------ r4480 | msteenba | 2005-06-03 16:45:52 +0200 (Fri, 03 Jun 2005) | 3 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/test/test_lcmaps_return_poolindex_without_gsi.c M /trunk/lcmaps-plugins-afs/configure.ac M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/configure.ac M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-jobrep/configure.ac M /trunk/lcmaps-plugins-jobrep/project/version.properties M /trunk/lcmaps-plugins-voms/configure.ac M /trunk/lcmaps-plugins-voms/project/version.properties - bump version to 1.3.1 to stay in sync with lcmaps-interface - added option -fqans to test script ------------------------------------------------------------------------ r4457 | msteenba | 2005-06-03 00:33:50 +0200 (Fri, 03 Jun 2005) | 2 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c fix pointer cast ------------------------------------------------------------------------ r4390 | msteenba | 2005-05-31 00:14:39 +0200 (Tue, 31 May 2005) | 2 lines Changed paths: M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c fill the runvars with mapcounter ------------------------------------------------------------------------ r4376 | dimeglio | 2005-05-30 00:50:49 +0200 (Mon, 30 May 2005) | 2 lines Changed paths: M /trunk/lcmaps/build.xml Removed end slash in opening target tag ------------------------------------------------------------------------ r4375 | dimeglio | 2005-05-30 00:50:30 +0200 (Mon, 30 May 2005) | 2 lines Changed paths: M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/build.xml M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/build.xml M /trunk/lcmaps/build.xml M /trunk/lcmaps-interface/build.xml Added fix for skipping cruisecontrol build flag if already set ------------------------------------------------------------------------ r4374 | msteenba | 2005-05-30 00:02:08 +0200 (Mon, 30 May 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps-interface/interface/lcmaps.h M /trunk/lcmaps-interface/interface/lcmaps_gss_assist_gridmap.h M /trunk/lcmaps-interface/interface/lcmaps_return_poolindex.h M /trunk/lcmaps-interface/interface/lcmaps_return_poolindex_without_gsi.h M /trunk/lcmaps-interface/src/lcmaps_return_poolindex_without_gsi.c 1st stage of multiple account interface to lcmaps ------------------------------------------------------------------------ r4372 | dimeglio | 2005-05-29 20:31:33 +0200 (Sun, 29 May 2005) | 2 lines Changed paths: M /trunk/lcmaps/build.xml Added fix for building without-gsi ------------------------------------------------------------------------ r4371 | dimeglio | 2005-05-29 20:29:34 +0200 (Sun, 29 May 2005) | 2 lines Changed paths: M /trunk/lcmaps/build.xml M /trunk/lcmaps-interface/build.xml Added fix for building without-gsi ------------------------------------------------------------------------ r4343 | msteenba | 2005-05-27 18:22:21 +0200 (Fri, 27 May 2005) | 3 lines Changed paths: M /trunk/lcas/Doxyfile M /trunk/lcas-interface/interface/lcas.h M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps-interface/interface/lcmaps.h M /trunk/lcmaps-interface/src/lcmaps_return_poolindex.c Fixed doxygen error: set LCMAPS_GSI_MODE and ALLOW_EMPTY_CREDENTIALS to 1 for preprocessor ------------------------------------------------------------------------ r4329 | zurek | 2005-05-26 17:18:33 +0200 (Thu, 26 May 2005) | 2 lines Changed paths: M /trunk/lcas/build.xml M /trunk/lcas-interface/build.xml M /trunk/lcas-plugins-basic/build.xml M /trunk/lcas-plugins-voms/build.xml M /trunk/lcmaps/build.xml M /trunk/lcmaps-interface/build.xml M /trunk/lcmaps-plugins-afs/build.xml M /trunk/lcmaps-plugins-basic/build.xml M /trunk/lcmaps-plugins-jobrep/build.xml M /trunk/lcmaps-plugins-voms/build.xml inserted module.build.file ------------------------------------------------------------------------ r3871 | zurek | 2005-04-12 22:24:56 +0200 (Tue, 12 Apr 2005) | 2 lines Changed paths: A /trunk/lcas/project/build.number M /trunk/lcas/project/version.properties A /trunk/lcas-interface/project/build.number M /trunk/lcas-interface/project/version.properties A /trunk/lcas-plugins-basic/project/build.number M /trunk/lcas-plugins-basic/project/version.properties A /trunk/lcas-plugins-voms/project/build.number M /trunk/lcas-plugins-voms/project/version.properties A /trunk/lcmaps/project/build.number M /trunk/lcmaps/project/version.properties A /trunk/lcmaps-interface/project/build.number M /trunk/lcmaps-interface/project/version.properties A /trunk/lcmaps-plugins-afs/project/build.number M /trunk/lcmaps-plugins-afs/project/version.properties A /trunk/lcmaps-plugins-basic/project/build.number M /trunk/lcmaps-plugins-basic/project/version.properties A /trunk/lcmaps-plugins-jobrep/project/build.number M /trunk/lcmaps-plugins-jobrep/project/version.properties A /trunk/lcmaps-plugins-voms/project/build.number M /trunk/lcmaps-plugins-voms/project/version.properties "corrections" ------------------------------------------------------------------------ r3766 | msteenba | 2005-04-04 17:23:58 +0200 (Mon, 04 Apr 2005) | 3 lines Changed paths: M /trunk/lcas/src/.vilerc M /trunk/lcas/src/Makefile.am M /trunk/lcas/src/lcas.c M /trunk/lcas/src/lcas_log.c A /trunk/lcas/src/lcas_setup.c M /trunk/lcas-interface/interface/Makefile.am M /trunk/lcas-interface/interface/lcas.h A /trunk/lcas-interface/interface/lcas_setup.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps.c A /trunk/lcmaps/src/lcmaps_setup.c M /trunk/lcmaps-interface/interface/Makefile.am M /trunk/lcmaps-interface/interface/lcmaps.h A /trunk/lcmaps-interface/interface/lcmaps_setup.h - added environment setup for LCAS and LCMAPS - moved api documentation (apidoc) to headers ------------------------------------------------------------------------ r3255 | msteenba | 2005-03-08 00:20:28 +0100 (Tue, 08 Mar 2005) | 2 lines Changed paths: M /trunk/lcmaps/build.xml M /trunk/lcmaps/project/configure.properties.xml M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps-interface/build.xml M /trunk/lcmaps-interface/project/configure.properties.xml M /trunk/lcmaps-interface/project/properties.xml Modifications needed to build two flavours of LCMAPS ------------------------------------------------------------------------ r3171 | venekamp | 2005-03-01 18:05:10 +0100 (Tue, 01 Mar 2005) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c - set free-ed pointers to NULL to allow for "re-entrance" of the LCMAPS library - rearranged the cleaning of the (internal) plugin list for this as well ------------------------------------------------------------------------ r3157 | msteenba | 2005-02-28 12:39:47 +0100 (Mon, 28 Feb 2005) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile small fix for documenting a function of type STACK_OF(X509) ------------------------------------------------------------------------ r3127 | msteenba | 2005-02-27 02:30:42 +0100 (Sun, 27 Feb 2005) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h M /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c M /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps-interface/interface/lcmaps.h M /trunk/lcmaps-plugins-afs/src/afs/lcmaps_afs.c M /trunk/lcmaps-plugins-basic/src/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps-plugins-basic/src/localaccount/lcmaps_localaccount.c M /trunk/lcmaps-plugins-basic/src/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps-plugins-basic/src/posix_enf/lcmaps_posix.c M /trunk/lcmaps-plugins-jobrep/src/jobrep/lcmaps_jobrep.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolgroup.c reorganized apidoc ------------------------------------------------------------------------ r3125 | msteenba | 2005-02-26 11:36:03 +0100 (Sat, 26 Feb 2005) | 3 lines Changed paths: M /trunk/lcmaps/Doxyfile Removed EDG somewhere. Updates to reflect gLite directory layout ------------------------------------------------------------------------ r3038 | msteenba | 2005-02-19 10:08:49 +0100 (Sat, 19 Feb 2005) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c lcmaps_term() now clears initialization flag ------------------------------------------------------------------------ r2514 | glbuild | 2005-01-12 03:50:25 +0100 (Wed, 12 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2494 | glbuild | 2005-01-11 03:48:13 +0100 (Tue, 11 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2475 | glbuild | 2005-01-10 03:46:47 +0100 (Mon, 10 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2454 | glbuild | 2005-01-09 03:37:39 +0100 (Sun, 09 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2434 | glbuild | 2005-01-08 03:48:15 +0100 (Sat, 08 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2413 | glbuild | 2005-01-07 03:37:35 +0100 (Fri, 07 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2392 | glbuild | 2005-01-06 03:53:45 +0100 (Thu, 06 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2371 | glbuild | 2005-01-05 03:37:17 +0100 (Wed, 05 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2348 | glbuild | 2005-01-04 03:54:50 +0100 (Tue, 04 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2329 | glbuild | 2005-01-03 03:55:28 +0100 (Mon, 03 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2308 | glbuild | 2005-01-02 03:39:21 +0100 (Sun, 02 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2288 | glbuild | 2005-01-01 03:38:49 +0100 (Sat, 01 Jan 2005) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2267 | glbuild | 2004-12-31 03:38:58 +0100 (Fri, 31 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2246 | glbuild | 2004-12-30 03:38:52 +0100 (Thu, 30 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2226 | glbuild | 2004-12-29 03:48:20 +0100 (Wed, 29 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2207 | glbuild | 2004-12-28 03:53:57 +0100 (Tue, 28 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2186 | glbuild | 2004-12-27 03:39:06 +0100 (Mon, 27 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2165 | glbuild | 2004-12-26 03:38:55 +0100 (Sun, 26 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2144 | glbuild | 2004-12-25 03:38:49 +0100 (Sat, 25 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2125 | glbuild | 2004-12-24 03:53:50 +0100 (Fri, 24 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2104 | glbuild | 2004-12-23 03:39:17 +0100 (Thu, 23 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2082 | glbuild | 2004-12-22 03:39:15 +0100 (Wed, 22 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2061 | glbuild | 2004-12-21 03:37:52 +0100 (Tue, 21 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2041 | glbuild | 2004-12-20 03:46:26 +0100 (Mon, 20 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2020 | glbuild | 2004-12-19 03:38:22 +0100 (Sun, 19 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r2000 | glbuild | 2004-12-18 03:44:01 +0100 (Sat, 18 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1981 | glbuild | 2004-12-17 03:02:36 +0100 (Fri, 17 Dec 2004) | 2 lines Changed paths: M /branches/glite-security-lcas-interface_branch_1_2_0_RC1/lcas-interface/project/version.properties M /branches/glite-security-lcas-plugins-basic_branch_1_2_0_RC1/lcas-plugins-basic/project/version.properties M /branches/glite-security-lcas-plugins-voms_branch_1_2_0_RC1/lcas-plugins-voms/project/version.properties M /branches/glite-security-lcas_branch_1_2_0_RC1/lcas/project/version.properties M /branches/glite-security-lcmaps-interface_branch_1_2_0_RC1/lcmaps-interface/project/version.properties M /branches/glite-security-lcmaps-plugins-afs_branch_1_2_0_RC1/lcmaps-plugins-afs/project/version.properties M /branches/glite-security-lcmaps-plugins-basic_branch_1_2_0_RC1/lcmaps-plugins-basic/project/version.properties M /branches/glite-security-lcmaps-plugins-voms_branch_1_2_0_RC1/lcmaps-plugins-voms/project/version.properties M /branches/glite-security-lcmaps_branch_1_2_0_RC1/lcmaps/project/version.properties M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1969 | glbuild | 2004-12-16 19:52:32 +0100 (Thu, 16 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1968 | msteenba | 2004-12-16 18:07:58 +0100 (Thu, 16 Dec 2004) | 2 lines Changed paths: A /trunk/lcmaps/doc/INSTALL_WITH_WORKSPACE_SERVICE M /trunk/lcmaps/doc/Makefile.am Merge with glite-security-lcmaps_branch_1_2_0_RC1 branch to include installation notes ------------------------------------------------------------------------ r1929 | glbuild | 2004-12-14 02:44:11 +0100 (Tue, 14 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1928 | msteenba | 2004-12-13 11:13:19 +0100 (Mon, 13 Dec 2004) | 2 lines Changed paths: M /trunk/lcas/configure.ac M /trunk/lcas/project/version.properties M /trunk/lcas-interface/configure.ac M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/configure.ac M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/configure.ac M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/configure.ac M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/configure.ac M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/configure.ac M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/configure.ac M /trunk/lcmaps-plugins-voms/project/version.properties increased minor version on the HEAD branch after branching off RC1 ------------------------------------------------------------------------ r1921 | glbuild | 2004-12-13 02:43:39 +0100 (Mon, 13 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1910 | glbuild | 2004-12-12 16:28:08 +0100 (Sun, 12 Dec 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1909 | glbuild | 2004-12-12 16:13:35 +0100 (Sun, 12 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1906 | glbuild | 2004-12-11 02:42:06 +0100 (Sat, 11 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1905 | msteenba | 2004-12-10 18:44:31 +0100 (Fri, 10 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c minor apidoc fix ------------------------------------------------------------------------ r1902 | glbuild | 2004-12-10 12:54:26 +0100 (Fri, 10 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1894 | msteenba | 2004-12-10 11:37:05 +0100 (Fri, 10 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties increased build nr by hand ------------------------------------------------------------------------ r1893 | msteenba | 2004-12-09 17:26:52 +0100 (Thu, 09 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms.c avoided use of vsnprinf in printing VOMS info ------------------------------------------------------------------------ r1867 | glbuild | 2004-12-09 03:52:25 +0100 (Thu, 09 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1855 | glbuild | 2004-12-08 03:51:14 +0100 (Wed, 08 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1854 | msteenba | 2004-12-07 23:06:53 +0100 (Tue, 07 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c added some debug lines ------------------------------------------------------------------------ r1853 | msteenba | 2004-12-07 15:03:05 +0100 (Tue, 07 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c some fixes for the evaluation manager ------------------------------------------------------------------------ r1852 | venekamp | 2004-12-07 10:27:38 +0100 (Tue, 07 Dec 2004) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c o Activate new feature addion. The set of policy rules as defined in the config file can be narrowed down now. ------------------------------------------------------------------------ r1851 | msteenba | 2004-12-07 09:55:48 +0100 (Tue, 07 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/properties.xml forgot to include the glite_security.m4 macro ------------------------------------------------------------------------ r1850 | venekamp | 2004-12-07 09:41:11 +0100 (Tue, 07 Dec 2004) | 6 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h o Perparation of possibility of being able to select a list if policy rules to look at and ignore all others in the configuration file. These change do not activate this new functionallity. The startEvaluationManager API needs to change first. This will be done in the next patch. ------------------------------------------------------------------------ r1838 | glbuild | 2004-12-07 03:47:05 +0100 (Tue, 07 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1837 | msteenba | 2004-12-06 22:47:40 +0100 (Mon, 06 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c fixed bug in setting certdir ------------------------------------------------------------------------ r1836 | msteenba | 2004-12-06 22:47:03 +0100 (Mon, 06 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/src/Makefile.am link against voms in gsi lcmaps-flavour ------------------------------------------------------------------------ r1824 | glbuild | 2004-12-06 03:47:34 +0100 (Mon, 06 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1812 | glbuild | 2004-12-05 03:47:23 +0100 (Sun, 05 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1799 | glbuild | 2004-12-04 03:17:21 +0100 (Sat, 04 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1797 | msteenba | 2004-12-03 10:28:12 +0100 (Fri, 03 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps-interface/project/properties.xml M /trunk/lcmaps-plugins-basic/project/properties.xml M /trunk/lcmaps-plugins-voms/project/properties.xml removed double dashes in cvs comments, otherwise ant won't eat it ------------------------------------------------------------------------ r1783 | msteenba | 2004-12-02 18:38:21 +0100 (Thu, 02 Dec 2004) | 4 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps/project/version.properties - Made a split between gsi-free and gsi-dependent flavours of LCMAPS - configuration switch: --with-gsi-mode/--without-gsi-mode - version upgrade because of this: 1.2.0 ------------------------------------------------------------------------ r1782 | msteenba | 2004-12-02 18:32:05 +0100 (Thu, 02 Dec 2004) | 4 lines Changed paths: M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_vo_data.h - removed gsi dependencies - moved lcmaps credential handling to grid_credential_handling - install directory depends on lcmaps flavour ------------------------------------------------------------------------ r1781 | msteenba | 2004-12-02 18:29:14 +0100 (Thu, 02 Dec 2004) | 4 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_config.h.in - Split made between gsi-free and gss/gsi dependent code - Created lcmaps_run_with_fqans_and_return_account() interface - Clean up ------------------------------------------------------------------------ r1780 | msteenba | 2004-12-02 18:17:53 +0100 (Thu, 02 Dec 2004) | 3 lines Changed paths: A /trunk/lcmaps/src/grid_credential_handling A /trunk/lcmaps/src/grid_credential_handling/Makefile.am A /trunk/lcmaps/src/grid_credential_handling/_lcmaps_credential.h A /trunk/lcmaps/src/grid_credential_handling/_lcmaps_runvars.h A /trunk/lcmaps/src/grid_credential_handling/gsi_handling A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_gsi_utils.h A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/_lcmaps_voms_attributes.h A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/globus_gsi_gss_constants.h A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/gssapi_openssl.h A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_gsi_utils.c A /trunk/lcmaps/src/grid_credential_handling/gsi_handling/lcmaps_voms_attributes.c A /trunk/lcmaps/src/grid_credential_handling/lcmaps_credential.c A /trunk/lcmaps/src/grid_credential_handling/lcmaps_runvars.c - Put all input grid credential stuff in here - The gsi dependent stuff in gsi_handling ------------------------------------------------------------------------ r1779 | msteenba | 2004-12-02 18:14:22 +0100 (Thu, 02 Dec 2004) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h D /trunk/lcmaps/src/pluginmanager/_lcmaps_runvars.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c D /trunk/lcmaps/src/pluginmanager/lcmaps_runvars.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c - Got rid of gss/gsi dependencies - moved runvars() and part of utils (the lcmaps_cred part) to grid_credential_handling ------------------------------------------------------------------------ r1777 | msteenba | 2004-12-02 11:10:18 +0100 (Thu, 02 Dec 2004) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/pdl_main.c - check if stream is non-zero before closing it - clean up of Makefile.am ------------------------------------------------------------------------ r1764 | glbuild | 2004-12-02 03:41:18 +0100 (Thu, 02 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1763 | venekamp | 2004-12-01 15:48:37 +0100 (Wed, 01 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c o revert last made changes ------------------------------------------------------------------------ r1750 | glbuild | 2004-12-01 03:39:04 +0100 (Wed, 01 Dec 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1737 | glbuild | 2004-11-30 14:12:19 +0100 (Tue, 30 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1736 | venekamp | 2004-11-30 12:34:32 +0100 (Tue, 30 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c o Changes for the Globus independant version of LCMAPS. ------------------------------------------------------------------------ r1723 | glbuild | 2004-11-29 03:34:22 +0100 (Mon, 29 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1710 | glbuild | 2004-11-28 03:33:11 +0100 (Sun, 28 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1697 | glbuild | 2004-11-27 03:33:41 +0100 (Sat, 27 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1683 | glbuild | 2004-11-26 03:33:18 +0100 (Fri, 26 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1670 | glbuild | 2004-11-25 03:29:14 +0100 (Thu, 25 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1657 | glbuild | 2004-11-24 03:24:13 +0100 (Wed, 24 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1644 | glbuild | 2004-11-23 12:48:14 +0100 (Tue, 23 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1628 | glbuild | 2004-11-22 03:26:03 +0100 (Mon, 22 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1615 | glbuild | 2004-11-21 03:24:46 +0100 (Sun, 21 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1602 | glbuild | 2004-11-20 03:26:43 +0100 (Sat, 20 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1589 | glbuild | 2004-11-19 03:25:50 +0100 (Fri, 19 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1576 | glbuild | 2004-11-18 03:25:46 +0100 (Thu, 18 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1563 | glbuild | 2004-11-17 04:50:06 +0100 (Wed, 17 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1550 | glbuild | 2004-11-16 03:26:50 +0100 (Tue, 16 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1537 | glbuild | 2004-11-15 03:27:38 +0100 (Mon, 15 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1524 | glbuild | 2004-11-14 03:25:06 +0100 (Sun, 14 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1511 | glbuild | 2004-11-13 13:16:02 +0100 (Sat, 13 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1486 | glbuild | 2004-11-12 03:25:35 +0100 (Fri, 12 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1472 | glbuild | 2004-11-11 03:23:56 +0100 (Thu, 11 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1459 | glbuild | 2004-11-10 03:25:13 +0100 (Wed, 10 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1446 | glbuild | 2004-11-09 03:20:11 +0100 (Tue, 09 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1432 | glbuild | 2004-11-08 03:20:28 +0100 (Mon, 08 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1419 | glbuild | 2004-11-07 03:20:48 +0100 (Sun, 07 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1406 | glbuild | 2004-11-06 03:19:55 +0100 (Sat, 06 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1383 | glbuild | 2004-11-05 03:08:33 +0100 (Fri, 05 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1381 | glbuild | 2004-11-05 03:06:25 +0100 (Fri, 05 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1368 | glbuild | 2004-11-04 03:20:10 +0100 (Thu, 04 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1354 | glbuild | 2004-11-03 15:20:30 +0100 (Wed, 03 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1348 | dimeglio | 2004-11-03 01:56:31 +0100 (Wed, 03 Nov 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Reset correct format ------------------------------------------------------------------------ r1335 | glbuild | 2004-11-02 21:52:00 +0100 (Tue, 02 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1326 | glbuild | 2004-11-02 14:52:48 +0100 (Tue, 02 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1313 | glbuild | 2004-11-02 03:38:56 +0100 (Tue, 02 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1300 | glbuild | 2004-11-01 03:40:58 +0100 (Mon, 01 Nov 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1290 | dimeglio | 2004-10-31 18:29:10 +0100 (Sun, 31 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1276 | glbuild | 2004-10-31 04:46:54 +0100 (Sun, 31 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1263 | glbuild | 2004-10-31 02:39:30 +0100 (Sun, 31 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1250 | glbuild | 2004-10-30 16:11:39 +0200 (Sat, 30 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1237 | glbuild | 2004-10-30 03:43:58 +0200 (Sat, 30 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1222 | glbuild | 2004-10-28 13:56:47 +0200 (Thu, 28 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1209 | glbuild | 2004-10-27 12:42:54 +0200 (Wed, 27 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1198 | glbuild | 2004-10-27 04:26:25 +0200 (Wed, 27 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1185 | glbuild | 2004-10-26 07:33:04 +0200 (Tue, 26 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1172 | glbuild | 2004-10-25 07:43:03 +0200 (Mon, 25 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1159 | glbuild | 2004-10-24 07:41:26 +0200 (Sun, 24 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1146 | glbuild | 2004-10-23 07:42:07 +0200 (Sat, 23 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1133 | glbuild | 2004-10-22 07:41:33 +0200 (Fri, 22 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1120 | glbuild | 2004-10-21 07:29:25 +0200 (Thu, 21 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1107 | glbuild | 2004-10-20 17:04:29 +0200 (Wed, 20 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1094 | glbuild | 2004-10-20 06:23:12 +0200 (Wed, 20 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1077 | glbuild | 2004-10-19 06:38:08 +0200 (Tue, 19 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1066 | glbuild | 2004-10-18 13:39:57 +0200 (Mon, 18 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1054 | glbuild | 2004-10-18 06:20:37 +0200 (Mon, 18 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1043 | glbuild | 2004-10-17 06:35:53 +0200 (Sun, 17 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1032 | glbuild | 2004-10-16 06:34:20 +0200 (Sat, 16 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1021 | glbuild | 2004-10-15 06:36:14 +0200 (Fri, 15 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1006 | glbuild | 2004-10-14 02:51:43 +0200 (Thu, 14 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r1005 | msteenba | 2004-10-13 18:38:00 +0200 (Wed, 13 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/evaluationmanager/Makefile.am M /trunk/lcmaps/etc/Makefile.am M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/examples/lcmaps_plugin_example.c M /trunk/lcmaps/interface/Makefile.am M /trunk/lcmaps/interface/lcmaps_arguments.h M /trunk/lcmaps/interface/lcmaps_cred_data.h M /trunk/lcmaps/interface/lcmaps_db_read.h M /trunk/lcmaps/interface/lcmaps_defines.h M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/interface/lcmaps_modules.h M /trunk/lcmaps/interface/lcmaps_types.h M /trunk/lcmaps/interface/lcmaps_utils.h M /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/modules/Makefile.am M /trunk/lcmaps/modules/jobrepository/Makefile.am M /trunk/lcmaps/modules/jobrepository/jobrep_test.c M /trunk/lcmaps/modules/jobrepository/jobrep_test.h M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.c M /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_defines.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_runvars.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_runvars.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c M /trunk/lcmaps-interface/Makefile.am M /trunk/lcmaps-interface/doc/Makefile.am M /trunk/lcmaps-interface/interface/Makefile.am M /trunk/lcmaps-interface/interface/lcmaps.h M /trunk/lcmaps-interface/interface/lcmaps_gss_assist_gridmap.h M /trunk/lcmaps-interface/interface/lcmaps_return_poolindex.h M /trunk/lcmaps-interface/interface/lcmaps_types.h M /trunk/lcmaps-interface/src/Makefile.am M /trunk/lcmaps-interface/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps-interface/src/lcmaps_return_poolindex.c M /trunk/lcmaps-plugins-afs/Makefile.am M /trunk/lcmaps-plugins-afs/doc/Makefile.am M /trunk/lcmaps-plugins-afs/src/Makefile.am M /trunk/lcmaps-plugins-afs/src/afs/Makefile.am M /trunk/lcmaps-plugins-afs/src/afs/lcmaps_afs.c M /trunk/lcmaps-plugins-afs/src/afs/plugin_test.c M /trunk/lcmaps-plugins-afs/src/afs/plugin_test.h M /trunk/lcmaps-plugins-basic/Makefile.am M /trunk/lcmaps-plugins-basic/doc/Makefile.am M /trunk/lcmaps-plugins-basic/src/Makefile.am M /trunk/lcmaps-plugins-basic/src/dummy/Makefile.am M /trunk/lcmaps-plugins-basic/src/dummy/lcmaps_dummy_bad.c M /trunk/lcmaps-plugins-basic/src/dummy/lcmaps_dummy_good.c M /trunk/lcmaps-plugins-basic/src/gridlist/Makefile.am M /trunk/lcmaps-plugins-basic/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-basic/src/gridlist/lcmaps_gridlist.h M /trunk/lcmaps-plugins-basic/src/ldap_enf/Makefile.am M /trunk/lcmaps-plugins-basic/src/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps-plugins-basic/src/ldap_enf/plugin_test.c M /trunk/lcmaps-plugins-basic/src/ldap_enf/plugin_test.h M /trunk/lcmaps-plugins-basic/src/localaccount/Makefile.am M /trunk/lcmaps-plugins-basic/src/localaccount/lcmaps_localaccount.c M /trunk/lcmaps-plugins-basic/src/localaccount/plugin_test.c M /trunk/lcmaps-plugins-basic/src/localaccount/plugin_test.h M /trunk/lcmaps-plugins-basic/src/poolaccount/Makefile.am M /trunk/lcmaps-plugins-basic/src/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps-plugins-basic/src/poolaccount/plugin_test.c M /trunk/lcmaps-plugins-basic/src/poolaccount/plugin_test.h M /trunk/lcmaps-plugins-basic/src/posix_enf/Makefile.am M /trunk/lcmaps-plugins-basic/src/posix_enf/lcmaps_posix.c M /trunk/lcmaps-plugins-basic/src/posix_enf/plugin_test.c M /trunk/lcmaps-plugins-basic/src/posix_enf/plugin_test.h M /trunk/lcmaps-plugins-voms/Makefile.am M /trunk/lcmaps-plugins-voms/doc/Makefile.am M /trunk/lcmaps-plugins-voms/src/Makefile.am M /trunk/lcmaps-plugins-voms/src/gridlist/Makefile.am M /trunk/lcmaps-plugins-voms/src/gridlist/lcmaps_gridlist.c M /trunk/lcmaps-plugins-voms/src/gridlist/lcmaps_gridlist.h M /trunk/lcmaps-plugins-voms/src/voms/Makefile.am M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_utils.c M /trunk/lcmaps-plugins-voms/src/voms/lcmaps_voms_utils.h M /trunk/lcmaps-plugins-voms/src/voms/plugin_test.c M /trunk/lcmaps-plugins-voms/src/voms/plugin_test.h Hopefully added all license lines in lcmaps sources ------------------------------------------------------------------------ r994 | glbuild | 2004-10-13 06:33:19 +0200 (Wed, 13 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r993 | msteenba | 2004-10-12 16:49:13 +0200 (Tue, 12 Oct 2004) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h On behalf of Gerben Venekamp: constistent use of const and fixed syntax in for loop ------------------------------------------------------------------------ r989 | msteenba | 2004-10-12 14:03:03 +0200 (Tue, 12 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/interface/lcmaps_log.h M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c fixed logging of strange strings (including %) ------------------------------------------------------------------------ r977 | glbuild | 2004-10-11 07:15:20 +0200 (Mon, 11 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r966 | glbuild | 2004-10-10 06:08:32 +0200 (Sun, 10 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r955 | glbuild | 2004-10-09 12:38:47 +0200 (Sat, 09 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties M /trunk/lcmaps-plugins-afs/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r953 | msteenba | 2004-10-08 19:09:35 +0200 (Fri, 08 Oct 2004) | 2 lines Changed paths: M /trunk/lcmaps/examples/Makefile.am M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/Makefile.am Added $(top_srcdir) to Makefile.am ------------------------------------------------------------------------ r952 | msteenba | 2004-10-08 18:33:20 +0200 (Fri, 08 Oct 2004) | 5 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/configure.ac M /trunk/lcmaps/examples/Makefile.am A /trunk/lcmaps/interface A /trunk/lcmaps/interface/Makefile.am A /trunk/lcmaps/interface/lcmaps_arguments.h A /trunk/lcmaps/interface/lcmaps_cred_data.h A /trunk/lcmaps/interface/lcmaps_db_read.h A /trunk/lcmaps/interface/lcmaps_defines.h A /trunk/lcmaps/interface/lcmaps_log.h A /trunk/lcmaps/interface/lcmaps_modules.h A /trunk/lcmaps/interface/lcmaps_types.h A /trunk/lcmaps/interface/lcmaps_utils.h A /trunk/lcmaps/interface/lcmaps_vo_data.h M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/lcmaps.c D /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Version 1.0 --> 1.1 Moved the globus_gss_assist_gridmap() legacy interface to lcmaps-interface Cleaned up (interface) code Moved the (plugin) headers from lcmaps-interface to lcmaps ------------------------------------------------------------------------ r945 | glbuild | 2004-10-08 17:57:40 +0200 (Fri, 08 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r936 | glbuild | 2004-10-08 12:52:52 +0200 (Fri, 08 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r925 | glbuild | 2004-10-07 13:47:50 +0200 (Thu, 07 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r921 | okoeroo | 2004-10-07 11:49:48 +0200 (Thu, 07 Oct 2004) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps-interface/interface/lcmaps_cred_data.h Added 'pool_index' to the LCMAPS framework as a credential data field for the DAS. ------------------------------------------------------------------------ r913 | glbuild | 2004-10-07 04:45:12 +0200 (Thu, 07 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r902 | glbuild | 2004-10-06 15:15:21 +0200 (Wed, 06 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r891 | glbuild | 2004-10-06 04:43:51 +0200 (Wed, 06 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r880 | glbuild | 2004-10-05 04:40:02 +0200 (Tue, 05 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r869 | glbuild | 2004-10-04 04:44:15 +0200 (Mon, 04 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r858 | glbuild | 2004-10-03 04:42:35 +0200 (Sun, 03 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r847 | glbuild | 2004-10-02 04:41:38 +0200 (Sat, 02 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r836 | glbuild | 2004-10-01 04:42:13 +0200 (Fri, 01 Oct 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r825 | glbuild | 2004-09-30 04:42:42 +0200 (Thu, 30 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r821 | msteenba | 2004-09-29 19:15:43 +0200 (Wed, 29 Sep 2004) | 2 lines Changed paths: M /trunk/lcmaps/configure.ac M /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c added #include ------------------------------------------------------------------------ r812 | glbuild | 2004-09-29 04:42:18 +0200 (Wed, 29 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r801 | glbuild | 2004-09-28 13:24:21 +0200 (Tue, 28 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r790 | glbuild | 2004-09-27 04:41:35 +0200 (Mon, 27 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r779 | glbuild | 2004-09-26 04:40:35 +0200 (Sun, 26 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r768 | glbuild | 2004-09-25 04:40:52 +0200 (Sat, 25 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r757 | glbuild | 2004-09-24 14:41:22 +0200 (Fri, 24 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r746 | glbuild | 2004-09-24 04:44:08 +0200 (Fri, 24 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r740 | msteenba | 2004-09-23 16:22:43 +0200 (Thu, 23 Sep 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Now the links to the libraries should work ------------------------------------------------------------------------ r732 | glbuild | 2004-09-23 04:39:29 +0200 (Thu, 23 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r721 | glbuild | 2004-09-22 11:48:51 +0200 (Wed, 22 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r708 | glbuild | 2004-09-21 04:20:03 +0200 (Tue, 21 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r697 | glbuild | 2004-09-20 04:20:35 +0200 (Mon, 20 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r686 | glbuild | 2004-09-19 04:20:12 +0200 (Sun, 19 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r675 | glbuild | 2004-09-18 04:20:45 +0200 (Sat, 18 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r670 | msteenba | 2004-09-17 17:14:40 +0200 (Fri, 17 Sep 2004) | 2 lines Changed paths: M /trunk/lcmaps/INSTALL M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/README M /trunk/lcmaps/configure.ac M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/project/configure.properties.xml M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps-interface/Makefile.am M /trunk/lcmaps-interface/configure.ac A /trunk/lcmaps-interface/doc A /trunk/lcmaps-interface/doc/Makefile.am M /trunk/lcmaps-plugins-afs/Makefile.am M /trunk/lcmaps-plugins-afs/configure.ac A /trunk/lcmaps-plugins-afs/doc A /trunk/lcmaps-plugins-afs/doc/Makefile.am M /trunk/lcmaps-plugins-basic/Makefile.am M /trunk/lcmaps-plugins-basic/configure.ac A /trunk/lcmaps-plugins-basic/doc A /trunk/lcmaps-plugins-basic/doc/Makefile.am M /trunk/lcmaps-plugins-voms/Makefile.am M /trunk/lcmaps-plugins-voms/configure.ac A /trunk/lcmaps-plugins-voms/doc A /trunk/lcmaps-plugins-voms/doc/Makefile.am Added LICENSE files, READMEs etc. to the package ------------------------------------------------------------------------ r669 | msteenba | 2004-09-17 16:12:35 +0200 (Fri, 17 Sep 2004) | 2 lines Changed paths: D /trunk/lcmaps/README.AFS A /trunk/lcmaps-plugins-afs/README.AFS Moved README.AFs to afs plugin ------------------------------------------------------------------------ r666 | msteenba | 2004-09-17 10:15:26 +0200 (Fri, 17 Sep 2004) | 2 lines Changed paths: D /trunk/lcmaps/modules/afs A /trunk/lcmaps-plugins-afs A /trunk/lcmaps-plugins-afs/src A /trunk/lcmaps-plugins-afs/src/Makefile.am A /trunk/lcmaps-plugins-afs/src/afs A /trunk/lcmaps-plugins-afs/src/afs/Makefile.am A /trunk/lcmaps-plugins-afs/src/afs/lcmaps_afs.c A /trunk/lcmaps-plugins-afs/src/afs/plugin_test.c A /trunk/lcmaps-plugins-afs/src/afs/plugin_test.h A /trunk/lcmaps-plugins-afs/src/lcmaps_config.h.in Moved AFS plugin to separate module ------------------------------------------------------------------------ r665 | msteenba | 2004-09-17 10:08:48 +0200 (Fri, 17 Sep 2004) | 2 lines Changed paths: D /trunk/lcmaps/modules/voms Files have moved to separate module ------------------------------------------------------------------------ r657 | glbuild | 2004-09-17 04:17:45 +0200 (Fri, 17 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcas-plugins-basic/project/version.properties M /trunk/lcas-plugins-voms/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-plugins-basic/project/version.properties M /trunk/lcmaps-plugins-voms/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r652 | msteenba | 2004-09-16 18:23:57 +0200 (Thu, 16 Sep 2004) | 2 lines Changed paths: D /trunk/lcmaps/modules/poolaccount moved to lcmaps-plugins-basic ------------------------------------------------------------------------ r651 | msteenba | 2004-09-16 18:20:33 +0200 (Thu, 16 Sep 2004) | 2 lines Changed paths: D /trunk/lcmaps/modules/dummy D /trunk/lcmaps/modules/ldap_enf D /trunk/lcmaps/modules/localaccount D /trunk/lcmaps/modules/poolaccount/Makefile.am D /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c D /trunk/lcmaps/modules/poolaccount/plugin_test.c D /trunk/lcmaps/modules/poolaccount/plugin_test.h D /trunk/lcmaps/modules/posix_enf moved the following plugins to lcmaps-plugins-basic: dummy, ldap_enf, localaccount, poolaccount, posix_enf ------------------------------------------------------------------------ r650 | msteenba | 2004-09-16 17:40:49 +0200 (Thu, 16 Sep 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am added AM_YFLAGS ------------------------------------------------------------------------ r638 | glbuild | 2004-09-16 04:03:05 +0200 (Thu, 16 Sep 2004) | 2 lines Changed paths: M /trunk/lcas/project/version.properties M /trunk/lcas-interface/project/version.properties M /trunk/lcmaps/project/version.properties M /trunk/lcmaps-interface/project/version.properties Incremented build number [GLBUILDER] ------------------------------------------------------------------------ r636 | msteenba | 2004-09-15 18:11:20 +0200 (Wed, 15 Sep 2004) | 4 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Rewritten the log_cred routine - strict buffer checking - print out the correct array elements ------------------------------------------------------------------------ r634 | msteenba | 2004-09-15 17:29:49 +0200 (Wed, 15 Sep 2004) | 2 lines Changed paths: D /trunk/lcmaps/autogen.sh M /trunk/lcmaps/project/properties.xml M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/Makefile.am removed autogen.sh, added m4 list, adjusted Makefile.ams ------------------------------------------------------------------------ r623 | msteenba | 2004-09-14 17:53:07 +0200 (Tue, 14 Sep 2004) | 2 lines Changed paths: A /trunk/lcmaps/build.xml M /trunk/lcmaps/configure.ac D /trunk/lcmaps/configure.in D /trunk/lcmaps/include M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps_config.h.in Moved headers to lcmaps-interface ------------------------------------------------------------------------ r622 | msteenba | 2004-09-14 16:32:11 +0200 (Tue, 14 Sep 2004) | 5 lines Changed paths: M /trunk/lcmaps/LICENSE M /trunk/lcmaps/Makefile.am A /trunk/lcmaps/bootstrap A /trunk/lcmaps/configure.ac A /trunk/lcmaps/examples A /trunk/lcmaps/examples/Makefile.am A /trunk/lcmaps/examples/lcmaps_plugin_example.c D /trunk/lcmaps/lcmaps_config.h.in D /trunk/lcmaps/modules/example A /trunk/lcmaps/project A /trunk/lcmaps/project/build.properties A /trunk/lcmaps/project/configure.properties.xml A /trunk/lcmaps/project/properties.xml A /trunk/lcmaps/project/version.properties M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am A /trunk/lcmaps/src/lcmaps_config.h.in M /trunk/lcmaps/src/pluginmanager/Makefile.am added project directory added LICENSE, configure.ac, bootstrap files moved example plugin cleaned up Makefile.am files ------------------------------------------------------------------------ r590 | msteenba | 2004-08-19 16:11:20 +0200 (Thu, 19 Aug 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c added length modifier (%d --> %ld) in print statement as suggested by Andreas Unterkircher ------------------------------------------------------------------------ r567 | dimeglio | 2004-06-11 14:35:27 +0200 (Fri, 11 Jun 2004) | 2 lines Changed paths: M /trunk/lcmaps Added .cvsignore ------------------------------------------------------------------------ r563 | okoeroo | 2004-04-06 15:47:23 +0200 (Tue, 06 Apr 2004) | 3 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in Version 0.0.28 Bug fixes in the JobRep plug-in ------------------------------------------------------------------------ r562 | okoeroo | 2004-04-06 14:27:26 +0200 (Tue, 06 Apr 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Bug Fixed: string for rsl nicely terminated and the '\'' issue has been solved ------------------------------------------------------------------------ r561 | okoeroo | 2004-04-06 11:33:44 +0200 (Tue, 06 Apr 2004) | 4 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Encoding of the ' character has been changed from an %27 url encoding to \\\' which effectivly will insert \' in the query string. That will override the input end-quote ' into an input-string quote belonging to the string ------------------------------------------------------------------------ r556 | martijn | 2004-04-05 16:41:40 +0200 (Mon, 05 Apr 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c added some more syslogging, fixed bug in lcmaps_log_close() ------------------------------------------------------------------------ r550 | okoeroo | 2004-04-02 15:52:32 +0200 (Fri, 02 Apr 2004) | 3 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in Merged jobrep_fix branch updated syslog and debug messages and levels ------------------------------------------------------------------------ r547 | okoeroo | 2004-04-01 15:02:45 +0200 (Thu, 01 Apr 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Latest hand (for now) on the log and debugging messages and there log/debug levels ------------------------------------------------------------------------ r546 | okoeroo | 2004-03-31 17:41:41 +0200 (Wed, 31 Mar 2004) | 3 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Altering the log messages and there levels (also in debug mode). Now further than last time. (2/3) ------------------------------------------------------------------------ r545 | okoeroo | 2004-03-31 16:30:30 +0200 (Wed, 31 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Halfway updating error messages and log/debug levels of all the messages. ------------------------------------------------------------------------ r544 | martijn | 2004-03-25 18:26:58 +0100 (Thu, 25 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/src/lcmaps.c changed syslog levels ------------------------------------------------------------------------ r543 | martijn | 2004-03-24 17:26:19 +0100 (Wed, 24 Mar 2004) | 2 lines Changed paths: M /trunk/lcas/include/lcas.h M /trunk/lcas/src/lcas.c M /trunk/lcas/src/lcas_log.c M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c added mechanism to specify if usrlogging and/or syslogging is required ------------------------------------------------------------------------ r542 | martijn | 2004-03-15 16:23:31 +0100 (Mon, 15 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Merge with jrfix_branch ------------------------------------------------------------------------ r538 | martijn | 2004-03-11 17:13:16 +0100 (Thu, 11 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex fixed bugje ------------------------------------------------------------------------ r532 | martijn | 2004-03-10 17:34:52 +0100 (Wed, 10 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex fixed bugje ------------------------------------------------------------------------ r531 | martijn | 2004-03-10 17:28:30 +0100 (Wed, 10 Mar 2004) | 4 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/modules/Makefile.am A /trunk/lcmaps/modules/dummy A /trunk/lcmaps/modules/dummy/Makefile.am A /trunk/lcmaps/modules/dummy/lcmaps_dummy_bad.c A /trunk/lcmaps/modules/dummy/lcmaps_dummy_good.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c - modified lcmaps lcmaps_run_and_return_username() interface: A list of policies to be evaluated can be specified. - added dummy plugins ------------------------------------------------------------------------ r528 | okoeroo | 2004-03-10 14:34:29 +0100 (Wed, 10 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Fixed bug #2572 ------------------------------------------------------------------------ r527 | venekamp | 2004-03-08 16:03:55 +0100 (Mon, 08 Mar 2004) | 7 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c o Changed runEvaluationManagers() function call. It takes two arguments now. They are analoge to the argc and argv parameter of the main function call. When a list is supplied the runEvaluationManager will only consider policy rules in the list. The fist match is only used, so be aware of this when making the config file. If you which to keep the old behaviour, simply specify a value of zero for the argc parameter. ------------------------------------------------------------------------ r524 | okoeroo | 2004-03-04 18:02:44 +0100 (Thu, 04 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/edg-lcmaps.spec.in updated doc. version 0.0.23 ------------------------------------------------------------------------ r523 | martijn | 2004-03-04 17:34:33 +0100 (Thu, 04 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps.c added link to afs and jobrep doc ------------------------------------------------------------------------ r522 | okoeroo | 2004-03-04 15:21:21 +0100 (Thu, 04 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c added apidoc ------------------------------------------------------------------------ r521 | okoeroo | 2004-03-04 14:30:29 +0100 (Thu, 04 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Added APIDoc text in the source file ------------------------------------------------------------------------ r518 | martijn | 2004-03-04 11:34:28 +0100 (Thu, 04 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/jobrepository/Makefile.am link jobrep plugin against jobrep api, which is relocated to /opt/edg/lib (was /opt/edg/lib/jobrepository) ------------------------------------------------------------------------ r517 | okoeroo | 2004-03-03 23:00:19 +0100 (Wed, 03 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c -JR_CONFIG == -jr_config ------------------------------------------------------------------------ r515 | martijn | 2004-03-03 11:01:49 +0100 (Wed, 03 Mar 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in Version 0.0.21, see README/specfile for details ------------------------------------------------------------------------ r514 | martijn | 2004-02-27 16:41:06 +0100 (Fri, 27 Feb 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c Fixed malloc bug (although harmless): sizeof(char*) --> sizeof(char) ------------------------------------------------------------------------ r513 | martijn | 2004-02-26 16:57:33 +0100 (Thu, 26 Feb 2004) | 2 lines Changed paths: M /trunk/lcas/configure.in M /trunk/lcas/edg-lcas.spec.in M /trunk/lcas/src/Makefile.am M /trunk/lcas/src/modules/voms/Makefile.am M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/afs/Makefile.am M /trunk/lcmaps/modules/jobrepository/Makefile.am M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/localaccount/Makefile.am M /trunk/lcmaps/modules/poolaccount/Makefile.am M /trunk/lcmaps/modules/posix_enf/Makefile.am M /trunk/lcmaps/modules/voms/Makefile.am M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/pluginmanager/Makefile.am propagate globus build flavor in all Makefiles (also for voms) ------------------------------------------------------------------------ r512 | martijn | 2004-02-26 16:55:59 +0100 (Thu, 26 Feb 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c added the options -set_only_euid and -set_only_egid, to be used by gridftp ------------------------------------------------------------------------ r511 | okoeroo | 2004-02-26 16:08:38 +0100 (Thu, 26 Feb 2004) | 8 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/jobrep_test.c M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c An Extra initialisation option has been added "-JR_CONFIG " for this LCMAPS module. The path/file you can add is only readable (0400) by root. This contains the DNS name of the MySQL server, the database name with the user and password to combi to use it. Thus making it impossible for the outside world to read the config info. for the Job repository easily. Note: the connection string is not listed in the log files. ------------------------------------------------------------------------ r510 | martijn | 2004-02-18 16:53:31 +0100 (Wed, 18 Feb 2004) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/src/lcmaps.c added lcmaps_run_and_return_username() interface to lcmaps ------------------------------------------------------------------------ r509 | martijn | 2004-01-28 17:28:50 +0100 (Wed, 28 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/edg-lcmaps.spec.in fixed job rep dependence and added README.AFS to distribution ------------------------------------------------------------------------ r506 | martijn | 2004-01-23 11:18:02 +0100 (Fri, 23 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am ok, finally removed 'lcmaps-test' from the build process. ------------------------------------------------------------------------ r500 | martijn | 2004-01-23 11:04:15 +0100 (Fri, 23 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/autogen.sh M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.20 (just a dummy upgrade to link against new VOMS libs) ------------------------------------------------------------------------ r497 | martijn | 2004-01-15 14:18:28 +0100 (Thu, 15 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/autogen.sh M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.19 ------------------------------------------------------------------------ r495 | martijn | 2004-01-15 14:00:06 +0100 (Thu, 15 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/autogen.sh added make uninstall distclean ------------------------------------------------------------------------ r485 | okoeroo | 2004-01-09 15:59:44 +0100 (Fri, 09 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Erased bogus debug logging stuff - no change ------------------------------------------------------------------------ r484 | okoeroo | 2004-01-09 15:45:45 +0100 (Fri, 09 Jan 2004) | 5 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Added support to store FQAN in the 'voms' table with the (full) triplet info. Request from LCG: Added link between [VOMS triplet|FQAN] and it's localsite representation in the form of GIDs (both primary and secundary). ------------------------------------------------------------------------ r481 | martijn | 2004-01-06 14:50:45 +0100 (Tue, 06 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/edg-lcmaps.spec.in corrected jobrep-plugin-rpm dependency ------------------------------------------------------------------------ r480 | martijn | 2004-01-06 10:40:31 +0100 (Tue, 06 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/edg-lcmaps.spec.in Corrected date ------------------------------------------------------------------------ r477 | martijn | 2004-01-06 10:38:07 +0100 (Tue, 06 Jan 2004) | 2 lines Changed paths: M /trunk/lcas/README M /trunk/lcas/configure.in M /trunk/lcas/edg-lcas.spec.in M /trunk/lcmaps/README M /trunk/lcmaps/edg-lcmaps.spec.in updated log ------------------------------------------------------------------------ r476 | martijn | 2004-01-05 17:45:24 +0100 (Mon, 05 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c no change ------------------------------------------------------------------------ r475 | martijn | 2004-01-05 17:45:04 +0100 (Mon, 05 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Fill the lcmaps_vo_mapping_t structure ------------------------------------------------------------------------ r474 | martijn | 2004-01-05 17:44:10 +0100 (Mon, 05 Jan 2004) | 3 lines Changed paths: M /trunk/lcmaps/include/lcmaps_cred_data.h M /trunk/lcmaps/include/lcmaps_vo_data.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Added new structure (credential type) that contains a VO string (FQAN) with the GID and groupname it was mapped to ------------------------------------------------------------------------ r473 | martijn | 2004-01-05 17:42:24 +0100 (Mon, 05 Jan 2004) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c added $JOB_REPOSITORY_ID to logging string ------------------------------------------------------------------------ r471 | martijn | 2003-12-19 16:22:52 +0100 (Fri, 19 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps_vo_data.h added lcmaps_vo_mapping_t ------------------------------------------------------------------------ r469 | martijn | 2003-12-19 16:03:16 +0100 (Fri, 19 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/README.AFS M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/afs/lcmaps_afs.c Incorporated AFS plugin documentation ------------------------------------------------------------------------ r468 | venekamp | 2003-12-19 14:48:57 +0100 (Fri, 19 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/afs/lcmaps_afs.c o Added manual page documention (Doxygen). ------------------------------------------------------------------------ r467 | okoeroo | 2003-12-19 14:47:51 +0100 (Fri, 19 Dec 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Exclusion of some debugging stuff in the actual code and fixed a buffer size issue. ------------------------------------------------------------------------ r466 | venekamp | 2003-12-19 14:09:14 +0100 (Fri, 19 Dec 2003) | 2 lines Changed paths: A /trunk/lcmaps/README.AFS AFS README file ------------------------------------------------------------------------ r465 | martijn | 2003-12-18 11:16:13 +0100 (Thu, 18 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/jobrepository/Makefile.am Added AFS plugin and a prototype job repository plugin ------------------------------------------------------------------------ r464 | venekamp | 2003-12-17 13:52:25 +0100 (Wed, 17 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex o Corrected some spelling mistakes. ------------------------------------------------------------------------ r463 | venekamp | 2003-12-16 15:48:07 +0100 (Tue, 16 Dec 2003) | 5 lines Changed paths: M /trunk/lcmaps/modules/afs/lcmaps_afs.c o Child exit status could not be retreived because the behaviour of the SIGCHLD signal is changed from the default behaviour. Problem is resoved be reverting this behaviour and when the afs plugin is done, putting back the old behaviour. ------------------------------------------------------------------------ r462 | okoeroo | 2003-12-16 15:31:14 +0100 (Tue, 16 Dec 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Made a temporary workaround to handle a \' character in a certificates SQL string and beautified the standard log out. ------------------------------------------------------------------------ r461 | venekamp | 2003-12-12 11:20:02 +0100 (Fri, 12 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/afs/lcmaps_afs.c o When run_cmd() fail make it return 1. ------------------------------------------------------------------------ r460 | venekamp | 2003-12-12 11:16:54 +0100 (Fri, 12 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/afs/lcmaps_afs.c o gssklog command change to just 'gssklog' instead of a full path. ------------------------------------------------------------------------ r459 | venekamp | 2003-12-12 10:56:19 +0100 (Fri, 12 Dec 2003) | 13 lines Changed paths: M /trunk/lcmaps/modules/afs/lcmaps_afs.c o Better loggin of gssklog. o Corrected checking of the return code of gssklog; it turn out that the return code cannot be retrieved. The system call wait fails. The only reason it can fail in the current usage if fork/wait is because the child (gssklog in this case) set the SIGCHLD signal to SIG_IGN. This prevents as child from tuning into a zombie when the parent does not wait. It also makes the wait syscall fail and hence, no exit code can be retrieved. o Added some Doxygen style comments. o Added checking for several (-port, -server, -cell, -lifetime, -setpag, -pipe, gsiklog) option. These options can be specified in the conf file. o Put forking and exec'ing in a subroutine. ------------------------------------------------------------------------ r458 | okoeroo | 2003-12-09 12:11:46 +0100 (Tue, 09 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/jobrep_test.c M /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c Fixed bugs, increased stability and performance ------------------------------------------------------------------------ r457 | venekamp | 2003-12-08 16:26:22 +0100 (Mon, 08 Dec 2003) | 5 lines Changed paths: M /trunk/lcmaps/modules/afs/Makefile.am M /trunk/lcmaps/modules/afs/lcmaps_afs.c o gssklog is called from the afs module and yields an afs token if all is well. o output produced by gssklog is caught and displayed in the lcmap log file. ------------------------------------------------------------------------ r453 | okoeroo | 2003-12-01 14:35:25 +0100 (Mon, 01 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/Makefile.am .mod symlink is now created as well ------------------------------------------------------------------------ r452 | okoeroo | 2003-12-01 14:28:06 +0100 (Mon, 01 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/jobrepository/Makefile.am Removed api sources (now the api library is used) ------------------------------------------------------------------------ r451 | okoeroo | 2003-12-01 13:55:33 +0100 (Mon, 01 Dec 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/modules/Makefile.am added jobrepository ------------------------------------------------------------------------ r450 | okoeroo | 2003-12-01 13:47:56 +0100 (Mon, 01 Dec 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/jobrepository A /trunk/lcmaps/modules/jobrepository/Makefile.am A /trunk/lcmaps/modules/jobrepository/globus_gsi_gss_constants.h A /trunk/lcmaps/modules/jobrepository/globus_i_gsi_credential.h A /trunk/lcmaps/modules/jobrepository/gssapi_openssl.h A /trunk/lcmaps/modules/jobrepository/jobrep_test.c A /trunk/lcmaps/modules/jobrepository/jobrep_test.h A /trunk/lcmaps/modules/jobrepository/lcmaps_jobrep.c A /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.c A /trunk/lcmaps/modules/jobrepository/lcmaps_voms_utils.h Initial check-in ------------------------------------------------------------------------ r449 | venekamp | 2003-11-27 16:06:09 +0100 (Thu, 27 Nov 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/afs/Makefile.am M /trunk/lcmaps/modules/afs/lcmaps_afs.c o Cleanup code o Added check for root id. ------------------------------------------------------------------------ r448 | martijn | 2003-11-26 17:34:24 +0100 (Wed, 26 Nov 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/afs/Makefile.am M /trunk/lcmaps/modules/afs/lcmaps_afs.c export (delegated) in afs plugin, use it for gssklog and remove it afterwards ------------------------------------------------------------------------ r447 | martijn | 2003-11-26 17:26:03 +0100 (Wed, 26 Nov 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in added afs makefile ------------------------------------------------------------------------ r446 | martijn | 2003-11-26 14:56:16 +0100 (Wed, 26 Nov 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/afs/plugin_test.c A /trunk/lcmaps/modules/afs/plugin_test.h Yo, version 0 ------------------------------------------------------------------------ r445 | venekamp | 2003-11-21 09:43:35 +0100 (Fri, 21 Nov 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/Makefile.am o Added afs module ------------------------------------------------------------------------ r444 | venekamp | 2003-11-20 16:35:56 +0100 (Thu, 20 Nov 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/afs/Makefile.am o Automake file ------------------------------------------------------------------------ r443 | venekamp | 2003-11-20 15:32:19 +0100 (Thu, 20 Nov 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/afs A /trunk/lcmaps/modules/afs/lcmaps_afs.c o Test module. Will be converted to a produnction module in the future. ------------------------------------------------------------------------ r439 | martijn | 2003-10-07 16:44:25 +0200 (Tue, 07 Oct 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.18, bug fixes for #1937, #1960 and #1962 ------------------------------------------------------------------------ r438 | martijn | 2003-10-07 16:36:13 +0200 (Tue, 07 Oct 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c more informative error message for VOMS_Init() ------------------------------------------------------------------------ r435 | martijn | 2003-10-07 15:11:37 +0200 (Tue, 07 Oct 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c added check on pointer before free() ------------------------------------------------------------------------ r434 | venekamp | 2003-10-07 13:21:17 +0200 (Tue, 07 Oct 2003) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c o Bug fix returned 1 on failure of call resetCredentialData(). This should have been a NULL pointer. o Added debug information to better distinguish resetting of the credential data. ------------------------------------------------------------------------ r433 | martijn | 2003-10-07 12:53:02 +0200 (Tue, 07 Oct 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c - added include line in pdl_main.c - added debugging line in lcmaps_pluginmanager.c ------------------------------------------------------------------------ r432 | venekamp | 2003-10-07 11:44:56 +0200 (Tue, 07 Oct 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c bug: id=1937 Added resetCredentialData() as requested by the bug report. ------------------------------------------------------------------------ r431 | martijn | 2003-10-06 14:32:14 +0200 (Mon, 06 Oct 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c added the resetCredentialData() function for the Evaluation Manager ------------------------------------------------------------------------ r430 | martijn | 2003-10-03 16:07:42 +0200 (Fri, 03 Oct 2003) | 2 lines Changed paths: M /trunk/lcas/src/modules/voms/lcas_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c Added VOMS api error messages ------------------------------------------------------------------------ r429 | martijn | 2003-10-03 15:19:28 +0200 (Fri, 03 Oct 2003) | 4 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c to keep up with lcas_gridlist: - lcmaps_gridlist(), with MATCH_ONLY_DN switched on does not require a 2nd arg in gridmapfiles anymore. ------------------------------------------------------------------------ r426 | martijn | 2003-09-24 15:48:23 +0200 (Wed, 24 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in Release 0.0.17: distribute a working groupmapfile(.in): groups start with '/', real VO names etc ------------------------------------------------------------------------ r425 | martijn | 2003-09-23 18:47:17 +0200 (Tue, 23 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/doc/lcmaps_include.tex.in Add patchversion to doc title ------------------------------------------------------------------------ r424 | martijn | 2003-09-23 18:46:19 +0200 (Tue, 23 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/groupmapfile.in This example should work ------------------------------------------------------------------------ r413 | martijn | 2003-09-17 16:45:31 +0200 (Wed, 17 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am added scripts to distribution ------------------------------------------------------------------------ r412 | martijn | 2003-09-17 16:26:37 +0200 (Wed, 17 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/lcmaps.tex A /trunk/lcmaps/doc/lcmaps_gen_poolacc_ldif A /trunk/lcmaps/doc/lcmaps_gen_poolgroup_ldif A /trunk/lcmaps/doc/lcmaps_make_poolacc_dir A /trunk/lcmaps/doc/lcmaps_setup_pool added example tools to setup poolaccounts/groups in LDAP ------------------------------------------------------------------------ r402 | martijn | 2003-09-15 17:20:43 +0200 (Mon, 15 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/edg-lcmaps.spec.in added vomapfile.in to rpm ------------------------------------------------------------------------ r401 | martijn | 2003-09-15 17:09:44 +0200 (Mon, 15 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex tiny update ------------------------------------------------------------------------ r400 | martijn | 2003-09-15 17:04:52 +0200 (Mon, 15 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am A /trunk/lcmaps/doc/gridmapfile.ex M /trunk/lcmaps/doc/lcmaps.tex added vomapfile/gridmapfile example ------------------------------------------------------------------------ r399 | martijn | 2003-09-15 17:01:32 +0200 (Mon, 15 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/vomapfile.in added iteam and wpsix to the examples ------------------------------------------------------------------------ r397 | martijn | 2003-09-15 15:58:42 +0200 (Mon, 15 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/README.NO_LDAP M /trunk/lcmaps/doc/lcmaps.tex small update ------------------------------------------------------------------------ r394 | martijn | 2003-09-12 14:01:26 +0200 (Fri, 12 Sep 2003) | 2 lines Changed paths: M /trunk/lcas/doc/lcas.tex M /trunk/lcmaps/README M /trunk/lcmaps/doc/lcmaps.tex updated doc ------------------------------------------------------------------------ r391 | martijn | 2003-09-11 17:37:43 +0200 (Thu, 11 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.16 because of a stupid documentation bug in 0.0.15 ------------------------------------------------------------------------ r387 | martijn | 2003-09-11 14:16:29 +0200 (Thu, 11 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/etc/groupmapfile.in version 0.0.15, updated doc and groupmapfile example ------------------------------------------------------------------------ r386 | venekamp | 2003-09-11 13:20:28 +0200 (Thu, 11 Sep 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c o When the first module to be evaluated failed, no next policy rule was considered when in fact there was. This has been fixed. ------------------------------------------------------------------------ r375 | martijn | 2003-09-10 17:56:10 +0200 (Wed, 10 Sep 2003) | 3 lines Changed paths: A /trunk/lcmaps/README.NO_LDAP M /trunk/lcmaps/edg-lcmaps.spec.in added doc for sites that don't want to use LDAP Reset Prefix in specfile ------------------------------------------------------------------------ r362 | martijn | 2003-09-08 14:14:30 +0200 (Mon, 08 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/edg-lcmaps.spec.in Set Prefix to @EDG_LOCATION@ in spec.in file ------------------------------------------------------------------------ r361 | martijn | 2003-09-04 16:09:01 +0200 (Thu, 04 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex updated gatekeeper doc ------------------------------------------------------------------------ r359 | martijn | 2003-09-04 15:47:35 +0200 (Thu, 04 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c added header ------------------------------------------------------------------------ r358 | martijn | 2003-09-04 11:22:22 +0200 (Thu, 04 Sep 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/Makefile.am A /trunk/lcmaps/etc/vomapfile.in added vomapfile example ------------------------------------------------------------------------ r352 | martijn | 2003-08-27 16:10:05 +0200 (Wed, 27 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex plug-in --> plugin ------------------------------------------------------------------------ r348 | martijn | 2003-08-19 17:01:46 +0200 (Tue, 19 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in added a few lines about the legacy interface ------------------------------------------------------------------------ r347 | martijn | 2003-08-19 16:50:34 +0200 (Tue, 19 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c added \n ------------------------------------------------------------------------ r345 | martijn | 2003-08-19 14:55:29 +0200 (Tue, 19 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.14 ------------------------------------------------------------------------ r344 | martijn | 2003-08-19 14:28:47 +0200 (Tue, 19 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c fixed bug in two log lines ------------------------------------------------------------------------ r338 | martijn | 2003-08-15 15:06:32 +0200 (Fri, 15 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c added #include ------------------------------------------------------------------------ r337 | martijn | 2003-08-15 14:55:40 +0200 (Fri, 15 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c included "_lcmaps_pluginmanager.h" in evaluationmanager.c, included -I in Makefile.am ------------------------------------------------------------------------ r336 | martijn | 2003-08-15 14:43:22 +0200 (Fri, 15 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c switched on -Wall, included in lcmaps_log.c ------------------------------------------------------------------------ r334 | martijn | 2003-08-13 15:26:04 +0200 (Wed, 13 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c fixed documentation bugjes ------------------------------------------------------------------------ r332 | martijn | 2003-08-12 16:11:55 +0200 (Tue, 12 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/etc/lcmaps.db.in better examples ------------------------------------------------------------------------ r330 | martijn | 2003-08-12 15:17:41 +0200 (Tue, 12 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c version 0.0.13 ------------------------------------------------------------------------ r329 | martijn | 2003-08-12 15:04:18 +0200 (Tue, 12 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Modified the documentation for the plugins ------------------------------------------------------------------------ r328 | martijn | 2003-08-11 18:30:48 +0200 (Mon, 11 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Corrected the documentation ------------------------------------------------------------------------ r326 | okoeroo | 2003-08-11 16:40:26 +0200 (Mon, 11 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Updated errorhandling ------------------------------------------------------------------------ r325 | martijn | 2003-08-11 15:49:04 +0200 (Mon, 11 Aug 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.h - minor modification to make it usable for LCAS - cleaned up ------------------------------------------------------------------------ r324 | okoeroo | 2003-08-11 15:10:59 +0200 (Mon, 11 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Slightly improved logging ------------------------------------------------------------------------ r323 | okoeroo | 2003-08-11 14:57:44 +0200 (Mon, 11 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c Slightly improved logging ------------------------------------------------------------------------ r322 | martijn | 2003-08-11 14:55:44 +0200 (Mon, 11 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c corrected arguments of snprintf() calls ------------------------------------------------------------------------ r315 | martijn | 2003-08-07 14:26:46 +0200 (Thu, 07 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c fixed bug in log_cred() calls ------------------------------------------------------------------------ r313 | martijn | 2003-08-07 11:39:08 +0200 (Thu, 07 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/doc/lcmaps.tex M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.12 (I'd forgotten to check them in) ------------------------------------------------------------------------ r312 | martijn | 2003-08-06 14:50:27 +0200 (Wed, 06 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c extra log output ------------------------------------------------------------------------ r311 | okoeroo | 2003-08-06 12:32:46 +0200 (Wed, 06 Aug 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c Some change to the log string. It will produce the same kind of string as the 'posix_enf' plugin does. ------------------------------------------------------------------------ r310 | okoeroo | 2003-08-06 12:31:49 +0200 (Wed, 06 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Small change to log string ------------------------------------------------------------------------ r309 | okoeroo | 2003-08-06 12:12:11 +0200 (Wed, 06 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Changed default for the -mapmin parameter from '-1' to '0' for clarity. ------------------------------------------------------------------------ r308 | okoeroo | 2003-08-06 11:32:51 +0200 (Wed, 06 Aug 2003) | 9 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Add parameters to the initialization of the plugins lcmaps_localgroup and lcmaps_poolgroup called "-mapmin ". More info. in the docs. In general it sets a minimum amount of groups that should be mapped by the running plugin. With this feature you can let the plugin fail if it doesn't meet the mininum quota on resolved groups. example: -mapmin 5 means that the voms_*group plugins must (atleast) match 5 VO-GROUP-ROLE combinations from the (proxy) certificate with the groupmapfile. ------------------------------------------------------------------------ r307 | venekamp | 2003-08-06 11:30:12 +0200 (Wed, 06 Aug 2003) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c o Bug fix: No matter what the end result of the evaluation of a policy was, the next policy would be evaluated. This is fixed now. Only when the evaluation was not successful, is the next rule evaluated. ------------------------------------------------------------------------ r306 | venekamp | 2003-08-06 10:15:36 +0200 (Wed, 06 Aug 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c o Bug fix: When a policy rule fails and there exists another one, the one following is evaluated now. ------------------------------------------------------------------------ r305 | okoeroo | 2003-08-05 17:17:22 +0200 (Tue, 05 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c modified lease consistency check ------------------------------------------------------------------------ r303 | martijn | 2003-08-04 19:02:55 +0200 (Mon, 04 Aug 2003) | 4 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c - fixed bugs with matching parameters in lcmaps_voms_poolaccount.c and lcmaps_voms_poolgroup.c - added debugging in lcmaps_gridlist.c - use the VERR_ORDER error from voms api in lcmaps_voms.c (probably useless, but does not hurt) ------------------------------------------------------------------------ r302 | martijn | 2003-08-04 16:04:16 +0200 (Mon, 04 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/edg-lcmaps.spec.in updated for 0.0.11 ------------------------------------------------------------------------ r301 | okoeroo | 2003-08-04 15:24:10 +0200 (Mon, 04 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Adjustments in the documentation becasue of multiple use of same subsection headers ------------------------------------------------------------------------ r300 | okoeroo | 2003-08-04 15:11:04 +0200 (Mon, 04 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps/modules/voms/plugin_test.c Add documentation about the -override_consistency feature in the plugins ------------------------------------------------------------------------ r299 | martijn | 2003-08-04 14:58:30 +0200 (Mon, 04 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex updated doc: new option for gatekeeper: -lcmaps_debug_level ------------------------------------------------------------------------ r298 | martijn | 2003-08-04 14:22:03 +0200 (Mon, 04 Aug 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c Added the possibility to set the debugging level with the environment variable LCMAPS_DEBUG_LEVEL ------------------------------------------------------------------------ r297 | okoeroo | 2003-08-04 13:43:35 +0200 (Mon, 04 Aug 2003) | 14 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.h M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/poolaccount/plugin_test.c We have discovered a bug in the (standard) poolaccount system. It used to map a user to an account in it's designated pool (VO) like '.wpsix'. The poolaccount mechanism will make the mapping between Distinghuished Name and an account that starts with 'wpsix'. When a user is mapped for the first time at a CE (by it's gatekeeper) the poolaccount plugin will make a 'permanent' link between account resolution according to it's designated pool and the DN of the user. If there would be a change in the grid-mapfile by moving a user's DN to another pool (VO) the poolaccount system would still map the user to it's previously resoluted poolaccount. Neglecting the administrative changes in the grid-mapfile. The cange has been made and a new initialisation option is added called: "-override_consistency" ------------------------------------------------------------------------ r296 | venekamp | 2003-07-31 13:40:32 +0200 (Thu, 31 Jul 2003) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c Corrected memcpy bug. o First changed memcpy to memmove as memory is overlapping. o Second, the size calculation of the memory to be copied was wrong. In fact it could be negative! Fixed now. ------------------------------------------------------------------------ r295 | venekamp | 2003-07-31 12:33:00 +0200 (Thu, 31 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c Added code and Doxygen comments. ------------------------------------------------------------------------ r294 | martijn | 2003-07-30 19:10:25 +0200 (Wed, 30 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/localaccount/plugin_test.c M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/poolaccount/plugin_test.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/posix_enf/plugin_test.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps/modules/voms/plugin_test.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_runvars.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c fixed most of the warnings found by the "-Wall" flag ------------------------------------------------------------------------ r293 | venekamp | 2003-07-30 16:37:09 +0200 (Wed, 30 Jul 2003) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h o More recusion checks. When recursion happens because a certain variable value combination, this is detected and reported now. o Unconnected rules are detected and reported now. ------------------------------------------------------------------------ r291 | martijn | 2003-07-25 12:27:04 +0200 (Fri, 25 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in v0.0.10, fixed some gcc3.2.2 dependencies (hopefully) ------------------------------------------------------------------------ r289 | martijn | 2003-07-24 15:08:22 +0200 (Thu, 24 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.9 ------------------------------------------------------------------------ r288 | venekamp | 2003-07-24 14:52:53 +0200 (Thu, 24 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c corrected a spelling mistake. ------------------------------------------------------------------------ r287 | venekamp | 2003-07-24 14:32:20 +0200 (Thu, 24 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h o Corrected space inserten with quoated string. o Added checking of recursion in policy rules. ------------------------------------------------------------------------ r286 | martijn | 2003-07-24 13:51:27 +0200 (Thu, 24 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/lcmaps.tex updated release numbers of packages to be installed ------------------------------------------------------------------------ r285 | martijn | 2003-07-23 15:12:15 +0200 (Wed, 23 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/edg-lcmaps.spec.in forgot to check these in ------------------------------------------------------------------------ r283 | martijn | 2003-07-21 19:38:29 +0200 (Mon, 21 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c - built in timeout functionality on ldap_bind() - fixed bugs (previously it was assumed that the number of uids and pgids >= 1) ------------------------------------------------------------------------ r282 | okoeroo | 2003-07-21 17:32:26 +0200 (Mon, 21 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c Added improved logging of the credentials. Only the credential which are enforced by the LDAP plugin will be logged (as it should). ------------------------------------------------------------------------ r281 | venekamp | 2003-07-21 16:37:29 +0200 (Mon, 21 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c getPluginNameAndArgs returns -1 when there is not enough space to copy strings. ------------------------------------------------------------------------ r280 | venekamp | 2003-07-21 16:34:45 +0200 (Mon, 21 Jul 2003) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y o When a string is made up of several strings, a separating space is automatically added. o Give a warning when strings have overflown. ------------------------------------------------------------------------ r279 | martijn | 2003-07-21 16:10:26 +0200 (Mon, 21 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/include/lcmaps_defines.h increased plugin options buffer ------------------------------------------------------------------------ r278 | venekamp | 2003-07-21 15:44:08 +0200 (Mon, 21 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Added escaping of double quotes " in strings. ------------------------------------------------------------------------ r277 | venekamp | 2003-07-21 10:57:52 +0200 (Mon, 21 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Quated strings on consecutive lines are merged into one single string. ------------------------------------------------------------------------ r276 | martijn | 2003-07-18 18:18:41 +0200 (Fri, 18 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c improved logging ------------------------------------------------------------------------ r274 | martijn | 2003-07-17 17:16:20 +0200 (Thu, 17 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c version 0.0.7, bug fix gridmapdir ------------------------------------------------------------------------ r270 | martijn | 2003-07-16 17:34:42 +0200 (Wed, 16 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c fixed doc error ------------------------------------------------------------------------ r267 | martijn | 2003-07-16 16:43:02 +0200 (Wed, 16 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/bod_dummy M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.6 ------------------------------------------------------------------------ r265 | martijn | 2003-07-16 14:53:29 +0200 (Wed, 16 Jul 2003) | 4 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/include/lcmaps_log.h M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c - Added loglines in plugins with timestamp, also in lcmaps framework - fixed logging bugs - restored old ldap passwd checking ------------------------------------------------------------------------ r264 | okoeroo | 2003-07-16 12:43:23 +0200 (Wed, 16 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Made the log_cred a static function ------------------------------------------------------------------------ r263 | martijn | 2003-07-16 12:25:45 +0200 (Wed, 16 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c more flexible password reading: tabs, newlines and whitespaces are ignored ------------------------------------------------------------------------ r262 | okoeroo | 2003-07-16 12:23:25 +0200 (Wed, 16 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Log strings update (building and display) ------------------------------------------------------------------------ r261 | venekamp | 2003-07-16 11:30:58 +0200 (Wed, 16 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c * Updated code documentation after recent code changes. * Code clean up and removal. ------------------------------------------------------------------------ r259 | martijn | 2003-07-15 17:53:53 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/edg-lcmaps.spec.in version 0.0.5 ------------------------------------------------------------------------ r257 | martijn | 2003-07-15 17:48:48 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/lcmaps_config.h.in FLEX define removed ------------------------------------------------------------------------ r256 | martijn | 2003-07-15 17:41:55 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c fixed bug in ldap_pw memory allocation ------------------------------------------------------------------------ r254 | martijn | 2003-07-15 15:05:15 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in removed line ------------------------------------------------------------------------ r253 | martijn | 2003-07-15 15:02:45 +0200 (Tue, 15 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/edg-lcmaps.spec.in removed voms-api build dependency in rpm spec file updated Makefile.am for rpmbuild ------------------------------------------------------------------------ r252 | martijn | 2003-07-15 15:01:26 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in use rpmbuild if possible ------------------------------------------------------------------------ r251 | venekamp | 2003-07-15 14:45:36 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fixed a spelling mistake. ------------------------------------------------------------------------ r250 | venekamp | 2003-07-15 14:42:26 +0200 (Tue, 15 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c * Some detection of failed or not called initialization. Message is logged. * stopEvalutionManger can be called multiple times (fixed). ------------------------------------------------------------------------ r249 | martijn | 2003-07-15 14:38:39 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c updated logging ------------------------------------------------------------------------ r248 | venekamp | 2003-07-15 13:43:03 +0200 (Tue, 15 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/configure.in changed the way flex or any other lexer is defined. Now each lexer type has to define HAVE_FLEX or simular. ------------------------------------------------------------------------ r247 | martijn | 2003-07-15 13:40:09 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c added logging of locally enforced credentials (with time) ------------------------------------------------------------------------ r246 | venekamp | 2003-07-15 13:40:03 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Only register errors as errors and not warnings as well. ------------------------------------------------------------------------ r245 | venekamp | 2003-07-15 13:38:07 +0200 (Tue, 15 Jul 2003) | 5 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y - stopEvaluationManager can be called multiple times now. - When errors are found during parsing, startEvaluationManager fails now. - When flex is being used as the lexical analyser, the buffer allocated are freed now. ------------------------------------------------------------------------ r244 | martijn | 2003-07-15 12:26:05 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c pvar --> args ------------------------------------------------------------------------ r242 | martijn | 2003-07-15 11:15:24 +0200 (Tue, 15 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/include/lcmaps_log.h M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/posix_enf/plugin_test.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c updated logging, few fixes doxygen ------------------------------------------------------------------------ r241 | martijn | 2003-07-14 16:33:56 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/lcmaps_config.h.in Created a define with the lex type (flex or lex or ... ) ------------------------------------------------------------------------ r240 | martijn | 2003-07-14 16:29:55 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am Use LEXLIB instead of -ll ------------------------------------------------------------------------ r239 | martijn | 2003-07-14 14:06:41 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c fixed apidoc ------------------------------------------------------------------------ r238 | martijn | 2003-07-14 13:51:43 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/src/lcmaps.c version 0.0.5, added lcmaps.c to apidoc including mainpage ------------------------------------------------------------------------ r236 | martijn | 2003-07-14 10:08:59 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c version 0.0.4 ------------------------------------------------------------------------ r235 | martijn | 2003-07-14 10:03:36 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/bod_dummy bod dummy file ------------------------------------------------------------------------ r234 | martijn | 2003-07-14 10:02:12 +0200 (Mon, 14 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/example/Makefile.am M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c forgot to remove testing code, now fixed ------------------------------------------------------------------------ r233 | venekamp | 2003-07-14 09:59:14 +0200 (Mon, 14 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Changed the yacc file to better parse the files. This should eliminate a few bugs that were hard to solve. ------------------------------------------------------------------------ r231 | martijn | 2003-07-11 18:44:28 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/edg-lcmaps.spec.in added example groupmapfile ------------------------------------------------------------------------ r230 | martijn | 2003-07-11 17:58:16 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/doc/lcmaps.tex switch to 0.0.3 ------------------------------------------------------------------------ r229 | martijn | 2003-07-11 17:54:57 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/INSTALL M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/edg-lcmaps.spec.in added dependencies + doc target ------------------------------------------------------------------------ r228 | martijn | 2003-07-11 17:53:19 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/lcmaps.db.ex M /trunk/lcmaps/doc/lcmaps.tex First version of documentation ready (at least installation and configuration) ------------------------------------------------------------------------ r227 | martijn | 2003-07-11 17:52:37 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: D /trunk/lcmaps/doc/evaluationmanager/figures/example_real.pdf should be created from eps, so no source file ------------------------------------------------------------------------ r226 | martijn | 2003-07-11 17:50:16 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c fixed plugin documentation ------------------------------------------------------------------------ r225 | martijn | 2003-07-11 12:51:38 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/doc/groupmapfile.ex example groupmapfile ------------------------------------------------------------------------ r224 | martijn | 2003-07-11 12:50:05 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/Makefile.am do not overwrite lcmaps.db ------------------------------------------------------------------------ r223 | martijn | 2003-07-11 12:47:53 +0200 (Fri, 11 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/etc/groupmapfile.in the groupmapfile ------------------------------------------------------------------------ r222 | martijn | 2003-07-10 18:34:56 +0200 (Thu, 10 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in updated packaging ------------------------------------------------------------------------ r221 | martijn | 2003-07-10 18:33:23 +0200 (Thu, 10 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/include/lcmaps_arguments.h M /trunk/lcmaps/include/lcmaps_cred_data.h M /trunk/lcmaps/include/lcmaps_defines.h M /trunk/lcmaps/include/lcmaps_log.h M /trunk/lcmaps/include/lcmaps_modules.h M /trunk/lcmaps/include/lcmaps_types.h M /trunk/lcmaps/include/lcmaps_utils.h M /trunk/lcmaps/include/lcmaps_vo_data.h Renamed the apidoc groups ------------------------------------------------------------------------ r220 | martijn | 2003-07-10 18:32:12 +0200 (Thu, 10 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c added documentation for some ------------------------------------------------------------------------ r219 | martijn | 2003-07-10 18:31:12 +0200 (Thu, 10 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/doc/evaluationmanager/Makefile.am Corrected eps to pdf rule ------------------------------------------------------------------------ r218 | martijn | 2003-07-10 18:27:48 +0200 (Thu, 10 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/doc/datagrid.eps A /trunk/lcmaps/doc/lcmaps.db.ex A /trunk/lcmaps/doc/lcmaps.tex A /trunk/lcmaps/doc/lcmaps_include.tex.in First attempt to document ------------------------------------------------------------------------ r217 | venekamp | 2003-07-10 16:02:14 +0200 (Thu, 10 Jul 2003) | 4 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y fixed bug: When using empty policies the evaluatoinmanager no-longer crashes. Well... when you use an empty definition which has been defined before it still crashes. This is a different bug through. ------------------------------------------------------------------------ r216 | martijn | 2003-07-10 13:07:34 +0200 (Thu, 10 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/evaluationmanager/Makefile.am Now it actually works... (epstopdf coversion) ------------------------------------------------------------------------ r215 | martijn | 2003-07-09 17:15:24 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c lcmaps_get_ldap_pw function update: test for read-only root ------------------------------------------------------------------------ r214 | martijn | 2003-07-09 17:05:45 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/doc/evaluationmanager/Makefile.am Makefile.am for evaluation manager doc: pdl_requirements ------------------------------------------------------------------------ r213 | martijn | 2003-07-09 16:59:36 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c added lcmaps_get_ldap_pw() function ------------------------------------------------------------------------ r212 | venekamp | 2003-07-09 16:07:13 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/doc/evaluationmanager/figures/example_real.eps A /trunk/lcmaps/doc/evaluationmanager/figures/example_real.fig A /trunk/lcmaps/doc/evaluationmanager/figures/example_real.pdf New figures ------------------------------------------------------------------------ r209 | martijn | 2003-07-09 15:05:54 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/README M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in prepare for first rpm packaging ------------------------------------------------------------------------ r208 | martijn | 2003-07-09 15:03:28 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c added documentation + first attempt to add audit trail logging ------------------------------------------------------------------------ r207 | martijn | 2003-07-09 15:02:19 +0200 (Wed, 09 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps_log.h M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c added lcmaps_log_cred() function ------------------------------------------------------------------------ r206 | venekamp | 2003-07-08 16:37:27 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Forgot to specify the buffer in a sprintf function. ------------------------------------------------------------------------ r205 | venekamp | 2003-07-08 16:22:54 +0200 (Tue, 08 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fixed bug: when non-existing input filename is supplied, the eval. manager wait for stdin for input. Now an error is returned. ------------------------------------------------------------------------ r204 | venekamp | 2003-07-08 16:05:38 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c Fixed bug in pdl_next_plugin -> case EVALUATION_FAILURE: ------------------------------------------------------------------------ r203 | martijn | 2003-07-08 15:00:01 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c instead of a suffix (dnsuffix) the complete leasename is passed to lcmaps_gridlist() ------------------------------------------------------------------------ r202 | martijn | 2003-07-08 14:58:50 +0200 (Tue, 08 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c fixed search string for poolaccount. added switches to poolaccount. ------------------------------------------------------------------------ r201 | martijn | 2003-07-08 14:56:53 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Maak additional library: libedg_lcmaps_gss_assist_gridmap.so ------------------------------------------------------------------------ r200 | martijn | 2003-07-08 14:56:13 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c Secondary gids are sorted and identical entries are not added ------------------------------------------------------------------------ r199 | martijn | 2003-07-08 14:55:31 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c LCMAPS policy db file can be specified with env variable LCMAPS_DB_FILE ------------------------------------------------------------------------ r198 | martijn | 2003-07-08 14:52:24 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/src/lcmaps.c added lcmaps_run_without_credentials() ------------------------------------------------------------------------ r197 | martijn | 2003-07-08 14:49:39 +0200 (Tue, 08 Jul 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/lcmaps_gss_assist_gridmap.c This file contains the sources for the legacy gridmap interface ------------------------------------------------------------------------ r196 | martijn | 2003-07-07 16:51:52 +0200 (Mon, 07 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c Code commented using doxygen ------------------------------------------------------------------------ r195 | martijn | 2003-07-07 12:13:53 +0200 (Mon, 07 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c fixed parsing bug (now files with only DN entry on a line are parsed correctly, no segmentation fault) ------------------------------------------------------------------------ r194 | martijn | 2003-07-07 10:49:50 +0200 (Mon, 07 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c fixed debugging output ------------------------------------------------------------------------ r193 | martijn | 2003-07-07 10:48:46 +0200 (Mon, 07 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c PRI_GID --> SEC_GID ! ------------------------------------------------------------------------ r192 | martijn | 2003-07-07 10:48:06 +0200 (Mon, 07 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c made gridmapdir_newlease() a static function, otherwise dlopen gets confused. ------------------------------------------------------------------------ r191 | martijn | 2003-07-04 16:25:32 +0200 (Fri, 04 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps/modules/voms/plugin_test.c M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_runvars.c various bugfixes and cleanups ------------------------------------------------------------------------ r190 | martijn | 2003-07-02 16:49:50 +0200 (Wed, 02 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/include/lcmaps_arguments.h M /trunk/lcmaps/include/lcmaps_cred_data.h M /trunk/lcmaps/include/lcmaps_log.h M /trunk/lcmaps/include/lcmaps_utils.h M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c M /trunk/lcmaps/src/lcmaps.c M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_runvars.h M /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_log.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_runvars.c M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Reorganized apidoc ------------------------------------------------------------------------ r189 | martijn | 2003-07-02 14:37:42 +0200 (Wed, 02 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c M /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c M /trunk/lcmaps/modules/voms/lcmaps_voms_utils.c M /trunk/lcmaps/modules/voms/lcmaps_voms_utils.h cleaned up apidoc and added entries for plugin documentation ------------------------------------------------------------------------ r188 | martijn | 2003-07-02 14:36:53 +0200 (Wed, 02 Jul 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c added apidoc ------------------------------------------------------------------------ r187 | martijn | 2003-07-02 12:03:00 +0200 (Wed, 02 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/Makefile.am M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c - Makefile.am: renamed the posix module shared object (lcmaps_posix.mod --> lcmaps_posix_enf.mod) - lcmaps_posix.c: small changes in argument parsing ------------------------------------------------------------------------ r186 | martijn | 2003-07-02 12:01:13 +0200 (Wed, 02 Jul 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c - Makefile.am: renamed the ldap module shared object (lcmaps_ldap.mod --> lcmaps_ldap_enf.mod) - lcmaps_ldap.c: try to create plugin documentation in apidoc (seperate group) ------------------------------------------------------------------------ r185 | martijn | 2003-06-30 15:05:58 +0200 (Mon, 30 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c plugin_initialize function finished ------------------------------------------------------------------------ r184 | martijn | 2003-06-27 16:06:10 +0200 (Fri, 27 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/localaccount/Makefile.am M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/Makefile.am M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.h M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/poolaccount/plugin_test.c M /trunk/lcmaps/modules/posix_enf/Makefile.am clean up and make adjustments for the new VOMS plugins in the gridlist ------------------------------------------------------------------------ r183 | martijn | 2003-06-27 16:02:34 +0200 (Fri, 27 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/Makefile.am added the new plugins ------------------------------------------------------------------------ r182 | martijn | 2003-06-27 16:02:14 +0200 (Fri, 27 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c use globus_cred from LCMAPS, clean up ------------------------------------------------------------------------ r181 | martijn | 2003-06-27 16:00:31 +0200 (Fri, 27 Jun 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/voms/lcmaps_voms_localgroup.c A /trunk/lcmaps/modules/voms/lcmaps_voms_poolaccount.c A /trunk/lcmaps/modules/voms/lcmaps_voms_poolgroup.c Start ------------------------------------------------------------------------ r180 | martijn | 2003-06-26 11:00:33 +0200 (Thu, 26 Jun 2003) | 3 lines Changed paths: M /trunk/lcmaps/autogen.sh A /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.h - Added a few lines to establish links to lcmaps_gridlist.[ch] in various directories - Added lcmaps_gridlist.h (should already have happened) ------------------------------------------------------------------------ r179 | martijn | 2003-06-23 18:22:10 +0200 (Mon, 23 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c added lcmaps_set_pgid() function ------------------------------------------------------------------------ r178 | martijn | 2003-06-19 18:21:40 +0200 (Thu, 19 Jun 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c lcmaps_vo_data.c: added lcmaps_cleanVoData(), modified lcmaps_copyVoData() lcmaps_cred_data.c: removed separate VO data elements added support for lcmaps_vo_data ------------------------------------------------------------------------ r177 | martijn | 2003-06-19 18:19:46 +0200 (Thu, 19 Jun 2003) | 3 lines Changed paths: M /trunk/lcmaps/include/lcmaps_cred_data.h M /trunk/lcmaps/include/lcmaps_vo_data.h lcmaps_vo_data.h: added lcmaps_cleanVoData(), modified lcmaps_copyVoData() lcmaps_cred_data.h: removed separate VO data elements ------------------------------------------------------------------------ r176 | martijn | 2003-06-19 18:15:28 +0200 (Thu, 19 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/Makefile.am M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/plugin_test.c voms: adding vo_data credentials works ------------------------------------------------------------------------ r175 | martijn | 2003-06-17 11:55:16 +0200 (Tue, 17 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c M /trunk/lcmaps/modules/ldap_enf/plugin_test.c working plugin_run, cleanup code ------------------------------------------------------------------------ r174 | martijn | 2003-06-16 17:55:35 +0200 (Mon, 16 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/Makefile.am M /trunk/lcmaps/include/lcmaps_vo_data.h added lcmaps_vo_data.h ------------------------------------------------------------------------ r173 | martijn | 2003-06-16 17:54:17 +0200 (Mon, 16 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c Filled in lcmaps_vo_data.c and added to the sources in Makefile.am ------------------------------------------------------------------------ r172 | martijn | 2003-06-16 16:28:18 +0200 (Mon, 16 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c more cleanup ------------------------------------------------------------------------ r171 | martijn | 2003-06-16 16:07:30 +0200 (Mon, 16 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c code cleanup ------------------------------------------------------------------------ r170 | martijn | 2003-06-16 15:06:51 +0200 (Mon, 16 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c lcmaps_add_username_to_ldapgroup added ------------------------------------------------------------------------ r169 | martijn | 2003-06-13 18:16:49 +0200 (Fri, 13 Jun 2003) | 3 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in M /trunk/lcmaps/lcmaps_config.h.in - now EDG_RPM_RELEASE_VERSION is added to the package name - interface package added ------------------------------------------------------------------------ r168 | martijn | 2003-06-13 18:15:38 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/pluginmanager/Makefile.am removed some lines to get correct dependencies ------------------------------------------------------------------------ r167 | martijn | 2003-06-13 18:15:10 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c fixed small bug, added some comments ------------------------------------------------------------------------ r166 | martijn | 2003-06-13 18:12:58 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/localaccount/Makefile.am M /trunk/lcmaps/modules/poolaccount/Makefile.am M /trunk/lcmaps/modules/posix_enf/Makefile.am M /trunk/lcmaps/modules/voms/Makefile.am removed lines to get correct dependencies ------------------------------------------------------------------------ r165 | martijn | 2003-06-13 18:12:04 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: A /trunk/lcmaps/include/lcmaps_vo_data.h A /trunk/lcmaps/src/pluginmanager/lcmaps_vo_data.c routines to acces some vo data ------------------------------------------------------------------------ r164 | martijn | 2003-06-13 14:49:29 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c Tiny update ------------------------------------------------------------------------ r163 | martijn | 2003-06-13 14:40:39 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in New lcmaps policy example ------------------------------------------------------------------------ r162 | martijn | 2003-06-13 14:35:57 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c check that process does not end up with root priviliges after posix enforcement ------------------------------------------------------------------------ r161 | venekamp | 2003-06-13 11:08:00 +0200 (Fri, 13 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c document changes? ------------------------------------------------------------------------ r160 | martijn | 2003-06-12 16:13:45 +0200 (Thu, 12 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in removed obsolete line ------------------------------------------------------------------------ r157 | martijn | 2003-06-04 17:28:04 +0200 (Wed, 04 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c attempts to store and query LDAP ------------------------------------------------------------------------ r156 | venekamp | 2003-06-04 15:01:02 +0200 (Wed, 04 Jun 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex Examples added. ------------------------------------------------------------------------ r153 | venekamp | 2003-05-26 12:50:27 +0200 (Mon, 26 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h Added source documentation. ------------------------------------------------------------------------ r152 | martijn | 2003-05-09 15:30:15 +0200 (Fri, 09 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Adjusted debug logging ------------------------------------------------------------------------ r151 | martijn | 2003-05-09 15:29:35 +0200 (Fri, 09 May 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/voms/lcmaps_voms.c M /trunk/lcmaps/modules/voms/lcmaps_voms_utils.c M /trunk/lcmaps/modules/voms/plugin_test.c Using vomsc API Adjusted debug logging ------------------------------------------------------------------------ r150 | martijn | 2003-05-09 15:28:31 +0200 (Fri, 09 May 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c Using ldap api Adjusted debug logging ------------------------------------------------------------------------ r149 | martijn | 2003-05-09 15:17:24 +0200 (Fri, 09 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c Switched EVALUATION_SUCCESS and EVALUATION_FAILURE ------------------------------------------------------------------------ r148 | martijn | 2003-05-09 15:12:11 +0200 (Fri, 09 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Use evaluation manager ------------------------------------------------------------------------ r147 | venekamp | 2003-05-08 15:06:05 +0200 (Thu, 08 May 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h Fixed most memory leaks. Two are remaining: one is GLIBC_2.1 related, the other is lex related. ------------------------------------------------------------------------ r146 | venekamp | 2003-05-08 11:14:38 +0200 (Thu, 08 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c Fixed sending a NULL pointer to find_state() in pdl_next_plugin(). ------------------------------------------------------------------------ r145 | martijn | 2003-05-07 14:57:58 +0200 (Wed, 07 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c added evaluationmanager switch ------------------------------------------------------------------------ r144 | venekamp | 2003-05-07 14:09:08 +0200 (Wed, 07 May 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c Fixed return of pluginname. The arguments are removed now. ------------------------------------------------------------------------ r143 | martijn | 2003-04-28 15:04:53 +0200 (Mon, 28 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/localaccount/Makefile.am M /trunk/lcmaps/modules/poolaccount/Makefile.am M /trunk/lcmaps/modules/posix_enf/Makefile.am M /trunk/lcmaps/modules/voms/Makefile.am Incorporated new src layout for plugin_test.c linking ------------------------------------------------------------------------ r142 | martijn | 2003-04-25 17:41:02 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/Makefile.am Added -ll ------------------------------------------------------------------------ r141 | martijn | 2003-04-25 17:39:36 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Incorporated part of evaluation interface ------------------------------------------------------------------------ r140 | venekamp | 2003-04-25 16:11:25 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h getPluginNameAndArgs() returns an integer now. ------------------------------------------------------------------------ r139 | venekamp | 2003-04-25 16:01:51 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fixed a warning. ------------------------------------------------------------------------ r138 | venekamp | 2003-04-25 16:00:17 +0200 (Fri, 25 Apr 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c - runPlugin() was put in pdl_main.c instead of pdl_test.c. - Fixed a few warnings. ------------------------------------------------------------------------ r137 | venekamp | 2003-04-25 15:48:25 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_test.c Implemented runEvaluationManager() interface. ------------------------------------------------------------------------ r136 | martijn | 2003-04-25 14:11:21 +0200 (Fri, 25 Apr 2003) | 4 lines Changed paths: M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am A /trunk/lcmaps/src/lcmaps.c A /trunk/lcmaps/src/lcmaps_test.c M /trunk/lcmaps/src/pluginmanager/Makefile.am D /trunk/lcmaps/src/pluginmanager/lcmaps.c D /trunk/lcmaps/src/pluginmanager/lcmaps_test.c First step in integration of pluginmanager and evaluationmanager Top level: lcmaps.c subdirs: pluginmanager and evaluationmanager ------------------------------------------------------------------------ r135 | martijn | 2003-04-25 13:30:29 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcas/configure.in M /trunk/lcas/edg-lcas.spec.in M /trunk/lcmaps/configure.in M /trunk/lcmaps/edg-lcmaps.spec.in Added EDG_RPM_RELEASE_VERSION environment variable ------------------------------------------------------------------------ r134 | martijn | 2003-04-25 12:15:38 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h Added some comments ------------------------------------------------------------------------ r133 | martijn | 2003-04-25 11:07:53 +0200 (Fri, 25 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/doc/Makefile.am M /trunk/lcmaps/etc/Makefile.am M /trunk/lcmaps/etc/lcmaps.db.in M /trunk/lcmaps/include/Makefile.am M /trunk/lcmaps/modules/Makefile.am M /trunk/lcmaps/modules/example/Makefile.am M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/localaccount/Makefile.am M /trunk/lcmaps/modules/poolaccount/Makefile.am M /trunk/lcmaps/modules/posix_enf/Makefile.am M /trunk/lcmaps/modules/voms/Makefile.am M /trunk/lcmaps/src/Makefile.am M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/Makefile.am Used the right ("##") comment tag in Makefile.am's ------------------------------------------------------------------------ r132 | martijn | 2003-04-24 17:45:43 +0200 (Thu, 24 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/voms/Makefile.am A /trunk/lcmaps/modules/voms/lcmaps_voms.c A /trunk/lcmaps/modules/voms/lcmaps_voms_utils.c A /trunk/lcmaps/modules/voms/lcmaps_voms_utils.h A /trunk/lcmaps/modules/voms/plugin_test.c A /trunk/lcmaps/modules/voms/plugin_test.h Start ------------------------------------------------------------------------ r131 | martijn | 2003-04-24 17:44:46 +0200 (Thu, 24 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/voms A /trunk/lcmaps/modules/voms/globus_gsi_gss_constants.h A /trunk/lcmaps/modules/voms/globus_i_gsi_credential.h A /trunk/lcmaps/modules/voms/gssapi_openssl.h Internal globus headers needed for lcmaps_voms_utils.c ------------------------------------------------------------------------ r130 | venekamp | 2003-04-24 14:11:39 +0200 (Thu, 24 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c Forgot to return the path in the plugin name. ------------------------------------------------------------------------ r129 | venekamp | 2003-04-24 10:00:58 +0200 (Thu, 24 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_main.c Fix strcpy bug. ------------------------------------------------------------------------ r128 | venekamp | 2003-04-23 16:49:01 +0200 (Wed, 23 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_test.c M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Added the ability to read config files other than stdin. ------------------------------------------------------------------------ r127 | venekamp | 2003-04-23 16:29:48 +0200 (Wed, 23 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/evaluationmanager/pdl_test.c File to test the evaluation manager stand alone. ------------------------------------------------------------------------ r126 | venekamp | 2003-04-23 15:44:34 +0200 (Wed, 23 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/evaluationmanager/evaluationmanager.c Forgotten to add file. ------------------------------------------------------------------------ r125 | venekamp | 2003-04-23 15:33:58 +0200 (Wed, 23 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/evaluationmanager/evaluationmanager.h M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h Added getPluginNameAndArgs() interface and its implementation. ------------------------------------------------------------------------ r124 | martijn | 2003-04-23 13:47:28 +0200 (Wed, 23 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/modules/Makefile.am added voms plugin ------------------------------------------------------------------------ r123 | venekamp | 2003-04-17 16:14:50 +0200 (Thu, 17 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Variables values can be quoted text. ------------------------------------------------------------------------ r122 | venekamp | 2003-04-17 10:29:09 +0200 (Thu, 17 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/examples/example_1.pdl M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Added comments and an example configure file. ------------------------------------------------------------------------ r121 | martijn | 2003-04-15 14:30:56 +0200 (Tue, 15 Apr 2003) | 3 lines Changed paths: M /trunk/lcmaps/include/Makefile.am M /trunk/lcmaps/include/lcmaps_defines.h M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h M /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Moved lcmaps_db strucure to public interface (for evaluationmanager). _lcmaps_defines.h is obsolete now ------------------------------------------------------------------------ r120 | martijn | 2003-04-15 14:29:09 +0200 (Tue, 15 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in M /trunk/lcmaps/modules/Makefile.am Added ldap_enf plugin module ------------------------------------------------------------------------ r119 | martijn | 2003-04-15 14:25:41 +0200 (Tue, 15 Apr 2003) | 3 lines Changed paths: M /trunk/lcmaps/include/lcmaps_cred_data.h M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c added VoMS info to credential data: VO, groups, subgroup, role, capability ------------------------------------------------------------------------ r118 | martijn | 2003-04-15 14:20:44 +0200 (Tue, 15 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c Works with NGROUPS_MAX (solaris compatibility) ------------------------------------------------------------------------ r117 | martijn | 2003-04-15 14:11:15 +0200 (Tue, 15 Apr 2003) | 3 lines Changed paths: A /trunk/lcmaps/include/lcmaps_db_read.h start. To be used by evaluationmanager for its lmaps_db structure ------------------------------------------------------------------------ r116 | martijn | 2003-04-14 18:07:24 +0200 (Mon, 14 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/ldap_enf/Makefile.am M /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c fetch server credential ------------------------------------------------------------------------ r115 | martijn | 2003-04-14 16:36:36 +0200 (Mon, 14 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/ldap_enf A /trunk/lcmaps/modules/ldap_enf/Makefile.am A /trunk/lcmaps/modules/ldap_enf/lcmaps_ldap.c A /trunk/lcmaps/modules/ldap_enf/plugin_test.c A /trunk/lcmaps/modules/ldap_enf/plugin_test.h start ------------------------------------------------------------------------ r114 | venekamp | 2003-04-14 16:06:36 +0200 (Mon, 14 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/evaluationmanager/examples A /trunk/lcmaps/src/evaluationmanager/examples/example_1.pdl Added a realistic example to test the pdl module. ------------------------------------------------------------------------ r113 | venekamp | 2003-04-14 15:08:42 +0200 (Mon, 14 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am M /trunk/lcmaps/src/evaluationmanager/pdl.h M /trunk/lcmaps/src/evaluationmanager/pdl_lex.l M /trunk/lcmaps/src/evaluationmanager/pdl_main.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.c M /trunk/lcmaps/src/evaluationmanager/pdl_policy.h M /trunk/lcmaps/src/evaluationmanager/pdl_rule.c M /trunk/lcmaps/src/evaluationmanager/pdl_rule.h M /trunk/lcmaps/src/evaluationmanager/pdl_variable.c M /trunk/lcmaps/src/evaluationmanager/pdl_variable.h M /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y Added copyright notice and license information to the files. ------------------------------------------------------------------------ r112 | venekamp | 2003-04-10 12:41:08 +0200 (Thu, 10 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am Added evaluationmanager as subdir. ------------------------------------------------------------------------ r111 | venekamp | 2003-04-10 12:35:18 +0200 (Thu, 10 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in Added the creation of a Makefile in doc/evaluationmanager ------------------------------------------------------------------------ r110 | venekamp | 2003-04-10 11:44:46 +0200 (Thu, 10 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/doc/evaluationmanager A /trunk/lcmaps/doc/evaluationmanager/figures A /trunk/lcmaps/doc/evaluationmanager/figures/datagrid.eps A /trunk/lcmaps/doc/evaluationmanager/figures/example1.eps A /trunk/lcmaps/doc/evaluationmanager/figures/example1.fig A /trunk/lcmaps/doc/evaluationmanager/figures/example2.eps A /trunk/lcmaps/doc/evaluationmanager/figures/example2.fig A /trunk/lcmaps/doc/evaluationmanager/figures/example3.eps A /trunk/lcmaps/doc/evaluationmanager/figures/example3.fig A /trunk/lcmaps/doc/evaluationmanager/figures/example4.eps A /trunk/lcmaps/doc/evaluationmanager/figures/example4.fig A /trunk/lcmaps/doc/evaluationmanager/figures/nikhef.eps A /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.bib A /trunk/lcmaps/doc/evaluationmanager/pdl_requirements.tex First checking. ------------------------------------------------------------------------ r109 | martijn | 2003-04-09 15:10:59 +0200 (Wed, 09 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c Added doxygen documentation ------------------------------------------------------------------------ r108 | martijn | 2003-04-09 15:10:21 +0200 (Wed, 09 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps.c added doxygen directives ------------------------------------------------------------------------ r107 | martijn | 2003-04-09 15:09:22 +0200 (Wed, 09 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps_arguments.h M /trunk/lcmaps/include/lcmaps_cred_data.h Added apidoc description + clean up ------------------------------------------------------------------------ r106 | martijn | 2003-04-09 15:08:25 +0200 (Wed, 09 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/Doxyfile removed pdl_main.c from doxyfile sources ------------------------------------------------------------------------ r105 | martijn | 2003-04-09 14:43:35 +0200 (Wed, 09 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/doc/Makefile.am added evaluationmanager directory ------------------------------------------------------------------------ r104 | martijn | 2003-04-07 13:25:03 +0200 (Mon, 07 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/lcmaps.db.in added init arguments ------------------------------------------------------------------------ r103 | martijn | 2003-04-07 13:23:57 +0200 (Mon, 07 Apr 2003) | 4 lines Changed paths: M /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c M /trunk/lcmaps/modules/posix_enf/plugin_test.c added init arguments removed printf statement(s) removed TABs ------------------------------------------------------------------------ r102 | martijn | 2003-04-07 12:34:35 +0200 (Mon, 07 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/evaluationmanager/Makefile.am Fixed buggetje ------------------------------------------------------------------------ r101 | martijn | 2003-04-07 12:31:58 +0200 (Mon, 07 Apr 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c use lcmaps_log() and lcmaps_log_debug() to log messages and debugging output, stdout is forbidden because closed in the gatekeeper ------------------------------------------------------------------------ r100 | martijn | 2003-04-07 12:30:45 +0200 (Mon, 07 Apr 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c added setgrent() and endgrent() to close the groups file and rewind the file pointer to start of file ------------------------------------------------------------------------ r96 | martijn | 2003-04-02 15:25:54 +0200 (Wed, 02 Apr 2003) | 4 lines Changed paths: M /trunk/lcmaps/Makefile.am M /trunk/lcmaps/configure.in M /trunk/lcmaps/etc/lcmaps.db.in M /trunk/lcmaps/lcmaps_config.h.in M /trunk/lcmaps/modules/Makefile.am M /trunk/lcmaps/modules/example/Makefile.am M /trunk/lcmaps/modules/example/lcmaps_plugin_example.c M /trunk/lcmaps/modules/localaccount/Makefile.am M /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c M /trunk/lcmaps/modules/poolaccount/Makefile.am M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c M /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c M /trunk/lcmaps/src/evaluationmanager/Makefile.am - Added Policy Description Language evaluation manager - added apidoc target - updated plugin code ------------------------------------------------------------------------ r95 | martijn | 2003-04-02 15:22:18 +0200 (Wed, 02 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/Doxyfile Start ------------------------------------------------------------------------ r94 | martijn | 2003-04-02 15:21:24 +0200 (Wed, 02 Apr 2003) | 4 lines Changed paths: M /trunk/lcmaps/include/Makefile.am M /trunk/lcmaps/include/lcmaps.h M /trunk/lcmaps/include/lcmaps_arguments.h A /trunk/lcmaps/include/lcmaps_cred_data.h M /trunk/lcmaps/include/lcmaps_types.h M /trunk/lcmaps/include/lcmaps_utils.h - added credential data header - added lcmaps_get_gidlist() - clean up ------------------------------------------------------------------------ r93 | martijn | 2003-04-02 15:18:01 +0200 (Wed, 02 Apr 2003) | 4 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/Makefile.am M /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h M /trunk/lcmaps/src/pluginmanager/lcmaps.c M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c M /trunk/lcmaps/src/pluginmanager/lcmaps_test.c - changed pluginmanager api - added credential data and run variable calls - added documentation ------------------------------------------------------------------------ r92 | martijn | 2003-04-02 15:17:14 +0200 (Wed, 02 Apr 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Added lcmaps_get_gidlist() ------------------------------------------------------------------------ r91 | martijn | 2003-04-02 15:14:27 +0200 (Wed, 02 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/pluginmanager/_lcmaps_cred_data.h A /trunk/lcmaps/src/pluginmanager/_lcmaps_runvars.h A /trunk/lcmaps/src/pluginmanager/lcmaps_cred_data.c A /trunk/lcmaps/src/pluginmanager/lcmaps_runvars.c Added routines to acces the credential data and the run variables ------------------------------------------------------------------------ r90 | martijn | 2003-04-02 15:11:14 +0200 (Wed, 02 Apr 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/localaccount/plugin_test.c A /trunk/lcmaps/modules/localaccount/plugin_test.h A /trunk/lcmaps/modules/poolaccount/plugin_test.c A /trunk/lcmaps/modules/poolaccount/plugin_test.h A /trunk/lcmaps/modules/posix_enf A /trunk/lcmaps/modules/posix_enf/Makefile.am A /trunk/lcmaps/modules/posix_enf/lcmaps_posix.c A /trunk/lcmaps/modules/posix_enf/plugin_test.c A /trunk/lcmaps/modules/posix_enf/plugin_test.h Start ------------------------------------------------------------------------ r89 | martijn | 2003-03-31 16:22:38 +0200 (Mon, 31 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/evaluationmanager/pdl.h A /trunk/lcmaps/src/evaluationmanager/pdl_lex.l A /trunk/lcmaps/src/evaluationmanager/pdl_main.c A /trunk/lcmaps/src/evaluationmanager/pdl_policy.c A /trunk/lcmaps/src/evaluationmanager/pdl_policy.h A /trunk/lcmaps/src/evaluationmanager/pdl_rule.c A /trunk/lcmaps/src/evaluationmanager/pdl_rule.h A /trunk/lcmaps/src/evaluationmanager/pdl_variable.c A /trunk/lcmaps/src/evaluationmanager/pdl_variable.h A /trunk/lcmaps/src/evaluationmanager/pdl_yacc.y first check-in ------------------------------------------------------------------------ r88 | martijn | 2003-03-25 16:25:02 +0100 (Tue, 25 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c added pool account patch ------------------------------------------------------------------------ r87 | martijn | 2003-03-25 16:24:26 +0100 (Tue, 25 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/poolaccount/lcmaps_gridlist.c adapted from lcas_gridlist.c ------------------------------------------------------------------------ r85 | martijn | 2003-03-17 17:00:22 +0100 (Mon, 17 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in added Makefiles for modules ------------------------------------------------------------------------ r84 | martijn | 2003-03-17 16:58:44 +0100 (Mon, 17 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/modules/example A /trunk/lcmaps/modules/example/Makefile.am A /trunk/lcmaps/modules/example/lcmaps_plugin_example.c A /trunk/lcmaps/modules/localaccount A /trunk/lcmaps/modules/localaccount/Makefile.am A /trunk/lcmaps/modules/localaccount/lcmaps_localaccount.c A /trunk/lcmaps/modules/poolaccount A /trunk/lcmaps/modules/poolaccount/Makefile.am A /trunk/lcmaps/modules/poolaccount/lcmaps_poolaccount.c Created structure for LCMAPS modules ------------------------------------------------------------------------ r83 | martijn | 2003-03-17 16:56:32 +0100 (Mon, 17 Mar 2003) | 2 lines Changed paths: D /trunk/lcmaps/modules/lcmaps_plugin_example.c moved to directory "example" ------------------------------------------------------------------------ r80 | martijn | 2003-03-13 17:53:20 +0100 (Thu, 13 Mar 2003) | 3 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c Integrated lcmaps_arguments part. Made callouts to plugin_run() ------------------------------------------------------------------------ r79 | martijn | 2003-03-13 17:51:42 +0100 (Thu, 13 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c beautified code + fixed bug in lcmaps_setArgValue() ------------------------------------------------------------------------ r78 | martijn | 2003-03-13 17:49:52 +0100 (Thu, 13 Mar 2003) | 3 lines Changed paths: M /trunk/lcmaps/modules/lcmaps_plugin_example.c Adjusted plugin_run() api Use lcmaps_getArgValue to get the requested values ------------------------------------------------------------------------ r77 | martijn | 2003-03-13 17:41:58 +0100 (Thu, 13 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps_types.h included gssapi.h ------------------------------------------------------------------------ r76 | martijn | 2003-03-13 17:39:04 +0100 (Thu, 13 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/lcmaps_arguments.h made functions external, changed api of lcmaps_getArgValue slightly ------------------------------------------------------------------------ r75 | martijn | 2003-03-13 11:56:36 +0100 (Thu, 13 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/Makefile.am M /trunk/lcmaps/include/lcmaps_arguments.h Updated arguments interface ------------------------------------------------------------------------ r74 | martijn | 2003-03-13 11:55:45 +0100 (Thu, 13 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/Makefile.am A /trunk/lcmaps/src/pluginmanager/lcmaps_arguments.c Added lcmaps_arguments.c to the lcmaps sources ------------------------------------------------------------------------ r73 | martijn | 2003-03-11 12:48:15 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/pluginmanager/.vilerc For editing purposes ------------------------------------------------------------------------ r72 | martijn | 2003-03-11 12:47:09 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c update ------------------------------------------------------------------------ r71 | martijn | 2003-03-11 12:36:11 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/configure.in Added the macros for the lcmaps-test program ------------------------------------------------------------------------ r70 | martijn | 2003-03-11 12:35:15 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/include/Makefile.am A /trunk/lcmaps/include/lcmaps.h A /trunk/lcmaps/include/lcmaps_arguments.h A /trunk/lcmaps/include/lcmaps_defines.h A /trunk/lcmaps/include/lcmaps_log.h A /trunk/lcmaps/include/lcmaps_modules.h A /trunk/lcmaps/include/lcmaps_types.h A /trunk/lcmaps/include/lcmaps_utils.h Added the include files ------------------------------------------------------------------------ r69 | martijn | 2003-03-11 12:33:28 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/modules/Makefile.am A /trunk/lcmaps/modules/lcmaps_plugin_example.c Added the example plugin ------------------------------------------------------------------------ r68 | martijn | 2003-03-11 12:32:00 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/etc/Makefile.am added lcmaps.db.in file ------------------------------------------------------------------------ r67 | martijn | 2003-03-11 12:31:14 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/etc/lcmaps.db.in lcmaps config files, just to start with. ------------------------------------------------------------------------ r66 | martijn | 2003-03-11 12:28:29 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/src/pluginmanager/_lcmaps_db_read.h A /trunk/lcmaps/src/pluginmanager/_lcmaps_defines.h A /trunk/lcmaps/src/pluginmanager/_lcmaps_log.h A /trunk/lcmaps/src/pluginmanager/_lcmaps_pluginmanager.h A /trunk/lcmaps/src/pluginmanager/_lcmaps_utils.h A /trunk/lcmaps/src/pluginmanager/lcmaps_db_read.c A /trunk/lcmaps/src/pluginmanager/lcmaps_log.c A /trunk/lcmaps/src/pluginmanager/lcmaps_pluginmanager.c A /trunk/lcmaps/src/pluginmanager/lcmaps_test.c A /trunk/lcmaps/src/pluginmanager/lcmaps_utils.c Added prototype pluginmanager ------------------------------------------------------------------------ r65 | martijn | 2003-03-11 12:26:45 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/lcmaps.c Main entry for edg-gatekeeper, gridftp etc. ------------------------------------------------------------------------ r64 | martijn | 2003-03-11 12:26:18 +0100 (Tue, 11 Mar 2003) | 2 lines Changed paths: M /trunk/lcmaps/src/pluginmanager/Makefile.am Added lcmaps structure ------------------------------------------------------------------------ r63 | martijn | 2003-03-03 17:39:56 +0100 (Mon, 03 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps/INSTALL A /trunk/lcmaps/LICENSE A /trunk/lcmaps/MAINTAINERS A /trunk/lcmaps/Makefile.am A /trunk/lcmaps/README A /trunk/lcmaps/autogen.sh A /trunk/lcmaps/configure.in A /trunk/lcmaps/edg-lcmaps.spec.in A /trunk/lcmaps/lcmaps_config.h.in start ------------------------------------------------------------------------ r62 | martijn | 2003-03-03 17:39:27 +0100 (Mon, 03 Mar 2003) | 2 lines Changed paths: A /trunk/lcmaps A /trunk/lcmaps/doc A /trunk/lcmaps/doc/Makefile.am A /trunk/lcmaps/etc A /trunk/lcmaps/etc/Makefile.am A /trunk/lcmaps/include A /trunk/lcmaps/include/Makefile.am A /trunk/lcmaps/modules A /trunk/lcmaps/modules/Makefile.am A /trunk/lcmaps/src A /trunk/lcmaps/src/Makefile.am A /trunk/lcmaps/src/evaluationmanager A /trunk/lcmaps/src/evaluationmanager/Makefile.am A /trunk/lcmaps/src/pluginmanager A /trunk/lcmaps/src/pluginmanager/Makefile.am A /trunk/lcmaps/src/pluginmanager/lcmaps.c Start ------------------------------------------------------------------------