pstoedit-3.62/0000755000175500010010000000000012137264547010305 500000000000000pstoedit-3.62/aclocal.m40000644000175500010010000123576112137264174012100 00000000000000# generated automatically by aclocal 1.10.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.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'.])]) # 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 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 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([], [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 # 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], [[!?.]$], [], [.]) )]) # _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) 2010 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)], [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 # _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([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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 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 -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; 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 # -------------------------- # 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\"`' else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; 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 \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$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 ;; 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 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH 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 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 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 Linux 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};"\ " /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 ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' ;; 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\ F* | *Sun*Fortran*) # 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\ 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,' ;; 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(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_flag_spec_ld, $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)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $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(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 ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_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_flag_spec_ld, $1)='+b $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_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _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 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_flag_spec_ld, $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 ;; freebsd[[12]]*) # 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 ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; 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_flag_spec_ld, $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_flag_spec_ld, $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 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_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_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 # 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 # _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], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [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], []) 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])]) # 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 ]) # 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 3294 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4]) m4_define([LT_PACKAGE_REVISION], [1.3294]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4' macro_revision='1.3294' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # 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)?$]) 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. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure 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_ifval([$2], [$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`], [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 _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [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 ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [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 .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 13 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR pstoedit-3.62/autogen.sh0000774000175500000000000000124111427617043012215 00000000000000#!/bin/sh AMVERSION=1.xxx AMVERSION=1.7 AMVERSION=local AMVERSION=1.9 AMVERSION=1.11 AMVERSION=any ACLOCALVERSION=any ACLOCAL_FLAGS=--force BINDIR=/usr/local/bin BINDIR=/usr/bin set -x echo "running libtoolize" libtoolize --force --copy echo "running aclocal" if (aclocal-$ACLOCALVERSION --version) < /dev/null > /dev/null 2>&1; then aclocal-$ACLOCALVERSION ${ACLOCAL_FLAGS} else $BINDIR/aclocal ${ACLOCAL_FLAGS} fi echo "Running autoheader -f" autoheader -f echo "running automake" if (automake-$AMVERSION --version) < /dev/null > /dev/null 2>&1; then automake-$AMVERSION -a else $BINDIR/automake -a fi echo "running autoconf" $BINDIR/autoconf pstoedit-3.62/config/0000755000175500010010000000000012137264536011550 500000000000000pstoedit-3.62/config/Makefile.am0000774000175500000000000000024010356246220013511 00000000000000EXTRA_DIST=pstoedit.pc.in pstoedit.m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA= pstoedit.pc m4datadir = $(datadir)/aclocal m4data_DATA = pstoedit.m4 pstoedit-3.62/config/Makefile.in0000644000175500010010000003000412137264203013521 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = config DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/pstoedit.pc.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = pstoedit.pc SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" m4dataDATA_INSTALL = $(INSTALL_DATA) pkgconfigDATA_INSTALL = $(INSTALL_DATA) DATA = $(m4data_DATA) $(pkgconfig_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = pstoedit.pc.in pstoedit.m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = pstoedit.pc m4datadir = $(datadir)/aclocal m4data_DATA = pstoedit.m4 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu config/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu config/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh pstoedit.pc: $(top_builddir)/config.status $(srcdir)/pstoedit.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-m4dataDATA: $(m4data_DATA) @$(NORMAL_INSTALL) test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" @list='$(m4data_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \ $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \ done uninstall-m4dataDATA: @$(NORMAL_UNINSTALL) @list='$(m4data_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ done install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-m4dataDATA 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-m4dataDATA uninstall-pkgconfigDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-m4dataDATA 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-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-m4dataDATA \ 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: pstoedit-3.62/config/pstoedit.m40000744000175500010010000001433210772753744013600 00000000000000# a macro to get the libs/cflags for libpstoedit # Copyed from gdk-pixbuf.m4 dnl AM_PATH_PSTOEDIT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) dnl Test to see if libpstoedit is installed, and define PSTOEDIT_CFLAGS, LIBS dnl AC_DEFUN([AM_PATH_PSTOEDIT], [dnl dnl Get the cflags and libraries from the pstoedit-config script dnl AC_ARG_WITH(pstoedit-prefix,[ --with-pstoedit-prefix=PFX Prefix where Pstoedit is installed (optional)], pstoedit_prefix="$withval", pstoedit_prefix="") AC_ARG_WITH(pstoedit-exec-prefix,[ --with-pstoedit-exec-prefix=PFX Exec prefix where Pstoedit is installed (optional)], pstoedit_exec_prefix="$withval", pstoedit_exec_prefix="") AC_ARG_ENABLE(pstoedittest, [ --disable-pstoedittest Do not try to compile and run a test Pstoedit program], , enable_pstoedittest=yes) if test x$pstoedit_exec_prefix != x ; then pstoedit_args="$pstoedit_args --exec_prefix=$pstoedit_exec_prefix" if test x${PSTOEDIT_CONFIG+set} != xset ; then PSTOEDIT_CONFIG=$pstoedit_exec_prefix/bin/pstoedit-config fi fi if test x$pstoedit_prefix != x ; then pstoedit_args="$pstoedit_args --prefix=$pstoedit_prefix" if test x${PSTOEDIT_CONFIG+set} != xset ; then PSTOEDIT_CONFIG=$pstoedit_prefix/bin/pstoedit-config fi fi AC_PATH_PROG(PSTOEDIT_CONFIG, pstoedit-config, no) min_pstoedit_version=ifelse([$1], ,3.32.0,$1) AC_MSG_CHECKING(for PSTOEDIT - version >= $min_pstoedit_version) no_pstoedit="" if test "$PSTOEDIT_CONFIG" = "no" ; then no_pstoedit=yes else PSTOEDIT_CFLAGS=`$PSTOEDIT_CONFIG $pstoedit_args --cflags` PSTOEDIT_LIBS=`$PSTOEDIT_CONFIG $pstoedit_args --libs` pstoedit_major_version=`$PSTOEDIT_CONFIG $pstoedit_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` pstoedit_minor_version=`$PSTOEDIT_CONFIG $pstoedit_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` pstoedit_micro_version=`$PSTOEDIT_CONFIG $pstoedit_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_pstoedittest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PSTOEDIT_CFLAGS" LIBS="$PSTOEDIT_LIBS $LIBS" dnl dnl Now check if the installed PSTOEDIT is sufficiently new. (Also sanity dnl checks the results of pstoedit-config to some extent dnl rm -f conf.pstoedittest AC_TRY_RUN([ #include #include #include #include char* my_strdup (char *str) { char *new_str; if (str) { new_str = malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main () { int major, minor, micro; char *tmp_version; system ("touch conf.pstoedittest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_pstoedit_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_pstoedit_version"); exit(1); } if (($pstoedit_major_version > major) || (($pstoedit_major_version == major) && ($pstoedit_minor_version > minor)) || (($pstoedit_major_version == major) && ($pstoedit_minor_version == minor) && ($pstoedit_micro_version >= micro))) { return 0; } else { printf("\n*** 'pstoedit-config --version' returned %d.%d.%d, but the minimum version\n", $pstoedit_major_version, $pstoedit_minor_version, $pstoedit_micro_version); printf("*** of PSTOEDIT required is %d.%d.%d. If pstoedit-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If pstoedit-config was wrong, set the environment variable PSTOEDIT_CONFIG\n"); printf("*** to point to the correct copy of pstoedit-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_pstoedit=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_pstoedit" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PSTOEDIT_CONFIG" = "no" ; then echo "*** The pstoedit-config script installed by PSTOEDIT could not be found" echo "*** If PSTOEDIT was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the PSTOEDIT_CONFIG environment variable to the" echo "*** full path to pstoedit-config." else if test -f conf.pstoedittest ; then : else echo "*** Could not run PSTOEDIT test program, checking why..." CFLAGS="$CFLAGS $PSTOEDIT_CFLAGS" LIBS="$LIBS $PSTOEDIT_LIBS" AC_TRY_LINK([ #include #include ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding PSTOEDIT or finding the wrong" echo "*** version of PSTOEDIT. If it is not finding PSTOEDIT, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means PSTOEDIT was incorrectly installed" echo "*** or that you have moved PSTOEDIT since it was installed. In the latter case, you" echo "*** may want to edit the pstoedit-config script: $PSTOEDIT_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi PSTOEDIT_CFLAGS="" PSTOEDIT_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(PSTOEDIT_CFLAGS) AC_SUBST(PSTOEDIT_LIBS) rm -f conf.pstoedittest ]) pstoedit-3.62/config/pstoedit.pc.in0000774000175500000000000000051110356252054014244 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: pstoedit Description: converts Postscript(TM) and PDF files to other vector graphic formats Version: @VERSION@.0 Requires: Libs: -L@libdir@ -lpstoedit @LIBPNG_LDFLAGS@ @CXX_STD_LIB@ @CXX_RUNTIME_LIB@ @LIBLD_LDFLAGS@ Cflags: -I@includedir@ pstoedit-3.62/config.guess0000774000175500000000000012542210315537216012542 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. timestamp='2005-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_MACHINE}" in i?86) test -z "$VENDOR" && VENDOR=pc ;; *) test -z "$VENDOR" && VENDOR=unknown ;; esac test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amd64:OpenBSD:*:*) echo x86_64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; cats:OpenBSD:*:*) echo arm-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; luna88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit 0 ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit 0 ;; *:OS400:*:*) echo powerpc-ibm-os400 exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; amd64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; cris:Linux:*:*) echo cris-axis-linux exit 0 ;; crisv32:Linux:*:*) echo crisv32-axis-linux exit 0 ;; frv:Linux:*:*) echo frv-${VENDOR}-linux exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0 ;; ppc:Linux:*:*) echo powerpc-${VENDOR}-linux exit 0 ;; ppc64:Linux:*:*) echo powerpc64-${VENDOR}-linux exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="-libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-${VENDOR}-linux${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-${VENDOR}-linux ;; PA8*) echo hppa2.0-${VENDOR}-linux ;; *) echo hppa-${VENDOR}-linux ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-${VENDOR}-linux exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux exit 0 ;; x86_64:Linux:*:*) echo x86_64-${VENDOR}-linux exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-${VENDOR}-linuxaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-${VENDOR}-linuxcoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linuxoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-${VENDOR}-linuxoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" | sed 's/linux-gnu/linux/' && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | 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 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit 0 ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms && exit 0 ;; I*) echo ia64-dec-vms && exit 0 ;; V*) echo vax-dec-vms && exit 0 ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pstoedit-3.62/config.sub0000774000175500000000000007530610315537216012212 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. timestamp='2005-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | msp430-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pstoedit-3.62/configure0000755000175500010010000224675312137264205012146 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for pstoedit 3.62. # # Report bugs to . # # # 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. ## -------------------- ## ## 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 and $0: wglunz35_AT_pstoedit.net about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: 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='pstoedit' PACKAGE_TARNAME='pstoedit' PACKAGE_VERSION='3.62' PACKAGE_STRING='pstoedit 3.62' PACKAGE_BUGREPORT='wglunz35_AT_pstoedit.net' PACKAGE_URL='' ac_unique_file="src/pstoedit.h" enable_option_checking=no # 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='LTLIBOBJS LIBOBJS CXX_RUNTIME_LIB CXX_STD_LIB SPECIAL_CXXFLAGS LDLIBS LINK HAVE_LIBPNG_FALSE HAVE_LIBPNG_TRUE LIBPNG_CFLAGS LIBPNG_LDFLAGS LIBEMF_LDFLAGS LIBEMF_CFLAGS HAVE_LIBEMF_FALSE HAVE_LIBEMF_TRUE USE_EMFBYSOURCE_FALSE USE_EMFBYSOURCE_TRUE HAVE_LIBMAGICK_FALSE HAVE_LIBMAGICK_TRUE LIBMAGICK_LDFLAGS MAGICK_CONFIG LIBMAGICK_LIBS LIBMAGICK_CFLAGS HAVE_LIBZIP_FALSE HAVE_LIBZIP_TRUE LIBPPTX_CFLAGS LIBPPTX_LDFLAGS HAVE_LIBMING_FALSE HAVE_LIBMING_TRUE LIBMING_CFLAGS LIBMING_LDFLAGS MKSTEMP_CFLAGS HAVE_LIBPLOTTER_FALSE HAVE_LIBPLOTTER_TRUE LIBPLOTTER_CFLAGS LIBPLOTTER_LDFLAGS HAVE_PLUGINSRC_FALSE HAVE_PLUGINSRC_TRUE LIBLD_LDFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG GS CXXCPP CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL OBJDUMP DLLTOOL AS host_os host_vendor host_cpu host build_os build_vendor build_cpu build YFLAGS YACC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC subdirs MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE 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_maintainer_mode enable_dependency_tracking enable_static enable_shared with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock with_emf with_magick with_libplot with_swf with_pptx with_libemf_src with_libemf_lib with_libemf_include enable_wrapper ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC YACC YFLAGS CPP CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR LIBMAGICK_CFLAGS LIBMAGICK_LIBS' ac_subdirs_all='libEMF-1.0' # 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 pstoedit 3.62 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/pstoedit] --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 pstoedit 3.62:";; 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-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-wrapper=PROGRAM Wrap (i.e. prefix) compiler invocations with PROGRAM (e.g. \"insure\" or \"purify\") Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic 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-emf enable/disable emf interface (default: enabled - use --without-emf to disable) --with-magick enable/disable magick++ interface (default: enabled - use --without-magick to disable) --with-libplot enable/disable libplot interface (default: enabled - use --without-libplot to disable) --with-swf enable/disable swf interface (default: enabled - use --without-swf to disable) --with-pptx enable/disable pptx interface (default: enabled - use --without-pptX to disable) --with-libemf-src=DIR look for libEMF src in dir (e.g. /usr/local/lib) --with-libemf-lib=DIR look for libEMF library in dir (e.g. /usr/local/lib) --with-libemf-include=DIR look for libEMF header in dir (e.g. /usr/local/include/libEMF) 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 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. CPP C preprocessor CXXCPP C++ preprocessor 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 LIBMAGICK_CFLAGS C compiler flags for LIBMAGICK, overriding pkg-config LIBMAGICK_LIBS linker flags for LIBMAGICK, 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 . _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 pstoedit configure 3.62 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. _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_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_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_cxx_try_run # ac_fn_cxx_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_cxx_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_cxx_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_cxx_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_cxx_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;} ( $as_echo "## --------------------------------------- ## ## Report this to wglunz35_AT_pstoedit.net ## ## --------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&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_cxx_check_header_mongrel 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 pstoedit $as_me 3.62, 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 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 am__api_version='1.10' 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; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $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 install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $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; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if 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 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=pstoedit VERSION=3.62 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE subdirs="$subdirs libEMF-1.0" 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=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 DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { $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='\' 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'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; 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=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 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'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; 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 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 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" # 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=no fi # 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 enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $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 AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $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_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $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_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="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 AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}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 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 ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump 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' macro_revision='1.3294' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" 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; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; 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 Linux 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_cxx_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 \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$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};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*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*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 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 -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; 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 # 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 --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # 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* 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 ' lt_prog_compiler_pic='-Xcompiler -fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; 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\ F* | *Sun*Fortran*) # 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\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; 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_flag_spec_ld= 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= hardcode_libdir_flag_spec_ld='-rpath $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 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 ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $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_flag_spec_ld='+b $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 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH 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 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 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=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 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=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 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_flag_spec_ld_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 ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; 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" ;; 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*) ;; *) 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 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH 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 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 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=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 ac_config_commands="$ac_config_commands libtool" # Only expand once: { $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 ac_config_headers="$ac_config_headers src/pstoedit_config.h" GS="" # Extract the first word of "gs", so it can be a program name with args. set dummy gs; 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_GS+:} false; then : $as_echo_n "(cached) " >&6 else case $GS in [\\/]* | ?:[\\/]*) ac_cv_path_GS="$GS" # 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_GS="$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 GS=$ac_cv_path_GS if test -n "$GS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GS" >&5 $as_echo "$GS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "${GS}"; then as_fn_error $? "** Cannot find ghostscript. If it is already installed, Check PATH." "$LINENO" 5 else GS=`echo $GS | sed -e 's/\/\//\//g'` 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no 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 if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no 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 if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes 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_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) CPPFLAGS="$CPPFLAGS -D_BIG_ENDIAN";; #( no) CPPFLAGS="$CPPFLAGS -D_LITTLE_ENDIAN" ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$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 opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$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 opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi HAVE_LD=no LIBLD_LDFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldl" >&5 $as_echo_n "checking for main in -ldl... " >&6; } if ${ac_cv_lib_dl_main+:} 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. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_dl_main=yes else ac_cv_lib_dl_main=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_main" >&5 $as_echo "$ac_cv_lib_dl_main" >&6; } if test "x$ac_cv_lib_dl_main" = xyes; then : LIBLD_LDFLAGS=-ldl fi if test -n "${LIBLD_LDFLAGS}"; then HAVE_LD=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdImageCreateFromPng in -lgd" >&5 $as_echo_n "checking for gdImageCreateFromPng in -lgd... " >&6; } if ${ac_cv_lib_gd_gdImageCreateFromPng+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $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 gdImageCreateFromPng (); int main () { return gdImageCreateFromPng (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gd_gdImageCreateFromPng=yes else ac_cv_lib_gd_gdImageCreateFromPng=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_gd_gdImageCreateFromPng" >&5 $as_echo "$ac_cv_lib_gd_gdImageCreateFromPng" >&6; } if test "x$ac_cv_lib_gd_gdImageCreateFromPng" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGD 1 _ACEOF LIBS="-lgd $LIBS" fi # Check whether --with-emf was given. if test "${with_emf+set}" = set; then : withval=$with_emf; with_emf=$withval else with_emf=yes fi # Check whether --with-magick was given. if test "${with_magick+set}" = set; then : withval=$with_magick; with_magick=$withval else with_magick=yes fi # Check whether --with-libplot was given. if test "${with_libplot+set}" = set; then : withval=$with_libplot; with_libplot=$withval else with_libplot=yes fi # Check whether --with-swf was given. if test "${with_swf+set}" = set; then : withval=$with_swf; with_swf=$withval else with_swf=yes fi # Check whether --with-pptx was given. if test "${with_pptx+set}" = set; then : withval=$with_pptx; with_pptx=$withval else with_pptx=yes fi OLD_CPPFLAGS=${CPPFLAGS} CPPFLAGS="$CPPFLAGS -DX_DISPLAY_MISSING" if test -f src/drvwwmf.cpp ; then HAVE_PLUGINSRC=true; if true; then HAVE_PLUGINSRC_TRUE= HAVE_PLUGINSRC_FALSE='#' else HAVE_PLUGINSRC_TRUE='#' HAVE_PLUGINSRC_FALSE= fi else HAVE_PLUGINSRC=false; if false; then HAVE_PLUGINSRC_TRUE= HAVE_PLUGINSRC_FALSE='#' else HAVE_PLUGINSRC_TRUE='#' HAVE_PLUGINSRC_FALSE= fi fi if test "${with_libplot}" = "yes" ; then HAVE_LIBPLOTTER=no LIBPLOTTER_LDFLAGS= LIBPLOTTER_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lplotter" >&5 $as_echo_n "checking for main in -lplotter... " >&6; } if ${ac_cv_lib_plotter_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lplotter $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_plotter_main=yes else ac_cv_lib_plotter_main=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_plotter_main" >&5 $as_echo "$ac_cv_lib_plotter_main" >&6; } if test "x$ac_cv_lib_plotter_main" = xyes; then : LIBPLOTTER_LDFLAGS=-lplotter fi ac_fn_cxx_check_header_mongrel "$LINENO" "plotter.h" "ac_cv_header_plotter_h" "$ac_includes_default" if test "x$ac_cv_header_plotter_h" = xyes; then : LIBPLOTTER_CFLAGS="-DHAVE_LIBPLOTTER" fi if test -n "${LIBPLOTTER_LDFLAGS}" && test -n "${LIBPLOTTER_CFLAGS}"; then HAVE_LIBPLOTTER=yes { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version of \"lib plot\" " >&5 $as_echo_n "checking for version of \"lib plot\" ... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include typedef int Point; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: you seem to have a compatible version " >&5 $as_echo "you seem to have a compatible version " >&6; } else LIBPLOTTER_CFLAGS="$LIBPLOTTER_CFLAGS -DOLD_LIBPLOTTER"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: you seem to have an older version - need at least version 2.3" >&5 $as_echo "you seem to have an older version - need at least version 2.3" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else LIBPLOTTER_LDFLAGS= LIBPLOTTER_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libplotter driver is disabled." >&5 $as_echo "$as_me: WARNING: ** libplotter driver is disabled." >&2;} fi if test "$HAVE_LIBPLOTTER" = yes; then HAVE_LIBPLOTTER_TRUE= HAVE_LIBPLOTTER_FALSE='#' else HAVE_LIBPLOTTER_TRUE='#' HAVE_LIBPLOTTER_FALSE= fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libplot support disabled by configure argument ." >&5 $as_echo "$as_me: WARNING: libplot support disabled by configure argument ." >&2;} if false ; then HAVE_LIBPLOTTER_TRUE= HAVE_LIBPLOTTER_FALSE='#' else HAVE_LIBPLOTTER_TRUE='#' HAVE_LIBPLOTTER_FALSE= fi fi CPPFLAGS=${OLD_CPPFLAGS} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mkstemp" >&5 $as_echo_n "checking for mkstemp... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include char buffer[] = "aaaXXXXXX"; int i = mkstemp(buffer); int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : HAVE_MKSTEMP=yes; MKSTEMP_CFLAGS="-DHAVE_MKSTEMP"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: you seem to have mkstemp " >&5 $as_echo "you seem to have mkstemp " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: you do not have mkstemp - so will try using tempnam instead" >&5 $as_echo "you do not have mkstemp - so will try using tempnam instead" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "${with_swf}" = "yes" ; then HAVE_LIBMING=no LIBMING_LDFLAGS= LIBMING_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lming" >&5 $as_echo_n "checking for main in -lming... " >&6; } if ${ac_cv_lib_ming_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lming -lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ming_main=yes else ac_cv_lib_ming_main=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_ming_main" >&5 $as_echo "$ac_cv_lib_ming_main" >&6; } if test "x$ac_cv_lib_ming_main" = xyes; then : LIBMING_LDFLAGS=-lming fi ac_fn_cxx_check_header_mongrel "$LINENO" "mingpp.h" "ac_cv_header_mingpp_h" "$ac_includes_default" if test "x$ac_cv_header_mingpp_h" = xyes; then : LIBMING_CFLAGS="-DHAVE_LIBMING" fi if test -n "${LIBMING_LDFLAGS}" && test -n "${LIBMING_CFLAGS}"; then HAVE_LIBMING=yes ac_fn_cxx_check_header_mongrel "$LINENO" "util/png2dbl.c" "ac_cv_header_util_png2dbl_c" "$ac_includes_default" if test "x$ac_cv_header_util_png2dbl_c" = xyes; then : LIBMING_CFLAGS="$LIBMING_CFLAGS -DHAVE_LIBMINGUTIL" fi else LIBMING_LDFLAGS= LIBMING_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libming driver is disabled." >&5 $as_echo "$as_me: WARNING: ** libming driver is disabled." >&2;} fi if test "$HAVE_LIBMING" = yes; then HAVE_LIBMING_TRUE= HAVE_LIBMING_FALSE='#' else HAVE_LIBMING_TRUE='#' HAVE_LIBMING_FALSE= fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swf support disabled by configure argument ." >&5 $as_echo "$as_me: WARNING: swf support disabled by configure argument ." >&2;} if false ; then HAVE_LIBMING_TRUE= HAVE_LIBMING_FALSE='#' else HAVE_LIBMING_TRUE='#' HAVE_LIBMING_FALSE= fi fi if test "${with_pptx}" = "yes" ; then HAVE_LIBZIP=no LIBPPTX_LDFLAGS= LIBPPTX_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for zip_add in -lzip" >&5 $as_echo_n "checking for zip_add in -lzip... " >&6; } if ${ac_cv_lib_zip_zip_add+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lzip -lz $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 zip_add (); int main () { return zip_add (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_zip_zip_add=yes else ac_cv_lib_zip_zip_add=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_zip_zip_add" >&5 $as_echo "$ac_cv_lib_zip_zip_add" >&6; } if test "x$ac_cv_lib_zip_zip_add" = xyes; then : LIBPPTX_LDFLAGS="-lzip -lz" fi ac_fn_cxx_check_header_mongrel "$LINENO" "zip.h" "ac_cv_header_zip_h" "$ac_includes_default" if test "x$ac_cv_header_zip_h" = xyes; then : LIBPPTX_CFLAGS="-DHAVE_LIBZIP" fi if test -n "${LIBPPTX_LDFLAGS}" && test -n "${LIBPPTX_CFLAGS}"; then HAVE_LIBZIP=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libpptx driver is enabled." >&5 $as_echo "$as_me: WARNING: ** libpptx driver is enabled." >&2;} else LIBPPTX_LDFLAGS= LIBPPTX_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libpptx driver is disabled." >&5 $as_echo "$as_me: WARNING: ** libpptx driver is disabled." >&2;} fi if test "$HAVE_LIBZIP" = yes; then HAVE_LIBZIP_TRUE= HAVE_LIBZIP_FALSE='#' else HAVE_LIBZIP_TRUE='#' HAVE_LIBZIP_FALSE= fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pptx support disabled by configure argument ." >&5 $as_echo "$as_me: WARNING: pptx support disabled by configure argument ." >&2;} if false ; then HAVE_LIBZIP_TRUE= HAVE_LIBZIP_FALSE='#' else HAVE_LIBZIP_TRUE='#' HAVE_LIBZIP_FALSE= fi fi if test "${with_magick}" = "yes" ; then HAVE_LIBMAGICK=no LIBMAGICK_CFLAGS= LIBMAGICK_LDFLAGS= PSTOEDIT_GCC_OK=yes if test "x${CC}" = xgcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc version" >&5 $as_echo_n "checking for gcc version... " >&6; } GCC_VERSION=`${CC} --version` GCC_MAJOR_VERSION=`echo $GCC_VERSION \ | sed -e "s/^\([0-9]*\)\.[0-9]*/\1/"` GCC_MINOR_VERSION=`echo $GCC_VERSION \ | sed -e "s/^[0-9]*\.\([0-9]*\)/\1/"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GCC_MAJOR_VERSION}.${GCC_MINOR_VERSION}" >&5 $as_echo "${GCC_MAJOR_VERSION}.${GCC_MINOR_VERSION}" >&6; } if test "x${GCC_MAJOR_VERSION}" = x2; then PSTOEDIT_GCC_OK=no fi fi if test "x${PSTOEDIT_GCC_OK}" = xno ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** gcc version is too old to use Magick++ in pstoedit" >&5 $as_echo "$as_me: WARNING: ** gcc version is too old to use Magick++ in pstoedit" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** gcc version >= 3 is required." >&5 $as_echo "$as_me: WARNING: ** gcc version >= 3 is required." >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libMagick++ driver is disabled." >&5 $as_echo "$as_me: WARNING: ** libMagick++ driver is disabled." >&2;} else if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking ImageMagick flags through pkg-config" >&5 $as_echo_n "checking ImageMagick flags through pkg-config... " >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBMAGICK" >&5 $as_echo_n "checking for LIBMAGICK... " >&6; } if test -n "$LIBMAGICK_CFLAGS"; then pkg_cv_LIBMAGICK_CFLAGS="$LIBMAGICK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick++\""; } >&5 ($PKG_CONFIG --exists --print-errors "ImageMagick++") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBMAGICK_CFLAGS=`$PKG_CONFIG --cflags "ImageMagick++" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBMAGICK_LIBS"; then pkg_cv_LIBMAGICK_LIBS="$LIBMAGICK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick++\""; } >&5 ($PKG_CONFIG --exists --print-errors "ImageMagick++") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBMAGICK_LIBS=`$PKG_CONFIG --libs "ImageMagick++" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then 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 LIBMAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "ImageMagick++" 2>&1` else LIBMAGICK_PKG_ERRORS=`$PKG_CONFIG --print-errors "ImageMagick++" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBMAGICK_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "trying other methods for finding ImageMagick" elif test $pkg_failed = untried; then echo "trying other methods for finding ImageMagick" else LIBMAGICK_CFLAGS=$pkg_cv_LIBMAGICK_CFLAGS LIBMAGICK_LIBS=$pkg_cv_LIBMAGICK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_LIBMAGICK=yes LIBMAGICK_CFLAGS="-DHAVE_MAGIC $LIBMAGICK_CFLAGS" LIBMAGICK_LDFLAGS="$LIBMAGICK_LIBS" fi else # Extract the first word of "Magick++-config", so it can be a program name with args. set dummy Magick++-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_MAGICK_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGICK_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_MAGICK_CONFIG="$MAGICK_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_MAGICK_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 MAGICK_CONFIG=$ac_cv_path_MAGICK_CONFIG if test -n "$MAGICK_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGICK_CONFIG" >&5 $as_echo "$MAGICK_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${MAGICK_CONFIG}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version of \"GraphicsMagick++\" " >&5 $as_echo_n "checking for version of \"GraphicsMagick++\" ... " >&6; } OLD_CPPFLAGS=${CPPFLAGS} CPPFLAGS="$CPPFLAGS `Magick++-config --cppflags`" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if MagickLibVersion >= 0x000008 int correct; #else old version of GraphicsMagick; #endif int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : MAGICKCORRECTVERSION="YES";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: you seem to have a compatible version " >&5 $as_echo "you seem to have a compatible version " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: you seem to have an older version - need at least version 1.0.6" >&5 $as_echo "you seem to have an older version - need at least version 1.0.6" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS=$OLD_CPPFLAGS if test -n "${MAGICKCORRECTVERSION}"; then HAVE_LIBMAGICK=yes LIBMAGICK_CFLAGS="-DHAVE_MAGIC `Magick++-config --cppflags`" LIBMAGICK_LDFLAGS="`Magick++-config --libs` `Magick++-config --ldflags`" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libMagick++ driver is disabled because of too old version of GraphicsMagick (need at least 1.0.6)." >&5 $as_echo "$as_me: WARNING: ** libMagick++ driver is disabled because of too old version of GraphicsMagick (need at least 1.0.6)." >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** libMagick++ driver is disabled." >&5 $as_echo "$as_me: WARNING: ** libMagick++ driver is disabled." >&2;} fi fi fi if test "$HAVE_LIBMAGICK" = yes; then HAVE_LIBMAGICK_TRUE= HAVE_LIBMAGICK_FALSE='#' else HAVE_LIBMAGICK_TRUE='#' HAVE_LIBMAGICK_FALSE= fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: magick support disabled by configure argument ." >&5 $as_echo "$as_me: WARNING: magick support disabled by configure argument ." >&2;} if false ; then HAVE_LIBMAGICK_TRUE= HAVE_LIBMAGICK_FALSE='#' else HAVE_LIBMAGICK_TRUE='#' HAVE_LIBMAGICK_FALSE= fi fi if test "${with_emf}" = "yes" ; then HAVE_LIBEMF=no LIBEMF_CFLAGS= LIBEMF_LDFLAGS= OLD_CPPFLAGS= OLD_LIBS= # Check whether --with-libemf-src was given. if test "${with_libemf_src+set}" = set; then : withval=$with_libemf_src; libemf_lib_src=$withval else libemf_lib_src= fi if test -n "${libemf_lib_src}"; then HAVE_LIBEMF=yes if true ; then USE_EMFBYSOURCE_TRUE= USE_EMFBYSOURCE_FALSE='#' else USE_EMFBYSOURCE_TRUE='#' USE_EMFBYSOURCE_FALSE= fi if true ; then HAVE_LIBEMF_TRUE= HAVE_LIBEMF_FALSE='#' else HAVE_LIBEMF_TRUE='#' HAVE_LIBEMF_FALSE= fi LIBEMF_CFLAGS="-DHAVE_LIBEMF -I${libemf_lib_src}/include -I${libemf_lib_src}/libemf -I${libemf_lib_src}/config " else if false ; then USE_EMFBYSOURCE_TRUE= USE_EMFBYSOURCE_FALSE='#' else USE_EMFBYSOURCE_TRUE='#' USE_EMFBYSOURCE_FALSE= fi # Check whether --with-libemf-lib was given. if test "${with_libemf_lib+set}" = set; then : withval=$with_libemf_lib; libemf_lib_dir=$withval else libemf_lib_dir= fi # Check whether --with-libemf-include was given. if test "${with_libemf_include+set}" = set; then : withval=$with_libemf_include; libemf_include_dir=$withval else libemf_include_dir= fi OLD_LIBS=${LIBS} if test -n "${libemf_lib_dir}"; then LIBS="-L${libemf_lib_dir} ${LIBS}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lEMF" >&5 $as_echo_n "checking for main in -lEMF... " >&6; } if ${ac_cv_lib_EMF_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lEMF -lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_EMF_main=yes else ac_cv_lib_EMF_main=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_EMF_main" >&5 $as_echo "$ac_cv_lib_EMF_main" >&6; } if test "x$ac_cv_lib_EMF_main" = xyes; then : LIBEMF_LDFLAGS="-lEMF -lm" fi if test -n "${LIBEMF_LDFLAGS}"; then if test -n "${libemf_lib_dir}"; then LIBEMF_LDFLAGS="-L${libemf_lib_dir} ${LIBEMF_LDFLAGS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** Cannot find libEMF. libEMF supports are disabled." >&5 $as_echo "$as_me: WARNING: ** Cannot find libEMF. libEMF supports are disabled." >&2;} fi LIBS=${OLD_LIBS} OLD_CPPFLAGS=${CPPFLAGS} if test -n "${libemf_include_dir}"; then CPPFLAGS="-I${libemf_include_dir} ${CPPFLAGS}" fi ac_fn_cxx_check_header_mongrel "$LINENO" "emf.h" "ac_cv_header_emf_h" "$ac_includes_default" if test "x$ac_cv_header_emf_h" = xyes; then : LIBEMF_CFLAGS="-DHAVE_LIBEMF -DOLDLIBEMF" fi ac_fn_cxx_check_header_mongrel "$LINENO" "libEMF/emf.h" "ac_cv_header_libEMF_emf_h" "$ac_includes_default" if test "x$ac_cv_header_libEMF_emf_h" = xyes; then : LIBEMF_CFLAGS="-DHAVE_LIBEMF" fi if test -n "${LIBEMF_CFLAGS}"; then if test -n "${libemf_include_dir}"; then LIBEMF_CFLAGS="-I${libemf_include_dir} ${LIBEMF_CFLAGS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** Cannot find emf.h. libEMF supports are disabled." >&5 $as_echo "$as_me: WARNING: ** Cannot find emf.h. libEMF supports are disabled." >&2;} fi CPPFLAGS=${OLD_CPPFLAGS} if test -n "${LIBEMF_LDFLAGS}" && test -n "${LIBEMF_CFLAGS}"; then HAVE_LIBEMF=yes else LIBEMF_CFLAGS= LIBEMF_LDFLAGS= fi if test "$HAVE_LIBEMF" = yes; then HAVE_LIBEMF_TRUE= HAVE_LIBEMF_FALSE='#' else HAVE_LIBEMF_TRUE='#' HAVE_LIBEMF_FALSE= fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: EMF support disabled by configure argument ." >&5 $as_echo "$as_me: WARNING: EMF support disabled by configure argument ." >&2;} if false ; then USE_EMFBYSOURCE_TRUE= USE_EMFBYSOURCE_FALSE='#' else USE_EMFBYSOURCE_TRUE='#' USE_EMFBYSOURCE_FALSE= fi if false ; then HAVE_LIBEMF_TRUE= HAVE_LIBEMF_FALSE='#' else HAVE_LIBEMF_TRUE='#' HAVE_LIBEMF_FALSE= fi fi HAVE_LIBPNG=no LIBPNG_CFLAGS= LIBPNG_LDFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking See if we have libpng and zlib" >&5 $as_echo_n "checking See if we have libpng and zlib... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int i = PNG_TRANSFORM_IDENTITY; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : HAVE_LIBPNG=yes; LIBPNG_CFLAGS="-DHAVE_LIBPNG"; LIBPNG_LDFLAGS="-lpng -lz "; { $as_echo "$as_me:${as_lineno-$LINENO}: result: you seem to have compatible version of libpng" >&5 $as_echo "you seem to have compatible version of libpng" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: you either have no libpng or an old version - 1.0.8 should be ok." >&5 $as_echo "you either have no libpng or an old version - 1.0.8 should be ok." >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$HAVE_LIBPNG" = yes; then HAVE_LIBPNG_TRUE= HAVE_LIBPNG_FALSE='#' else HAVE_LIBPNG_TRUE='#' HAVE_LIBPNG_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for built-in \"bool\" datatype" >&5 $as_echo_n "checking for built-in \"bool\" datatype... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { bool testing_bool; testing_bool=true; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : CXXFLAGS="$CXXFLAGS -DINTERNALBOOL"; { $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 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler model" >&5 $as_echo_n "checking C++ compiler model... " >&6; } if test "$GXX" = yes; then if test "$host_os" = riscos; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: GNU on RiscOS" >&5 $as_echo "GNU on RiscOS" >&6; } SPECIAL_CXXFLAGS="-Wall -Dunix -Ilibgpp: -Ilibstdc: -Ilibio:" LDLIBS="-rescan libgpp:o.libg++ libstdc:o.libstdc++ libio:o.libiostrea gcc:o.libgcc Unix:o.UnixLib" LINK=link else { $as_echo "$as_me:${as_lineno-$LINENO}: result: GNU" >&5 $as_echo "GNU" >&6; } # need to disable long long warning here because of ImageMagick using it SPECIAL_CXXFLAGS="-DBUGGYGPP -pedantic -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-long-long " fi elif test `echo "$CXX" | egrep -c 'xlC$'` -eq 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: AIX xlC" >&5 $as_echo "AIX xlC" >&6; } SPECIAL_CXXFLAGS="-D__unix__ -g -+ -I/usr/lpp/xlC/src/nihC/aixinclude" elif test `echo "$CXX" | egrep -c 'cxx$'` -eq 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: OSF/1 cxx" >&5 $as_echo "OSF/1 cxx" >&6; } SPECIAL_CXXFLAGS="-w -define_templates" elif test `echo "$CXX" | egrep -c 'CC$'` -eq 1; then if test "$host_os" = irix5.3; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Irix 5.3" >&5 $as_echo "Irix 5.3" >&6; } SPECIAL_CXXFLAGS="-O2 -mips2 -Olimit 2400" elif test "$host_os" = irix6.2; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Irix 6.2" >&5 $as_echo "Irix 6.2" >&6; } SPECIAL_CXXFLAGS="-mips3 -n32 -O2 -OPT:fold_arith_limit=2500" elif test "$host_vendor" = sun; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Sun" >&5 $as_echo "Sun" >&6; } SPECIAL_CXXFLAGS="-w" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown" >&5 $as_echo "unknown" >&6; } fi # Check whether --enable-wrapper was given. if test "${enable_wrapper+set}" = set; then : enableval=$enable_wrapper; CXX="$enableval $CXX" fi CXX_RUNTIME_LIB= CXX_STD_LIB= if test x"$GXX" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lg++" >&5 $as_echo_n "checking for main in -lg++... " >&6; } if ${ac_cv_lib_gpp_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lg++ $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gpp_main=yes else ac_cv_lib_gpp_main=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_gpp_main" >&5 $as_echo "$ac_cv_lib_gpp_main" >&6; } if test "x$ac_cv_lib_gpp_main" = xyes; then : CXX_RUNTIME_LIB=-lg++ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lstdc++" >&5 $as_echo_n "checking for main in -lstdc++... " >&6; } if ${ac_cv_lib_stdcpp_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lstdc++ ${CXX_RUNTIME_LIB} $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_stdcpp_main=yes else ac_cv_lib_stdcpp_main=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_stdcpp_main" >&5 $as_echo "$ac_cv_lib_stdcpp_main" >&6; } if test "x$ac_cv_lib_stdcpp_main" = xyes; then : CXX_STD_LIB=-lstdc++ fi fi ac_config_files="$ac_config_files Makefile src/Makefile config/Makefile config/pstoedit.pc doc/Makefile m4/Makefile examples/Makefile contrib/Makefile contrib/cairo/Makefile contrib/java/Makefile contrib/java/java1/Makefile contrib/java/java2/Makefile misc/Makefile misc/swffonts/Makefile os2/Makefile msdev/Makefile othersrc/Makefile othersrc/gsdllinc/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, 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 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PLUGINSRC_TRUE}" && test -z "${HAVE_PLUGINSRC_FALSE}"; then as_fn_error $? "conditional \"HAVE_PLUGINSRC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PLUGINSRC_TRUE}" && test -z "${HAVE_PLUGINSRC_FALSE}"; then as_fn_error $? "conditional \"HAVE_PLUGINSRC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBPLOTTER_TRUE}" && test -z "${HAVE_LIBPLOTTER_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBPLOTTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBPLOTTER_TRUE}" && test -z "${HAVE_LIBPLOTTER_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBPLOTTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBMING_TRUE}" && test -z "${HAVE_LIBMING_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBMING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBMING_TRUE}" && test -z "${HAVE_LIBMING_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBMING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBZIP_TRUE}" && test -z "${HAVE_LIBZIP_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBZIP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBZIP_TRUE}" && test -z "${HAVE_LIBZIP_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBZIP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBMAGICK_TRUE}" && test -z "${HAVE_LIBMAGICK_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBMAGICK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBMAGICK_TRUE}" && test -z "${HAVE_LIBMAGICK_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBMAGICK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_EMFBYSOURCE_TRUE}" && test -z "${USE_EMFBYSOURCE_FALSE}"; then as_fn_error $? "conditional \"USE_EMFBYSOURCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBEMF_TRUE}" && test -z "${HAVE_LIBEMF_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBEMF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_EMFBYSOURCE_TRUE}" && test -z "${USE_EMFBYSOURCE_FALSE}"; then as_fn_error $? "conditional \"USE_EMFBYSOURCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBEMF_TRUE}" && test -z "${HAVE_LIBEMF_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBEMF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_EMFBYSOURCE_TRUE}" && test -z "${USE_EMFBYSOURCE_FALSE}"; then as_fn_error $? "conditional \"USE_EMFBYSOURCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBEMF_TRUE}" && test -z "${HAVE_LIBEMF_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBEMF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBPNG_TRUE}" && test -z "${HAVE_LIBPNG_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBPNG\" 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 pstoedit $as_me 3.62, 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 ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ pstoedit config.status 3.62 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' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_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"`' 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"`' 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"`' 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"`' 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_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $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_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_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 AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ 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_flag_spec_ld \ 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_flag_spec_ld_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/pstoedit_config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/pstoedit_config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "config/Makefile") CONFIG_FILES="$CONFIG_FILES config/Makefile" ;; "config/pstoedit.pc") CONFIG_FILES="$CONFIG_FILES config/pstoedit.pc" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; "contrib/cairo/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/cairo/Makefile" ;; "contrib/java/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/java/Makefile" ;; "contrib/java/java1/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/java/java1/Makefile" ;; "contrib/java/java2/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/java/java2/Makefile" ;; "misc/Makefile") CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; "misc/swffonts/Makefile") CONFIG_FILES="$CONFIG_FILES misc/swffonts/Makefile" ;; "os2/Makefile") CONFIG_FILES="$CONFIG_FILES os2/Makefile" ;; "msdev/Makefile") CONFIG_FILES="$CONFIG_FILES msdev/Makefile" ;; "othersrc/Makefile") CONFIG_FILES="$CONFIG_FILES othersrc/Makefile" ;; "othersrc/gsdllinc/Makefile") CONFIG_FILES="$CONFIG_FILES othersrc/gsdllinc/Makefile" ;; *) 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"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010 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 # Whether or not to build static libraries. build_old_libs=$enable_static # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # 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 # 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 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 # 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 # 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 # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using 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 # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using 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 # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -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=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 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 cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done 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 pstoedit-3.62/configure.ac0000744000175500010010000003451612117152327012513 00000000000000dnl Configure a Makefile for pstoedit dnl initial version by Scott Pakin dnl Adapting automake dnl By Masatake YAMATO dnl ------------------------------------------------------------------------ dnl NOTE: I have tested this only on Linux/g++, Solaris/g++, and Solaris/CC, dnl as those are all the systems I have access to. dnl ------------------------------------------------------------------------ dnl Initialize Autoconf. AC_INIT(pstoedit,3.62,wglunz35_AT_pstoedit.net) AC_LANG(C++) dnl AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE(pstoedit,3.62) AM_MAINTAINER_MODE AC_CONFIG_SRCDIR([src/pstoedit.h]) AC_CONFIG_SUBDIRS(libEMF-1.0) AC_CONFIG_MACRO_DIR([m4]) dnl libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and dnl libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree. dnl libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am. dnl We need only C++ and no other language dnl seems to be broken : AC_LIBTOOL_TAGS([CXX]) dnl Check for various programs the Makefile needs. AC_PROG_CC AC_PROG_CXX AC_PROG_AWK AC_PROG_YACC AC_PROG_INSTALL dnl there is not need to build the static libs if shared libs are available AC_DISABLE_STATIC dnl yes, we are sure to have clean DLLs under cygwin AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL AC_PROG_MAKE_SET AC_CONFIG_HEADER(src/pstoedit_config.h) dnl Check file command dnl FILECMD="" dnl AC_PATH_PROG(FILECMD,file) dnl if test -z "${FILECMD}"; then dnl AC_MSG_ERROR([** Cannot find file command which is needed for libtool. Please install. ]) dnl exit 1 dnl fi dnl Check Ghostscript GS="" AC_PATH_PROG(GS,gs) if test -z "${GS}"; then AC_MSG_ERROR([** Cannot find ghostscript. If it is already installed, Check PATH.]) else dnl Strip off // to / that causes troubles. GS=`echo $GS | sed -e 's/\/\//\//g'` fi PKG_PROG_PKG_CONFIG AC_C_BIGENDIAN([CPPFLAGS="$CPPFLAGS -D_BIG_ENDIAN"], [CPPFLAGS="$CPPFLAGS -D_LITTLE_ENDIAN"]) dnl check for directory handling AC_HEADER_DIRENT dnl dnl Look for various optional libraries. dnl dnl TODO: These should be replaced by ltdl. HAVE_LD=no LIBLD_LDFLAGS= AC_CHECK_LIB(dl,main,[LIBLD_LDFLAGS=-ldl]) if test -n "${LIBLD_LDFLAGS}"; then HAVE_LD=yes fi AC_SUBST(LIBLD_LDFLAGS) AC_CHECK_LIB([gd],[gdImageCreateFromPng]) dnl some optional packages - default is to check automatically dnl but the check can be disabled using --without-PACKAGE dnl legal PACKAGE names are: dnl emf, magick, libplot, swf AC_ARG_WITH(emf, [ --with-emf enable/disable emf interface (default: enabled - use --without-emf to disable)], with_emf=$withval, with_emf=yes) AC_ARG_WITH(magick, [ --with-magick enable/disable magick++ interface (default: enabled - use --without-magick to disable)], with_magick=$withval, with_magick=yes) AC_ARG_WITH(libplot, [ --with-libplot enable/disable libplot interface (default: enabled - use --without-libplot to disable)], with_libplot=$withval, with_libplot=yes) AC_ARG_WITH(swf, [ --with-swf enable/disable swf interface (default: enabled - use --without-swf to disable)], with_swf=$withval, with_swf=yes) AC_ARG_WITH(pptx, [ --with-pptx enable/disable pptx interface (default: enabled - use --without-pptX to disable)], with_pptx=$withval, with_pptx=yes) OLD_CPPFLAGS=${CPPFLAGS} CPPFLAGS="$CPPFLAGS -DX_DISPLAY_MISSING" if test -f src/drvwwmf.cpp ; then HAVE_PLUGINSRC=true; AM_CONDITIONAL(HAVE_PLUGINSRC, true) else HAVE_PLUGINSRC=false; AM_CONDITIONAL(HAVE_PLUGINSRC, false) fi if test "${with_libplot}" = "yes" ; then dnl dnl Driver::libplotter dnl HAVE_LIBPLOTTER=no LIBPLOTTER_LDFLAGS= LIBPLOTTER_CFLAGS= dnl AC_CHECK_LIB(plotter,main, dnl [LIBPLOTTER_LDFLAGS=-lplotter],,-lstdc++) AC_CHECK_LIB(plotter,main, [LIBPLOTTER_LDFLAGS=-lplotter]) AC_CHECK_HEADER(plotter.h, [LIBPLOTTER_CFLAGS="-DHAVE_LIBPLOTTER"]) if test -n "${LIBPLOTTER_LDFLAGS}" && test -n "${LIBPLOTTER_CFLAGS}"; then HAVE_LIBPLOTTER=yes AC_MSG_CHECKING(for version of "lib plot" ) dnl See if we have a 2.3 or newer lib Plot version AC_TRY_COMPILE( [ #include typedef int Point; ],[ ], AC_MSG_RESULT(you seem to have a compatible version ), [LIBPLOTTER_CFLAGS="$LIBPLOTTER_CFLAGS -DOLD_LIBPLOTTER"; AC_MSG_RESULT(you seem to have an older version - need at least version 2.3)]) else LIBPLOTTER_LDFLAGS= LIBPLOTTER_CFLAGS= AC_MSG_WARN([** libplotter driver is disabled.]) fi AC_SUBST(LIBPLOTTER_LDFLAGS) AC_SUBST(LIBPLOTTER_CFLAGS) AM_CONDITIONAL(HAVE_LIBPLOTTER, test "$HAVE_LIBPLOTTER" = yes) else AC_MSG_WARN([libplot support disabled by configure argument .]) AM_CONDITIONAL(HAVE_LIBPLOTTER, false ) fi CPPFLAGS=${OLD_CPPFLAGS} AC_MSG_CHECKING(for mkstemp) AC_TRY_COMPILE( [#include char buffer[] = "aaaXXXXXX"; int i = mkstemp(buffer); ],[ ], [HAVE_MKSTEMP=yes; MKSTEMP_CFLAGS="-DHAVE_MKSTEMP"; AC_MSG_RESULT(you seem to have mkstemp )], [AC_MSG_RESULT(you do not have mkstemp - so will try using tempnam instead)]) AC_SUBST(MKSTEMP_CFLAGS) if test "${with_swf}" = "yes" ; then dnl dnl Driver::libming dnl HAVE_LIBMING=no LIBMING_LDFLAGS= LIBMING_CFLAGS= dnl If mingpp.h is found, use it. AC_CHECK_LIB(ming,main, [LIBMING_LDFLAGS=-lming],,-lm) AC_CHECK_HEADER(mingpp.h, [LIBMING_CFLAGS="-DHAVE_LIBMING"]) if test -n "${LIBMING_LDFLAGS}" && test -n "${LIBMING_CFLAGS}"; then HAVE_LIBMING=yes AC_CHECK_HEADER(util/png2dbl.c,[LIBMING_CFLAGS="$LIBMING_CFLAGS -DHAVE_LIBMINGUTIL"]) else LIBMING_LDFLAGS= LIBMING_CFLAGS= AC_MSG_WARN([** libming driver is disabled.]) fi AC_SUBST(LIBMING_LDFLAGS) AC_SUBST(LIBMING_CFLAGS) AM_CONDITIONAL(HAVE_LIBMING, test "$HAVE_LIBMING" = yes) else AC_MSG_WARN([swf support disabled by configure argument .]) AM_CONDITIONAL(HAVE_LIBMING, false ) fi if test "${with_pptx}" = "yes" ; then dnl dnl Driver::libpptx dnl HAVE_LIBZIP=no LIBPPTX_LDFLAGS= LIBPPTX_CFLAGS= dnl If zip.h is found, use it. AC_CHECK_LIB(zip,zip_add, [LIBPPTX_LDFLAGS="-lzip -lz"],,-lz) AC_CHECK_HEADER(zip.h, [LIBPPTX_CFLAGS="-DHAVE_LIBZIP"]) if test -n "${LIBPPTX_LDFLAGS}" && test -n "${LIBPPTX_CFLAGS}"; then HAVE_LIBZIP=yes AC_MSG_WARN([** libpptx driver is enabled.]) else LIBPPTX_LDFLAGS= LIBPPTX_CFLAGS= AC_MSG_WARN([** libpptx driver is disabled.]) fi AC_SUBST(LIBPPTX_LDFLAGS) AC_SUBST(LIBPPTX_CFLAGS) AM_CONDITIONAL(HAVE_LIBZIP, test "$HAVE_LIBZIP" = yes) else AC_MSG_WARN([pptx support disabled by configure argument .]) AM_CONDITIONAL(HAVE_LIBZIP, false ) fi if test "${with_magick}" = "yes" ; then dnl dnl Driver::libmagick++ dnl If Magick++.h is found, use it. dnl HAVE_LIBMAGICK=no LIBMAGICK_CFLAGS= LIBMAGICK_LDFLAGS= PSTOEDIT_GCC_OK=yes if test "x${CC}" = xgcc; then AC_MSG_CHECKING(for gcc version) GCC_VERSION=`${CC} --version` changequote(,)dnl GCC_MAJOR_VERSION=`echo $GCC_VERSION \ | sed -e "s/^\([0-9]*\)\.[0-9]*/\1/"` GCC_MINOR_VERSION=`echo $GCC_VERSION \ | sed -e "s/^[0-9]*\.\([0-9]*\)/\1/"` changequote([,])dnl AC_MSG_RESULT([${GCC_MAJOR_VERSION}.${GCC_MINOR_VERSION}]) if test "x${GCC_MAJOR_VERSION}" = x2; then PSTOEDIT_GCC_OK=no fi fi if test "x${PSTOEDIT_GCC_OK}" = xno ; then AC_MSG_WARN([** gcc version is too old to use Magick++ in pstoedit]) AC_MSG_WARN([** gcc version >= 3 is required.]) AC_MSG_WARN([** libMagick++ driver is disabled.]) else if test -n "$PKG_CONFIG"; then AC_MSG_CHECKING(ImageMagick flags through pkg-config) PKG_CHECK_MODULES(LIBMAGICK, ImageMagick++, HAVE_LIBMAGICK=yes LIBMAGICK_CFLAGS="-DHAVE_MAGIC $LIBMAGICK_CFLAGS" LIBMAGICK_LDFLAGS="$LIBMAGICK_LIBS" , echo "trying other methods for finding ImageMagick") else AC_PATH_PROG(MAGICK_CONFIG, Magick++-config) if test -n "${MAGICK_CONFIG}"; then AC_MSG_CHECKING(for version of "GraphicsMagick++" ) dnl See if we have a 1.0.6 or newer version OLD_CPPFLAGS=${CPPFLAGS} CPPFLAGS="$CPPFLAGS `Magick++-config --cppflags`" AC_TRY_COMPILE( [#include #if MagickLibVersion >= 0x000008 int correct; #else old version of GraphicsMagick; #endif ],[ ], MAGICKCORRECTVERSION="YES";AC_MSG_RESULT(you seem to have a compatible version ), [AC_MSG_RESULT(you seem to have an older version - need at least version 1.0.6)]) CPPFLAGS=$OLD_CPPFLAGS if test -n "${MAGICKCORRECTVERSION}"; then HAVE_LIBMAGICK=yes LIBMAGICK_CFLAGS="-DHAVE_MAGIC `Magick++-config --cppflags`" LIBMAGICK_LDFLAGS="`Magick++-config --libs` `Magick++-config --ldflags`" else AC_MSG_WARN([** libMagick++ driver is disabled because of too old version of GraphicsMagick (need at least 1.0.6).]) fi else AC_MSG_WARN([** libMagick++ driver is disabled.]) fi fi fi AC_SUBST(LIBMAGICK_CFLAGS) AC_SUBST(LIBMAGICK_LDFLAGS) AM_CONDITIONAL(HAVE_LIBMAGICK, test "$HAVE_LIBMAGICK" = yes) else AC_MSG_WARN([magick support disabled by configure argument .]) AM_CONDITIONAL(HAVE_LIBMAGICK, false ) fi if test "${with_emf}" = "yes" ; then dnl dnl Driver::libEMF dnl Check for EMF support library dnl HAVE_LIBEMF=no LIBEMF_CFLAGS= LIBEMF_LDFLAGS= OLD_CPPFLAGS= OLD_LIBS= AC_ARG_WITH(libemf-src, [ --with-libemf-src=DIR look for libEMF src in dir (e.g. /usr/local/lib)], libemf_lib_src=$withval, libemf_lib_src=) if test -n "${libemf_lib_src}"; then dnl use libemf source directly HAVE_LIBEMF=yes AM_CONDITIONAL(USE_EMFBYSOURCE, true ) AM_CONDITIONAL(HAVE_LIBEMF, true ) LIBEMF_CFLAGS="-DHAVE_LIBEMF -I${libemf_lib_src}/include -I${libemf_lib_src}/libemf -I${libemf_lib_src}/config " AC_SUBST(LIBEMF_CFLAGS) else AM_CONDITIONAL(USE_EMFBYSOURCE, false ) AC_ARG_WITH(libemf-lib, [ --with-libemf-lib=DIR look for libEMF library in dir (e.g. /usr/local/lib)], libemf_lib_dir=$withval, libemf_lib_dir=) AC_ARG_WITH(libemf-include, [ --with-libemf-include=DIR look for libEMF header in dir (e.g. /usr/local/include/libEMF)], libemf_include_dir=$withval, libemf_include_dir=) OLD_LIBS=${LIBS} if test -n "${libemf_lib_dir}"; then LIBS="-L${libemf_lib_dir} ${LIBS}" fi AC_CHECK_LIB(EMF,main, [LIBEMF_LDFLAGS="-lEMF -lm"],,-lm) if test -n "${LIBEMF_LDFLAGS}"; then if test -n "${libemf_lib_dir}"; then LIBEMF_LDFLAGS="-L${libemf_lib_dir} ${LIBEMF_LDFLAGS}" fi else AC_MSG_WARN([** Cannot find libEMF. libEMF supports are disabled.]) fi LIBS=${OLD_LIBS} OLD_CPPFLAGS=${CPPFLAGS} if test -n "${libemf_include_dir}"; then CPPFLAGS="-I${libemf_include_dir} ${CPPFLAGS}" fi AC_CHECK_HEADER(emf.h, [LIBEMF_CFLAGS="-DHAVE_LIBEMF -DOLDLIBEMF"]) AC_CHECK_HEADER(libEMF/emf.h, [LIBEMF_CFLAGS="-DHAVE_LIBEMF"]) if test -n "${LIBEMF_CFLAGS}"; then if test -n "${libemf_include_dir}"; then LIBEMF_CFLAGS="-I${libemf_include_dir} ${LIBEMF_CFLAGS}" fi else AC_MSG_WARN([** Cannot find emf.h. libEMF supports are disabled.]) fi CPPFLAGS=${OLD_CPPFLAGS} if test -n "${LIBEMF_LDFLAGS}" && test -n "${LIBEMF_CFLAGS}"; then HAVE_LIBEMF=yes else LIBEMF_CFLAGS= LIBEMF_LDFLAGS= fi AC_SUBST(LIBEMF_LDFLAGS) AC_SUBST(LIBEMF_CFLAGS) AM_CONDITIONAL(HAVE_LIBEMF, test "$HAVE_LIBEMF" = yes) fi else AC_MSG_WARN([EMF support disabled by configure argument .]) AM_CONDITIONAL(USE_EMFBYSOURCE, false ) AM_CONDITIONAL(HAVE_LIBEMF, false ) fi dnl dnl PNG and Zlib dnl HAVE_LIBPNG=no LIBPNG_CFLAGS= LIBPNG_LDFLAGS= AC_MSG_CHECKING(See if we have libpng and zlib) AC_TRY_COMPILE( [#include int i = PNG_TRANSFORM_IDENTITY; ],[ ], [HAVE_LIBPNG=yes; LIBPNG_CFLAGS="-DHAVE_LIBPNG"; LIBPNG_LDFLAGS="-lpng -lz "; AC_MSG_RESULT(you seem to have compatible version of libpng)], [AC_MSG_RESULT(you either have no libpng or an old version - 1.0.8 should be ok.)]) AC_SUBST(LIBPNG_LDFLAGS) AC_SUBST(LIBPNG_CFLAGS) AM_CONDITIONAL(HAVE_LIBPNG, test "$HAVE_LIBPNG" = yes) dnl dnl C++ compiler related checking dnl dnl See if we need to define a "bool" type. AC_MSG_CHECKING(for built-in "bool" datatype) AC_TRY_COMPILE(,[bool testing_bool; testing_bool=true;], [CXXFLAGS="$CXXFLAGS -DINTERNALBOOL"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) dnl Add extra, platform-specific, C++ compiler options. AC_MSG_CHECKING(C++ compiler model) if test "$GXX" = yes; then if test "$host_os" = riscos; then AC_MSG_RESULT([GNU on RiscOS]) SPECIAL_CXXFLAGS="-Wall -Dunix -Ilibgpp: -Ilibstdc: -Ilibio:" LDLIBS="-rescan libgpp:o.libg++ libstdc:o.libstdc++ libio:o.libiostrea gcc:o.libgcc Unix:o.UnixLib" LINK=link AC_SUBST(LINK) AC_SUBST(LDLIBS) else AC_MSG_RESULT([GNU]) # need to disable long long warning here because of ImageMagick using it SPECIAL_CXXFLAGS="-DBUGGYGPP -pedantic -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-long-long " fi elif test `echo "$CXX" | egrep -c 'xlC$'` -eq 1; then AC_MSG_RESULT([AIX xlC]) SPECIAL_CXXFLAGS="-D__unix__ -g -+ -I/usr/lpp/xlC/src/nihC/aixinclude" elif test `echo "$CXX" | egrep -c 'cxx$'` -eq 1; then AC_MSG_RESULT([OSF/1 cxx]) SPECIAL_CXXFLAGS="-w -define_templates" elif test `echo "$CXX" | egrep -c 'CC$'` -eq 1; then if test "$host_os" = irix5.3; then AC_MSG_RESULT([Irix 5.3]) SPECIAL_CXXFLAGS="-O2 -mips2 -Olimit 2400" elif test "$host_os" = irix6.2; then AC_MSG_RESULT([Irix 6.2]) SPECIAL_CXXFLAGS="-mips3 -n32 -O2 -OPT:fold_arith_limit=2500" elif test "$host_vendor" = sun; then AC_MSG_RESULT([Sun]) SPECIAL_CXXFLAGS="-w" fi else AC_MSG_RESULT(unknown) fi AC_ARG_ENABLE(wrapper, [ --enable-wrapper=PROGRAM Wrap (i.e. prefix) compiler invocations with PROGRAM (e.g. \"insure\" or \"purify\")], [CXX="$enableval $CXX"]) AC_SUBST(SPECIAL_CXXFLAGS) dnl dnl Standard C++ library and C++ Runtime dnl CXX_RUNTIME_LIB= CXX_STD_LIB= if test x"$GXX" = xyes; then AC_CHECK_LIB(g++,main,CXX_RUNTIME_LIB=-lg++) AC_CHECK_LIB(stdc++,main,CXX_STD_LIB=-lstdc++,,${CXX_RUNTIME_LIB}) fi AC_SUBST(CXX_STD_LIB) AC_SUBST(CXX_RUNTIME_LIB) dnl Write the resulting Makefile. AC_CONFIG_FILES([Makefile src/Makefile config/Makefile config/pstoedit.pc doc/Makefile m4/Makefile examples/Makefile contrib/Makefile contrib/cairo/Makefile contrib/java/Makefile contrib/java/java1/Makefile contrib/java/java2/Makefile misc/Makefile misc/swffonts/Makefile os2/Makefile msdev/Makefile othersrc/Makefile othersrc/gsdllinc/Makefile], []) AC_OUTPUT pstoedit-3.62/contrib/0000755000175500010010000000000012137264541011737 500000000000000pstoedit-3.62/contrib/cairo/0000755000175500010010000000000012137264541013034 500000000000000pstoedit-3.62/contrib/cairo/cairo-example.c0000744000175500010010000001001711143203312015627 00000000000000/* This file is part of pstoedit Copyright (C) 2009 Dan McMahill dan_AT_mcmahill_DOT_net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * This is a toy example of rendering an image with cairo. * * To use the example, run * * pstoedit -f somefile.ps sample.c * * to generate the C code file "sample.c" * * Now compile the program with: * * gcc -g -Wall -O2 `pkg-config --cflags cairo cairo-pdf cairo-xlib` -c sample.c * gcc -g -Wall -O2 `pkg-config --cflags cairo cairo-pdf cairo-xlib` -c test.c * gcc -g -Wall -O2 -o testprog test.o sample.o `pkg-config --libs cairo cairo-pdf cairo-xlib` */ #include #include #include #include #include #include #include /* * here "myfig" is the default for the cairo driver * "myfig" could have been changed to something else by using * * pstoedit -f "cairo: -funcname othername" somefile.ps sample.c * * when running pstoedit */ #include "sample.h" void do_xlib(void) { Display *dpy; Window rootwin; Window win; XEvent e; int scr; cairo_surface_t *cs; int i; char tmps[128]; if(!(dpy = XOpenDisplay(NULL))) { fprintf(stderr, "ERROR: Could not open display\n"); exit(1); } scr = DefaultScreen(dpy); rootwin = RootWindow(dpy, scr); win = XCreateSimpleWindow(dpy, rootwin, 1, 1, myfig_width[0], myfig_height[0], 0, WhitePixel(dpy, scr), WhitePixel(dpy, scr)); XStoreName(dpy, win, "pstoedit -- cairo driver"); XSelectInput(dpy, win, ExposureMask|ButtonPressMask); XMapWindow(dpy, win); cs = cairo_xlib_surface_create(dpy, win, DefaultVisual(dpy, 0), myfig_width[0], myfig_height[0]); for (i = 0 ; i < myfig_total_pages ; i++) { printf ("Xlib rendering page #%d of %d (%d x %d)\n", i+1, myfig_total_pages, myfig_width[i], myfig_height[i]); XResizeWindow(dpy, win, myfig_width[i], myfig_height[i]); sprintf(tmps, "pstoedit/cairo page %d of %d", i+1, myfig_total_pages); XStoreName(dpy, win, tmps); cairo_xlib_surface_set_size (cs, myfig_width[i], myfig_height[i]); while(1) { XNextEvent(dpy, &e); if(e.type==Expose && e.xexpose.count<1) { myfig_render[i](cs, NULL); } else if(e.type==ButtonPress) break; } } cairo_surface_destroy(cs); XCloseDisplay(dpy); } void do_pdf(void) { cairo_surface_t *cs; cairo_t *cr; int i; /* We will resize the pages later */ printf ("Creating initial cairo PDF surface with dimensions %d x %d\n", myfig_width[0], myfig_height[0]); cs = cairo_pdf_surface_create("test.pdf", myfig_width[0], myfig_height[0]); for (i = 0 ; i < myfig_total_pages ; i++) { printf ("PDF rendering page #%d of %d (%d x %d)\n", i+1, myfig_total_pages, myfig_width[i], myfig_height[i]); /* * Note: If you have older versions of cairo (1.4.10 and older I * believe) then this set_size screws up the y size some. */ cairo_pdf_surface_set_size (cs, myfig_width[i], myfig_height[i]); cr = myfig_render[i](cs, NULL); cairo_show_page(cr); cairo_destroy(cr); cairo_surface_flush(cs); } cairo_surface_flush(cs); cairo_surface_destroy(cs); } int main(int argc, char *argv[]) { myfig_init(); do_pdf(); do_xlib(); return 0; } pstoedit-3.62/contrib/cairo/cairo-example.mk0000744000175500010010000000275211143203416016030 00000000000000# This file is part of pstoedit # # Copyright (C) 2009 Dan McMahill dan_AT_mcmahill_DOT_net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # This is a simple makefile for building a small example script which # demonstrates the use of the cairo driver for pstoedit. CFLAGS= -Wall `pkg-config --cflags cairo cairo-pdf cairo-xlib pangocairo` LDFLAGS=`pkg-config --libs cairo cairo-pdf cairo-xlib pangocairo` default: cairo-example cairo-example : sample.o cairo-example.o $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) cairo-example.o sample.o $(LDFLAGS) cairo-example.o : cairo-example.c $(CC) -c $(CFLAGS) $(CPPFLAGS) cairo-example.c sample.o: sample.c $(CC) -c $(CFLAGS) $(CPPFLAGS) sample.c sample.c : sample.eps pstoedit libp2edrvstd.la ./pstoedit -f "cairo: -header sample.h" sample.eps sample.c pstoedit-3.62/contrib/cairo/Makefile.am0000744000175500010010000000010311161501725014775 00000000000000EXTRA_DIST= cairo-example.mk cairo-example.c sample.eps readme.txt pstoedit-3.62/contrib/cairo/Makefile.in0000644000175500010010000002352712137264203015025 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib/cairo DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = cairo-example.mk cairo-example.c sample.eps readme.txt all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/cairo/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/cairo/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/contrib/cairo/readme.txt0000744000175500010010000000063011161501714014742 00000000000000THis directory contains an example EPS file along with a sample C program and makefile. These are related to the cairo backend of pstoedit. After building pstoedit, you can do make -f cairo-example.mk and it should call pstoedit to produce cairo code and then it compiles it along with a simple top level program that will render the image both to X11 as well as to a PDF file. Dan McMahillpstoedit-3.62/contrib/cairo/sample.eps0000744000175500010010000006611011143202160014734 00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: -1 376 469 739 %%Title: sample %%CreationDate: Fri Feb 6 22:48:00 2009 %%Creator: Tgif-4.1.45 written by William Chia-Wei Cheng (bill.cheng@acm.org) %%ProducedBy: (unknown) %%Pages: 1 %%DocumentFonts: (atend) %%EndComments %%BeginProlog /tgifdict 91 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /tgifpatdict 10 dict def /tgifpatbyte { currentdict /retstr get exch pat i cellsz mod get put } def /tgifpatproc { 0 1 widthlim {tgifpatbyte} for retstr /i i 1 add def } def /TGPF % tgifpatfill { tgifpatdict begin /h exch def /w exch def /lty exch def /ltx exch def /cellsz exch def /pat exch def /widthlim w cellsz div cvi 1 sub def /retstr widthlim 1 add string def /i 0 def tgiforigctm setmatrix ltx lty translate w h true [1 0 0 1 0 0] {tgifpatproc} imagemask ltx neg lty neg translate end } def /pat3 <8000000008000000> def /pat4 <8800000022000000> def /pat5 <8800220088002200> def /pat6 <8822882288228822> def /pat7 def /pat8 <77dd77dd77dd77dd> def /pat9 <77ffddff77ffddff> def /pat10 <77ffffff77ffffff> def /pat11 <7fffffff7fffffff> def /pat12 <8040200002040800> def /pat13 <40a00000040a0000> def /pat14 def /pat15 def /pat16 def /pat17 <038448300c020101> def /pat18 <081c22c180010204> def /pat19 <8080413e080814e3> def /pat20 <8040201008040201> def /pat21 <8844221188442211> def /pat22 <77bbddee77bbddee> def /pat23 def /pat24 <7fbfdfeff7fbfdfe> def /pat25 <3e1f8fc7e3f1f87c> def /pat26 <0102040810204080> def /pat27 <1122448811224488> def /pat28 def /pat29 <83070e1c3870e0c1> def /pat30 def /pat31 <7cf8f1e3c78f1f3e> def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end %%EndProlog %%Page: 1 1 %%PageBoundingBox: -1 376 469 739 tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 64 293 M GS 1.000 0.000 0.000 RG /Times-Bold FF [14 0 0 -14 0 0] MS (RED) SH GR GR % TEXT NP 0 SG GS 1 W 64 333 M GS 0.000 1.000 0.000 RG /Times-Bold FF [14 0 0 -14 0 0] MS (GREEN) SH GR GR % TEXT NP 0 SG GS 1 W 64 381 M GS 0.000 0.000 1.000 RG /Times-Bold FF [14 0 0 -14 0 0] MS (BLUE) SH GR GR % BOX 1.000 0.000 0.000 RG NP 184 276 M 280 276 L 280 300 L 184 300 L CP 1 SG F 1.000 0.000 0.000 RG GS 10 SM GS NP 184 276 M 280 276 L 280 300 L 184 300 L CP 2 W S GR GR % BOX 0.000 1.000 0.000 RG NP 184 316 M 280 316 L 280 340 L 184 340 L CP 1 SG F 0.000 1.000 0.000 RG GS 10 SM GS NP 184 316 M 280 316 L 280 340 L 184 340 L CP 2 W S GR GR % BOX 0.000 0.000 1.000 RG NP 184 356 M 280 356 L 280 380 L 184 380 L CP 1 SG F 0.000 0.000 1.000 RG GS 10 SM GS NP 184 356 M 280 356 L 280 380 L 184 380 L CP 2 W S GR GR % BOX 1.000 0.000 0.000 RG NP 304 276 M 400 276 L 400 300 L 304 300 L CP F GS 10 SM GS NP 304 276 M 400 276 L 400 300 L 304 300 L CP 2 W S GR GR % BOX 0.000 1.000 0.000 RG NP 304 316 M 400 316 L 400 340 L 304 340 L CP F GS 10 SM GS NP 304 316 M 400 316 L 400 340 L 304 340 L CP 2 W S GR GR % BOX 0.000 0.000 1.000 RG NP 304 356 M 400 356 L 400 380 L 304 380 L CP F GS 10 SM GS NP 304 356 M 400 356 L 400 380 L 304 380 L CP 2 W S GR GR % TEXT NP 0 SG GS 63 434 TR [0.707 0.707 -0.707 0.707 14 -34] CO 63 NE 434 NE TR GR GS 1 W 63 434 TR [0.707 0.707 -0.707 0.707 14 -34] CO 0 14 M GS 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (45 Degree Text) SH GR GR % BOX 0 SG NP 72 156 M 280 156 L 280 244 L 72 244 L CP F GS 10 SM GS NP 72 156 M 280 156 L 280 244 L 72 244 L CP 2 W S GR GR % BOX 0 SG NP 64 148 M 272 148 L 272 236 L 64 236 L CP 1 SG F 0 SG GS 10 SM GS NP 64 148 M 272 148 L 272 236 L 64 236 L CP 2 W S GR GR % TEXT NP 0 SG GS 1 W 72 164 M GS 0 SG /Times-Roman FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees) SH GR GR % TEXT NP 0 SG GS 1 W 72 196 M GS 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,Bold) SH GR GR % TEXT NP 0 SG GS 1 W 72 228 M GS 0 SG /Times-BoldItalic FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,BoldItalic) SH GR GR % TEXT NP 0 SG GS 1 W 72 140 M GS 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (LEFT JUSTIFIED) SH GR GR % BOX 0 SG NP 304 156 M 512 156 L 512 244 L 304 244 L CP F GS 10 SM GS NP 304 156 M 512 156 L 512 244 L 304 244 L CP 2 W S GR GR % BOX 0 SG NP 296 148 M 504 148 L 504 236 L 296 236 L CP 1 SG F 0 SG GS 10 SM GS NP 296 148 M 504 148 L 504 236 L 296 236 L CP 2 W S GR GR % TEXT NP 0 SG GS 1 W 400 164 M GS GS 0 /Times-Roman FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees) TGSW AD GR 2 DI NE 0 RM 0 SG /Times-Roman FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees) SH GR GR % TEXT NP 0 SG GS 1 W 400 196 M GS GS 0 /Times-Bold FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,Bold) TGSW AD GR 2 DI NE 0 RM 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,Bold) SH GR GR % TEXT NP 0 SG GS 1 W 400 228 M GS GS 0 /Times-BoldItalic FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,BoldItalic) TGSW AD GR 2 DI NE 0 RM 0 SG /Times-BoldItalic FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,BoldItalic) SH GR GR % TEXT NP 0 SG GS 1 W 400 140 M GS GS 0 /Times-Bold FF [14 0 0 -14 0 0] MS (CENTER JUSTIFIED) TGSW AD GR 2 DI NE 0 RM 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (CENTER JUSTIFIED) SH GR GR % BOX 0 SG NP 536 156 M 744 156 L 744 244 L 536 244 L CP F GS 10 SM GS NP 536 156 M 744 156 L 744 244 L 536 244 L CP 2 W S GR GR % BOX 0 SG NP 528 148 M 736 148 L 736 236 L 528 236 L CP 1 SG F 0 SG GS 10 SM GS NP 528 148 M 736 148 L 736 236 L 528 236 L CP 2 W S GR GR % TEXT NP 0 SG GS 1 W 728 164 M GS GS 0 /Times-Roman FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees) TGSW AD GR NE 0 RM 0 SG /Times-Roman FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees) SH GR GR % TEXT NP 0 SG GS 1 W 728 196 M GS GS 0 /Times-Bold FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,Bold) TGSW AD GR NE 0 RM 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,Bold) SH GR GR % TEXT NP 0 SG GS 1 W 728 228 M GS GS 0 /Times-BoldItalic FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,BoldItalic) TGSW AD GR NE 0 RM 0 SG /Times-BoldItalic FF [14 0 0 -14 0 0] MS (Time Font, 0 Degrees,BoldItalic) SH GR GR % TEXT NP 0 SG GS 1 W 728 140 M GS GS 0 /Times-Bold FF [14 0 0 -14 0 0] MS (RIGHT JUSTIFIED) TGSW AD GR NE 0 RM 0 SG /Times-Bold FF [14 0 0 -14 0 0] MS (RIGHT JUSTIFIED) SH GR GR % RCBOX 0.184 0.310 0.310 RG GS GS NP 512 292 M 528 292 528 340 16 AR 528 324 L 528 340 464 340 16 AR 480 340 L 464 340 464 292 16 AR 464 308 L 464 292 528 292 16 AR CP 2 W S GR GR % BOX 0.000 1.000 1.000 RG NP 496 316 M 552 316 L 552 364 L 496 364 L CP F GS 10 SM GS NP 496 316 M 552 316 L 552 364 L 496 364 L CP 2 W S GR GR % RCBOX 0.184 0.310 0.310 RG NP 560 340 M 576 340 576 388 16 AR 576 372 L 576 388 512 388 16 AR 528 388 L 512 388 512 340 16 AR 512 356 L 512 340 576 340 16 AR CP F GS GS NP 560 340 M 576 340 576 388 16 AR 576 372 L 576 388 512 388 16 AR 528 388 L 512 388 512 340 16 AR 512 356 L 512 340 576 340 16 AR CP 2 W S GR GR % OVAL 0.184 0.310 0.310 RG NP 472 436 24 24 TGEL F GS GS NP 472 436 24 24 TGEL 2 W S GR GR % OVAL 0 SG GS GS NP 544 436 24 24 TGEL 2 W S GR GR % TEXT NP 0 SG GS 1 W 170 526 M GS 0.750 0.750 0.750 RG /Helvetica-Bold FF [34 0 0 -34 0 0] MS (SHADOWED HELVETICA) SH GR GR % TEXT NP 0 SG GS 1 W 168 524 M GS 0 SG /Helvetica-Bold FF [34 0 0 -34 0 0] MS (SHADOWED HELVETICA) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 640 340 M 664 276 L 704 308 L -32 24 atan DU cos 10.000 MU 728 exch SU exch sin 10.000 MU 276 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 728 276 10.000 4.000 24 -32 TGAT 1 SG CP F 0 SG NP 728 276 10.000 4.000 24 -32 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 610 392 M 611 392 L 611 391 L 611 390 L 612 389 L 613 388 L 614 386 L 615 385 L 616 383 L 616 382 L 617 381 L 618 380 L 618 379 L 619 378 L 620 377 L 620 376 L 621 375 L 622 374 L 623 373 L 624 372 L 625 372 L 626 371 L 627 371 L 628 370 L 629 370 L 631 369 L 632 369 L 633 369 L 634 369 L 635 369 L 636 370 L 637 370 L 638 371 L 640 372 L 642 373 L 643 373 L 647 377 L 648 377 L 649 378 L 650 379 L 651 380 L 652 381 L 653 382 L 654 383 L 655 384 L 656 385 L 657 386 L 658 387 L 659 388 L 660 389 L 661 390 L 662 391 L 663 392 L 664 392 L 665 393 L 666 393 L 667 393 L 668 393 L 669 393 L 670 393 L 672 392 L 673 391 L 674 390 L 676 389 L 677 388 L 678 388 L 679 387 L 680 386 L 680 385 L 681 384 L 682 383 L 682 382 L 683 381 L 683 380 L 684 379 L 684 378 L 684 377 L 685 376 L 685 375 L 685 373 L 685 372 L 685 371 L 685 369 L 685 368 L 685 367 L 685 366 L 684 365 L 684 364 L 684 363 L 683 363 L 682 362 L 681 362 L 680 362 L 679 362 L 678 362 L 677 362 L 676 363 L 675 363 L 675 364 L 674 364 L 673 365 L 672 365 L 671 366 L 670 366 L 669 367 L 668 368 L 667 368 L 666 369 L 665 370 L 664 370 L 663 371 L 662 372 L 661 372 L 660 373 L 659 374 L 658 375 L 657 376 L 657 377 L 656 377 L 656 378 L 655 379 L 655 380 L 654 381 L 653 382 L 653 383 L 653 384 L 653 385 L 653 386 L 653 387 L 653 388 L 653 389 L 653 390 L 653 391 L 654 392 L 654 393 L 654 394 L 655 395 L 655 396 L 656 397 L 657 398 L 657 399 L 658 399 L 658 400 L 659 401 L 660 402 L 661 403 L 662 403 L 663 404 L 664 404 L 665 405 L 666 406 L 667 406 L 669 407 L 670 407 L 671 408 L 673 408 L 674 409 L 675 410 L 676 410 L 677 411 L 678 412 L 679 413 L 680 414 L 681 415 L 682 416 L 683 417 L 683 418 L 684 419 L 684 420 L 685 422 L 685 423 L 686 424 L 686 425 L 686 426 L 686 427 L 687 428 L 687 429 L 686 430 L 686 431 L 686 432 L 686 433 L 685 433 L 685 434 L 684 435 L 684 436 L 683 437 L 682 438 L 682 439 L 681 440 L 680 441 L 679 442 L 678 443 L 677 444 L 676 444 L 675 445 L 674 445 L 673 446 L 672 446 L 671 446 L 670 447 L 669 447 L 667 448 L 666 448 L 664 449 L 663 449 L 661 450 L 660 450 L 658 451 L 657 451 L 656 451 L 655 452 L 654 452 L 652 453 L 651 453 L 650 454 L 649 454 L 648 455 L 647 456 L 646 456 L 646 457 L 645 457 L 645 458 L 644 459 L 644 460 L 643 461 L 643 462 L 643 463 L 643 464 L 642 465 L 642 466 L 642 467 L 642 468 L 643 469 L 643 470 L 643 471 L 643 472 L 643 473 L 643 474 L 643 475 L 643 476 L 643 477 L 643 478 L 643 479 L 643 480 L 643 481 L 643 482 L 643 483 L 643 484 L 643 485 L 643 486 L 644 487 L 644 488 L 644 489 L 644 490 L 644 491 L 644 492 L 644 493 L 644 494 L 644 495 L 644 496 L 644 497 L 644 498 L 644 500 L 644 501 L 644 502 L 644 503 L 644 504 L 644 505 L 644 506 L 644 507 L 644 508 L 1 0 atan DU cos 10.000 MU 644 exch SU exch sin 10.000 MU 509 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 644 509 10.000 4.000 0 1 TGAT 1 SG CP F 0 SG NP 644 509 10.000 4.000 0 1 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 200 452 M 280.00 452.00 321.33 452.00 324.00 452.00 CT 326.67 452.00 332.00 449.33 340.00 444.00 CT 348.00 438.67 346.67 433.33 336.00 428.00 CT 325.33 422.67 313.33 422.67 300.00 428.00 CT 286.67 433.33 288.00 449.33 40 24 atan DU cos 10.000 MU 304 exch SU exch sin 10.000 MU 476 exch SU CT TGSM 2 W S 1 W GR GS TGSM NP 304 476 10.000 4.000 24 40 TGAT 1 SG CP F 0 SG NP 304 476 10.000 4.000 24 40 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 40 288 M 0 24 atan DU cos 10.000 MU 64 exch SU exch sin 10.000 MU 288 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 64 288 10.000 4.000 24 0 TGAT 1 SG CP F 0 SG NP 64 288 10.000 4.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 40 328 M 0 24 atan DU cos 10.000 MU 64 exch SU exch sin 10.000 MU 328 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 64 328 10.000 4.000 24 0 TGAT 1 SG CP F 0 SG NP 64 328 10.000 4.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 40 376 M 0 24 atan DU cos 10.000 MU 64 exch SU exch sin 10.000 MU 376 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 64 376 10.000 4.000 24 0 TGAT 1 SG CP F 0 SG NP 64 376 10.000 4.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 40 440 M 0 24 atan DU cos 10.000 MU 64 exch SU exch sin 10.000 MU 440 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 64 440 10.000 4.000 24 0 TGAT 1 SG CP F 0 SG NP 64 440 10.000 4.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 104 504 M -20 0 atan DU cos 10.000 MU 104 exch SU exch sin 10.000 MU 484 exch SU L TGSM 2 W S 1 W GR GS TGSM NP 104 484 10.000 4.000 0 -20 TGAT 1 SG CP F 0 SG NP 104 484 10.000 4.000 0 -20 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 412 M 132 480 L TGSM 1 W S GR % BOX 0 SG NP 72 604 M 200 604 L 200 692 L 72 692 L CP F GS 10 SM GS NP 72 604 M 200 604 L 200 692 L 72 692 L CP 2 W S GR GR % BOX 0 SG NP 64 596 M 192 596 L 192 684 L 64 684 L CP 1 SG F 0 SG GS 10 SM GS NP 64 596 M 192 596 L 192 684 L 64 684 L CP 2 W S GR GR % TEXT NP 0 SG GS 1 W 72 612 M GS 0 SG /Helvetica FF [12 0 0 -12 0 0] MS (Helvetica) SH GR GR % TEXT NP 0 SG GS 1 W 72 644 M GS 0 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (Helvetica, Bold) SH GR GR % TEXT NP 0 SG GS 1 W 72 676 M GS 0 SG /Helvetica-BoldOblique FF [12 0 0 -12 0 0] MS (Helvetica, BoldItalic) SH GR GR % TEXT NP 0 SG GS 1 W 72 588 M GS 0 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (LEFT JUSTIFIED) SH GR GR % BOX 0 SG NP 336 604 M 480 604 L 480 692 L 336 692 L CP F GS 10 SM GS NP 336 604 M 480 604 L 480 692 L 336 692 L CP 2 W S GR GR % BOX 0 SG NP 328 596 M 472 596 L 472 684 L 328 684 L CP 1 SG F 0 SG GS 10 SM GS NP 328 596 M 472 596 L 472 684 L 328 684 L CP 2 W S GR GR % TEXT NP 0 SG GS 1 W 400 612 M GS GS 0 /Helvetica FF [12 0 0 -12 0 0] MS (Helvetica) TGSW AD GR 2 DI NE 0 RM 0 SG /Helvetica FF [12 0 0 -12 0 0] MS (Helvetica) SH GR GR % TEXT NP 0 SG GS 1 W 400 644 M GS GS 0 /Helvetica-Bold FF [12 0 0 -12 0 0] MS (Helvetica,Bold) TGSW AD GR 2 DI NE 0 RM 0 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (Helvetica,Bold) SH GR GR % TEXT NP 0 SG GS 1 W 400 676 M GS GS 0 /Helvetica-BoldOblique FF [12 0 0 -12 0 0] MS (Helvetica, BoldItalic) TGSW AD GR 2 DI NE 0 RM 0 SG /Helvetica-BoldOblique FF [12 0 0 -12 0 0] MS (Helvetica, BoldItalic) SH GR GR % TEXT NP 0 SG GS 1 W 400 588 M GS GS 0 /Helvetica-Bold FF [12 0 0 -12 0 0] MS (CENTER JUSTIFIED) TGSW AD GR 2 DI NE 0 RM 0 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (CENTER JUSTIFIED) SH GR GR % BOX 0 SG NP 616 604 M 744 604 L 744 692 L 616 692 L CP F GS 10 SM GS NP 616 604 M 744 604 L 744 692 L 616 692 L CP 2 W S GR GR % BOX 0 SG NP 608 596 M 736 596 L 736 684 L 608 684 L CP 1 SG F 0 SG GS 10 SM GS NP 608 596 M 736 596 L 736 684 L 608 684 L CP 2 W S GR GR % TEXT NP 0 SG GS 1 W 728 612 M GS GS 0 /Helvetica FF [12 0 0 -12 0 0] MS (Helvetica) TGSW AD GR NE 0 RM 0 SG /Helvetica FF [12 0 0 -12 0 0] MS (Helvetica) SH GR GR % TEXT NP 0 SG GS 1 W 728 644 M GS GS 0 /Helvetica-Bold FF [12 0 0 -12 0 0] MS (Helvetica,Bold) TGSW AD GR NE 0 RM 0 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (Helvetica,Bold) SH GR GR % TEXT NP 0 SG GS 1 W 728 676 M GS GS 0 /Helvetica-BoldOblique FF [12 0 0 -12 0 0] MS (Helvetica,BoldItalic) TGSW AD GR NE 0 RM 0 SG /Helvetica-BoldOblique FF [12 0 0 -12 0 0] MS (Helvetica,BoldItalic) SH GR GR % TEXT NP 0 SG GS 1 W 728 588 M GS GS 0 /Helvetica-Bold FF [12 0 0 -12 0 0] MS (RIGHT JUSTIFIED) TGSW AD GR NE 0 RM 0 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (RIGHT JUSTIFIED) SH GR GR % TEXT NP 0 SG NP 207 387 M 369 387 L 369 403 L 207 403 L CP F GS 1 W 1 SG 208 400 M GS 1 SG /Helvetica-Bold FF [12 0 0 -12 0 0] MS (TEXT WITH BACKGROUND) SH GR GR % TEXT NP 0 SG GS 1 W 480 272 M GS 0 SG /Symbol FF [17 0 0 -17 0 0] MS (SYMBOL - ZWA) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [12 4 4 4 4 4] 0 SD NP 320 480 M 608 480 L TGSM 4 W S [] 0 SD 1 W GR % POLYGON/CLOSED-SPLINE 0.000 1.000 1.000 RG NP 384 432 M 416 400 L 448 400 L 416 432 L CP GS EF GR GS S GR % POLYGON/CLOSED-SPLINE 0 SG NP 416 384 M 448 352 L 480 352 L 448 384 L CP GS 1 SG EF GR GS EC NP pat7 8 408 344 80 48 TGPF GR GS S GR % POLY/OPEN-SPLINE 0 SG GS [12 4 4 4 4 4] 0 SD NP 160 368 M 160 256 L 256 256 L TGSM 1 W S [] 0 SD GR % BOX 0 SG GS 10 SM GS NP 0 96 M 832 96 L 832 736 L 0 736 L CP S GR GR % TEXT NP 0 SG GS 1 W 480 288 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (Courier Font) SH GR GR % TEXT NP 0 SG GS 1 W 168 572 M GS 0 SG /Courier-Bold FF [34 0 0 -34 0 0] MS (COURIER) SH GR GR % ARC 0 SG GS GS NP 528 608 64 64 -90 -45 TGAN S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 528 544 M 528 608 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 528 608 M 592 544 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 80 309 M GS 1.000 0.000 0.000 RG /Times-Bold FF [14 0 0 -14 0 0] MS (red) SH GR GR % TEXT NP 0 SG GS 1 W 80 349 M GS 0.000 1.000 0.000 RG /Times-Bold FF [14 0 0 -14 0 0] MS (green) SH GR GR % TEXT NP 0 SG GS 1 W 80 397 M GS 0.000 0.000 1.000 RG /Times-Bold FF [14 0 0 -14 0 0] MS (blue) SH GR GR GR tgifsavedpage restore end showpage %%Trailer %MatchingCreationDate: Fri Feb 6 22:48:00 2009 %%DocumentFonts: Courier-Bold %%+ Symbol %%+ Helvetica-BoldOblique %%+ Helvetica %%+ Helvetica-Bold %%+ Times-BoldItalic %%+ Times-Roman %%+ Times-Bold %%EOF pstoedit-3.62/contrib/java/0000755000175500010010000000000012137264540012657 500000000000000pstoedit-3.62/contrib/java/java1/0000755000175500010010000000000012137264540013661 500000000000000pstoedit-3.62/contrib/java/java1/Makefile.am0000774000175500000000000000006707530466360015647 00000000000000EXTRA_DIST=PsDrawing.java PsPages.java readme_java1.txtpstoedit-3.62/contrib/java/java1/Makefile.in0000644000175500010010000002353412137264203015651 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib/java/java1 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = PsDrawing.java PsPages.java readme_java1.txt all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/java/java1/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/java/java1/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/contrib/java/java1/PsDrawing.java0000774000175500000000000000777707530466360016373 00000000000000// // PsDrawing.java : This file is part of pstoedit. // Java applet needed to run the java code generated by pstoedit -f java // // this applet is called from HTML via: // // // // replace PSJava by whatever you specified after the -f java option, // e.g. -f java:anotherclassname // // Copyright (C) 1998 - 1999 Wolfgang Glunz, wglunz@geocities.com // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // // import java.awt.*; // // this applet is called via: // // public class PsDrawing extends java.applet.Applet { public void init() { System.out.println("setting up pages "); setBackground( Color.white ); try { String psjavaclassName = getParameter("psjavaclass"); Class psclass = Class.forName(psjavaclassName); pspages = (PsPages)(psclass.newInstance()); if (pspages.numberOfPages() > 1) { prevButton = new Button("previous page"); add(prevButton); prevButton.disable(); nextButton = new Button("next page"); add(nextButton); } } catch(ClassNotFoundException e) { System.err.println(e); } catch(IllegalAccessException e) { System.err.println(e); } catch(InstantiationException e) { System.err.println(e); } System.out.println("setting up pages done "); // pspages = new PSJava(); } public void paint( Graphics g ) { setBackground( Color.white ); System.out.println("paint started for page # "+pagenr); Rectangle r = bounds(); pspages.showpage(r,pagenr,g); System.out.println("paint finished"); } public boolean action(Event e, Object o) { if(e.target == nextButton) { pagenr++; if (pagenr == pspages.numberOfPages() ) { if (nextButton != null) { nextButton.disable(); } } else if (pagenr > 1) { if (prevButton != null) { prevButton.enable(); } } Rectangle r = bounds(); pspages.showpage(r,pagenr,getGraphics()); return true; } else if(e.target == prevButton) { pagenr--; if (pagenr == 1) { if (prevButton != null) { prevButton.disable(); } } else if (pagenr < pspages.numberOfPages() ) { if (nextButton != null) { nextButton.enable(); } } Rectangle r = bounds(); pspages.showpage(r,pagenr,getGraphics()); return true; } else return super.action(e,o); } private PsPages pspages = null; private int pagenr = 1; private Button nextButton; private Button prevButton; } pstoedit-3.62/contrib/java/java1/PsPages.java0000774000175500000000000001261207530466360016017 00000000000000// // PsPages.java : This file is part of pstoedit. // Java classes needed to run the java code generated by pstoedit -f java // // // Copyright (C) 1998 - 1999 Wolfgang Glunz, wglunz@geocities.com // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // // import java.awt.*; import java.util.*; // the base class for the drawing objects class PSDrawingObject { public PSDrawingObject(Color cp) { c = cp;} public void show(Graphics g ) { g.setColor(c);} Color c; } class FontDesc { FontDesc(String n, int s) { name = n; style = s;} public String name; public int style; }; class PSTextObject extends PSDrawingObject { static FontDesc[] JavaFonts = { new FontDesc("Courier",Font.PLAIN), new FontDesc("Courier",Font.BOLD), new FontDesc("Courier",Font.ITALIC), new FontDesc("Courier",Font.BOLD + Font.ITALIC), new FontDesc("Helvetica",Font.PLAIN), new FontDesc("Helvetica",Font.BOLD), new FontDesc("Helvetica",Font.ITALIC), new FontDesc("Helvetica",Font.BOLD + Font.ITALIC), new FontDesc("TimesRoman",Font.PLAIN), new FontDesc("TimesRoman",Font.BOLD), new FontDesc("TimesRoman",Font.ITALIC), new FontDesc("TimesRoman",Font.BOLD + Font.ITALIC), new FontDesc("ZapfDingbats",Font.PLAIN), }; PSTextObject(float r, float g, float b, String s, int x, int y, int fontNum, int fsize) { super(new Color(r,g,b)); s_=s; x_=x; y_=y; f_=new Font(JavaFonts[fontNum].name, JavaFonts[fontNum].style, fsize); } PSTextObject(float r, float g, float b, String s, int x, int y, String fname, int fstyle, int fsize) { super(new Color(r,g,b)); s_=s; x_=x; y_=y; f_=new Font(fname, fstyle, fsize); } public void show(Graphics g ) { super.show(g); g.setFont(f_); g.drawString(s_,x_,y_); } Font f_; int x_; int y_; String s_; } class PSLinesObject extends PSDrawingObject { PSLinesObject(float r, float g, float b) { super(new Color(r,g,b)); points = new Vector(); } public void show(Graphics g ) { super.show(g); Point lastPoint = null; for (Enumeration e = points.elements() ; e.hasMoreElements() ;) { Point currentPoint = (Point)(e.nextElement()); if (lastPoint != null) { g.drawLine( lastPoint.x,lastPoint.y, currentPoint.x,currentPoint.y); } lastPoint = currentPoint; } } public void addPoint(int x, int y) { points.addElement(new Point(x,y)); } Vector points; } class PSPolygonObject extends PSDrawingObject { public PSPolygonObject(float r, float g, float b) { super(new Color(r,g,b)); p = new Polygon(); } public PSPolygonObject(int [] points,float r, float g, float b) { super(new Color(r,g,b)); p = new Polygon(); } public void show(Graphics g ) { super.show(g); g.fillPolygon(p); } public void addPoint(int x, int y) { p.addPoint(x,y); } public Polygon p; } // describes a single page class PageDescription { public PageDescription() { theObjects = new Vector(); } public void showpage(Rectangle r, Graphics g ) { for (Enumeration e = theObjects.elements() ; e.hasMoreElements() ;) { PSDrawingObject current = (PSDrawingObject)(e.nextElement()); current.show(g); } } public Vector theObjects; } // describes the set of all pages public abstract class PsPages { public void showpage( Rectangle r, int pageNumber, Graphics g ) { System.out.println("showing page #" + pageNumber); System.out.println(r); g.clearRect(r.x,r.y,r.width,r.height); pages[pageNumber-1].showpage(r,g); } public abstract int numberOfPages(); protected PageDescription [] pages; } pstoedit-3.62/contrib/java/java1/readme_java1.txt0000774000175500000000000000213607530466360016672 00000000000000The files PsPages.java and PsDrawing.java contain the JAVA source code of the classes needed to run the code generated by the -f java option of pstoedit. To use the output, do: javac PsPages.java javac PsDrawing.java pstoedit -f java:myclass myfile.ps myclass.java javac myclass.java Then create an HTML document like: PsDrawing generated by pstoedit This is the applet:

And launch a java enabled web browser. This Java 1 based version provides limited features due to the many restrictions of Java 1. In the java2 directory there is a newer version based on Java 2 which provides much better output than the Java 1 based version. Finally, the source code is covered by the GPL the same way as pstoedit. This does not include the code generated by pstoedit! See the file Copying in the main directory of the pstoedit distribution for the details of the GPL. Wolfgang Glunz - wglunz@geocities.com pstoedit-3.62/contrib/java/java2/0000755000175500010010000000000012137264541013663 500000000000000pstoedit-3.62/contrib/java/java2/Makefile.am0000774000175500000000000000021207530466360015640 00000000000000EXTRA_DIST=PsDrawing.java \ next.gif \ previous.gif \ readme_java2.html \ rotate.gif \ zoomin.gif \ zoomout.gifpstoedit-3.62/contrib/java/java2/Makefile.in0000644000175500010010000002366012137264203015652 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib/java/java2 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = PsDrawing.java \ next.gif \ previous.gif \ readme_java2.html \ rotate.gif \ zoomin.gif \ zoomout.gif all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/java/java2/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/java/java2/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/contrib/java/java2/next.gif0000774000175500000000000000013707530466360015257 00000000000000GIF89a€ÎÏÎ!ù,@6Œ© ›ÐœlPÚP/Ö&ó†MŸ7jèYŠî ‹PëÌöÜÑ·ú¤û)z¹#¼c̦¦;pstoedit-3.62/contrib/java/java2/previous.gif0000774000175500000000000000013507530466360016153 00000000000000GIF89a€ÎÏÎ!ù,@4Œ©ŒlOÎénʺõ†”rš¥˜º²â ÇŸãvÓŒº¦õ¾ûm0’\îÄ“)—Ÿ;pstoedit-3.62/contrib/java/java2/PsDrawing.java0000774000175500000000000010566107530466360016363 00000000000000/* * PSDrawing.java : This file is part of pstoedit. * Java applet needed to run the java code generated by pstoedit -f java2 * * This applet is called from HTML via one of the following ways: * Netscape Navigator: * * * Internet Exploder: * * * * * replace MYCLASS by whatever you specified after the -f java2 option, * e.g. -f java2:anotherclassname * For mor information cf. the readme file. * * Copyright (C) 1998-1999 Wolfgang Glunz, wglunz@geocities.com * 2000 Gisbert W. Selke, gisbert@tapirsoft.de * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import java.io.*; import java.util.*; import javax.swing.*; public class PSDrawing extends JApplet { private static byte debug = 1; protected PSPages pspages = new PSPages(); protected int pagenr = 1; protected JButton previousButton = null; protected JButton nextButton = null; protected JButton zoominButton = null; protected JButton zoomoutButton = null; protected JButton rotateButton = null; protected JPanel drawingPanel = null; protected JPanel buttonPanel = null; protected Cursor savedCursor = null; protected int startMouseX = 0, startMouseY = 0; double currentXOffset = 0.0, currentYOffset = 0.0; double currentZoom = 1.0; double currentAngle = 0.0; protected double zoomFactor = 1.2; protected double deltaAngle = Math.toRadians(-90.0); public void init() { // derived classes must first fill pspages, then chain to this init() boolean doZoom = false; boolean doRotate = false; Double[] tempValues; getContentPane().setBackground(Color.white); getContentPane().setLayout(new BorderLayout(0, 0)); drawingPanel = new JPanel(); tempValues = parseParameters("zoom", 2); if (tempValues != null) { if (tempValues[0] != null) currentZoom = Math.abs(tempValues[0].doubleValue()); if ((tempValues[1] != null) && (Math.abs(tempValues[1].doubleValue()) >= 1.01)) { zoomFactor = Math.abs(tempValues[1].doubleValue()); } doZoom = (currentZoom != 0); if (!doZoom) currentZoom = 1.0; } tempValues = parseParameters("rotate", 2); if (tempValues != null) { if (tempValues[0] != null) currentAngle = Math.toRadians(-tempValues[0].doubleValue()); if (tempValues[1] != null) deltaAngle = Math.toRadians(-tempValues[1].doubleValue()); doRotate = (deltaAngle != 0); } tempValues = parseParameters("offset", 2); if (tempValues != null) { if (tempValues[0] != null) currentXOffset = tempValues[0].doubleValue(); if (tempValues[1] != null) currentYOffset = tempValues[1].doubleValue(); } tempValues = parseParameters("page", 1); if (tempValues != null) { if (tempValues[0] != null) pagenr = tempValues[0].intValue(); if (pagenr < 1) pagenr = 1; if (pagenr > pspages.size()) pagenr = pspages.size(); } drawingPanel.addMouseListener( new javax.swing.event.MouseInputAdapter() { public void mousePressed(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == 0) return; startMouseX = e.getX(); startMouseY = e.getY(); savedCursor = getCursor(); setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); } public void mouseReleased(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == 0) return; calculateOffsets(e.getX()-startMouseX, e.getY()-startMouseY); startMouseX = e.getX(); startMouseY = e.getY(); paint((Graphics2D)getGraphics()); setCursor(savedCursor); } } ); getContentPane().add(drawingPanel, BorderLayout.CENTER); buildButtonPanel(doZoom, doRotate); if (buttonPanel != null) getContentPane().add(buttonPanel, BorderLayout.SOUTH); if (debug > 1) System.err.println("setting up pages done"); } void buildButtonPanel(boolean doZoom, boolean doRotate) { boolean haveDefaultButton = false; /* GIF bitmaps for buttons as byte arrays so that no external resources are needed: */ byte[][] buttonIcons = { /* previous: */ { 71,73,70,56,57,97,24,0,24,0,-128,0,0,0,0,0,-50,-49,-50,33, -7,4,1,0,0,1,0,44,0,0,0,0,24,0,24,0,64,2,52,-116, -113,-87,27,0,-116,30,108,79,-50,-23,110,-54,-70,-11,15,-122,-108,7,114,-102, -91,-104,16,-70,-78,-30,11,-57,-97,-29,118,28,-115,-45,-116,-70,-90,-11,-66,-5, 109,48,-110,92,-18,-60,-109,41,-105,-97,2,0,59 }, /* next: */ { 71,73,70,56,57,97,24,0,24,0,-128,0,0,0,0,0,-50,-49,-50,33, -7,4,1,0,0,1,0,44,0,0,0,0,24,0,24,0,64,2,54,-116, -113,-87,11,-101,-48,-100,108,80,-38,80,47,-42,38,-13,15,-122,8,21,77,-97, 55,106,-24,89,-118,-18,11,-117,80,-21,-52,-10,-36,-47,15,-73,30,-6,-92,-5, 41,122,-71,27,14,35,-68,28,99,-52,-90,-90,0,0,59 }, /* zoom-in: */ { 71,73,70,56,57,97,24,0,24,0,-128,0,0,0,0,0,-50,-49,-50,33, -7,4,1,0,0,1,0,44,0,0,0,0,24,0,24,0,64,2,62,-116, -113,-87,10,-36,-7,86,-120,11,80,105,-99,60,119,-10,-66,109,89,72,-118,37, 104,68,-42,-70,114,38,50,-70,-91,-57,114,-15,-116,-25,57,123,-109,104,-22,-125, 92,126,-97,15,-58,-58,83,29,-123,-116,87,-24,103,115,-76,116,82,-86,85,87, 0,0,59 }, /* zoom-out: */ { 71,73,70,56,57,97,24,0,24,0,-128,0,0,0,0,0,-50,-49,-50,33, -7,4,1,0,0,1,0,44,0,0,0,0,24,0,24,0,64,2,57,-116, -113,-87,10,-69,-19,2,116,96,-58,-54,-20,-117,73,-13,-21,125,-94,17,118,-41, 81,-91,41,122,126,101,-90,-94,-40,72,-41,-74,-92,-66,12,-89,75,-30,-37,99, 109,72,-71,-103,111,-8,107,-15,126,-98,-36,13,-10,-116,-46,10,0,59 }, /* rotate: */ { 71,73,70,56,57,97,24,0,24,0,-128,0,0,0,0,0,-50,-49,-50,33, -7,4,1,0,0,1,0,44,0,0,0,0,24,0,24,0,64,2,55,-116, -113,-87,10,-21,-67,-96,11,-96,78,42,89,70,-5,-102,-18,-123,81,101,-119,32, 19,-119,28,-22,65,103,72,-106,-22,76,-73,-101,60,-67,107,-86,118,58,127,-8, -79,-126,53,31,-84,113,-6,-59,106,-52,-90,-45,80,0,0,59 } }; buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5)); if (pspages.size() > 1) { previousButton = new JButton(new ImageIcon(buttonIcons[0])); previousButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (pagenr > 1) pagenr--; getRootPane().setDefaultButton(previousButton); if (pagenr < pspages.size()) nextButton.setEnabled(true); if (pagenr == 1) { previousButton.setEnabled(false); buttonPanel.getRootPane().setDefaultButton(nextButton); nextButton.requestFocus(); } paint((Graphics2D)getGraphics()); } } ); previousButton.setEnabled(pagenr > 1); buttonPanel.add(previousButton); nextButton = new JButton(new ImageIcon(buttonIcons[1])); nextButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (pagenr < pspages.size()) pagenr++; getRootPane().setDefaultButton(nextButton); if (pagenr > 1) previousButton.setEnabled(true); if (pagenr == pspages.size()) { nextButton.setEnabled(false); buttonPanel.getRootPane().setDefaultButton(previousButton); previousButton.requestFocus(); } paint((Graphics2D)getGraphics()); } } ); nextButton.setEnabled(pagenr < pspages.size()); if (pagenr < pspages.size()) { getRootPane().setDefaultButton(nextButton); nextButton.requestFocus(); } else { getRootPane().setDefaultButton(previousButton); previousButton.requestFocus(); } haveDefaultButton = true; buttonPanel.add(nextButton); } if (doZoom) { zoominButton = new JButton(new ImageIcon(buttonIcons[2])); zoominButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { currentZoom *= zoomFactor; buttonPanel.getRootPane().setDefaultButton(zoominButton); zoominButton.requestFocus(); paint((Graphics2D)getGraphics()); } } ); buttonPanel.add(zoominButton); if (!haveDefaultButton) { getRootPane().setDefaultButton(zoominButton); zoominButton.requestFocus(); haveDefaultButton = true; } zoomoutButton = new JButton(new ImageIcon(buttonIcons[3])); zoomoutButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { currentZoom /= zoomFactor; buttonPanel.getRootPane().setDefaultButton(zoomoutButton); zoomoutButton.requestFocus(); paint((Graphics2D)getGraphics()); } } ); buttonPanel.add(zoomoutButton); } if (doRotate) { rotateButton = new JButton(new ImageIcon(buttonIcons[4])); rotateButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { currentAngle += deltaAngle; buttonPanel.getRootPane().setDefaultButton(rotateButton); rotateButton.requestFocus(); paint((Graphics2D)getGraphics()); } } ); buttonPanel.add(rotateButton); if (!haveDefaultButton) { getRootPane().setDefaultButton(rotateButton); rotateButton.requestFocus(); haveDefaultButton = true; } } } void calculateOffsets(double deltaX, double deltaY) { AffineTransform transform = AffineTransform.getTranslateInstance((drawingPanel.getWidth()-1)*0.5, (drawingPanel.getHeight()-1)*0.5); transform.scale(currentZoom, currentZoom); transform.rotate(currentAngle); transform.translate(currentXOffset-(drawingPanel.getWidth()-1)*0.5, currentYOffset-(drawingPanel.getHeight()-1)*0.5); try { transform = transform.createInverse(); } catch(NoninvertibleTransformException nte) { return; // cannot really happen! } Point2D.Double delta = (Point2D.Double)transform.deltaTransform(new Point2D.Double(deltaX, deltaY), null); currentXOffset += delta.getX(); currentYOffset += delta.getY(); } public void paint(Graphics g) { super.paint(g); AffineTransform transform = AffineTransform.getTranslateInstance((drawingPanel.getWidth()-1)*0.5, (drawingPanel.getHeight()-1)*0.5); transform.scale(currentZoom, currentZoom); transform.rotate(currentAngle); transform.translate(currentXOffset-(drawingPanel.getWidth()-1)*0.5, currentYOffset-(drawingPanel.getHeight()-1)*0.5); pspages.paint(drawingPanel, transform, pagenr); } public static byte getDebug() { return debug; } public static boolean isDebug() { return (debug != (byte)0); } public static void setDebug(boolean on) { debug = (on) ? (byte)9 : (byte)0; } public static void setDebug(byte level) { debug = level; } public String getAppletInfo() { return "PostScript file converted to Java by pstoedit\n" + "© Copyright 1998 - 1999 Wolfgang Glunz, wglunz@geocities.com\n" + "© Copyright parts: 2000 Gisbert W. Selke, gisbert@tapirsoft.de\n" + "Java2 driver: alpha test version, 17 Apr 2000"; } public String[][] getParameterInfo() { String[][] info = { {"zoom", "string or 1..2 numbers", "display zoom buttons;\n " + "\t1st number (>0), if any: initial zoom factor (default: 0);\n" + "\t2nd number (>1), if any: zoom step (default: 1.2)" }, {"rotate", "string or 1..2 numbers", "display rotate button;\n " + "\t1st number, if any: initial rotation in degrees (default: 0);\n" + "\t2nd number, if any: angle increment (default: 90)" }, {"offset", "1..2 numbers", "initial x/y offset (default: 0 0)" }, {"page", "number (>= 1)", "number of page to be shown initially (default: 1)" } }; return info; } Double[] parseParameters(String paramName, int nparams) { StringTokenizer tok; Double[] values = new Double[nparams]; int i; if (getParameter(paramName) == null) return null; for (i=0; i= 0.0f) ? lineWidth : 0.1f; switch(lineCap) { case 1 : this.lineCap = BasicStroke.CAP_ROUND; break; case 2 : this.lineCap = BasicStroke.CAP_SQUARE; break; default: this.lineCap = BasicStroke.CAP_BUTT; break; } switch(lineJoin) { case 1 : this.lineJoin = BasicStroke.JOIN_ROUND; break; case 2 : this.lineJoin = BasicStroke.JOIN_BEVEL; break; default: this.lineJoin = BasicStroke.JOIN_MITER; break; } this.miterLimit = (miterLimit >= 1.0f) ? miterLimit : 1.0f; this.fillStroke = ((fillStroke >= 0) && (fillStroke <= 2)) ? fillStroke : 0; path.setWindingRule((this.fillStroke == 2) ? GeneralPath.WIND_EVEN_ODD : GeneralPath.WIND_NON_ZERO); if (dash != null) { this.dash = new float[dash.length]; System.arraycopy(dash, 0, this.dash, 0, dash.length); this.dashPhase = dashPhase; } this.isPolygon = isPolygon; } PSPathObject(Color c, float lineWidth, int lineJoin, int fillStroke, Shape shape) { super(c); path = new GeneralPath(shape); this.lineWidth = (lineWidth >= 0.0f) ? lineWidth : 0.1f; this.lineCap = BasicStroke.CAP_BUTT; // not really needed for rectangles switch(lineJoin) { case 1 : this.lineJoin = BasicStroke.JOIN_ROUND; break; case 2 : this.lineJoin = BasicStroke.JOIN_BEVEL; break; default: this.lineJoin = BasicStroke.JOIN_MITER; break; } this.miterLimit = 1.0f; // not really needed for rectangles this.fillStroke = ((fillStroke >= 0) && (fillStroke <= 2)) ? fillStroke : 0; this.isPolygon = true; // does no harm } PSPathObject(Color c, float lineWidth, Shape shape) { this(c, lineWidth, 0, 0, shape); } public void moveTo(float x, float y) { path.moveTo(x, y); nPoints++; } public void lineTo(float x, float y) { if (nPoints == 0) { path.moveTo(x, y); } else { path.lineTo(x, y); } nPoints++; } public void curveTo(float x0, float y0, float x1, float y1, float x2, float y2) { if (nPoints == 0) moveTo(0, 0); path.curveTo(x0, y0, x1, y1, x2, y2); nPoints++; } public void closePath() { path.closePath(); } public void paint(Graphics2D g) { super.paint(g); if (isPolygon) closePath(); g.setStroke((dash == null) ? new BasicStroke(lineWidth, lineCap, lineJoin, miterLimit) : new BasicStroke(lineWidth, lineCap, lineJoin, miterLimit, dash, dashPhase)); if (fillStroke == 0) { g.draw(path); } else { g.fill(path); } } } // derived class for bitmap images // -- not at all complete! class PSImageObject extends PSDrawingObject { int imageType = 0; // 0=colour image; 1=normal image; 2=image mask int width = 0; int height = 0; int bitsPerComponent = 8; int numberOfComponents = 1; int colourType = BufferedImage.TYPE_CUSTOM; boolean polarity = true; // meaningful for image masks only AffineTransform transform; // to convert between PostScript and Java coordinate systems byte[] data = null; // the image data BufferedImage image = null; // the rendered (pixel) image PSImageObject(int width, int height, int bitsPerComponent, int numberOfComponents, int type, boolean polarity, AffineTransform transform) { super(Color.black); // Dummy call this.width = width; this.height = height; this.numberOfComponents = numberOfComponents; switch (numberOfComponents) { case 1 : this.colourType = BufferedImage.TYPE_BYTE_GRAY; break; case 3 : this.colourType = BufferedImage.TYPE_3BYTE_BGR; break; // should be RGB??? TODO!! case 4 : this.colourType = BufferedImage.TYPE_4BYTE_ABGR; break; // no, this should be CMYK -- TODO!! default: this.colourType = BufferedImage.TYPE_BYTE_GRAY; break; } this.bitsPerComponent = bitsPerComponent; this.imageType = type; this.polarity = polarity; this.transform = new AffineTransform(transform); } PSImageObject(int width, int height, int bitsPerComponent, int numberOfComponents, int type, boolean polarity, AffineTransform transform, byte[] data) { this(width, height, bitsPerComponent, numberOfComponents, type, polarity, transform); this.data = new byte[data.length]; System.arraycopy(data, 0, this.data, 0, data.length); setRasterData(); } PSImageObject(int width, int height, int bitsPerComponent, int numberOfComponents, int type, boolean polarity, AffineTransform transform, String resourceName) { this(width, height, bitsPerComponent, numberOfComponents, type, polarity, transform); int nColumns = (width*numberOfComponents*bitsPerComponent+7)/8; int dataLength = nColumns*height; DataInputStream dataFile = null; data = new byte[dataLength]; try { dataFile = new DataInputStream(new BufferedInputStream(new FileInputStream(resourceName))); if (PSDrawing.getDebug() > 1) System.err.println("Reading image data from " + resourceName); } catch (Exception e) { if (PSDrawing.getDebug() > 0) System.err.println("No image data found for file " + resourceName); }; if (dataFile == null) { try { dataFile = new DataInputStream(new java.util.zip.GZIPInputStream(new BufferedInputStream( new FileInputStream(resourceName + ".gz")))); if (PSDrawing.getDebug() > 1) System.err.println("Reading image data from " + resourceName + ".gz"); } catch (Exception e) { if (PSDrawing.getDebug() > 0) System.err.println("No image data found for file " + resourceName + ".gz"); }; } if (dataFile == null) { try { java.net.URL url = (new File(resourceName)).toURL(); java.net.URLConnection connection = url.openConnection(); // How about handling JarURLConnection, too??!! dataFile = new DataInputStream(new BufferedInputStream(connection.getInputStream())); if (PSDrawing.getDebug() > 1) System.err.println("Reading image data from " + url); } catch (Exception e) { if (PSDrawing.getDebug() > 0) System.err.println("No image data found for URL " + resourceName); } } if (PSDrawing.getDebug() > 1) System.err.println("width: " + width + ", height: " + height + ", bits/component: " + bitsPerComponent + ", nComponents: " + numberOfComponents + ", data length: " + dataLength); try { dataFile.readFully(data); if (PSDrawing.getDebug() > 1) System.err.println(" " + dataLength + " read"); setRasterData(); } catch (IOException eofe) { for (int i=0; i 1) System.err.println("bits per component: " + bitsPerComponent + ", numberOfComponents: " + numberOfComponents + ", old data length: " + oldData.length + ", new data length: " + data.length); k = 0; for (row=0; row 1) System.err.println("bits per component: " + bitsPerComponent + ", numberOfComponents: " + numberOfComponents + ", old data length: " + oldData.length + ", new data length: " + data.length); k = 0; for (row=0; row> 4; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp3 = temp1 & 0x0F; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; } } colourType = BufferedImage.TYPE_BYTE_GRAY; bitsPerComponent = 8; } /* if ((bitsPerComponent == 4) && (numberOfComponents == 3)) { // Test für echte Farben! oldData = new byte[data.length]; System.arraycopy(data, 0, oldData, 0, data.length); data = new byte[width*height*4]; if (PSDrawing.getDebug() > 1) System.err.println("bits per component: " + bitsPerComponent + ", numberOfComponents: " + numberOfComponents + ", old data length: " + oldData.length + ", new data length: " + data.length); k = 0; for (row=0; row> 4; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp3 = temp1 & 0x0F; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp1 = (int)oldData[offset++]; if (temp1 < 0) temp1 += 256; temp3 = temp1 >> 4; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp3 = temp1 & 0x0F; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp1 = (int)oldData[offset++]; if (temp1 < 0) temp1 += 256; temp3 = temp1 >> 4; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp3 = temp1 & 0x0F; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; } } colourType = BufferedImage.TYPE_3BYTE_BGR; bitsPerComponent = 8; } */ if ((bitsPerComponent == 4) && (numberOfComponents == 3)) { oldData = new byte[data.length]; System.arraycopy(data, 0, oldData, 0, data.length); data = new byte[width*height]; if (PSDrawing.getDebug() > 1) System.err.println("bits per component: " + bitsPerComponent + ", numberOfComponents: " + numberOfComponents + ", old data length: " + oldData.length + ", new data length: " + data.length); k = 0; for (row=0; row> 4) + (temp1 & 0x0F) + (temp2 >> 4) + 2)/3; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; temp1 = (int)oldData[offset++]; if (temp1 < 0) temp1 += 256; temp3 = ((temp2 & 0x0F) + (temp1 >> 4) + (temp1 & 0x0F) + 2)/3; temp3 |= temp3 << 4; if (temp3 > 127) temp3 -= 256; data[k++] = (byte)temp3; } } colourType = BufferedImage.TYPE_BYTE_GRAY; bitsPerComponent = 8; } if (PSDrawing.getDebug() > 1) System.err.println("width: " + width + ", height: " + height + ", bits/component: " + bitsPerComponent + ", colourType: " + colourType + ", data length: " + data.length); image = new BufferedImage(width, height, colourType); dataBuffer = new DataBufferByte(data, data.length); raster = Raster.createPackedRaster(dataBuffer, width, height, bitsPerComponent, null); image.setData(raster); } public void paint(Graphics2D g) { super.paint(g); g.drawRenderedImage(image, transform); } } // describes a single page class PageDescription extends Vector { public void paint(JComponent drawingPanel, AffineTransform t) { Graphics2D g = (Graphics2D)(drawingPanel.getGraphics()); g.setColor(Color.white); // rather set to transparent?? g.fill(drawingPanel.getBounds()); g.setTransform(t); if (PSDrawing.getDebug() > 2) System.err.println("transform is now " + t); for (Enumeration e=elements(); e.hasMoreElements(); ) { ((PSDrawingObject)(e.nextElement())).paint(g); } } } // describes the set of all pages class PSPages extends Vector { public void paint(JComponent drawingPanel, AffineTransform t, int pageNumber) { if (PSDrawing.getDebug() > 1) System.err.println("showing page #" + pageNumber + " " + drawingPanel.getBounds()); if (pageNumber <= size()) ((PageDescription)get(pageNumber-1)).paint(drawingPanel, t); } } pstoedit-3.62/contrib/java/java2/readme_java2.html0000774000175500000000000002451207530466360017023 00000000000000 pstoedit -- Java 2 backend

Readme for pstoedit -- Java 2 backend

17 April 2000
Wolfgang Glunz/Gisbert W. Selke

Contents

Introduction

The file PSDrawing.java contains the Java 2 source code of the classes needed to run the code generated by the -f java2 option of pstoedit.

Preparation

To use the output, do (using Java 2, i.e., at least JDK 1.3):

  javac PSDrawing.java
This needs done once only.

Note: You may want to set the DEBUG flag near the beginning of PSDrawing.java to 0 before compiling.

Use within HTML documents

Conversion

First, convert PostScript to Java and compile it (assuming you are using the JDK):

  pstoedit -f java2:myclass myfile.ps myclass.java
  javac myclass.java
Alternatively, if you are using GSView, you can do the conversion via the menu item Edit -> Convert to vector format.... You'll still have to compile it either via the JDK compiler or using your favourite Java programming environment.

Use within Netscape Navigator

Then create an HTML document including code like this (this syntax is for Netscape browsers only):

  <html>
  <head>
  <title>PSDrawing generated by pstoedit</title>
  </head>
  <body>
  <p>This is the applet:</p>
  <embed type="application/x-java-applet;version=1.2.2"
      pluginspage="http://java.sun.com/products/plugin/1.2.2/plugin-install.html"
      code="myclass.class"
      option1="option_value_for_applet"
      width="700" height="500" align="baseline">
    <noembed>
      This applet needs support for at least Java 1.2.
    </noembed>
  </embed>
  </body>
  </html>

Use within Internet Explorer

Unfortunately, the syntax for the Internet Explorer is quite different:

  <html>
  <head>
  <title>PSDrawing generated by pstoedit</title>
  </head>
  <body>
  <p>This is the applet:</p>
  <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
      width="700" height="500" align="baseline"
      codebase="http://java.sun.com/products/plugin/1.2.2/jinstall-1_2_2-win.cab#Version=1,2,2,0">
    <param name="code"       value="myclass.class">
    <param name="type"       value="application/x-java-applet;version=1.2.2">
    <param name="option1"    value="option_value_for_applet">
    <param name="scriptable" value="true">
    This applet needs support for at least Java 1.2.
  </object>
  </body>
  </html>

Use within either Netscape Navigator or Internet Explorer

And if you want to cope with both, and hopefully others, you have to go through considerable contortions:

  <html>
  <head>
  <title>PSDrawing generated by pstoedit</title>
  </head>
  <body>
  <p>This is the applet:</p>
  <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
     width="700" height="500" align="baseline"
     codebase="http://java.sun.com/products/plugin/1.2.2/jinstall-1_2_2-win.cab#Version=1,2,2,0">
    <param name="code"       value="myclass.class">
    <param name="type"       value="application/x-java-applet;version=1.2.2">
    <param name="option1"    value="option_value_for_applet">
    <param name="scriptable" value="true">
  <comment>
  <embed type="application/x-java-applet;version=1.2.2"
      pluginspage="http://java.sun.com/products/plugin/1.2.2/plugin-install.html"
      code="myclass.class"
      option1="option_value_for_applet"
      width="700" height="500" align="baseline">
    <noembed>
    </comment>
      This applet needs support for at least Java 1.2.
    </noembed>
  </embed>
  </object>
  </body>
  </html>

(Indeed, this is, strictly speaking, malformed syntax. So there.)

Use within other browsers

If you want still other browsers to at least fail gracefully if they can cope with neither form, you'll have to go to even greater lengths involving JavaScript. Please refer to the documentation for Sun's HTML converter available at http://java.sun.com/products/plugin which the above examples have been adapted from.

Viewing the results

Then launch a web browser for which a Java 2 plugin exists. If the plugin is not installed, the above code will get it from Sun's site (given that an Internet connection is accessible). Note that currently (early 2000), for most browsers, built-in support for Java 2 is not sufficient, so a simple <applet> tag will not do any longer. If you want to be free from this restriction, use the -f java option, which produces Java 1 code, but which has some other limitations.

The applet supports panning by pressing the primary mouse key and dragging.

For testing purposes, using the appletviewer (which comes with the JDK) may be faster than employing a full-fledged browser.

Optional parameters for the applet

Currently there are 4 optional parameters for the applet.

  • The first is called zoom. If it is present in the HTML code for the specification of the applet, the user will be presented with zoom in and zoom out buttons. If it starts with a valid positive number, this will be the initial zoom factor at which the applet is displayed. The default value is 1. If it contains another valid number greater than 1, separated by a blank, this will be the zoom step which is applied whenever the zoom-in button is pressed. The default is 1.2.
  • The next parameter is rotate. If it is present in the HTML code for the specification of the applet, the user will be presented with a rotate button. If it starts with a valid number, this will be the initial rotation (measured counter-clockwise in degrees) at which the applet is displayed. The default value is 0. If it contains another valid number, separated by a blank, this will be the increment in the angle whenever the rotate button is pressed. The default is 90. -- This whole feature is mainly useful for viewing graphics in landscape or skyscape orientation rather than portrait. Note that there is no rotate clockwise button.
  • The third parameter is offset. Two valid numbers may be supplied (default: 0 0) which specify an initial x/y shift for the display.
  • Finally, for multi-page data, the starting page to be displayed can be specified using the parameter page, numbered from 1. Usually, the first page is chosen. Note that the user is offered previous/next buttons automatically whenever more than one page is present. Neither does this depend on the presence of the page parameter, nor can it be switched off via a parameter.

Examples:

  • Netscape Navigator:
      zoom="yes"   or    zoom="0.5 1.4" within the <embed ...> tag
      rotate="-90 45"
      offset="-100 200"
      page="3"
    
  • Internet Explorer:
      <param name="zoom" value="yes">  or
      <param name="zoom" value="0.5 1.4">
      <param name="rotate" value="-90 45">
      <param name="offset" value="-100 200">
      <param name="page" value="3">
    

Restrictions, limitations, further development

The classes provide limited functionality at the moment. It is work in progress. Topics that need to be addressed include:

  • bitmap images are currently displayed in grayscale only; in any case, support is still very sketchy. Do not rely on this to work yet.
  • not all types of bitmaps (e.g., CMYK colour model) are supported
  • add printing
  • add applet parameter for background colour?
  • add support for use as stand-alone application (rather than applet)
  • add proper javadoc comments to PSDrawing.java

Since the whole thing is pretty much alpha, I'd appreciate bug reports and suggestions on the Java 2 backend. Mail to Gisbert. (Please, do not ask for extensions of the Java 1.x backend. That one is as good as it gets. Please, do not ask me (Gisbert) about functionality of pstoedit in general. I don't even know how it works its magic.)

Legal stuff

Finally, the source code is covered by the GPL the same way as pstoedit. It is copyright © 1998-2000 Wolfgang Glunz and Gisbert W. Selke. This does not include the code generated by pstoedit! That code is free without any restrictions. See the file Copying in the main directory of the pstoedit distribution for the details of the GPL.

The icons for zoom-in and zoom-out have been nicked from the fine product GSView by Russell Lang/Ghostgum.

Authors

pstoedit was created and is maintained by Wolfgang Glunz.
Java support was created by Wolfgang, too. It is currently under development by Gisbert W. Selke of TapirSoft Gisbert & Harald Selke GbR.

pstoedit-3.62/contrib/java/java2/rotate.gif0000774000175500000000000000014007530466360015571 00000000000000GIF89a€ÎÏÎ!ù,@7Œ© ë½   N*YFûšî…Qe‰ ‰êAgH–êL·›<½kªv:ø±‚5¬qúÅj̦ÓP;pstoedit-3.62/contrib/java/java2/zoomin.gif0000774000175500000000000000014707530466360015615 00000000000000GIF89a€ÎÏÎ!ù,@>Œ© ÜùVˆ Pi/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/contrib/Makefile.am0000744000175500010010000000002311161500717013701 00000000000000SUBDIRS=java cairo pstoedit-3.62/contrib/Makefile.in0000644000175500010010000003645512137264203013734 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = java cairo all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/copying0000774000175500000000000004312707530467246011633 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. pstoedit-3.62/depcomp0000774000175500000000000002752507530465320011605 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # `libtool' can also be set to `yes' or `no'. depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. 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. stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" outname="$stripped.o" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; tru64) # The Tru64 AIX 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. tmpdepfile1="$object.d" tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` if test "$libtool" = yes; then "$@" -Wc,-MD else "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a space and a tab in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. test -z "$dashmflag" && dashmflag=-M ( IFS=" " case " $* " in *" --mode=compile "*) # this is libtool, let us make it quiet for arg do # cycle over the arguments case "$arg" in "--mode=compile") # insert --quiet before "--mode=compile" set fnord "$@" --quiet shift # fnord ;; esac set fnord "$@" "$arg" shift # fnord shift # "$arg" done ;; esac "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) # X makedepend ( shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift;; -*) ;; *) set fnord "$@" "$arg"; shift;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tail +3 "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. ( IFS=" " case " $* " in *" --mode=compile "*) for arg do # cycle over the arguments case $arg in "--mode=compile") # insert --quiet before "--mode=compile" set fnord "$@" --quiet shift # fnord ;; esac set fnord "$@" "$arg" shift # fnord shift # "$arg" done ;; esac "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi 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 proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. ( IFS=" " case " $* " in *" --mode=compile "*) for arg do # cycle over the arguments case $arg in "--mode=compile") # insert --quiet before "--mode=compile" set fnord "$@" --quiet shift # fnord ;; esac set fnord "$@" "$arg" shift # fnord shift # "$arg" done ;; esac "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 pstoedit-3.62/doc/0000755000175500010010000000000012137264537011051 500000000000000pstoedit-3.62/doc/changelog.htm0000744000175500010010000012725612130255403013431 00000000000000 Changelog for pstoedit

Changelog for pstoedit

New or changed in 3.62:

  • new backend generating PowerPoint pptx files contributed by Scott Pakin. Big thanks!!! This backend uses the zip library http://www.nih.at/libzip/ .
  • improved handling of composite fonts, especially those having FMapType other than 2
  • fixed a bug in detecting rectangles.
  • improved bounding box tracing in case of text (but it is still not perfect).
  • changed the creation of filenames when using the -split option. Related to that there is new option -pagenumberformat. See manual for more details.
  • fixed a bug in passing generic libplot arguments to the libplot drivers.
  • improved support for 64-bit systems related the integration of pstoedit to gsview.
  • include a version info resource in pstoedit's windows exe and DLLs.
  • include a work-around for a Hurd specific problem with dlclose.

New or changed in 3.61:

  • fixed a bug in handling of -page option
  • improved support for 64-bit systems related to different version of ghostscript
  • added some features for supporting the LaOS project (http://www.laoslaser.org/)

New or changed in 3.60:

  • added option (-minlinewidth) for adjusting very thin (e.g. zero-width) lines to a minimal width.
  • added an option (-pslanguagelevel) for easy switching the language level to be used by GhostScript during interpretation of the PostScript/PDF file.
  • new driver for the "Context Free" drawing tool (http://www.contextfreeart.org/ ) contributed by Scott Pakin.
  • fixed the windows binary version - some drivers were missing.
  • fixed some problems in handling composite fonts (FontType = 0)
  • windows 32 bit binary can call 64 bit ghostscript as exe (i.e. not via DLL interface)
  • support for 64 bit windows and Office 2010

New or changed in 3.50:

  • added an option (-gs) to specify the full path to GhostScript (under Windows - either the .exe or the DLL). This can be used by portable applications to direct pstoedit to use a specific GhostScript version.
  • Stanislav Brabec contributed several improvements to the PCB driver. See http://www.penguin.cz/~utx/pstoedit-pcb/ on how these can be useful.
  • Scott Pakin submitted several improvements to the mpost driver and the font substitution mechanism.
  • new driver for .vtk files e.g. for ParaView - http://www.paraview.org/ - but this is still a very basic version. Thanks to Mitesh Patel for initiating and testing.
  • new driver for cairo (http://cairographics.org/ ) contributed by Dan McMahill. This driver generates C-code which can be compiled and linked against the cairo libraries. See the contrib/cairo directory for an example.
  • several improvements on the DXF driver as suggested and sponsored by Markus Meyer.
  • because pstoedit may write its output to stdout, all output written by GhostScript to stdout is now redirected to stderr in order to avoid mixed output.
  • added a -q option to suppress the initial startup message of pstoedit. This can by useful when being called via a pipe, e.g. from inkscape. However, note that this does not suppress all output written to stderr - see also note above.
  • John Bowman fixed a number of problems related to clipping and image support for the Asymptote backend.
  • fixed a compilation problem with g++ V4.x.
  • new driver for gcode (.ngc files) (tested with emc see http://linuxcnc.org). Contributed by Lawrence Glaister.
  • some adaptations for newer versions of libming
  • fixed a line width problem for xfig format.
  • corrected the broken pstoedit.m4 - thanks to Ian Abbott
  • some minor code beautifying.

New or changed in 3.45:

  • Some minor corrections of warnings issued by Coverity Prevent (security related checks).
  • fixed a bug in the fig backend related to dotted lines.
  • added better support for pagesize handling in the driver framework.
  • better handling of fonts using 0 encoded characters (thanks to Vladimir Eltsov).
  • fixed a problem which caused newer versions of GhostScript to go into an endless loop.

New or changed in 3.44:

  • hotfix for the Aysmptote driver to make it compatible with Aysmptote version 1.00.
  • removed some diagnostic messages concerning temporary file handling.
  • removed the pstoedit-config.* since this is replaced by the pkg-config file pstoedit.pc.

New or changed in 3.43:

  • some usability improvements as proposed in Debian Bug Report #347732 http://groups.google.com/group/linux.debian.bugs.dist/msg/c38e1f79d75b3152?dmode=source&hl=de
  • cleaned some minor problems found by the Klocwork checker (www.klocwork.com )
  • replaced tempnam with mkstemp where available.
  • replaced several string related functions with the secure versions where available (Windows - VC++2005)
  • switched back again to calling GhostScript as .exe instead of via the DLL in case pstoedit is called via gsview. Reason - there can be only one instance of GhostScript per process and gsview needs a second instance.
  • a new driver for the OpenOffice metafile format (drvsvm) contributed by Thorsten Behrens.
  • source code cleanup considering messages issued by Gimpel's FlexeLint/PC-Lint (www.gimpel.com ).
  • added a "-glyphs" option. Given this option, the PostScript frontend passes also (if possible) the glyph names to the backend. However, so far no backend really uses the glyph names. This is only a preparation for future work.
  • changed the way how Image/Graphicmagick is handled by configure. Now configure tries to use pkg-config as proposed by the maintainer of the Debian version of pstoedit (Ray Dassen).
  • included a further patch for the Aysmptote driver.

New or changed in 3.42:

  • the Aysmptote driver now supports PNG images - thanks again to John Bowman
  • fix of small compilation problem in drvlatex2e.cpp
  • new driver (drvnoi) contributed by Nemetschek (http://www.nemetschek.de/). This driver - in combination with other DLLs which are installed as part of Nemetschek's AllPlan product - allows to convert PostScript and PDF to the AllPlan internal format. Without an installation of AllPlan - this driver is "useless". Nemetschek also contributed some code for circle detection but this is not yet included in pstoedit. It will be included in future and will then allow to generate circle primitives for formats which support such elements. (Currently circles are represented as Bezier curves)

New or changed in 3.41:

  • added a .asy backend for Asymptote files ( http://asymptote.sourceforge.net/ ). Thanks to John Bowman
  • fixed three bugs (one memory leak, two other minor problems) detected by the Coverity Prevent tool (http://www.coverity.com/)
  • PostScript frontend: fixed a bug in tracing the bounding box of raster images.
  • updated gsdll.h to newer version in order to avoid misunderstandings with respect to license.
  • new option "-useoldpolydraw" for advanced (w)emf driver - avoid usage of the Windows function PolyDraw which sometimes creates EMF files which cannot be loaded (but in most cases creates better EMF files than the old mode).
  • improved resolution in the standard and free EMF driver. Note: the WMF format is no longer supported under non-Window systems since libemf has some fundamental problems.
  • the PostScript/PDF Office import DLL (importps) can now be used also within Visio (TM).
  • fixed a bug in sub path handling - thanks to Soren Henriksen.
  • fixed the handling of some special characters in the LaTeX2e format driver.
  • installed a sourceforge project at http://sourceforge.net/projects/pstoedit

New or changed in 3.40:

  • added more diagnosis to dynload.cpp concerning dynamic loading.
  • added an option -filledrecttostroke for converting filled rectangles to simple line strokes.
  • support for cygwin environment.
  • portability fixed concerning AIX, SGI, and Mac-OS. Many thanks especially to Maarten Sneep for his patience and support related to the Mac-OS port. Getting the dynamic loading of the plugins working was quite tricky.
  • new versions of libtool, automake, and autoconf.
  • new prologue for generated idraw files.
  • the fig driver now supports "line cap styles" and "line join styles"
  • some patches the the Mathematica backend by Manfred Thole.
  • added -dNOEPS as option when calling GhostScript because pstoedit is tuned to the old (pre-8.0) behavior of GhostScript.
  • fixed a bug in drvwmf.cpp concerning the handling of font names.
  • disabled the WMF driver when libemf is used (all non-Windows systems). Libemf does not really handle WMF files. A CreateMetaFile effectively creates an EnhMetaFile - but that confuses programs which expect an real WMF file in a file with a .wmf suffix.
  • added a workaround in the EMF driver for a bug/problem in the libemf which is used under *nix for EMF generation. The problem in libemf is that if text is rendered using the simple TextOut function call the resulting EMF file is no longer usable under newer versions of Windows. For more details see the description of the -nfw option of the wmf format driver.
  • added an option "-usebbfrominput". If specified, pstoedit uses the BoundingBox as is (hopefully) found in the input file instead of one that is calculated by its own.
  • fixed a bug concerning handling of leading white space in SVG text elements.
  • add new driver to "insulate/PCB" format (see http://home.vr-web.de/~hans-juergen-jahn/software/devpcb.html ) contributed by Hans-Jürgen Jahn for more details.
  • add new set of drivers for gschem ( http://wiki.geda-project.org/geda:gschem_ug ) and PCB (http://pcb.sourceforge.net ) contributed by Mark Rages.
    (see also http://mlug.missouri.edu/~markrages/software/pstoedit_additions/ )
  • Updated code for finding newest version of ghostscript - thanks to Russell Lang.
  • fixed a bug in the MIF backend concerning handling of PNG images (sometimes wrong rotation).
  • the installation setup.exe for pstoedit now writes into the registry so gsview can find pstoedit at any place and hence it is no longer needed to install pstoedit within a subdirectory of gsview.
  • the HPGL driver now also supports writing of text as text. So far, text was drawn as lines. Thanks to Peter Kuhlemann.
  • option to allow merging of adjacent text fragments into one single text object (general option -mergetext).
  • the DXF driver now allows to map objects to different layers based on their color (driver option -ctl). Default is to allocated all objects on layer 0.
  • try to deduce driver name from the suffix of the output file if the driver name is not explicitly given via -f
  • added option "-ups" for using plain strings instead of hex strings in intermediate format (for debug purposes only)

New or changed in 3.33:

  • removed duplicate entries in list of available formats.
  • improved configure and even better support for autotrace (thanks to Masatake for the patches).
  • removed some internal trace messages written to cout for debug purposes.
  • fixed a bug in CGM driver (wrong bounding box).
  • more robust parsing of fontmap files.
  • support of fonts that use \n and \r as character codes.
  • added an option (-ndt) to fully disable the heuristics used by pstoedit to decide when to "draw" text instead of showing it as text. This may produce incorrect results, but in some cases it might nevertheless be useful. "Use at own risk".
  • added a -correctdefinefont option for working around a problem related to ChemDraw generated PostScript files.
  • Fixed bug concerning loading of shared libraries under HP-UX. Thanks to Antonio Carrarini for the support in tracking down the problem.

New or changed in 3.32:

  • some smaller bug and portability fixes.
  • workaround to cope with a change introduced since ghostscript 7.04. Some new operators were added to ghostscript's internal array of operators without increasing the maximum size of the array. This led to the problem, that pstoedit couldn't add further operators.
  • EMF backend now fully supported also under Linux and *nix like systems. Thanks to Allen Barnett (allen_AT_lignumcomputing.com) for getting libemf to work in combination with pstoedit.
  • new backend using the ImageMagick++ API. Thanks to Bob Friesenhahn (bfriesen_AT_simple.dallas.tx.us) for his patience and support. This works only with versions 5.4.8 and later of ImageMagick.
  • under Windows, now the registry is searched for the latest version of GhostScript if no GhostScript configuration setting was found from gsview. Thanks to Russell Lang for some example code concerning the registry lookup.
  • new code for translating PNG images to PostScript by Niklas Peinecke - peinecke_AT_informatik.uni-hannover.de. (needs libgd (http://www.boutell.com/gd) to compile.) - not fully integrated yet.
  • internal redesign of option handling to keep the documentation and code closer together.
  • make pstoedit.h usable from plain C programs such as autotrace.
  • added a -use_correct_font_size option to the xfig driver to support the same option of xfig.
  • improved configure and Makefile.in - Thanks to Masatake Yamoto - jet_AT_gyve.org
  • pstoedit can now be used as sort of plugin to autotrace to make all formats supported by pstoedit available to autotrace - also this was done primarily by Masatake Yamoto.

New or changed in 3.31:

  • prepared the EMF/WMF drivers to compile against the libEMF (libemf_AT_lignumcomputing.com) which allows to create EMF files under *nix. But - the libEMF is not yet released. Stay tuned.
  • include some patches for the OS/2 port and bug fixes for drvmma and drvmet submitted by Thomas Hoffmann (thoffman_AT_zappa.sax.de).
  • automatic conversion of curves to lines also in case the -bo (backend only) option is used and the target format/driver doesn't support curves.
  • Donald Arseneau (asnd_AT_triumf.ca) adds pen changes when color changes to the HPGL backend. To be activated using the -pencolors option.
  • several portability fixed, e.g. now pstoedit compiles with g++3.0.
  • changed the place where pstoedit's data file (font map tables, ...) are stored ($prefix/share/pstoedit under *nix).
  • added support to produce the shared library libpstoedit.so under Linux - Thanks to Russell Lang.
  • added a general -help option for each driver to show driver specific options. For example -f xfig:-help shows specific options for the fig backend.
  • minor bug fix in CGM backend - some pathes triggered an assertion violation.
  • several enhancements for the DXF backend. Now it supports the DXF SPLINE element as well. Big thanks to Daniel Gehriger (gehriger_AT_linkcad.com) for his help concerning the DXF format.
  • support for TeX fonts in the SVG backend. Big thanks to Michel Goossens for the suggestions and his help. He can also provide the SVG definitions of the CM TeX fonts. See also http://home.cern.ch/goossens/svgfonts.html .
  • Now the SVG driver also supports a font map.
  • some minor bug fixes in the PostScript frontend related to font handling.
  • changed "Killustrator" to "Kontour" where appropriate.

New or changed in 3.30:

  • new backend for Mathematica - contributed by Manfred Thole <manfred_AT_thole.org>
  • new SWF backend (beta release state - still lot's of features missing (fonts, dash handling, ...). This backend is based on the ming API (www.opaque.net/ming/).
  • cleanup of the xfig backend. In some cases X-splines looked very different from the original image. Now the X-splines that are produced by the xfig backend are constrained differently, so that they fit the bezier curve better. Thanks to Ian MacPhedran.
  • added an option -startdepth to the xfig driver
  • improved support for various types of PostScript image operators. Now there is an option for backend developers to ask for a PNG file to be generated directly by the frontend (at GhostScript level). Currently this is used only for the SVG backend, but more will follow later.
  • added an option -adt (automatic draw text). This selectively enables -dt for all fonts that don't look like a text font.
  • Now the BoundingBox is provided to the backends - though not all make use of it so far.
  • man improvements to the SVG backend (plugin) like support for dashes, clipping, raster images, Symbol font
  • fixed a bug which showed up with PostScript files generated by the new Adobe PostScript driver.
  • some extensions (new options) to the TK backend - contributed by Chris Cox
  • added support for writing the output to a file it the input is stdin (pstoedit -f format - outfile). This allows to implement a pstoedit printer driver via redmon. You can print directly to any format pstoedit supports directly from any Windows application.
  • -rgb (instead of now default CMYK)
  • now pages can be rotated arbitrarily (-rotate). Thanks to Andrew Birrell <birrell_AT_pa.dec.com> for the permission to use the corresponding code from pstotext).
  • made the source code almost clean concerning FlexeLint messages (By the way, I like this tool- see www.gimpel.com )
  • addes some assertions in to the code to further runtime checking
  • added a %TGIF header to support the Unix file command. (Thanks to Gintautas.Grigelionis_AT_ki.ericsson.se)
  • fixed a compilation problem with SUN's C++ compilers.

New or changed in 3.21:

  • some extensions (new options) to the TK backend. Now supports multiple pages as well - Thanks to Chris Cox. See manual for more details.
  • bugfix : -pagesize option was not recognized correctly.
  • minor bugfix in FIG backend to be compliant with prtfig.
  • bugfix in the frontend (lexer). Now the lexer can be started multiple times after each other. This is important for programs using the pstoedit.dll.
  • added support for writing PNG in image.cpp. Now backends can use this to write raster images into PNG files.
  • improved plugins: CGM (supports Bezier now), SVG (supports raster images) and EMF (supports raster images), importps (supports raster images).
  • reanimation of the OS/2 port - thanks to Thomas Hoffmann.
  • the binary releases are now linked with the libplotter (GNU plotutils http://www.gnu.org/software/plotutils/plotutils.html ) to allow direct access to the variety of drivers contained in that library (FIG, PCL, HPGL, TEK, X11 (Unix only), SVG, CGM, AI). Some formats are now available in two versions. One directly with a native driver in pstoedit and one via the libplot.
  • pstoedit now cooperates with autotrace. Autotrace can now produce a dump file for further processing by pstoedit using the -bo (backend only) option. Autotrace is a program written by a group around Martin Weber and can be found at http://sourceforge.net/projects/autotrace/

New or changed in 3.20:

  • fixed a bug with precision text (-pti/a).
  • fixed a bug in pstoedit.ph.
  • new backend latex2e contributed by Scott Pakin.
  • include SVG driver into binary releases for Linux/Solaris.

New or changed in 3.19:

  • experimental support for filling in the HPGL backend.
  • implement copypage same as showpage plus emit a warning.
  • fixed a bug in consistency checking (frontend vs. backend when using the -bo option)
  • automatic enabling of -dt option if backend doesn't support text.
  • fixed a bug in memory allocation. Windows requires that the memory is deallocated in the same DLL as it was allocated. This was a problem with some plugins.

New or changed in 3.18:

  • new java2 backend which supports much better rendering than the old java1 backend. Thanks to Gisbert W. Selke of TapirSoft Gisbert & Harald Selke GbR.
  • new option (-t2fontast1) to handle type 2 fonts similarly to t1 fonts - This is sort of experimental.
  • fixed one bug in the binary cgm (too long header).
  • fixed a bug in the configure script.
  • made the postscript output again more DSC compliant as pointed out by Russell Lang
  • made the code more "cleaner" concerning rules checked by CodeWizard (www.parasoft.com).

New or changed in 3.17:

  • included a patch for idraw to support bitmap images. Thanks to Scott Johnston for the contribution.
  • much improved WMF backend by Thorsten Behrens.
  • experimental support for SVG (http://www.w3.org/Graphics/SVG/) in the plugins.dll.
  • added a function to the DLL interface for gsview to clean up memory allocated by the pstoedit.dll.
  • added an option (-uchar) which allows to define the character to be used instead of characters that are not available in the standard character encoding but nevertheless used by the input PostScript/PDF file.
  • allow standard output to be used also for backends that don't support multiple pages as suggested by Andread Amann
  • added a BeginSetup / EndSetup to the PostScript output to allow reading in CorelDraw 3/4 as proposed by Martin Weber
  • added a consistency check if the -bo option is used to avoid problems when the selected backend has some restrictions, e.g. does not support curves.

New or changed in 3.16:

  • fixed some small memory leaks (missing [] with delete) and a potential null pointer access. Thanks to Parasoft for a temporary license for Linux of their Insure++. It was quite easy to find these bugs with this tool.
  • changed the starting depth of objects in xfig format from 999 to 499. This allows new objects to be inserted in front or behind the converted figure.
  • the makefile for pstoedit can now be configured automatically using configure - at least on Un*x like systems. Thanks Scott Pakin for providing the necessary packages.
  • added the -pti and -pta option which allows for "precision text" via individual placement of each character within a string.
  • the tgif backend now supports arbitray streched text. The text placement is currently not fully correct. This problem will probably be fixed in tgif 4.1.26.

New or changed in 3.15:

  • fixed a compilation problem and makefile problem (make install).
  • switch to a new documentation style. The manual page is now originally written in LaTeX and translated to Un*x man format and HTML. Thanks to Rolf Niepraschk (niepraschk_AT_ptb.de) for this work. The Linux community will have big thanks for this contribution.
  • added a new option to set the page size for the output medium. However this is currently used by the libplot backend only.
  • some small correction on the libplot driver.
  • fixed the broken -scale option for the tgif backend.
  • backends can now access the current setting of the miterlimit using currentMiterLimit().
  • text consisting entirely of spaces is now suppressed. This caused problems with some backends, e.g. xfig.
  • changed the version of drvbase (because of the miterlimit and pagesize support). This means that all plugins need to be updated (just the .dll not the keys). Otherwise you will get an error message.

New or changed in 3.14:

  • added two checkboxes for the importps dialog
  • bug fix related to font caching in the EMF backend
  • added a bugfix for the MetaPost backend received from Scott Pakin
  • incorporated a lot of improvements to the libplot driver. Thanks to Robert S. Maier (rsm_AT_math.arizona.edu)
    Notice: most of these improvement will need at least libplot version 2.3. See drvlplot.cpp for all the new options.
  • pstoedit now implicitly looks for a driver specific fontmap file named <drivername>.fmp
  • fixed a problem (bug in gs?) which was caused by some PDF files when gs5.50 was used. This problem did not occur anymore with newer versions of gs.
  • added the classed needed by the generated Java Code to the distribution (see java subdirectory)

New or changed in 3.13:

  • change in frontend and drvbase: Now the full effective font matrix can be retrieved by backends
  • changed again the version of drvbase (because of the font matrix functions). This means that all plugins need to be updated (just the .dll not the keys). Otherwise you will get an error message.
  • added a new backend for the skencil (formerly sketch) format (www.skencil.org) contributed by
    Bernhard Herzog (bernhard_AT_users.sourceforge.net)
  • many improvements in the MetaPost backend and a better fontmap.mpost by Scott Pakin.
  • minor bug fix with line width and text elements in the TGIF backend.
  • added an option to the TGIF backend to generate HREF attributes for each text element (proposed by Tobias Buchal buchal41_AT_che41a0.der.edf.fr). This is still in an experimenal stage!
  • added an option (-nc) to force the replacement of curves with line segments even for backends that support curves.
  • fixed a bug with the -flat option not beeing honoured correctly in combination with the new -nc option
  • added an option to emulate clipping (-sclip). This however results in larger number of points ! Use it only if the missing support for clipping causes problems with your file.

New or changed in 3.12:

  • small bug fix in the meta post backend (blank font names) and in the fontmap.mpost file.
  • several bug fixes and code reorganization in the subpath simulation part.
  • sub path simulation is now available for all backends, not just xfig. However, this was not tested very intensively so far. It works quite well with xfig and tgif.
  • bug fix for related to the usage of "-f gs:...".
  • small bug fix in the metapost driver and some additions to the fontmap.mpost file.
  • added a setglobal also for the "non -nb" case to pstoedit.pro to cope with gs5.82.
  • bux fix in documentation (-fontmap instead of -mapfile).
  • added some support for easier retrieval of dash patterns from within backends.
  • extended the check for "mergable" path to include also eofilled pathes and made pathsCanBeMerged virtual so it can be overloaded by a specific backend.
  • changed again the version of drvbase. This means that all plugins need to be updated (just the .dll not the keys). Otherwise you will get an error message.
  • bug fix in the EMF driver of the plugins.dll and importps.dll regarding the handling of closepath.
  • added an option to the xfig backend to set the paper width (-f "xfig:-depth depth in inches")
  • added an option to the ps2ai driver (-88) to activate the AI-88 format instead of the AI-3 format
  • added a fontmap.win in the misc directory as an example for a Windows fontmap file. (-fontmap option)

New or changed in 3.11:

  • improved handling of TrueType fonts under Windows 9x/NT. Pstoedit can now deal with TrueType fonts if GhostScript is configured for TrueType support.
  • fixed an incompatibility with older version of GhostScript
  • fixed a bug that was caused when the GS_LIB variable was set.
  • added a new backend for the libplot (GNU plotutils) library () (GNU MetaFiles). This allows to use the additional format drivers of the GNU plotting utilities.
  • Burkhard Plaum (plaum_AT_IPF.Uni-Stuttgart.de) added support for complex filled paths (paths consisting of an arbitraty sequence of moveto, lineto and curveto in combination with fill and eofill) to the xfig backend. In future, this will be made available to other backend that don't support such pathes as well. In order to activate this feature you need to specify the -ssp (simulate sub paths) option.
  • changed again the version of drvbase due to the support for complex paths. This means that all plugins need to be updated (just the .dll not the keys). Otherwise you will get an error message.
  • improved the EMF driver in the importps.dll. I now generates much more compact EMF files.
  • Added a general option for specifying a file containing a font mapping (document font -> font in target format). So far this was just used in the mpost backend but this is now available for general usage. See the misc directory in the source distribution for an example.
  • removed the STL dependency in the mport driver. This driver can now be compiled as well without having the STL.
  • some internal code reorganization.
  • fixed a bug in the test target of the makefile

New or changed in 3.10:

  • replaced the -dNOBIND with -dDELAYBIND (Russell Lang pointed this out). This should avoid problems with files that redefine standards PostScript operators with totally different semantics, e.g. lt (less than) to mean lineto. If you notice different results than before use the -nb option to switch back to the previous style (-dNOBIND) and send an example to the author, please.
  • changed the version of drvbase due to a new virtual function. This means that all plugins need to be updated (just the .dll not the keys).
  • added a check for a failure in the constructor of drvWMF.
  • fixed a compilation problem for systems that don't support shared libraries and some warnings issued by the IRIX C++ compiler.
  • added the PIC backend contributed by Egil Kvaleberg (egil_AT_kvaleberg.no)
  • added the backend for the Kontour (now replaced by Karbon) format - contributed by Kai-Uwe Sattler (kus_AT_iti.cs.uni-magdeburg.de)
  • added some files missing for the compilation under Windows and adapted the makefile.
  • changed the way the gsview32.ini file is searched.
  • pstoedit now also uses the GS_LIB path from the gsview32.ini file ( GhostscriptInclude entry). This was done because in some situations the gswin32.dll could not find its own init files.
  • activated the (dead) -s option again which allows to specify a scaling factor for the output. At the moment it is just active for the idraw backend.
  • added a MetaPost backend provided by Scott Pakin.
  • changed the source code to be compilable against the ANSI iostream header files. This was needed because the metapost backend uses STL and the standard string class and thus the ANSI headers are needed.
  • In this version the drvbase class was changed. This means that you need to get a new version of the plugin.dll if you have a previous version. Otherwise you will get an error message.

New or changed in 3.03:

  • better handling of "extreme" dash patterns. If the ratio on/off is > 100 then the line is treated as solid now.
  • source code available now.

New or changed in 3.02:

  • new driver for the AI (Adobe Illustrator) format. This is not a real native pstoedit driver but instead just a conversion to the AI format using the ps2ai.ps that comes with every installation of GhostScript. It is included to provide the same "look-and-feel" for the conversion to AI. The additional benefit is that this conversion is now available also via the "convert-to-vector" menu of Gsview. However, lot's of files don't convert nicely or at all using ps2ai.ps. So a native pstoedit driver would be much better. Anyone out there to take this ? The AI format is usable for example by Mayura Draw (http://www.mayura.com ). Also a driver to the Mayura native format would be nice.
    However, this new driver relies on a slightly modified ps2ai.ps which hopefully will go into the next version of GhostScript.
  • Added the handling of GhostScript output in the case the pstoedit.dll is used by gsview. Now also messages from GhostScript can be seen in the Gsview message box.

New or changed in 3.01:

  • Added a work-around for files redefining "length"
  • extended the trouble-shooting section in the manual.

New or changed in 3.00:

  • Eliminated compatibility problem with GhostScript 5.xx
  • packed most stuff into a pstoedit.dll under windows. This dll can now be called by gsview. pstoedit.exe is just a small program calling the pstoedit.dll
  • additional drivers can now be put into separate plugin-libraries. See the manual for availability of such drivers.
  • pstoedit now calls GhostScript via the DLL interface under Windows. Thanks to Russell Lang for his help regarding this.
  • new HPGL driver contributed by Peter Katzmann (p.katzmann_AT_thiesen.com)
  • fix of a bug in pstoedit.ph which caused an infinite loop.
  • some changes in pstoedit.ph to cope with changes in newer version of ghostscript.
  • fix of s small bug in drvidraw by Jorge A. Gautier (jgautier_AT_netcom.com)
  • include a new Java GUI contributed by Leszek Piotrowicz (leszek_AT_sopot.rodan.pl)
  • new backend for Tcl/Tk contributed by Chris Cox (ccox_AT_airmail.net)
  • new internal architecture which now allows link time and run-time loading of backends.
  • temporarily dropped support for the OS/2 MET backend (the author was not able to adapt the backend to the new architecture so far),
  • rewrite of the WMF backend by Thorsten Behrens (Thorsten_Behrens_AT_public.uni-hamburg.de) and Bjoern Petersen. The first version of this driver relied on Borland 5.0 and thus was not portable to other compilers. Now it uses the pure Windows API and thus compiles also with Visual C++
  • added a new "gs" pseudo backend which runs GhostScript with a given GhostScript output device, e.g. -f gs:pdfwrite runs the GhostScript PDF writer.
  • added a -v (for verbose) option
  • added a -split option to split the output into individual files for each page
  • Bug fix: a default font specified using -df was not used in the xfig backend
  • workarounds for two bugs on djgpp (binary open and tempnam)
  • -f ps supports emission of curvetos (proposal and partial patch from
    Erik Lundh (Erik.Lundh_AT_compelcon.se))
  • PostScript output now generates some DSC comments. At least GhostView understands the output.
  • xfig output is compatible with new format of xfig 3.2
  • xfig output now creates x-splines
  • image support for xfig done by Leszek Piotrowicz (leszek_AT_sopot.rodan.pl)
  • image support for Framemaker-MIF format
  • added support for dashes for Framemaker-MIF format
  • fixed a problem with detection of not available files (MSVC only)
  • Changed some code in drvbase.h in order to work around a not implemented feature of the HP-CC compiler.
  • Fixed a problem that causes Turbo C++ to hang (compiler problem)
  • changed usage of deviceinfo to currentpagedevice for better compatibility with newer version of GhostScript (thanks to Peter L. Deutsch for the hint).
  • fixed a bug caused by explicit HWResolution settings from with .ps file (font sizes were wrong)

New or changed in 2.60:

  • New backend for idraw contributed by Scott Pakin (scott+ps2ed_AT_pakin.org)
  • Internal redesign in order to support the usage of the drivers from other programs, not just from pstoedit.
  • Full implementation of kshow, xshow, yshow, xyshow
  • Added -psargs option and removed -rnnxnn option
  • Added -include option
  • Fixed the linecap and linejoin problem for MIF
  • Port to RiscOS done by Rob Warner (rcw2_AT_ukc.ac.uk)
  • winp2eap.def missing in distribution
  • Fixed a problem with .ps files that redefined showpage themselves
  • Fixed some problems related to the 'string' operator. Some PostScript programs used to redefine 'string'.
  • Fixed a portabiltiy problem for DecAlpha
  • Fixed some OS/2 compilation problems
  • Fixed some DEC compilation problems
  • Fixed a problem that caused pstoedit to 'draw' each character when running gs3.5x
  • Added support for Frame-specific encoding of special characters
  • Fixed an encoding bug for PDF (minus was defined twice)

New or changed in 2.50:

  • New backend for WMF, contributed by Jens Weber ( wr_AT_lzh1.lzh.de )
  • Windows GUI, contributed by Jens Weber ( wr_AT_lzh1.lzh.de )
  • direct handling of .pdf files (as input) (Thanks to ghostscript and the -dNOBIND option !!)
  • fixed a bug caused by ignoring the textmatrix
  • changed the pdf output so that xpdf accepts it
  • Fonts not supported by the selected backend, are now "drawn" automatically, as if the option -dt was given for them.
  • implemented the different show's for pdf
  • handling of reencoded fonts.
  • support for dashed lines (so far for cgm, xfig, and pdf only)
  • added workaround for bug in libg++ on some linux systems (Thanks to Derek B. Noonburg (derekn_AT_vw.ece.cmu.edu) and Rainer Dorsch (rd_AT_berlepsch.wohnheim.uni-ulm.de) for taking care of this linux specific problem and the workaround)
  • fixed a bug with ordering of text and lines
  • replaced usage of tmpnam by tempnam so the user can control the place where temp files are allocated. (via TMPDIR under *nix, TMP or TEMP under DOS/Win)
  • Bold was not treated correctly in MIF backend
  • Gnuplot backend could not be called
  • zero length text caused problems with some backends
  • ^M caused problems with some backends.
  • handling filenames containing \
  • fixed compile errors with some compilers in drvjava.cc
  • added support for linecaps in PDF backend

New or changed in 2.41:

  • changed makefile for DOS
  • fixed problem in pdf backend with '\' characters
  • fixed a problem with linewidth (all backends)
  • three new backends from
pstoedit-3.62/doc/index.htm0000744000175500010010000002433212017217172012605 00000000000000 pstoedit
Custom Search

pstoedit

Overview

pstoedit translates PostScript and PDF graphics into other vector formats.

Supported Formats

Currently pstoedit can generate the following major formats:

  • Tgif .obj format (for tgif version >= 3)
  • .fig format for xfig
  • pdf - Adobe's Portable Document Format
  • gnuplot format
  • Flattened PostScript (with or without Bezier curves)
  • DXF - CAD exchange format
  • LWO - LightWave 3D
  • RIB - RenderMan
  • RPL - Real3D
  • Java 1 or Java 2 applet
  • Idraw format (in fact a special form of EPS that idraw can read)
  • Tcl/Tk
  • HPGL
  • AI (Adobe Illustrator) (based on ps2ai.ps - not a real pstoedit driver - see notes below and manual)
  • Windows Meta Files (WMF) (Windows only)
  • Enhanced Windows Meta Files (EMF) (Windows, but also Linux/Unix if libemf is available)
  • OS/2 meta files (OS/2 only)
  • PIC format for troff/groff
  • MetaPost format for usage with TeX/LaTeX
  • LaTeX2e picture
  • Kontour
  • GNU Metafile (plotutils / libplot)
  • Skencil ( http://www.skencil.org )
  • Mathematica
  • via ImageMagick to any format supported by ImageMagick
  • SWF
  • CNC G code
  • VTK files for ParaView and similar visualization tools

Besides these some further very special formats are supported. See the pstoedit.htm for a complete list of available drivers.

The following formats are available as additional plugins on a shareware basis. See http://www.pstoedit.net/plugins/ for more details.

  • (Frame)Maker Intermediate Format (MIF)
  • CGM Format (both binary and textual)
  • SVG - scalable vector format. One candidate of the W3C for a web standard for vector drawings. See http://www.w3.org/Graphics/SVG/ for more details.
  • Better Enhanced Windows Meta Files (EMF) (supports curves and compound pathes and does more accurate text formatting) (Windows only)
  • RTF (MS Word) (Windows only)

Implementing support for other formats should be very easy. The architecture of pstoedit consists of a PostScript frontend which needs to call a PostScript interpreter like Ghostscript and the individual backends which are pugged into a kind of framework. This framework can be used independently from the PostScript frontend from any other program. The framework provides a uniform interface to all different backends. You need a C++ compiler to compile and GhostScript to run pstoedit. pstoedit should run on all Un*x like systems (including cygwin) and has also been ported to OS/2, Windows 9x/NT/2K/XP/Vista, and RiscOS.

Since version 3.00 it is possible to add new drivers without even recompiling the core program. pstoedit can load additional drivers as plugins.

Download

You can download pstoedit:

In case of download problems, visit this page via the alternate URL.

pstoedit can also be used from within gsview via the "Edit|Convert to vector" menu.

More Information

You get can more information from:

pstoedit also cooperates with autotrace. Autotrace can produce a dump file for further processing by pstoedit using the -bo (backend only) option. Autotrace is a program written by a group around Martin Weber and can be found at http://sourceforge.net/projects/autotrace/

Related Links

Some links more or less related to pstoedit can be found here.


Primary Author

Wolfgang Glunz email: wglunz35_AT_pstoedit.net http://de.linkedin.com/in/wolfgangglunz

Donations

Donations to the pstoedit project are welcome and can be done easily here:

Pstoedit at Facebook

Mailing List

There is an e-mail list for people that want to be informed about updates and bug-fixes related to pstoedit and importps.

Please note: This list is provided via Yahoo! Groups which adds a small commercial message to every mail sent to the list. You won't get additional advertisement via this list. Only the one that comes with each message sent explicitly to the list. If you don't like this policy, don't subscribe.

Subscribe to pstoedit

Powered by us.groups.yahoo.com


Impressum
Wolfgang Glunz email: wglunz35_AT_pstoedit.net http://de.linkedin.com/in/wolfgangglunz

pstoedit-3.62/doc/Makefile.am0000774000175500000000000000020511046137646013022 00000000000000EXTRA_DIST=Makefile.l2m readme.txt changelog.htm index.htm pstoedit.1 pstoedit.htm pstoedit.tex pstoedit.trans man_MANS = pstoedit.1 pstoedit-3.62/doc/Makefile.in0000644000175500010010000003046512137264203013034 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = Makefile.l2m readme.txt changelog.htm index.htm pstoedit.1 pstoedit.htm pstoedit.tex pstoedit.trans man_MANS = pstoedit.1 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $$i; then file=$$i; \ else file=$(srcdir)/$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ done uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic 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-man1 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-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-man uninstall-man1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/doc/Makefile.l2m0000774000175500000000000000236710111164442013114 00000000000000# # Makefile for pstoedit documentation # (adapted from `Makefile' in the latex2man package) # Rolf Niepraschk, niepraschk@ptb.de, 99/08/20 # BASE = pstoedit DVIPS_FLAGS = -Pwww # use the type1 version of the cm fonts LATEX2MAN_FLAGS = -t pstoedit.trans .PHONY : all clean realclean .SUFFIXES : .htm .1 .tex .ps .info .texi .txt all : $(BASE).1 $(BASE).htm $(BASE).txt # $(BASE).ps $(BASE).pdf $(BASE).info $(MAKE) -f Makefile.l2m clean %.dvi : %.tex latex $< # latex $< %.ps : %.dvi dvips $(DVIPS_FLAGS) -o $@ $< %.pdf : %.tex pdflatex $< # pdflatex $< %.info : %.texi makeinfo $< %.txt : %.1 groff -t -man -Tlatin1 $< | \ sed -e 's/.//g' \ -e 's/7|//g' \ -e 's/[6-9]//g' \ -e 's///g' \ -e 's/­$$/- /' > $@ %.1 : %.tex latex2man $(LATEX2MAN_FLAGS) -M $< $@ %.htm : %.tex latex2man $(LATEX2MAN_FLAGS) -H $< $@ %.texi : %.tex latex2man $(LATEX2MAN_FLAGS) -T $< $@ %.rtf : %.1 rman -f RTF $< > $@ #$(BASE).1 : $(BASE).tex $(BASE).trans #$(BASE).htm : $(BASE).tex $(BASE).trans clean : rm -f $(BASE).aux $(BASE).log #$(BASE).dvi realclean : clean $(RM) $(BASE).ps $(BASE).pdf $(BASE).1 $(BASE).htm $(BASE).texi \ $(BASE).info $(BASE).txt $(BASE).rtf # -- eof -- pstoedit-3.62/doc/pstoedit.10000774000175500000000000016420712137263736012722 00000000000000'\" t .\" Manual page created with latex2man on Sun Apr 28 20:18:05 CEST 2013 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW .nf .. .de Ve .ft R .fi .. .TH "PSTOEDIT" "1" "April 2013" "Conversion Tools " "Conversion Tools " .SH NAME pstoedit \- a tool converting PostScript and PDF files into various vector graphic formats .PP .SH SYNOPSIS .PP .SS FROM THE COMMAND SHELL .PP pstoedit [\fB\-v \-help\fP] .br .PP pstoedit [\fB\-include\fP\fI name of a PostScript file to be included\fP] [\fB\-df\fP\fI font name\fP] [\fB\-nomaptoisolatin1\fP] [\fB\-dis\fP] [\fB\-pngimage\fP\fI filename \- for debugging purpose mainly. Write result of processing also to a PNG file.\fP] [\fB\-q\fP] [\fB\-nq\fP] [\fB\-nc\fP] [\fB\-nsp\fP] [\fB\-mergelines\fP] [\fB\-filledrecttostroke\fP] [\fB\-mergetext\fP] [\fB\-dt\fP] [\fB\-adt\fP] [\fB\-ndt\fP] [\fB\-dgbm\fP] [\fB\-correctdefinefont\fP] [\fB\-pti\fP] [\fB\-pta\fP] [\fB\-xscale\fP\fI number\fP] [\fB\-yscale\fP\fI number\fP] [\fB\-xshift\fP\fI number\fP] [\fB\-yshift\fP\fI number\fP] [\fB\-centered\fP] [\fB\-minlinewidth\fP\fI number\fP] [\fB\-pagenumberformat\fP\fI page number format specification\fP] [\fB\-split\fP] [\fB\-v\fP] [\fB\-usebbfrominput\fP] [\fB\-ssp\fP] [\fB\-uchar\fP\fI character\fP] [\fB\-nb\fP] [\fB\-page\fP\fI page number\fP] [\fB\-flat\fP\fI flatness factor\fP] [\fB\-sclip\fP] [\fB\-ups\fP] [\fB\-rgb\fP] [\fB\-useagl\fP] [\fB\-noclip\fP] [\fB\-t2fontsast1\fP] [\fB\-keep\fP] [\fB\-debugfonthandling\fP] [\fB\-gstest\fP] [\fB\-nfr\fP] [\fB\-glyphs\fP] [\fB\-useoldnormalization\fP] [\fB\-rotate\fP\fI angle (0\-360)\fP] [\fB\-fontmap\fP\fI name of font map file for pstoedit\fP] [\fB\-pagesize\fP\fI page format\fP] [\fB\-help\fP] [\fB\-gs\fP\fI path to the ghostscript executable/DLL \fP] [\fB\-bo\fP] [\fB\-psarg\fP\fI argument string\fP] [\fB\-pslanguagelevel\fP\fI PostScript Language Level to be used 1,2, or 3\fP] \fB\-f\fP\fI "format[:options]"\fP [\fB\-gsregbase\fP\fI GhostScript base registry path\fP] [ inputfile [outputfile] ] .PP .SS FROM GSVIEW .PP Pstoedit can be called from within gsview via "\fBEdit | Convert to vector format\fP" .PP .SS FROM PROGRAMS THAT SUPPORT THE ALDUS GRAPHIC IMPORT FILTER INTERFACE .PP pstoedit can also be used as PostScript and PDF graphic import filter for several programs including MS\-Office, PaintShop\-Pro and PhotoLine. See \fBhttp://www.pstoedit.net/importps/\fP for more details. .PP .SH DESCRIPTION .PP .SS RELEASE LEVEL .PP This manpage documents release 3.62 of pstoedit\&. .PP .SS USE .PP pstoedit converts PostScript and PDF files to various vector graphic formats. The resulting files can be edited or imported into various drawing packages. Type .PP \fBpstoedit \-help\fP .PP to get a list of supported output formats. Pstoedit comes with a large set of format drivers integrated in the binary. Additional drivers can be installed as plugins and are available via \fBhttp://www.pstoedit.net/plugins/\fP\&. Just copy the plugins to the same directory where the pstoedit binary is installed or \- under Unix like systems only \- alternatively into the lib directory parallel to the bin directory where pstoedit is installed. .PP However, unless you also get a license key for the plugins, the additional drivers will slightly distort the resulting graphics. See the documentation provided with the plugins for further details. .PP .SS PRINCIPLE OF CONVERSION .PP pstoedit works by redefining the some basic painting operators of PostScript, e.g. \fBstroke\fP or \fBshow\fP (bitmaps drawn by the image operator are not supported by all output formats.) After redefining these operators, the PostScript or PDF file that needs to be converted is processed by a PostScript interpreter, e.g., Ghostscript (\fIgs\fP(1)). You normally need to have a PostScript interpreter installed in order to use this program. However, you can perform some "back end only" processing of files following the conventions of the pstoedit intermediate formate by specifying the \fB\-bo\fP option. See "Available formats and their specific options" below. .PP The output that is written by the interpreter due to the redefinition of the drawing operators is a sort of \&'flat\&' PostScript file that contains only simple operations like moveto, lineto, show, etc. You can look at this file using the \fB\-f debug\fP option. .PP This output is read by end\-processing functions of pstoedit and triggers the drawing functions in the selected output format driver sometime called also "backend". .PP .SS NOTES .PP If you want to process PDF files directly, your PostScript interpreter must provide this feature, as does Ghostscript. Aladdin Ghostscript is recommended for processing PDF and PostScript files. .PP .SH OPTIONS .PP .SS GENERAL OPTIONS .TP [\fB\-include\fP\fI name of a PostScript file to be included\fP] This options allows to specify an additional PostScript file that will be executed just before the normal input is read. This is helpful for including specific page settings or for disabling potentially unsafe PostScript operators, e.g., file, renamefile, or deletefile. .PP .TP [\fB\-xscale\fP\fI number\fP] scale by a factor in x\-direction .PP .TP [\fB\-yscale\fP\fI number\fP] scale by a factor in y\-direction .PP .TP [\fB\-xshift\fP\fI number\fP] shift image in x\-direction .PP .TP [\fB\-yshift\fP\fI number\fP] shift image in y\-direction .PP .TP [\fB\-centered\fP] center image before scaling or shifting .PP .TP [\fB\-minlinewidth\fP\fI number\fP] minimal line width. All lines thinner than this will be drawn in this line width \- especially zero\-width lines .PP .TP [\fB\-pagenumberformat\fP\fI page number format specification\fP] format specification for page numbers in file name if \-split is used. The specification is used to create the page number using sprintf.The specification shall not include the leading .PP .TP [\fB\-split\fP] Create a new file for each page of the input. For this the output filename must contain a %d which is replaced with the current page number. This option is automatically switched on for output formats that don\&'t support multiple pages within one file, e.g. fig or gnuplot. .PP .TP [\fB\-usebbfrominput\fP] If specified, pstoedit uses the BoundingBox as is (hopefully) found in the input file instead of one that is calculated by its own. .PP .TP [\fB\-page\fP\fI page number\fP] Select a single page from a multi page PostScript or PDF file. .PP .TP [\fB\-rgb\fP] Since version 3.30 pstoedit uses the CMYK colors internally. The \-rgb option turns on the old behavior to use RGB values. .PP .TP [\fB\-useagl\fP] use Adobe Glyph List instead of the IsoLatin1 table (this is experimental) .PP .TP [\fB\-noclip\fP] don\&'t use clipping (relevant only if output format supports clipping at all) .PP .TP [\fB\-rotate\fP\fI angle (0\-360)\fP] Rotage image by angle. .PP .TP [\fB\-pagesize\fP\fI page format\fP] set page size for output medium. This option sets the page size for the output medium. Currently this is just used by the libplot output format driver, but might be used by other output format drivers in future. The page size is specified in terms of the usual page size names, e.g. letter or a4. .PP .TP [\fB\-help\fP] show the help information .PP .TP [\fB\-gs\fP\fI path to the ghostscript executable/DLL \fP] tells pstoedit which ghostscript executable/DLL to use \- overwrites the internal search heuristic .PP .TP [\fB\-bo\fP] You can run backend processing only (without the PostScript interpreter frontend) by first running \fBpstoedit\fP \fB\-f dump\fP \fIinfile\fP \fIdumpfile\fP and then running \fBpstoedit\fP \fB\-f\fP\fI format\fP \fB\-bo\fP \fIdumpfile\fP \fIoutfile\fP\&. .PP .TP [\fB\-psarg\fP\fI argument string\fP] The string given with this option is passed directly to Ghostscript when Ghostscript is called to process the PostScript file for pstoedit\&. For example: \fB\-psarg\fP\fB "\fP\fB\-r300x300\fP\fB"\fP\&. This causes the resolution to be changed to 300x300 dpi. (With older versions of GhostScript, changing the resolution this way has an effect only if the \fB\-dis\fP option is given.) If you want to pass multiple options to Ghostscript you can use multiple \-psarg options \fB\-psarg opt1\fP \fB\-psarg opt2\fP \fB\-psarg opt2\fP\&. See the GhostScript manual for other possible options. .PP .TP [\fB\-pslanguagelevel\fP\fI PostScript Language Level to be used 1,2, or 3\fP] PostScript Language Level to be used 1,2, or 3 You can switch Ghostscript into PostScript Level 1 only mode by \fB\-pslanguagelevel 1\fP\&. This can be useful for example if the PostScript file to be converted uses some Level 2 specific custom color models that are not supported by pstoedit. However, this requires that the PostScript program checks for the PostScript level supported by the interpreter and "acts" accordingly. The default language level is 3. .PP .TP \fB\-f\fP\fI "format[:options]"\fP target output format recognized by pstoedit\&. Since other format drivers can be loaded dynamically, type pstoedit \-help to get a full list of formats. See "Available formats and their specific options " below for an explanation of the [\fI:options\fP] to \fB\-f\fP format. If the format option is not given, pstoedit tries to guess the target format from the suffix of the output filename. However, in a lot of cases, this is not a unique mapping and hence pstoedit demands the \fB\-f\fP option. .PP .TP [\fB\-gsregbase\fP\fI GhostScript base registry path\fP] registry path to use as a base path when searching GhostScript interpreter This option provides means to specify a registry key under HKLM/Software where to search for GS interpreter key, version and GS_DLL / GS_LIB values. Example: "\-gsregbase MyCompany" means that HKLM/Software/MyCompany/GPL GhostScript would be searched instead of HKLM/Software/GPL GhostScript. .PP .SS TEXT AND FONT HANDLING RELATED OPTIONS .TP [\fB\-df\fP\fI font name\fP] Sometimes fonts embedded in a PostScript program do not have a fontname. For example, this happens in PostScript files generated by \fIdvips\fP(1)\&. In such a case pstoedit uses a replacement font. The default for this is Courier. Another font can be specified using the \fB\-df\fP option. \fB\-df Helvetica\fP causes all unnamed fonts to be replaced by Helvetica. .PP .TP [\fB\-nomaptoisolatin1\fP] Normally pstoedit maps all character codes to the ones defined by the ISO\-Latin1 encoding. If you specify \fB\-nomaptoisolatin1\fP then the encoding from the input PostScript is passed unchanged to the output. This may result in strange text output but on the other hand may be the only way to get some fonts converted appropriately. Try what fits best to your concrete case. .PP .TP [\fB\-pngimage\fP\fI filename \- for debugging purpose mainly. Write result of processing also to a PNG file.\fP] for debugging purpose mainly. Write result of processing also to a PNG file .PP .TP [\fB\-dt\fP] Draw text \- Text is drawn as polygons. This might produce a large output file. This option is automatically switched on if the selected output format does not support text, e.g. \fIgnuplot\fP(1)\&. .PP .TP [\fB\-adt\fP] Automatic Draw text \- This option turns on the \fB\-dt\fP option selectively for fonts that seem to be no normal text fonts, e.g. Symbol.. .PP .TP [\fB\-ndt\fP] Never Draw text \- fully disable the heuristics used by pstoedit to decide when to "draw" text instead of showing it as text. This may produce incorrect results, but in some cases it might nevertheless be useful. "Use at own risk". .PP .TP [\fB\-dgbm\fP] experimental \- draw also bitmaps generated by fonts/glyphs .PP .TP [\fB\-correctdefinefont\fP] Some PostScript files, e.g. such as generated by ChemDraw, use the PostScript definefont operator in way that is incompatible with pstoedit\&'s assumptions. The new font is defined by copying an old font without changing the FontName of the new font. When this option is applied, some "patches" are done after a definefont in order to make it again compatible with pstoedit\&'s assumptions. This option is not enabled per default, since it may break other PostScript file. It is tested only with ChemDraw generated files. .PP .TP [\fB\-pti\fP] Precision text \- Normally a text string is drawn as it occurs in the input file. However, in some situations, this might produce wrongly positioned characters. This is due to limitiations in most output formats of pstoedit. They cannot represent text with arbitray inter\-letter spacing which is easily possible in PDF and PostScript. With \fB\-pta\fP, each character of a text string is placed separately. With \fB\-pti\fP, this is done only in cases when there is a non zero inter\-letter spacing. The downside of "precision text" is a bigger file size and hard to edit text. .PP .TP [\fB\-pta\fP] see \-pti .PP .TP [\fB\-uchar\fP\fI character\fP] Sometimes pstoedit cannot map a character from the encoding used by the PostScript file to the font encoding of the target format. In this case pstoedit replaces the input character by a special character in order to show all the places that couldn\&'t be mapped correctly. The default for this is a "#". Using the \fB\-uchar\fP option it is possible to specify another character to be used instead. If you want to use a space, use \-uchar " ". .PP .TP [\fB\-t2fontsast1\fP] Handle type 2 fonts same as type 1. Type 2 fonts sometimes occur as embedded fonts within PDF files. In the default mode, text using such fonts is drawn as polygons since pstoedit assumes that such a font is not available on the users machine. If this option is set, pstoedit assumes that the internal encoding follows the same as for a standard font and generates normal text output. This assumption may not be true in all cases. But it is nearly impossible for pstoedit to verify this assumption \- it would have to do a sort of OCR. .PP .TP [\fB\-nfr\fP] In normal mode pstoedit replaces bitmap fonts with a font as defined by the \fB\-df\fP option. This is done, because most output formats can\&'t handle such fonts. This behavior can be switched off using the \fB\-nfr\fP option but then it strongly depends on the application reading the the generated file whether the file is usable and correctly interpreted or not. Any problems are then out of control of pstoedit. .PP .TP [\fB\-glyphs\fP] pass glyph names to the output format driver. So far no output format driver really uses the glyph names, so this does not have any effect at the moment. It is a preparation for future work. .PP .TP [\fB\-useoldnormalization\fP] Just use this option in case the new heuristic introduced in 3.5 doesn\&'t produce correct results \- however, this normalization of font encoding will always be a best\-effort approach since there is no real general solution to it with reasonable effort .PP .TP [\fB\-fontmap\fP\fI name of font map file for pstoedit\fP] The font map is a simple text file containing lines in the following format: .br .PP document_font_name target_font_name .br Lines beginning with % are considerd comments .br If a font name contains spaces, use the "font name with spaces" notation. .PP If a target_font_name starts with /, it is regarded as alias to a former entry. .PP Each font name found in the document is checked against this mapping and if there is a corresponding entry, the new name is used for the output. .PP If the \fB\-fontmap\fP option is not specified, pstoedit automatically looks for the file \fIdrivername\fP\&.fmp in the installation directory and uses that file as a default fontmap file if available. The installation directory is: .PP .RS .RS .PP .RE .TP .B * Windows: The same directory where the pstoedit executable is located .RS .PP .RE .TP .B * Unix: .br <\fIThe directory where the pstoedit executably is located\fP> /../lib/ .RS .PP .RE .RE .PP The mpost.fmp in the misc directory of the pstoedit distibution is a sample map file with mappings from over 5000 PostScript font names to their TeXequivalents. This is useful because MetaPost is frequently used with TeX/LaTeX and those programs don\&'t use standard font names. This file and the MetaPost output format driver are provided by Scott Pakin (\fBscott+ps2ed_AT_pakin.org\fP). Another example is wemf.fmp to be used under Windows. See the misc directory of the pstoedit source distribution. After loading the implicit (based on driver name) or explicit (based on the \-fontmap option) font map file, a system specific map file is searched and loaded from the installation directory (unix.fmp or windows.fmp). This file can be used to redirect certain fonts to system specific names using the /AliasName notation described above. .PP .RE .PP .SS DEBUG OPTIONS .RE .TP [\fB\-dis\fP] Open a display during processing by Ghostscript. Some files only work correctly this way. .PP .TP [\fB\-q\fP] quiet mode \- do not write startup message .PP .TP [\fB\-nq\fP] No exit from the PostScript interpreter. Normally Ghostscript exits after processing the pstoedit input\-file. For debugging it can be useful to avoid this. If you do, you will have to type quit at the GS> prompt to exit from Ghostscript. .PP .TP [\fB\-v\fP] Switch on verbose mode. Some additional information is shown during processing. .PP .TP [\fB\-nb\fP] Since version 3.10 pstoedit uses the \-dDELAYBIND option when calling GhostScript. Previously the \-dNOBIND option was used instead but that sometimes caused problems if a user\&'s PostScript file overloaded standard PostScript operator with totally new semantic, e.g. lt for lineto instead of the standard meaning of "less than". Using \fB\-nb\fP the old style can be activated again in case the \-dDELAYBIND gives different results as before. In such a case please also contact the author. .PP .TP [\fB\-ups\fP] write text as plain string instead of hex string in intermediate format \- normally useful for trouble shooting and debugging only. .PP .TP [\fB\-keep\fP] keep the intermediate files produced by pstoedit \- for debug purposes only .PP .TP [\fB\-debugfonthandling\fP] writes verbose messages related to internal font processing \- for debug purposes only .PP .TP [\fB\-gstest\fP] perform a basic test for the interworking with GhostScript .PP .SS DRAWING RELATED OPTIONS .TP [\fB\-nc\fP] no curves. Normally pstoedit tries to keep curves from the input and transfers them to the output if the output format supports curves. If the output format does not support curves, then pstoedit replaces curves by a series of lines (see also \fB\-flat\fP option). However, in some cases the user might wish to have this behavior also for output formats that originally support curves. This can be forced via the \fB\-nc\fP option. .PP .TP [\fB\-nsp\fP] normally subpathes are used if the output format support them. This option turns off subpathes. .PP .TP [\fB\-mergelines\fP] Some output formats permit the representation of filled polygons with edges that are in a different color than the fill color. Since PostScript does not support this by the standard drawing primitives directly, drawing programs typically generate two objects (the outline and the filled polygon) into the PostScript output. pstoedit is able to recombine these, if they follow each other directly and you specify \fB\-mergelines\fP\&. However, this merging is not supported by all output formats due to restrictions in the target format. .PP .TP [\fB\-filledrecttostroke\fP] Rectangles filled with a solid color can be converted to a stroked line with a width that corresponds to the width of the rectangle. This is of primary interest for output formats which do not support filled polygons at all. But it is restricted to rectangles only, i.e. it is not supported for general polygons .PP .TP [\fB\-mergetext\fP] In order to produce nice looking text output, programs producing PostScript files often split words into smaller pieces which are then placed individually on adjacent positions. However, such split text is hard to edit later on and hence it is sometime better to recombine these pieces again to form a word (or even sequence of words). For this pstoedit implements some heuristics about what text pieces are to be considered parts of a split word. This is based on the geometrical proximity of the different parts and seems to work quite well so far. But there are certainly cases where this simple heuristic fails. So please check the results carefully. .PP .TP [\fB\-ssp\fP] simulate sub paths. Several output formats don\&'t support PostScript pathes containing sub pathes, i.e. pathes with intermediate movetos. In the normal case, each subpath is treated as an independent path for such output formats. This can lead to bad looking results. The most common case where this happens is if you use the \fB\-dt\fP option and show some text with letters like e, o, or b, i.e. letter that have a "hole". When the \fB\-ssp\fP option is set, pstoedit tries to eliminate these problems. However, this option is CPU time intensive! .PP .TP [\fB\-flat\fP\fI flatness factor\fP] If the output format does not support curves in the way PostScript does or if the \fB\-nc\fP option is specified, all curves are approximated by lines. Using the \fB\-flat\fP option one can control this approximation. This parameter is directly converted to a PostScript \fBsetflat\fP command. Higher numbers, e.g. 10 give rougher, lower numbers, e.g. 0.1 finer approximations. .PP .TP [\fB\-sclip\fP] simulate clipping. Most output formats of pstoedit don\&'t have native support for clipping. For that pstoedit offers an option to perform the clipping of the graphics directly without passing the clippath to the output driver. However, this results in curves being replaced by a lot of line segments and thus larger output files. So use this option only if your output looks different from the input due to clipping. In addition, this "simulated clipping" is not exactly the same as defined in PostScript. There might be lines drawn at the double size. Also clipping of text is not supported unless you also use the \fB\-dt\fP option. .PP .SS INPUT AND OUTFILE FILE ARGUMENTS [ inputfile [outputfile] ] .PP If neither an input nor an output file is given as argument, pstoedit works as filter reading from standard input and writing to standard output. The special filename "\-" can also be used. It represents standard input if it is the first on the command line and standard output if it is the second. So "pstoedit \- output.xxx" reads from standard input and writes to output.xxx .PP .SH AVAILABLE FORMATS AND THEIR SPECIFIC OPTIONS .PP pstoedit allows passing individual options to a output format driver. This is done by appending all options to the format specified after the \fB\-f\fP option. The format specifier and its options must be separated by a colon (:). If more than one option needs to be passed to the output format driver, the whole argument to \fB\-f\fP must be enclosed within double\-quote characters, thus: .PP \fB\-f\fP\fI "format[:option option ...]"\fP .PP To see which options are supported by a specific format, type: \fBpstoedit \-f format:\-help\fP .br .PP The following description of the different formats supported by pstoedit is extracted from the source code of the individual drivers. .PP .SS psf \- Flattened PostScript (no curves) No driver specific options .SS ps \- Simplified PostScript with curves No driver specific options .SS debug \- for test purposes No driver specific options .SS dump \- for test purposes (same as debug) No driver specific options .SS gs \- any device that GhostScript provides \- use gs:format, e.g. gs:pdfwrite No driver specific options .SS ps2ai \- Adobe Illustrator via ps2ai.ps of GhostScript No driver specific options .SS gmfa \- ASCII GNU metafile .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS gmfb \- binary GNU metafile .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot \- GNU libplot output types, e.g. plot:\-plotformat X .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-cgm \- cgm via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-ai \- ai via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-svg \- svg via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-ps \- ps via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-fig \- fig via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-pcl \- pcl via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-hpgl \- hpgl via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS plot\-tek \- tek via GNU libplot .TP [\fB\-plotformat\fP\fI string\fP] plotutil format to generate .PP .SS magick \- MAGICK driver This driver uses the C++ API of ImageMagick or GraphicsMagick to finally produce different output formats. The output format is determined automatically by Image/GraphicsMagick based on the suffix of the output filename. So an output file test.png will force the creation of an image in PNG format. .PP No driver specific options .SS swf \- SWF driver: .TP [\fB\-cubic\fP] cubic ??? .PP .TP [\fB\-trace\fP] trace ??? .PP .SS svg \- scalable vector graphics .TP [\fB\-localdtd\fP] use local DTD .PP .TP [\fB\-standalone\fP] create stand\-alone type svg .PP .TP [\fB\-withdtd\fP] write DTD .PP .TP [\fB\-withgrouping\fP] write also ordinary save/restores as SVG group .PP .TP [\fB\-nogroupedpath\fP] do not write a group around pathes .PP .TP [\fB\-noviewbox\fP] don\&'t write a view box .PP .TP [\fB\-texmode\fP] TeX Mode .PP .TP [\fB\-imagetofile\fP] write raster images to separate files instead of embedding them .PP .TP [\fB\-notextrendering\fP] do not write textrendering attribute .PP .TP [\fB\-border\fP\fI number\fP] additional border to draw around bare bounding box (in percent of width and height) .PP .TP [\fB\-title\fP\fI string\fP] text to use as title for the generated document .PP .SS xaml \- eXtensible Application Markup Language .TP [\fB\-localdtd\fP] use local DTD .PP .TP [\fB\-standalone\fP] create stand\-alone type svg .PP .TP [\fB\-withdtd\fP] write DTD .PP .TP [\fB\-withgrouping\fP] write also ordinary save/restores as SVG group .PP .TP [\fB\-nogroupedpath\fP] do not write a group around pathes .PP .TP [\fB\-noviewbox\fP] don\&'t write a view box .PP .TP [\fB\-texmode\fP] TeX Mode .PP .TP [\fB\-imagetofile\fP] write raster images to separate files instead of embedding them .PP .TP [\fB\-notextrendering\fP] do not write textrendering attribute .PP .TP [\fB\-border\fP\fI number\fP] additional border to draw around bare bounding box (in percent of width and height) .PP .TP [\fB\-title\fP\fI string\fP] text to use as title for the generated document .PP .SS cgmb1 \- CGM binary Format (V1) No driver specific options .SS cgmb \- CGM binary Format (V3) No driver specific options .SS cgmt \- CGM textual Format No driver specific options .SS mif \- (Frame)Maker Intermediate Format .TP [\fB\-nopage\fP] do not add a separate Page entry .PP .SS rtf \- RTF Format No driver specific options .SS wemf \- Wogls version of EMF .TP [\fB\-df\fP] write info about font processing .PP .TP [\fB\-dumpfontmap\fP] write info about font mapping .PP .TP [\fB\-size:psbbox\fP] use the bounding box as calculated by the PostScript frontent as size .PP .TP [\fB\-size:fullpage\fP] set the size to the size of a full page .PP .TP [\fB\-size:automatic\fP] let windows calculate the bounding box (default) .PP .TP [\fB\-keepimages\fP] debug option \- keep the embedded bitmaps as external files .PP .TP [\fB\-useoldpolydraw\fP] do not use Windows PolyDraw but an emulation of it \- sometimes needed for certain programs reading the EMF files .PP .TP [\fB\-OO\fP] generate OpenOffice compatible EMF file .PP .SS wemfc \- Wogls version of EMF with experimental clip support .TP [\fB\-df\fP] write info about font processing .PP .TP [\fB\-dumpfontmap\fP] write info about font mapping .PP .TP [\fB\-size:psbbox\fP] use the bounding box as calculated by the PostScript frontent as size .PP .TP [\fB\-size:fullpage\fP] set the size to the size of a full page .PP .TP [\fB\-size:automatic\fP] let windows calculate the bounding box (default) .PP .TP [\fB\-keepimages\fP] debug option \- keep the embedded bitmaps as external files .PP .TP [\fB\-useoldpolydraw\fP] do not use Windows PolyDraw but an emulation of it \- sometimes needed for certain programs reading the EMF files .PP .TP [\fB\-OO\fP] generate OpenOffice compatible EMF file .PP .SS wemfnss \- Wogls version of EMF \- no subpathes .TP [\fB\-df\fP] write info about font processing .PP .TP [\fB\-dumpfontmap\fP] write info about font mapping .PP .TP [\fB\-size:psbbox\fP] use the bounding box as calculated by the PostScript frontent as size .PP .TP [\fB\-size:fullpage\fP] set the size to the size of a full page .PP .TP [\fB\-size:automatic\fP] let windows calculate the bounding box (default) .PP .TP [\fB\-keepimages\fP] debug option \- keep the embedded bitmaps as external files .PP .TP [\fB\-useoldpolydraw\fP] do not use Windows PolyDraw but an emulation of it \- sometimes needed for certain programs reading the EMF files .PP .TP [\fB\-OO\fP] generate OpenOffice compatible EMF file .PP .SS hpgl \- HPGL code .TP [\fB\-penplotter\fP] plotter is pen plotter (i.e. no support for specific line widths) .PP .TP [\fB\-pencolorsfromfile\fP] read pen colors from file drvhpgl.pencolors in pstoedit data directory .PP .TP [\fB\-pencolors\fP\fI number\fP] maximum number of pen colors to be used by pstoedit (default 0) \- .PP .TP [\fB\-filltype\fP\fI string\fP] select fill type e.g. FT 1 .PP .TP [\fB\-hpgl2\fP] Use HPGL/2 instead of HPGL/1 .PP .TP [\fB\-rot90\fP] rotate hpgl by 90 degrees .PP .TP [\fB\-rot180\fP] rotate hpgl by 180 degrees .PP .TP [\fB\-rot270\fP] rotate hpgl by 270 degrees .PP .SS pcl \- PCL code .TP [\fB\-penplotter\fP] plotter is pen plotter (i.e. no support for specific line widths) .PP .TP [\fB\-pencolorsfromfile\fP] read pen colors from file drvhpgl.pencolors in pstoedit data directory .PP .TP [\fB\-pencolors\fP\fI number\fP] maximum number of pen colors to be used by pstoedit (default 0) \- .PP .TP [\fB\-filltype\fP\fI string\fP] select fill type e.g. FT 1 .PP .TP [\fB\-hpgl2\fP] Use HPGL/2 instead of HPGL/1 .PP .TP [\fB\-rot90\fP] rotate hpgl by 90 degrees .PP .TP [\fB\-rot180\fP] rotate hpgl by 180 degrees .PP .TP [\fB\-rot270\fP] rotate hpgl by 270 degrees .PP .SS pic \- PIC format for troff et.al. .TP [\fB\-troff\fP] troff mode (default is groff) .PP .TP [\fB\-landscape\fP] landscape output .PP .TP [\fB\-portrait\fP] portrait output .PP .TP [\fB\-keepfont\fP] print unrecognized literally .PP .TP [\fB\-text\fP] try not to make pictures from running text .PP .TP [\fB\-debug\fP] enable debug output .PP .SS asy \- Asymptote Format No driver specific options .SS cairo \- cairo driver generates compilable c code for rendering with cairo .PP .TP [\fB\-pango\fP] use pango for font rendering .PP .TP [\fB\-funcname\fP\fI string\fP] sets the base name for the generated functions and variables. e.g. myfig .PP .TP [\fB\-header\fP\fI string\fP] sets the output file name for the generated C header file. e.g. myfig.h .PP .SS cfdg \- Context Free Design Grammar Context Free Design Grammar, usable by Context Free Art (http://www.contextfreeart.org/) .PP No driver specific options .SS dxf \- CAD exchange format .TP [\fB\-polyaslines\fP] use LINE instead of POLYLINE in DXF .PP .TP [\fB\-mm\fP] use mm coordinates instead of points in DXF (mm=pt/72*25.4) .PP .TP [\fB\-ctl\fP] map colors to layers .PP .TP [\fB\-splineaspolyline\fP] approximate splines with PolyLines (only for \-f dxf_s) .PP .TP [\fB\-splineasnurb\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineasbspline\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineassinglespline\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineasmultispline\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineasbezier\fP] use Bezier splines in DXF format (only for \-f dxf_s) .PP .TP [\fB\-splineprecision\fP\fI number\fP] number of samples to take from spline curve when doing approximation with \-splineaspolyline or \-splineasmultispline \- should be >= 2 (default 5) .PP .TP [\fB\-dumplayernames\fP] dump all layer names found to standard output .PP .TP [\fB\-layers\fP\fI string\fP] layers to be shown (comma separated list of layer names, no space) .PP .TP [\fB\-layerfilter\fP\fI string\fP] layers to be hidden (comma separated list of layer names, no space) .PP .SS dxf_s \- CAD exchange format with splines .TP [\fB\-polyaslines\fP] use LINE instead of POLYLINE in DXF .PP .TP [\fB\-mm\fP] use mm coordinates instead of points in DXF (mm=pt/72*25.4) .PP .TP [\fB\-ctl\fP] map colors to layers .PP .TP [\fB\-splineaspolyline\fP] approximate splines with PolyLines (only for \-f dxf_s) .PP .TP [\fB\-splineasnurb\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineasbspline\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineassinglespline\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineasmultispline\fP] experimental (only for \-f dxf_s) .PP .TP [\fB\-splineasbezier\fP] use Bezier splines in DXF format (only for \-f dxf_s) .PP .TP [\fB\-splineprecision\fP\fI number\fP] number of samples to take from spline curve when doing approximation with \-splineaspolyline or \-splineasmultispline \- should be >= 2 (default 5) .PP .TP [\fB\-dumplayernames\fP] dump all layer names found to standard output .PP .TP [\fB\-layers\fP\fI string\fP] layers to be shown (comma separated list of layer names, no space) .PP .TP [\fB\-layerfilter\fP\fI string\fP] layers to be hidden (comma separated list of layer names, no space) .PP .SS fig \- .fig format for xfig The xfig format driver supports special fontnames, which may be produced by using a fontmap file. The following types of names are supported : .br .Vb General notation: "Postscript Font Name" ((LaTeX|PostScript|empty)(::special)::)XFigFontName Examples: Helvetica LaTeX::SansSerif Courier LaTeX::special::Typewriter GillSans "AvantGarde Demi" Albertus PostScript::special::"New Century Schoolbook Italic" Symbol ::special::Symbol (same as Postscript::special::Symbol) .Ve See also the file examplefigmap.fmp in the misc directory of the pstoedit source distribution for an example font map file for xfig. Please note that the Fontname has to be among those supported by xfig. See \- \fBhttp://www.xfig.org/userman/fig\-format.html\fP for a list of legal font names .PP .TP [\fB\-startdepth\fP\fI number\fP] Set the initial depth (default 999) .PP .TP [\fB\-metric\fP] Switch to centimeter display (default inches) .PP .TP [\fB\-usecorrectfontsize\fP] don\&'t scale fonts for xfig. Use this if you also use this option with xfig .PP .TP [\fB\-depth\fP\fI number\fP] Set the page depth in inches (default 11) .PP .SS xfig \- .fig format for xfig See fig format for more details. .PP .TP [\fB\-startdepth\fP\fI number\fP] Set the initial depth (default 999) .PP .TP [\fB\-metric\fP] Switch to centimeter display (default inches) .PP .TP [\fB\-usecorrectfontsize\fP] don\&'t scale fonts for xfig. Use this if you also use this option with xfig .PP .TP [\fB\-depth\fP\fI number\fP] Set the page depth in inches (default 11) .PP .SS tfig \- .fig format for xfig Test only .PP .TP [\fB\-startdepth\fP\fI number\fP] Set the initial depth (default 999) .PP .TP [\fB\-metric\fP] Switch to centimeter display (default inches) .PP .TP [\fB\-usecorrectfontsize\fP] don\&'t scale fonts for xfig. Use this if you also use this option with xfig .PP .TP [\fB\-depth\fP\fI number\fP] Set the page depth in inches (default 11) .PP .SS gcode \- emc2 gcode format See also: \fBhttp://linuxcnc.org/\fP .PP No driver specific options .SS gnuplot \- gnuplot format No driver specific options .SS gschem \- gschem format See also: \fBhttp://www.geda.seul.org/tools/gschem/\fP .PP No driver specific options .SS idraw \- Interviews draw format (EPS) No driver specific options .SS java1 \- java 1 applet source code .TP [\fBjava class name\fP\fI string\fP] name of java class to generate .PP .SS java2 \- java 2 source code .TP [\fBjava class name\fP\fI string\fP] name of java class to generate .PP .SS kil \- .kil format for Kontour No driver specific options .SS latex2e \- LaTeX2e picture format .TP [\fB\-integers\fP] round all coordinates to the nearest integer .PP .SS lwo \- LightWave 3D Object Format No driver specific options .SS mma \- Mathematica Graphics .TP [\fB\-eofillfills\fP] Filling is used for eofill (default is not to fill) .PP .SS mpost \- MetaPost Format No driver specific options .SS noixml \- Nemetschek NOI XML format Nemetschek Object Interface XML format .PP .TP [\fB\-r\fP\fI string\fP] Allplan resource file .PP .TP [\fB\-bsl\fP\fI number\fP] Bezier Split Level (default 3) .PP .SS pcbi \- engrave data \- insulate/PCB format See \fBhttp://home.vr\-web.de/~hans\-juergen\-jahn/software/devpcb.html\fP for more details. .PP No driver specific options .SS pcb \- pcb format See also: \fBhttp://pcb.sourceforge.net\fP and \fBhttp://www.penguin.cz/~utx/pstoedit\-pcb/\fP .PP .TP [\fB\-grid\fP\fI missing arg name\fP] attempt to snap relevant output to grid (mils) and put failed objects to a different layer .PP .TP [\fB\-snapdist\fP\fI missing arg name\fP] grid snap distance ratio (0 < snapdist <= 0.5, default 0.1) .PP .TP [\fB\-tshiftx\fP\fI missing arg name\fP] additional x shift measured in target units (mils) .PP .TP [\fB\-tshifty\fP\fI missing arg name\fP] additional y shift measured in target units (mils) .PP .TP [\fB\-grid\fP\fI missing arg name\fP] attempt to snap relevant output to grid (mils) and put failed objects to a different layer .PP .TP [\fB\-mm\fP] Switch to metric units (mm) .PP .TP [\fB\-stdnames\fP] use standard layer names instead of descriptive names .PP .TP [\fB\-forcepoly\fP] force all objects to be interpreted as polygons .PP .SS pcbfill \- pcb format with fills See also: \fBhttp://pcb.sourceforge.net\fP .PP No driver specific options .SS pdf \- Adobe\&'s Portable Document Format No driver specific options .SS pptx \- PresentationML (PowerPoint) format This is the format used internally by Microsoft PowerPoint. LibreOffice can also read/write PowerPoint files albeit with some lack of functionality. .PP .TP [\fB\-colors\fP\fI string\fP] "original" to retain original colors (default), "theme" to convert randomly to theme colors, or "theme\-lum" also to vary luminance .PP .TP [\fB\-fonts\fP\fI string\fP] use "windows" fonts (default), "native" fonts, or convert to the "theme" font .PP .TP [\fB\-embed\fP\fI string\fP] embed fonts, specified as a comma\-separated list of EOT\-format font files .PP .SS rib \- RenderMan Interface Bytestream No driver specific options .SS rpl \- Real3D Programming Language Format No driver specific options .SS sample \- sample driver: if you don\&'t want to see this, uncomment the corresponding line in makefile and make again this is a long description for the sample driver .PP .TP [\fB\-sampleoption\fP\fI integer\fP] just an example .PP .SS sk \- Sketch Format No driver specific options .SS svm \- StarView/OpenOffice.org metafile StarView/OpenOffice.org metafile, readable from OpenOffice.org 1.0/StarOffice 6.0 and above. .PP .TP [\fB\-m\fP] map to Arial .PP .TP [\fB\-nf\fP] emulate narrow fonts .PP .SS text \- text in different forms .TP [\fB\-height\fP\fI number\fP] page height in terms of characters .PP .TP [\fB\-width\fP\fI number\fP] page width in terms of characters .PP .TP [\fB\-dump\fP] dump text pieces .PP .SS tgif \- Tgif .obj format .TP [\fB\-ta\fP] text as attribute .PP .SS tk \- tk and/or tk applet source code .TP [\fB\-R\fP] swap HW .PP .TP [\fB\-I\fP] no impress .PP .TP [\fB\-n\fP\fI string\fP] tagnames .PP .SS vtk \- VTK driver: if you don\&'t want to see this, uncomment the corresponding line in makefile and make again this is a long description for the VTKe driver .PP .TP [\fB\-VTKeoption\fP\fI integer\fP] just an example .PP .SS wmf \- Windows metafile .TP [\fB\-m\fP] map to Arial .PP .TP [\fB\-nf\fP] emulate narrow fonts .PP .TP [\fB\-drawbb\fP] draw bounding box .PP .TP [\fB\-p\fP] prune line ends .PP .TP [\fB\-nfw\fP] Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix the only option is to use the \-pta option of pstoedit. However that causes every text to be split into single characters which makes the text hard to edit afterwards. Hence the \-nfw options provides a sort of compromise between portability and nice to edit but still nice looking text. Again \- this option has no meaning when pstoedit is executed under Windows anyway. In that case the output is portable but nevertheless not split and still looks fine. .PP .TP [\fB\-winbb\fP] let the Windows API calculate the Bounding Box (Windows only) .PP .TP [\fB\-OO\fP] generate OpenOffice compatible EMF file .PP .SS emf \- Enhanced Windows metafile .TP [\fB\-m\fP] map to Arial .PP .TP [\fB\-nf\fP] emulate narrow fonts .PP .TP [\fB\-drawbb\fP] draw bounding box .PP .TP [\fB\-p\fP] prune line ends .PP .TP [\fB\-nfw\fP] Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix the only option is to use the \-pta option of pstoedit. However that causes every text to be split into single characters which makes the text hard to edit afterwards. Hence the \-nfw options provides a sort of compromise between portability and nice to edit but still nice looking text. Again \- this option has no meaning when pstoedit is executed under Windows anyway. In that case the output is portable but nevertheless not split and still looks fine. .PP .TP [\fB\-winbb\fP] let the Windows API calculate the Bounding Box (Windows only) .PP .TP [\fB\-OO\fP] generate OpenOffice compatible EMF file .PP .SH NOTES .PP .SS AUTOTRACE .PP pstoedit cooperates with autotrace. Autotrace can now produce a dump file for further processing by pstoedit using the \fB\-bo\fP (backend only) option. Autotrace is a program written by a group around Martin Weber and can be found at \fBhttp://sourceforge.net/projects/autotrace/\fP\&. .PP .SS PS2AI .PP The ps2ai output format driver is not a native pstoedit output format driver. It does not use the pstoedit postcript flattener, instead it uses the PostScript program ps2ai.ps which is installed in the GhostScript distribution directory. It is included to provide the same "look\-and\-feel" for the conversion to AI. The additional benefit is that this conversion is now available also via the "convert\-to\-vector" menu of Gsview. However, lot\&'s of files don\&'t convert nicely or at all using ps2ai.ps. So a native pstoedit driver would be much better. Anyone out there to take this? The AI format is usable for example by Mayura Draw (\fBhttp://www.mayura.com\fP). Also a driver to the Mayura native format would be nice. .PP An alternative to the ps2ai based driver is available via the \-f plot:ai format if the libplot(ter) is installed. .PP You should use a version of GhostScript greater than or equal to 6.00 for using the ps2ai output format driver. .PP .SS METAPOST .PP Note that, as far as Scott knows, MetaPost does not support PostScript\&'s eofill. The metapost output format driver just converts eofill to fill, and issues a warning if verbose is set. Fortunately, very few PostScript programs rely on the even\-odd fill rule, even though many specify it. .PP For more on MetaPost see: .PP \fBhttp://cm.bell\-labs.com/who/hobby/MetaPost.html\fP .PP .SS CONTEXT FREE \- CFDG The driver for the CFDG format (drvcfdg) defines one shape per page of PostScript, but only the first shape is actually rendered (unless the user edits the generated CFDG code, of course). CFDG doesn\&'t support multi\-page output, so this probably a reasonable thing to do. .PP For more on Context Free see: \fBhttp://www.contextfreeart.org/\fP .PP .SS LATEX2E .PP .TP .B * LaTeX2e\&'s picture environment is not very powerful. As a result, many elementary PostScript constructs are ignored \-\- fills, line thicknesses (besides "thick" and "thin"), and dash patterns, to name a few. Furthermore, complex pictures may overrun TeX\&'s memory capacity. .PP .TP .B * Some PostScript constructs are not supported directly by "picture", but can be handled by external packages. If a figure uses color, the top\-level document will need to do a "\\usepackage{color}"\&. And if a figure contains rotated text, the top\-level document will need to do a "\\usepackage{rotating}"\&. .PP .TP .B * All lengths, coordinates, and font sizes output by the output format driver are in terms of \\unitlength, so scaling a figure is simply a matter of doing a "\\setlength{\\unitlength}{...}"\&. .PP .TP .B * The output format driver currently supports one output format driver specific option, "integers", which rounds all lengths, coordinates, and font sizes to the nearest integer. This makes hand\-editing the picture a little nicer. .PP .TP .B * Why is this output format driver useful? One answer is portability; any LaTeX2e system can handle the picture environment, even if it can\&'t handle PostScript graphics. (pdfLaTeX comes to mind here.) A second answer is that pictures can be edited easily to contain any arbitrary LaTeX2e code. For instance, the text in a figure can be modified to contain complex mathematics, non\-Latin alphabets, bibliographic citations, or \-\- the real reason Scott wrote the LaTeX2e output format driver \-\- hyperlinks to the surrounding document (with help from the hyperref package). .PP .SS CREATING A NEW OUTPUT FORMAT DRIVER .PP To implement a new output format driver you can start from drvsampl.cpp and drvsampl.h\&. See also comments in drvbase.h and drvfuncs.h for an explanation of methods that should be implemented for a new output format driver. .PP .SH ENVIRONMENT VARIABLES .PP A default PostScript interpreter to be called by pstoedit is specified at compile time. You can overwrite the default by setting the GS environment variable to the name of a suitable PostScript interpreter. .PP You can check which name of a PostScript interpreter was compiled into pstoedit using: \fBpstoedit\fP \fB\-help \-v\fP\&. .PP See the GhostScript manual for descriptions of environment variables used by Ghostscript most importantly GS_FONTPATH and GS_LIB; other environment variables also affect output to display, print, and additional filtering and processing. See the related documentation. .PP pstoedit allocates temporary files using the function \fItempnam\fP(3)\&. Thus the location for temporary files might be controllable by other environment variables used by this function. See the \fItempnam\fP(3) manpage for descriptions of environment variables used. On UNIX like system this is probably the TMPDIR variable, on DOS/WINDOWS either TMP or TEMP\&. .PP .SH TROUBLE SHOOTING .PP If you have problems with pstoedit first try whether Ghostscript successfully displays your file. If yes, then try \fBpstoedit\fP \fB\-f ps\fP \fIinfile.ps\fP \fItestfile.ps\fP and check whether \fItestfile.ps\fP still displays correctly using Ghostscript. If this file doesn\&'t look correctly then there seems to be a problem with pstoedit\&'s PostScript frontend. If this file looks good but the output for a specific format is wrong, the problem is probably in the output format driver for the specific format. In either case send bug fixes and reports to the author. .PP A common problem with PostScript files is that the PostScript file redefines one of the standard PostScript operators inconsistently. There is no effect of this if you just print the file since the original PostScript "program" uses these new operator in the new meaning and does not use the original ones anymoew. However, when run under the control of pstoedit, these operators are expected to work with the original semantics. .PP So far I\&'ve seen redefinitions for: .PP .TP .B * lt \- "less\-then" to mean "draw a line to" .TP .B * string \- "create a string object" to mean "draw a string" .TP .B * length \- "get the length of e.g. a string" to a "float constant" .PP I\&'ve included work\-arounds for the ones mentioned above, but some others could show up in addition to those. .PP .SH RESTRICTIONS .PP .TP .B * Non\-standard fonts (e.g. TeXbitmap fonts) are mapped to a default font which can be changed using the \fB\-df\fP option. pstoedit chooses the size of the replacement font such that the width of the string in the original font is the same as in the replacement font. This is done for each text fragment displayed. Special character encoding support is limited in this case. If a character cannot be mapped into the target format, pstoedit displays a \&'#\&' instead. See also the \-uchar option. .PP .TP .B * pstoedit supports bitmap graphics only for some output format drivers. .PP .TP .B * Some output format drivers, e.g. the Gnuplot output format driver or the 3D output format driver (rpl, lwo, rib) do not support text. .PP .TP .B * For most output format drivers pstoedit does not support clipping (mainly due to limitations in the target format). You can try to use the \fB\-sclip\fP option to simulate clipping. However, this doesn\&'t work in all cases as expected. .PP .TP .B * Special note about the Java output format drivers (java1 and java2). The java output format drivers generate a java source file that needs other files in order to be compiled and usable. These other files are Java classes (one applet and support classes) that allow to step through the individual pages of a converted PostScript document. This applet can easily be activated from a html\-document. See the contrib/java/java1/readme_java1.txt or contrib/java/java2/readme_java2.htm file for more details. .PP .SH FAQS .PP .TP 1. Why do letters like O or B get strange if converted to tgif/xfig using the \fB\-dt\fP option? .PP This is because most output format drivers don\&'t support composite paths with intermediate gaps (moveto\&'s) and second don\&'t support very well the (eo)fill operators of PostScript (winding rule). For such objects pstoedit breaks them into smaller objects whenever such a gap is found. This results in the "hole" beeing filled with black color instead of beeing transparent. Since version 3.11 you can try the \fB\-ssp\fP option in combination with the xfig output format driver. .PP .TP 2. Why does pstoedit produce ugly results from PostScript files generated by dvips? .PP TeX documents usually use bitmap fonts. Such fonts cannot be used as native font in other format. So pstoedit replaces the TeX font with another native font. Of course, the replacement font will in most cases produce another look, especially if mathematical symbols are used. Try to use PostScript fonts instead of the bitmap fonts when generating a PostScript file from TeX or LaTeX. .PP .SH AUTHOR .PP Wolfgang Glunz, \fBwglunz35_AT_pstoedit.net\fP, \fBhttp://de.linkedin.com/in/wolfgangglunz\fP .PP .SH CANONICAL ARCHIVE SITE .PP \fBhttp://www.pstoedit.net/pstoedit/\fP .PP At this site you also find more information about pstoedit and related programs and hints how to subscribe to a mailing list in order to get informed about new releases and bug\-fixes. .PP If you like pstoedit \- please express so also at Facebook \fBhttp://www.facebook.com/pages/pstoedit/260606183958062\fP\&. .PP .SH ACKNOWLEDGEMENTS .PP .TP .B * Klaus Steinberger \fBKlaus.Steinberger_AT_physik.uni\-muenchen.de\fP wrote the initial version of this manpage. .PP .TP .B * Lar Kaufman revised the increasingly complex command syntax diagrams and updated the structure and content of this manpage following release 2.5. .PP .TP .B * David B. Rosen \fBrosen_AT_unr.edu\fP provided ideas and some PostScript code from his ps2aplot program. .PP .TP .B * Ian MacPhedran \fBIan_MacPhedran_AT_engr.USask.CA\fP provided the xfig output format driver. .PP .TP .B * Carsten Hammer \fBchammer_AT_hermes.hrz.uni\-bielefeld.de\fP provided the gnuplot output format driver and the initial DXF output format driver. .PP .TP .B * Christoph Jaeschke provided the OS/2 metafile (MET) output format driver. Thomas Hoffmann \fBthoffman_AT_zappa.sax.de\fP did some further updates on the OS/2 part. .PP .TP .B * Jens Weber \fBrz47b7_AT_PostAG.DE\fP provided the Windows metafile (WMF) output format driver, and a graphical user interface (GUI). .PP .TP .B * G. Edward Johnson \fBlorax_AT_nist.gov\fP provided the CGM Draw library used in the CGM output format driver. .PP .TP .B * Gerhard Kircher \fBkircher_AT_edvz.tuwien.ac.at\fP provided some bug fixes. .PP .TP .B * Bill Cheng \fBbill.cheng_AT_acm.org\fP provided help with the tgif format and some changes to tgif to make the output format driver easier to implement. \fBhttp://bourbon.usc.edu:8001/\fP .PP .TP .B * Reini Urban \fBrurban_AT_sbox.tu\-graz.ac.at\fP provided input for the extended DXF output format driver.(\fBhttp://autocad.xarch.at/\fP) .PP .TP .B * Glenn M. Lewis \fBglenn_AT_gmlewis.com\fP provided RenderMan (RIB), Real3D (RPL), and LightWave 3D (LWO) output format drivers. (\fBhttp://www.gmlewis.com/\fP) .PP .TP .B * Piet van Oostrum \fBpiet_AT_cs.ruu.nl\fP made several bug fixes. .PP .TP .B * Lutz Vieweg \fBlkv_AT_mania.robin.de\fP provided several bug fixes and suggestions for improvements. .PP .TP .B * Derek B. Noonburg \fBderekn_AT_vw.ece.cmu.edu\fP and Rainer Dorsch \fBrd_AT_berlepsch.wohnheim.uni\-ulm.de\fP isolated and resolved a Linux\-specific core dump problem. .PP .TP .B * Rob Warner \fBrcw2_AT_ukc.ac.uk\fP made pstoedit compile under RiscOS. .PP .TP .B * Patrick Gosling \fBjpmg_AT_eng.cam.ac.uk\fP made some suggestions regarding the usage of pstoedit in Ghostscript\&'s SAFER mode. .PP .TP .B * Scott Pakin \fBscott+ps2ed_AT_pakin.org\fP for the Idraw output format driver and the autoconf support. .PP .TP .B * Peter Katzmann \fBp.katzmann_AT_thiesen.com\fP for the HPGL output format driver. .PP .TP .B * Chris Cox \fBccox_AT_airmail.net\fP contributed the Tcl/Tk output format driver. .PP .TP .B * Thorsten Behrens \fBThorsten_Behrens_AT_public.uni\-hamburg.de\fP and Bjoern Petersen for reworking the WMF output format driver. .PP .TP .B * Leszek Piotrowicz \fBleszek_AT_sopot.rodan.pl\fP implemented the image support for the xfig driver and a JAVA based GUI. .PP .TP .B * Egil Kvaleberg \fBegil_AT_kvaleberg.no\fP contributed the pic output format driver. .PP .TP .B * Kai\-Uwe Sattler \fBkus_AT_iti.cs.uni\-magdeburg.de\fP implemented the output format driver for Kontour. .PP .TP .B * Scott Pakin, \fBscott+ps2ed_AT_pakin.org\fP provided the MetaPost and LaTeX2e and PowerPoint output format driver. .PP .TP .B * The PowerPoint driver uses the libzip library \- \fBhttp://www.nih.at/libzip\fP\&. Under Windows, this library is linked into the provided binary statically. Thanks to the whole libzip team. .PP .TP .B * Burkhard Plaum \fBplaum_AT_IPF.Uni\-Stuttgart.de\fP added support for complex filled paths for the xfig output format driver. .PP .TP .B * Bernhard Herzog \fBherzog_AT_online.de\fP contributed the output format driver for sketch ( \fBhttp://www.skencil.org/\fP ) .PP .TP .B * Rolf Niepraschk (\fBniepraschk_AT_ptb.de\fP) converted the HTML man page to LaTeX. This allows to generate the UNIX style and the HTML manual from this base format. .PP .TP .B * Several others sent smaller bug fixed and bug reports. Sorry if I don\&'t mention them all here. .PP .TP .B * Gisbert W. Selke (\fBgisbert_AT_tapirsoft.de\fP) for the Java 2 output format driver. .PP .TP .B * Robert S. Maier (\fBrsm_AT_math.arizona.edu\fP) for many improvements on the libplot output format driver and for libplot itself. .TP .B * The authors of pstotext (\fBmcjones_AT_pa.dec.com\fP and \fBbirrell_AT_pa.dec.com\fP) for giving me the permission to use their simple PostScript code for performing rotation. .TP .B * Daniel Gehriger \fBgehriger_AT_linkcad.com\fP for his help concerning the handling of Splines in the DXF format. .TP .B * Allen Barnett \fBlibemf_AT_lignumcomputing.com\fP for his work on the libEMF which allows to create WMF/EMF files under *nix systems. .TP .B * Dave \fBdave_AT_opaque.net\fP for providing the libming which is a multiplatform library for generating SWF files. .TP .B * Masatake Yamoto for the introduction of autoconf, automake and libtool into pstoedit .TP .B * Bob Friesenhahn for his help and the building of the Magick++ API to ImageMagick. .TP .B * But most important: Peter Deutsch \fBghost_AT_aladdin.com\fP and Russell Lang \fBgsview_AT_ghostgum.com.au\fP for their help and answers regarding GhostScript and gsview. .PP .SH LEGAL NOTICES .PP Trademarks mentioned are the property of their respective owners. .PP Some code incorporated in the pstoedit package is subject to copyright or other intellectual property rights or restrictions including attribution rights. See the notes in individual files. .PP pstoedit is controlled under the Free Software Foundation GNU Public License (GPL). However, this does not apply to importps and the additional plugins. .PP Aladdin Ghostscript is a redistributable software package with copyright restrictions controlled by Aladdin Software. .PP pstoedit has no other relation to Ghostscript besides calling it in a subprocess. .PP The authors, contributors, and distributors of pstoedit are not responsible for its use for any purpose, or for the results generated thereby. .PP Restrictions such as the foregoing may apply in other countries according to international conventions and agreements. .PP .\" NOTE: This file is generated, DO NOT EDIT. pstoedit-3.62/doc/pstoedit.htm0000774000175500000000000023046112137263736013346 00000000000000 PSTOEDIT

PSTOEDIT

Dr. Wolfgang Glunz

April 2013

Version 3.62

pstoedit - a tool converting PostScript and PDF files into various vector graphic formats

Table of Contents

  • NOTES
  • ENVIRONMENT VARIABLES
  • TROUBLE SHOOTING
  • RESTRICTIONS
  • FAQs
  • AUTHOR
  • CANONICAL ARCHIVE SITE
  • ACKNOWLEDGEMENTS
  • LEGAL NOTICES
  • Synopsis

    From the command shell

    pstoedit [-v -help]

    pstoedit [-include name of a PostScript file to be included] [-df font name] [-nomaptoisolatin1] [-dis] [-pngimage filename - for debugging purpose mainly. Write result of processing also to a PNG file.] [-q] [-nq] [-nc] [-nsp] [-mergelines] [-filledrecttostroke] [-mergetext] [-dt] [-adt] [-ndt] [-dgbm] [-correctdefinefont] [-pti] [-pta] [-xscale number] [-yscale number] [-xshift number] [-yshift number] [-centered] [-minlinewidth number] [-pagenumberformat page number format specification] [-split] [-v] [-usebbfrominput] [-ssp] [-uchar character] [-nb] [-page page number] [-flat flatness factor] [-sclip] [-ups] [-rgb] [-useagl] [-noclip] [-t2fontsast1] [-keep] [-debugfonthandling] [-gstest] [-nfr] [-glyphs] [-useoldnormalization] [-rotate angle (0-360)] [-fontmap name of font map file for pstoedit] [-pagesize page format] [-help] [-gs path to the ghostscript executable/DLL ] [-bo] [-psarg argument string] [-pslanguagelevel PostScript Language Level to be used 1,2, or 3] -f "format[:options]" [-gsregbase GhostScript base registry path] [ inputfile [outputfile] ]

    From Gsview

    Pstoedit can be called from within gsview via "Edit | Convert to vector format"

    From programs that support the ALDUS graphic import filter interface

    pstoedit can also be used as PostScript and PDF graphic import filter for several programs including MS-Office, PaintShop-Pro and PhotoLine. See http://www.pstoedit.net/importps/ for more details.

    Description

    RELEASE LEVEL

    This manpage documents release 3.62 of pstoedit.

    USE

    pstoedit converts PostScript and PDF files to various vector graphic formats. The resulting files can be edited or imported into various drawing packages. Type

    pstoedit -help

    to get a list of supported output formats. Pstoedit comes with a large set of format drivers integrated in the binary. Additional drivers can be installed as plugins and are available via http://www.pstoedit.net/plugins/. Just copy the plugins to the same directory where the pstoedit binary is installed or - under Unix like systems only - alternatively into the lib directory parallel to the bin directory where pstoedit is installed.

    However, unless you also get a license key for the plugins, the additional drivers will slightly distort the resulting graphics. See the documentation provided with the plugins for further details.

    PRINCIPLE OF CONVERSION

    pstoedit works by redefining the some basic painting operators of PostScript, e.g. stroke or show (bitmaps drawn by the image operator are not supported by all output formats.) After redefining these operators, the PostScript or PDF file that needs to be converted is processed by a PostScript interpreter, e.g., Ghostscript (gs(1)). You normally need to have a PostScript interpreter installed in order to use this program. However, you can perform some "back end only" processing of files following the conventions of the pstoedit intermediate formate by specifying the -bo option. See "Available formats and their specific options" below.

    The output that is written by the interpreter due to the redefinition of the drawing operators is a sort of 'flat' PostScript file that contains only simple operations like moveto, lineto, show, etc. You can look at this file using the -f debug option.

    This output is read by end-processing functions of pstoedit and triggers the drawing functions in the selected output format driver sometime called also "backend".

    NOTES

    If you want to process PDF files directly, your PostScript interpreter must provide this feature, as does Ghostscript. Aladdin Ghostscript is recommended for processing PDF and PostScript files.

    Options

    General options

    [-include name of a PostScript file to be included]
    This options allows to specify an additional PostScript file that will be executed just before the normal input is read. This is helpful for including specific page settings or for disabling potentially unsafe PostScript operators, e.g., file, renamefile, or deletefile.

    [-xscale number]
    scale by a factor in x-direction

    [-yscale number]
    scale by a factor in y-direction

    [-xshift number]
    shift image in x-direction

    [-yshift number]
    shift image in y-direction

    [-centered]
    center image before scaling or shifting

    [-minlinewidth number]
    minimal line width. All lines thinner than this will be drawn in this line width - especially zero-width lines

    [-pagenumberformat page number format specification]
    format specification for page numbers in file name if -split is used. The specification is used to create the page number using sprintf.The specification shall not include the leading

    [-split]
    Create a new file for each page of the input. For this the output filename must contain a %d which is replaced with the current page number. This option is automatically switched on for output formats that don't support multiple pages within one file, e.g. fig or gnuplot.

    [-usebbfrominput]
    If specified, pstoedit uses the BoundingBox as is (hopefully) found in the input file instead of one that is calculated by its own.

    [-page page number]
    Select a single page from a multi page PostScript or PDF file.

    [-rgb]
    Since version 3.30 pstoedit uses the CMYK colors internally. The -rgb option turns on the old behavior to use RGB values.

    [-useagl]
    use Adobe Glyph List instead of the IsoLatin1 table (this is experimental)

    [-noclip]
    don't use clipping (relevant only if output format supports clipping at all)

    [-rotate angle (0-360)]
    Rotage image by angle.

    [-pagesize page format]
    set page size for output medium. This option sets the page size for the output medium. Currently this is just used by the libplot output format driver, but might be used by other output format drivers in future. The page size is specified in terms of the usual page size names, e.g. letter or a4.

    [-help]
    show the help information

    [-gs path to the ghostscript executable/DLL ]
    tells pstoedit which ghostscript executable/DLL to use - overwrites the internal search heuristic

    [-bo]
    You can run backend processing only (without the PostScript interpreter frontend) by first running pstoedit -f dump infile dumpfile and then running pstoedit -f format -bo dumpfile outfile.

    [-psarg argument string]
    The string given with this option is passed directly to Ghostscript when Ghostscript is called to process the PostScript file for pstoedit. For example: -psarg "-r300x300". This causes the resolution to be changed to 300x300 dpi. (With older versions of GhostScript, changing the resolution this way has an effect only if the -dis option is given.) If you want to pass multiple options to Ghostscript you can use multiple -psarg options -psarg opt1 -psarg opt2 -psarg opt2. See the GhostScript manual for other possible options.

    [-pslanguagelevel PostScript Language Level to be used 1,2, or 3]
    PostScript Language Level to be used 1,2, or 3 You can switch Ghostscript into PostScript Level 1 only mode by -pslanguagelevel 1. This can be useful for example if the PostScript file to be converted uses some Level 2 specific custom color models that are not supported by pstoedit. However, this requires that the PostScript program checks for the PostScript level supported by the interpreter and "acts" accordingly. The default language level is 3.

    -f "format[:options]"
    target output format recognized by pstoedit. Since other format drivers can be loaded dynamically, type pstoedit -help to get a full list of formats. See "Available formats and their specific options " below for an explanation of the [:options] to -f format. If the format option is not given, pstoedit tries to guess the target format from the suffix of the output filename. However, in a lot of cases, this is not a unique mapping and hence pstoedit demands the -f option.

    [-gsregbase GhostScript base registry path]
    registry path to use as a base path when searching GhostScript interpreter This option provides means to specify a registry key under HKLM/Software where to search for GS interpreter key, version and GS_DLL / GS_LIB values. Example: "-gsregbase MyCompany" means that HKLM/Software/MyCompany/GPL GhostScript would be searched instead of HKLM/Software/GPL GhostScript.

    Text and font handling related options

    [-df font name]
    Sometimes fonts embedded in a PostScript program do not have a fontname. For example, this happens in PostScript files generated by dvips(1). In such a case pstoedit uses a replacement font. The default for this is Courier. Another font can be specified using the -df option. -df Helvetica causes all unnamed fonts to be replaced by Helvetica.

    [-nomaptoisolatin1]
    Normally pstoedit maps all character codes to the ones defined by the ISO-Latin1 encoding. If you specify -nomaptoisolatin1 then the encoding from the input PostScript is passed unchanged to the output. This may result in strange text output but on the other hand may be the only way to get some fonts converted appropriately. Try what fits best to your concrete case.

    [-pngimage filename - for debugging purpose mainly. Write result of processing also to a PNG file.]
    for debugging purpose mainly. Write result of processing also to a PNG file

    [-dt]
    Draw text - Text is drawn as polygons. This might produce a large output file. This option is automatically switched on if the selected output format does not support text, e.g. gnuplot(1).

    [-adt]
    Automatic Draw text - This option turns on the -dt option selectively for fonts that seem to be no normal text fonts, e.g. Symbol..

    [-ndt]
    Never Draw text - fully disable the heuristics used by pstoedit to decide when to "draw" text instead of showing it as text. This may produce incorrect results, but in some cases it might nevertheless be useful. "Use at own risk".

    [-dgbm]
    experimental - draw also bitmaps generated by fonts/glyphs

    [-correctdefinefont]
    Some PostScript files, e.g. such as generated by ChemDraw, use the PostScript definefont operator in way that is incompatible with pstoedit's assumptions. The new font is defined by copying an old font without changing the FontName of the new font. When this option is applied, some "patches" are done after a definefont in order to make it again compatible with pstoedit's assumptions. This option is not enabled per default, since it may break other PostScript file. It is tested only with ChemDraw generated files.

    [-pti]
    Precision text - Normally a text string is drawn as it occurs in the input file. However, in some situations, this might produce wrongly positioned characters. This is due to limitiations in most output formats of pstoedit. They cannot represent text with arbitray inter-letter spacing which is easily possible in PDF and PostScript. With -pta, each character of a text string is placed separately. With -pti, this is done only in cases when there is a non zero inter-letter spacing. The downside of "precision text" is a bigger file size and hard to edit text.

    [-pta]
    see -pti

    [-uchar character]
    Sometimes pstoedit cannot map a character from the encoding used by the PostScript file to the font encoding of the target format. In this case pstoedit replaces the input character by a special character in order to show all the places that couldn't be mapped correctly. The default for this is a "#". Using the -uchar option it is possible to specify another character to be used instead. If you want to use a space, use -uchar " ".

    [-t2fontsast1]
    Handle type 2 fonts same as type 1. Type 2 fonts sometimes occur as embedded fonts within PDF files. In the default mode, text using such fonts is drawn as polygons since pstoedit assumes that such a font is not available on the users machine. If this option is set, pstoedit assumes that the internal encoding follows the same as for a standard font and generates normal text output. This assumption may not be true in all cases. But it is nearly impossible for pstoedit to verify this assumption - it would have to do a sort of OCR.

    [-nfr]
    In normal mode pstoedit replaces bitmap fonts with a font as defined by the -df option. This is done, because most output formats can't handle such fonts. This behavior can be switched off using the -nfr option but then it strongly depends on the application reading the the generated file whether the file is usable and correctly interpreted or not. Any problems are then out of control of pstoedit.

    [-glyphs]
    pass glyph names to the output format driver. So far no output format driver really uses the glyph names, so this does not have any effect at the moment. It is a preparation for future work.

    [-useoldnormalization]
    Just use this option in case the new heuristic introduced in 3.5 doesn't produce correct results - however, this normalization of font encoding will always be a best-effort approach since there is no real general solution to it with reasonable effort

    [-fontmap name of font map file for pstoedit]
    The font map is a simple text file containing lines in the following format:

    document_font_name target_font_name
    Lines beginning with % are considerd comments
    If a font name contains spaces, use the "font name with spaces" notation.

    If a target_font_name starts with /, it is regarded as alias to a former entry.

    Each font name found in the document is checked against this mapping and if there is a corresponding entry, the new name is used for the output.

    If the -fontmap option is not specified, pstoedit automatically looks for the file drivername.fmp in the installation directory and uses that file as a default fontmap file if available. The installation directory is:

    • Windows: The same directory where the pstoedit executable is located

    • Unix:
      <The directory where the pstoedit executably is located> /../lib/

    The mpost.fmp in the misc directory of the pstoedit distibution is a sample map file with mappings from over 5000 PostScript font names to their TeXequivalents. This is useful because MetaPost is frequently used with TeX/LaTeX and those programs don't use standard font names. This file and the MetaPost output format driver are provided by Scott Pakin (scott+ps2ed_AT_pakin.org). Another example is wemf.fmp to be used under Windows. See the misc directory of the pstoedit source distribution. After loading the implicit (based on driver name) or explicit (based on the -fontmap option) font map file, a system specific map file is searched and loaded from the installation directory (unix.fmp or windows.fmp). This file can be used to redirect certain fonts to system specific names using the /AliasName notation described above.

    Debug options

    [-dis]
    Open a display during processing by Ghostscript. Some files only work correctly this way.

    [-q]
    quiet mode - do not write startup message

    [-nq]
    No exit from the PostScript interpreter. Normally Ghostscript exits after processing the pstoedit input-file. For debugging it can be useful to avoid this. If you do, you will have to type quit at the GS> prompt to exit from Ghostscript.

    [-v]
    Switch on verbose mode. Some additional information is shown during processing.

    [-nb]
    Since version 3.10 pstoedit uses the -dDELAYBIND option when calling GhostScript. Previously the -dNOBIND option was used instead but that sometimes caused problems if a user's PostScript file overloaded standard PostScript operator with totally new semantic, e.g. lt for lineto instead of the standard meaning of "less than". Using -nb the old style can be activated again in case the -dDELAYBIND gives different results as before. In such a case please also contact the author.

    [-ups]
    write text as plain string instead of hex string in intermediate format - normally useful for trouble shooting and debugging only.

    [-keep]
    keep the intermediate files produced by pstoedit - for debug purposes only

    [-debugfonthandling]
    writes verbose messages related to internal font processing - for debug purposes only

    [-gstest]
    perform a basic test for the interworking with GhostScript

    Drawing related options

    [-nc]
    no curves. Normally pstoedit tries to keep curves from the input and transfers them to the output if the output format supports curves. If the output format does not support curves, then pstoedit replaces curves by a series of lines (see also -flat option). However, in some cases the user might wish to have this behavior also for output formats that originally support curves. This can be forced via the -nc option.

    [-nsp]
    normally subpathes are used if the output format support them. This option turns off subpathes.

    [-mergelines]
    Some output formats permit the representation of filled polygons with edges that are in a different color than the fill color. Since PostScript does not support this by the standard drawing primitives directly, drawing programs typically generate two objects (the outline and the filled polygon) into the PostScript output. pstoedit is able to recombine these, if they follow each other directly and you specify -mergelines. However, this merging is not supported by all output formats due to restrictions in the target format.

    [-filledrecttostroke]
    Rectangles filled with a solid color can be converted to a stroked line with a width that corresponds to the width of the rectangle. This is of primary interest for output formats which do not support filled polygons at all. But it is restricted to rectangles only, i.e. it is not supported for general polygons

    [-mergetext]
    In order to produce nice looking text output, programs producing PostScript files often split words into smaller pieces which are then placed individually on adjacent positions. However, such split text is hard to edit later on and hence it is sometime better to recombine these pieces again to form a word (or even sequence of words). For this pstoedit implements some heuristics about what text pieces are to be considered parts of a split word. This is based on the geometrical proximity of the different parts and seems to work quite well so far. But there are certainly cases where this simple heuristic fails. So please check the results carefully.

    [-ssp]
    simulate sub paths. Several output formats don't support PostScript pathes containing sub pathes, i.e. pathes with intermediate movetos. In the normal case, each subpath is treated as an independent path for such output formats. This can lead to bad looking results. The most common case where this happens is if you use the -dt option and show some text with letters like e, o, or b, i.e. letter that have a "hole". When the -ssp option is set, pstoedit tries to eliminate these problems. However, this option is CPU time intensive!

    [-flat flatness factor]
    If the output format does not support curves in the way PostScript does or if the -nc option is specified, all curves are approximated by lines. Using the -flat option one can control this approximation. This parameter is directly converted to a PostScript setflat command. Higher numbers, e.g. 10 give rougher, lower numbers, e.g. 0.1 finer approximations.

    [-sclip]
    simulate clipping. Most output formats of pstoedit don't have native support for clipping. For that pstoedit offers an option to perform the clipping of the graphics directly without passing the clippath to the output driver. However, this results in curves being replaced by a lot of line segments and thus larger output files. So use this option only if your output looks different from the input due to clipping. In addition, this "simulated clipping" is not exactly the same as defined in PostScript. There might be lines drawn at the double size. Also clipping of text is not supported unless you also use the -dt option.

    Input and outfile file arguments

    [ inputfile [outputfile] ]

    If neither an input nor an output file is given as argument, pstoedit works as filter reading from standard input and writing to standard output. The special filename "-" can also be used. It represents standard input if it is the first on the command line and standard output if it is the second. So "pstoedit - output.xxx" reads from standard input and writes to output.xxx

    Available formats and their specific options

    pstoedit allows passing individual options to a output format driver. This is done by appending all options to the format specified after the -f option. The format specifier and its options must be separated by a colon (:). If more than one option needs to be passed to the output format driver, the whole argument to -f must be enclosed within double-quote characters, thus:

    -f "format[:option option ...]"

    To see which options are supported by a specific format, type: pstoedit -f format:-help

    The following description of the different formats supported by pstoedit is extracted from the source code of the individual drivers.

    psf - Flattened PostScript (no curves)
    No driver specific options
    ps - Simplified PostScript with curves
    No driver specific options
    debug - for test purposes
    No driver specific options
    dump - for test purposes (same as debug)
    No driver specific options
    gs - any device that GhostScript provides - use gs:format, e.g. gs:pdfwrite
    No driver specific options
    ps2ai - Adobe Illustrator via ps2ai.ps of GhostScript
    No driver specific options
    gmfa - ASCII GNU metafile
    [-plotformat string]
    plotutil format to generate

    gmfb - binary GNU metafile
    [-plotformat string]
    plotutil format to generate

    plot - GNU libplot output types, e.g. plot:-plotformat X
    [-plotformat string]
    plotutil format to generate

    plot-cgm - cgm via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-ai - ai via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-svg - svg via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-ps - ps via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-fig - fig via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-pcl - pcl via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-hpgl - hpgl via GNU libplot
    [-plotformat string]
    plotutil format to generate

    plot-tek - tek via GNU libplot
    [-plotformat string]
    plotutil format to generate

    magick - MAGICK driver
    This driver uses the C++ API of ImageMagick or GraphicsMagick to finally produce different output formats. The output format is determined automatically by Image/GraphicsMagick based on the suffix of the output filename. So an output file test.png will force the creation of an image in PNG format.

    No driver specific options

    swf - SWF driver:
    [-cubic]
    cubic ???

    [-trace]
    trace ???

    svg - scalable vector graphics
    [-localdtd]
    use local DTD

    [-standalone]
    create stand-alone type svg

    [-withdtd]
    write DTD

    [-withgrouping]
    write also ordinary save/restores as SVG group

    [-nogroupedpath]
    do not write a group around pathes

    [-noviewbox]
    don't write a view box

    [-texmode]
    TeX Mode

    [-imagetofile]
    write raster images to separate files instead of embedding them

    [-notextrendering]
    do not write textrendering attribute

    [-border number]
    additional border to draw around bare bounding box (in percent of width and height)

    [-title string]
    text to use as title for the generated document

    xaml - eXtensible Application Markup Language
    [-localdtd]
    use local DTD

    [-standalone]
    create stand-alone type svg

    [-withdtd]
    write DTD

    [-withgrouping]
    write also ordinary save/restores as SVG group

    [-nogroupedpath]
    do not write a group around pathes

    [-noviewbox]
    don't write a view box

    [-texmode]
    TeX Mode

    [-imagetofile]
    write raster images to separate files instead of embedding them

    [-notextrendering]
    do not write textrendering attribute

    [-border number]
    additional border to draw around bare bounding box (in percent of width and height)

    [-title string]
    text to use as title for the generated document

    cgmb1 - CGM binary Format (V1)
    No driver specific options
    cgmb - CGM binary Format (V3)
    No driver specific options
    cgmt - CGM textual Format
    No driver specific options
    mif - (Frame)Maker Intermediate Format
    [-nopage]
    do not add a separate Page entry

    rtf - RTF Format
    No driver specific options
    wemf - Wogls version of EMF
    [-df]
    write info about font processing

    [-dumpfontmap]
    write info about font mapping

    [-size:psbbox]
    use the bounding box as calculated by the PostScript frontent as size

    [-size:fullpage]
    set the size to the size of a full page

    [-size:automatic]
    let windows calculate the bounding box (default)

    [-keepimages]
    debug option - keep the embedded bitmaps as external files

    [-useoldpolydraw]
    do not use Windows PolyDraw but an emulation of it - sometimes needed for certain programs reading the EMF files

    [-OO]
    generate OpenOffice compatible EMF file

    wemfc - Wogls version of EMF with experimental clip support
    [-df]
    write info about font processing

    [-dumpfontmap]
    write info about font mapping

    [-size:psbbox]
    use the bounding box as calculated by the PostScript frontent as size

    [-size:fullpage]
    set the size to the size of a full page

    [-size:automatic]
    let windows calculate the bounding box (default)

    [-keepimages]
    debug option - keep the embedded bitmaps as external files

    [-useoldpolydraw]
    do not use Windows PolyDraw but an emulation of it - sometimes needed for certain programs reading the EMF files

    [-OO]
    generate OpenOffice compatible EMF file

    wemfnss - Wogls version of EMF - no subpathes
    [-df]
    write info about font processing

    [-dumpfontmap]
    write info about font mapping

    [-size:psbbox]
    use the bounding box as calculated by the PostScript frontent as size

    [-size:fullpage]
    set the size to the size of a full page

    [-size:automatic]
    let windows calculate the bounding box (default)

    [-keepimages]
    debug option - keep the embedded bitmaps as external files

    [-useoldpolydraw]
    do not use Windows PolyDraw but an emulation of it - sometimes needed for certain programs reading the EMF files

    [-OO]
    generate OpenOffice compatible EMF file

    hpgl - HPGL code
    [-penplotter]
    plotter is pen plotter (i.e. no support for specific line widths)

    [-pencolorsfromfile]
    read pen colors from file drvhpgl.pencolors in pstoedit data directory

    [-pencolors number]
    maximum number of pen colors to be used by pstoedit (default 0) -

    [-filltype string]
    select fill type e.g. FT 1

    [-hpgl2]
    Use HPGL/2 instead of HPGL/1

    [-rot90]
    rotate hpgl by 90 degrees

    [-rot180]
    rotate hpgl by 180 degrees

    [-rot270]
    rotate hpgl by 270 degrees

    pcl - PCL code
    [-penplotter]
    plotter is pen plotter (i.e. no support for specific line widths)

    [-pencolorsfromfile]
    read pen colors from file drvhpgl.pencolors in pstoedit data directory

    [-pencolors number]
    maximum number of pen colors to be used by pstoedit (default 0) -

    [-filltype string]
    select fill type e.g. FT 1

    [-hpgl2]
    Use HPGL/2 instead of HPGL/1

    [-rot90]
    rotate hpgl by 90 degrees

    [-rot180]
    rotate hpgl by 180 degrees

    [-rot270]
    rotate hpgl by 270 degrees

    pic - PIC format for troff et.al.
    [-troff]
    troff mode (default is groff)

    [-landscape]
    landscape output

    [-portrait]
    portrait output

    [-keepfont]
    print unrecognized literally

    [-text]
    try not to make pictures from running text

    [-debug]
    enable debug output

    asy - Asymptote Format
    No driver specific options
    cairo - cairo driver
    generates compilable c code for rendering with cairo

    [-pango]
    use pango for font rendering

    [-funcname string]
    sets the base name for the generated functions and variables. e.g. myfig

    [-header string]
    sets the output file name for the generated C header file. e.g. myfig.h

    cfdg - Context Free Design Grammar
    Context Free Design Grammar, usable by Context Free Art (http://www.contextfreeart.org/)

    No driver specific options

    dxf - CAD exchange format
    [-polyaslines]
    use LINE instead of POLYLINE in DXF

    [-mm]
    use mm coordinates instead of points in DXF (mm=pt/72*25.4)

    [-ctl]
    map colors to layers

    [-splineaspolyline]
    approximate splines with PolyLines (only for -f dxf_s)

    [-splineasnurb]
    experimental (only for -f dxf_s)

    [-splineasbspline]
    experimental (only for -f dxf_s)

    [-splineassinglespline]
    experimental (only for -f dxf_s)

    [-splineasmultispline]
    experimental (only for -f dxf_s)

    [-splineasbezier]
    use Bezier splines in DXF format (only for -f dxf_s)

    [-splineprecision number]
    number of samples to take from spline curve when doing approximation with -splineaspolyline or -splineasmultispline - should be >= 2 (default 5)

    [-dumplayernames]
    dump all layer names found to standard output

    [-layers string]
    layers to be shown (comma separated list of layer names, no space)

    [-layerfilter string]
    layers to be hidden (comma separated list of layer names, no space)

    dxf_s - CAD exchange format with splines
    [-polyaslines]
    use LINE instead of POLYLINE in DXF

    [-mm]
    use mm coordinates instead of points in DXF (mm=pt/72*25.4)

    [-ctl]
    map colors to layers

    [-splineaspolyline]
    approximate splines with PolyLines (only for -f dxf_s)

    [-splineasnurb]
    experimental (only for -f dxf_s)

    [-splineasbspline]
    experimental (only for -f dxf_s)

    [-splineassinglespline]
    experimental (only for -f dxf_s)

    [-splineasmultispline]
    experimental (only for -f dxf_s)

    [-splineasbezier]
    use Bezier splines in DXF format (only for -f dxf_s)

    [-splineprecision number]
    number of samples to take from spline curve when doing approximation with -splineaspolyline or -splineasmultispline - should be >= 2 (default 5)

    [-dumplayernames]
    dump all layer names found to standard output

    [-layers string]
    layers to be shown (comma separated list of layer names, no space)

    [-layerfilter string]
    layers to be hidden (comma separated list of layer names, no space)

    fig - .fig format for xfig
    The xfig format driver supports special fontnames, which may be produced by using a fontmap file. The following types of names are supported :
    General notation: 
    "Postscript Font Name" ((LaTeX|PostScript|empty)(::special)::)XFigFontName
     
    Examples:
    
    Helvetica LaTeX::SansSerif
    Courier LaTeX::special::Typewriter
    GillSans "AvantGarde Demi"
    Albertus PostScript::special::"New Century Schoolbook Italic" 
    Symbol ::special::Symbol (same as Postscript::special::Symbol)
    
    See also the file examplefigmap.fmp in the misc directory of the pstoedit source distribution for an example font map file for xfig. Please note that the Fontname has to be among those supported by xfig. See - http://www.xfig.org/userman/fig-format.html for a list of legal font names

    [-startdepth number]
    Set the initial depth (default 999)

    [-metric]
    Switch to centimeter display (default inches)

    [-usecorrectfontsize]
    don't scale fonts for xfig. Use this if you also use this option with xfig

    [-depth number]
    Set the page depth in inches (default 11)

    xfig - .fig format for xfig
    See fig format for more details.

    [-startdepth number]
    Set the initial depth (default 999)

    [-metric]
    Switch to centimeter display (default inches)

    [-usecorrectfontsize]
    don't scale fonts for xfig. Use this if you also use this option with xfig

    [-depth number]
    Set the page depth in inches (default 11)

    tfig - .fig format for xfig
    Test only

    [-startdepth number]
    Set the initial depth (default 999)

    [-metric]
    Switch to centimeter display (default inches)

    [-usecorrectfontsize]
    don't scale fonts for xfig. Use this if you also use this option with xfig

    [-depth number]
    Set the page depth in inches (default 11)

    gcode - emc2 gcode format
    See also: http://linuxcnc.org/

    No driver specific options

    gnuplot - gnuplot format
    No driver specific options
    gschem - gschem format
    See also: http://www.geda.seul.org/tools/gschem/

    No driver specific options

    idraw - Interviews draw format (EPS)
    No driver specific options
    java1 - java 1 applet source code
    [java class name string]
    name of java class to generate

    java2 - java 2 source code
    [java class name string]
    name of java class to generate

    kil - .kil format for Kontour
    No driver specific options
    latex2e - LaTeX2e picture format
    [-integers]
    round all coordinates to the nearest integer

    lwo - LightWave 3D Object Format
    No driver specific options
    mma - Mathematica Graphics
    [-eofillfills]
    Filling is used for eofill (default is not to fill)

    mpost - MetaPost Format
    No driver specific options
    noixml - Nemetschek NOI XML format
    Nemetschek Object Interface XML format

    [-r string]
    Allplan resource file

    [-bsl number]
    Bezier Split Level (default 3)

    pcbi - engrave data - insulate/PCB format
    See http://home.vr-web.de/~hans-juergen-jahn/software/devpcb.html for more details.

    No driver specific options

    pcb - pcb format
    See also: http://pcb.sourceforge.net and http://www.penguin.cz/~utx/pstoedit-pcb/

    [-grid missing arg name]
    attempt to snap relevant output to grid (mils) and put failed objects to a different layer

    [-snapdist missing arg name]
    grid snap distance ratio (0 < snapdist <= 0.5, default 0.1)

    [-tshiftx missing arg name]
    additional x shift measured in target units (mils)

    [-tshifty missing arg name]
    additional y shift measured in target units (mils)

    [-grid missing arg name]
    attempt to snap relevant output to grid (mils) and put failed objects to a different layer

    [-mm]
    Switch to metric units (mm)

    [-stdnames]
    use standard layer names instead of descriptive names

    [-forcepoly]
    force all objects to be interpreted as polygons

    pcbfill - pcb format with fills
    See also: http://pcb.sourceforge.net

    No driver specific options

    pdf - Adobe's Portable Document Format
    No driver specific options
    pptx - PresentationML (PowerPoint) format
    This is the format used internally by Microsoft PowerPoint. LibreOffice can also read/write PowerPoint files albeit with some lack of functionality.

    [-colors string]
    "original" to retain original colors (default), "theme" to convert randomly to theme colors, or "theme-lum" also to vary luminance

    [-fonts string]
    use "windows" fonts (default), "native" fonts, or convert to the "theme" font

    [-embed string]
    embed fonts, specified as a comma-separated list of EOT-format font files

    rib - RenderMan Interface Bytestream
    No driver specific options
    rpl - Real3D Programming Language Format
    No driver specific options
    sample - sample driver: if you don't want to see this, uncomment the corresponding line in makefile and make again
    this is a long description for the sample driver

    [-sampleoption integer]
    just an example

    sk - Sketch Format
    No driver specific options
    svm - StarView/OpenOffice.org metafile
    StarView/OpenOffice.org metafile, readable from OpenOffice.org 1.0/StarOffice 6.0 and above.

    [-m]
    map to Arial

    [-nf]
    emulate narrow fonts

    text - text in different forms
    [-height number]
    page height in terms of characters

    [-width number]
    page width in terms of characters

    [-dump]
    dump text pieces

    tgif - Tgif .obj format
    [-ta]
    text as attribute

    tk - tk and/or tk applet source code
    [-R]
    swap HW

    [-I]
    no impress

    [-n string]
    tagnames

    vtk - VTK driver: if you don't want to see this, uncomment the corresponding line in makefile and make again
    this is a long description for the VTKe driver

    [-VTKeoption integer]
    just an example

    wmf - Windows metafile
    [-m]
    map to Arial

    [-nf]
    emulate narrow fonts

    [-drawbb]
    draw bounding box

    [-p]
    prune line ends

    [-nfw]
    Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix the only option is to use the -pta option of pstoedit. However that causes every text to be split into single characters which makes the text hard to edit afterwards. Hence the -nfw options provides a sort of compromise between portability and nice to edit but still nice looking text. Again - this option has no meaning when pstoedit is executed under Windows anyway. In that case the output is portable but nevertheless not split and still looks fine.

    [-winbb]
    let the Windows API calculate the Bounding Box (Windows only)

    [-OO]
    generate OpenOffice compatible EMF file

    emf - Enhanced Windows metafile
    [-m]
    map to Arial

    [-nf]
    emulate narrow fonts

    [-drawbb]
    draw bounding box

    [-p]
    prune line ends

    [-nfw]
    Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix the only option is to use the -pta option of pstoedit. However that causes every text to be split into single characters which makes the text hard to edit afterwards. Hence the -nfw options provides a sort of compromise between portability and nice to edit but still nice looking text. Again - this option has no meaning when pstoedit is executed under Windows anyway. In that case the output is portable but nevertheless not split and still looks fine.

    [-winbb]
    let the Windows API calculate the Bounding Box (Windows only)

    [-OO]
    generate OpenOffice compatible EMF file

    NOTES

    autotrace

    pstoedit cooperates with autotrace. Autotrace can now produce a dump file for further processing by pstoedit using the -bo (backend only) option. Autotrace is a program written by a group around Martin Weber and can be found at http://sourceforge.net/projects/autotrace/.

    Ps2ai

    The ps2ai output format driver is not a native pstoedit output format driver. It does not use the pstoedit postcript flattener, instead it uses the PostScript program ps2ai.ps which is installed in the GhostScript distribution directory. It is included to provide the same "look-and-feel" for the conversion to AI. The additional benefit is that this conversion is now available also via the "convert-to-vector" menu of Gsview. However, lot's of files don't convert nicely or at all using ps2ai.ps. So a native pstoedit driver would be much better. Anyone out there to take this? The AI format is usable for example by Mayura Draw (http://www.mayura.com). Also a driver to the Mayura native format would be nice.

    An alternative to the ps2ai based driver is available via the -f plot:ai format if the libplot(ter) is installed.

    You should use a version of GhostScript greater than or equal to 6.00 for using the ps2ai output format driver.

    MetaPost

    Note that, as far as Scott knows, MetaPost does not support PostScript's eofill. The metapost output format driver just converts eofill to fill, and issues a warning if verbose is set. Fortunately, very few PostScript programs rely on the even-odd fill rule, even though many specify it.

    For more on MetaPost see:

    http://cm.bell-labs.com/who/hobby/MetaPost.html

    Context Free - CFDG

    The driver for the CFDG format (drvcfdg) defines one shape per page of PostScript, but only the first shape is actually rendered (unless the user edits the generated CFDG code, of course). CFDG doesn't support multi-page output, so this probably a reasonable thing to do.

    For more on Context Free see: http://www.contextfreeart.org/

    LaTeX2e

    • LaTeX2e's picture environment is not very powerful. As a result, many elementary PostScript constructs are ignored -- fills, line thicknesses (besides "thick" and "thin"), and dash patterns, to name a few. Furthermore, complex pictures may overrun TeX's memory capacity.

    • Some PostScript constructs are not supported directly by "picture", but can be handled by external packages. If a figure uses color, the top-level document will need to do a "\usepackage{color}". And if a figure contains rotated text, the top-level document will need to do a "\usepackage{rotating}".

    • All lengths, coordinates, and font sizes output by the output format driver are in terms of \unitlength, so scaling a figure is simply a matter of doing a "\setlength{\unitlength}{...}".

    • The output format driver currently supports one output format driver specific option, "integers", which rounds all lengths, coordinates, and font sizes to the nearest integer. This makes hand-editing the picture a little nicer.

    • Why is this output format driver useful? One answer is portability; any LaTeX2e system can handle the picture environment, even if it can't handle PostScript graphics. (pdfLaTeX comes to mind here.) A second answer is that pictures can be edited easily to contain any arbitrary LaTeX2e code. For instance, the text in a figure can be modified to contain complex mathematics, non-Latin alphabets, bibliographic citations, or -- the real reason Scott wrote the LaTeX2e output format driver -- hyperlinks to the surrounding document (with help from the hyperref package).

    Creating a new output format driver

    To implement a new output format driver you can start from drvsampl.cpp and drvsampl.h. See also comments in drvbase.h and drvfuncs.h for an explanation of methods that should be implemented for a new output format driver.

    ENVIRONMENT VARIABLES

    A default PostScript interpreter to be called by pstoedit is specified at compile time. You can overwrite the default by setting the GS environment variable to the name of a suitable PostScript interpreter.

    You can check which name of a PostScript interpreter was compiled into pstoedit using: pstoedit -help -v.

    See the GhostScript manual for descriptions of environment variables used by Ghostscript most importantly GS_FONTPATH and GS_LIB; other environment variables also affect output to display, print, and additional filtering and processing. See the related documentation.

    pstoedit allocates temporary files using the function tempnam(3). Thus the location for temporary files might be controllable by other environment variables used by this function. See the tempnam(3) manpage for descriptions of environment variables used. On UNIX like system this is probably the TMPDIR variable, on DOS/WINDOWS either TMP or TEMP.

    TROUBLE SHOOTING

    If you have problems with pstoedit first try whether Ghostscript successfully displays your file. If yes, then try pstoedit -f ps infile.ps testfile.ps and check whether testfile.ps still displays correctly using Ghostscript. If this file doesn't look correctly then there seems to be a problem with pstoedit's PostScript frontend. If this file looks good but the output for a specific format is wrong, the problem is probably in the output format driver for the specific format. In either case send bug fixes and reports to the author.

    A common problem with PostScript files is that the PostScript file redefines one of the standard PostScript operators inconsistently. There is no effect of this if you just print the file since the original PostScript "program" uses these new operator in the new meaning and does not use the original ones anymoew. However, when run under the control of pstoedit, these operators are expected to work with the original semantics.

    So far I've seen redefinitions for:

    • lt - "less-then" to mean "draw a line to"
    • string - "create a string object" to mean "draw a string"
    • length - "get the length of e.g. a string" to a "float constant"

    I've included work-arounds for the ones mentioned above, but some others could show up in addition to those.

    RESTRICTIONS

    • Non-standard fonts (e.g. TeXbitmap fonts) are mapped to a default font which can be changed using the -df option. pstoedit chooses the size of the replacement font such that the width of the string in the original font is the same as in the replacement font. This is done for each text fragment displayed. Special character encoding support is limited in this case. If a character cannot be mapped into the target format, pstoedit displays a '#' instead. See also the -uchar option.

    • pstoedit supports bitmap graphics only for some output format drivers.

    • Some output format drivers, e.g. the Gnuplot output format driver or the 3D output format driver (rpl, lwo, rib) do not support text.

    • For most output format drivers pstoedit does not support clipping (mainly due to limitations in the target format). You can try to use the -sclip option to simulate clipping. However, this doesn't work in all cases as expected.

    • Special note about the Java output format drivers (java1 and java2). The java output format drivers generate a java source file that needs other files in order to be compiled and usable. These other files are Java classes (one applet and support classes) that allow to step through the individual pages of a converted PostScript document. This applet can easily be activated from a html-document. See the contrib/java/java1/readme_java1.txt or contrib/java/java2/readme_java2.htm file for more details.

    FAQs

    1. Why do letters like O or B get strange if converted to tgif/xfig using the -dt option?

      This is because most output format drivers don't support composite paths with intermediate gaps (moveto's) and second don't support very well the (eo)fill operators of PostScript (winding rule). For such objects pstoedit breaks them into smaller objects whenever such a gap is found. This results in the "hole" beeing filled with black color instead of beeing transparent. Since version 3.11 you can try the -ssp option in combination with the xfig output format driver.

    2. Why does pstoedit produce ugly results from PostScript files generated by dvips?

      TeX documents usually use bitmap fonts. Such fonts cannot be used as native font in other format. So pstoedit replaces the TeX font with another native font. Of course, the replacement font will in most cases produce another look, especially if mathematical symbols are used. Try to use PostScript fonts instead of the bitmap fonts when generating a PostScript file from TeX or LaTeX.

    AUTHOR

    Wolfgang Glunz, wglunz35_AT_pstoedit.net, http://de.linkedin.com/in/wolfgangglunz

    CANONICAL ARCHIVE SITE

    http://www.pstoedit.net/pstoedit/

    At this site you also find more information about pstoedit and related programs and hints how to subscribe to a mailing list in order to get informed about new releases and bug-fixes.

    If you like pstoedit - please express so also at Facebook http://www.facebook.com/pages/pstoedit/260606183958062.

    ACKNOWLEDGEMENTS

    LEGAL NOTICES

    Trademarks mentioned are the property of their respective owners.

    Some code incorporated in the pstoedit package is subject to copyright or other intellectual property rights or restrictions including attribution rights. See the notes in individual files.

    pstoedit is controlled under the Free Software Foundation GNU Public License (GPL). However, this does not apply to importps and the additional plugins.

    Aladdin Ghostscript is a redistributable software package with copyright restrictions controlled by Aladdin Software.

    pstoedit has no other relation to Ghostscript besides calling it in a subprocess.

    The authors, contributors, and distributors of pstoedit are not responsible for its use for any purpose, or for the results generated thereby.

    Restrictions such as the foregoing may apply in other countries according to international conventions and agreements.

    pstoedit-3.62/doc/pstoedit.tex0000774000175500000000000017515012137263735013360 00000000000000\documentclass[english,a4paper]{article} \usepackage[latin1]{inputenc} \usepackage{babel} %% do we have the fancyhdr package? \IfFileExists{fancyhdr.sty}{ \usepackage[fancyhdr]{latex2man} }{ %% do we have the fancyheadings package? \IfFileExists{fancyheadings.sty}{ \usepackage[fancy]{latex2man} }{ \usepackage[nofancy]{latex2man} \message{no fancyhdr or fancyheadings package present, discard it} }} \setVersionWord{Version} %%% that's the default, no need to set it. \setVersion{3.62} \setDate{April 2013} \setlength{\emergencystretch}{1.5em} \usepackage{url} \let\URL\url \let\Email\url \let\File\url \begin{document} \begin{Name}{1}{pstoedit}{Dr. Wolfgang Glunz}{Conversion Tools}{PSTOEDIT} \Prog{pstoedit} - a tool converting PostScript and PDF files into various vector graphic formats \end{Name} \section{Synopsis} %%%%%%%%%%%%%%%%%% \subsection{From the command shell} \Prog{pstoedit} \oOpt{-v -help} \\ \Prog{pstoedit} \oOptArg{-include}{~name of a PostScript file to be included} \oOptArg{-df}{~font name} \oOpt{-nomaptoisolatin1} \oOpt{-dis} \oOptArg{-pngimage}{~filename - for debugging purpose mainly. Write result of processing also to a PNG file.} \oOpt{-q} \oOpt{-nq} \oOpt{-nc} \oOpt{-nsp} \oOpt{-mergelines} \oOpt{-filledrecttostroke} \oOpt{-mergetext} \oOpt{-dt} \oOpt{-adt} \oOpt{-ndt} \oOpt{-dgbm} \oOpt{-correctdefinefont} \oOpt{-pti} \oOpt{-pta} \oOptArg{-xscale}{~number} \oOptArg{-yscale}{~number} \oOptArg{-xshift}{~number} \oOptArg{-yshift}{~number} \oOpt{-centered} \oOptArg{-minlinewidth}{~number} \oOptArg{-pagenumberformat}{~page number format specification} \oOpt{-split} \oOpt{-v} \oOpt{-usebbfrominput} \oOpt{-ssp} \oOptArg{-uchar}{~character} \oOpt{-nb} \oOptArg{-page}{~page number} \oOptArg{-flat}{~flatness factor} \oOpt{-sclip} \oOpt{-ups} \oOpt{-rgb} \oOpt{-useagl} \oOpt{-noclip} \oOpt{-t2fontsast1} \oOpt{-keep} \oOpt{-debugfonthandling} \oOpt{-gstest} \oOpt{-nfr} \oOpt{-glyphs} \oOpt{-useoldnormalization} \oOptArg{-rotate}{~angle (0-360)} \oOptArg{-fontmap}{~name of font map file for pstoedit} \oOptArg{-pagesize}{~page format} \oOpt{-help} \oOptArg{-gs}{~path to the ghostscript executable/DLL } \oOpt{-bo} \oOptArg{-psarg}{~argument string} \oOptArg{-pslanguagelevel}{~PostScript Language Level to be used 1,2, or 3} \OptArg{-f}{~"format\Lbr:options\Rbr"} \oOptArg{-gsregbase}{~GhostScript base registry path} [ inputfile [outputfile] ] \subsection{From Gsview} Pstoedit can be called from within gsview via "\textbf{Edit | Convert to vector format}" \subsection{From programs that support the ALDUS graphic import filter interface} \Prog{pstoedit} can also be used as PostScript and PDF graphic import filter for several programs including MS-Office, PaintShop-Pro and PhotoLine. See \URL{http://www.pstoedit.net/importps/} for more details. \section{Description} %%%%%%%%%%%%%%%%%%%%% \subsection{RELEASE LEVEL} This manpage documents release \Version\ of \Prog{pstoedit}. \subsection{USE} \Prog{pstoedit} converts PostScript and PDF files to various vector graphic formats. The resulting files can be edited or imported into various drawing packages. Type \textbf{pstoedit -help} \noindent to get a list of supported output formats. Pstoedit comes with a large set of format drivers integrated in the binary. Additional drivers can be installed as plugins and are available via \URL{http://www.pstoedit.net/plugins/}. Just copy the plugins to the same directory where the pstoedit binary is installed or - under Unix like systems only - alternatively into the lib directory parallel to the bin directory where pstoedit is installed. However, unless you also get a license key for the plugins, the additional drivers will slightly distort the resulting graphics. See the documentation provided with the plugins for further details. \subsection{PRINCIPLE OF CONVERSION} \Prog{pstoedit} works by redefining the some basic painting operators of PostScript, e.g. \textbf{stroke} or \textbf{show} (bitmaps drawn by the image operator are not supported by all output formats.) After redefining these operators, the PostScript or PDF file that needs to be converted is processed by a PostScript interpreter, e.g., Ghostscript (\Cmd{gs}{1}). You normally need to have a PostScript interpreter installed in order to use this program. However, you can perform some "back end only" processing of files following the conventions of the pstoedit intermediate formate by specifying the \Opt{-bo} option. See "Available formats and their specific options" below. The output that is written by the interpreter due to the redefinition of the drawing operators is a sort of 'flat' PostScript file that contains only simple operations like moveto, lineto, show, etc. You can look at this file using the \Opt{-f debug} option. This output is read by end-processing functions of \Prog{pstoedit} and triggers the drawing functions in the selected output format driver sometime called also "backend". \subsection{NOTES} If you want to process PDF files directly, your PostScript interpreter must provide this feature, as does Ghostscript. Aladdin Ghostscript is recommended for processing PDF and PostScript files. \section{Options} \subsection{General options} \begin{description} \item[\oOptArg{-include}{~name of a PostScript file to be included}] This options allows to specify an additional PostScript file that will be executed just before the normal input is read. This is helpful for including specific page settings or for disabling potentially unsafe PostScript operators, e.g., file, renamefile, or deletefile. \item[\oOptArg{-xscale}{~number}] scale by a factor in x-direction \item[\oOptArg{-yscale}{~number}] scale by a factor in y-direction \item[\oOptArg{-xshift}{~number}] shift image in x-direction \item[\oOptArg{-yshift}{~number}] shift image in y-direction \item[\oOpt{-centered}] center image before scaling or shifting \item[\oOptArg{-minlinewidth}{~number}] minimal line width. All lines thinner than this will be drawn in this line width - especially zero-width lines \item[\oOptArg{-pagenumberformat}{~page number format specification}] format specification for page numbers in file name if -split is used. The specification is used to create the page number using sprintf.The specification shall not include the leading % nor the trailing d. Default is empty string which results in formatting the page number using %d. This results in page numbers like 1, 2, ..., 10. Sometimes you may want to have fixed length with leading 0, so you might want to specify 02 which means 2 digits with leading 0. \item[\oOpt{-split}] Create a new file for each page of the input. For this the output filename must contain a \%d which is replaced with the current page number. This option is automatically switched on for output formats that don't support multiple pages within one file, e.g. fig or gnuplot. \item[\oOpt{-usebbfrominput}] If specified, pstoedit uses the BoundingBox as is (hopefully) found in the input file instead of one that is calculated by its own. \item[\oOptArg{-page}{~page number}] Select a single page from a multi page PostScript or PDF file. \item[\oOpt{-rgb}] Since version 3.30 pstoedit uses the CMYK colors internally. The -rgb option turns on the old behavior to use RGB values. \item[\oOpt{-useagl}] use Adobe Glyph List instead of the IsoLatin1 table (this is experimental) \item[\oOpt{-noclip}] don't use clipping (relevant only if output format supports clipping at all) \item[\oOptArg{-rotate}{~angle (0-360)}] Rotage image by angle. \item[\oOptArg{-pagesize}{~page format}] set page size for output medium. This option sets the page size for the output medium. Currently this is just used by the libplot output format driver, but might be used by other output format drivers in future. The page size is specified in terms of the usual page size names, e.g. letter or a4. \item[\oOpt{-help}] show the help information \item[\oOptArg{-gs}{~path to the ghostscript executable/DLL }] tells pstoedit which ghostscript executable/DLL to use - overwrites the internal search heuristic \item[\oOpt{-bo}] You can run backend processing only (without the PostScript interpreter frontend) by first running \textbf{pstoedit} \Opt{-f dump} \Arg{infile} \Arg{dumpfile} and then running \textbf{pstoedit} \OptArg{-f}{~format} \Opt{-bo} \Arg{dumpfile} \Arg{outfile}. \item[\oOptArg{-psarg}{~argument string}] The string given with this option is passed directly to Ghostscript when Ghostscript is called to process the PostScript file for \Prog{pstoedit}. For example: \textbf{-psarg}\textbf{~"}\textbf{-r300x300}\textbf{"}. This causes the resolution to be changed to 300x300 dpi. (With older versions of GhostScript, changing the resolution this way has an effect only if the \Opt{-dis} option is given.) If you want to pass multiple options to Ghostscript you can use multiple -psarg options \Opt{-psarg opt1} \Opt{-psarg opt2} \Opt{-psarg opt2}. See the GhostScript manual for other possible options. \item[\oOptArg{-pslanguagelevel}{~PostScript Language Level to be used 1,2, or 3}] PostScript Language Level to be used 1,2, or 3 You can switch Ghostscript into PostScript Level 1 only mode by \Opt{-pslanguagelevel 1}. This can be useful for example if the PostScript file to be converted uses some Level 2 specific custom color models that are not supported by pstoedit. However, this requires that the PostScript program checks for the PostScript level supported by the interpreter and "acts" accordingly. The default language level is 3. \item[\OptArg{-f}{~"format\Lbr:options\Rbr"}] target output format recognized by \Prog{pstoedit}. Since other format drivers can be loaded dynamically, type \texttt{pstoedit -help} to get a full list of formats. See "Available formats and their specific options " below for an explanation of the \oArg{:options} to \Opt{-f} format. If the format option is not given, pstoedit tries to guess the target format from the suffix of the output filename. However, in a lot of cases, this is not a unique mapping and hence pstoedit demands the \Opt{-f} option. \item[\oOptArg{-gsregbase}{~GhostScript base registry path}] registry path to use as a base path when searching GhostScript interpreter This option provides means to specify a registry key under HKLM/Software where to search for GS interpreter key, version and \verb+GS_DLL / GS_LIB+ values. Example: "-gsregbase MyCompany" means that HKLM/Software/MyCompany/GPL GhostScript would be searched instead of HKLM/Software/GPL GhostScript. \end{description} \subsection{Text and font handling related options} \begin{description} \item[\oOptArg{-df}{~font name}] Sometimes fonts embedded in a PostScript program do not have a fontname. For example, this happens in PostScript files generated by \Cmd{dvips}{1}. In such a case \Prog{pstoedit} uses a replacement font. The default for this is Courier. Another font can be specified using the \Opt{-df} option. \Opt{-df Helvetica} causes all unnamed fonts to be replaced by Helvetica. \item[\oOpt{-nomaptoisolatin1}] Normally \Prog{pstoedit} maps all character codes to the ones defined by the ISO-Latin1 encoding. If you specify \Opt{-nomaptoisolatin1} then the encoding from the input PostScript is passed unchanged to the output. This may result in strange text output but on the other hand may be the only way to get some fonts converted appropriately. Try what fits best to your concrete case. \item[\oOptArg{-pngimage}{~filename - for debugging purpose mainly. Write result of processing also to a PNG file.}] for debugging purpose mainly. Write result of processing also to a PNG file \item[\oOpt{-dt}] Draw text - Text is drawn as polygons. This might produce a large output file. This option is automatically switched on if the selected output format does not support text, e.g. \Cmd{gnuplot}{1}. \item[\oOpt{-adt}] Automatic Draw text - This option turns on the \Opt{-dt} option selectively for fonts that seem to be no normal text fonts, e.g. Symbol.. \item[\oOpt{-ndt}] Never Draw text - fully disable the heuristics used by pstoedit to decide when to "draw" text instead of showing it as text. This may produce incorrect results, but in some cases it might nevertheless be useful. "Use at own risk". \item[\oOpt{-dgbm}] experimental - draw also bitmaps generated by fonts/glyphs \item[\oOpt{-correctdefinefont}] Some PostScript files, e.g. such as generated by ChemDraw, use the PostScript definefont operator in way that is incompatible with pstoedit's assumptions. The new font is defined by copying an old font without changing the FontName of the new font. When this option is applied, some "patches" are done after a definefont in order to make it again compatible with pstoedit's assumptions. This option is not enabled per default, since it may break other PostScript file. It is tested only with ChemDraw generated files. \item[\oOpt{-pti}] Precision text - Normally a text string is drawn as it occurs in the input file. However, in some situations, this might produce wrongly positioned characters. This is due to limitiations in most output formats of pstoedit. They cannot represent text with arbitray inter-letter spacing which is easily possible in PDF and PostScript. With \Opt{-pta}, each character of a text string is placed separately. With \Opt{-pti}, this is done only in cases when there is a non zero inter-letter spacing. The downside of "precision text" is a bigger file size and hard to edit text. \item[\oOpt{-pta}] see -pti \item[\oOptArg{-uchar}{~character}] Sometimes pstoedit cannot map a character from the encoding used by the PostScript file to the font encoding of the target format. In this case pstoedit replaces the input character by a special character in order to show all the places that couldn't be mapped correctly. The default for this is a "\#". Using the \Opt{-uchar} option it is possible to specify another character to be used instead. If you want to use a space, use -uchar " ". \item[\oOpt{-t2fontsast1}] Handle type 2 fonts same as type 1. Type 2 fonts sometimes occur as embedded fonts within PDF files. In the default mode, text using such fonts is drawn as polygons since pstoedit assumes that such a font is not available on the users machine. If this option is set, pstoedit assumes that the internal encoding follows the same as for a standard font and generates normal text output. This assumption may not be true in all cases. But it is nearly impossible for pstoedit to verify this assumption - it would have to do a sort of OCR. \item[\oOpt{-nfr}] In normal mode pstoedit replaces bitmap fonts with a font as defined by the \Opt{-df} option. This is done, because most output formats can't handle such fonts. This behavior can be switched off using the \Opt{-nfr} option but then it strongly depends on the application reading the the generated file whether the file is usable and correctly interpreted or not. Any problems are then out of control of pstoedit. \item[\oOpt{-glyphs}] pass glyph names to the output format driver. So far no output format driver really uses the glyph names, so this does not have any effect at the moment. It is a preparation for future work. \item[\oOpt{-useoldnormalization}] Just use this option in case the new heuristic introduced in 3.5 doesn't produce correct results - however, this normalization of font encoding will always be a best-effort approach since there is no real general solution to it with reasonable effort \item[\oOptArg{-fontmap}{~name of font map file for pstoedit}] The font map is a simple text file containing lines in the following format:\\ \verb+document_font_name target_font_name+ \\ Lines beginning with \verb+%+ are considerd comments \\ If a font name contains spaces, use the \verb+"font name with spaces"+ notation. If a target\_font\_name starts with /, it is regarded as alias to a former entry. Each font name found in the document is checked against this mapping and if there is a corresponding entry, the new name is used for the output. If the \Opt{-fontmap} option is not specified, \Prog{pstoedit} automatically looks for the file \emph{drivername}.fmp in the installation directory and uses that file as a default fontmap file if available. The installation directory is: \begin{itemize} \item Windows: The same directory where the \Prog{pstoedit} executable is located \item Unix: \\ $<$\emph{The directory where the pstoedit executably is located}$>$\verb+/../lib/+ \end{itemize} The mpost.fmp in the misc directory of the pstoedit distibution is a sample map file with mappings from over 5000 PostScript font names to their \TeX equivalents. This is useful because MetaPost is frequently used with \TeX/\LaTeX\ and those programs don't use standard font names. This file and the MetaPost output format driver are provided by Scott Pakin (\Email{scott+ps2ed_AT_pakin.org}). Another example is wemf.fmp to be used under Windows. See the misc directory of the pstoedit source distribution. After loading the implicit (based on driver name) or explicit (based on the -fontmap option) font map file, a system specific map file is searched and loaded from the installation directory (unix.fmp or windows.fmp). This file can be used to redirect certain fonts to system specific names using the /AliasName notation described above. \end{description} \subsection{Debug options} \begin{description} \item[\oOpt{-dis}] Open a display during processing by Ghostscript. Some files only work correctly this way. \item[\oOpt{-q}] quiet mode - do not write startup message \item[\oOpt{-nq}] No exit from the PostScript interpreter. Normally Ghostscript exits after processing the pstoedit input-file. For debugging it can be useful to avoid this. If you do, you will have to type quit at the \verb+GS>+ prompt to exit from Ghostscript. \item[\oOpt{-v}] Switch on verbose mode. Some additional information is shown during processing. \item[\oOpt{-nb}] Since version 3.10 \Prog{pstoedit} uses the \texttt{-dDELAYBIND} option when calling GhostScript. Previously the \texttt{-dNOBIND} option was used instead but that sometimes caused problems if a user's PostScript file overloaded standard PostScript operator with totally new semantic, e.g. lt for lineto instead of the standard meaning of "less than". Using \Opt{-nb} the old style can be activated again in case the \texttt{-dDELAYBIND} gives different results as before. In such a case please also contact the author. \item[\oOpt{-ups}] write text as plain string instead of hex string in intermediate format - normally useful for trouble shooting and debugging only. \item[\oOpt{-keep}] keep the intermediate files produced by pstoedit - for debug purposes only \item[\oOpt{-debugfonthandling}] writes verbose messages related to internal font processing - for debug purposes only \item[\oOpt{-gstest}] perform a basic test for the interworking with GhostScript \end{description} \subsection{Drawing related options} \begin{description} \item[\oOpt{-nc}] no curves. Normally pstoedit tries to keep curves from the input and transfers them to the output if the output format supports curves. If the output format does not support curves, then pstoedit replaces curves by a series of lines (see also \Opt{-flat} option). However, in some cases the user might wish to have this behavior also for output formats that originally support curves. This can be forced via the \Opt{-nc} option. \item[\oOpt{-nsp}] normally subpathes are used if the output format support them. This option turns off subpathes. \item[\oOpt{-mergelines}] Some output formats permit the representation of filled polygons with edges that are in a different color than the fill color. Since PostScript does not support this by the standard drawing primitives directly, drawing programs typically generate two objects (the outline and the filled polygon) into the PostScript output. \Prog{pstoedit} is able to recombine these, if they follow each other directly and you specify \Opt{-mergelines}. However, this merging is not supported by all output formats due to restrictions in the target format. \item[\oOpt{-filledrecttostroke}] Rectangles filled with a solid color can be converted to a stroked line with a width that corresponds to the width of the rectangle. This is of primary interest for output formats which do not support filled polygons at all. But it is restricted to rectangles only, i.e. it is not supported for general polygons \item[\oOpt{-mergetext}] In order to produce nice looking text output, programs producing PostScript files often split words into smaller pieces which are then placed individually on adjacent positions. However, such split text is hard to edit later on and hence it is sometime better to recombine these pieces again to form a word (or even sequence of words). For this pstoedit implements some heuristics about what text pieces are to be considered parts of a split word. This is based on the geometrical proximity of the different parts and seems to work quite well so far. But there are certainly cases where this simple heuristic fails. So please check the results carefully. \item[\oOpt{-ssp}] simulate sub paths. Several output formats don't support PostScript pathes containing sub pathes, i.e. pathes with intermediate movetos. In the normal case, each subpath is treated as an independent path for such output formats. This can lead to bad looking results. The most common case where this happens is if you use the \Opt{-dt} option and show some text with letters like e, o, or b, i.e. letter that have a "hole". When the \Opt{-ssp} option is set, pstoedit tries to eliminate these problems. However, this option is CPU time intensive! \item[\oOptArg{-flat}{~flatness factor}] If the output format does not support curves in the way PostScript does or if the \Opt{-nc} option is specified, all curves are approximated by lines. Using the \Opt{-flat} option one can control this approximation. This parameter is directly converted to a PostScript \textbf{setflat} command. Higher numbers, e.g. 10 give rougher, lower numbers, e.g. 0.1 finer approximations. \item[\oOpt{-sclip}] simulate clipping. Most output formats of pstoedit don't have native support for clipping. For that \Prog{pstoedit} offers an option to perform the clipping of the graphics directly without passing the clippath to the output driver. However, this results in curves being replaced by a lot of line segments and thus larger output files. So use this option only if your output looks different from the input due to clipping. In addition, this "simulated clipping" is not exactly the same as defined in PostScript. There might be lines drawn at the double size. Also clipping of text is not supported unless you also use the \Opt{-dt} option. \end{description} \subsection{Input and outfile file arguments} [ inputfile [outputfile] ] If neither an input nor an output file is given as argument, pstoedit works as filter reading from standard input and writing to standard output. The special filename "-" can also be used. It represents standard input if it is the first on the command line and standard output if it is the second. So "pstoedit - output.xxx" reads from standard input and writes to output.xxx \section{Available formats and their specific options} \Prog{pstoedit} allows passing individual options to a output format driver. This is done by appending all options to the format specified after the \Opt{-f} option. The format specifier and its options must be separated by a colon (:). If more than one option needs to be passed to the output format driver, the whole argument to \Opt{-f} must be enclosed within double-quote characters, thus: \OptArg{-f}{~"format[:option option ...]"} To see which options are supported by a specific format, type: \textbf{pstoedit -f format:-help} \\ The following description of the different formats supported by pstoedit is extracted from the source code of the individual drivers. \subsubsection{psf - Flattened PostScript (no curves)} No driver specific options %%// end of options \subsubsection{ps - Simplified PostScript with curves} No driver specific options %%// end of options \subsubsection{debug - for test purposes} No driver specific options %%// end of options \subsubsection{dump - for test purposes (same as debug)} No driver specific options %%// end of options \subsubsection{gs - any device that GhostScript provides - use gs:format, e.g. gs:pdfwrite} No driver specific options %%// end of options \subsubsection{ps2ai - Adobe Illustrator via ps2ai.ps of GhostScript} No driver specific options %%// end of options \subsubsection{gmfa - ASCII GNU metafile } \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{gmfb - binary GNU metafile } \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot - GNU libplot output types, e.g. plot:-plotformat X} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-cgm - cgm via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-ai - ai via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-svg - svg via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-ps - ps via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-fig - fig via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-pcl - pcl via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-hpgl - hpgl via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{plot-tek - tek via GNU libplot} \begin{description} \item[\oOptArg{-plotformat}{~string}] plotutil format to generate \end{description} %%// end of options \subsubsection{magick - MAGICK driver} This driver uses the C++ API of ImageMagick or GraphicsMagick to finally produce different output formats. The output format is determined automatically by Image/GraphicsMagick based on the suffix of the output filename. So an output file test.png will force the creation of an image in PNG format. No driver specific options %%// end of options \subsubsection{swf - SWF driver: } \begin{description} \item[\oOpt{-cubic}] cubic ??? \item[\oOpt{-trace}] trace ??? \end{description} %%// end of options \subsubsection{svg - scalable vector graphics} \begin{description} \item[\oOpt{-localdtd}] use local DTD \item[\oOpt{-standalone}] create stand-alone type svg \item[\oOpt{-withdtd}] write DTD \item[\oOpt{-withgrouping}] write also ordinary save/restores as SVG group \item[\oOpt{-nogroupedpath}] do not write a group around pathes \item[\oOpt{-noviewbox}] don't write a view box \item[\oOpt{-texmode}] TeX Mode \item[\oOpt{-imagetofile}] write raster images to separate files instead of embedding them \item[\oOpt{-notextrendering}] do not write textrendering attribute \item[\oOptArg{-border}{~number}] additional border to draw around bare bounding box (in percent of width and height) \item[\oOptArg{-title}{~string}] text to use as title for the generated document \end{description} %%// end of options \subsubsection{xaml - eXtensible Application Markup Language} \begin{description} \item[\oOpt{-localdtd}] use local DTD \item[\oOpt{-standalone}] create stand-alone type svg \item[\oOpt{-withdtd}] write DTD \item[\oOpt{-withgrouping}] write also ordinary save/restores as SVG group \item[\oOpt{-nogroupedpath}] do not write a group around pathes \item[\oOpt{-noviewbox}] don't write a view box \item[\oOpt{-texmode}] TeX Mode \item[\oOpt{-imagetofile}] write raster images to separate files instead of embedding them \item[\oOpt{-notextrendering}] do not write textrendering attribute \item[\oOptArg{-border}{~number}] additional border to draw around bare bounding box (in percent of width and height) \item[\oOptArg{-title}{~string}] text to use as title for the generated document \end{description} %%// end of options \subsubsection{cgmb1 - CGM binary Format (V1)} No driver specific options %%// end of options \subsubsection{cgmb - CGM binary Format (V3)} No driver specific options %%// end of options \subsubsection{cgmt - CGM textual Format} No driver specific options %%// end of options \subsubsection{mif - (Frame)Maker Intermediate Format} \begin{description} \item[\oOpt{-nopage}] do not add a separate Page entry \end{description} %%// end of options \subsubsection{rtf - RTF Format} No driver specific options %%// end of options \subsubsection{wemf - Wogls version of EMF } \begin{description} \item[\oOpt{-df}] write info about font processing \item[\oOpt{-dumpfontmap}] write info about font mapping \item[\oOpt{-size:psbbox}] use the bounding box as calculated by the PostScript frontent as size \item[\oOpt{-size:fullpage}] set the size to the size of a full page \item[\oOpt{-size:automatic}] let windows calculate the bounding box (default) \item[\oOpt{-keepimages}] debug option - keep the embedded bitmaps as external files \item[\oOpt{-useoldpolydraw}] do not use Windows PolyDraw but an emulation of it - sometimes needed for certain programs reading the EMF files \item[\oOpt{-OO}] generate OpenOffice compatible EMF file \end{description} %%// end of options \subsubsection{wemfc - Wogls version of EMF with experimental clip support} \begin{description} \item[\oOpt{-df}] write info about font processing \item[\oOpt{-dumpfontmap}] write info about font mapping \item[\oOpt{-size:psbbox}] use the bounding box as calculated by the PostScript frontent as size \item[\oOpt{-size:fullpage}] set the size to the size of a full page \item[\oOpt{-size:automatic}] let windows calculate the bounding box (default) \item[\oOpt{-keepimages}] debug option - keep the embedded bitmaps as external files \item[\oOpt{-useoldpolydraw}] do not use Windows PolyDraw but an emulation of it - sometimes needed for certain programs reading the EMF files \item[\oOpt{-OO}] generate OpenOffice compatible EMF file \end{description} %%// end of options \subsubsection{wemfnss - Wogls version of EMF - no subpathes } \begin{description} \item[\oOpt{-df}] write info about font processing \item[\oOpt{-dumpfontmap}] write info about font mapping \item[\oOpt{-size:psbbox}] use the bounding box as calculated by the PostScript frontent as size \item[\oOpt{-size:fullpage}] set the size to the size of a full page \item[\oOpt{-size:automatic}] let windows calculate the bounding box (default) \item[\oOpt{-keepimages}] debug option - keep the embedded bitmaps as external files \item[\oOpt{-useoldpolydraw}] do not use Windows PolyDraw but an emulation of it - sometimes needed for certain programs reading the EMF files \item[\oOpt{-OO}] generate OpenOffice compatible EMF file \end{description} %%// end of options \subsubsection{hpgl - HPGL code} \begin{description} \item[\oOpt{-penplotter}] plotter is pen plotter (i.e. no support for specific line widths) \item[\oOpt{-pencolorsfromfile}] read pen colors from file drvhpgl.pencolors in pstoedit data directory \item[\oOptArg{-pencolors}{~number}] maximum number of pen colors to be used by pstoedit (default 0) - \item[\oOptArg{-filltype}{~string}] select fill type e.g. FT 1 \item[\oOpt{-hpgl2}] Use HPGL/2 instead of HPGL/1 \item[\oOpt{-rot90}] rotate hpgl by 90 degrees \item[\oOpt{-rot180}] rotate hpgl by 180 degrees \item[\oOpt{-rot270}] rotate hpgl by 270 degrees \end{description} %%// end of options \subsubsection{pcl - PCL code} \begin{description} \item[\oOpt{-penplotter}] plotter is pen plotter (i.e. no support for specific line widths) \item[\oOpt{-pencolorsfromfile}] read pen colors from file drvhpgl.pencolors in pstoedit data directory \item[\oOptArg{-pencolors}{~number}] maximum number of pen colors to be used by pstoedit (default 0) - \item[\oOptArg{-filltype}{~string}] select fill type e.g. FT 1 \item[\oOpt{-hpgl2}] Use HPGL/2 instead of HPGL/1 \item[\oOpt{-rot90}] rotate hpgl by 90 degrees \item[\oOpt{-rot180}] rotate hpgl by 180 degrees \item[\oOpt{-rot270}] rotate hpgl by 270 degrees \end{description} %%// end of options \subsubsection{pic - PIC format for troff et.al.} \begin{description} \item[\oOpt{-troff}] troff mode (default is groff) \item[\oOpt{-landscape}] landscape output \item[\oOpt{-portrait}] portrait output \item[\oOpt{-keepfont}] print unrecognized literally \item[\oOpt{-text}] try not to make pictures from running text \item[\oOpt{-debug}] enable debug output \end{description} %%// end of options \subsubsection{asy - Asymptote Format} No driver specific options %%// end of options \subsubsection{cairo - cairo driver} generates compilable c code for rendering with cairo \begin{description} \item[\oOpt{-pango}] use pango for font rendering \item[\oOptArg{-funcname}{~string}] sets the base name for the generated functions and variables. e.g. myfig \item[\oOptArg{-header}{~string}] sets the output file name for the generated C header file. e.g. myfig.h \end{description} %%// end of options \subsubsection{cfdg - Context Free Design Grammar} Context Free Design Grammar, usable by Context Free Art (http://www.contextfreeart.org/) No driver specific options %%// end of options \subsubsection{dxf - CAD exchange format} \begin{description} \item[\oOpt{-polyaslines}] use LINE instead of POLYLINE in DXF \item[\oOpt{-mm}] use mm coordinates instead of points in DXF (mm=pt/72*25.4) \item[\oOpt{-ctl}] map colors to layers \item[\oOpt{-splineaspolyline}] approximate splines with PolyLines (only for -f dxf\_s) \item[\oOpt{-splineasnurb}] experimental (only for -f dxf\_s) \item[\oOpt{-splineasbspline}] experimental (only for -f dxf\_s) \item[\oOpt{-splineassinglespline}] experimental (only for -f dxf\_s) \item[\oOpt{-splineasmultispline}] experimental (only for -f dxf\_s) \item[\oOpt{-splineasbezier}] use Bezier splines in DXF format (only for -f dxf\_s) \item[\oOptArg{-splineprecision}{~number}] number of samples to take from spline curve when doing approximation with -splineaspolyline or -splineasmultispline - should be $>=$ 2 (default 5) \item[\oOpt{-dumplayernames}] dump all layer names found to standard output \item[\oOptArg{-layers}{~string}] layers to be shown (comma separated list of layer names, no space) \item[\oOptArg{-layerfilter}{~string}] layers to be hidden (comma separated list of layer names, no space) \end{description} %%// end of options \subsubsection{dxf\_s - CAD exchange format with splines} \begin{description} \item[\oOpt{-polyaslines}] use LINE instead of POLYLINE in DXF \item[\oOpt{-mm}] use mm coordinates instead of points in DXF (mm=pt/72*25.4) \item[\oOpt{-ctl}] map colors to layers \item[\oOpt{-splineaspolyline}] approximate splines with PolyLines (only for -f dxf\_s) \item[\oOpt{-splineasnurb}] experimental (only for -f dxf\_s) \item[\oOpt{-splineasbspline}] experimental (only for -f dxf\_s) \item[\oOpt{-splineassinglespline}] experimental (only for -f dxf\_s) \item[\oOpt{-splineasmultispline}] experimental (only for -f dxf\_s) \item[\oOpt{-splineasbezier}] use Bezier splines in DXF format (only for -f dxf\_s) \item[\oOptArg{-splineprecision}{~number}] number of samples to take from spline curve when doing approximation with -splineaspolyline or -splineasmultispline - should be $>=$ 2 (default 5) \item[\oOpt{-dumplayernames}] dump all layer names found to standard output \item[\oOptArg{-layers}{~string}] layers to be shown (comma separated list of layer names, no space) \item[\oOptArg{-layerfilter}{~string}] layers to be hidden (comma separated list of layer names, no space) \end{description} %%// end of options \subsubsection{fig - .fig format for xfig} The xfig format driver supports special fontnames, which may be produced by using a fontmap file. The following types of names are supported : \\ \begin{verbatim} General notation: "Postscript Font Name" ((LaTeX|PostScript|empty)(::special)::)XFigFontName Examples: Helvetica LaTeX::SansSerif Courier LaTeX::special::Typewriter GillSans "AvantGarde Demi" Albertus PostScript::special::"New Century Schoolbook Italic" Symbol ::special::Symbol (same as Postscript::special::Symbol) \end{verbatim} See also the file examplefigmap.fmp in the misc directory of the pstoedit source distribution for an example font map file for xfig. Please note that the Fontname has to be among those supported by xfig. See - \URL{http://www.xfig.org/userman/fig-format.html} for a list of legal font names \begin{description} \item[\oOptArg{-startdepth}{~number}] Set the initial depth (default 999) \item[\oOpt{-metric}] Switch to centimeter display (default inches) \item[\oOpt{-usecorrectfontsize}] don't scale fonts for xfig. Use this if you also use this option with xfig \item[\oOptArg{-depth}{~number}] Set the page depth in inches (default 11) \end{description} %%// end of options \subsubsection{xfig - .fig format for xfig} See fig format for more details. \begin{description} \item[\oOptArg{-startdepth}{~number}] Set the initial depth (default 999) \item[\oOpt{-metric}] Switch to centimeter display (default inches) \item[\oOpt{-usecorrectfontsize}] don't scale fonts for xfig. Use this if you also use this option with xfig \item[\oOptArg{-depth}{~number}] Set the page depth in inches (default 11) \end{description} %%// end of options \subsubsection{tfig - .fig format for xfig} Test only \begin{description} \item[\oOptArg{-startdepth}{~number}] Set the initial depth (default 999) \item[\oOpt{-metric}] Switch to centimeter display (default inches) \item[\oOpt{-usecorrectfontsize}] don't scale fonts for xfig. Use this if you also use this option with xfig \item[\oOptArg{-depth}{~number}] Set the page depth in inches (default 11) \end{description} %%// end of options \subsubsection{gcode - emc2 gcode format} See also: \URL{http://linuxcnc.org/} No driver specific options %%// end of options \subsubsection{gnuplot - gnuplot format} No driver specific options %%// end of options \subsubsection{gschem - gschem format} See also: \URL{http://www.geda.seul.org/tools/gschem/} No driver specific options %%// end of options \subsubsection{idraw - Interviews draw format (EPS)} No driver specific options %%// end of options \subsubsection{java1 - java 1 applet source code} \begin{description} \item[\oOptArg{java class name}{~string}] name of java class to generate \end{description} %%// end of options \subsubsection{java2 - java 2 source code} \begin{description} \item[\oOptArg{java class name}{~string}] name of java class to generate \end{description} %%// end of options \subsubsection{kil - .kil format for Kontour} No driver specific options %%// end of options \subsubsection{latex2e - LaTeX2e picture format} \begin{description} \item[\oOpt{-integers}] round all coordinates to the nearest integer \end{description} %%// end of options \subsubsection{lwo - LightWave 3D Object Format} No driver specific options %%// end of options \subsubsection{mma - Mathematica Graphics} \begin{description} \item[\oOpt{-eofillfills}] Filling is used for eofill (default is not to fill) \end{description} %%// end of options \subsubsection{mpost - MetaPost Format} No driver specific options %%// end of options \subsubsection{noixml - Nemetschek NOI XML format} Nemetschek Object Interface XML format \begin{description} \item[\oOptArg{-r}{~string}] Allplan resource file \item[\oOptArg{-bsl}{~number}] Bezier Split Level (default 3) \end{description} %%// end of options \subsubsection{pcbi - engrave data - insulate/PCB format} See \URL{http://home.vr-web.de/\Tilde hans-juergen-jahn/software/devpcb.html} for more details. No driver specific options %%// end of options \subsubsection{pcb - pcb format} See also: \URL{http://pcb.sourceforge.net} and \URL{http://www.penguin.cz/\Tilde utx/pstoedit-pcb/} \begin{description} \item[\oOptArg{-grid}{~missing arg name}] attempt to snap relevant output to grid (mils) and put failed objects to a different layer \item[\oOptArg{-snapdist}{~missing arg name}] grid snap distance ratio (0 < snapdist <= 0.5, default 0.1) \item[\oOptArg{-tshiftx}{~missing arg name}] additional x shift measured in target units (mils) \item[\oOptArg{-tshifty}{~missing arg name}] additional y shift measured in target units (mils) \item[\oOptArg{-grid}{~missing arg name}] attempt to snap relevant output to grid (mils) and put failed objects to a different layer \item[\oOpt{-mm}] Switch to metric units (mm) \item[\oOpt{-stdnames}] use standard layer names instead of descriptive names \item[\oOpt{-forcepoly}] force all objects to be interpreted as polygons \end{description} %%// end of options \subsubsection{pcbfill - pcb format with fills} See also: \URL{http://pcb.sourceforge.net} No driver specific options %%// end of options \subsubsection{pdf - Adobe's Portable Document Format} No driver specific options %%// end of options \subsubsection{pptx - PresentationML (PowerPoint) format} This is the format used internally by Microsoft PowerPoint. LibreOffice can also read/write PowerPoint files albeit with some lack of functionality. \begin{description} \item[\oOptArg{-colors}{~string}] "original" to retain original colors (default), "theme" to convert randomly to theme colors, or "theme-lum" also to vary luminance \item[\oOptArg{-fonts}{~string}] use "windows" fonts (default), "native" fonts, or convert to the "theme" font \item[\oOptArg{-embed}{~string}] embed fonts, specified as a comma-separated list of EOT-format font files \end{description} %%// end of options \subsubsection{rib - RenderMan Interface Bytestream} No driver specific options %%// end of options \subsubsection{rpl - Real3D Programming Language Format} No driver specific options %%// end of options \subsubsection{sample - sample driver: if you don't want to see this, uncomment the corresponding line in makefile and make again} this is a long description for the sample driver \begin{description} \item[\oOptArg{-sampleoption}{~integer}] just an example \end{description} %%// end of options \subsubsection{sk - Sketch Format} No driver specific options %%// end of options \subsubsection{svm - StarView/OpenOffice.org metafile} StarView/OpenOffice.org metafile, readable from OpenOffice.org 1.0/StarOffice 6.0 and above. \begin{description} \item[\oOpt{-m}] map to Arial \item[\oOpt{-nf}] emulate narrow fonts \end{description} %%// end of options \subsubsection{text - text in different forms } \begin{description} \item[\oOptArg{-height}{~number}] page height in terms of characters \item[\oOptArg{-width}{~number}] page width in terms of characters \item[\oOpt{-dump}] dump text pieces \end{description} %%// end of options \subsubsection{tgif - Tgif .obj format} \begin{description} \item[\oOpt{-ta}] text as attribute \end{description} %%// end of options \subsubsection{tk - tk and/or tk applet source code} \begin{description} \item[\oOpt{-R}] swap HW \item[\oOpt{-I}] no impress \item[\oOptArg{-n}{~string}] tagnames \end{description} %%// end of options \subsubsection{vtk - VTK driver: if you don't want to see this, uncomment the corresponding line in makefile and make again} this is a long description for the VTKe driver \begin{description} \item[\oOptArg{-VTKeoption}{~integer}] just an example \end{description} %%// end of options \subsubsection{wmf - Windows metafile} \begin{description} \item[\oOpt{-m}] map to Arial \item[\oOpt{-nf}] emulate narrow fonts \item[\oOpt{-drawbb}] draw bounding box \item[\oOpt{-p}] prune line ends \item[\oOpt{-nfw}] Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix the only option is to use the -pta option of pstoedit. However that causes every text to be split into single characters which makes the text hard to edit afterwards. Hence the -nfw options provides a sort of compromise between portability and nice to edit but still nice looking text. Again - this option has no meaning when pstoedit is executed under Windows anyway. In that case the output is portable but nevertheless not split and still looks fine. \item[\oOpt{-winbb}] let the Windows API calculate the Bounding Box (Windows only) \item[\oOpt{-OO}] generate OpenOffice compatible EMF file \end{description} %%// end of options \subsubsection{emf - Enhanced Windows metafile} \begin{description} \item[\oOpt{-m}] map to Arial \item[\oOpt{-nf}] emulate narrow fonts \item[\oOpt{-drawbb}] draw bounding box \item[\oOpt{-p}] prune line ends \item[\oOpt{-nfw}] Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix the only option is to use the -pta option of pstoedit. However that causes every text to be split into single characters which makes the text hard to edit afterwards. Hence the -nfw options provides a sort of compromise between portability and nice to edit but still nice looking text. Again - this option has no meaning when pstoedit is executed under Windows anyway. In that case the output is portable but nevertheless not split and still looks fine. \item[\oOpt{-winbb}] let the Windows API calculate the Bounding Box (Windows only) \item[\oOpt{-OO}] generate OpenOffice compatible EMF file \end{description} %%// end of options \section{NOTES} \subsection{autotrace} pstoedit cooperates with autotrace. Autotrace can now produce a dump file for further processing by pstoedit using the \Opt{-bo} (backend only) option. Autotrace is a program written by a group around Martin Weber and can be found at \URL{http://sourceforge.net/projects/autotrace/}. \subsection{Ps2ai} The ps2ai output format driver is not a native pstoedit output format driver. It does not use the pstoedit postcript flattener, instead it uses the PostScript program ps2ai.ps which is installed in the GhostScript distribution directory. It is included to provide the same "look-and-feel" for the conversion to AI. The additional benefit is that this conversion is now available also via the "convert-to-vector" menu of Gsview. However, lot's of files don't convert nicely or at all using ps2ai.ps. So a native pstoedit driver would be much better. Anyone out there to take this? The AI format is usable for example by Mayura Draw (\URL{http://www.mayura.com}). Also a driver to the Mayura native format would be nice. An alternative to the ps2ai based driver is available via the -f plot:ai format if the libplot(ter) is installed. You should use a version of GhostScript greater than or equal to 6.00 for using the ps2ai output format driver. \subsection{MetaPost} Note that, as far as Scott knows, MetaPost does not support PostScript's eofill. The metapost output format driver just converts eofill to fill, and issues a warning if verbose is set. Fortunately, very few PostScript programs rely on the even-odd fill rule, even though many specify it. For more on MetaPost see: \URL{http://cm.bell-labs.com/who/hobby/MetaPost.html} \subsection{Context Free - CFDG} The driver for the CFDG format (drvcfdg) defines one shape per page of PostScript, but only the first shape is actually rendered (unless the user edits the generated CFDG code, of course). CFDG doesn't support multi-page output, so this probably a reasonable thing to do. For more on Context Free see: \URL{http://www.contextfreeart.org/} \subsection{LaTeX2e} \begin{itemize} \item LaTeX2e's picture environment is not very powerful. As a result, many elementary PostScript constructs are ignored -- fills, line thicknesses (besides "thick" and "thin"), and dash patterns, to name a few. Furthermore, complex pictures may overrun TeX's memory capacity. \item Some PostScript constructs are not supported directly by "picture", but can be handled by external packages. If a figure uses color, the top-level document will need to do a \verb+"\usepackage{color}"+. And if a figure contains rotated text, the top-level document will need to do a \verb+"\usepackage{rotating}"+. \item All lengths, coordinates, and font sizes output by the output format driver are in terms of \verb+\unitlength+, so scaling a figure is simply a matter of doing a \verb+"\setlength{\unitlength}{...}"+. \item The output format driver currently supports one output format driver specific option, "integers", which rounds all lengths, coordinates, and font sizes to the nearest integer. This makes hand-editing the picture a little nicer. \item Why is this output format driver useful? One answer is portability; any LaTeX2e system can handle the picture environment, even if it can't handle PostScript graphics. (pdfLaTeX comes to mind here.) A second answer is that pictures can be edited easily to contain any arbitrary LaTeX2e code. For instance, the text in a figure can be modified to contain complex mathematics, non-Latin alphabets, bibliographic citations, or -- the real reason Scott wrote the LaTeX2e output format driver -- hyperlinks to the surrounding document (with help from the hyperref package). \end{itemize} \subsection{Creating a new output format driver} To implement a new output format driver you can start from \File{drvsampl.cpp} and \File{drvsampl.h}. See also comments in \File{drvbase.h} and \File{drvfuncs.h} for an explanation of methods that should be implemented for a new output format driver. \section{ENVIRONMENT VARIABLES} A default PostScript interpreter to be called by pstoedit is specified at compile time. You can overwrite the default by setting the GS environment variable to the name of a suitable PostScript interpreter. You can check which name of a PostScript interpreter was compiled into pstoedit using: \textbf{pstoedit} \Opt{-help -v}. See the GhostScript manual for descriptions of environment variables used by Ghostscript most importantly \verb+GS_FONTPATH+ and \verb+GS_LIB+; other environment variables also affect output to display, print, and additional filtering and processing. See the related documentation. \Prog{pstoedit} allocates temporary files using the function \Cmd{tempnam}{3}. Thus the location for temporary files might be controllable by other environment variables used by this function. See the \Cmd{tempnam}{3} manpage for descriptions of environment variables used. On UNIX like system this is probably the \verb+TMPDIR+ variable, on DOS/WINDOWS either \verb+TMP+ or \verb+TEMP+. \section{TROUBLE SHOOTING} If you have problems with \Prog{pstoedit} first try whether Ghostscript successfully displays your file. If yes, then try \textbf{pstoedit} \Opt{-f ps} \Arg{infile.ps} \Arg{testfile.ps} and check whether \Arg{testfile.ps} still displays correctly using Ghostscript. If this file doesn't look correctly then there seems to be a problem with \Prog{pstoedit}'s PostScript frontend. If this file looks good but the output for a specific format is wrong, the problem is probably in the output format driver for the specific format. In either case send bug fixes and reports to the author. A common problem with PostScript files is that the PostScript file redefines one of the standard PostScript operators inconsistently. There is no effect of this if you just print the file since the original PostScript "program" uses these new operator in the new meaning and does not use the original ones anymoew. However, when run under the control of pstoedit, these operators are expected to work with the original semantics. So far I've seen redefinitions for: \begin{itemize} \item lt - "less-then" to mean "draw a line to" \item string - "create a string object" to mean "draw a string" \item length - "get the length of e.g. a string" to a "float constant" \end{itemize} I've included work-arounds for the ones mentioned above, but some others could show up in addition to those. \section{RESTRICTIONS} \begin{itemize} \item Non-standard fonts (e.g. \TeX bitmap fonts) are mapped to a default font which can be changed using the \Opt{-df} option. \Prog{pstoedit} chooses the size of the replacement font such that the width of the string in the original font is the same as in the replacement font. This is done for each text fragment displayed. Special character encoding support is limited in this case. If a character cannot be mapped into the target format, pstoedit displays a '\#' instead. See also the -uchar option. \item pstoedit supports bitmap graphics only for some output format drivers. \item Some output format drivers, e.g. the Gnuplot output format driver or the 3D output format driver (rpl, lwo, rib) do not support text. \item For most output format drivers pstoedit does not support clipping (mainly due to limitations in the target format). You can try to use the \Opt{-sclip} option to simulate clipping. However, this doesn't work in all cases as expected. \item Special note about the Java output format drivers (java1 and java2). The java output format drivers generate a java source file that needs other files in order to be compiled and usable. These other files are Java classes (one applet and support classes) that allow to step through the individual pages of a converted PostScript document. This applet can easily be activated from a html-document. See the \File{contrib/java/java1/readme_java1.txt} or \File{contrib/java/java2/readme_java2.htm} file for more details. \end{itemize} \section{FAQs} \begin{enumerate} \item Why do letters like O or B get strange if converted to tgif/xfig using the \Opt{-dt} option? This is because most output format drivers don't support composite paths with intermediate gaps (moveto's) and second don't support very well the (eo)fill operators of PostScript (winding rule). For such objects \Prog{pstoedit} breaks them into smaller objects whenever such a gap is found. This results in the "hole" beeing filled with black color instead of beeing transparent. Since version 3.11 you can try the \Opt{-ssp} option in combination with the xfig output format driver. \item Why does pstoedit produce ugly results from PostScript files generated by dvips? TeX documents usually use bitmap fonts. Such fonts cannot be used as native font in other format. So pstoedit replaces the TeX font with another native font. Of course, the replacement font will in most cases produce another look, especially if mathematical symbols are used. Try to use PostScript fonts instead of the bitmap fonts when generating a PostScript file from TeX or LaTeX. \end{enumerate} \section{AUTHOR} Wolfgang Glunz, \Email{wglunz35_AT_pstoedit.net}, \URL{http://de.linkedin.com/in/wolfgangglunz} \section{CANONICAL ARCHIVE SITE} \URL{http://www.pstoedit.net/pstoedit/} At this site you also find more information about \Prog{pstoedit} and related programs and hints how to subscribe to a mailing list in order to get informed about new releases and bug-fixes. If you like pstoedit - please express so also at Facebook \URL{http://www.facebook.com/pages/pstoedit/260606183958062}. \section{ACKNOWLEDGEMENTS} \begin{itemize}\setlength{\itemsep}{0cm} \item Klaus Steinberger \Email{Klaus.Steinberger_AT_physik.uni-muenchen.de} wrote the initial version of this manpage. \item Lar Kaufman revised the increasingly complex command syntax diagrams and updated the structure and content of this manpage following release 2.5. \item David B. Rosen \Email{rosen_AT_unr.edu} provided ideas and some PostScript code from his ps2aplot program. \item Ian MacPhedran \Email{Ian_MacPhedran_AT_engr.USask.CA} provided the xfig output format driver. \item Carsten Hammer \Email{chammer_AT_hermes.hrz.uni-bielefeld.de} provided the gnuplot output format driver and the initial DXF output format driver. \item Christoph Jaeschke provided the OS/2 metafile (MET) output format driver. Thomas Hoffmann \Email{thoffman_AT_zappa.sax.de} did some further updates on the OS/2 part. \item Jens Weber \Email{rz47b7_AT_PostAG.DE} provided the Windows metafile (WMF) output format driver, and a graphical user interface (GUI). \item G. Edward Johnson \Email{lorax_AT_nist.gov} provided the CGM Draw library used in the CGM output format driver. \item Gerhard Kircher \Email{kircher_AT_edvz.tuwien.ac.at} provided some bug fixes. \item Bill Cheng \Email{bill.cheng_AT_acm.org} provided help with the tgif format and some changes to tgif to make the output format driver easier to implement. \URL{http://bourbon.usc.edu:8001/} \item Reini Urban \Email{rurban_AT_sbox.tu-graz.ac.at} provided input for the extended DXF output format driver.(\URL{http://autocad.xarch.at/}) \item Glenn M. Lewis \Email{glenn_AT_gmlewis.com} provided RenderMan (RIB), Real3D (RPL), and LightWave 3D (LWO) output format drivers. (\URL{http://www.gmlewis.com/}) \item Piet van Oostrum \Email{piet_AT_cs.ruu.nl} made several bug fixes. \item Lutz Vieweg \Email{lkv_AT_mania.robin.de} provided several bug fixes and suggestions for improvements. \item Derek B. Noonburg \Email{derekn_AT_vw.ece.cmu.edu} and Rainer Dorsch \Email{rd_AT_berlepsch.wohnheim.uni-ulm.de} isolated and resolved a Linux-specific core dump problem. \item Rob Warner \Email{rcw2_AT_ukc.ac.uk} made pstoedit compile under RiscOS. \item Patrick Gosling \Email{jpmg_AT_eng.cam.ac.uk} made some suggestions regarding the usage of pstoedit in Ghostscript's SAFER mode. \item Scott Pakin \Email{scott+ps2ed_AT_pakin.org} for the Idraw output format driver and the autoconf support. \item Peter Katzmann \Email{p.katzmann_AT_thiesen.com} for the HPGL output format driver. \item Chris Cox \Email{ccox_AT_airmail.net} contributed the Tcl/Tk output format driver. \item Thorsten Behrens \Email{Thorsten_Behrens_AT_public.uni-hamburg.de} and Bjoern Petersen for reworking the WMF output format driver. \item Leszek Piotrowicz \Email{leszek_AT_sopot.rodan.pl} implemented the image support for the xfig driver and a JAVA based GUI. \item Egil Kvaleberg \Email{egil_AT_kvaleberg.no} contributed the pic output format driver. \item Kai-Uwe Sattler \Email{kus_AT_iti.cs.uni-magdeburg.de} implemented the output format driver for Kontour. \item Scott Pakin, \Email{scott+ps2ed_AT_pakin.org} provided the MetaPost and LaTeX2e and PowerPoint output format driver. \item The PowerPoint driver uses the libzip library - \URL{http://www.nih.at/libzip}. Under Windows, this library is linked into the provided binary statically. Thanks to the whole libzip team. \item Burkhard Plaum \Email{plaum_AT_IPF.Uni-Stuttgart.de} added support for complex filled paths for the xfig output format driver. \item Bernhard Herzog \Email{herzog_AT_online.de} contributed the output format driver for sketch ( \URL{http://www.skencil.org/} ) \item Rolf Niepraschk (\Email{niepraschk_AT_ptb.de}) converted the HTML man page to LaTeX. This allows to generate the UNIX style and the HTML manual from this base format. \item Several others sent smaller bug fixed and bug reports. Sorry if I don't mention them all here. \item Gisbert W. Selke (\Email{gisbert_AT_tapirsoft.de}) for the Java 2 output format driver. \item Robert S. Maier (\Email{rsm_AT_math.arizona.edu}) for many improvements on the libplot output format driver and for libplot itself. \item The authors of pstotext (\Email{mcjones_AT_pa.dec.com} and \Email{birrell_AT_pa.dec.com}) for giving me the permission to use their simple PostScript code for performing rotation. \item Daniel Gehriger \Email{gehriger_AT_linkcad.com} for his help concerning the handling of Splines in the DXF format. \item Allen Barnett \Email{libemf_AT_lignumcomputing.com} for his work on the libEMF which allows to create WMF/EMF files under *nix systems. \item Dave \Email{dave_AT_opaque.net} for providing the libming which is a multiplatform library for generating SWF files. \item Masatake Yamoto for the introduction of autoconf, automake and libtool into pstoedit \item Bob Friesenhahn for his help and the building of the Magick++ API to ImageMagick. \item But most important: Peter Deutsch \Email{ghost_AT_aladdin.com} and Russell Lang \Email{gsview_AT_ghostgum.com.au} for their help and answers regarding GhostScript and gsview. \end{itemize} \section{LEGAL NOTICES} Trademarks mentioned are the property of their respective owners. Some code incorporated in the pstoedit package is subject to copyright or other intellectual property rights or restrictions including attribution rights. See the notes in individual files. \Prog{pstoedit} is controlled under the Free Software Foundation GNU Public License (GPL). However, this does not apply to importps and the additional plugins. Aladdin Ghostscript is a redistributable software package with copyright restrictions controlled by Aladdin Software. \Prog{pstoedit} has no other relation to Ghostscript besides calling it in a subprocess. The authors, contributors, and distributors of pstoedit are not responsible for its use for any purpose, or for the results generated thereby. Restrictions such as the foregoing may apply in other countries according to international conventions and agreements. \LatexManEnd \end{document} pstoedit-3.62/doc/pstoedit.trans0000774000175500000000000000201506757503452013700 00000000000000################################################################################# # pstoedit documentation ################################################################################# ################################################################################# # translation for MAN ################################################################################# # LaTeX macros without arguments $manMacro{'LaTeX'} = 'LaTeX'; $manMacro{'TeX'} = 'TeX'; ################################################################################# # translation for HTML ################################################################################# # LaTeX macros without arguments $htmlMacro{'LaTeX'} = 'LaTeX'; $htmlMacro{'TeX'} = 'TeX'; ################################################################################# # translation for TexInfo ################################################################################# # LaTeX macros without arguments $texiMacro{'LaTeX'} = 'LaTeX'; $texiMacro{'TeX'} = 'LaTeX'; pstoedit-3.62/doc/readme.txt0000744000175500010010000001402112137261523012756 00000000000000PSTOEDIT Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net pstoedit converts Postscript(TM) and PDF files to other vector graphic formats so that they can be edited graphically. See pstoedit.htm or index.htm for more details on which formats are supported by pstoedit. The architecture of pstoedit consists of a PostScript frontend which needs to call a PostScript interpreter like Ghostscript and the individual backends which are plugged into a kind of framework. This framework can be used independently from the PostScript frontend from any other program. The framework provides a uniform interface to all different backends. Get in contact with the author if you need more information on how to use this framework. If you just find this program useful, have made some improvements or implemented other backends please send an email to wglunz35_AT_pstoedit.net. If this programs saves you a lot of work consider sending a contribution of any kind. If you include this program on a CDROM, please send me a copy of the CD, or if it goes with a book, of the book. My home address is: Dr. Wolfgang Glunz 81825 Muenchen / Germany Josef Brueckl Str. 32 Compiling pstoedit: ------------------- You need a C++ compiler, e.g., g++ (newer than 3.0) to compile pstoedit. It is recommended to have libplotter installed. Then you get a lot of additional formats for free. If you have a Unix like system, try the following: sh configure; make make install; Support for SWF needs version 0.3 or higher of ming. Version 0.2 does not work There are several test cases included. To run them type `make test'. This works under *nix only. When building pstoedit under cygwin/Linux you may need to set LDFLAGS to /usr/local/lib in case you have some libraries (e.g. libEMF) installed there. Under some systems (e.g. cygwin) it is not possible to link static libraries (.a) into a dynamic library (.so/.dll). In this case, you need to have also a shared version of the relevant libs, e.g. of libEMF. In order to get a shared version, you normally need to set the option "--enabled-shared" during the "configure" run for the library. Installing pstoedit under Windows 9x/NT/2000/XP/Vista/Windows 7: ------------------------------------------------------ best use the pstoeditsetup.exe which is available for 32 and 64 bit environments. Installing pstoedit under OS/2: ------------------------------- See the readme.os2 in the os2 directory. There you also find a makefile for OS/2. pstoedit and the -dSAFER option of Ghostscript: ----------------------------------------------- GhostScript provides an option -dSAFER that disables all file access functions of PostScript. Some administrators even install a wrapper like to following instead of ghostscript directly #!/bin/sh gs.real -dSAFER $* So when a user uses gs he/she actually runs this script. However, pstoedit needs to have access to files for it's operation. So it is not possible to use this wrapper for gs in combination with pstoedit. You would get an error message like "Error: /invalidfileaccess in (w)". As an alternative the following can be done: 1. Install the binary of pstoedit as pstoedit.real 2. Create the following wrapper and name it pstoedit #!/bin/sh GS=gs.real export GS pstoedit.real -include /??????/local/safer.ps $* A template for safer.ps can be found in the misc subdirectory. This way pstoedit can open all the file it needs (the input file and an output file). After that then -- via the included file -- all files operations are disabled and the input file is processed. Any file operation that is executed be the user's PostScript file is disabled this way. Using pstoedit: --------------- Before you can use pstoedit you must have a working installation of GhostScript (either GNU or Aladdin). The rest is descibed in the manual page in /pstoedit.htm. pstoedit works reasonable with PostScript files containing * line drawings * text with standard fonts Try to run it on golfer.ps or tiger.ps that comes with ghostscript, e.g., pstoedit -f /examples/tiger.ps tiger. Some features that are no supported by every backend of pstoedit: * bitmap images (just for some backends and only a subset of the PostScript image operators) * general fill patterns * clipping (only partially via the -sclip option) * ... Special note about the Java backend: ------------------------------------ The java backends generate a java source file that needs other files in order to be compiled and usable. See the files contrib/java/java1/readme_java.txt and contrib/java/java2/readme_java2.htm for more details. Extending pstoedit: ------------------- To implement a new backend you can start from drvsampl.cpp. Please don't forget to send any new backend that might be of interest for others as well to the author (wglunz35_AT_pstoedit.net) so that it can be incorporated into future versions of pstoedit. Such new backends will then be available with the GPL as well. Acknowledgements: ----------------- See manual page in pstoedit.htm and the changelog.htm for a list of contributors. License: -------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ---------------------------------------------------------------------------- pstoedit-3.62/examples/0000755000175500010010000000000012137264537012122 500000000000000pstoedit-3.62/examples/cliptst2.ps0000774000175500000000000000114007336030520014134 00000000000000%!PS 0.5 0.5 scale /Times-Roman findfont 50 scalefont setfont /X { gsave 200 100 moveto 200 500 lineto 100 200 lineto 300 300 lineto 100 400 lineto 200 100 lineto %clip or eoclip cvx exec clippath 0.5 0 0 setrgbcolor %fill or eofill or stroke cvx exec 80 300 moveto 0 0 0 setrgbcolor (Hello World) show grestore 20 100 moveto show } def gsave (ECEF) /eofill /eoclip X 0 400 translate (EC F) /fill /eoclip X 0 400 translate (EC S) /stroke /eoclip X 300 0 translate ( C S) /stroke /clip X 0 -400 translate ( C F) /fill /clip X 0 -400 translate ( CEF) /eofill /clip X grestore showpage pstoedit-3.62/examples/closepathtest.ps0000774000175500000000000000016407336010734015264 00000000000000 100 100 moveto 100 200 lineto 200 200 lineto %closepath 50 50 moveto 70 70 lineto 50 70 lineto closepath stroke pstoedit-3.62/examples/colrtest.ps0000774000175500000000000000162507336010734014244 00000000000000%!PS /Helvetica findfont 10 scalefont setfont /cm { 28.35 mul } def % Centimetres to PostScript units /str 20 string def /Increment 20 def % Go around in 1 degree increments 10.5 cm 14.85 cm translate % Place origin at middle of A4 page 2 cm setlinewidth % Set fat line width 1 Increment 360 { % Go around the circle 360 div 1 1 sethsbcolor % HSB color H = angle/360, S = 100%, B = 100% 0 0 8 cm 0 Increment arc% Draw a 1 degree arc stroke % stroke it currentrgbcolor 3 1 roll exch % reorder from r g b to b g r so that r is printed first Increment 2 div rotate % Rotate the coordinate system gsave 4 cm 0 moveto (R) show 256 mul cvi str cvs show ( ) show (G) show 256 mul cvi str cvs show ( ) show (B) show 256 mul cvi str cvs show grestore Increment 2 div rotate % Rotate the coordinate system %Increment rotate % Rotate the coordinate system } for showpage % Display the page pstoedit-3.62/examples/eofill.ps0000774000175500000000000000024707336010734013656 00000000000000% newpath 150 100 moveto 100 100 50 0 360 arc 140 100 moveto 100 100 40 360 0 arcn 130 100 moveto 100 100 30 0 360 arcn 120 100 moveto 100 100 20 360 0 arc eofill pstoedit-3.62/examples/eschertr.ps0000774000175500000000000000265007336010734014223 00000000000000%! % M. C. Escher style impossible triangle % written by Guy Shaw % Things that are easy to play with: % Position on paper, overall size, and linewidth /inch { 72 mul } bind def 2 inch dup translate 3 inch dup scale 1 3 inch div setlinewidth % Thickness parameter: % /Thick is the thickness of the structural members of the triange, % as a fraction of the height of the triangle. % Reasonable looking impossible triangles can be obtained with Thick <= 1/6. % right at /Thick == 1/6, there is no space left inside the triangle. % /Thick > 1/6 yields bizarre, but not very interesting results. % /Thick < 1/20 is less interesting, because the "impossibility" % is not so striking when the structural members are that thin. % A good "standard" value is 1/8. /Thick 1 8 div def % You would not normally want to change anything that follows. /Tall 1 def /HalfThick Thick .5 mul def newpath HalfThick Thick moveto Thick 0 lineto 1 Thick sub 0 lineto 1 HalfThick sub Thick lineto .5 HalfThick add Tall Thick sub lineto 1 Thick sub 0 moveto .5 HalfThick add Tall 3 Thick mul sub lineto Thick 3 mul Thick 2 mul lineto 1 Thick 2.5 mul sub Thick moveto .5 Tall Thick 4 mul sub lineto stroke 0.7 setgray newpath HalfThick Thick moveto 1 Thick 2.5 mul sub Thick lineto HalfThick neg Thick rlineto Thick Thick add Thick Thick add lineto .5 HalfThick add Tall Thick sub lineto Thick neg 0 rlineto closepath fill showpage pstoedit-3.62/examples/figtext.ps0000774000175500000000000000061710153163070014050 00000000000000 /Courier findfont 20 scalefont setfont 100 200 moveto (Courier ) show /Times-Roman findfont 20 scalefont setfont 100 300 moveto (Times-Roman ) show /Helvetica findfont 20 scalefont setfont 100 400 moveto (Helvetica ) show /Times-Italic findfont 20 scalefont setfont 100 500 moveto (Times-Italic ) show /Times-Bold findfont 20 scalefont setfont 100 600 moveto (Times-Bold ) show showpage pstoedit-3.62/examples/illusion.ps0000774000175500000000000000170107336010734014236 00000000000000%! % Optical illusion % written by Woody Baker % Rt.1 Box I % Manor, Tx. 78653 % % hereby placed in the public domain. Would appreciate the header % remaining in-tact. % % % do 1/4th of the drawing % /onequarter { 60 160 moveto 20 160 lineto 20 80 lineto 160 80 lineto 60 180 moveto 0 180 lineto 0 60 lineto 160 60 lineto 40 160 moveto 40 100 lineto 160 100 lineto 60 200 moveto 20 200 lineto 0 180 lineto 40 100 moveto 20 80 lineto } def % % draw the illusion and label it % /optical { 0 0 moveto onequarter gsave -90 rotate -260 0 translate onequarter -90 rotate -260 0 translate onequarter -90 rotate -260 0 translate onequarter stroke grestore /Helvetica findfont 20 scalefont setfont -10 -25 moveto (Brought to you By Woody Baker) show } def % % application code. Positions and scales and draws the actual % illusion. % /xcoord 140 def /ycoord 240 def gsave xcoord ycoord translate 1 1 scale optical grestore showpage pstoedit-3.62/examples/imagetest_1.ps0000774000175500000000000001061307336010734014604 00000000000000/smartimage12rgb { % w h b [matrix] smartimage12rgb - /colorimage where { pop { returndata } false 3 colorimage } { exch pop 8 exch 3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse 4 index 6 2 roll { 2 copy cvgray } image pop pop } ifelse } def %/imagedata 3756 string def %/imagedata 1878 string def /imagedata 1800 string def /returndata { imagedata } def /rowdata 24 string def currentfile imagedata readhexstring ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffdddfccffffffffffffffffffffffff f66f33ffff99f66ffff66f33fffffffffffffffffffffffff66f33ffff66f33ffff66f33ffffff fffffffffffffffffff66f33ffff66f33ffff66f33fffffffffffffffffffffffff66f00f33f33 f00f33f33f33fffffffffffffffffffffffff99f33f33f33f33f33f33f66ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff99f33f33f33f33f33f33f66fffffffffffffffffffffffff66f00 f33f33f33f33f33f66fffffffffffffffffffffffff99f00f00f66f99eeeffffffffffffffffff fffffffffffffffffffccf66f33f00f66f99fffffffffffffffffffffffffffffffffdddf99f33 f00f33fffffffffffffffffffffffffccf66f33f00f33f66f99fffffffffffffffffffffffffff f66f00f66f99fccfccfccfccfffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffdddfccfccfccfccfccfccfccffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffccf99f66fccffffffffffffffffffffffff ffffffffff66f00f00f00f00f33eeefffffffffffffffffffffffff99f00f99fffffffccf33f66 fffffffffffffffffffffffff66f66fffffffffffff99f33fffffffffffffffffffffffff66f66 fffffffffffff99f33fffffffffffffffffffffffff99f00f66fccfccf99f00f66ffffffffffff ffffffffffffffff99f00f00f00f00f66fffffffffffffffffffffffffffffffffffffccfccfff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fccf66f66f66f66f66f66f99fffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffffffffffff33f66fffffffffffffffffffffffffffffffffffffffffff33 f66fffffffffffffffffffffffffffffffffdddfccfccf33f66fccfccfccffffffffffffffffff fffffff66f00f00f00f00f00f00f33ffffffffffffffffffffffffdddfccfccfccfccfccfccfcc ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff %(after read) print pop pop /onefig { gsave 100 100 translate %276.5 659 translate -10 0 moveto -10 50 lineto 50 0 lineto closepath fill %stroke 11.2 52.5 scale 16 75 4 [16 0 0 -75 0 75] smartimage12rgb grestore } def /Times-Roman findfont 10 scalefont setfont 0 30 330 { dup gsave 300 300 translate rotate 150 150 moveto 100 string cvs show onefig grestore } for 100 100 moveto onefig showpage pstoedit-3.62/examples/imagetest_2.ps0000774000175500000000000001132007336010734014601 00000000000000/smartimage12rgb { % w h b [matrix] smartimage12rgb - /colorimage where { pop { returndata } false 3 colorimage } { exch pop 8 exch 3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse 4 index 6 2 roll { 2 copy cvgray } image pop pop } ifelse } def %/imagedata 3756 string def %/imagedata 1878 string def /imagedata 1800 string def /returndata { imagedata } def /rowdata 24 string def currentfile imagedata readhexstring aaaa55ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffdddfccffffffffffffffffffffffff f66f33ffff99f66ffff66f33fffffffffffffffffffffffff66f33ffff66f33ffff66f33ffffff fffffffffffffffffff66f33ffff66f33ffff66f33fffffffffffffffffffffffff66f00f33f33 f00f33f33f33fffffffffffffffffffffffff99f33f33f33f33f33f33f66ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff99f33f33f33f33f33f33f66fffffffffffffffffffffffff66f00 f33f33f33f33f33f66fffffffffffffffffffffffff99f00f00f66f99eeeffffffffffffffffff fffffffffffffffffffccf66f33f00f66f99fffffffffffffffffffffffffffffffffdddf99f33 f00f33fffffffffffffffffffffffffccf66f33f00f33f66f99fffffffffffffffffffffffffff f66f00f66f99fccfccfccfccfffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffdddfccfccfccfccfccfccfccffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffccf99f66fccffffffffffffffffffffffff ffffffffff66f00f00f00f00f33eeefffffffffffffffffffffffff99f00f99fffffffccf33f66 fffffffffffffffffffffffff66f66fffffffffffff99f33fffffffffffffffffffffffff66f66 fffffffffffff99f33fffffffffffffffffffffffff99f00f66fccfccf99f00f66ffffffffffff ffffffffffffffff99f00f00f00f00f66fffffffffffffffffffffffffffffffffffffccfccfff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fccf66f66f66f66f66f66f99fffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffffffffffff33f66fffffffffffffffffffffffffffffffffffffffffff33 f66fffffffffffffffffffffffffffffffffdddfccfccf33f66fccfccfccffffffffffffffffff fffffff66f00f00f00f00f00f00f33ffffffffffffffffffffffffdddfccfccfccfccfccfccfcc ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 112233445566 %(after read) print pop pop /oldonefig { gsave 100 100 translate %276.5 659 translate -10 0 moveto -10 50 lineto 50 0 lineto closepath fill %stroke 11.2 52.5 scale 16 75 4 [16 0 0 -75 0 75] smartimage12rgb grestore } def /onefig { gsave 100 100 translate %276.5 659 translate -10 0 moveto -10 50 lineto 50 0 lineto closepath fill %stroke gsave 11.2 52.5 scale %11.2 0.7 div 52.5 0.7 div scale 16 75 4 [16 0 0 -75 0 75] smartimage12rgb grestore 0 0 200 setrgbcolor 0.7 0.7 scale 0 0 moveto 0 75 lineto 16 75 lineto 16 0 lineto 0 0 lineto stroke grestore } def /Times-Roman findfont 10 scalefont setfont 0 30 330 { dup gsave 300 300 translate rotate 150 150 moveto 100 string cvs show onefig grestore } for showpage pstoedit-3.62/examples/imagetest_3.ps0000774000175500000000000001143307336030520014602 00000000000000/smartimage12rgb { % w h b [matrix] smartimage12rgb - /colorimage where { pop { returndata } false 3 colorimage } { exch pop 8 exch 3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse 4 index 6 2 roll { 2 copy cvgray } image pop pop } ifelse } def %/imagedata 3756 string def %/imagedata 1878 string def /imagedata 1800 string def /returndata { imagedata } def /rowdata 24 string def currentfile imagedata readhexstring aaaa55ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffdddfccffffffffffffffffffffffff f66f33ffff99f66ffff66f33fffffffffffffffffffffffff66f33ffff66f33ffff66f33ffffff fffffffffffffffffff66f33ffff66f33ffff66f33fffffffffffffffffffffffff66f00f33f33 f00f33f33f33fffffffffffffffffffffffff99f33f33f33f33f33f33f66ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff99f33f33f33f33f33f33f66fffffffffffffffffffffffff66f00 f33f33f33f33f33f66fffffffffffffffffffffffff99f00f00f66f99eeeffffffffffffffffff fffffffffffffffffffccf66f33f00f66f99fffffffffffffffffffffffffffffffffdddf99f33 f00f33fffffffffffffffffffffffffccf66f33f00f33f66f99fffffffffffffffffffffffffff f66f00f66f99fccfccfccfccfffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffdddfccfccfccfccfccfccfccffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffccf99f66fccffffffffffffffffffffffff ffffffffff66f00f00f00f00f33eeefffffffffffffffffffffffff99f00f99fffffffccf33f66 fffffffffffffffffffffffff66f66fffffffffffff99f33fffffffffffffffffffffffff66f66 fffffffffffff99f33fffffffffffffffffffffffff99f00f66fccfccf99f00f66ffffffffffff ffffffffffffffff99f00f00f00f00f66fffffffffffffffffffffffffffffffffffffccfccfff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fccf66f66f66f66f66f66f99fffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffffffffffff33f66fffffffffffffffffffffffffffffffffffffffffff33 f66fffffffffffffffffffffffffffffffffdddfccfccf33f66fccfccfccffffffffffffffffff fffffff66f00f00f00f00f00f00f33ffffffffffffffffffffffffdddfccfccfccfccfccfccfcc ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 112233445566 %(after read) print pop pop /oldonefig { gsave 100 100 translate %276.5 659 translate -10 0 moveto -10 50 lineto 50 0 lineto closepath fill %stroke 11.2 52.5 scale 16 75 4 [16 0 0 -75 0 75] smartimage12rgb grestore } def /onefig { gsave 100 100 translate %276.5 659 translate -10 0 moveto -10 50 lineto 50 0 lineto closepath fill %stroke gsave 11.2 52.5 scale %11.2 0.7 div 52.5 0.7 div scale %orig 16 75 4 [16 0 0 -75 0 75] smartimage12rgb 16 75 4 [16 0 0 -75 0 75] smartimage12rgb grestore 0 0 200 setrgbcolor 0.7 0.7 scale 0 0 moveto 0 75 lineto 16 75 lineto 16 0 lineto 0 0 lineto stroke grestore } def /Times-Roman findfont 10 scalefont setfont 1.0 1.5 scale %0 30 330 { 0 30 270 { dup gsave 300 300 translate rotate 150 150 moveto 100 string cvs show onefig grestore } for showpage pstoedit-3.62/examples/largetextspace.ps0000774000175500000000000000023107336010734015410 00000000000000/Times-Roman findfont 20 scalefont setfont 100 100 moveto (testnormal) show 100 200 moveto 20 40 8#040 -3 15 (test with space. Use -pt) awidthshow pstoedit-3.62/examples/letters.ps0000774000175500000000000000050507336010734014063 00000000000000% % Demo example for the -ssp option % try pstoedit -ssp -dt -f fig letters.ps lettersssp.fig % vs % pstoedit -dt -f fig letter2.ps letters.fig % /Times-Roman findfont 40 scalefont setfont 90 rotate 0 -700 translate 50 300 moveto (abcdefghijklmnopqrstuvwxyz) show 50 500 moveto (ABCDEFGHIJKLMNOPQRSTUVWXYZ) show showpage pstoedit-3.62/examples/Makefile.am0000774000175500000000000000051610153423114014062 00000000000000EXTRA_DIST=cliptst2.ps \ closepathtest.ps \ figtext.ps \ colrtest.ps \ eofill.ps \ eschertr.ps \ illusion.ps \ imagetest_1.ps \ imagetest_2.ps \ imagetest_3.ps \ largetextspace.ps \ letters.ps \ oneimg.ps \ pathtest.ps \ spiral.ps \ textmat.ps \ twopages.ps \ woglim.ps pstoedit-3.62/examples/Makefile.in0000644000175500010010000002412512137264203014101 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = examples DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = cliptst2.ps \ closepathtest.ps \ figtext.ps \ colrtest.ps \ eofill.ps \ eschertr.ps \ illusion.ps \ imagetest_1.ps \ imagetest_2.ps \ imagetest_3.ps \ largetextspace.ps \ letters.ps \ oneimg.ps \ pathtest.ps \ spiral.ps \ textmat.ps \ twopages.ps \ woglim.ps all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu 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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/examples/oneimg.ps0000774000175500000000000001105707336010734013663 00000000000000/smartimage12rgb { % w h b [matrix] smartimage12rgb - /colorimage where { pop { returndata } false 3 colorimage } { exch pop 8 exch 3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse 4 index 6 2 roll { 2 copy cvgray } image pop pop } ifelse } def %/imagedata 3756 string def %/imagedata 1878 string def /imagedata 1800 string def /returndata { imagedata } def /rowdata 24 string def currentfile imagedata readhexstring 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffdddfccffffffffffffffffffffffff f66f33ffff99f66ffff66f33fffffffffffffffffffffffff66f33ffff66f33ffff66f33ffffff fffffffffffffffffff66f33ffff66f33ffff66f33fffffffffffffffffffffffff66f00f33f33 f00f33f33f33fffffffffffffffffffffffff99f33f33f33f33f33f33f66ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffff99f33f33f33f33f33f33f66fffffffffffffffffffffffff66f00 f33f33f33f33f33f66fffffffffffffffffffffffff99f00f00f66f99eeeffffffffffffffffff fffffffffffffffffffccf66f33f00f66f99fffffffffffffffffffffffffffffffffdddf99f33 f00f33fffffffffffffffffffffffffccf66f33f00f33f66f99fffffffffffffffffffffffffff f66f00f66f99fccfccfccfccfffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffdddfccfccfccfccfccfccfccffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffccf99f66fccffffffffffffffffffffffff ffffffffff66f00f00f00f00f33eeefffffffffffffffffffffffff99f00f99fffffffccf33f66 fffffffffffffffffffffffff66f66fffffffffffff99f33fffffffffffffffffffffffff66f66 fffffffffffff99f33fffffffffffffffffffffffff99f00f66fccfccf99f00f66ffffffffffff ffffffffffffffff99f00f00f00f00f66fffffffffffffffffffffffffffffffffffffccfccfff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fccf66f66f66f66f66f66f99fffffffffffffffffffffffff66f00f00f00f00f00f00f33ffffff ffffffffffffffffffffffffffff33f66fffffffffffffffffffffffffffffffffffffffffff33 f66fffffffffffffffffffffffffffffffffdddfccfccf33f66fccfccfccffffffffffffffffff fffffff66f00f00f00f00f00f00f33ffffffffffffffffffffffffdddfccfccfccfccfccfccfcc ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffaaaaaa %(after read) print pop pop /onefig { gsave 100 100 translate %276.5 659 translate -10 0 moveto -10 50 lineto 50 0 lineto closepath fill %stroke gsave 11.2 52.5 scale %11.2 0.7 div 52.5 0.7 div scale 16 75 4 [16 0 0 -75 0 75] smartimage12rgb grestore 0 0 200 setrgbcolor 0.7 0.7 scale 0 0 moveto 0 75 lineto 16 75 lineto 16 0 lineto 0 0 lineto stroke grestore } def /Times-Roman findfont 10 scalefont setfont false { 0 30 330 { dup gsave 300 300 translate rotate 150 150 moveto 100 string cvs show onefig grestore } for } if 100 100 moveto onefig showpage pstoedit-3.62/examples/pathtest.ps0000774000175500000000000000066207336010734014241 00000000000000% closepath !! /Times-Roman findfont 10 scalefont setfont 0.7 0.5 0.1 setrgbcolor 200 200 moveto 300 300 lineto stroke 0.2 0.5 0.7 setrgbcolor /p { newpath 100 100 moveto 200 100 lineto 150 400 lineto 200 200 moveto 200 300 lineto 200 400 100 400 100 200 curveto } def p eofill 100 80 moveto (eofilled) show 200 0 translate p fill 100 80 moveto (filled) show 200 0 translate p stroke 100 80 moveto (stroke) show showpage pstoedit-3.62/examples/spiral.ps0000774000175500000000000000333307336010734013675 00000000000000%! %% SPIRAL DEFS /inch { 72 mul } def /wood-rad 210 def % radius of wooden disk /text-rad wood-rad .92 mul def % radius of outer spiral text /ben-rad text-rad .46 mul def % radius of Benham's ring %/downscale 1 def % reduction in scale after each letter /downscale .99700 def % reduction in scale after each letter /angle -2.400 def % rotation after each letter /text (Yes I had this problem earlier this year and A. Kinsman \ of Eastman Kodak kindly posted this code \ which produced exactly the effect I wanted and I was very \ pleased indeed to get hold of it - but don't ask me how or why it \ works ...I'm just happy to use it... ) def gsave 298 390 translate % place the spiral text 0.0 setgray /Times-Roman findfont 48 scalefont setfont 0 1 text length 1 sub { text exch get ( ) dup 0 4 -1 roll put % ( char-string -- ) %V1 dup stringwidth pop 2 div neg text-rad moveto % ( char-string -- ) %V2 -.08 inch text-rad moveto % ( char-string -- ) gsave 0 text-rad moveto % ( char-string -- ) -2.2 rotate % 1 setlinecap % DEBUG % 0 0 rlineto stroke % DEBUG % dup stringwidth pop 2 div neg text-rad moveto % DEBUG dup show % ( char-string -- ) grestore downscale dup scale stringwidth pop text-rad atan neg rotate } for grestore showpage (spiral.ps done) print %-- %gerry pratt - workstation support programmer - university of keele - ENGLAND %email: gerry@seq1.keele.ac.uk ( DYNIX? - just say no!! ) tel:UK 0782 583072 %"these opinions are mine, mine, Mine, Mine, MINE......ALL MINE I TELL YOU!!" % pstoedit-3.62/examples/textmat.ps0000774000175500000000000000153407336010734014072 00000000000000%!PS % % shows text in all different orientations % some combinations of the loops below might result in not meaningful CTMs and are % suppressed in that case. % % Wolfgang Glunz (wglunz@geocities.com) % /x 100 def /y 100 def /fontSize 20 def /Times-Roman findfont fontSize scalefont setfont /boxedshow { currentpoint /y1 exch def /x1 exch def (TEstg) show currentpoint /y2 exch def /x2 exch def x1 y1 moveto x2 y1 lineto x2 y1 fontSize add lineto x1 y1 fontSize add lineto closepath stroke } def -1 1 1 { /m1 exch def -1 1 1 { /m2 exch def -1 1 1 { /m3 exch def -1 1 1 { /m4 exch def x y moveto gsave [ m1 m2 m3 m4 0 0 ] concat { currentpoint pop pop } stopped not { boxedshow } if grestore y 40 add /y exch def y 700 gt { /y 100 def /x x 100 add def } if } for } for } for } for pstoedit-3.62/examples/twopages.ps0000774000175500000000000000462107336010734014235 00000000000000%! << /PageSize [792 612] >> setpagedevice % Optical illusion % written by Woody Baker % Rt.1 Box I % Manor, Tx. 78653 % % hereby placed in the public domain. Would appreciate the header % remaining in-tact. % % % do 1/4th of the drawing % /onequarter { 60 160 moveto 20 160 lineto 20 80 lineto 160 80 lineto 60 180 moveto 0 180 lineto 0 60 lineto 160 60 lineto 40 160 moveto 40 100 lineto 160 100 lineto 60 200 moveto 20 200 lineto 0 180 lineto 40 100 moveto 20 80 lineto } def % % draw the illusion and label it % /optical { 0 0 moveto onequarter gsave -90 rotate -260 0 translate onequarter -90 rotate -260 0 translate onequarter -90 rotate -260 0 translate onequarter stroke grestore /Helvetica findfont 20 scalefont setfont -10 -25 moveto (Brought to you By Woody Baker) show } def % % application code. Positions and scales and draws the actual % illusion. % /xcoord 140 def /ycoord 240 def gsave xcoord ycoord translate 1 1 scale optical grestore showpage %! % M. C. Escher style impossible triangle % written by Guy Shaw % Things that are easy to play with: % Position on paper, overall size, and linewidth /inch { 72 mul } bind def 2 inch dup translate 3 inch dup scale 1 3 inch div setlinewidth % Thickness parameter: % /Thick is the thickness of the structural members of the triange, % as a fraction of the height of the triangle. % Reasonable looking impossible triangles can be obtained with Thick <= 1/6. % right at /Thick == 1/6, there is no space left inside the triangle. % /Thick > 1/6 yields bizarre, but not very interesting results. % /Thick < 1/20 is less interesting, because the "impossibility" % is not so striking when the structural members are that thin. % A good "standard" value is 1/8. /Thick 1 8 div def % You would not normally want to change anything that follows. /Tall 1 def /HalfThick Thick .5 mul def newpath HalfThick Thick moveto Thick 0 lineto 1 Thick sub 0 lineto 1 HalfThick sub Thick lineto .5 HalfThick add Tall Thick sub lineto 1 Thick sub 0 moveto .5 HalfThick add Tall 3 Thick mul sub lineto Thick 3 mul Thick 2 mul lineto 1 Thick 2.5 mul sub Thick moveto .5 Tall Thick 4 mul sub lineto stroke 0.7 setgray newpath HalfThick Thick moveto 1 Thick 2.5 mul sub Thick lineto HalfThick neg Thick rlineto Thick Thick add Thick Thick add lineto .5 HalfThick add Tall Thick sub lineto Thick neg 0 rlineto closepath fill showpage pstoedit-3.62/examples/woglim.ps0000774000175500000000000000074007336010734013700 00000000000000 /rstring 3 string def /r 0 def /g 0 def /b 0 def /allcolors { rstring 0 r put rstring 1 g put rstring 2 b put /r r 16 add store r 255 gt { /r 0 store /g g 16 add store g 255 gt { /g 0 store /b b 16 add store b 255 gt { /b 0 store } if } if } if %r g b pstack pop pop pop rstring } def 100 100 translate 30 rotate 5 5 scale 64 64 8 [1 0 0 1 0 0 ] { allcolors } false 3 colorimage 0 0 moveto 64 0 lineto 64 64 lineto 0 64 lineto 0 0 lineto stroke showpage pstoedit-3.62/install-sh0000774000175500000000000001273607530465320012232 00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 pstoedit-3.62/ltmain.sh0000755000175500010010000105377412137264161012061 00000000000000 # libtool (GNU libtool) 2.4 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010 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) # --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 # 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 TIMESTAMP="" package_revision=1.3294 # 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'} : ${EGREP="/usr/bin/grep -E"} : ${FGREP="/usr/bin/grep -F"} : ${GREP="/usr/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/usr/bin/sed"} : ${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=: 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 --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(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_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-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 | *.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_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $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 () { for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done 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 -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_emit_exe_manifest # emit a Win32 UAC manifest for executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_exe_manifest () { cat < EOF } # 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) 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 # -{shared,static}-libgcc, -static-{libgfortran|libstdc++} # link against specified runtime library # -fstack-protector* stack protector flags for GCC -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| \ -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++| \ -fstack-protector*) 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) 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$dir" # 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 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) 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 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_apped perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do 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 $cwrapper.manifest; 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 # Create the UAC manifests first if necessary (but the # manifest files must have executable permission regardless). case $output_name in *instal*|*patch*|*setup*|*update*) func_emit_exe_manifest > $cwrapper.manifest func_emit_exe_manifest > $output_path/$objdir/$output_name.exe.manifest chmod +x $cwrapper.manifest chmod +x $output_path/$objdir/$output_name.exe.manifest ;; esac $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 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" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 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}" func_append rmfiles " ${name}.manifest $objdir/${name}.manifest" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name $objdir/lt-${name}.manifest" 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 pstoedit-3.62/m4/0000755000175500010010000000000012137264550010617 500000000000000pstoedit-3.62/m4/libtool.m40000644000175500010010000104472712137264162012463 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 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 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([], [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) 2010 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)], [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 # _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([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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 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 -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; 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 # -------------------------- # 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\"`' else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; 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 \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$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 ;; 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 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) 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 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux 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 need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH 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 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 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 Linux 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};"\ " /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 ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' ;; 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\ F* | *Sun*Fortran*) # 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\ 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,' ;; 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(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_flag_spec_ld, $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)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $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(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 ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_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_flag_spec_ld, $1)='+b $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_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _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_flag_spec_ld, $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 ;; freebsd[[12]]*) # 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 ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; 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_flag_spec_ld, $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_flag_spec_ld, $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_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_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 pstoedit-3.62/m4/ltoptions.m40000644000175500010010000002725612137264163013050 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], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [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])]) pstoedit-3.62/m4/ltsugar.m40000644000175500010010000001042412137264164012464 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 ]) pstoedit-3.62/m4/ltversion.m40000644000175500010010000000125612137264165013034 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 3294 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4]) m4_define([LT_PACKAGE_REVISION], [1.3294]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4' macro_revision='1.3294' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) pstoedit-3.62/m4/lt~obsolete.m40000644000175500010010000001375612137264166013372 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])]) pstoedit-3.62/m4/Makefile.am0000644000175500010010000000012611434233530012563 00000000000000EXTRA_DIST=Makefile.am libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4 pstoedit-3.62/m4/Makefile.in0000644000175500010010000002351212137264203012602 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = m4 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = Makefile.am libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu m4/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/Makefile.am0000744000175500010010000000024511511161463012247 00000000000000ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST=copying autogen.sh readme.install AUTOMAKE_OPTIONS = foreign SUBDIRS = config doc examples contrib misc os2 othersrc src msdev m4 pstoedit-3.62/Makefile.in0000644000175500010010000005011412137264204012261 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/configure config.guess \ config.sub depcomp install-sh ltmain.sh missing mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = copying autogen.sh readme.install AUTOMAKE_OPTIONS = foreign SUBDIRS = config doc examples contrib misc os2 othersrc src msdev m4 all: all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ distclean distclean-generic distclean-libtool distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/misc/0000755000175500010010000000000012137264542011233 500000000000000pstoedit-3.62/misc/drvhpgl.pencolors0000744000175500010010000000051511512335376014551 00000000000000# # This file defined pen colors for HPGL # format is: # penID R G B # comment # Pen IDs should be unique of course. # 0 1.0 1.0 1.0 # white unused 1 0.0 0.0 0.0 # black 2 1.0 0.0 0.0 # red 3 0.0 1.0 0.0 # green 4 0.0 0.0 1.0 # blue 5 0.0 1.0 1.0 # cyan 6 1.0 0.0 1.0 # magenta 7 1.0 1.0 0.0 # yellow pstoedit-3.62/misc/examplefigmap.fmp0000774000175500000000000000047310154151246014475 00000000000000% % a template for a fontmap for pstoedit to be used for the conversion % of Postscript to xfig format using LaTeX fonts % Helvetica LaTeX::Bold Courier LaTeX::special::Bold Times-Roman Times-Bold Times-Bold PostScript::Courier-Bold Times-Italic ::special::Courier-Oblique Times "::special::Sans Serif" pstoedit-3.62/misc/latex2e.fmp0000774000175500000000000063443707336011010013227 00000000000000% % fontmap for latex2e to be used by pstoedit % left column is the font name used in the document % right column is the font to be used in the output format % This file was provided by the author of the latex2e driver, % Scott Pakin % ACaslon-AltBold {OT1}{pac}{b}{n} ACaslon-AltBoldItalic {OT1}{pac}{b}{it} ACaslon-AltItalic {OT1}{pac}{m}{it} ACaslon-AltRegular {OT1}{pac}{m}{n} ACaslon-AltSemibold {OT1}{pac}{s}{n} ACaslon-AltSemiboldItalic {OT1}{pac}{s}{it} ACaslon-Bold {T1}{pac}{b}{n} ACaslon-BoldItalic {T1}{pac}{b}{it} ACaslon-Italic {T1}{pac}{m}{it} ACaslon-Regular {T1}{pac}{m}{n} ACaslon-RegularSC {T1}{pac}{m}{sc} ACaslon-Semibold {T1}{pac}{s}{n} ACaslon-SemiboldItalic {T1}{pac}{s}{it} ACaslon-SemiboldSC {T1}{pac}{s}{sc} ACaslonExp-Bold {T1}{pac}{b}{n} ACaslonExp-BoldItalic {T1}{pac}{b}{it} ACaslonExp-Italic {T1}{pac}{m}{it} ACaslonExp-Regular {T1}{pac}{m}{n} ACaslonExp-Semibold {T1}{pac}{s}{n} ACaslonExp-SemiboldItalic {T1}{pac}{s}{it} AGaramond-Bold {T1}{pad}{b}{n} AGaramond-BoldItalic {T1}{pad}{b}{it} AGaramond-Italic {T1}{pad}{m}{it} AGaramond-Regular {T1}{pad}{m}{n} AGaramond-RegularSC {T1}{pad}{m}{sc} AGaramond-Semibold {T1}{pad}{s}{n} AGaramond-SemiboldItalic {T1}{pad}{s}{it} AGaramond-SemiboldSC {T1}{pad}{s}{sc} AGaramondAlt-Italic {OT1}{pad}{m}{it} AGaramondAlt-Regular {OT1}{pad}{m}{n} AGaramondExp-Bold {T1}{pad}{b}{n} AGaramondExp-BoldItalic {T1}{pad}{b}{it} AGaramondExp-Italic {T1}{pad}{m}{it} AGaramondExp-Regular {T1}{pad}{m}{n} AGaramondExp-Semibold {T1}{pad}{s}{n} AGaramondExp-SemiboldItalic {T1}{pad}{s}{it} AJenson-Italic {T1}{paj}{m}{it} AJenson-Regular {T1}{paj}{m}{n} AJenson-RegularSC {T1}{paj}{m}{sc} AJenson-Semibold {T1}{paj}{s}{n} Aachen-Bold {T1}{paa}{b}{n} AachenBT-Bold {T1}{baa}{b}{n} AachenBT-Roman {T1}{baa}{m}{n} AbadiMT {T1}{mai}{m}{n} AbadiMT-Bold {T1}{mai}{b}{n} AbadiMT-BoldItalic {T1}{mai}{b}{it} AbadiMT-Condensed {T1}{mai}{m}{n} AbadiMT-CondensedBold {T1}{mai}{b}{n} AbadiMT-Italic {T1}{mai}{m}{it} AcademiaSSi {T1}{kuy}{m}{n} AcanthusSSi {T1}{kgl}{m}{n} AcanthusSSi-Bold {T1}{kgl}{b}{n} AcanthusSSi-BoldItalic {T1}{kgl}{b}{it} AcanthusSSi-Italic {T1}{kgl}{m}{it} AcanthusSSiBold {T1}{kgl}{b}{n} AcanthusSSiBoldItalic {T1}{kgl}{b}{it} AcanthusSSiItalic {T1}{kgl}{m}{it} AdLibBT-Regular {T1}{ba3}{m}{n} AdvisorBlackSSiBlack {T1}{klw}{}{n} AdvisorSSi-Bold {T1}{klw}{b}{n} AdvisorSSi-Medium {T1}{klw}{}{n} AdvisorSSi-MediumItalic {T1}{klw}{}{it} AdvisorSSiBold {T1}{klw}{b}{n} AdvisorSSiItalic {T1}{klw}{}{it} AirfoilScriptSSi {T1}{khm}{m}{n} AkzidenzGroteskBE-Bold {T1}{paz}{b}{n} AkzidenzGroteskBE-BoldCn {T1}{paz}{b}{n} AkzidenzGroteskBE-BoldEx {T1}{paz}{bx}{n} AkzidenzGroteskBE-BoldExIt {T1}{paz}{bx}{it} AkzidenzGroteskBE-BoldIt {T1}{paz}{b}{it} AkzidenzGroteskBE-Cn {T1}{paz}{m}{n} AkzidenzGroteskBE-Ex {T1}{paz}{m}{n} AkzidenzGroteskBE-It {T1}{paz}{m}{it} AkzidenzGroteskBE-Md {T1}{paz}{}{n} AkzidenzGroteskBE-MdCn {T1}{paz}{c}{n} AkzidenzGroteskBE-MdCnIt {T1}{paz}{c}{it} AkzidenzGroteskBE-MdEx {T1}{paz}{}{n} AkzidenzGroteskBE-MdIt {T1}{paz}{}{it} AkzidenzGroteskBE-Regular {T1}{paz}{m}{n} AlamoSSi {T1}{kcw}{m}{n} AlbertusMT {T1}{mal}{m}{n} AlbertusMT-Italic {T1}{mal}{m}{it} Aldine401BT-BoldA {T1}{bbb}{b}{n} Aldine401BT-BoldItalicA {T1}{bbb}{b}{it} Aldine401BT-ItalicA {T1}{bbb}{m}{it} Aldine401BT-RomanA {T1}{bbb}{m}{n} Aldine721BT-Bold {T1}{bpn}{b}{n} Aldine721BT-BoldItalic {T1}{bpn}{b}{it} Aldine721BT-Italic {T1}{bpn}{m}{it} Aldine721BT-Roman {T1}{bpn}{m}{n} Aldus-Italic {T1}{pas}{m}{it} Aldus-Roman {T1}{pas}{m}{n} Aldus-RomanSC {T1}{pas}{m}{sc} AllegroBT-Regular {T1}{ba5}{m}{n} AlternateGothicNo2BT-Regular {T1}{ba4}{m}{n} AmasisMT {T1}{ma2}{m}{n} AmasisMT-Bold {T1}{ma2}{b}{n} AmasisMT-BoldItalic {T1}{ma2}{b}{it} AmasisMT-Italic {T1}{ma2}{m}{it} AmasisMT-Medium {T1}{ma2}{}{n} AmasisMT-MediumItalic {T1}{ma2}{}{it} AmazoneBT-Regular {T1}{bmz}{m}{n} AmeliaBT-Regular {T1}{ba6}{m}{n} AmerTypewriterITCbyBT-Bold {T1}{bat}{b}{n} AmerTypewriterITCbyBT-Medium {T1}{bat}{}{n} AmericanGaramondBT-Bold {T1}{bg3}{b}{n} AmericanGaramondBT-BoldItalic {T1}{bg3}{b}{it} AmericanGaramondBT-Italic {T1}{bg3}{m}{it} AmericanGaramondBT-Roman {T1}{bg3}{m}{n} AmericanTextBT-Regular {T1}{ba7}{m}{n} AmericanTypewriter-Bold {T1}{pat}{b}{n} AmericanTypewriter-BoldCond {T1}{pat}{b}{n} AmericanTypewriter-Cond {T1}{pat}{m}{n} AmericanTypewriter-Medium {T1}{pat}{}{n} Americana {T1}{pam}{m}{n} Americana-Bold {T1}{pam}{b}{n} Americana-Italic {T1}{pam}{m}{it} AmericanaBT-Bold {T1}{bam}{b}{n} AmericanaBT-Italic {T1}{bam}{m}{it} AmericanaBT-Roman {T1}{bam}{m}{n} AmerigoBT-BoldA {T1}{beo}{b}{n} AmerigoBT-BoldItalicA {T1}{beo}{b}{it} AmerigoBT-ItalicA {T1}{beo}{m}{it} AmerigoBT-MediumA {T1}{beo}{}{n} AmerigoBT-MediumItalicA {T1}{beo}{}{it} AmerigoBT-RomanA {T1}{beo}{m}{n} Anna {T1}{pan}{m}{n} AntiquaSSi {T1}{kpq}{m}{n} AntiquaSSi-Bold {T1}{kpq}{b}{n} AntiquaSSiBold {T1}{kpq}{b}{n} AntiqueOlive-Bold {T1}{pao}{b}{n} AntiqueOlive-BoldCond {T1}{pao}{b}{n} AntiqueOlive-Italic {T1}{pao}{m}{it} AntiqueOlive-Roman {T1}{pao}{m}{n} ApolloMT {T1}{map}{m}{n} ApolloMT-Expert {T1}{map}{m}{n} ApolloMT-Italic {T1}{map}{m}{it} ApolloMT-ItalicExpert {T1}{map}{m}{it} ApolloMT-SC {T1}{map}{m}{sc} ApolloMT-SemiBold {T1}{map}{s}{n} ApolloMT-SemiBoldExpert {T1}{map}{s}{n} AppleChancery {T1}{eec}{m}{n} Arcadia {T1}{par}{m}{n} ArialMT {T1}{ma1}{m}{n} ArialMT-Bold {T1}{ma1}{b}{n} ArialMT-BoldItalic {T1}{ma1}{b}{it} ArialMT-Condensed {T1}{ma1}{m}{n} ArialMT-CondensedBold {T1}{ma1}{b}{n} ArialMT-Italic {T1}{ma1}{m}{it} ArialMT-Medium {T1}{ma1}{}{n} ArialMT-MediumItalic {T1}{ma1}{}{it} ArialRoundedMT {T1}{mhr}{m}{n} ArialRoundedMT-Bold {T1}{mhr}{b}{n} Arkona-Medium {T1}{pak}{}{n} Arkona-Regular {T1}{pak}{m}{n} ArnoldBoecklin {T1}{pab}{m}{n} ArrusBT-Black {T1}{br}{s}{sc} ArrusBT-Bold {T1}{brs}{b}{n} ArrusBT-BoldItalic {T1}{brs}{b}{it} ArrusBT-Italic {T1}{brs}{m}{it} ArrusBT-Roman {T1}{brs}{m}{n} ArtDecoSSi {T1}{kab}{m}{n} AssemblySSi {T1}{kin}{m}{n} AssemblySSi-Alternate {OT1}{kin}{m}{n} AstuteCondensedSSiBoldCondensed {T1}{krw}{b}{n} AstuteCondensedSSiCondensed {T1}{krw}{m}{n} AstuteSSi {T1}{krw}{m}{n} AstuteSSi-Bold {T1}{krw}{b}{n} AstuteSSi-BoldCondensed {T1}{krw}{b}{n} AstuteSSi-BoldItalic {T1}{krw}{b}{it} AstuteSSi-Condensed {T1}{krw}{m}{n} AstuteSSi-Italic {T1}{krw}{m}{it} AstuteSSiBold {T1}{krw}{b}{n} AstuteSSiBoldItalic {T1}{krw}{b}{it} AstuteSSiItalic {T1}{krw}{m}{it} AtlantixBlackSSiBold {T1}{kmn}{b}{n} AtlantixBlackSSiBoldItalic {T1}{kmn}{b}{it} AtlantixProBlackSSiBold {T1}{kmn}{b}{n} AtlantixProBlackSSiBoldItalic {T1}{kmn}{b}{it} AtlantixProSSi {T1}{kmn}{m}{n} AtlantixProSSi-Bold {T1}{kmn}{b}{n} AtlantixProSSi-BoldItalic {T1}{kmn}{b}{it} AtlantixProSSi-Italic {T1}{kmn}{m}{it} AtlantixProSSi-SemiBold {T1}{kmn}{s}{n} AtlantixProSSi-SemiBoldItalic {T1}{kmn}{s}{it} AtlantixProSSiItalic {T1}{kmn}{m}{it} AtlantixProSSiSemiBold {T1}{kmn}{s}{n} AtlantixProSSiSemiBoldItalic {T1}{kmn}{s}{it} AtlantixSSi {T1}{kmn}{m}{n} AtlantixSSi-Bold {T1}{kmn}{b}{n} AtlantixSSi-BoldItalic {T1}{kmn}{b}{it} AtlantixSSi-Italic {T1}{kmn}{m}{it} AtlantixSSi-SemiBold {T1}{kmn}{s}{n} AtlantixSSi-SemiBoldItalic {T1}{kmn}{s}{it} AtlantixSSiItalic {T1}{kmn}{m}{it} AtlantixSSiSemiBold {T1}{kmn}{s}{n} AtlantixSSiSemiBoldItalic {T1}{kmn}{s}{it} Auriol {T1}{pau}{m}{n} Auriol-Bold {T1}{pau}{b}{n} Auriol-BoldItalic {T1}{pau}{b}{it} Auriol-Italic {T1}{pau}{m}{it} AuroraBT-BoldCondensed {T1}{ba8}{b}{n} AustereSSi {T1}{klo}{m}{n} AustereSSi-Bold {T1}{klo}{b}{n} AustereSSiBold {T1}{klo}{b}{n} AutomatonCapsLightSSiLight {T1}{kmh}{m}{n} AutomatonCapsSSi {T1}{kmh}{b}{n} AutomatonCapsSSi-Light {T1}{kmh}{m}{n} AvantGarde-Bold {T1}{pag}{b}{n} AvantGarde-BoldObl {T1}{pag}{b}{sl} AvantGarde-CondBold {T1}{pag}{b}{n} AvantGarde-CondMedium {T1}{pag}{c}{n} AvantGarde-Medium {T1}{pag}{}{n} AvantGarde-MediumObl {T1}{pag}{}{sl} AvantGardeITCbyBT-Medium {T1}{bag}{}{n} AvantGardeITCbyBT-MediumOblique {T1}{bag}{}{sl} Avenir-Medium {T1}{pav}{}{n} Avenir-MediumOblique {T1}{pav}{}{sl} Avenir-Oblique {T1}{pav}{m}{sl} Avenir-Roman {T1}{pav}{m}{n} AxiomaticCondensedSSiBoldCondensed {T1}{kggb}{m}{n} AxiomaticCondensedSSiCondensed {T1}{kgg}{m}{n} AxiomaticSSi {T1}{kgg}{m}{n} AxiomaticSSi-Bold {T1}{kgg}{b}{n} AxiomaticSSi-BoldCondensed {T1}{kggb}{m}{n} AxiomaticSSi-BoldItalic {T1}{kgg}{b}{it} AxiomaticSSi-Condensed {T1}{kgg}{m}{n} AxiomaticSSi-Italic {T1}{kgg}{m}{it} AxiomaticSSiBold {T1}{kgg}{b}{n} AxiomaticSSiBoldItalic {T1}{kgg}{b}{it} AxiomaticSSiItalic {T1}{kgg}{m}{it} BakerSignet {T1}{pbs}{m}{n} BakerSignetBT-Roman {T1}{bbs}{m}{n} BalloonBT-Bold {T1}{bbo}{b}{n} Banco {T1}{pbc}{m}{n} BangaSSi {T1}{kdc}{m}{n} BankGothicBT-Medium {T1}{bkg}{}{n} Barmeno-Bold {T1}{pba}{b}{n} Barmeno-Medium {T1}{pba}{}{n} Barmeno-Regular {T1}{pba}{m}{n} BarristerCondensedSSiCondensed {T1}{kbl}{m}{n} BarristerSSi {T1}{kbl}{}{n} BarristerSSi-Bold {T1}{kbl}{b}{n} BarristerSSi-Condensed {T1}{kbl}{m}{n} BarristerSSiBold {T1}{kbl}{b}{n} BaskervilleBE-Bold {T1}{peb}{b}{n} BaskervilleBE-Italic {T1}{peb}{m}{it} BaskervilleBE-Medium {T1}{peb}{}{n} BaskervilleBE-MediumItalic {T1}{peb}{}{it} BaskervilleBE-Regular {T1}{peb}{m}{n} BaskervilleBlackSSiBold {T1}{knb}{b}{n} BaskervilleBlackSSiBoldItalic {T1}{knb}{b}{it} BaskervilleBook-Italic {T1}{pbv}{m}{it} BaskervilleBook-MedItalic {T1}{pbv}{}{it} BaskervilleBook-Medium {T1}{pbv}{}{n} BaskervilleBook-Regular {T1}{pbv}{m}{n} BaskervilleMT {T1}{mbv}{m}{n} BaskervilleMT-Bold {T1}{mbv}{b}{n} BaskervilleMT-BoldItalic {T1}{mbv}{b}{it} BaskervilleMT-Italic {T1}{mbv}{m}{it} BaskervilleMT-SemiBold {T1}{mbv}{s}{n} BaskervilleMT-SemiBoldItalic {T1}{mbv}{s}{it} BaskervilleOldStyleSSiBold {OT1}{knb}{b}{it} BaskervilleOldStyleSSiNormal {OT1}{knb}{m}{it} BaskervilleSSi {T1}{knb}{m}{n} BaskervilleSSi-Bold {T1}{knb}{b}{n} BaskervilleSSi-BoldItalic {T1}{knb}{b}{it} BaskervilleSSi-BoldItalicOldStyleFigures {OT1}{knb}{b}{it} BaskervilleSSi-BoldSmallCaps {T1}{knb}{b}{sc} BaskervilleSSi-Italic {T1}{knb}{m}{it} BaskervilleSSi-ItalicOldStyleFigures {OT1}{knb}{m}{it} BaskervilleSSi-SemiBold {T1}{knb}{s}{n} BaskervilleSSi-SemiBoldItalic {T1}{knb}{s}{it} BaskervilleSSi-SmallCaps {T1}{knb}{m}{sc} BaskervilleSSiItalic {T1}{knb}{m}{it} BaskervilleSmallCapsSSiBoldSmallCaps {T1}{knb}{b}{sc} BaskervilleSmallCapsSSiSmallCaps {T1}{knb}{m}{sc} BauerBodoni-Black {T1}{pu}{b}{sc} BauerBodoni-BlackCond {T1}{pu}{b}{sc} BauerBodoni-Bold {T1}{pub}{b}{n} BauerBodoni-BoldCond {T1}{pub}{b}{n} BauerBodoni-BoldItalic {T1}{pub}{b}{it} BauerBodoni-Italic {T1}{pub}{m}{it} BauerBodoni-Roman {T1}{pub}{m}{n} BauerBodoni-RomanSC {T1}{pub}{m}{sc} BauerBodoniBT-Black {T1}{bu}{b}{sc} BauerBodoniBT-BlackCondensed {T1}{bu}{b}{sc} BauerBodoniBT-Bold {T1}{bub}{b}{n} BauerBodoniBT-BoldCondensed {T1}{bub}{b}{n} BauerBodoniBT-BoldItalic {T1}{bub}{b}{it} BauerBodoniBT-Italic {T1}{bub}{m}{it} BauerBodoniBT-Roman {T1}{bub}{m}{n} Bauhaus-Bold {T1}{pbh}{b}{n} Bauhaus-Medium {T1}{pbh}{}{n} BauhausITCbyBT-Bold {T1}{bbh}{b}{n} BauhausITCbyBT-Medium {T1}{bbh}{}{n} BellExpertMT {T1}{mbe}{m}{n} BellExpertMT-Bold {T1}{mbe}{b}{n} BellExpertMT-BoldItalic {T1}{mbe}{b}{it} BellExpertMT-Italic {T1}{mbe}{m}{it} BellExpertMT-SemiBold {T1}{mbe}{s}{n} BellExpertMT-SemiBoldItalic {T1}{mbe}{s}{it} BellGothic-Bold {T1}{pbe}{b}{n} BellGothicBT-Black {T1}{bbec}{s}{n} BellGothicBT-Bold {T1}{bbeb}{s}{n} BellGothicBT-Roman {T1}{bber}{s}{n} BellMT {T1}{mbe}{m}{n} BellMT-Alt {OT1}{mbe}{m}{n} BellMT-AltItalic {OT1}{mbe}{m}{it} BellMT-AltSemiBold {OT1}{mbe}{s}{n} BellMT-AltSemiBoldItalic {OT1}{mbe}{s}{it} BellMT-Bold {T1}{mbe}{b}{n} BellMT-BoldExpert {T1}{mbe}{b}{n} BellMT-BoldItalic {T1}{mbe}{b}{it} BellMT-BoldItalicExpert {T1}{mbe}{b}{it} BellMT-Italic {T1}{mbe}{m}{it} BellMT-ItalicAlt {OT1}{mbe}{m}{it} BellMT-ItalicExpert {T1}{mbe}{m}{it} BellMT-Regular {T1}{mbe}{m}{n} BellMT-RegularAlt {OT1}{mbe}{m}{n} BellMT-RegularExpert {T1}{mbe}{m}{n} BellMT-RegularSC {T1}{mbe}{m}{sc} BellMT-SemiBold {T1}{mbe}{s}{n} BellMT-SemiBoldAlt {OT1}{mbe}{s}{n} BellMT-SemiBoldExpert {T1}{mbe}{s}{n} BellMT-SemiBoldItalic {T1}{mbe}{s}{it} BellMT-SemiBoldItalicAlt {OT1}{mbe}{s}{it} BellMT-SemiBoldItalicExpert {T1}{mbe}{s}{it} BellMT-SemiBoldSC {T1}{mbe}{s}{sc} Bellevue {T1}{pqs}{m}{n} Belwe-Bold {T1}{pbl}{b}{n} Belwe-Condensed {T1}{pbl}{m}{n} Belwe-Medium {T1}{pbl}{}{n} BelweBT-Bold {T1}{bbl}{b}{n} BelweBT-Medium {T1}{bbl}{}{n} BelweBT-RomanCondensed {T1}{bbl}{m}{n} Bembo {T1}{mbb}{m}{n} Bembo {T1}{pbb}{m}{n} Bembo-Alt {OT1}{mbb}{m}{n} Bembo-AltBold {OT1}{mbb}{b}{n} Bembo-AltBoldItalic {OT1}{mbb}{b}{it} Bembo-AltItalic {OT1}{mbb}{m}{it} Bembo-AltSemiBold {OT1}{mbb}{s}{n} Bembo-AltSemiBoldItalic {OT1}{mbb}{s}{it} Bembo-Bold {T1}{mbb}{b}{n} Bembo-Bold {T1}{pbb}{b}{n} Bembo-BoldExpert {T1}{pbb}{b}{n} Bembo-BoldItalic {T1}{mbb}{b}{it} Bembo-BoldItalic {T1}{pbb}{b}{it} Bembo-BoldItalicExpert {T1}{pbb}{b}{it} Bembo-Expert {T1}{pbb}{m}{n} Bembo-Italic {T1}{mbb}{m}{it} Bembo-Italic {T1}{pbb}{m}{it} Bembo-ItalicExpert {T1}{pbb}{m}{it} Bembo-SC {T1}{pbb}{m}{sc} Bembo-SemiBold {T1}{mbb}{s}{n} Bembo-SemiBoldItalic {T1}{mbb}{s}{it} Bembo-Semibold {T1}{pbb}{s}{n} Bembo-SemiboldExpert {T1}{pbb}{s}{n} Bembo-SemiboldItalic {T1}{pbb}{s}{it} Bembo-SemiboldItalicExpert {T1}{pbb}{s}{it} BemboExpert-Bold {T1}{mbb}{b}{n} BemboExpert-BoldItalic {T1}{mbb}{b}{it} BemboExpert-Italic {T1}{mbb}{m}{it} BemboExpert-Roman {T1}{mbb}{m}{n} BemboExpert-SemiBold {T1}{mbb}{s}{n} BemboExpert-SemiBoldItalic {T1}{mbb}{s}{it} Benguiat-Bold {T1}{pbg}{b}{n} Benguiat-BoldItalic {T1}{pbg}{b}{it} Benguiat-Medium {T1}{pbg}{}{n} Benguiat-MediumItalic {T1}{pbg}{}{it} BenguiatGothic-Bold {T1}{pug}{b}{n} BenguiatGothic-BoldOblique {T1}{pug}{b}{sl} BenguiatGothic-Medium {T1}{pug}{}{n} BenguiatGothic-MediumOblique {T1}{pug}{}{sl} BenguiatGothicITCbyBT-Bold {T1}{bug}{b}{n} BenguiatGothicITCbyBT-BoldItal {T1}{bug}{b}{it} BenguiatITCbyBT-Bold {T1}{bbg}{b}{n} BenguiatITCbyBT-BoldItalic {T1}{bbg}{b}{it} Berkeley-Bold {T1}{pby}{b}{n} Berkeley-BoldItalic {T1}{pby}{b}{it} Berkeley-Italic {T1}{pby}{}{it} Berkeley-Medium {T1}{pby}{}{n} Berling-Bold {T1}{pbr}{b}{n} Berling-BoldItalic {T1}{pbr}{b}{it} Berling-Italic {T1}{pbr}{m}{it} Berling-Roman {T1}{pbr}{m}{n} BernardMT-Condensed {T1}{mbn}{m}{n} Bernhard-BoldCondensed {T1}{pb7}{b}{n} BernhardBoldCondensedBT-Regular {T1}{bb7}{b}{n} BernhardModern-Bold {T1}{pb7}{b}{n} BernhardModern-Bold {T1}{pb7}{m}{n} BernhardModern-BoldItalic {T1}{pb7}{b}{it} BernhardModern-Italic {T1}{pb7}{m}{it} BernhardModern-Roman {T1}{pb7}{m}{n} BernhardModernBT-Bold {T1}{bb7}{b}{n} BernhardModernBT-BoldItalic {T1}{bb7}{b}{it} BernhardModernBT-Italic {T1}{bb7}{m}{it} BernhardModernBT-Roman {T1}{bb7}{m}{n} BinnerGothicMT {T1}{mn1}{m}{n} BinnyOldStyleMT {T1}{mb2}{m}{n} BinnyOldStyleMT-Italic {T1}{mb2}{m}{it} Birch {T1}{pbi}{m}{n} BlackfordOldStyleSSiBoldOldStyleFigures {OT1}{ktv}{b}{it} BlackfordOldStyleSSiNormal {OT1}{ktv}{m}{it} BlackfordOldStyleSSiSmallCaps {T1}{ktv}{m}{sc} BlackfordSSi {T1}{ktv}{m}{n} BlackfordSSi-Bold {T1}{ktv}{b}{n} BlackfordSSi-BoldItalic {T1}{ktv}{b}{it} BlackfordSSi-BoldOldStyleFigures {OT1}{ktv}{b}{it} BlackfordSSi-Italic {T1}{ktv}{m}{it} BlackfordSSi-ItalicOldStyleFigures {OT1}{ktv}{m}{it} BlackfordSSi-SmallCaps {T1}{ktv}{m}{sc} BlackfordSSiBold {T1}{ktv}{b}{n} BlackfordSSiBoldItalic {T1}{ktv}{b}{it} BlackfordSSiItalic {T1}{ktv}{m}{it} Blackoak {T1}{pb0}{m}{n} BladoExpertMT-Italic {T1}{mb1}{m}{it} BladoMT-Italic {T1}{mb1}{m}{it} BlocSSiBold {T1}{kaa}{b}{n} BlockBE-Condensed {T1}{pb6}{m}{n} BlockBE-Italic {T1}{pb6}{m}{it} BlockBE-Regular {T1}{pb6}{m}{n} BlueprintMT {T1}{mp6}{m}{n} BlueprintMT-Bold {T1}{mp6}{b}{n} BlueprintMT-BoldItalic {T1}{mp6}{b}{it} BlueprintMT-Italic {T1}{mp6}{m}{it} Bodoni {T1}{pbd}{m}{n} Bodoni-Bold {T1}{pbd}{b}{n} Bodoni-BoldCondensed {T1}{pbd}{b}{n} Bodoni-BoldItalic {T1}{pbd}{b}{it} Bodoni-Italic {T1}{pbd}{m}{it} BodoniBE-Bold {T1}{ptb}{b}{n} BodoniBE-BoldCn {T1}{ptb}{b}{n} BodoniBE-BoldCnItalic {T1}{ptb}{b}{it} BodoniBE-BoldExp {T1}{ptb}{b}{n} BodoniBE-BoldItalic {T1}{ptb}{b}{it} BodoniBE-BoldItalicExp {T1}{ptb}{b}{it} BodoniBE-CnItalic {T1}{ptb}{m}{it} BodoniBE-Condensed {T1}{ptb}{m}{n} BodoniBE-Italic {T1}{ptb}{m}{it} BodoniBE-ItalicExp {T1}{ptb}{m}{it} BodoniBE-Medium {T1}{ptb}{}{n} BodoniBE-MediumCn {T1}{ptb}{c}{n} BodoniBE-MediumCnItalic {T1}{ptb}{c}{it} BodoniBE-MediumExp {T1}{ptb}{}{n} BodoniBE-MediumItalic {T1}{ptb}{}{it} BodoniBE-MediumItalicExp {T1}{ptb}{}{it} BodoniBE-MediumSC {T1}{ptb}{}{sc} BodoniBE-Regular {T1}{ptb}{m}{n} BodoniBE-RegularExp {T1}{ptb}{m}{n} BodoniBE-RegularSC {T1}{ptb}{m}{sc} BodoniBT-Bold {T1}{bbd}{b}{n} BodoniBT-BoldCondensed {T1}{bbd}{b}{n} BodoniBT-BoldItalic {T1}{bbd}{b}{it} BodoniBT-Italic {T1}{bbd}{m}{it} BodoniBT-Roman {T1}{bbd}{m}{n} BodoniCondensedSSiBoldCondensed {T1}{kbd}{b}{n} BodoniMT {T1}{mbd}{m}{n} BodoniMT-Bold {T1}{mbd}{b}{n} BodoniMT-BoldItalic {T1}{mbd}{b}{it} BodoniMT-CondensedBold {T1}{mbd}{b}{n} BodoniMT-CondensedBoldItalic {T1}{mbd}{b}{it} BodoniMT-Italic {T1}{mbd}{m}{it} BodoniRecutBlackCondensedSSiNormal {T1}{ku}{b}{sc} BodoniRecutBlackSSiBlack {T1}{ku}{b}{sc} BodoniRecutOldStyleSSiBold {OT1}{kub}{b}{it} BodoniRecutOldStyleSSiBold {OT1}{kub}{b}{n} BodoniRecutOldStyleSSiNormal {OT1}{kub}{m}{it} BodoniRecutOldStyleSSiSmallCaps {T1}{kub}{m}{sc} BodoniRecutSSi {T1}{kub}{m}{n} BodoniRecutSSi-Black {T1}{ku}{b}{sc} BodoniRecutSSi-BlackCondensed {T1}{ku}{b}{sc} BodoniRecutSSi-Bold {T1}{kub}{b}{n} BodoniRecutSSi-BoldCondensed {T1}{kub}{b}{n} BodoniRecutSSi-BoldItalic {T1}{kub}{b}{it} BodoniRecutSSi-BoldItalicOldStyleFigures {OT1}{kub}{b}{it} BodoniRecutSSi-BoldOldStyleFigures {OT1}{kub}{b}{n} BodoniRecutSSi-Italic {T1}{kub}{m}{it} BodoniRecutSSi-ItalicOldStyleFigures {OT1}{kub}{m}{it} BodoniRecutSSi-SmallCaps {T1}{kub}{m}{sc} BodoniRecutSSiBold {T1}{kub}{b}{n} BodoniRecutSSiBoldItalic {T1}{kub}{b}{it} BodoniRecutSSiItalic {T1}{kub}{m}{it} BodoniSSi {T1}{kbd}{m}{n} BodoniSSi-Bold {T1}{kbd}{b}{n} BodoniSSi-BoldCondensed {T1}{kbd}{b}{n} BodoniSSi-BoldItalic {T1}{kbd}{b}{it} BodoniSSi-Italic {T1}{kbd}{m}{it} BodoniSSiBold {T1}{kbd}{b}{n} BodoniSSiBoldItalic {T1}{kbd}{b}{it} BodoniSSiItalic {T1}{kbd}{m}{it} BoffoSSi {T1}{khb}{m}{n} BookAntiqua {T1}{maq}{m}{n} BookAntiqua-Bold {T1}{maq}{b}{n} BookAntiqua-BoldItalic {T1}{maq}{b}{it} BookAntiqua-Italic {T1}{maq}{m}{it} Bookman-Bold {T1}{pbk}{b}{n} Bookman-BoldItalic {T1}{pbk}{b}{it} Bookman-Medium {T1}{pbk}{}{n} Bookman-MediumItalic {T1}{pbk}{}{it} BookmanBlackSSiBold {T1}{kbk}{b}{n} BookmanBlackSSiNormal {T1}{kbk}{b}{it} BookmanOldStyle {T1}{mko}{m}{n} BookmanOldStyle-Bold {T1}{mko}{b}{n} BookmanOldStyle-BoldItalic {T1}{mko}{b}{it} BookmanOldStyle-Italic {T1}{mko}{m}{it} BookmanSSi {T1}{kbk}{}{n} BookmanSSiItalic {T1}{kbk}{}{it} BoostSSi {T1}{ksp}{}{n} BoostSSi-Bold {T1}{ksp}{b}{n} BoostSSi-BoldItalic {T1}{ksp}{b}{sl} BoostSSi-Italic {T1}{ksp}{}{sl} BoostSSiBold {T1}{ksp}{b}{n} BoostSSiBoldItalic {T1}{ksp}{b}{sl} BoostSSiItalic {T1}{ksp}{}{sl} Boton-Bold {T1}{pbt}{b}{n} Boton-BoldItalic {T1}{pbt}{b}{it} Boton-Italic {T1}{pbt}{m}{it} Boton-Medium {T1}{pbt}{}{n} Boton-MediumItalic {T1}{pbt}{}{it} Boton-Regular {T1}{pbt}{m}{n} BraggadocioMT {T1}{mb3}{m}{n} BremenBT-Bold {T1}{bb9}{b}{n} BroadwayBT-Regular {T1}{bbw}{m}{n} Brush445BT-Regular {T1}{bp3}{m}{n} Brush738BT-RegularA {T1}{bb4}{m}{n} BskvillExpMT {T1}{mbv}{m}{n} BskvillExpMT-Bold {T1}{mbv}{b}{n} BskvillExpMT-BoldItalic {T1}{mbv}{b}{it} BskvillExpMT-Italic {T1}{mbv}{m}{it} BskvillExpMT-SemiBold {T1}{mbv}{s}{n} BskvillExpMT-SemiBoldItal {T1}{mbv}{s}{it} BulmerBT-Italic {T1}{bbm}{m}{it} BulmerBT-Roman {T1}{bbm}{m}{n} BulmerMT-Bold {T1}{mbm}{b}{n} BulmerMT-BoldAlt {OT1}{mbm}{b}{n} BulmerMT-BoldExpert {T1}{mbm}{b}{n} BulmerMT-BoldItalic {T1}{mbm}{b}{it} BulmerMT-BoldItalicAlt {OT1}{mbm}{b}{it} BulmerMT-BoldItalicExpert {T1}{mbm}{b}{it} BulmerMT-Italic {T1}{mbm}{m}{it} BulmerMT-ItalicAlt {OT1}{mbm}{m}{it} BulmerMT-ItalicExpert {T1}{mbm}{m}{it} BulmerMT-Regular {T1}{mbm}{m}{n} BulmerMT-RegularAlt {OT1}{mbm}{m}{n} BulmerMT-RegularExpert {T1}{mbm}{m}{n} BulmerMT-RegularSC {T1}{mbm}{m}{sc} BulmerMT-SemiBold {T1}{mbm}{s}{n} BulmerMT-SemiBoldAlt {OT1}{mbm}{s}{n} BulmerMT-SemiBoldExpert {T1}{mbm}{s}{n} BulmerMT-SemiBoldItalExpert {T1}{mbm}{s}{it} BulmerMT-SemiBoldItalic {T1}{mbm}{s}{it} BulmerMT-SemiBoldItalicAlt {OT1}{mbm}{s}{it} BulmerMT-SemiBoldSC {T1}{mbm}{s}{sc} CMB10 {T1}{cm}{b}{n} CMBX10 {T1}{cm}{bx}{n} CMBX12 {T1}{cm}{bx}{n} CMBX5 {T1}{cm}{bx}{n} CMBX6 {T1}{cm}{bx}{n} CMBX7 {T1}{cm}{bx}{n} CMBX8 {T1}{cm}{bx}{n} CMBX9 {T1}{cm}{bx}{n} CMMI10 {T1}{cm}{m}{it} CMMI12 {T1}{cm}{m}{it} CMMI5 {T1}{cm}{m}{it} CMMI6 {T1}{cm}{m}{it} CMMI7 {T1}{cm}{m}{it} CMMI8 {T1}{cm}{m}{it} CMMI9 {T1}{cm}{m}{it} CMR10 {T1}{cm}{m}{n} CMR12 {T1}{cm}{m}{n} CMR17 {T1}{cm}{m}{n} CMR5 {T1}{cm}{m}{n} CMR6 {T1}{cm}{m}{n} CMR7 {T1}{cm}{m}{n} CMR8 {T1}{cm}{m}{n} CMR9 {T1}{cm}{m}{n} CMTT10 {T1}{cmtt}{m}{n} CMTT12 {T1}{cmtt}{m}{n} CMTT8 {T1}{cmtt}{m}{n} CMTT9 {T1}{cmtt}{m}{n} Caecilia-Bold {T1}{pil}{b}{n} Caecilia-BoldItalic {T1}{pil}{b}{it} Caecilia-BoldSC {T1}{pil}{b}{sc} Caecilia-Italic {T1}{pil}{m}{it} Caecilia-Roman {T1}{pil}{m}{n} Caecilia-RomanSC {T1}{pil}{m}{sc} CalistoMT {T1}{mc1}{m}{n} CalistoMT-Bold {T1}{mc1}{b}{n} CalistoMT-BoldItalic {T1}{mc1}{b}{it} CalistoMT-Italic {T1}{mc1}{m}{it} Calligraphic421BT-RomanB {T1}{bc9}{m}{n} Calligraphic810BT-Italic {T1}{bdi}{m}{it} Calligraphic810BT-Roman {T1}{bdi}{m}{n} CalvertMT {T1}{mc8}{m}{n} CalvertMT-Bold {T1}{mc8}{b}{n} Candida-Bold {T1}{pci}{b}{n} Candida-Italic {T1}{pci}{m}{it} Candida-Roman {T1}{pci}{m}{n} CandidaBT-Bold {T1}{bci}{b}{n} CandidaBT-Italic {T1}{bci}{m}{it} CandidaBT-Roman {T1}{bci}{m}{n} CantinaExpandedSSiSemiExpanded {T1}{kiw}{m}{n} CantinaSSi {T1}{kiw}{m}{n} CantinaSSi-SemiExpanded {T1}{kiw}{m}{n} CantoriaMT {T1}{mr2}{m}{n} CantoriaMT-Bold {T1}{mr2}{b}{n} CantoriaMT-BoldItalic {T1}{mr2}{b}{it} CantoriaMT-Italic {T1}{mr2}{m}{it} CantoriaMT-SemiBold {T1}{mr2}{s}{n} CantoriaMT-SemiBoldItalic {T1}{mr2}{s}{it} CarminaBT-Black {T1}{br}{}{sc} CarminaBT-Bold {T1}{brm}{b}{n} CarminaBT-BoldItalic {T1}{brm}{b}{it} CarminaBT-Medium {T1}{brm}{}{n} CarminaBT-MediumItalic {T1}{brm}{}{it} CartographerSSi {T1}{krt}{m}{n} Caslon224ITCbyBT-Bold {T1}{bc2}{b}{n} Caslon224ITCbyBT-BoldItalic {T1}{bc2}{b}{it} Caslon540BT-Italic {T1}{bc5}{m}{it} Caslon540BT-Roman {T1}{bc5}{m}{n} CaslonAlternateBlackSSiBold {OT1}{kac}{b}{n} CaslonAlternateBlackSSiBoldItalic {OT1}{kac}{b}{it} CaslonAlternateSSiAlternateSemiBoldItalic {OT1}{kac}{s}{it} CaslonAlternateSSiItalic {OT1}{kac}{m}{it} CaslonAlternateSSiRoman {OT1}{kac}{m}{n} CaslonAlternateSSiSemiBold {OT1}{kac}{s}{n} CaslonBT-Bold {T1}{bca}{b}{n} CaslonBT-BoldItalic {T1}{bca}{b}{it} CaslonBlackSSiBold {T1}{kac}{b}{n} CaslonBlackSSiBoldItalic {T1}{kac}{b}{it} CaslonBookBE-Bold {T1}{pck}{b}{n} CaslonBookBE-BoldExp {T1}{pck}{b}{n} CaslonBookBE-Italic {T1}{pck}{m}{it} CaslonBookBE-ItalicExp {T1}{pck}{m}{it} CaslonBookBE-Medium {T1}{pck}{}{n} CaslonBookBE-MediumExp {T1}{pck}{}{n} CaslonBookBE-MediumSC {T1}{pck}{}{sc} CaslonBookBE-Regular {T1}{pck}{m}{n} CaslonBookBE-RegularExp {T1}{pck}{m}{n} CaslonBookBE-RegularSC {T1}{pck}{m}{sc} CaslonFiveForty-Italic {T1}{pc5}{m}{it} CaslonFiveForty-Roman {T1}{pc5}{m}{n} CaslonFiveForty-RomanSC {T1}{pc5}{m}{sc} CaslonFiveSSi {T1}{kc5}{m}{n} CaslonFiveSSiItalic {T1}{kc5}{m}{it} CaslonProBlackSSiBold {T1}{kac}{b}{n} CaslonProBlackSSiBoldItalic {T1}{kac}{b}{it} CaslonProSSi {T1}{kac}{m}{n} CaslonProSSiItalic {T1}{kac}{m}{it} CaslonProSSiSemiBold {T1}{kac}{s}{n} CaslonProSSiSemiBoldItalic {T1}{kac}{s}{it} CaslonSSi {T1}{kac}{m}{n} CaslonSSiItalic {T1}{kac}{m}{it} CaslonSSiSemiBold {T1}{kac}{s}{n} CaslonSSiSemiBoldItalic {T1}{kac}{s}{it} CaslonThree-Italic {T1}{pc3}{m}{it} CaslonThree-Roman {T1}{pc3}{m}{n} CaslonThree-RomanSC {T1}{pc3}{m}{sc} CaslonThreeSSi {T1}{kc3}{m}{n} CaslonThreeSSiItalic {T1}{kc3}{m}{it} CaslonTwoMediumSSiMedium {T1}{kc2}{}{n} CaslonTwoMediumSSiMediumItalic {T1}{kc2}{}{it} CaslonTwoSSiBold {T1}{kc2}{b}{n} CaslonTwoTwentyFour-Bold {T1}{pc2}{b}{n} CaslonTwoTwentyFour-BoldIt {T1}{pc2}{b}{it} CaslonTwoTwentyFour-Medium {T1}{pc2}{}{n} CaslonTwoTwentyFour-MediumIt {T1}{pc2}{}{it} CastellarMT {T1}{mtl}{m}{n} CastellerMT {T1}{mtl}{m}{n} Caxton-Bold {T1}{pcx}{b}{n} Caxton-BoldItalic {T1}{pcx}{b}{it} CaxtonBT-Bold {T1}{bcx}{b}{n} CaxtonBT-BoldItalic {T1}{bcx}{b}{it} CentaurExpertMT {T1}{mur}{m}{n} CentaurExpertMT-Bold {T1}{mur}{b}{n} CentaurExpertMT-BoldItalic {T1}{mur}{b}{it} CentaurExpertMT-Italic {T1}{mur}{m}{it} CentaurMT {T1}{mur}{m}{n} CentaurMT-Alt {OT1}{mur}{m}{n} CentaurMT-AltBold {OT1}{mur}{b}{n} CentaurMT-AltBoldItalic {OT1}{mur}{b}{it} CentaurMT-AltItalic {OT1}{mur}{m}{it} CentaurMT-Bold {T1}{mur}{b}{n} CentaurMT-BoldExpert {T1}{mur}{b}{n} CentaurMT-BoldItalic {T1}{mur}{b}{it} CentaurMT-BoldItalicExpert {T1}{mur}{b}{it} CentaurMT-Expert {T1}{mur}{m}{n} CentaurMT-Italic {T1}{mur}{m}{it} CentaurMT-ItalicAlternate {OT1}{mur}{m}{it} CentaurMT-ItalicExpert {T1}{mur}{m}{it} CentaurMT-SC {T1}{mur}{m}{sc} Centennial-Bold {T1}{pce}{b}{n} Centennial-BoldItalic {T1}{pce}{b}{it} Centennial-Italic {T1}{pce}{m}{it} Centennial-Roman {T1}{pce}{m}{n} Centennial-RomanSC {T1}{pce}{m}{sc} CentricSSi {T1}{kex}{m}{n} CentricSSiBold {T1}{kex}{b}{n} Century-Bold {T1}{pcn}{b}{n} Century-BoldCondensed {T1}{pcn}{b}{n} Century-BoldCondensedItalic {T1}{pcn}{b}{it} Century-BoldItalic {T1}{pcn}{b}{it} Century725BT-Bold {T1}{bcn}{b}{n} Century725BT-BoldCondensed {T1}{bcn}{b}{n} Century725BT-Italic {T1}{bcn}{m}{it} Century725BT-Roman {T1}{bcn}{m}{n} Century725BT-RomanCondensed {T1}{bcn}{m}{n} CenturyExpanded {T1}{pcn}{m}{n} CenturyExpanded-Italic {T1}{pcn}{m}{it} CenturyExpandedBT-Bold {T1}{bcn}{bx}{n} CenturyExpandedBT-BoldItalic {T1}{bcn}{bx}{it} CenturyExpandedBT-Italic {T1}{bcn}{m}{it} CenturyExpandedBT-Roman {T1}{bcn}{m}{n} CenturyGothic {T1}{myg}{m}{n} CenturyGothic-Bold {T1}{myg}{b}{n} CenturyGothic-BoldItalic {T1}{myg}{b}{it} CenturyGothic-Italic {T1}{myg}{m}{it} CenturyMT-Bold {T1}{mcn}{b}{n} CenturyMT-BoldItalic {T1}{mcn}{b}{it} CenturyMT-Expanded {T1}{mcn}{bx}{n} CenturyMT-ExpandedItalic {T1}{mcn}{bx}{it} CenturyOSMT {T1}{mcu}{m}{n} CenturyOSMT-Bold {T1}{mcu}{b}{n} CenturyOSMT-BoldItalic {T1}{mcu}{b}{it} CenturyOSMT-Italic {T1}{mcu}{m}{it} CenturyOldStyle-Bold {T1}{pcu}{b}{n} CenturyOldStyle-Italic {T1}{pcu}{m}{it} CenturyOldStyle-Regular {T1}{pcu}{m}{n} CenturyOldstyleBT-Bold {T1}{bcu}{b}{n} CenturyOldstyleBT-Italic {T1}{bcu}{m}{it} CenturyOldstyleBT-Roman {T1}{bcu}{m}{n} CenturyRepriseOldStyleSSiBold {OT1}{kce}{b}{it} CenturyRepriseOldStyleSSiBold {OT1}{kce}{b}{n} CenturyRepriseOldStyleSSiNormal {OT1}{kce}{m}{it} CenturyRepriseOldStyleSSiSmallCaps {T1}{kce}{m}{sc} CenturyRepriseSSi {T1}{kce}{m}{n} CenturyRepriseSSi-Bold {T1}{kce}{b}{n} CenturyRepriseSSi-BoldItalic {T1}{kce}{b}{it} CenturyRepriseSSi-BoldItalicOldStyleFigure {OT1}{kce}{b}{it} CenturyRepriseSSi-BoldOldStyleFigures {OT1}{kce}{b}{n} CenturyRepriseSSi-Italic {T1}{kce}{m}{it} CenturyRepriseSSi-ItalicOldStyleFigures {OT1}{kce}{m}{it} CenturyRepriseSSi-SmallCaps {T1}{kce}{m}{sc} CenturyRepriseSSiBold {T1}{kce}{b}{n} CenturyRepriseSSiBoldItalic {T1}{kce}{b}{it} CenturyRepriseSSiItalic {T1}{kce}{m}{it} CenturyRetrospectiveBlackSSiBold {T1}{kcu}{b}{n} CenturyRetrospectiveSSi {T1}{kcu}{m}{n} CenturyRetrospectiveSSi-Bold {T1}{kcu}{b}{n} CenturyRetrospectiveSSi-Italic {T1}{kcu}{m}{it} CenturyRetrospectiveSSi-SemiBold {T1}{kcu}{s}{n} CenturyRetrospectiveSSiItalic {T1}{kcu}{m}{it} CenturySchL-Bold {T1}{unc}{b}{n} CenturySchL-BoldItal {T1}{unc}{b}{it} CenturySchL-Ital {T1}{unc}{m}{it} CenturySchL-Roma {T1}{unc}{m}{n} CenturySchoolbook {T1}{mcs}{m}{n} CenturySchoolbook-Bold {T1}{mcs}{b}{n} CenturySchoolbook-BoldItalic {T1}{mcs}{b}{it} CenturySchoolbook-Italic {T1}{mcs}{m}{it} CenturySchoolbookBT-Bold {T1}{bcs}{b}{n} CenturySchoolbookBT-BoldCond {T1}{bcs}{b}{n} CenturySchoolbookBT-BoldItalic {T1}{bcs}{b}{it} CenturySchoolbookBT-Italic {T1}{bcs}{m}{it} CenturySchoolbookBT-Roman {T1}{bcs}{m}{n} CenturySchoolbookRepriseSSi {T1}{knc}{m}{n} CenturySchoolbookRepriseSSi-Bold {T1}{knc}{b}{n} CenturySchoolbookRepriseSSi-BoldItalic {T1}{knc}{b}{it} CenturySchoolbookRepriseSSi-Italic {T1}{knc}{m}{it} CenturySchoolbookRepriseSSiBold {T1}{knc}{b}{n} CenturySchoolbookRepriseSSiBoldItalic {T1}{knc}{b}{it} CenturySchoolbookRepriseSSiItalic {T1}{knc}{m}{it} CenturySchoolbookSSi {T1}{kcs}{m}{n} CenturySchoolbookSSi-Bold {T1}{kcs}{b}{n} CenturySchoolbookSSi-BoldItalic {T1}{kcs}{b}{it} CenturySchoolbookSSi-Italic {T1}{kcs}{m}{it} CenturySchoolbookSSiBold {T1}{kcs}{b}{n} CenturySchoolbookSSiBoldItalic {T1}{kcs}{b}{it} CenturySchoolbookSSiItalic {T1}{kcs}{m}{it} ChanceryScriptBlackSSiBold {T1}{kzc}{b}{n} ChanceryScriptSSi {T1}{kzc}{m}{n} ChanceryScriptSSi-Bold {T1}{kzc}{b}{n} ChanceryScriptSSi-Italic {T1}{kzc}{m}{it} ChanceryScriptSSi-Medium {T1}{kzc}{}{n} ChanceryScriptSSi-MediumItalic {T1}{kzc}{}{it} ChanceryScriptSSiItalic {T1}{kzc}{m}{it} Charlemagne-Bold {T1}{pcg}{b}{n} Charlemagne-Regular {T1}{pcg}{m}{n} Charme {T1}{phm}{m}{n} CharterBT-Bold {T1}{bch}{b}{n} CharterBT-BoldItalic {T1}{bch}{b}{it} CharterBT-Italic {T1}{bch}{m}{it} CharterBT-Roman {T1}{bch}{m}{n} Cheltenham-Bold {T1}{pct}{b}{n} Cheltenham-BoldCond {T1}{pct}{b}{n} Cheltenham-BoldCondItalic {T1}{pct}{b}{it} Cheltenham-BoldItalic {T1}{pct}{b}{it} CheltenhamBT-Bold {T1}{bct}{b}{n} CheltenhamBT-BoldCondItalic {T1}{bct}{b}{it} CheltenhamBT-BoldCondensed {T1}{bct}{b}{n} CheltenhamBT-BoldItalic {T1}{bct}{b}{it} CheltenhamBT-Italic {T1}{bct}{m}{it} CheltenhamBT-Roman {T1}{bct}{m}{n} CheltenhamCondensedSSiBoldCondensed {T1}{kct}{b}{n} CheltenhamCondensedSSiBoldCondensedItalic {T1}{kct}{b}{it} CheltenhamITCbyBT-Bold {T1}{bct}{b}{n} CheltenhamITCbyBT-BoldItalic {T1}{bct}{b}{it} CheltenhamSSiBold {T1}{kct}{b}{n} CheltenhamSSiBoldItalic {T1}{kct}{b}{it} ChorusLineSSi-Bold {T1}{krv}{m}{n} ChorusLineSSiBold {T1}{krv}{m}{n} City-Bold {T1}{pcy}{b}{n} City-BoldItalic {T1}{pcy}{b}{it} City-Medium {T1}{pcy}{}{n} City-MediumItalic {T1}{pcy}{}{it} Clarendon {T1}{pcd}{m}{n} Clarendon-Bold {T1}{pcd}{b}{n} ClarendonBT-Bold {T1}{bcd}{b}{n} ClarendonBT-BoldCondensed {T1}{bcd}{b}{n} ClarendonBT-Roman {T1}{bcd}{m}{n} ClarendonBT-RomanCondensed {T1}{bcd}{m}{n} ClarendonMT {T1}{mcd}{m}{n} ClarionMT {T1}{mc6}{m}{n} ClarionMT-Bold {T1}{mc6}{b}{n} ClarionMT-Italic {T1}{mc6}{m}{it} ClassicSSi {T1}{kip}{m}{n} ClassicSSi-Bold {T1}{kip}{b}{n} ClassicSSi-Italic {T1}{kip}{m}{it} ClassicSSiBold {T1}{kip}{b}{n} ClassicSSiItalic {T1}{kip}{m}{it} ClassicalGaramondBT-Bold {T1}{bsb}{b}{n} ClassicalGaramondBT-BoldItalic {T1}{bsb}{b}{it} ClassicalGaramondBT-Italic {T1}{bsb}{m}{it} ClassicalGaramondBT-Roman {T1}{bsb}{m}{n} Clearface-Bold {T1}{pcf}{b}{n} Clearface-BoldItalic {T1}{pcf}{b}{it} Clearface-Regular {T1}{pcf}{m}{n} Clearface-RegularItalic {T1}{pcf}{m}{it} ClearfaceGothicLH-Black {T1}{lcfc}{s}{n} ClearfaceGothicLH-Bold {T1}{lcfb}{s}{n} ClearfaceGothicLH-Light {T1}{lcfl}{s}{n} ClearfaceGothicLH-Medium {T1}{lcfm}{s}{n} ClearfaceGothicLH-Roman {T1}{lcfr}{s}{n} ClearfaceGothicMT-Bold {T1}{mcfb}{s}{n} ClearfaceGothicMT-DemiBold {T1}{mcfd}{s}{n} ClearfaceMT-Bold {T1}{mcf}{b}{n} ClearfaceSSi {T1}{kcf}{m}{n} ClearfaceSSiBold {T1}{kcf}{b}{n} ClearfaceSSiBoldItalic {T1}{kcf}{b}{it} ClearfaceSSiItalic {T1}{kcf}{m}{it} ClerestorySSi {T1}{kln}{m}{n} ClericSSi-Bold {T1}{kmt}{b}{n} ClericSSi-BoldItalic {T1}{kmt}{b}{it} ClericSSiBold {T1}{kmt}{b}{n} ClericSSiBoldItalic {T1}{kmt}{b}{it} Cochin {T1}{pco}{m}{n} Cochin-Bold {T1}{pco}{b}{n} Cochin-BoldItalic {T1}{pco}{b}{it} Cochin-Italic {T1}{pco}{m}{it} CoherentMediumSSiMedium {T1}{kmd}{}{n} CoherentMediumSSiMediumItalic {T1}{kmd}{}{it} CoherentSSi {T1}{kmd}{m}{n} CoherentSSi-Bold {T1}{kmd}{b}{n} CoherentSSi-BoldItalic {T1}{kmd}{b}{it} CoherentSSi-Italic {T1}{kmd}{m}{it} CoherentSSi-Medium {T1}{kmd}{}{n} CoherentSSi-MediumItalic {T1}{kmd}{}{it} CoherentSSiBold {T1}{kmd}{b}{n} CoherentSSiBoldItalic {T1}{kmd}{b}{it} CoherentSSiItalic {T1}{kmd}{m}{it} ColmcilleAltMT {OT1}{mol}{m}{n} ColmcilleAltMT-Bold {OT1}{mol}{b}{n} ColmcilleAltMT-BoldItalic {OT1}{mol}{b}{it} ColmcilleAltMT-Italic {OT1}{mol}{m}{it} ColmcilleMT {T1}{mol}{m}{n} ColmcilleMT-Bold {T1}{mol}{b}{n} ColmcilleMT-BoldItalic {T1}{mol}{b}{it} ColmcilleMT-Italic {T1}{mol}{m}{it} ColonnaMT {T1}{mo3}{m}{n} ColumbusExpMT {T1}{mu0}{m}{n} ColumbusExpMT-Bold {T1}{mu0}{b}{n} ColumbusExpMT-BoldItalic {T1}{mu0}{b}{it} ColumbusExpMT-Italic {T1}{mu0}{m}{it} ColumbusExpMT-SemiBold {T1}{mu0}{s}{n} ColumbusExpMT-SemiBoldItal {T1}{mu0}{s}{it} ColumbusMT {T1}{mu0}{m}{n} ColumbusMTBold {T1}{mu0}{b}{n} ColumbusMTBoldItalic {T1}{mu0}{b}{it} ColumbusMTItalic {T1}{mu0}{m}{it} ColumbusMTSemiBold {T1}{mu0}{s}{n} ColumbusMTSemiBoldItalic {T1}{mu0}{s}{it} CommerceBlackCondensedSSiBoldCondensed {T1}{ktg}{b}{n} CommerceBlackCondensedSSiBoldCondensedItalic {T1}{ktg}{b}{sl} CommerceBlackSSiBold {T1}{ktg}{b}{n} CommerceBlackSSiBoldItalic {T1}{ktg}{b}{sl} CommerceCondensedSSiCondensedItalic {T1}{ktg}{m}{sl} CommerceCondensedSSiSemiBoldCondensed {T1}{ktg}{s}{n} CommerceCondensedSSiSemiBoldCondensedItalic {T1}{ktg}{s}{sl} CommerceSSi {T1}{ktg}{m}{n} CommerceSSi-Bold {T1}{ktg}{b}{n} CommerceSSi-BoldCondensed {T1}{ktg}{b}{n} CommerceSSi-BoldCondensedItalic {T1}{ktg}{b}{sl} CommerceSSi-BoldItalic {T1}{ktg}{b}{sl} CommerceSSi-CondensedItalic {T1}{ktg}{m}{sl} CommerceSSi-Italic {T1}{ktg}{m}{sl} CommerceSSi-SemiBold {T1}{ktg}{s}{n} CommerceSSi-SemiBoldCondensed {T1}{ktg}{s}{n} CommerceSSi-SemiBoldCondensedItalic {T1}{ktg}{s}{sl} CommerceSSi-SemiBoldItalic {T1}{ktg}{s}{sl} CommerceSSiItalic {T1}{ktg}{m}{sl} CommerceSSiSemiBold {T1}{ktg}{s}{n} CommerceSSiSemiBoldItalic {T1}{ktg}{s}{sl} CommercialScriptBT-Regular {T1}{bi0}{m}{n} CompactaBT-Bold {T1}{bc7}{b}{n} CompactaBT-BoldItalic {T1}{bc7}{b}{it} CompactaBT-Italic {T1}{bc7}{m}{it} CompactaBT-Roman {T1}{bc7}{m}{n} CompactaMT-Bold {T1}{mc7}{b}{n} CompendiumSSi {T1}{kfn}{m}{n} CompendiumSSiBold {T1}{kfn}{b}{n} CompendiumSSiBoldItalic {T1}{kfn}{b}{sl} CompendiumSSiItalic {T1}{kfn}{m}{sl} CompleatSSi {T1}{kpp}{m}{n} CompleatSSi-Bold {T1}{kpp}{b}{n} CompleatSSi-BoldItalic {T1}{kpp}{b}{it} CompleatSSi-Italic {T1}{kpp}{m}{it} CompleatSSiBold {T1}{kpp}{b}{n} CompleatSSiBoldItalic {T1}{kpp}{b}{it} CompleatSSiItalic {T1}{kpp}{m}{it} ConcordeBE-BoldCn {T1}{poc}{b}{n} ConcordeBE-Condensed {T1}{poc}{m}{n} ConcordeBE-Italic {T1}{poc}{m}{it} ConcordeBE-ItalicExp {T1}{poc}{m}{it} ConcordeBE-Medium {T1}{poc}{}{n} ConcordeBE-MediumCn {T1}{poc}{c}{n} ConcordeBE-MediumExp {T1}{poc}{}{n} ConcordeBE-MediumItalic {T1}{poc}{}{it} ConcordeBE-MediumItalicExp {T1}{poc}{}{it} ConcordeBE-MediumSC {T1}{poc}{}{sc} ConcordeBE-Regular {T1}{poc}{m}{n} ConcordeBE-RegularExp {T1}{poc}{m}{sc} ConcordeBE-RegularSC {T1}{poc}{m}{n} ConquistaSSi {T1}{knf}{}{n} ConquistaSSi-Italic {T1}{knf}{}{it} ConquistaSSiItalic {T1}{knf}{}{it} ContextCondensedSSiBoldCondensed {T1}{khv}{b}{n} ContextCondensedSSiBoldCondensedItalic {T1}{khv}{b}{sl} ContextCondensedSSiCondensed {T1}{khv}{m}{n} ContextCondensedSSiCondensedItalic {T1}{khv}{m}{sl} ContextInseratSSi {T1}{khi}{m}{n} ContextRepriseCondensedSSiBoldCondensed {T1}{khn}{b}{n} ContextRepriseCondensedSSiBoldCondensedItalic {T1}{khn}{b}{sl} ContextRepriseCondensedSSiCondensed {T1}{khn}{m}{n} ContextRepriseCondensedSSiCondensedItalic {T1}{khn}{m}{sl} ContextRepriseExpandedSSiBoldExpanded {T1}{khn}{bx}{n} ContextRepriseExpandedSSiBoldExpandedItalic {T1}{khn}{bx}{sl} ContextRepriseExpandedSSiExpanded {T1}{khn}{m}{n} ContextRepriseExpandedSSiExpandedItalic {T1}{khn}{m}{sl} ContextRepriseMediumCondSSiNormal {T1}{khn}{c}{n} ContextRepriseMediumCondSSiNormal {T1}{khn}{c}{sl} ContextRepriseMediumExpSSiNormal {T1}{khn}{}{n} ContextRepriseMediumExpSSiNormal {T1}{khn}{}{sl} ContextRepriseMediumSSiMedium {T1}{khn}{}{n} ContextRepriseMediumSSiMediumItalic {T1}{khn}{}{sl} ContextRepriseSSi {T1}{khn}{m}{n} ContextRepriseSSi-Bold {T1}{khn}{b}{n} ContextRepriseSSi-BoldCondensed {T1}{khn}{b}{n} ContextRepriseSSi-BoldCondensedItalic {T1}{khn}{b}{sl} ContextRepriseSSi-BoldExpanded {T1}{khn}{bx}{n} ContextRepriseSSi-Condensed {T1}{khn}{m}{n} ContextRepriseSSi-CondensedItalic {T1}{khn}{m}{sl} ContextRepriseSSi-Expanded {T1}{khn}{m}{n} ContextRepriseSSi-ExpandedItalic {T1}{khn}{m}{sl} ContextRepriseSSi-Italic {T1}{khn}{m}{sl} ContextRepriseSSi-Medium {T1}{khn}{}{n} ContextRepriseSSi-MediumCondensed {T1}{khn}{c}{n} ContextRepriseSSi-MediumCondensedItalic {T1}{khn}{c}{sl} ContextRepriseSSi-MediumExpanded {T1}{khn}{}{n} ContextRepriseSSi-MediumExpandedItalic {T1}{khn}{}{sl} ContextRepriseSSi-MediumItalic {T1}{khn}{}{sl} ContextRepriseSSiBold {T1}{khn}{b}{n} ContextRepriseSSiBoldExpandedItalic {T1}{khn}{bx}{sl} ContextRepriseSSiBoldItalic {T1}{khn}{b}{sl} ContextRepriseSSiItalic {T1}{khn}{m}{sl} ContextRoundedBlackSSiBlack {T1}{kh}{m}{sc} ContextRoundedCondensedSSiBoldCondensed {T1}{khr}{b}{n} ContextRoundedCondensedSSiNormal {T1}{khr}{b}{sl} ContextRoundedSSi-Black {T1}{kh}{m}{sc} ContextRoundedSSi-Bold {T1}{khr}{b}{n} ContextRoundedSSi-BoldCondensed {T1}{khr}{b}{n} ContextRoundedSSi-BoldCondensedItalic {T1}{khr}{b}{sl} ContextRoundedSSi-BoldItalic {T1}{khr}{b}{sl} ContextRoundedSSiBold {T1}{khr}{b}{n} ContextRoundedSSiBoldItalic {T1}{khr}{b}{sl} ContextSSi {T1}{khv}{m}{n} ContextSSi-Bold {T1}{khv}{b}{n} ContextSSi-BoldCondensed {T1}{khv}{b}{n} ContextSSi-BoldCondensedItalic {T1}{khv}{b}{sl} ContextSSi-BoldItalic {T1}{khv}{b}{sl} ContextSSi-Condensed {T1}{khv}{m}{n} ContextSSi-CondensedItalic {T1}{khv}{m}{sl} ContextSSi-Italic {T1}{khv}{m}{sl} ContextSSiBold {T1}{khv}{b}{n} ContextSSiBoldItalic {T1}{khv}{b}{sl} ContextSSiItalic {T1}{khv}{m}{sl} CooperBT-Black {T1}{bc}{b}{sc} CooperBT-Bold {T1}{bcb}{b}{n} CooperBT-BoldItalic {T1}{bcb}{b}{it} CooperBT-Medium {T1}{bcb}{}{n} CooperBT-MediumItalic {T1}{bcb}{}{it} CooperBlack {T1}{pc}{b}{sc} CooperSSiBlack {T1}{kc}{b}{sc} CopperplateCondensedSSiBoldCondensed {T1}{kcp}{b}{n} CopperplateCondensedSSiCondensed {T1}{kcp}{m}{n} CopperplateGothicBT-Bold {T1}{bcpb}{s}{n} CopperplateGothicBT-BoldCond {T1}{bcpb}{s}{n} CopperplateGothicBT-Heavy {T1}{bcph}{s}{n} CopperplateGothicBT-Roman {T1}{bcpr}{s}{n} CopperplateGothicBT-RomanCond {T1}{bcpr}{s}{n} CopperplateSSi {T1}{kcp}{m}{n} CopperplateSSiBold {T1}{kcp}{b}{n} Corona {T1}{pon}{m}{n} Corona-Bold {T1}{pon}{b}{n} Corona-Italic {T1}{pon}{m}{it} Coronet {T1}{pot}{m}{n} Coronet-Bold {T1}{pot}{b}{n} CoronetMT-Bold {T1}{mot}{b}{n} CoronetScriptSSi {T1}{kot}{m}{n} CoronetScriptSSi-Italic {T1}{kot}{m}{it} CoronetScriptSSiItalic {T1}{kot}{m}{it} CoronetScriptSSiNormal {T1}{kot}{m}{n} CortexSSi {T1}{kbr}{m}{n} CortexSSi-Bold {T1}{kbr}{b}{n} CortexSSi-BoldItalic {T1}{kbr}{b}{it} CortexSSi-Italic {T1}{kbr}{m}{it} CortexSSiBold {T1}{kbr}{b}{n} CortexSSiBoldItalic {T1}{kbr}{b}{it} CortexSSiItalic {T1}{kbr}{m}{it} Cottonwood {T1}{pcw}{m}{n} CountrysideSSi {T1}{kam}{m}{n} CountrysideSSiBold {T1}{kam}{b}{n} CountrysideSSiItalic {T1}{kam}{m}{it} Courier {T1}{pcr}{m}{n} Courier-Bold {T1}{pcr}{b}{n} Courier-BoldOblique {T1}{pcr}{b}{sl} Courier-Oblique {T1}{pcr}{m}{sl} Courier10PitchBT-Bold {T1}{bcr}{b}{n} Courier10PitchBT-BoldItalic {T1}{bcr}{b}{it} Courier10PitchBT-Italic {T1}{bcr}{m}{it} Courier10PitchBT-Roman {T1}{bcr}{m}{n} CourierLD-Bold {T1}{mcr}{b}{n} CourierLD-BoldItalic {T1}{mcr}{b}{it} CourierLD-Italic {T1}{mcr}{m}{it} CourierLD-Regular {T1}{mcr}{m}{n} CourierPS {T1}{mcr}{m}{n} CourierPS-Bold {T1}{mcr}{b}{n} CourierPS-BoldItalic {T1}{mcr}{b}{it} CourierPS-Italic {T1}{mcr}{m}{it} CremeBlackSSiBold {T1}{kpg}{b}{n} CriteriaOldStyleSSiBoldOldStyleFigures {OT1}{kpl}{b}{n} CriteriaOldStyleSSiNormal {OT1}{kpl}{m}{it} CriteriaOldStyleSSiSmallCaps {T1}{kpl}{m}{sc} CriteriaSSi {T1}{kpl}{m}{n} CriteriaSSi-Bold {T1}{kpl}{b}{n} CriteriaSSi-BoldItalic {T1}{kpl}{b}{it} CriteriaSSi-BoldOldStyleFigures {OT1}{kpl}{b}{n} CriteriaSSi-Italic {T1}{kpl}{m}{it} CriteriaSSi-ItalicOldStyleFigures {OT1}{kpl}{m}{it} CriteriaSSi-SmallCaps {T1}{kpl}{m}{sc} CriteriaSSiBold {T1}{kpl}{b}{n} CriteriaSSiBoldItalic {T1}{kpl}{b}{it} CriteriaSSiBoldItalicOldStyleFigures {OT1}{kpl}{b}{it} CriteriaSSiItalic {T1}{kpl}{m}{it} Cushing-Bold {T1}{puh}{b}{n} Cushing-BoldItalic {T1}{puh}{b}{it} Cushing-Medium {T1}{puh}{}{n} Cushing-MediumItalic {T1}{puh}{}{it} DINEngschrift {T1}{peh}{m}{n} DINMittelschrift {T1}{pm6}{m}{n} DINNeuzeitGrotesk-BoldCond {T1}{pzg}{b}{n} DailyNews-Bold {T1}{pdn}{b}{n} DailyNews-BoldItalic {T1}{pdn}{b}{it} DailyNews-Italic {T1}{pdn}{m}{it} DailyNews-Medium {T1}{pdn}{}{n} DailyNews-MediumItalic {T1}{pdn}{}{it} DailyNews-Regular {T1}{pdn}{m}{n} DanteExpertMT {T1}{mdt}{m}{n} DanteExpertMT-Bold {T1}{mdt}{b}{n} DanteExpertMT-BoldItalic {T1}{mdt}{b}{it} DanteExpertMT-Italic {T1}{mdt}{m}{it} DanteExpertMT-Medium {T1}{mdt}{}{n} DanteExpertMT-MediumItalic {T1}{mdt}{}{it} DanteMT {T1}{mdt}{m}{n} DanteMT-Alt {OT1}{mdt}{m}{n} DanteMT-AltBold {OT1}{mdt}{b}{n} DanteMT-AltBoldItalic {OT1}{mdt}{b}{it} DanteMT-AltItalic {OT1}{mdt}{m}{it} DanteMT-AltMedium {OT1}{mdt}{}{n} DanteMT-AltMediumItalic {OT1}{mdt}{}{it} DanteMT-Bold {T1}{mdt}{b}{n} DanteMT-BoldAlt {OT1}{mdt}{b}{n} DanteMT-BoldExpert {T1}{mdt}{b}{n} DanteMT-BoldItalic {T1}{mdt}{b}{it} DanteMT-BoldItalicAlt {OT1}{mdt}{b}{it} DanteMT-BoldItalicExpert {T1}{mdt}{b}{it} DanteMT-Italic {T1}{mdt}{m}{it} DanteMT-ItalicAlt {OT1}{mdt}{m}{it} DanteMT-ItalicExpert {T1}{mdt}{m}{it} DanteMT-Medium {T1}{mdt}{}{n} DanteMT-MediumAlt {OT1}{mdt}{}{n} DanteMT-MediumExpert {T1}{mdt}{}{n} DanteMT-MediumItalic {T1}{mdt}{}{it} DanteMT-MediumItalicAlt {OT1}{mdt}{}{it} DanteMT-MediumItalicExpert {T1}{mdt}{}{it} DanteMT-Regular {T1}{mdt}{m}{n} DanteMT-RegularAlt {OT1}{mdt}{m}{n} DanteMT-RegularExpert {T1}{mdt}{m}{n} DanteMT-RegularSC {T1}{mdt}{m}{sc} DavidaBoldBT-Regular {T1}{bd0}{b}{n} DeVinneBT-Italic {T1}{bvi}{m}{it} DeVinneBT-Roman {T1}{bvi}{m}{n} DecadeCondensedSSiBoldCondensed {T1}{kao}{b}{n} DecadeSSi {T1}{kao}{m}{n} DecadeSSi-BoldCondensed {T1}{kao}{b}{n} DecadeSSiBold {T1}{kao}{b}{n} DecadeSSiItalic {T1}{kao}{m}{it} Decorated035BT-Regular {T1}{bpf}{m}{n} DelimaMT {T1}{mdm}{m}{n} DelimaMT-Bold {T1}{mdm}{b}{n} DelimaMT-BoldItalic {T1}{mdm}{b}{it} DelimaMT-Italic {T1}{mdm}{m}{it} DelimaMT-SemiBold {T1}{mdm}{s}{n} DelimaMT-SemiBoldItalic {T1}{mdm}{s}{it} DellaRobbiaBT-Bold {T1}{bde}{b}{n} DellaRobbiaBT-Roman {T1}{bde}{m}{n} Delta-Bold {T1}{pdj}{b}{n} Delta-BoldItalic {T1}{pdj}{b}{it} Delta-Medium {T1}{pdj}{}{n} Delta-MediumItalic {T1}{pdj}{}{it} DeutchBlackSSiBlack {T1}{ks}{s}{sc} DeutchGaramondOldStyleSSiBold {OT1}{keg}{b}{it} DeutchGaramondOldStyleSSiBold {OT1}{keg}{b}{n} DeutchGaramondOldStyleSSiNormal {OT1}{keg}{m}{it} DeutchGaramondOldStyleSSiSmallCaps {T1}{keg}{m}{sc} DeutchGaramondSSi {T1}{keg}{m}{n} DeutchGaramondSSiBold {T1}{keg}{b}{n} DeutchGaramondSSiBoldItalic {T1}{keg}{b}{it} DeutchGaramondSSiItalic {T1}{keg}{m}{it} DeutchMediumSSiMedium {T1}{kss}{}{n} DeutchMediumSSiMediumItalic {T1}{kss}{}{it} DeutchSSi {T1}{kss}{m}{n} DeutchSSi-Black {T1}{ks}{s}{sc} DeutchSSi-Bold {T1}{kss}{b}{n} DeutchSSi-BoldItalic {T1}{kss}{b}{it} DeutchSSi-Italic {T1}{kss}{m}{it} DeutchSSi-Medium {T1}{kss}{}{n} DeutchSSi-MediumItalic {T1}{kss}{}{it} DeutchSSiBold {T1}{kss}{b}{n} DeutchSSiBoldItalic {T1}{kss}{b}{it} DeutchSSiItalic {T1}{kss}{m}{it} DidotLH-Bold {T1}{ldo}{b}{n} DidotLH-Initials {OT1}{ldo}{m}{n} DidotLH-Italic {T1}{ldo}{m}{it} DidotLH-Roman {T1}{ldo}{m}{n} DidotLH-RomanSC {T1}{ldo}{m}{sc} Diotima-Italic {T1}{pdi}{m}{it} Diotima-Roman {T1}{pdi}{m}{n} Diotima-RomanSC {T1}{pdi}{m}{sc} Diskus {T1}{pdk}{m}{n} Diskus-Bold {T1}{pdk}{b}{n} DomBoldBT-Regular {T1}{bdc}{b}{n} DomCasual {T1}{pdc}{m}{n} DomCasual-Bold {T1}{pdc}{b}{n} DomCasualBT-Regular {T1}{bdc}{m}{n} DomDiagonalBT-Bold {T1}{bdc}{b}{it} DomDiagonalBT-Regular {T1}{bdc}{m}{it} Doric-Bold {T1}{pdr}{b}{n} Dutch766BT-BoldA {T1}{bii}{b}{n} Dutch766BT-ItalicA {T1}{bii}{m}{it} Dutch766BT-RomanA {T1}{bii}{m}{n} Dutch801BT-Bold {T1}{btm}{b}{n} Dutch801BT-BoldItalic {T1}{btm}{b}{it} Dutch801BT-Italic {T1}{btm}{m}{it} Dutch801BT-Roman {T1}{btm}{m}{n} Dutch801BT-SemiBold {T1}{btm}{s}{n} Dutch801BT-SemiBoldItalic {T1}{btm}{s}{it} Dutch809BT-BoldC {T1}{boc}{b}{n} Dutch809BT-ItalicC {T1}{boc}{m}{it} Dutch809BT-RomanC {T1}{boc}{m}{n} Dutch811BT-BoldD {T1}{boy}{b}{n} Dutch811BT-BoldItalicD {T1}{boy}{b}{it} Dutch811BT-ItalicD {T1}{boy}{m}{it} Dutch811BT-RomanD {T1}{boy}{m}{n} Dutch823BT-BoldB {T1}{bna}{b}{n} Dutch823BT-BoldItalicB {T1}{bna}{b}{it} Dutch823BT-ItalicB {T1}{bna}{m}{it} Dutch823BT-RomanB {T1}{bna}{m}{n} DynameBlackSSiBold {T1}{kbh}{b}{n} DynameSSi {T1}{kbh}{}{n} Eccentric {T1}{pxc}{m}{n} Egyptian505BT-Bold {T1}{bee}{b}{n} Egyptian505BT-Medium {T1}{bee}{}{n} Egyptian505BT-Roman {T1}{bee}{m}{n} EgyptianMT-Extended {T1}{mee}{m}{n} EgyptienneF-Bold {T1}{pef}{b}{n} EgyptienneF-Italic {T1}{pef}{m}{it} EgyptienneF-Roman {T1}{pef}{m}{n} EhrhardtExptMT {T1}{met}{m}{n} EhrhardtExptMT-Italic {T1}{met}{m}{it} EhrhardtExptMT-SemiBold {T1}{met}{s}{n} EhrhardtExptMT-SemiBoldItal {T1}{met}{s}{it} EhrhardtMT {T1}{met}{m}{n} EhrhardtMT-Italic {T1}{met}{m}{it} EhrhardtMT-Regular {T1}{met}{m}{n} EhrhardtMT-SemiBold {T1}{met}{s}{n} EhrhardtMT-SemiBoldItalic {T1}{met}{s}{it} EhrhardtMT-Semibold {T1}{met}{s}{n} EhrhardtMT-SemiboldItalic {T1}{met}{s}{it} ElectraLH-Bold {T1}{lea}{b}{n} ElectraLH-BoldCursive {T1}{lea}{b}{it} ElectraLH-BoldSC {T1}{lea}{b}{sc} ElectraLH-Cursive {T1}{lea}{m}{it} ElectraLH-Regular {T1}{lea}{m}{n} ElectraLH-RegularSC {T1}{lea}{m}{sc} ElegantGaramondBT-Bold {T1}{bgj}{b}{n} ElegantGaramondBT-Italic {T1}{bgj}{m}{it} ElegantGaramondBT-Roman {T1}{bgj}{m}{n} EllingtonMT {T1}{mel}{m}{n} EllingtonMT-Bold {T1}{mel}{b}{n} EllingtonMT-BoldItalic {T1}{mel}{b}{it} EllingtonMT-Italic {T1}{mel}{m}{it} ElvenSSiLight {T1}{kww}{m}{n} EmbassyBT-Regular {T1}{be0}{m}{n} EmpireBT-Regular {T1}{be1}{m}{n} English157BT-Regular {T1}{boe}{m}{n} EngraversGothicBT-Regular {T1}{benr}{s}{n} EngraversLH-BoldFace {T1}{len}{b}{n} EngraversMT {T1}{men}{m}{n} EngraversMT-Bold {T1}{men}{b}{n} EngraversRomanBT-Bold {T1}{ben}{b}{n} EngraversRomanBT-Regular {T1}{ben}{m}{n} EnsembleMediumSSiMedium {T1}{kit}{}{n} EnsembleSSiBold {T1}{kit}{b}{n} ErasITCbyBT-Bold {T1}{ber}{b}{n} ErasITCbyBT-Medium {T1}{ber}{}{n} Esprit-Bold {T1}{pei}{b}{n} Esprit-BoldItalic {T1}{pei}{b}{it} Esprit-Medium {T1}{pei}{}{n} Esprit-MediumItalic {T1}{pei}{}{it} Eurostile {T1}{pes}{m}{n} Eurostile-Bold {T1}{pes}{b}{n} Eurostile-BoldCondensed {T1}{pes}{b}{n} Eurostile-BoldExtendedTwo {T1}{pes}{bx}{n} Eurostile-BoldOblique {T1}{pes}{b}{it} Eurostile-Condensed {T1}{pes}{m}{n} Eurostile-ExtendedTwo {T1}{pes}{m}{n} Eurostile-Oblique {T1}{pes}{m}{it} ExPonto-Regular {T1}{pxp}{m}{n} Excelsior {T1}{pex}{m}{n} Excelsior-Bold {T1}{pex}{b}{n} Excelsior-Italic {T1}{pex}{m}{it} Exotic350BT-Bold {T1}{bpg}{b}{n} ExpoBookSSiMedium {T1}{kav}{}{n} ExpoBookSSiMediumItalic {T1}{kav}{}{sl} ExpoSSi {T1}{kav}{m}{n} ExpoSSi-Italic {T1}{kav}{m}{sl} ExpoSSi-Medium {T1}{kav}{}{n} ExpoSSi-MediumItalic {T1}{kav}{}{sl} ExpoSSiItalic {T1}{kav}{m}{sl} ExpositionMediumSSiMedium {T1}{kuw}{}{n} ExpositionMediumSSiMediumItalic {T1}{kuw}{}{it} ExpositionSSi-Bold {T1}{kuw}{b}{n} ExpositionSSi-BoldItalic {T1}{kuw}{b}{it} ExpositionSSi-Medium {T1}{kuw}{}{n} ExpositionSSi-MediumItalic {T1}{kuw}{}{it} ExpositionSSiBold {T1}{kuw}{b}{n} ExpositionSSiBoldItalic {T1}{kuw}{b}{it} ExpressDecoGothicSSi {T1}{kug}{}{n} ExpressDecoGothicSSiBold {T1}{kug}{b}{n} ExpressDecoGothicSSiBoldItalic {T1}{kug}{b}{sl} ExpressDecoGothicSSiItalic {T1}{kug}{}{sl} ExpressDecoSSiBold {T1}{kbg}{b}{n} ExpressSSi {T1}{kaz}{m}{n} ExpressSSi-Bold {T1}{kaz}{b}{n} ExpressSSiBold {T1}{kaz}{b}{n} ExtensSSiBold {T1}{kdr}{b}{n} FacadeMT-Condensed {T1}{mf2}{m}{n} FacileSSi {T1}{ksx}{m}{n} FacileSSi-Bold {T1}{ksx}{b}{n} FacileSSi-Italic {T1}{ksx}{m}{it} FacileSSiBold {T1}{ksx}{b}{n} FacileSSiItalic {T1}{ksx}{m}{it} FairfieldLH-Bold {T1}{lff}{b}{n} FairfieldLH-BoldItalic {T1}{lff}{b}{it} FairfieldLH-BoldSC {T1}{lff}{b}{sc} FairfieldLH-Medium {T1}{lff}{}{n} FairfieldLH-MediumItalic {T1}{lff}{}{it} FairfieldLH-MediumSC {T1}{lff}{}{sc} FalstaffMT {T1}{mfs}{m}{n} FelixTitlingMT {T1}{mfx}{m}{n} Fenice-Bold {T1}{pfn}{b}{n} Fenice-BoldOblique {T1}{pfn}{b}{sl} Fenice-Regular {T1}{pfn}{m}{n} Fenice-RegularOblique {T1}{pfn}{m}{sl} FeniceITCbyBT-Bold {T1}{bfn}{b}{n} FeniceITCbyBT-BoldItalic {T1}{bfn}{b}{it} FeniceITCbyBT-Regular {T1}{bfn}{m}{n} FeniceITCbyBT-RegularItalic {T1}{bfn}{m}{it} FigaroMT {T1}{mfi}{m}{n} Flareserif821BT-Bold {T1}{bal}{b}{n} Flareserif821BT-Roman {T1}{bal}{m}{n} FlemishScriptBT-Regular {T1}{bf0}{m}{n} Flora-Bold {T1}{pfl}{b}{n} Flora-Medium {T1}{pfl}{}{n} FlorentineGaramondSSi {T1}{kig}{m}{n} FlorentineGaramondSSiBold {T1}{kig}{b}{n} FlorentineGaramondSSiItalic {T1}{kig}{m}{it} Folio-Bold {T1}{pfo}{b}{n} Folio-BoldCondensed {T1}{pfo}{b}{n} Folio-Medium {T1}{pfo}{}{n} FolioBT-Bold {T1}{bfo}{b}{n} FolioBT-BoldCondensed {T1}{bfo}{b}{n} FolioBT-Medium {T1}{bfo}{}{n} FootlightMT {T1}{mf4}{m}{n} FootlightMT-Bold {T1}{mf4}{b}{n} FootlightMT-BoldItalic {T1}{mf4}{b}{it} FootlightMT-Italic {T1}{mf4}{m}{it} FormalScript421BT-Regular {T1}{boi}{m}{n} Formata-Bold {T1}{pfa}{b}{n} Formata-BoldCondensed {T1}{pfa}{b}{n} Formata-BoldCondensedItalic {T1}{pfa}{b}{it} Formata-BoldItalic {T1}{pfa}{b}{it} Formata-CnItalicExpert {T1}{pfa}{m}{it} Formata-Condensed {T1}{pfa}{m}{n} Formata-CondensedExpert {T1}{pfa}{m}{n} Formata-CondensedItalic {T1}{pfa}{m}{it} Formata-CondensedSC {T1}{pfa}{m}{sc} Formata-Italic {T1}{pfa}{m}{it} Formata-ItalicExpert {T1}{pfa}{m}{it} Formata-Medium {T1}{pfa}{}{n} Formata-MediumCondensed {T1}{pfa}{c}{n} Formata-MediumCondensedItalic {T1}{pfa}{c}{it} Formata-MediumItalic {T1}{pfa}{}{it} Formata-Regular {T1}{pfa}{m}{n} Formata-RegularExpert {T1}{pfa}{m}{n} Formata-RegularSC {T1}{pfa}{m}{sc} ForteMT {T1}{mfe}{m}{n} FournierExpertMT {T1}{mf1}{m}{n} FournierExpertMT-Italic {T1}{mf1}{m}{it} FournierMT {T1}{mf1}{m}{n} FournierMT-Alt {OT1}{mf1}{m}{n} FournierMT-AltItalic {OT1}{mf1}{m}{it} FournierMT-Italic {T1}{mf1}{m}{it} FournierMT-ItalicAlt {OT1}{mf1}{m}{it} FournierMT-ItalicExpert {T1}{mf1}{m}{it} FournierMT-Regular {T1}{mf1}{m}{n} FournierMT-RegularAlt {OT1}{mf1}{m}{n} FournierMT-RegularExpert {T1}{mf1}{m}{n} FournierMT-RegularSC {T1}{mf1}{m}{sc} FrakturBT-Regular {T1}{bft}{m}{n} FranklinGothic-Condensed {T1}{pfg}{m}{n} FranklinGothic-MedCnd {T1}{pfg}{c}{n} FranklinGothic-MedCndItal {T1}{pfg}{c}{it} FranklinGothic-Medium {T1}{pfg}{}{n} FranklinGothic-MediumItal {T1}{pfg}{}{it} FranklinGothic-Roman {T1}{pfg}{m}{n} FranklinGothicCondensedSSiCondensed {T1}{kfg}{m}{n} Freeform710BT-Regular {T1}{bek}{m}{n} Freeform721BT-Bold {T1}{bau}{b}{n} Freeform721BT-BoldItalic {T1}{bau}{b}{it} Freeform721BT-Italic {T1}{bau}{m}{it} Freeform721BT-Roman {T1}{bau}{m}{n} Freehand471BT-Regular {T1}{bcc}{m}{n} Freehand521BT-RegularC {T1}{bma}{m}{n} Freehand575BT-RegularB {T1}{bjf}{m}{n} Freehand591BT-RegularA {T1}{bb5}{m}{n} FrizQuadrata {T1}{pfq}{m}{n} FrizQuadrata-Bold {T1}{pfq}{b}{n} FrizQuadrataITCbyBT-Bold {T1}{bfq}{b}{n} FrizQuadrataITCbyBT-Roman {T1}{bfq}{m}{n} Frutiger-Black {T1}{pf}{m}{sc} Frutiger-BlackCn {T1}{pf}{m}{sc} Frutiger-Bold {T1}{pfr}{b}{n} Frutiger-BoldItalic {T1}{pfr}{b}{it} Frutiger-Cn {T1}{pfr}{m}{n} Frutiger-Italic {T1}{pfr}{m}{it} Frutiger-Roman {T1}{pfr}{m}{n} Futura {T1}{pfu}{m}{n} Futura-Bold {T1}{pfu}{b}{n} Futura-BoldOblique {T1}{pfu}{b}{sl} Futura-Condensed {T1}{pfu}{m}{n} Futura-CondensedBold {T1}{pfu}{b}{n} Futura-CondensedBoldOblique {T1}{pfu}{b}{sl} Futura-CondensedOblique {T1}{pfu}{m}{sl} Futura-Oblique {T1}{pfu}{m}{sl} FuturaBT-Bold {T1}{bfu}{b}{n} FuturaBT-BoldCondensed {T1}{bfu}{b}{n} FuturaBT-BoldCondensedItalic {T1}{bfu}{b}{it} FuturaBT-BoldItalic {T1}{bfu}{b}{it} FuturaBT-Medium {T1}{bfu}{}{n} FuturaBT-MediumCondensed {T1}{bfu}{c}{n} FuturaBT-MediumItalic {T1}{bfu}{}{it} Galahad-Alternate {OT1}{pgh}{m}{n} Galahad-Regular {T1}{pgh}{m}{n} Galliard-Bold {T1}{pgl}{b}{n} Galliard-BoldItalic {T1}{pgl}{b}{it} Galliard-Italic {T1}{pgl}{m}{it} Galliard-Roman {T1}{pgl}{m}{n} GalliardITCbyBT-Bold {T1}{bgl}{b}{n} GalliardITCbyBT-BoldItalic {T1}{bgl}{b}{it} GalliardITCbyBT-Italic {T1}{bgl}{m}{it} GalliardITCbyBT-Roman {T1}{bgl}{m}{n} GandoBT-Regular {T1}{bg0}{m}{n} Garamond-Bold {T1}{pgm}{b}{n} Garamond-BoldCondensed {T1}{pgm}{b}{n} Garamond-BoldCondensedItalic {T1}{pgm}{b}{it} Garamond-BoldItalic {T1}{pgm}{b}{it} GaramondAlternateSSi {OT1}{kad}{m}{n} GaramondAlternateSSiItalic {OT1}{kad}{m}{it} GaramondBlackCondensedSSiBoldCondensed {T1}{kgm}{b}{n} GaramondBlackCondensedSSiBoldCondensedItalic {T1}{kgm}{b}{it} GaramondBlackSSiBlack {T1}{kgm}{b}{n} GaramondBlackSSiBlackItalic {T1}{kgm}{b}{it} GaramondBlackSSiBold {T1}{kad}{b}{n} GaramondBlackSSiBoldItalic {T1}{kad}{b}{it} GaramondExpertMT {T1}{mgm}{m}{n} GaramondExpertMT-Bold {T1}{mgm}{b}{n} GaramondExpertMT-BoldItalic {T1}{mgm}{b}{it} GaramondExpertMT-Italic {T1}{mgm}{m}{it} GaramondITCbyBT-Bold {T1}{bgm}{b}{n} GaramondITCbyBT-BoldCondItalic {T1}{bgm}{b}{it} GaramondITCbyBT-BoldCondensed {T1}{bgm}{b}{n} GaramondITCbyBT-BoldItalic {T1}{bgm}{b}{it} GaramondLightSSiMediumItalic {T1}{kba}{}{it} GaramondMT {T1}{mgm}{m}{n} GaramondMT-Bold {T1}{mgm}{b}{n} GaramondMT-BoldItalic {T1}{mgm}{b}{it} GaramondMT-Italic {T1}{mgm}{m}{it} GaramondProBlackSSiBold {T1}{kad}{b}{n} GaramondProBlackSSiBoldItalic {T1}{kad}{b}{it} GaramondProSSi {T1}{kad}{m}{n} GaramondProSSiItalic {T1}{kad}{m}{it} GaramondProSSiSemiBold {T1}{kad}{s}{n} GaramondProSSiSemiBoldItalic {T1}{kad}{s}{it} GaramondRepriseOldStyleSSiBold {OT1}{kg3}{b}{it} GaramondRepriseOldStyleSSiBoldSmallCaps {T1}{kg3}{b}{sc} GaramondRepriseOldStyleSSiNormal {OT1}{kg3}{m}{it} GaramondRepriseOldStyleSSiSmallCaps {T1}{kg3}{m}{sc} GaramondRepriseSSi {T1}{kg3}{m}{n} GaramondRepriseSSi-Bold {T1}{kg3}{b}{n} GaramondRepriseSSi-BoldItalic {T1}{kg3}{b}{it} GaramondRepriseSSi-BoldItalicOldStyleFigur {OT1}{kg3}{b}{it} GaramondRepriseSSi-BoldSmallCaps {T1}{kg3}{b}{sc} GaramondRepriseSSi-Italic {T1}{kg3}{m}{it} GaramondRepriseSSi-ItalicOldStyleFigures {OT1}{kg3}{m}{it} GaramondRepriseSSi-SmallCaps {T1}{kg3}{m}{sc} GaramondRepriseSSiBold {T1}{kg3}{b}{n} GaramondRepriseSSiBoldItalic {T1}{kg3}{b}{it} GaramondRepriseSSiItalic {T1}{kg3}{m}{it} GaramondRetrospectiveOSSSiBold {OT1}{ksb}{b}{it} GaramondRetrospectiveOSSSiBold {OT1}{ksb}{b}{n} GaramondRetrospectiveOSSSiNormal {OT1}{ksb}{m}{it} GaramondRetrospectiveOldStyleSSiSmallCaps {OT1}{kg9}{m}{sc} GaramondRetrospectiveOldStyleSSiSmallCaps {OT1}{ksb}{m}{sc} GaramondRetrospectiveSSi {T1}{kg9}{m}{n} GaramondRetrospectiveSSi {T1}{ksb}{m}{n} GaramondRetrospectiveSSi-Bold {T1}{kg9}{b}{n} GaramondRetrospectiveSSi-Bold {T1}{ksb}{b}{n} GaramondRetrospectiveSSi-BoldItalic {T1}{kg9}{b}{it} GaramondRetrospectiveSSi-BoldItalic {T1}{ksb}{b}{it} GaramondRetrospectiveSSi-BoldItalicOldStyl {OT1}{kg9}{b}{it} GaramondRetrospectiveSSi-BoldItalicOldStyl {OT1}{ksb}{b}{it} GaramondRetrospectiveSSi-BoldOldStyleFigur {OT1}{kg9}{b}{n} GaramondRetrospectiveSSi-BoldOldStyleFigur {OT1}{ksb}{b}{n} GaramondRetrospectiveSSi-Italic {T1}{kg9}{m}{it} GaramondRetrospectiveSSi-Italic {T1}{ksb}{m}{it} GaramondRetrospectiveSSi-ItalicOldStyleFig {OT1}{kg9}{m}{it} GaramondRetrospectiveSSi-ItalicOldStyleFig {OT1}{ksb}{m}{it} GaramondRetrospectiveSSiBold {T1}{ksb}{b}{n} GaramondRetrospectiveSSiBoldItalic {T1}{ksb}{b}{it} GaramondRetrospectiveSSiItalic {T1}{ksb}{m}{it} GaramondSSiItalic {T1}{kad}{m}{it} GaramondSSiNormal {T1}{kad}{m}{n} GaramondSSiSemiBold {T1}{kad}{s}{n} GaramondSSiSemiBoldItalic {T1}{kad}{s}{it} GaramondSemiExpandedSSiBoldSemiExpandedItalic {T1}{kba}{m}{it} GaramondSemiExpandedSSiSemiExpanded {T1}{kba}{m}{n} GaramondThree {T1}{pg3}{m}{n} GaramondThree-Bold {T1}{pg3}{b}{n} GaramondThree-BoldItalic {T1}{pg3}{b}{it} GaramondThree-Italic {T1}{pg3}{m}{it} GaramondThree-SC {T1}{pg3}{m}{sc} GarthGraphic {T1}{pgg}{m}{n} GarthGraphic-Bold {T1}{pgg}{b}{n} GarthGraphic-BoldCondensed {T1}{pgg}{b}{n} GarthGraphic-BoldItalic {T1}{pgg}{b}{it} GarthGraphic-Condensed {T1}{pgg}{m}{n} GarthGraphic-Italic {T1}{pgg}{m}{it} GazetteLH-Bold {T1}{lgz}{b}{n} GazetteLH-Italic {T1}{lgz}{m}{it} GazetteLH-Roman {T1}{lgz}{m}{n} Geneva {T1}{ege}{m}{n} Geometric231BT-BoldC {T1}{bkb}{b}{n} Geometric231BT-RomanC {T1}{bkb}{m}{n} Geometric415BT-MediumA {T1}{bm2}{}{n} Geometric415BT-MediumItalicA {T1}{bm2}{}{it} Geometric706BT-BoldCondensedB {T1}{bnz}{b}{n} Geometric706BT-MediumB {T1}{bnz}{}{n} GeometricSlab703BT-Bold {T1}{bmp}{b}{n} GeometricSlab703BT-BoldCond {T1}{bmp}{b}{n} GeometricSlab703BT-BoldItalic {T1}{bmp}{b}{it} GeometricSlab703BT-Medium {T1}{bmp}{}{n} GeometricSlab703BT-MediumCond {T1}{bmp}{c}{n} GeometricSlab703BT-MediumItalic {T1}{bmp}{}{it} GeometricSlab712BT-BoldA {T1}{brw}{b}{n} GeometricSlab712BT-MediumA {T1}{brw}{}{n} GeometricSlab712BT-MediumItalA {T1}{brw}{}{it} Giddyup-Regular {T1}{pg2}{m}{n} GillCondensedSSiBoldCondensed {T1}{kgs}{b}{n} GillCondensedSSiCondensed {T1}{kgs}{m}{n} GillSSi {T1}{kgs}{m}{n} GillSSi-Bold {T1}{kgs}{b}{n} GillSSi-BoldCondensed {T1}{kgs}{b}{n} GillSSi-BoldItalic {T1}{kgs}{b}{it} GillSSi-Condensed {T1}{kgs}{m}{n} GillSSi-Italic {T1}{kgs}{m}{it} GillSSiBold {T1}{kgs}{b}{n} GillSSiBoldItalic {T1}{kgs}{b}{it} GillSSiItalic {T1}{kgs}{m}{it} GillSans {T1}{mgs}{m}{n} GillSans {T1}{pgs}{m}{n} GillSans-Bold {T1}{mgs}{b}{n} GillSans-Bold {T1}{pgs}{b}{n} GillSans-BoldCondensed {T1}{mgs}{b}{n} GillSans-BoldCondensed {T1}{pgs}{b}{n} GillSans-BoldItalic {T1}{mgs}{b}{it} GillSans-BoldItalic {T1}{pgs}{b}{it} GillSans-BoldSC {T1}{mgs}{b}{sc} GillSans-Condensed {T1}{mgs}{m}{n} GillSans-Condensed {T1}{pgs}{m}{n} GillSans-Italic {T1}{mgs}{m}{it} GillSans-Italic {T1}{pgs}{m}{it} GillSans-SC {T1}{mgs}{m}{sc} GillSansCyrMT {T1}{mgs}{m}{n} GillSansCyrMT-Bold {T1}{mgs}{b}{n} GillSansCyrMT-BoldInclined {T1}{mgs}{b}{it} GillSansCyrMT-Inclined {T1}{mgs}{m}{it} Giovanni-Bold {T1}{pgv}{b}{n} Giovanni-BoldItalic {T1}{pgv}{b}{it} GlossaryMediumSSiMedium {T1}{khg}{}{n} GlossaryMediumSSiMediumItalic {T1}{khg}{}{it} GlossarySSiBold {T1}{khg}{b}{n} GlossarySSiBoldItalic {T1}{khg}{b}{it} GloucesMT-Bold {T1}{mgr}{b}{n} GloucesMT-CondBold {T1}{mgr}{b}{n} GloucesMT-ExtendedBold {T1}{mgr}{bx}{n} GloucesOldStyleMT {T1}{mgr}{m}{n} Glypha {T1}{pgp}{m}{n} Glypha-Bold {T1}{pgp}{b}{n} Glypha-BoldOblique {T1}{pgp}{b}{sl} Glypha-Oblique {T1}{pgp}{m}{sl} GorillaITCbyBT-Regular {T1}{bg6}{m}{n} Gothic-Thirteen {T1}{pg1}{m}{n} Gothic720BT-BoldB {T1}{bgq}{b}{n} Gothic720BT-BoldItalicB {T1}{bgq}{b}{it} Gothic720BT-ItalicB {T1}{bgq}{m}{it} Gothic720BT-RomanB {T1}{bgq}{m}{n} Gothic725BT-BoldA {T1}{baz}{b}{n} Gothic821CondensedBT-Regular {T1}{bb6}{m}{n} Goudy {T1}{pgy}{m}{n} Goudy-Bold {T1}{pgy}{b}{n} Goudy-BoldItalic {T1}{pgy}{b}{it} Goudy-BoldOsF {T1}{pgy}{b}{n} Goudy-Italic {T1}{pgy}{m}{it} Goudy-SC {T1}{pgy}{m}{sc} GoudyCatalogueBT-Regular {T1}{bg5}{m}{n} GoudyCatalogueMT {T1}{mg5}{m}{n} GoudyCatalogueMT-Italic {T1}{mg5}{m}{it} GoudyMT-Bold {T1}{mgy}{b}{n} GoudyMT-BoldItalic {T1}{mgy}{b}{it} GoudyModernMT {T1}{mg4}{m}{n} GoudyModernMT-Bold {T1}{mg4}{m}{n} GoudyModernMT-BoldItalic {T1}{mg4}{m}{it} GoudyModernMT-Italic {T1}{mg4}{m}{it} GoudyOldStyleBT-Bold {T1}{bgo}{b}{n} GoudyOldStyleBT-BoldItalic {T1}{bgo}{b}{it} GoudyOldStyleBT-Italic {T1}{bgo}{m}{it} GoudyOldStyleBT-Roman {T1}{bgo}{m}{n} GoudyOldStyleMT {T1}{mgo}{m}{n} GoudyOldStyleMT-Italic {T1}{mgo}{m}{it} GoudyRetrospectiveSSi {T1}{kgo}{m}{n} GoudyRetrospectiveSSi-Bold {T1}{kgo}{b}{n} GoudyRetrospectiveSSi-Italic {T1}{kgo}{m}{it} GoudyRetrospectiveSSiBold {T1}{kgo}{b}{n} GoudyRetrospectiveSSiItalic {T1}{kgo}{m}{it} GoudySans-Black {T1}{py}{s}{sc} GoudySans-Bold {T1}{pys}{b}{n} GoudySans-BoldItalic {T1}{pys}{b}{it} GoudySans-Medium {T1}{pys}{}{n} GoudySans-MediumItalic {T1}{pys}{}{it} GoudySansITCbyBT-Black {T1}{by}{s}{sc} GoudySansITCbyBT-Bold {T1}{bys}{b}{n} GoudySansITCbyBT-BoldItalic {T1}{bys}{b}{it} GoudySansITCbyBT-Medium {T1}{bys}{}{n} GoudySansITCbyBT-MediumItalic {T1}{bys}{}{it} GoudyTextMT {T1}{mgt}{m}{n} GoudyTextMT-Alternative {OT1}{mgt}{m}{n} GoudyTextMT-Dfr {OT1}{mgt}{m}{n} GrammateusSSiBold {T1}{kcx}{b}{n} GrammateusSSiBoldItalic {T1}{kcx}{b}{it} Granjon {T1}{pgj}{m}{n} Granjon-Bold {T1}{pgj}{b}{n} Granjon-Italic {T1}{pgj}{m}{it} Granjon-SC {T1}{pgj}{m}{sc} GrecoBlackSSiBold {T1}{ktm}{b}{n} GrecoBlackSSiBoldItalic {T1}{ktm}{b}{it} GrecoEuropaSSi {T1}{kte}{m}{n} GrecoEuropaSSi-Bold {T1}{kte}{b}{n} GrecoEuropaSSi-BoldItalic {T1}{kte}{b}{it} GrecoEuropaSSi-Italic {T1}{kte}{m}{it} GrecoEuropaSSiBold {T1}{kte}{b}{n} GrecoEuropaSSiBoldItalic {T1}{kte}{b}{it} GrecoEuropaSSiItalic {T1}{kte}{m}{it} GrecoOldStyleSSiBold {OT1}{ktm}{b}{it} GrecoOldStyleSSiBoldSmallCaps {T1}{ktm}{b}{sc} GrecoOldStyleSSiItalicOldStyleFigures {OT1}{ktm}{m}{it} GrecoOldStyleSSiRomanSmallCaps {T1}{ktm}{m}{sc} GrecoRecutSSi {T1}{kns}{m}{n} GrecoRecutSSi-Bold {T1}{kns}{b}{n} GrecoRecutSSi-BoldItalic {T1}{kns}{b}{it} GrecoRecutSSi-Italic {T1}{kns}{m}{it} GrecoRecutSSiBold {T1}{kns}{b}{n} GrecoRecutSSiBoldItalic {T1}{kns}{b}{it} GrecoRecutSSiItalic {T1}{kns}{m}{it} GrecoSSi-Bold {T1}{ktm}{b}{n} GrecoSSi-BoldItalic {T1}{ktm}{b}{it} GrecoSSi-BoldItalicOldStyleFigures {OT1}{ktm}{b}{it} GrecoSSi-BoldSmallCaps {T1}{ktm}{b}{sc} GrecoSSi-Italic {T1}{ktm}{m}{it} GrecoSSi-ItalicOldStyleFigures {OT1}{ktm}{m}{it} GrecoSSi-Roman {T1}{ktm}{m}{n} GrecoSSi-RomanSmallCaps {T1}{ktm}{m}{sc} GrecoSSi-SemiBold {T1}{ktm}{s}{n} GrecoSSi-SemiBoldItalic {T1}{ktm}{s}{it} GrecoSSiItalic {T1}{ktm}{m}{it} GrecoSSiRoman {T1}{ktm}{m}{n} GrecoSSiSemiBold {T1}{ktm}{s}{n} GrecoSSiSemiBoldItalic {T1}{ktm}{s}{it} GrecoTenOldStyleSSiBold {OT1}{ktt}{b}{it} GrecoTenOldStyleSSiBoldOldStyleFigures {OT1}{ktt}{b}{n} GrecoTenOldStyleSSiNormal {OT1}{ktt}{m}{it} GrecoTenOldStyleSSiOldStyleFigures {OT1}{ktt}{m}{n} GrecoTenSSi {T1}{ktt}{m}{n} GrecoTenSSi-Bold {T1}{ktt}{b}{n} GrecoTenSSi-BoldItalic {T1}{ktt}{b}{it} GrecoTenSSi-BoldItalicOldStyleFigures {OT1}{ktt}{b}{it} GrecoTenSSi-BoldOldStyleFigures {OT1}{ktt}{b}{n} GrecoTenSSi-Italic {T1}{ktt}{m}{it} GrecoTenSSi-ItalicOldStyleFigures {OT1}{ktt}{m}{it} GrecoTenSSi-OldStyleFigures {OT1}{ktt}{m}{n} GrecoTenSSiBold {T1}{ktt}{b}{n} GrecoTenSSiBoldItalic {T1}{ktt}{b}{it} GrecoTenSSiItalic {T1}{ktt}{m}{it} GrotesqueMT {T1}{mgq}{m}{n} GrotesqueMT-Bold {T1}{mgq}{b}{n} GrotesqueMT-BoldExtended {T1}{mgq}{bx}{n} GrotesqueMT-Condensed {T1}{mgq}{m}{n} GrotesqueMT-Italic {T1}{mgq}{m}{it} Guardi-Bold {T1}{pgu}{b}{n} Guardi-BoldItalic {T1}{pgu}{b}{it} Guardi-Italic {T1}{pgu}{m}{it} Guardi-Roman {T1}{pgu}{m}{n} Hadriano-Bold {T1}{pha}{b}{n} HandelGothicBT-Regular {T1}{bh0}{m}{n} HeadlineMT-Bold {T1}{mhd}{m}{n} HeliosSSi {T1}{ktj}{m}{n} HeliosSSi-Bold {T1}{ktj}{b}{n} HeliosSSiBold {T1}{ktj}{b}{n} Helvetica {T1}{phv}{m}{n} Helvetica-Bold {T1}{phv}{b}{n} Helvetica-BoldOblique {T1}{phv}{b}{sl} Helvetica-Condensed {T1}{phv}{m}{n} Helvetica-Condensed-Bold {T1}{phv}{b}{n} Helvetica-Condensed-BoldObl {T1}{phv}{b}{sl} Helvetica-Condensed-Oblique {T1}{phv}{m}{sl} Helvetica-Oblique {T1}{phv}{m}{sl} HelveticaInserat-Roman {T1}{phi}{m}{n} HelveticaNeue-Bold {T1}{phn}{b}{n} HelveticaNeue-BoldCond {T1}{phn}{b}{n} HelveticaNeue-BoldCondObl {T1}{phn}{b}{sl} HelveticaNeue-BoldExt {T1}{phn}{bx}{n} HelveticaNeue-BoldExtObl {T1}{phn}{bx}{sl} HelveticaNeue-BoldItalic {T1}{phn}{b}{it} HelveticaNeue-Condensed {T1}{phn}{m}{n} HelveticaNeue-CondensedObl {T1}{phn}{m}{sl} HelveticaNeue-Italic {T1}{phn}{m}{it} HelveticaNeue-Medium {T1}{phn}{}{n} HelveticaNeue-MediumCond {T1}{phn}{c}{n} HelveticaNeue-MediumCondObl {T1}{phn}{c}{sl} HelveticaNeue-MediumExt {T1}{phn}{}{n} HelveticaNeue-MediumExtObl {T1}{phn}{}{sl} HelveticaNeue-MediumItalic {T1}{phn}{}{it} HelveticaNeue-Roman {T1}{phn}{m}{n} HelveticaRounded-Black {T1}{ph}{m}{sc} HelveticaRounded-Bold {T1}{phr}{b}{n} HelveticaRounded-BoldCond {T1}{phr}{b}{n} HelveticaRounded-BoldCondObl {T1}{phr}{b}{sl} HelveticaRounded-BoldObl {T1}{phr}{b}{sl} Herculanum {T1}{phc}{m}{n} Highlander-Bold {T1}{phh}{b}{n} Highlander-BoldItalic {T1}{phh}{b}{it} Highlander-Medium {T1}{phh}{}{n} Highlander-MediumItalic {T1}{phh}{}{it} Hiroshige-Bold {T1}{phg}{b}{n} Hiroshige-BoldItalic {T1}{phg}{b}{it} Hiroshige-Medium {T1}{phg}{}{n} Hiroshige-MediumItalic {T1}{phg}{}{it} HoboBT-Regular {T1}{bhb}{m}{n} HoeflerText {T1}{eht}{m}{n} HorleyOldStyleMT {T1}{mho}{m}{n} HorleyOldStyleMT-Bold {T1}{mho}{b}{n} HorleyOldStyleMT-BoldItalic {T1}{mho}{b}{it} HorleyOldStyleMT-Italic {T1}{mho}{m}{it} HorleyOldStyleMT-SbItalic {T1}{mho}{s}{it} HorleyOldStyleMT-SemiBold {T1}{mho}{s}{n} HubbubSSi {T1}{kjp}{m}{n} HubbubSSi-Bold {T1}{kjp}{b}{n} HubbubSSiBold {T1}{kjp}{b}{n} Humanist521BT-Bold {T1}{bgs}{b}{n} Humanist521BT-BoldCondensed {T1}{bgs}{b}{n} Humanist521BT-BoldItalic {T1}{bgs}{b}{it} Humanist521BT-Italic {T1}{bgs}{m}{it} Humanist521BT-Roman {T1}{bgs}{m}{n} Humanist521BT-RomanCondensed {T1}{bgs}{m}{n} Humanist531BT-BoldA {T1}{bsx}{b}{n} Humanist531BT-RomanA {T1}{bsx}{m}{n} Humanist777BT-BlackB {T1}{bf}{m}{sc} Humanist777BT-BoldB {T1}{bfr}{b}{n} Humanist777BT-BoldItalicB {T1}{bfr}{b}{it} Humanist777BT-ItalicB {T1}{bfr}{m}{it} Humanist777BT-RomanB {T1}{bfr}{m}{n} Humanist970BT-BoldC {T1}{ba9}{b}{n} Humanist970BT-RomanC {T1}{ba9}{m}{n} HumanistSlabserif712BT-Bold {T1}{bef}{b}{n} HumanistSlabserif712BT-Italic {T1}{bef}{m}{it} HumanistSlabserif712BT-Roman {T1}{bef}{m}{n} HuxleyVerticalBT-Regular {T1}{bhx}{m}{n} Imago-Medium {T1}{pim}{}{n} Imago-MediumItalic {T1}{pim}{}{it} Impact {T1}{pic}{m}{n} ImpactMT {T1}{mic}{m}{n} ImperialBT-Bold {T1}{bi3}{b}{n} ImperialBT-Italic {T1}{bi3}{m}{it} ImperialBT-Roman {T1}{bi3}{m}{n} ImpressBT-Regular {T1}{bi1}{m}{n} Impressum-Bold {T1}{pip}{b}{n} Impressum-Italic {T1}{pib}{m}{it} Impressum-Roman {T1}{pip}{m}{n} ImprintExpertMT {T1}{mii}{m}{n} ImprintExpertMT-Bold {T1}{mii}{b}{n} ImprintExpertMT-BoldItalic {T1}{mii}{b}{it} ImprintExpertMT-Italic {T1}{mii}{m}{it} ImprintMT {T1}{mii}{m}{n} ImprintMT-Bold {T1}{mii}{b}{n} ImprintMT-BoldItalic {T1}{mii}{b}{it} ImprintMT-Italic {T1}{mii}{m}{it} ImpulsBT-Regular {T1}{bi2}{m}{n} Incised901BT-Bold {T1}{bao}{b}{n} Incised901BT-BoldCondensed {T1}{bao}{b}{n} Incised901BT-Italic {T1}{bao}{m}{it} Incised901BT-Roman {T1}{bao}{m}{n} Industria-Solid {T1}{pin}{m}{n} Industrial736BT-Italic {T1}{bto}{m}{it} Industrial736BT-Roman {T1}{bto}{m}{n} InflexMT {T1}{mif}{m}{n} InflexMT-Bold {T1}{mif}{b}{n} Informal011BT-Roman {T1}{bnl}{m}{n} InformaticsSSi {T1}{koc}{m}{n} InformaticsSSi-Bold {T1}{koc}{b}{n} InformaticsSSi-BoldItalic {T1}{koc}{b}{it} InformaticsSSi-Italic {T1}{koc}{m}{it} InformaticsSSiBold {T1}{koc}{b}{n} InformaticsSSiBoldItalic {T1}{koc}{b}{it} InformaticsSSiItalic {T1}{koc}{m}{it} IngenioSSi {T1}{kmx}{m}{n} InsightSSi {T1}{klc}{m}{n} InsightSSi-Bold {T1}{klc}{b}{n} InsightSSi-BoldItalic {T1}{klc}{b}{it} InsightSSi-Italic {T1}{klc}{m}{it} InsightSSiBold {T1}{klc}{b}{n} InsightSSiBoldItalic {T1}{klc}{b}{it} InsightSSiItalic {T1}{klc}{m}{it} InsightSansSSi {T1}{klcr}{s}{n} InsightSansSSi-Bold {T1}{klcb}{s}{n} InsightSansSSi-BoldItalic {T1}{klcb}{s}{it} InsightSansSSi-Italic {T1}{klcr}{s}{it} InsightSansSSiBold {T1}{klcb}{s}{n} InsightSansSSiBoldItalic {T1}{klcb}{s}{it} InsightSansSSiItalic {T1}{klcr}{s}{it} Insignia {T1}{pia}{m}{n} InstallationSSi {T1}{kgp}{m}{n} InstallationSSiBold {T1}{kgp}{b}{n} InstallationSSiBoldItalic {T1}{kgp}{b}{sl} InstallationSSiItalic {T1}{kgp}{m}{sl} InterfaceSSi {T1}{kop}{m}{n} InterfaceSSiBold {T1}{kop}{b}{n} InterfaceSSiBoldItalic {T1}{kop}{b}{sl} InterfaceSSiItalic {T1}{kop}{m}{sl} IntroitSSi {T1}{kcd}{m}{n} IntroitSSi-Bold {T1}{kcd}{b}{n} IntroitSSiBold {T1}{kcd}{b}{n} IntuitionSSi {T1}{kkr}{m}{n} IntuitionSSiBold {T1}{kkr}{b}{n} IntuitionSSiBoldItalic {T1}{kkr}{b}{it} IntuitionSSiItalic {T1}{kkr}{m}{it} IonicMT {T1}{mio}{m}{n} IonicMT-Bold {T1}{mio}{b}{n} IonicMT-Italic {T1}{mio}{m}{it} IowanOldStyleBT-Bold {T1}{biy}{b}{n} IowanOldStyleBT-BoldItalic {T1}{biy}{b}{it} IowanOldStyleBT-Italic {T1}{biy}{m}{it} IowanOldStyleBT-Roman {T1}{biy}{m}{n} Ironwood {T1}{piw}{m}{n} Isabella {T1}{piz}{m}{n} Isadora-Bold {T1}{pid}{b}{n} Isadora-Regular {T1}{pid}{m}{n} Italia-Bold {T1}{pit}{b}{n} Italia-Medium {T1}{pit}{}{n} ItalianOldStyleMT {T1}{mis}{m}{n} ItalianOldStyleMT-Bold {T1}{mis}{b}{n} ItalianOldStyleMT-BoldItalic {T1}{mis}{b}{it} ItalianOldStyleMT-Italic {T1}{mis}{m}{it} ItcEras-Bold {T1}{ier}{b}{n} ItcEras-Medium {T1}{ier}{}{n} ItcKabel-Bold {T1}{ikb}{b}{n} ItcKabel-Medium {T1}{ikb}{}{n} ItcSymbol-Bold {T1}{isy}{b}{n} ItcSymbol-BoldItalic {T1}{isy}{b}{it} ItcSymbol-Medium {T1}{isy}{}{n} ItcSymbol-MediumItalic {T1}{isy}{}{it} JaakSSiBold {T1}{kmp}{b}{n} JaakSSiBoldItalic {T1}{kmp}{b}{it} JaakSSiItalic {T1}{kmp}{}{it} JaakSSiMedium {T1}{kmp}{}{n} JansonExpertMT {T1}{mjn}{m}{n} JansonExpertMT-Bold {T1}{mjn}{b}{n} JansonExpertMT-BoldItalic {T1}{mjn}{b}{it} JansonExpertMT-Italic {T1}{mjn}{m}{it} JansonMT {T1}{mjn}{m}{n} JansonMT-Bold {T1}{mjn}{b}{n} JansonMT-BoldItalic {T1}{mjn}{b}{it} JansonMT-Italic {T1}{mjn}{m}{it} JansonOldStyleSSiBold {OT1}{kjn}{b}{it} JansonOldStyleSSiBoldOldstyleFigures {OT1}{kjn}{b}{n} JansonOldStyleSSiItalicOldstyleFigures {OT1}{kjn}{m}{it} JansonOldStyleSSiSmallCaps {T1}{kjn}{m}{sc} JansonSSi {T1}{kjn}{m}{n} JansonSSi-Bold {T1}{kjn}{b}{n} JansonSSi-BoldItalic {T1}{kjn}{b}{it} JansonSSi-BoldItalicOldStyleFigures {OT1}{kjn}{b}{it} JansonSSi-BoldOldStyleFigures {OT1}{kjn}{b}{n} JansonSSi-Italic {T1}{kjn}{m}{it} JansonSSi-ItalicOldStyleFigures {OT1}{kjn}{m}{it} JansonSSi-SmallCaps {T1}{kjn}{m}{sc} JansonSSiBold {T1}{kjn}{b}{n} JansonSSiBoldItalic {T1}{kjn}{b}{it} JansonSSiItalic {T1}{kjn}{m}{it} JansonText-Bold {T1}{pjn}{b}{n} JansonText-BoldItalic {T1}{pjn}{b}{it} JansonText-Italic {T1}{pjn}{m}{it} JansonText-Roman {T1}{pjn}{m}{n} JansonText-RomanSC {T1}{pjn}{m}{sc} JoannaMT {T1}{mjo}{m}{n} JoannaMT-Bold {T1}{mjo}{b}{n} JoannaMT-BoldExpert {T1}{mjo}{b}{n} JoannaMT-BoldItalic {T1}{mjo}{b}{it} JoannaMT-BoldItalicExpert {T1}{mjo}{b}{it} JoannaMT-Expert {T1}{mjo}{m}{n} JoannaMT-Italic {T1}{mjo}{m}{it} JoannaMT-ItalicExpert {T1}{mjo}{m}{it} JoannaMT-SCOSF {T1}{mjo}{m}{sc} JoannaMT-SemiBold {T1}{mjo}{s}{n} JoannaMT-SemiBoldExpert {T1}{mjo}{s}{n} JoannaMT-SemiBoldItaExpert {T1}{mjo}{s}{it} JoannaMT-SemiBoldItalic {T1}{mjo}{s}{it} JoannaMT-SemiBoldSCOSF {T1}{mjo}{s}{sc} Juniper {T1}{pjp}{m}{n} Kabel-Black {T1}{pk}{b}{sc} KabelITCbyBT-Medium {T1}{bkb}{}{n} Kaufmann {T1}{pku}{m}{n} Kaufmann-Bold {T1}{pku}{b}{n} KaufmannBT-Bold {T1}{bku}{b}{n} KaufmannBT-Regular {T1}{bku}{m}{n} KernelAlternateSSiAlternate {OT1}{kia}{m}{n} KernelSSi {T1}{kia}{m}{n} KernelSSi-Alternate {OT1}{kia}{m}{n} KeyboardAlternateSSiBoldAlternate {OT1}{kat}{b}{n} KeyboardAlternateSSiMediumAlternate {OT1}{kat}{}{n} KeyboardCondensedAltSSiBoldCondensedAlternate {OT1}{kat}{b}{n} KeyboardCondensedAltSSiCondensedAlternate {OT1}{kat}{m}{n} KeyboardCondensedSSiBoldCondensed {T1}{kat}{b}{n} KeyboardCondensedSSiCondensed {T1}{kat}{m}{n} KeyboardEliteSSi {T1}{kpe}{m}{n} KeyboardEliteSSi-Bold {T1}{kpe}{b}{n} KeyboardEliteSSi-BoldItalic {T1}{kpe}{b}{sl} KeyboardEliteSSi-Italic {T1}{kpe}{m}{sl} KeyboardEliteSSiBold {T1}{kpe}{b}{n} KeyboardEliteSSiBoldItalic {T1}{kpe}{b}{sl} KeyboardEliteSSiItalic {T1}{kpe}{m}{sl} KeyboardSSi-Alternate {OT1}{kat}{}{n} KeyboardSSi-BoldAlternate {OT1}{kat}{b}{n} KeyboardSSi-BoldCondensed {T1}{kat}{b}{n} KeyboardSSi-BoldCondensedAlternate {OT1}{kat}{b}{n} KeyboardSSi-Condensed {T1}{kat}{m}{n} KeyboardSSi-CondensedAlternate {OT1}{kat}{m}{n} KeyboardSSiBold {T1}{kat}{b}{n} KeyboardSSiMedium {T1}{kat}{}{n} Kigali-Italic {T1}{pkx}{m}{it} Kigali-Roman {T1}{pkx}{m}{n} Kigali-Sx {T1}{pkx}{s}{n} Kigali-SxItalic {T1}{pkx}{s}{it} KinoMT {T1}{mkn}{m}{n} KisBT-Italic {T1}{bjn}{m}{it} KisBT-Roman {T1}{bjn}{m}{n} KlangMT {T1}{mkl}{m}{n} KoloLP-Alternates {OT1}{pkw}{m}{n} KoloLP-Regular {T1}{pkw}{m}{n} Kompakt {T1}{pc7}{b}{n} Korinna-Bold {T1}{pkr}{b}{n} Korinna-KursivBold {T1}{pkr}{b}{it} Korinna-KursivRegular {T1}{pkr}{m}{n} Korinna-Regular {T1}{pkr}{m}{it} KorinnaITCbyBT-Bold {T1}{bkr}{b}{n} KorinnaITCbyBT-KursivBold {T1}{bkr}{b}{it} KorinnaITCbyBT-KursivRegular {T1}{bkr}{m}{it} KorinnaITCbyBT-Regular {T1}{bkr}{m}{n} KudosBlackCondensedSSiBoldCondensed {T1}{kfu}{b}{n} KudosBlackCondensedSSiBoldCondensedItalic {T1}{kfu}{b}{sl} KudosCondensedSSiCondensed {T1}{kfu}{m}{n} KudosCondensedSSiCondensedItalic {T1}{kfu}{m}{sl} KudosSSi {T1}{kfu}{m}{n} KudosSSiBold {T1}{kfu}{b}{n} KudosSSiBoldItalic {T1}{kfu}{b}{sl} KudosSSiItalic {T1}{kfu}{m}{sl} Kuenstler480BT-Bold {T1}{btv}{b}{n} Kuenstler480BT-BoldItalic {T1}{btv}{b}{it} Kuenstler480BT-Italic {T1}{btv}{m}{it} Kuenstler480BT-Roman {T1}{btv}{m}{n} KuriakosBlackSSiBold {T1}{kbb}{b}{n} KuriakosBlackSSiBoldItalic {T1}{kbb}{b}{it} KuriakosSSi {T1}{kbb}{m}{n} KuriakosSSi-Bold {T1}{kbb}{b}{n} KuriakosSSi-BoldItalic {T1}{kbb}{b}{it} KuriakosSSi-Italic {T1}{kbb}{m}{it} KuriakosSSi-SemiBold {T1}{kbb}{s}{n} KuriakosSSi-SemiBoldItalic {T1}{kbb}{s}{it} KuriakosSSiItalic {T1}{kbb}{m}{it} KuriakosSSiSemiBold {T1}{kbb}{s}{n} KuriakosSSiSemiBoldItalic {T1}{kbb}{s}{it} Lapidary333BT-Bold {T1}{bpp}{b}{n} Lapidary333BT-BoldItalic {T1}{bpp}{b}{it} Lapidary333BT-Italic {T1}{bpp}{m}{it} Lapidary333BT-Roman {T1}{bpp}{m}{n} Latin725BT-Bold {T1}{bmd}{b}{n} Latin725BT-BoldItalic {T1}{bmd}{b}{it} Latin725BT-Italic {T1}{bmd}{m}{it} Latin725BT-Medium {T1}{bmd}{}{n} Latin725BT-MediumItalic {T1}{bmd}{}{it} Latin725BT-Roman {T1}{bmd}{m}{n} LatinCondensedMT {T1}{mli}{m}{n} LatinExtraCondensedBT-Regular {T1}{bli}{m}{n} LatinMT-Condensed {T1}{mli}{m}{n} LayoutCondensedSSiBoldCondensed {T1}{kfo}{b}{n} LayoutSSi {T1}{kfo}{}{n} LayoutSSi-Bold {T1}{kfo}{b}{n} LayoutSSi-BoldCondensed {T1}{kfo}{b}{n} LayoutSSiBold {T1}{kfo}{b}{n} Leawood-Bold {T1}{plw}{b}{n} Leawood-BoldItalic {T1}{plw}{b}{it} Leawood-Medium {T1}{plw}{}{n} Leawood-MediumItalic {T1}{plw}{}{it} LegacySans-Bold {T1}{pleb}{s}{n} LegacySans-BoldItalic {T1}{plebi}{s}{n} LegacySans-Book {T1}{plek}{s}{n} LegacySans-BookItalic {T1}{pleki}{s}{n} LegacySans-Medium {T1}{plem}{s}{n} LegacySans-MediumItalic {T1}{plemi}{s}{n} LegacySans-Ultra {T1}{pleu}{s}{n} LegacySerif-Bold {T1}{ple}{b}{n} LegacySerif-BoldItalic {T1}{ple}{b}{it} LegacySerif-Medium {T1}{ple}{}{n} LegacySerif-MediumItalic {T1}{ple}{}{it} LetterGothic {T1}{plg}{m}{n} LetterGothic-Bold {T1}{plg}{b}{n} LetterGothic-BoldSlanted {T1}{plg}{b}{sl} LetterGothic-Slanted {T1}{plg}{m}{sl} LetterGothic12PitchBT-Bold {T1}{blg}{b}{n} LetterGothic12PitchBT-BoldItal {T1}{blg}{b}{it} LetterGothic12PitchBT-Italic {T1}{blg}{m}{it} LetterGothic12PitchBT-Roman {T1}{blg}{m}{n} LetterGothicMT {T1}{mlg}{m}{n} LetterGothicMT-Bold {T1}{mlg}{b}{n} LetterGothicMT-BoldOblique {T1}{mlg}{b}{sl} LetterGothicMT-Oblique {T1}{mlg}{m}{sl} LibertyBT-Regular {T1}{bl1}{m}{n} LibraBT-Regular {T1}{bl2}{m}{n} LibreSansSerifBlackSSiExtraBold {T1}{krox}{s}{n} LibreSansSerifLightSSiLight {T1}{krol}{s}{n} LibreSansSerifLightSSiLightItalic {T1}{kroli}{s}{n} LibreSansSerifSSi {T1}{kror}{s}{n} LibreSansSerifSSi-Bold {T1}{krob}{s}{n} LibreSansSerifSSi-ExtraBold {T1}{krox}{s}{n} LibreSansSerifSSi-Italic {T1}{krori}{s}{n} LibreSansSerifSSi-Light {T1}{krol}{s}{n} LibreSansSerifSSi-LightItalic {T1}{kroli}{s}{n} LibreSansSerifSSiBold {T1}{krob}{s}{n} LibreSansSerifSSiItalic {T1}{krori}{s}{n} LibreSemiSansBlackSSiExtraBold {T1}{kr1x}{s}{n} LibreSemiSansLightSSiLight {T1}{kr1l}{s}{n} LibreSemiSansLightSSiLightItalic {T1}{kr1li}{s}{n} LibreSemiSansSSi {T1}{kr1r}{s}{n} LibreSemiSansSSi-Bold {T1}{kr1b}{s}{n} LibreSemiSansSSi-ExtraBold {T1}{kr1x}{s}{n} LibreSemiSansSSi-Italic {T1}{kr1ri}{s}{n} LibreSemiSansSSi-Light {T1}{kr1l}{s}{n} LibreSemiSansSSi-LightItalic {T1}{kr1li}{s}{n} LibreSemiSansSSiBold {T1}{kr1b}{s}{n} LibreSemiSansSSiItalic {T1}{kr1ri}{s}{n} LibreSemiSerifSSi {T1}{kr1}{m}{n} LibreSemiSerifSSi-Bold {T1}{kr1}{b}{n} LibreSemiSerifSSiBold {T1}{kr1}{b}{n} LibreSerifSSi {T1}{kro}{m}{n} LibreSerifSSi-Bold {T1}{kro}{b}{n} LibreSerifSSi-Italic {T1}{kro}{m}{it} LibreSerifSSiBold {T1}{kro}{b}{n} LibreSerifSSiItalic {T1}{kro}{m}{it} Life-Bold {T1}{plf}{b}{n} Life-Italic {T1}{plf}{m}{it} Life-Roman {T1}{plf}{m}{n} LifeBT-Bold {T1}{blf}{b}{n} LifeBT-BoldItalic {T1}{blf}{b}{it} LifeBT-Italic {T1}{blf}{m}{it} LifeBT-Roman {T1}{blf}{m}{n} LinoLetter-Bold {T1}{pll}{b}{n} LinoLetter-BoldItalic {T1}{pll}{b}{it} LinoLetter-BoldSC {T1}{pll}{b}{sc} LinoLetter-Italic {T1}{pll}{m}{it} LinoLetter-ItalicOsF {T1}{pll}{m}{it} LinoLetter-Medium {T1}{pll}{}{n} LinoLetter-MediumItalic {T1}{pll}{}{it} LinoLetter-MediumSC {T1}{pll}{}{sc} LinoLetter-Roman {T1}{pll}{m}{n} LinoLetter-RomanSC {T1}{pll}{m}{sc} Lithos-Bold {T1}{plo}{b}{n} Lithos-Regular {T1}{plo}{m}{n} LockupSSi {T1}{kon}{m}{n} LockupSSi-Bold {T1}{kon}{b}{n} LockupSSi-Italic {T1}{kon}{m}{it} LockupSSiBold {T1}{kon}{b}{n} LockupSSiItalic {T1}{kon}{m}{it} LubalinGraphITCbyBT-Bold {T1}{blb}{b}{n} LubalinGraphITCbyBT-Medium {T1}{blb}{}{n} LuciaBT-Regular {T1}{bl3}{m}{n} LucianBT-Bold {T1}{bl4}{b}{n} LucianBT-Roman {T1}{bl4}{m}{n} Lucida {T1}{plc}{m}{n} Lucida-Bold {T1}{plc}{b}{n} Lucida-BoldItalic {T1}{plc}{b}{it} Lucida-Italic {T1}{plc}{m}{it} LucidaBright {T1}{hlh}{m}{n} LucidaBright-Demi {T1}{hlh}{b}{n} LucidaBright-DemiItalic {T1}{hlh}{b}{it} LucidaBright-Italic {T1}{hlh}{m}{it} LucidaBright-Oblique {T1}{hlh}{m}{sl} LucidaBrightSmallcaps {T1}{hlh}{m}{sc} LucidaBrightSmallcaps-Demi {T1}{hlh}{b}{sc} LucidaFax {T1}{hlx}{m}{n} LucidaFax-Demi {T1}{hlx}{b}{n} LucidaFax-DemiItalic {T1}{hlx}{b}{it} LucidaFax-Italic {T1}{hlx}{m}{it} LucidaSans {T1}{hls}{m}{n} LucidaSans {T1}{pls}{m}{n} LucidaSans-Bold {T1}{pls}{b}{n} LucidaSans-BoldItalic {T1}{pls}{b}{it} LucidaSans-Demi {T1}{hls}{b}{n} LucidaSans-DemiItalic {T1}{hls}{b}{it} LucidaSans-Italic {T1}{hls}{m}{it} LucidaSans-Italic {T1}{pls}{m}{it} LydianBT-Bold {T1}{bly}{b}{n} LydianBT-BoldItalic {T1}{bly}{b}{it} LydianBT-Italic {T1}{bly}{m}{it} LydianBT-Roman {T1}{bly}{m}{n} LydianMT {T1}{mly}{m}{n} MacedonSSi {T1}{kom}{m}{n} Machine {T1}{pmh}{m}{n} Machine-Bold {T1}{pmh}{b}{n} MachineITCbyBT-Regular {T1}{bmh}{m}{n} MacroSSi {T1}{kng}{m}{n} MacroSSiBold {T1}{kng}{b}{n} MacroSSiBoldItalic {T1}{kng}{b}{sl} MacroSSiItalic {T1}{kng}{m}{sl} Madrone {T1}{pmr}{m}{n} ManualSSi {T1}{ktk}{m}{n} ManualSSiBold {T1}{ktk}{b}{n} ManualSSiBoldItalic {T1}{ktk}{b}{sl} ManualSSiItalic {T1}{ktk}{m}{sl} Marigold {T1}{pmg}{m}{n} MarkerBoardDisplaySSi {T1}{kcz}{m}{n} MatiqueSSi {T1}{kci}{m}{n} MatiqueSSi-Bold {T1}{kci}{b}{n} MatiqueSSiBold {T1}{kci}{b}{n} MaturaMT {T1}{mm7}{m}{n} Maximus {T1}{pmx}{m}{n} Melior {T1}{pml}{m}{n} Melior-Bold {T1}{pml}{b}{n} Melior-BoldItalic {T1}{pml}{b}{it} Melior-Italic {T1}{pml}{m}{it} MemoScriptSSi {T1}{khm}{b}{n} Memphis-Bold {T1}{pmp}{b}{n} Memphis-BoldItalic {T1}{pmp}{b}{it} Memphis-Medium {T1}{pmp}{}{n} Memphis-MediumItalic {T1}{pmp}{}{it} Meridien-Bold {T1}{pmd}{b}{n} Meridien-BoldItalic {T1}{pmd}{b}{it} Meridien-Italic {T1}{pmd}{m}{it} Meridien-Medium {T1}{pmd}{}{n} Meridien-MediumItalic {T1}{pmd}{}{it} Meridien-Roman {T1}{pmd}{m}{n} MesouranSansBlackSSiBold {T1}{kstb}{s}{n} MesouranSansBlackSSiBoldItalic {T1}{kstbi}{s}{n} MesouranSansSSi {T1}{kstr}{s}{n} MesouranSansSSi-Bold {T1}{kstb}{s}{n} MesouranSansSSi-BoldItalic {T1}{kstbi}{s}{n} MesouranSansSSi-Italic {T1}{kstri}{s}{n} MesouranSansSSi-SemiBold {T1}{ksts}{s}{n} MesouranSansSSi-SemiBoldItalic {T1}{kstsi}{s}{n} MesouranSansSSiItalic {T1}{kstri}{s}{n} MesouranSansSSiSemiBold {T1}{ksts}{s}{n} MesouranSansSSiSemiBoldItalic {T1}{kstsi}{s}{n} MesouranSerifBlackSSiBold {T1}{kst}{s}{it} MesouranSerifBlackSSiBoldItalic {T1}{kst}{b}{it} MesouranSerifSSi {T1}{kst}{m}{n} MesouranSerifSSi-Bold {T1}{kst}{b}{n} MesouranSerifSSi-BoldItalic {T1}{kst}{b}{it} MesouranSerifSSi-Italic {T1}{kst}{m}{it} MesouranSerifSSi-SemiBold {T1}{kst}{s}{n} MesouranSerifSSi-SemiBoldItalic {T1}{kst}{s}{it} MesouranSerifSSiItalic {T1}{kst}{m}{it} MesouranSerifSSiSemiBold {T1}{kst}{s}{n} MesouranSerifSSiSemiBoldItalic {T1}{kst}{b}{n} Mesquite {T1}{pmq}{m}{n} MetronSSi {T1}{ksf}{m}{n} MetronSSi-Bold {T1}{ksf}{b}{n} MetronSSi-Italic {T1}{ksf}{m}{it} MetronSSiBold {T1}{ksf}{b}{n} MetronSSiItalic {T1}{ksf}{m}{it} MicrofineSSi {T1}{klg}{m}{n} MicrofineSSi-Bold {T1}{klg}{b}{n} MicrofineSSi-BoldItalic {T1}{klg}{b}{sl} MicrofineSSi-Italic {T1}{klg}{m}{sl} MicrofineSSiBold {T1}{klg}{b}{n} MicrofineSSiBoldItalic {T1}{klg}{b}{sl} MicrofineSSiItalic {T1}{klg}{m}{sl} MicrofineSSiNormal {T1}{klg}{m}{n} MinimaSSi {T1}{kes}{m}{n} MinimaSSi-Bold {T1}{kes}{b}{n} MinimaSSi-BoldExpanded {T1}{kes}{bx}{n} MinimaSSi-BoldItalic {T1}{kes}{b}{sl} MinimaSSi-Expanded {T1}{kes}{m}{n} MinimaSSi-ExpandedItalic {T1}{kes}{m}{sl} MinimaSSi-Italic {T1}{kes}{m}{sl} Minion-Bold {T1}{pmn}{b}{n} Minion-BoldCondensed {T1}{pmn}{b}{n} Minion-BoldCondensedItalic {T1}{pmn}{b}{it} Minion-BoldItalic {T1}{pmn}{b}{it} Minion-Condensed {T1}{pmn}{m}{n} Minion-CondensedItalic {T1}{pmn}{m}{it} Minion-Italic {T1}{pmn}{m}{it} Minion-Regular {T1}{pmn}{m}{n} Minion-RegularSC {T1}{pmn}{m}{sc} Minion-Semibold {T1}{pmn}{s}{n} Minion-SemiboldItalic {T1}{pmn}{s}{it} Minion-SemiboldSC {T1}{pmn}{s}{sc} MinionExp-Bold {T1}{pmn}{b}{n} MinionExp-BoldItalic {T1}{pmn}{b}{it} MinionExp-Italic {T1}{pmn}{m}{it} MinionExp-Regular {T1}{pmn}{m}{n} MinionExp-Semibold {T1}{pmn}{s}{n} MinionExp-SemiboldItalic {T1}{pmn}{s}{it} Minister-Bold {T1}{pmt}{b}{n} Minister-BoldItalic {T1}{pmt}{b}{it} MiraraeBT-Bold {T1}{bm3}{b}{n} MiraraeBT-Roman {T1}{bm3}{m}{n} MissiveSSi {T1}{kws}{m}{n} MissiveSSi-Bold {T1}{kws}{b}{n} MissiveSSi-Italic {T1}{kws}{m}{it} MissiveSSiBold {T1}{kws}{b}{n} MissiveSSiItalic {T1}{kws}{m}{it} MisterEarlBT-Regular {T1}{bm4}{m}{n} Modern20BT-ItalicB {T1}{bmo}{m}{it} Modern20BT-RomanB {T1}{bmo}{m}{n} Modern735BT-RomanA {T1}{bbp}{m}{n} ModernMT-Bold {T1}{mmo}{b}{n} ModernMT-BoldItalic {T1}{mmo}{b}{it} ModernMT-Condensed {T1}{mmo}{m}{n} ModernMT-CondensedItalic {T1}{mmo}{m}{it} ModernMT-Extended {T1}{mmo}{m}{n} ModernMT-ExtendedItalic {T1}{mmo}{m}{it} Mojo {T1}{pmj}{m}{n} Monaco {T1}{emc}{m}{n} MonitorSSi {T1}{kb7}{m}{n} MonitorSSi-Bold {T1}{kb7}{b}{n} MonitorSSi-BoldItalic {T1}{kb7}{b}{it} MonitorSSi-Italic {T1}{kb7}{m}{it} MonitorSSiBold {T1}{kb7}{b}{n} MonitorSSiBoldItalic {T1}{kb7}{b}{it} MonitorSSiItalic {T1}{kb7}{m}{it} MonitorSSiNormal {T1}{kb7}{m}{n} MonologueCapsSSiBoldSmallCaps {T1}{kil}{b}{sc} MonologueCapsSSiSmallCaps {T1}{kil}{m}{sc} MonologueSSi {T1}{kil}{m}{n} MonologueSSi-Bold {T1}{kil}{b}{n} MonologueSSi-BoldItalic {T1}{kil}{b}{it} MonologueSSi-BoldSmallCaps {T1}{kil}{b}{sc} MonologueSSi-Italic {T1}{kil}{m}{it} MonologueSSi-SmallCaps {T1}{kil}{m}{sc} MonologueSSiBold {T1}{kil}{b}{n} MonologueSSiBoldItalic {T1}{kil}{b}{it} MonologueSSiItalic {T1}{kil}{m}{it} MonotypeBroadway {T1}{mbw}{m}{n} MonotypeCorsiva {T1}{mzc}{}{it} MurrayHillBT-Bold {T1}{bm5}{b}{n} MusterSSi {T1}{kfq}{m}{n} MusterSSiBold {T1}{kfq}{b}{n} Myriad-Bold {T1}{pmy}{b}{n} Myriad-BoldItalic {T1}{pmy}{b}{it} Myriad-CnBold {T1}{pmy}{b}{n} Myriad-CnBoldItalic {T1}{pmy}{b}{it} Myriad-CnItalic {T1}{pmy}{m}{it} Myriad-CnSemibold {T1}{pmy}{s}{n} Myriad-CnSemiboldItalic {T1}{pmy}{s}{it} Myriad-Condensed {T1}{pmy}{m}{n} Myriad-Italic {T1}{pmy}{m}{it} Myriad-Roman {T1}{pmy}{m}{n} NeographikMT {T1}{mnk}{m}{n} NeueHammerUnziale-One {T1}{pnw1}{m}{n} NeueHammerUnziale-OneAlt {OT1}{pnw1}{m}{n} NeueHammerUnziale-Two {T1}{pnw2}{m}{n} NeueHammerUnziale-TwoAlt {OT1}{pnw2}{m}{n} Neuland {T1}{pnl}{b}{n} NewAster {T1}{pna}{m}{n} NewAster-Bold {T1}{pna}{b}{n} NewAster-BoldItalic {T1}{pna}{b}{it} NewAster-Italic {T1}{pna}{m}{it} NewAster-SemiBold {T1}{pna}{s}{n} NewAster-SemiBoldItalic {T1}{pna}{s}{it} NewBaskerville-Bold {T1}{pnb}{b}{n} NewBaskerville-Bold-DTC {T1}{dnb}{b}{n} NewBaskerville-BoldItalic {T1}{pnb}{b}{it} NewBaskerville-BoldItalic-DTC {T1}{dnb}{b}{it} NewBaskerville-Italic {T1}{pnb}{m}{it} NewBaskerville-Roman {T1}{pnb}{m}{n} NewBaskerville-Roman-DTC {T1}{dnb}{m}{n} NewBaskerville-RomanItalic-DTC {T1}{dnb}{m}{it} NewBaskerville-SC {T1}{pnb}{m}{sc} NewBaskervilleITCbyBT-Bold {T1}{bnb}{b}{n} NewBaskervilleITCbyBT-BoldItal {T1}{bnb}{b}{it} NewBaskervilleITCbyBT-Italic {T1}{bnb}{m}{it} NewBaskervilleITCbyBT-Roman {T1}{bnb}{m}{n} NewCaledonia {T1}{pnd}{m}{n} NewCaledonia-Bold {T1}{pnd}{b}{n} NewCaledonia-BoldItalic {T1}{pnd}{b}{it} NewCaledonia-BoldSC {T1}{pnd}{b}{sc} NewCaledonia-Italic {T1}{pnd}{m}{it} NewCaledonia-SC {T1}{pnd}{m}{sc} NewCaledonia-SemiBold {T1}{pnd}{s}{n} NewCaledonia-SemiBoldItalic {T1}{pnd}{s}{it} NewCenturySchlbk-Bold {T1}{pnc}{b}{n} NewCenturySchlbk-BoldItalic {T1}{pnc}{b}{it} NewCenturySchlbk-Italic {T1}{pnc}{m}{it} NewCenturySchlbk-Roman {T1}{pnc}{m}{n} NewClarendonMT {T1}{mnn}{m}{n} NewClarendonMT-Bold {T1}{mnn}{b}{n} News701BT-BoldA {T1}{bio}{b}{n} News701BT-ItalicA {T1}{bio}{m}{it} News701BT-RomanA {T1}{bio}{m}{n} News702BT-Bold {T1}{bex}{b}{n} News702BT-BoldItalic {T1}{bex}{b}{it} News702BT-Italic {T1}{bex}{m}{it} News702BT-Roman {T1}{bex}{m}{n} News705BT-BoldB {T1}{bon}{b}{n} News705BT-BoldItalicB {T1}{bon}{b}{it} News705BT-ItalicB {T1}{bon}{m}{it} News705BT-RomanB {T1}{bon}{m}{n} News706BT-BoldC {T1}{ba8}{b}{n} News706BT-ItalicC {T1}{ba8}{m}{it} News706BT-RomanC {T1}{ba8}{m}{n} NewsGothic {T1}{png}{m}{n} NewsGothic-Bold {T1}{png}{b}{n} NewsGothic-BoldOblique {T1}{png}{b}{sl} NewsGothic-Oblique {T1}{png}{m}{sl} NewsGothicBT-Bold {T1}{bng}{b}{n} NewsGothicBT-BoldCondItalic {T1}{bng}{b}{it} NewsGothicBT-BoldCondensed {T1}{bng}{b}{n} NewsGothicBT-BoldItalic {T1}{bng}{b}{it} NewsGothicBT-Italic {T1}{bng}{m}{it} NewsGothicBT-ItalicCondensed {T1}{bng}{m}{it} NewsGothicBT-Roman {T1}{bng}{m}{n} NewsGothicBT-RomanCondensed {T1}{bng}{m}{n} NewsGothicMT {T1}{mng}{m}{n} NewsGothicMT-Bold {T1}{mng}{b}{n} NewsGothicMT-BoldItalic {T1}{mng}{b}{n} NewsGothicMT-Condensed {T1}{mng}{m}{n} NewsGothicMT-CondensedBold {T1}{mng}{b}{n} NewsGothicMT-Italic {T1}{mng}{m}{it} NewsPlantinMT {T1}{mnp}{m}{n} NewsPlantinMT-Bold {T1}{mnp}{b}{n} NewsPlantinMT-BoldItalic {T1}{mnp}{b}{it} NewsPlantinMT-Italic {T1}{mnp}{m}{it} NimbusMonL-Bold {T1}{ucr}{b}{n} NimbusMonL-BoldObli {T1}{ucr}{b}{sl} NimbusMonL-Regu {T1}{ucr}{m}{n} NimbusMonL-ReguObli {T1}{ucr}{m}{sl} NimbusRomNo9L-Medi {T1}{utm}{b}{n} NimbusRomNo9L-MediItal {T1}{utm}{b}{it} NimbusRomNo9L-Regu {T1}{utm}{m}{n} NimbusRomNo9L-ReguItal {T1}{utm}{m}{it} NimbusSanL-Bold {T1}{uhv}{b}{n} NimbusSanL-BoldCond {T1}{uhv}{b}{n} NimbusSanL-BoldCondItal {T1}{uhv}{b}{sl} NimbusSanL-BoldItal {T1}{uhv}{b}{sl} NimbusSanL-Regu {T1}{uhv}{m}{n} NimbusSanL-ReguCond {T1}{uhv}{m}{n} NimbusSanL-ReguCondItal {T1}{uhv}{m}{sl} NimbusSanL-ReguItal {T1}{uhv}{m}{sl} NimrodMT {T1}{mni}{m}{n} NimrodMT-Bold {T1}{mni}{b}{n} NimrodMT-BoldItalic {T1}{mni}{b}{it} NimrodMT-Italic {T1}{mni}{m}{it} Nofret-Bold {T1}{pnf}{b}{n} Nofret-BoldExpert {T1}{pnf}{b}{n} Nofret-BoldItalic {T1}{pnf}{b}{it} Nofret-BoldItalicExpert {T1}{pnf}{b}{it} Nofret-Italic {T1}{pnf}{m}{it} Nofret-ItalicExpert {T1}{pnf}{m}{it} Nofret-Medium {T1}{pnf}{}{n} Nofret-MediumExpert {T1}{pnf}{}{n} Nofret-MediumItalic {T1}{pnf}{}{it} Nofret-MediumItalicExpert {T1}{pnf}{}{it} Nofret-MediumSC {T1}{pnf}{}{sc} Nofret-Regular {T1}{pnf}{m}{n} Nofret-RegularExpert {T1}{pnf}{m}{n} Nofret-RegularSC {T1}{pnf}{m}{sc} NormandeBT-Italic {T1}{bn0}{m}{it} NormandeBT-Roman {T1}{bn0}{m}{n} NovaCondensedSSiBoldCondensed {T1}{kun}{b}{n} NovaCondensedSSiBoldCondensedItalic {T1}{kun}{b}{sl} NovaCondensedSSiCondensed {T1}{kun}{m}{n} NovaCondensedSSiCondensedItalic {T1}{kun}{m}{sl} NovaExpandedSSiBoldExpanded {T1}{kun}{bx}{n} NovaExpandedSSiBoldExpandedItalic {T1}{kun}{bx}{sl} NovaExpandedSSiExpanded {T1}{kun}{m}{n} NovaExpandedSSiExpandedItalic {T1}{kun}{m}{sl} NovaMediumSSiMedium {T1}{kun}{m}{n} NovaSSi-Bold {T1}{kun}{b}{n} NovaSSi-BoldCondensed {T1}{kun}{b}{n} NovaSSi-BoldCondensedItalic {T1}{kun}{b}{sl} NovaSSi-BoldExpanded {T1}{kun}{bx}{n} NovaSSi-BoldExpandedItalic {T1}{kun}{bx}{sl} NovaSSi-BoldItalic {T1}{kun}{b}{sl} NovaSSi-Condensed {T1}{kun}{m}{n} NovaSSi-CondensedItalic {T1}{kun}{m}{sl} NovaSSi-Expanded {T1}{kun}{m}{n} NovaSSi-ExpandedItalic {T1}{kun}{m}{sl} NovaSSi-Italic {T1}{kun}{m}{sl} NovaSSi-Medium {T1}{kun}{m}{n} NovaSSiBold {T1}{kun}{b}{n} NovaSSiBoldItalic {T1}{kun}{b}{sl} NovaSSiItalic {T1}{kun}{m}{sl} Novarese-Bold {T1}{pnv}{b}{n} Novarese-BoldItalic {T1}{pnv}{b}{it} Novarese-Medium {T1}{pnv}{}{n} Novarese-MediumItalic {T1}{pnv}{}{it} NovareseITCbyBT-Bold {T1}{bnv}{b}{n} NovareseITCbyBT-BoldItalic {T1}{bnv}{b}{it} NuanceSSi {T1}{kvl}{m}{n} NuanceSSi-Bold {T1}{kvl}{b}{n} NuanceSSi-BoldItalic {T1}{kvl}{b}{it} NuanceSSi-Italic {T1}{kvl}{m}{it} NuanceSSiBold {T1}{kvl}{b}{n} NuanceSSiBoldItalic {T1}{kvl}{b}{it} NuanceSSiItalic {T1}{kvl}{m}{it} NuptialBT-Regular {T1}{bnu}{m}{n} Nyx {T1}{pnx}{m}{n} OCR1SSi {T1}{koa}{m}{n} OCR2SSi {T1}{kob}{m}{n} OCRAbyBT-Regular {T1}{boa}{m}{n} OCRB10PitchBT-Regular {T1}{bob}{m}{n} OceanSansMT-Bold {T1}{mo4}{b}{n} OceanSansMT-BoldItalic {T1}{mo4}{b}{it} OceanSansMT-BoldSC {T1}{mo4}{b}{sc} OceanSansMT-SemiBold {T1}{mo4}{s}{n} OceanSansMT-SemiBoldItalic {T1}{mo4}{s}{it} OceanSansMT-SemiBoldSC {T1}{mo4}{s}{sc} OctavianMT {T1}{mov}{m}{n} OctavianMT-Expert {T1}{mov}{m}{n} OctavianMT-Italic {T1}{mov}{m}{it} OctavianMT-ItalicExpert {T1}{mov}{m}{it} OctavianMT-SC {T1}{mov}{m}{sc} OfficinaSans-Bold {T1}{po9}{b}{n} OfficinaSans-BoldItalic {T1}{po9}{b}{it} OfficinaSerif-Bold {T1}{po8}{b}{n} OfficinaSerif-BoldItalic {T1}{po8}{b}{it} OldClaudeLP {T1}{poj}{m}{n} OldClaudeLP-SC {T1}{poj}{m}{sc} OldDreadfulNo7BT-Regular {T1}{bo0}{m}{n} OldEnglishTextMT {T1}{moe}{m}{n} OldStyleMT {T1}{mos}{m}{n} OldStyleMT-Bold {T1}{mos}{b}{n} OldStyleMT-BoldItalic {T1}{mos}{b}{it} OldStyleMT-Italic {T1}{mos}{m}{it} OldStyleSeven {T1}{po7}{m}{n} OldStyleSeven-Italic {T1}{po7}{m}{it} OldStyleSeven-SC {T1}{po7}{m}{sc} Olympian {T1}{poy}{m}{n} Olympian-Bold {T1}{poy}{b}{n} Olympian-BoldItalic {T1}{poy}{b}{it} Olympian-Italic {T1}{poy}{m}{it} Omnia {T1}{pom}{m}{n} Ondine {T1}{poi}{m}{n} OnyxBT-Regular {T1}{box}{m}{n} OnyxMT {T1}{mox}{m}{n} Optima {T1}{pop}{m}{n} Optima-Bold {T1}{pop}{b}{n} Optima-BoldItalic {T1}{pop}{b}{it} Optima-BoldOblique {T1}{pop}{b}{sl} Optima-Italic {T1}{pop}{m}{it} Optima-Medium {T1}{pop}{}{n} Optima-MediumItalic {T1}{pop}{}{it} Optima-Oblique {T1}{pop}{m}{sl} Optimum-Bold-DTC {T1}{dop}{b}{n} Optimum-BoldItalic-DTC {T1}{dop}{b}{sl} Optimum-Roman-DTC {T1}{dop}{m}{n} Optimum-RomanItalic-DTC {T1}{do}{m}{sl} OrandaBT-Bold {T1}{bo1}{b}{n} OrandaBT-BoldCondensed {T1}{bo1}{b}{n} OrandaBT-BoldItalic {T1}{bo1}{b}{it} OrandaBT-Italic {T1}{bo1}{m}{it} OrandaBT-Roman {T1}{bo1}{m}{n} OrandaBT-RomanCondensed {T1}{bo1}{m}{n} Orator {T1}{por}{m}{n} Orator-Slanted {T1}{por}{m}{sl} OrbitBbyBT-Regular {T1}{bo2}{m}{n} OrchidBlackSSiBold {T1}{kna}{b}{n} OrchidBlackSSiBoldItalic {T1}{kna}{b}{it} OrchidSSi {T1}{kna}{m}{n} OrchidSSi-BoldItalic {T1}{kna}{b}{it} OrchidSSi-Italic {T1}{kna}{m}{it} OrchidSSi-SemiBold {T1}{kna}{s}{n} OrchidSSi-SemiBoldItalic {T1}{kna}{s}{it} OrchidSSiBold {T1}{kna}{b}{n} OrchidSSiItalic {T1}{kna}{m}{it} OrchidSSiSemiBold {T1}{kna}{s}{n} OrchidSSiSemiBoldItalic {T1}{kna}{s}{it} OriginalGaramondBT-Bold {T1}{beg}{b}{n} OriginalGaramondBT-BoldItalic {T1}{beg}{b}{it} OriginalGaramondBT-Italic {T1}{beg}{m}{it} OriginalGaramondBT-Roman {T1}{beg}{m}{n} Ouch {T1}{poq}{m}{n} Oxford {T1}{pof}{m}{n} OzHandicraftBT-Roman {T1}{boz}{m}{n} PTBarnumBT-Regular {T1}{bpb}{m}{n} Palatino-Bold {T1}{ppl}{b}{n} Palatino-BoldItalic {T1}{ppl}{b}{it} Palatino-Italic {T1}{ppl}{m}{it} Palatino-Medium {T1}{ppl}{}{n} Palatino-MediumItalic {T1}{ppl}{}{it} Palatino-Roman {T1}{ppl}{m}{n} Palatino-SC {T1}{ppl}{m}{sc} PaletteSSi {T1}{kau}{m}{n} PaletteSSi-Bold {T1}{kau}{b}{n} PaletteSSi-BoldItalic {T1}{kau}{b}{it} PaletteSSi-Italic {T1}{kau}{m}{it} PaletteSSiBold {T1}{kau}{b}{n} PaletteSSiBoldItalic {T1}{kau}{b}{it} PaletteSSiItalic {T1}{kau}{m}{it} PalindromeBlackSSiBold {T1}{kes}{b}{n} PalindromeBlackSSiBoldItalic {T1}{kes}{b}{sl} PalindromeCondensedSSiBoldCondensed {T1}{kes}{b}{n} PalindromeCondensedSSiCondensed {T1}{kes}{m}{n} PalindromeExpandedSSiBoldExpanded {T1}{kes}{bx}{n} PalindromeExpandedSSiExpanded {T1}{kes}{m}{n} PalindromeSSi {T1}{kes}{m}{n} PalindromeSSi-BoldCondensed {T1}{kes}{b}{n} PalindromeSSi-Condensed {T1}{kes}{m}{n} PalindromeSSi-Expanded {T1}{kes}{m}{n} PalindromeSSiItalic {T1}{kes}{m}{sl} PalmaBlackSSiBlack {T1}{kf}{m}{sc} PalmaSSi {T1}{kfr}{m}{n} PalmaSSi-Black {T1}{kf}{m}{sc} PalmaSSi-Bold {T1}{kfr}{b}{n} PalmaSSi-BoldItalic {T1}{kfr}{b}{it} PalmaSSi-Italic {T1}{kfr}{m}{it} PalmaSSiBold {T1}{kfr}{b}{n} PalmaSSiBoldItalic {T1}{kfr}{b}{it} PalmaSSiItalic {T1}{kfr}{m}{it} Parisian {T1}{pps}{m}{n} ParisianBT-Regular {T1}{bps}{m}{n} ParkAvenue {T1}{ppa}{m}{n} ParkAvenueBT-Regular {T1}{bpa}{m}{n} PartitionOldStyleSSiNormal {OT1}{ko7}{m}{it} PartitionOldStyleSSiSmallCaps {T1}{ko7}{m}{sc} PartitionSSi {T1}{ko7}{m}{n} PartitionSSi-Italic {T1}{ko7}{m}{it} PartitionSSi-ItalicOldStyleFigures {OT1}{ko7}{m}{it} PartitionSSi-SmallCaps {T1}{ko7}{m}{sc} PartitionSSiItalic {T1}{ko7}{m}{it} Peignot-Bold {T1}{ppg}{b}{n} PepitaMT {T1}{mp2}{m}{n} PerformaBlackSSiBlack {T1}{kk}{b}{sc} PerformaSSiMedium {T1}{kkb}{}{n} Perpetua {T1}{mpp}{m}{n} Perpetua {T1}{ppp}{m}{n} Perpetua-Bold {T1}{mpp}{b}{n} Perpetua-Bold {T1}{ppp}{b}{n} Perpetua-BoldExp {T1}{ppp}{b}{n} Perpetua-BoldItalic {T1}{mpp}{b}{it} Perpetua-BoldItalic {T1}{ppp}{b}{it} Perpetua-BoldItalicExp {T1}{ppp}{b}{it} Perpetua-Exp {T1}{ppp}{m}{n} Perpetua-Expert {T1}{mpp}{m}{n} Perpetua-Italic {T1}{mpp}{m}{it} Perpetua-Italic {T1}{ppp}{m}{it} Perpetua-ItalicExp {T1}{ppp}{m}{it} Perpetua-SC {T1}{mpp}{m}{sc} Perpetua-SC {T1}{ppp}{m}{sc} PerrywoodMT {T1}{mpw}{m}{n} PerrywoodMT-Bold {T1}{mpw}{b}{n} PerrywoodMT-BoldCondensed {T1}{mpw}{b}{n} PerrywoodMT-BoldExpanded {T1}{mpw}{bx}{n} PerrywoodMT-BoldItalic {T1}{mpw}{b}{it} PerrywoodMT-BoldItalicCon {T1}{mpw}{b}{it} PerrywoodMT-BoldItalicExp {T1}{mpw}{bx}{it} PerrywoodMT-Condensed {T1}{mpw}{m}{n} PerrywoodMT-Expanded {T1}{mpw}{m}{n} PerrywoodMT-Italic {T1}{mpw}{m}{it} PerrywoodMT-ItalicCondensed {T1}{mpw}{m}{it} PerrywoodMT-ItalicExpanded {T1}{mpw}{m}{it} PerrywoodMT-SemiBold {T1}{mpw}{s}{n} PerrywoodMT-SemiBoldCon {T1}{mpw}{s}{n} PerrywoodMT-SemiBoldExp {T1}{mpw}{s}{n} PerrywoodMT-SemiBoldItaCon {T1}{mpw}{s}{it} PerrywoodMT-SemiBoldItaExp {T1}{mpw}{s}{it} PerrywoodMT-SemiBoldItalic {T1}{mpw}{s}{it} PerspectiveMediumSSiMedium {T1}{kuh}{}{n} PerspectiveMediumSSiMediumItalic {T1}{kuh}{}{it} PerspectiveSSi-Bold {T1}{kuh}{b}{n} PerspectiveSSi-BoldItalic {T1}{kuh}{b}{it} PerspectiveSSi-Medium {T1}{kuh}{}{n} PerspectiveSSi-MediumItalic {T1}{kuh}{}{it} PerspectiveSSiBold {T1}{kuh}{b}{n} PerspectiveSSiBoldItalic {T1}{kuh}{b}{it} PersuasionSSi {T1}{kbs}{m}{n} PhotinaMT {T1}{mph}{m}{n} PhotinaMT-Bold {T1}{mph}{b}{n} PhotinaMT-BoldExpert {T1}{mph}{b}{n} PhotinaMT-BoldItalic {T1}{mph}{b}{it} PhotinaMT-BoldItalicExpert {T1}{mph}{b}{it} PhotinaMT-Italic {T1}{mph}{m}{it} PhotinaMT-ItalicExpert {T1}{mph}{m}{it} PhotinaMT-RegularExpert {T1}{mph}{m}{n} PhotinaMT-RegularSC {T1}{mph}{m}{sc} PhotinaMT-SemiBold {T1}{mph}{s}{n} PhotinaMT-SemiBoldExpert {T1}{mph}{s}{n} PhotinaMT-SemiBoldItExpert {T1}{mph}{s}{it} PhotinaMT-SemiBoldItalic {T1}{mph}{s}{it} PioneerITCbyBT-Regular {T1}{bp4}{m}{n} PiranesiItalicBT-Regular {T1}{bp5}{m}{n} PlacardMT-Condensed {T1}{mpd}{m}{n} PlacardMT-CondensedBold {T1}{mpd}{b}{n} Plantin {T1}{mpn}{m}{n} Plantin {T1}{ppn}{m}{n} Plantin-Bold {T1}{mpn}{b}{n} Plantin-Bold {T1}{ppn}{b}{n} Plantin-BoldCondensed {T1}{mpn}{b}{n} Plantin-BoldCondensed {T1}{ppn}{b}{n} Plantin-BoldItalic {T1}{mpn}{b}{it} Plantin-BoldItalic {T1}{ppn}{b}{it} Plantin-Italic {T1}{mpn}{m}{it} Plantin-Italic {T1}{ppn}{m}{it} Plantin-SemiBold {T1}{mpn}{s}{n} Plantin-SemiBoldItalic {T1}{mpn}{s}{it} Plantin-Semibold {T1}{ppn}{s}{n} Plantin-SemiboldItalic {T1}{ppn}{s}{it} PlantinExp {T1}{mpn}{m}{n} PlantinExp-Bold {T1}{mpn}{b}{n} PlantinExp-BoldItalic {T1}{mpn}{b}{it} PlantinExp-Italic {T1}{mpn}{m}{it} PlantinExp-SemiBold {T1}{mpn}{s}{n} PlantinExp-SemiBoldItalic {T1}{mpn}{s}{it} PlaybillBT-Regular {T1}{bpy}{m}{n} PlugSSi {T1}{kmq}{m}{n} PoliphilusExpertMT {T1}{mpz}{m}{n} PoliphilusMT {T1}{mpz}{m}{n} Pompeijana-Roman {T1}{ppj}{m}{n} Ponderosa {T1}{ppo}{m}{n} Poplar {T1}{pp0}{m}{n} PopplLaudatio-Bold {T1}{ppu}{b}{n} PopplLaudatio-BoldCondensed {T1}{ppu}{b}{n} PopplLaudatio-BoldItalic {T1}{ppu}{b}{it} PopplLaudatio-Condensed {T1}{ppu}{m}{n} PopplLaudatio-Italic {T1}{ppu}{m}{it} PopplLaudatio-Medium {T1}{ppu}{}{n} PopplLaudatio-MediumCondensed {T1}{ppu}{c}{n} PopplLaudatio-MediumItalic {T1}{ppu}{}{it} PopplLaudatio-Regular {T1}{ppu}{m}{it} PopplPontifexBE-Bold {T1}{ppx}{b}{n} PopplPontifexBE-BoldExp {T1}{ppx}{b}{n} PopplPontifexBE-Italic {T1}{ppx}{m}{it} PopplPontifexBE-ItalicExp {T1}{ppx}{m}{it} PopplPontifexBE-Medium {T1}{ppx}{}{n} PopplPontifexBE-MediumCn {T1}{ppx}{c}{n} PopplPontifexBE-MediumCnExp {T1}{ppx}{c}{n} PopplPontifexBE-MediumCnSC {T1}{ppx}{c}{sc} PopplPontifexBE-MediumExp {T1}{ppx}{}{n} PopplPontifexBE-MediumSC {T1}{ppx}{}{sc} PopplPontifexBE-Regular {T1}{ppx}{m}{n} PopplPontifexBE-RegularExp {T1}{ppx}{m}{n} PopplPontifexBE-RegularSC {T1}{ppx}{m}{sc} PopplResidenz-Regular {T1}{ppr}{m}{n} PostAntiquaBE-Medium {T1}{ppq}{}{n} PostAntiquaBE-Regular {T1}{ppq}{m}{n} PostMediaeval-Italic {T1}{ppm}{m}{it} PostMediaeval-Medium {T1}{ppm}{}{n} PostMediaeval-Regular {T1}{ppm}{m}{n} Present {T1}{ppt}{m}{n} Present-Bold {T1}{ppt}{b}{n} Present-BoldCondensed {T1}{ppt}{b}{n} Present-Condensed {T1}{ppt}{m}{n} Prestige12PitchBT-Bold {T1}{bpe}{b}{n} Prestige12PitchBT-BoldItalic {T1}{bpe}{b}{it} Prestige12PitchBT-Italic {T1}{bpe}{m}{it} Prestige12PitchBT-Roman {T1}{bpe}{m}{n} PrestigeElite {T1}{ppe}{m}{n} PrestigeElite-Bold {T1}{ppe}{b}{n} PrestigeElite-BoldSlanted {T1}{ppe}{b}{sl} PrestigeElite-Slanted {T1}{ppe}{m}{sl} ProseScriptSSi {T1}{kku}{m}{n} ProseScriptSSiBold {T1}{kku}{b}{n} ProtocolSSi {T1}{kml}{m}{n} ProtocolSSiBold {T1}{kml}{b}{n} ProtocolSSiBoldItalic {T1}{kml}{b}{it} ProtocolSSiItalic {T1}{kml}{m}{it} QueSSi-Bold {T1}{ksh}{b}{n} QueSSi-Italic {T1}{ksh}{m}{sl} QueSSiBold {T1}{ksh}{b}{n} QueSSiItalic {T1}{ksh}{m}{sl} QuillScriptBlackSSiBlack {T1}{kk}{s}{sc} QuillScriptSSi {T1}{kks}{}{n} QuillScriptSSi-Black {T1}{kk}{s}{sc} QuillScriptSSi-Bold {T1}{kks}{b}{n} QuillScriptSSiBold {T1}{kks}{b}{n} QuintessenceMediumSSiMedium {T1}{kwd}{}{n} QuintessenceMediumSSiMediumItalic {T1}{kwd}{}{it} QuintessenceSSi-Bold {T1}{kwd}{b}{n} QuintessenceSSi-BoldItalic {T1}{kwd}{b}{it} QuintessenceSSi-Medium {T1}{kwd}{}{n} QuintessenceSSi-MediumItalic {T1}{kwd}{}{it} QuintessenceSSiBold {T1}{kwd}{b}{n} QuintessenceSSiBoldItalic {T1}{kwd}{b}{it} Quorum-Black {T1}{pq}{m}{sc} Quorum-Bold {T1}{pqr}{b}{n} Quorum-Medium {T1}{pqr}{}{n} QuorumITCbyBT-Black {T1}{bq}{m}{sc} QuorumITCbyBT-Medium {T1}{bqr}{}{n} Raleigh {T1}{pra}{m}{n} Raleigh-Bold {T1}{pra}{b}{n} Raleigh-Medium {T1}{pra}{}{n} RaleighBT-Bold {T1}{bra}{b}{n} RaleighBT-Medium {T1}{bra}{}{n} RaleighBT-Roman {T1}{bra}{m}{n} Raphael {T1}{prr}{m}{n} RecitalSSi {T1}{kto}{m}{n} RecitalSSi-Bold {T1}{kto}{b}{n} RecitalSSi-BoldItalic {T1}{kto}{b}{it} RecitalSSi-Italic {T1}{kto}{m}{it} RecitalSSiBold {T1}{kto}{b}{n} RecitalSSiBoldItalic {T1}{kto}{b}{it} RecitalSSiItalic {T1}{kto}{m}{it} RecognitaBookSSiMedium {T1}{kra}{}{n} RecognitaSSi {T1}{kra}{m}{n} RecognitaSSi-Bold {T1}{kra}{b}{n} RecognitaSSi-Book {T1}{kra}{}{n} RecognitaSSiBold {T1}{kra}{b}{n} ReductoCondensedSSiCondensed {T1}{keh}{m}{n} ReductoSSi {T1}{km6}{m}{n} ReductoSSi-Bold {T1}{kzg}{b}{n} ReductoSSi-Condensed {T1}{keh}{m}{n} ReductoSSiBold {T1}{kzg}{b}{n} ResourceSSi {T1}{klf}{m}{n} ResourceSSi-Bold {T1}{klf}{b}{n} ResourceSSi-Italic {T1}{klf}{m}{it} ResourceSSiBold {T1}{klf}{b}{n} ResourceSSiItalic {T1}{klf}{m}{it} Revival565BT-Bold {T1}{bbr}{b}{n} Revival565BT-BoldItalic {T1}{bbr}{b}{it} Revival565BT-Italic {T1}{bbr}{m}{it} Revival565BT-Roman {T1}{bbr}{m}{n} Revue {T1}{prv}{b}{n} RevueBT-Regular {T1}{brv}{m}{n} Ribbon131BT-Bold {T1}{bot}{b}{n} Ribbon131BT-Regular {T1}{bot}{m}{n} Rockwell {T1}{mrw}{m}{n} Rockwell {T1}{prw}{m}{n} Rockwell-Bold {T1}{mrw}{b}{n} Rockwell-Bold {T1}{prw}{b}{n} Rockwell-BoldCondensed {T1}{mrw}{b}{n} Rockwell-BoldCondensed {T1}{prw}{b}{n} Rockwell-BoldItalic {T1}{mrw}{b}{it} Rockwell-BoldItalic {T1}{prw}{b}{it} Rockwell-Condensed {T1}{mrw}{m}{n} Rockwell-Condensed {T1}{prw}{m}{n} Rockwell-Italic {T1}{mrw}{m}{it} Rockwell-Italic {T1}{prw}{m}{it} RomanaBT-Bold {T1}{br0}{b}{n} RomanaBT-Roman {T1}{br0}{m}{n} Romic-Bold {T1}{prc}{b}{n} Romic-Medium {T1}{prc}{}{n} Rotation-Bold {T1}{prn}{b}{n} Rotation-Italic {T1}{prn}{m}{it} Rotation-Roman {T1}{prn}{m}{n} RotisSansSerif {T1}{pr4}{m}{n} RotisSansSerif-Bold {T1}{pr4}{b}{n} RotisSansSerif-Italic {T1}{pr4}{m}{it} RotisSemiSans {T1}{pr3}{m}{n} RotisSemiSans-Bold {T1}{pr3}{b}{n} RotisSemiSans-Italic {T1}{pr3}{m}{it} RotisSemiSerif {T1}{pr1}{m}{n} RotisSemiSerif-Bold {T1}{pr1}{b}{n} RotisSerif {T1}{pro}{m}{n} RotisSerif-Bold {T1}{pro}{b}{n} RotisSerif-Italic {T1}{pro}{m}{it} RunicMT-Condensed {T1}{mru}{m}{n} RussellSquare {T1}{prq}{m}{n} RussellSquare-Oblique {T1}{prq}{m}{sl} Rusticana-Roman {T1}{prx}{m}{n} RuzickaFreehandLH-Bold {T1}{lrz}{b}{n} RuzickaFreehandLH-BoldSC {T1}{lrz}{b}{sc} RuzickaFreehandLH-Roman {T1}{lrz}{m}{n} RuzickaFreehandLH-RomanSC {T1}{lrz}{m}{sc} Sabon-Bold {T1}{psb}{b}{n} Sabon-BoldItalic {T1}{psb}{b}{it} Sabon-Italic {T1}{psb}{m}{it} Sabon-Roman {T1}{psb}{m}{n} Sabon-RomanSC {T1}{psb}{m}{sc} SabonMT {T1}{msb}{m}{n} SabonMT-Italic {T1}{msb}{m}{it} SabonMT-SCOSF {T1}{msb}{m}{sc} SabonMT-SemiBold {T1}{msb}{s}{n} SabonMT-SemiBoldItalic {T1}{msb}{s}{it} SansExtended-Medium-DTC {T1}{dhv}{}{n} SansExtended-Regular-DTC {T1}{dhv}{m}{n} SansExtended-RegularOblique-DTC {T1}{dhv}{m}{sl} SchadowBT-Bold {T1}{bhw}{b}{n} SchadowBT-Roman {T1}{bhw}{m}{n} SchneidlerBT-Black {T1}{bs}{s}{sc} SchneidlerBT-Bold {T1}{bss}{b}{n} SchneidlerBT-BoldItalic {T1}{bss}{b}{it} SchneidlerBT-Italic {T1}{bss}{m}{it} SchneidlerBT-Medium {T1}{bss}{}{n} SchneidlerBT-MediumItalic {T1}{bss}{}{it} SchneidlerBT-Roman {T1}{bss}{m}{n} ScotchRomanMT {T1}{ms1}{m}{n} ScotchRomanMT-Italic {T1}{ms1}{m}{it} ScribeSSi-ItalicSmallCaps {T1}{kor}{m}{sl} ScribeSSi-SmallCaps {T1}{kor}{m}{n} ScribeSSiItalicSmallCaps {T1}{kor}{m}{sl} ScribeSSiSmallCaps {T1}{kor}{m}{n} Script12PitchBT-Roman {T1}{bs2}{m}{n} ScriptoriaProSSi {T1}{kpc}{m}{it} ScriptoriaProSSi {T1}{ks9}{m}{it} ScriptoriaSSi {T1}{kpc}{m}{it} ScriptoriaSSi {T1}{ks9}{m}{it} SeagullBT-Bold {T1}{bs3}{b}{n} SeagullBT-Medium {T1}{bs3}{}{n} SenatusSSi {T1}{kcg}{m}{n} SenatusSSi-Bold {T1}{kcg}{b}{n} SenatusSSiBold {T1}{kcg}{b}{n} SentinalSSi {T1}{kbi}{m}{n} SerifGothic {T1}{psg}{m}{n} SerifGothic-Bold {T1}{psg}{b}{n} Serifa-Bold {T1}{psf}{b}{n} Serifa-Italic {T1}{psf}{m}{it} Serifa-Roman {T1}{psf}{m}{n} SerifaBT-Bold {T1}{bsf}{b}{n} SerifaBT-BoldCondensed {T1}{bsf}{b}{n} SerifaBT-Italic {T1}{bsf}{m}{it} SerifaBT-Roman {T1}{bsf}{m}{n} Serpentine-Bold {T1}{psp}{b}{n} Serpentine-BoldOblique {T1}{psp}{b}{sl} Serpentine-Medium {T1}{psp}{}{n} Serpentine-MediumOblique {T1}{psp}{}{sl} ShadowSSi {T1}{kum}{m}{n} Shannon-Bold {T1}{psh}{b}{n} Shannon-Oblique {T1}{psh}{m}{sl} ShoestringSSi {T1}{krq}{m}{n} ShoestringSSi-Italic {T1}{krq}{m}{sl} ShoestringSSiItalic {T1}{krq}{m}{sl} ShortHaulSSi {T1}{kic}{m}{n} ShotgunBT-Regular {T1}{bs4}{m}{n} SimonciniGaramond {T1}{pig}{m}{n} SimonciniGaramond-Bold {T1}{pig}{b}{n} SimonciniGaramond-Italic {T1}{pig}{m}{it} Skia {T1}{esk}{m}{n} Slimbach-Bold {T1}{psc}{b}{n} Slimbach-BoldItalic {T1}{psc}{b}{it} Slimbach-Medium {T1}{psc}{}{n} Slimbach-MediumItalic {T1}{psc}{}{it} SlotSSiBlack {T1}{kp0}{m}{n} SnellBT-Bold {T1}{bs5}{b}{n} SnellBT-Regular {T1}{bs5}{m}{n} SnippetScriptSSi {T1}{kpt}{m}{n} SophisticateSSi {T1}{ktf}{m}{n} SophisticateSSiItalic {T1}{ktf}{m}{it} Souvenir-Bold {T1}{psv}{b}{n} Souvenir-BoldItalic {T1}{psv}{b}{it} Souvenir-Medium {T1}{psv}{}{n} Souvenir-MediumItalic {T1}{psv}{}{it} SouvenirBlackSSiBold {T1}{ksv}{b}{n} SouvenirBlackSSiBoldItalic {T1}{ksv}{b}{it} SouvenirSSi {T1}{ksv}{}{n} SouvenirSSiItalic {T1}{ksv}{}{it} SpartaSSi {T1}{khc}{m}{n} SpectrumMT {T1}{msm}{m}{n} SpectrumMT-Expert {T1}{msm}{m}{n} SpectrumMT-Italic {T1}{msm}{m}{it} SpectrumMT-ItalicExpert {T1}{msm}{m}{it} SpectrumMT-SC {T1}{msm}{m}{sc} SpectrumMT-SemiBold {T1}{msm}{s}{n} SpectrumMT-SemiBoldExpert {T1}{msm}{s}{n} SpectrumMT-SemiBoldOsF {T1}{msm}{s}{sc} SpeedoBlackSSiBold {T1}{ker}{b}{n} SpeedoBookSSiMedium {T1}{ker}{}{n} SpitbolAlternateSSi {OT1}{kar}{m}{n} SpitbolSSi {T1}{kar}{m}{n} Square721BT-Bold {T1}{bes}{b}{n} Square721BT-BoldCondensed {T1}{bes}{b}{n} Square721BT-BoldExtended {T1}{bes}{bx}{n} Square721BT-Roman {T1}{bes}{m}{n} Square721BT-RomanCondensed {T1}{bes}{m}{n} Square721BT-RomanExtended {T1}{bes}{m}{n} SquareSlabserif711BT-Bold {T1}{bcy}{b}{n} SquareSlabserif711BT-Medium {T1}{bcy}{}{n} Staccato222BT-Regular {T1}{bms}{m}{n} Staccato555BT-RegularA {T1}{bcz}{m}{n} StackBlackSSiBlack {T1}{kq}{m}{sc} StackLightSSiMedium {T1}{kqr}{}{n} StackSSiBold {T1}{kqr}{b}{n} StempelGaramond-Bold {T1}{peg}{b}{n} StempelGaramond-BoldItalic {T1}{peg}{b}{it} StempelGaramond-Italic {T1}{peg}{m}{it} StempelGaramond-Roman {T1}{peg}{m}{n} StempelGaramond-RomanSC {T1}{peg}{m}{sc} StempelSchneidler-Black {T1}{ps}{s}{sc} StempelSchneidler-Bold {T1}{pss}{b}{n} StempelSchneidler-BoldItalic {T1}{pss}{b}{it} StempelSchneidler-Italic {T1}{pss}{m}{it} StempelSchneidler-MedItalic {T1}{pss}{}{it} StempelSchneidler-Medium {T1}{pss}{}{n} StempelSchneidler-Roman {T1}{pss}{m}{n} Stencil {T1}{psl}{b}{n} Stencil {T1}{psl}{m}{n} StencilBT-Regular {T1}{bsl}{m}{n} SterlingSSi {T1}{koy}{m}{n} SterlingSSi-Bold {T1}{koy}{b}{n} SterlingSSi-BoldItalic {T1}{koy}{b}{it} SterlingSSi-Italic {T1}{koy}{m}{it} SterlingSSiBold {T1}{koy}{b}{n} SterlingSSiBoldItalic {T1}{koy}{b}{it} SterlingSSiItalic {T1}{koy}{m}{it} StoneInformal {T1}{psi}{m}{n} StoneInformal-Bold {T1}{psi}{b}{n} StoneInformal-BoldItalic {T1}{psi}{b}{it} StoneInformal-Italic {T1}{psi}{m}{it} StoneInformal-Semibold {T1}{psi}{s}{n} StoneInformal-SemiboldItalic {T1}{psi}{s}{it} StoneSans-Bold {T1}{ps8}{b}{n} StoneSans-BoldItalic {T1}{ps8}{b}{it} StoneSans-Semibold {T1}{ps8}{s}{n} StoneSans-SemiboldItalic {T1}{ps8}{s}{it} StoneSerif {T1}{pst}{m}{n} StoneSerif-Bold {T1}{pst}{b}{n} StoneSerif-BoldItalic {T1}{pst}{b}{it} StoneSerif-Italic {T1}{pst}{m}{it} StoneSerif-Semibold {T1}{pst}{s}{n} StoneSerif-SemiboldItalic {T1}{pst}{s}{it} StrayhornMT-Bold {T1}{myh}{b}{n} StrayhornMT-BoldItalic {T1}{myh}{b}{it} StrayhornMT-Italic {T1}{myh}{m}{it} StrayhornMT-RegulaSC {T1}{myh}{m}{sc} StrayhornMT-Regular {T1}{myh}{m}{n} StuyvesantBT-Regular {T1}{bs6}{m}{n} StymieBT-Bold {T1}{bym}{b}{n} StymieBT-BoldItalic {T1}{bym}{b}{it} StymieBT-Medium {T1}{bym}{}{n} StymieBT-MediumItalic {T1}{bym}{}{it} Swiss721BT-BlackRounded {T1}{bh}{m}{sc} Swiss721BT-Bold {T1}{bhv}{b}{n} Swiss721BT-BoldCondensed {T1}{bhv}{b}{n} Swiss721BT-BoldCondensedItalic {T1}{bhv}{b}{it} Swiss721BT-BoldExtended {T1}{bhv}{bx}{n} Swiss721BT-BoldItalic {T1}{bhv}{b}{it} Swiss721BT-BoldRounded {T1}{bhr}{b}{n} Swiss721BT-Italic {T1}{bhv}{m}{it} Swiss721BT-ItalicCondensed {T1}{bhv}{m}{it} Swiss721BT-Medium {T1}{bhv}{}{n} Swiss721BT-MediumItalic {T1}{bhv}{}{it} Swiss721BT-Roman {T1}{bhv}{m}{n} Swiss721BT-RomanCondensed {T1}{bhv}{m}{n} Swiss721BT-RomanExtended {T1}{bhv}{m}{n} Swiss921BT-RegularA {T1}{bhi}{m}{n} Swiss924BT-RegularB {T1}{bhs}{m}{n} SymbolBookSSiMedium {T1}{ksy}{}{n} SymbolBookSSiMediumItalic {T1}{ksy}{}{it} SymbolITCbyBT-Bold {T1}{bsy}{b}{n} SymbolITCbyBT-BoldItalic {T1}{bsy}{b}{it} SymbolSSiBold {T1}{ksy}{b}{n} SymbolSSiBoldItalic {T1}{ksy}{b}{it} Syntax-Bold {T1}{psx}{b}{n} Syntax-Italic {T1}{psx}{m}{it} Syntax-Roman {T1}{psx}{m}{n} TangoBT-Regular {T1}{bt0}{m}{n} TangoScriptSSi {T1}{ks5}{m}{n} TangoScriptSSiBold {T1}{ks5}{b}{n} Tekton {T1}{ptk}{m}{n} Tekton-Bold {T1}{ptk}{b}{n} Tekton-BoldOblique {T1}{ptk}{b}{sl} Tekton-Oblique {T1}{ptk}{m}{sl} TerminusBlackCondensedSSiBoldCondensed {T1}{kpn}{b}{n} TerminusBlackSSiBold {T1}{kpn}{b}{n} TerminusBlackSSiBoldItalic {T1}{kpn}{b}{it} TerminusSSi {T1}{kpn}{m}{n} TerminusSSi-Bold {T1}{kpn}{b}{n} TerminusSSi-BoldCondensed {T1}{kpn}{b}{n} TerminusSSi-BoldItalic {T1}{kpn}{b}{it} TerminusSSi-Italic {T1}{kpn}{m}{it} TerminusSSi-SemiBold {T1}{kpn}{s}{n} TerminusSSi-SemiBoldItalic {T1}{kpn}{s}{it} TerminusSSiItalic {T1}{kpn}{m}{it} TerminusSSiSemiBold {T1}{kpn}{s}{n} TerminusSSiSemiBoldItalic {T1}{kpn}{s}{it} ThesisSSi {T1}{kco}{m}{n} ThesisSSi-Bold {T1}{kco}{b}{n} ThesisSSi-BoldItalic {T1}{kco}{b}{it} ThesisSSi-Italic {T1}{kco}{m}{it} ThesisSSiBold {T1}{kco}{b}{n} ThesisSSiBoldItalic {T1}{kco}{b}{it} ThesisSSiItalic {T1}{kco}{m}{it} ThunderbirdBT-Regular {T1}{bt1}{m}{n} TiascoOldStyleSSiBoldOldStyleFigures {OT1}{kgj}{b}{n} TiascoOldStyleSSiItalicOldStyleFigures {OT1}{kgj}{m}{it} TiascoOldStyleSSiSmallCaps {T1}{kgj}{m}{sc} TiascoSSi {T1}{kgj}{m}{n} TiascoSSi-Bold {T1}{kgj}{b}{n} TiascoSSi-BoldOldStyleFigures {OT1}{kgj}{b}{n} TiascoSSi-Italic {T1}{kgj}{m}{it} TiascoSSi-ItalicOldStyleFigures {OT1}{kgj}{m}{it} TiascoSSi-SmallCaps {T1}{kgj}{m}{sc} TiascoSSiBold {T1}{kgj}{b}{n} TiascoSSiItalic {T1}{kgj}{m}{it} Tiffany {T1}{ptf}{m}{n} Tiffany-Italic {T1}{ptf}{m}{it} Times-Bold {T1}{ptm}{b}{n} Times-BoldItalic {T1}{ptm}{b}{it} Times-BoldSC {T1}{ptm}{b}{sc} Times-Italic {T1}{ptm}{m}{it} Times-Roman {T1}{ptm}{m}{n} Times-RomanSC {T1}{ptm}{m}{sc} Times-Semibold {T1}{ptm}{s}{n} Times-SemiboldItalic {T1}{ptm}{s}{it} TimesEuropa-Bold {T1}{pte}{b}{n} TimesEuropa-BoldItalic {T1}{pte}{b}{it} TimesEuropa-Italic {T1}{pte}{m}{it} TimesEuropa-Roman {T1}{pte}{m}{n} TimesNRExpertMT {T1}{mnt}{m}{n} TimesNRExpertMT-Bold {T1}{mnt}{b}{n} TimesNRExpertMT-BoldItalic {T1}{mnt}{b}{it} TimesNRExpertMT-Italic {T1}{mnt}{m}{it} TimesNRMT {T1}{mnt}{m}{n} TimesNRMT-Bold {T1}{mnt}{b}{n} TimesNRMT-BoldItalic {T1}{mnt}{b}{it} TimesNRMT-Italic {T1}{mnt}{m}{it} TimesNRMT-Medium {T1}{mnt}{}{n} TimesNRMT-MediumItalic {T1}{mnt}{}{it} TimesNRMT-SemiBold {T1}{mnt}{s}{n} TimesNRMT-SemiBoldItalic {T1}{mnt}{s}{it} TimesNRPSExpert {T1}{mns}{m}{n} TimesNRPSExpert-Bold {T1}{mns}{b}{n} TimesNRPSExpert-BoldItalic {T1}{mns}{b}{it} TimesNRPSExpert-Italic {T1}{mns}{m}{it} TimesNewRomanMT-BoldCond {T1}{mnt}{b}{n} TimesNewRomanMT-Cond {T1}{mnt}{m}{n} TimesNewRomanMT-CondItalic {T1}{mnt}{m}{it} TimesNewRomanPS {T1}{mns}{m}{n} TimesNewRomanPS {T1}{pns}{m}{n} TimesNewRomanPS-Bold {T1}{mns}{b}{n} TimesNewRomanPS-BoldItalic {T1}{mns}{b}{it} TimesNewRomanPS-Italic {T1}{mns}{m}{it} TimesTen-Bold {T1}{ptt}{b}{n} TimesTen-BoldItalic {T1}{ptt}{m}{it} TimesTen-Italic {T1}{ptt}{m}{it} TimesTen-Roman {T1}{ptt}{m}{n} TimesTen-RomanSC {T1}{ptt}{m}{sc} ToucheSSi {T1}{kps}{m}{n} TradeGothic {T1}{ptg}{m}{n} TradeGothic-Bold {T1}{ptg}{b}{n} TradeGothic-BoldCondTwenty {T1}{ptg}{b}{n} TradeGothic-BoldCondTwentyObl {T1}{ptg}{b}{n} TradeGothic-BoldOblique {T1}{ptg}{b}{sl} TradeGothic-BoldTwo {T1}{ptg}{b}{n} TradeGothic-BoldTwoOblique {T1}{ptg}{b}{sl} TradeGothic-CondEighteen {T1}{ptg}{m}{n} TradeGothic-CondEighteenObl {T1}{ptg}{m}{n} TradeGothic-Oblique {T1}{ptg}{m}{sl} TradeGothicLH-BoldExtended {T1}{ltg}{bx}{n} TradeGothicLH-Extended {T1}{ltg}{m}{n} Trajan-Bold {T1}{ptj}{b}{n} Trajan-Regular {T1}{ptj}{m}{n} Transitional511BT-Bold {T1}{bnd}{b}{n} Transitional511BT-BoldItalic {T1}{bnd}{b}{it} Transitional511BT-Italic {T1}{bnd}{m}{it} Transitional511BT-Roman {T1}{bnd}{m}{n} Transitional521BT-BoldA {T1}{bea}{b}{n} Transitional521BT-RomanA {T1}{bea}{m}{n} Transitional551BT-MediumB {T1}{bff}{}{n} Transitional551BT-MediumItalicB {T1}{bff}{}{it} TrendexBlackSSiBold {T1}{kag}{b}{n} TrendexBlackSSiBoldItalic {T1}{kag}{b}{sl} TrendexCondensedSSiBoldCondensed {T1}{kag}{b}{n} TrendexLightCondensedSSiMediumCondensed {T1}{kag}{c}{n} TrendexLightSSiMedium {T1}{kag}{}{n} TrendexLightSSiMediumItalic {T1}{kag}{}{sl} TrendexSSi-Bold {T1}{kag}{b}{n} TrendexSSi-BoldCondensed {T1}{kag}{b}{n} TrendexSSi-BoldItalic {T1}{kag}{b}{sl} TrendexSSi-Medium {T1}{kag}{}{n} TrendexSSi-MediumCondensed {T1}{kag}{c}{n} TrendexSSi-MediumItalic {T1}{kag}{}{sl} TridentMediumSSiMedium {T1}{knv}{}{n} TridentMediumSSiMediumItalic {T1}{knv}{}{it} TridentSSiBold {T1}{knv}{b}{n} TridentSSiBoldItalic {T1}{knv}{b}{it} TrumpMediaeval-Bold {T1}{ptv}{b}{n} TrumpMediaeval-BoldItalic {T1}{ptv}{b}{it} TrumpMediaeval-Italic {T1}{ptv}{m}{it} TrumpMediaeval-Roman {T1}{ptv}{m}{n} TrumpMediaeval-SC {T1}{ptv}{m}{sc} TumbleweedSSi {T1}{kpo}{m}{n} TwCenMT-Bold {T1}{mtw}{b}{n} TwCenMT-BoldItalic {T1}{mtw}{b}{it} TwCenMT-CondensedBold {T1}{mtw}{b}{n} TwCenMT-CondensedMedium {T1}{mtw}{c}{n} TwCenMT-Medium {T1}{mtw}{}{n} TwCenMT-MediumItalic {T1}{mtw}{}{it} TwCenMT-SemiBold {T1}{mtw}{s}{n} TwCenMT-SemiMedium {T1}{mtws}{}{n} TycoonBlackSSiBold {T1}{knd}{b}{n} TycoonBlackSSiBoldItalic {T1}{knd}{b}{it} TycoonOldStyleSSiItalicOldStyleFigures {OT1}{knd}{m}{it} TycoonOldStyleSSiSmallCaps {T1}{knd}{m}{sc} TycoonSSi {T1}{knd}{m}{n} TycoonSSi-Bold {T1}{knd}{b}{n} TycoonSSi-BoldItalic {T1}{knd}{b}{it} TycoonSSi-Italic {T1}{knd}{m}{it} TycoonSSi-ItalicOldStyleFigures {OT1}{knd}{m}{it} TycoonSSi-SemiBold {T1}{knd}{s}{n} TycoonSSi-SemiBoldItalic {T1}{knd}{s}{it} TycoonSSi-SmallCaps {T1}{knd}{m}{sc} TycoonSSiBoldItalicOldStyleFigures {OT1}{knd}{b}{it} TycoonSSiItalic {T1}{knd}{m}{it} TycoonSSiSemiBold {T1}{knd}{s}{n} TycoonSSiSemiBoldItalic {T1}{knd}{s}{it} TypewriterMT {T1}{mty}{m}{n} TypoUprightBT-Regular {T1}{bt2}{m}{n} URWChanceryL-MediItal {T1}{uzc}{}{it} URWPalladioL-Bold {T1}{upl}{b}{n} URWPalladioL-BoldItal {T1}{upl}{b}{it} URWPalladioL-Ital {T1}{upl}{m}{it} URWPalladioL-Roma {T1}{upl}{m}{n} UbiqGothicSSi {T1}{ksg}{m}{n} UbiqGothicSSiBold {T1}{ksg}{b}{n} Umbra {T1}{pum}{m}{n} UmbraBT-Regular {T1}{bum}{m}{n} Univers {T1}{pun}{m}{n} Univers-Bold {T1}{pun}{b}{n} Univers-BoldExt {T1}{pun}{bx}{n} Univers-BoldExtObl {T1}{pun}{bx}{sl} Univers-BoldOblique {T1}{pun}{b}{sl} Univers-Condensed {T1}{pun}{m}{n} Univers-CondensedBold {T1}{pun}{b}{n} Univers-CondensedBoldOblique {T1}{pun}{b}{sl} Univers-CondensedOblique {T1}{pun}{m}{sl} Univers-Extended {T1}{pun}{m}{n} Univers-ExtendedObl {T1}{pun}{m}{sl} Univers-Oblique {T1}{pun}{m}{sl} UniversityRoman {T1}{puy}{m}{n} UniversityRomanBT-Bold {T1}{buy}{b}{n} UniversityRomanBT-Regular {T1}{buy}{m}{n} UpscaleScriptSSi {T1}{kpa}{m}{n} Usherwood-Bold {T1}{puw}{b}{n} Usherwood-BoldItalic {T1}{puw}{b}{it} Usherwood-Medium {T1}{puw}{}{n} Usherwood-MediumItalic {T1}{puw}{}{it} Utopia-Bold {T1}{put}{b}{n} Utopia-BoldItalic {T1}{put}{b}{it} Utopia-Italic {T1}{put}{m}{it} Utopia-Regular {T1}{put}{m}{n} Utopia-RegularSC {T1}{put}{m}{sc} Utopia-Semibold {T1}{put}{s}{n} Utopia-SemiboldItalic {T1}{put}{s}{it} Utopia-SemiboldSC {T1}{put}{s}{sc} UtopiaExp-Bold {T1}{put}{b}{n} UtopiaExp-BoldItalic {T1}{put}{b}{it} UtopiaExp-Italic {T1}{put}{m}{it} UtopiaExp-Regular {T1}{put}{m}{n} UtopiaExp-Semibold {T1}{put}{s}{n} UtopiaExp-SemiboldItalic {T1}{put}{s}{it} VAGRounded-Black {T1}{pv}{m}{sc} VAGRounded-Bold {T1}{pvr}{b}{n} VAGRoundedBT-Regular {T1}{bvr}{m}{n} VAGRoundedBlackSSiBlack {T1}{kv}{m}{sc} VAGRoundedBlackSSiBold {T1}{kvr}{b}{n} VanDijckExpertMT {T1}{mvd}{m}{n} VanDijckExpertMT-Italic {T1}{mvd}{m}{it} VanDijckMT {T1}{mvd}{m}{n} VanDijckMT-Italic {T1}{mvd}{m}{it} VectoraLH-Bold {T1}{lvc}{b}{n} VectoraLH-BoldItalic {T1}{lvc}{b}{it} VectoraLH-Italic {T1}{lvc}{m}{it} VectoraLH-Roman {T1}{lvc}{m}{n} Veljovic-Bold {T1}{pvj}{b}{n} Veljovic-BoldItalic {T1}{pvj}{b}{it} Veljovic-Medium {T1}{pvj}{}{n} Veljovic-MediumItalic {T1}{pvj}{}{it} Venetian301BT-Bold {T1}{bur}{b}{n} Venetian301BT-BoldItalic {T1}{bur}{b}{it} Venetian301BT-Italic {T1}{bur}{m}{it} Venetian301BT-Roman {T1}{bur}{m}{n} VeracityBlackSSiBold {T1}{kut}{b}{n} VeracityBlackSSiBoldItalic {T1}{kut}{b}{it} VeracityProBlackSSiBold {T1}{kut}{b}{n} VeracityProBlackSSiBoldItalic {T1}{kut}{b}{it} VeracityProSSi {T1}{kut}{m}{n} VeracityProSSi-Bold {T1}{kut}{b}{n} VeracityProSSi-BoldItalic {T1}{kut}{b}{it} VeracityProSSi-Italic {T1}{kut}{m}{it} VeracityProSSi-SemiBold {T1}{kut}{s}{n} VeracityProSSi-SemiBoldItalic {T1}{kut}{s}{it} VeracityProSSiItalic {T1}{kut}{m}{it} VeracityProSSiSemiBold {T1}{kut}{s}{n} VeracityProSSiSemiBoldItalic {T1}{kut}{s}{it} VeracitySSi {T1}{kut}{m}{n} VeracitySSi-Bold {T1}{kut}{b}{n} VeracitySSi-BoldItalic {T1}{kut}{b}{it} VeracitySSi-Italic {T1}{kut}{m}{it} VeracitySSi-SemiBold {T1}{kut}{s}{n} VeracitySSi-SemiBoldItalic {T1}{kut}{s}{it} VeracitySSiItalic {T1}{kut}{m}{it} VeracitySSiSemiBold {T1}{kut}{s}{n} VeracitySSiSemiBoldItalic {T1}{kut}{s}{it} Versailles-Bold {T1}{pvl}{b}{n} Versailles-BoldItalic {T1}{pvl}{b}{it} Versailles-Italic {T1}{pvl}{m}{it} Versailles-Roman {T1}{pvl}{m}{n} VinetaBT-Regular {T1}{bv0}{m}{n} Visigoth {T1}{pvg}{m}{n} Viva-Regular {T1}{pvv}{m}{n} VoraceSSi-Bold {T1}{kvj}{b}{n} VoraceSSi-BoldItalic {T1}{kvj}{b}{it} VoraceSSi-Medium {T1}{kvj}{}{n} VoraceSSi-MediumItalic {T1}{kvj}{}{it} WaifSSi {T1}{kms}{m}{n} WalbaumBook-Bold {T1}{pwb}{b}{n} WalbaumBook-BoldExpert {T1}{pwb}{b}{n} WalbaumBook-BoldItalic {T1}{pwb}{b}{it} WalbaumBook-BoldItalicExpert {T1}{pwb}{b}{it} WalbaumBook-Italic {T1}{pwb}{m}{it} WalbaumBook-ItalicExpert {T1}{pwb}{m}{it} WalbaumBook-MdExpert {T1}{pwb}{}{n} WalbaumBook-MdItalicExpert {T1}{pwb}{}{it} WalbaumBook-Medium {T1}{pwb}{}{n} WalbaumBook-MediumItalic {T1}{pwb}{}{it} WalbaumBook-MediumSC {T1}{pwb}{}{sc} WalbaumBook-Regular {T1}{pwb}{m}{n} WalbaumBook-RegularExpert {T1}{pwb}{m}{n} WalbaumBook-RegularSC {T1}{pwb}{m}{sc} WalbaumExpMT {T1}{mwb}{m}{n} WalbaumExpMT-Italic {T1}{mwb}{m}{it} WalbaumExpMT-Medium {T1}{mwb}{}{n} WalbaumExpMT-MediumItalic {T1}{mwb}{}{it} WalbaumMT {T1}{mwb}{m}{n} WalbaumMT-Italic {T1}{mwb}{m}{it} WalbaumMT-Medium {T1}{mwb}{}{n} WalbaumMT-MediumItalic {T1}{mwb}{}{it} WalbaumSSi {T1}{kwb}{m}{n} WalbaumSSi-Bold {T1}{kwb}{b}{n} WalbaumSSi-BoldItalic {T1}{kwb}{b}{it} WalbaumSSi-BoldItalicOldStyleFigures {OT1}{kwb}{b}{it} WalbaumSSi-BoldOldStyleFigures {OT1}{kwb}{b}{n} WalbaumSSi-Italic {T1}{kwb}{m}{it} WalbaumSSi-ItalicOldStyleFigures {OT1}{kwb}{m}{it} WalbaumSSi-SmallCaps {T1}{kwb}{m}{sc} WantedPosterSSiBlack {T1}{kb0}{m}{n} WeddingTextBT-Regular {T1}{bw0}{m}{n} Weidemann-Bold {T1}{pwd}{b}{n} Weidemann-BoldItalic {T1}{pwd}{b}{it} Weidemann-Medium {T1}{pwd}{}{n} Weidemann-MediumItalic {T1}{pwd}{}{it} WeidemannITCbyBT-Bold {T1}{bwd}{b}{n} WeidemannITCbyBT-BoldItalic {T1}{bwd}{b}{it} Weiss {T1}{pws}{m}{n} Weiss-Bold {T1}{pws}{b}{n} Weiss-Italic {T1}{pws}{m}{it} WendyLP-Bold {T1}{pwh}{b}{n} WendyLP-Medium {T1}{pwh}{}{n} Wilke-Bold {T1}{pwk}{b}{n} Wilke-BoldItalic {T1}{pwk}{b}{it} Wilke-Italic {T1}{pwk}{m}{it} Wilke-Roman {T1}{pwk}{m}{n} Willow {T1}{pww}{m}{n} WindsorBT-Elongated {T1}{bwn}{m}{n} WindsorBT-Roman {T1}{bwn}{m}{n} WindsorMT {T1}{mwn}{m}{n} ZapfCalligraphic801BT-Bold {T1}{bpl}{b}{n} ZapfCalligraphic801BT-BoldItal {T1}{bpl}{b}{it} ZapfCalligraphic801BT-Italic {T1}{bpl}{m}{it} ZapfCalligraphic801BT-Roman {T1}{bpl}{m}{n} ZapfChancery-Bold {T1}{pzc}{b}{n} ZapfChancery-Italic {T1}{pzc}{m}{it} ZapfChancery-MediumItalic {T1}{pzc}{}{it} ZapfChancery-Roman {T1}{pzc}{m}{n} ZapfChanceryITCbyBT-Bold {T1}{bzc}{b}{n} ZapfChanceryITCbyBT-Medium {T1}{bzc}{}{n} ZapfChanceryITCbyBT-MediumItal {T1}{bzc}{}{it} ZapfElliptical711BT-Bold {T1}{bml}{b}{n} ZapfElliptical711BT-BoldItalic {T1}{bml}{b}{it} ZapfElliptical711BT-Italic {T1}{bml}{m}{it} ZapfElliptical711BT-Roman {T1}{bml}{m}{n} ZapfHumanist601BT-Bold {T1}{bop}{b}{n} ZapfHumanist601BT-BoldItalic {T1}{bop}{b}{it} ZapfHumanist601BT-Italic {T1}{bop}{m}{it} ZapfHumanist601BT-Roman {T1}{bop}{m}{n} ZeitgeistExpertMT {T1}{mzt}{m}{n} ZeitgeistExpertMT-Bold {T1}{mzt}{b}{n} ZeitgeistExpertMT-Cameo {T1}{zmztc}{}{n} ZeitgeistExpertMT-Condensed {T1}{mzt}{m}{n} ZeitgeistExpertMT-Italic {T1}{mzt}{m}{it} ZeitgeistMT {T1}{mzt}{m}{n} ZeitgeistMT-Alternative {OT1}{mzt}{m}{n} ZeitgeistMT-Bold {T1}{mzt}{b}{n} ZeitgeistMT-Cameo {T1}{zmztc}{}{n} ZeitgeistMT-Condensed {T1}{mzt}{m}{n} ZeitgeistMT-Italic {T1}{mzt}{m}{it} ZiptyDo {T1}{pzp}{m}{n} ZurichBT-Bold {T1}{bun}{b}{n} ZurichBT-BoldCondensed {T1}{bun}{b}{n} ZurichBT-BoldCondensedItalic {T1}{bun}{b}{it} ZurichBT-BoldExtended {T1}{bun}{bx}{n} ZurichBT-BoldItalic {T1}{bun}{b}{it} ZurichBT-Italic {T1}{bun}{m}{it} ZurichBT-ItalicCondensed {T1}{bun}{m}{it} ZurichBT-Roman {T1}{bun}{m}{n} ZurichBT-RomanCondensed {T1}{bun}{m}{n} ZurichBT-RomanExtended {T1}{bun}{m}{n} pstoedit-3.62/misc/Makefile.am0000744000175500010010000000037312137223653013211 00000000000000SUBDIRS=swffonts EXTRA_DIST=drvhpgl.pencolors latex2e.fmp mpost.fmp safer.ps svg.fmp wemf.fmp examplefigmap.fmp unix.fmp windows.fmp pkgdata_DATA=drvhpgl.pencolors latex2e.fmp mpost.fmp safer.ps svg.fmp wemf.fmp examplefigmap.fmp unix.fmp windows.fmp pstoedit-3.62/misc/Makefile.in0000644000175500010010000004121512137264203013215 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = misc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgdatadir)" pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = swffonts EXTRA_DIST = drvhpgl.pencolors latex2e.fmp mpost.fmp safer.ps svg.fmp wemf.fmp examplefigmap.fmp unix.fmp windows.fmp pkgdata_DATA = drvhpgl.pencolors latex2e.fmp mpost.fmp safer.ps svg.fmp wemf.fmp examplefigmap.fmp unix.fmp windows.fmp all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu misc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu misc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgdataDATA 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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgdataDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-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-pkgdataDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-pkgdataDATA # 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: pstoedit-3.62/misc/mpost.fmp0000774000175500000000000110277707336011010013023 00000000000000% % fontmap for mpost to be used by pstoedit % left column is the font name used in the document % right column is the font to be used in the output format % This file was provided by the author of the mpost driver, % Scott Pakin % ACaslon-AltBold pacb ACaslon-AltBoldItalic pacbi ACaslon-AltItalic pacri ACaslon-AltRegular pacr ACaslon-AltSemibold pacs ACaslon-AltSemiboldItalic pacsi ACaslon-Bold pacb ACaslon-BoldItalic pacbi ACaslon-BoldItalicOsF pacbij ACaslon-BoldOsF pacbj ACaslon-Italic pacri ACaslon-ItalicOsF pacrij ACaslon-Ornaments pacrp ACaslon-Regular pacr ACaslon-RegularSC pacrc ACaslon-Semibold pacs ACaslon-SemiboldItalic pacsi ACaslon-SemiboldItalicOsF pacsic ACaslon-SemiboldSC pacsc ACaslon-SwashBoldItalic pacbiw ACaslon-SwashItalic pacriw ACaslon-SwashSemiboldItalic pacsiw ACaslonExp-Bold pacb ACaslonExp-BoldItalic pacbi ACaslonExp-Italic pacri ACaslonExp-Regular pacr ACaslonExp-Semibold pacs ACaslonExp-SemiboldItalic pacsi AGaramond-Bold padb AGaramond-BoldItalic padbi AGaramond-BoldItalicOsF padbij AGaramond-BoldOsF padbj AGaramond-Italic padri AGaramond-ItalicOsF padrij AGaramond-Regular padr AGaramond-RegularSC padrc AGaramond-Semibold pads AGaramond-SemiboldItalic padsi AGaramond-SemiboldItalicOsF padsij AGaramond-SemiboldSC padsc AGaramond-Titling padrd AGaramondAlt-Italic padri AGaramondAlt-Regular padr AGaramondExp-Bold padb AGaramondExp-BoldItalic padbi AGaramondExp-Italic padri AGaramondExp-Regular padr AGaramondExp-Semibold pads AGaramondExp-SemiboldItalic padsi AJensonMM pajMM AJensonMM-Alt pajMM AJensonMM-Ep pajMM AJensonMM-It pajMMi AJensonMM-ItAlt pajMMi AJensonMM-ItEp pajMMi AJensonMM-ItSC pajMMic AJensonMM-SC pajMMc AJensonMM-Sw pajMMiw Aachen-Bold paab AachenBT-Bold baab AachenBT-Roman baar AbacusFourSSi kpi008 AbacusOneSSi kpi005 AbacusThreeSSi kpi007 AbacusTwoSSi kpi006 AbadiMT mair AbadiMT-Bold maib AbadiMT-BoldItalic maibi AbadiMT-Condensed mairc AbadiMT-CondensedBold maibc AbadiMT-CondensedExtraBold maixc AbadiMT-CondensedLight mailc AbadiMT-ExtraBold maix AbadiMT-ExtraBoldItalic maixi AbadiMT-ExtraLight maij AbadiMT-ExtraLightItalic maiji AbadiMT-Italic mairi AbadiMT-Light mail AbadiMT-LightItalic maili AcademiaSSi kuyr AcanthusBlackSSiBlack kglc AcanthusBlackSSiBlackItalic kglui AcanthusBlackSSiExtraBlack kglu AcanthusSSi kglr AcanthusSSi-Black kglc AcanthusSSi-BlackItalic kglci AcanthusSSi-Bold kglb AcanthusSSi-BoldItalic kglbi AcanthusSSi-ExtraBlack kglu AcanthusSSi-ExtraBlackItalic kglui AcanthusSSi-Italic kglri AcanthusSSiBold kglb AcanthusSSiBoldItalic kglbi AcanthusSSiItalic kglri AdLibBT-Regular ba3r AdvisorBlackSSiBlack klwm AdvisorBlackSSiBlackItalic klwci AdvisorMediumSSiMedium klwc AdvisorMediumSSiMediumItalic klwki AdvisorSSi klwk AdvisorSSi-Black klwc AdvisorSSi-BlackItalic klwci AdvisorSSi-Bold klwb AdvisorSSi-Italic klwki AdvisorSSi-Medium klwm AdvisorSSi-MediumItalic klwmi AdvisorSSiBold klwb AdvisorSSiItalic klwmi AirfoilScriptSSi khmr AkzidenzGroteskBE-Bold pazb AkzidenzGroteskBE-BoldCn pazbc AkzidenzGroteskBE-BoldEx pazbx AkzidenzGroteskBE-BoldExIt pazbix AkzidenzGroteskBE-BoldIt pazbi AkzidenzGroteskBE-Cn pazrc AkzidenzGroteskBE-Ex pazrx AkzidenzGroteskBE-It pazri AkzidenzGroteskBE-Light pazl AkzidenzGroteskBE-LightCn pazlc AkzidenzGroteskBE-LightEx pazlx AkzidenzGroteskBE-LightOsF pazlj AkzidenzGroteskBE-Md pazm AkzidenzGroteskBE-MdCn pazmc AkzidenzGroteskBE-MdCnIt pazmic AkzidenzGroteskBE-MdEx pazmx AkzidenzGroteskBE-MdIt pazmi AkzidenzGroteskBE-Regular pazr AkzidenzGroteskBE-Super pazr AkzidenzGroteskBE-XBd pazx AkzidenzGroteskBE-XBdCn pazxc AkzidenzGroteskBE-XBdCnIt pazxic AlamoSSi kcwr AlbertusMT malr AlbertusMT-Italic malri AlbertusMT-Light mall Aldine401BT-BoldA bbbb Aldine401BT-BoldItalicA bbbbi Aldine401BT-ItalicA bbbri Aldine401BT-RomanA bbbr Aldine721BT-Bold bpnb Aldine721BT-BoldItalic bpnbi Aldine721BT-Italic bpnri Aldine721BT-Light bpnl Aldine721BT-LightItalic bpnli Aldine721BT-Roman bpnr Aldus-Italic pasri Aldus-ItalicOsF pasrij Aldus-Roman pasr Aldus-RomanSC pasrc Alexa paxr AllegroBT-Regular ba5r AlmanacMT mpi101 AlternateGothicNo2BT-Regular ba4r AmasisMT ma2r AmasisMT-Black ma2c AmasisMT-BlackItalic ma2ci AmasisMT-Bold ma2b AmasisMT-BoldItalic ma2bi AmasisMT-Italic ma2ri AmasisMT-Light ma2l AmasisMT-LightItalic ma2li AmasisMT-Medium ma2m AmasisMT-MediumItalic ma2mi AmazoneBT-Regular bmzr AmeliaBT-Regular ba6r AmerTypewriterITCbyBT-Bold batb AmerTypewriterITCbyBT-Medium batm AmericanGaramondBT-Bold bg3b AmericanGaramondBT-BoldItalic bg3bi AmericanGaramondBT-Italic bg3ri AmericanGaramondBT-Roman bg3r AmericanTextBT-Regular ba7r AmericanTypewriter-Bold patb AmericanTypewriter-BoldA patba AmericanTypewriter-BoldCond patbc AmericanTypewriter-BoldCondA patbac AmericanTypewriter-Cond patrc AmericanTypewriter-CondA patrac AmericanTypewriter-Light patl AmericanTypewriter-LightA patla AmericanTypewriter-LightCond patlc AmericanTypewriter-LightCondA patlac AmericanTypewriter-Medium patm AmericanTypewriter-MediumA patma Americana pamr Americana-Bold pamb Americana-ExtraBold pamx Americana-Italic pamri AmericanaBT-Bold bamb AmericanaBT-ExtraBold bamx AmericanaBT-ExtraBoldCondensed bamxc AmericanaBT-Italic bamri AmericanaBT-Roman bamr AmerigoBT-BoldA beob AmerigoBT-BoldItalicA beobi AmerigoBT-ItalicA beori AmerigoBT-MediumA beom AmerigoBT-MediumItalicA beomi AmerigoBT-RomanA beor Anna panr AntiquaLightSSiLight kpql AntiquaSSi kpqr AntiquaSSi-Bold kpqb AntiquaSSi-Light kpql AntiquaSSiBold kpqb AntiqueOlive-Black paoc AntiqueOlive-Bold paob AntiqueOlive-BoldCond paobc AntiqueOlive-Compact paorp AntiqueOlive-Italic paori AntiqueOlive-Light paol AntiqueOlive-Nord paohix AntiqueOlive-NordItalic paohrx AntiqueOlive-Roman paor ApolloMT mapr ApolloMT-Expert mapr ApolloMT-Italic mapri ApolloMT-ItalicExpert mapri ApolloMT-ItalicOsF maprij ApolloMT-SC maprc ApolloMT-SemiBold maps ApolloMT-SemiBoldExpert maps ApolloMT-SemiBoldOsF mapsj AppleChancery eecr AquaLifeMT mpi302 ArabesqueOrnamentsOne mpi003 Arcadia parr Arcadia-A parra ArialMT ma1r ArialMT-Black ma1c ArialMT-BlackItalic ma1ci ArialMT-Bold ma1b ArialMT-BoldItalic ma1bi ArialMT-Condensed ma1rc ArialMT-CondensedBold ma1brc ArialMT-CondensedExtraBold ma1xc ArialMT-CondensedLight ma1lc ArialMT-ExtraBold ma1x ArialMT-ExtraBoldItalic ma1xi ArialMT-Italic ma1ri ArialMT-Light ma1l ArialMT-LightItalic ma1li ArialMT-Medium ma1m ArialMT-MediumItalic ma1mi ArialMonospacedMT ma1rt ArialMonospacedMT-Bold ma1bt ArialMonospacedMT-BoldObliq ma1bot ArialMonospacedMT-Oblique ma1ro ArialNarrowMT ma1rn ArialNarrowMT-Bold ma1bn ArialNarrowMT-BoldItalic ma1bin ArialNarrowMT-Italic ma1rin ArialRoundedMT mhrr ArialRoundedMT-Bold mhrb ArialRoundedMT-ExtraBold mhrx ArialRoundedMT-Light mhrl ArialSFMT ma1r ArialSFMT-Bold ma1b ArialSFMT-BoldItalic ma1bi ArialSFMT-Italic ma1ri Arkona-Medium pakm Arkona-Regular pakr ArnoldBoecklin pabr ArrusBT-Black brsc ArrusBT-BlackItalic brsci ArrusBT-Bold brsb ArrusBT-BoldItalic brsbi ArrusBT-Italic brsri ArrusBT-Roman brsr ArtDecoSSi kabr AshleyScriptMT mahr AssemblyOutlineSSi kinrh AssemblyOutlineSSi-Alternate kinrha AssemblyOutlineSSiAlternate kinrha AssemblySSi kinr AssemblySSi-Alternate kinra AssemblySSiAlternate kinra AstuteBlackSSiExtraBold krwx AstuteCondensedSSiBoldCondensed krwbc AstuteCondensedSSiCondensed krwrc AstuteLightSSiLight krwl AstuteLightSSiLightItalic krwli AstuteSSi krwr AstuteSSi-Bold krwb AstuteSSi-BoldCondensed krwbc AstuteSSi-BoldItalic krwbi AstuteSSi-Condensed krwrc AstuteSSi-ExtraBold krwx AstuteSSi-Italic krwri AstuteSSi-Light krwl AstuteSSi-LightItalic krwli AstuteSSiBold krwb AstuteSSiBoldItalic krwbi AstuteSSiItalic krwri AtlantixBlackSSiBlack kmnc AtlantixBlackSSiBold kmnb AtlantixBlackSSiBoldItalic kmnbi AtlantixDisplaySSiDisplayItalic kmnrdi AtlantixDisplaySSiDisplayRegular kmnrd AtlantixOrnamentsSSi kmnrp AtlantixProBlackSSiBlack kmnc AtlantixProBlackSSiBold kmnb AtlantixProBlackSSiBoldItalic kmnbi AtlantixProDisplaySSiDisplayItalic kmnrdi AtlantixProDisplaySSiDisplayRegular kmnrd AtlantixProSSi kmnr AtlantixProSSi-Black kmnc AtlantixProSSi-Bold kmnb AtlantixProSSi-BoldItalic kmnbi AtlantixProSSi-DisplayItalic kmnrdi AtlantixProSSi-DisplayRegular kmnrd AtlantixProSSi-Italic kmnri AtlantixProSSi-SemiBold kmns AtlantixProSSi-SemiBoldItalic kmnsi AtlantixProSSiItalic kmnri AtlantixProSSiSemiBold kmns AtlantixProSSiSemiBoldItalic kmnsi AtlantixSSi kmnr AtlantixSSi-Black kmnc AtlantixSSi-Bold kmnb AtlantixSSi-BoldItalic kmnbi AtlantixSSi-DisplayItalic kmnrdi AtlantixSSi-DisplayRegular kmnrd AtlantixSSi-Italic kmnri AtlantixSSi-SemiBold kmns AtlantixSSi-SemiBoldItalic kmnsi AtlantixSSiItalic kmnri AtlantixSSiSemiBold kmns AtlantixSSiSemiBoldItalic kmnsi AtlantixSwashDisplaySSiDisplayItalic kmnrdiw AtlantixSwashSSi-DisplayItalic kmnrdiw AtlantixSwashSSi-Italic kmnriw AtlantixSwashSSi-SemiBoldItalic kmnsiw AtlantixSwashSSiItalic kmnriw AtlantixSwashSSiSemiBoldItalic kmnsiw AudioLH-Pi lpi003 Auriol paur Auriol-Black pauc Auriol-BlackItalic pauci Auriol-Bold paub Auriol-BoldItalic paubi Auriol-Italic pauri AuroraBT-BoldCondensed ba8bc AustereBlackSSiBlack kloc AustereLightSSiExtraLight kloi AustereLightSSiLight klol AustereSSi klor AustereSSi-Black kloc AustereSSi-Bold klob AustereSSi-ExtraLight kloi AustereSSi-Light klol AustereSSiBold klob AutomatonCapsLightSSiLight kmhr AutomatonCapsSSi kmhb AutomatonCapsSSi-Light kmhr AvantGarde-Bold pagb AvantGarde-BoldObl pagbo AvantGarde-Book pagk AvantGarde-BookOblique pagko AvantGarde-CondBold pagbc AvantGarde-CondBook pagkc AvantGarde-CondDemi pagdc AvantGarde-CondMedium pagmc AvantGarde-Demi pagd AvantGarde-DemiOblique pagdo AvantGarde-ExtraLight pagi AvantGarde-ExtraLightObl pagio AvantGarde-Medium pagm AvantGarde-MediumObl pagmo AvantGardeITCbyBT-Book bagk AvantGardeITCbyBT-BookOblique bagko AvantGardeITCbyBT-Medium bagm AvantGardeITCbyBT-MediumOblique bagmo Avenir-Black pavc Avenir-BlackOblique pavco Avenir-Book pavk Avenir-BookOblique pavko Avenir-Heavy pavh Avenir-HeavyOblique pavho Avenir-Light pavl Avenir-LightOblique pavlo Avenir-Medium pavm Avenir-MediumOblique pavmo Avenir-Oblique pavro Avenir-Roman pavr AxiomaticBlackSSiBlack kggc AxiomaticBlackSSiExtraBold kggx AxiomaticCondensedSSiBoldCondensed kggbrc AxiomaticCondensedSSiCondensed kggrc AxiomaticSSi kggr AxiomaticSSi-Black kggc AxiomaticSSi-Bold kggb AxiomaticSSi-BoldCondensed kggbrc AxiomaticSSi-BoldItalic kggbi AxiomaticSSi-Condensed kggrc AxiomaticSSi-ExtraBold kggx AxiomaticSSi-Italic kggri AxiomaticSSiBold kggb AxiomaticSSiBoldItalic kggbi AxiomaticSSiItalic kggri BakerSignet pbsr BakerSignetBT-Roman bbsr BalloonBT-Bold bbob BalloonBT-ExtraBold bbox BalloonBT-Light bbol Balzano pbzr Banco pbcr BangaSSi kdcr BankGothicBT-Light bkgl BankGothicBT-Medium bkgm Barmeno-Bold pbab Barmeno-ExtraBold pbax Barmeno-Medium pbam Barmeno-Regular pbar BarristerCondensedSSiCondensed kblrc BarristerLightSSiLight kbll BarristerSSi kblm BarristerSSi-Bold kblb BarristerSSi-Condensed kblrc BarristerSSi-Light kbll BarristerSSiBold kblb BaskervilleBE-Bold pebb BaskervilleBE-Italic mebri BaskervilleBE-Medium mebm BaskervilleBE-MediumItalic mebmi BaskervilleBE-Regular mebr BaskervilleBlackSSiBold knbb BaskervilleBlackSSiBoldItalic knbbi BaskervilleBook-Italic pbvri BaskervilleBook-MedItalic pbvmi BaskervilleBook-Medium pbvm BaskervilleBook-Regular pbvr BaskervilleCyr-Bold pbvbz BaskervilleCyr-Inclined pbvboz BaskervilleCyr-Upright pbvrz BaskervilleMT mbvr BaskervilleMT-Bold mbvb BaskervilleMT-BoldItalic mbvbi BaskervilleMT-Italic mbvri BaskervilleMT-SemiBold mbvs BaskervilleMT-SemiBoldItalic mbvsi BaskervilleOldStyleSSiBold knbbi BaskervilleOldStyleSSiNormal knbri BaskervilleSSi knbr BaskervilleSSi-Bold knbb BaskervilleSSi-BoldItalic knbbi BaskervilleSSi-BoldItalicOldStyleFigures knbbi BaskervilleSSi-BoldSmallCaps knbbc BaskervilleSSi-Italic knbri BaskervilleSSi-ItalicOldStyleFigures knbri BaskervilleSSi-Light knbl BaskervilleSSi-LightItalic knbli BaskervilleSSi-SemiBold knbs BaskervilleSSi-SemiBoldItalic knbsi BaskervilleSSi-SmallCaps knbrc BaskervilleSSiItalic knbri BaskervilleSmallCapsSSiBoldSmallCaps knbbc BaskervilleSmallCapsSSiSmallCaps knbrc BaubleSSiBlack kftrf BauerBodoni-Black pubc BauerBodoni-BlackCond pubcc BauerBodoni-BlackItalic pubci BauerBodoni-Bold pubb BauerBodoni-BoldCond pubbc BauerBodoni-BoldItalic pubbi BauerBodoni-BoldItalicOsF pubbij BauerBodoni-BoldOsF pubbj BauerBodoni-Italic pubri BauerBodoni-ItalicOsF pubrij BauerBodoni-Roman pubr BauerBodoni-RomanSC pubrc BauerBodoniBT-Black bubc BauerBodoniBT-BlackCondensed bubcc BauerBodoniBT-BlackItalic bubci BauerBodoniBT-Bold bubb BauerBodoniBT-BoldCondensed bubbc BauerBodoniBT-BoldItalic bubbi BauerBodoniBT-Italic bubri BauerBodoniBT-Roman bubr BauerBodoniBT-Titling bubrd Bauhaus-Bold pbhb Bauhaus-Demi pbhd Bauhaus-Heavy pbhh Bauhaus-Light pbhl Bauhaus-Medium pbhm BauhausITCbyBT-Bold bbhb BauhausITCbyBT-Heavy bbhh BauhausITCbyBT-Light bbhl BauhausITCbyBT-Medium bbhm BellExpertMT mber BellExpertMT-Alt mbera BellExpertMT-AltSemiBold mbesa BellExpertMT-Bold mbeb BellExpertMT-BoldItalic mbebi BellExpertMT-Italic mberi BellExpertMT-SemiBold mbes BellExpertMT-SemiBoldItalic mbesi BellGothic-Black pbec BellGothic-Bold pbeb BellGothic-Light pbel BellMT mber BellMT-Alt mber BellMT-AltItalic mberi BellMT-AltSemiBold mbes BellMT-AltSemiBoldItalic mbesi BellMT-Bold mbeb BellMT-BoldItalic mbebi BellMT-Italic mberi BellMT-SemiBold mbes BellMT-SemiBoldItalic mbesi Bellevue pqsr Belwe-Bold pblb Belwe-Condensed pblrc Belwe-Light pbll Belwe-Medium pblm BelweBT-Bold bblb BelweBT-Light bbll BelweBT-Medium bblm BelweBT-RomanCondensed bblrc Bembo pbbr Bembo-Bold pbbb Bembo-BoldExpert pbbb Bembo-BoldItalic pbbbi Bembo-BoldItalicExpert pbbbi Bembo-BoldItalicOsF pbbbij Bembo-BoldOsF pbbbj Bembo-Expert pbbr Bembo-ExtraBold pbbx Bembo-ExtraBoldExpert pbbx Bembo-ExtraBoldItalic pbbxi Bembo-ExtraBoldItalicExpert pbbxi Bembo-ExtraBoldItalicOsF pbbxij Bembo-ExtraBoldOsF pbbxj Bembo-Italic pbbri Bembo-ItalicExpert pbbri Bembo-ItalicOsF pbbrij Bembo-SC pbbrc Bembo-Semibold pbbs Bembo-SemiboldExpert pbbs Bembo-SemiboldItalic pbbsi Bembo-SemiboldItalicExpert pbbsi Bembo-SemiboldItalicOsF pbbsij Bembo-SemiboldOsF pbbsj BemboExpertMT mbbr BemboExpertMT-Bold mbbb BemboExpertMT-BoldItalic mbbbi BemboExpertMT-ExtraBold mbbx BemboExpertMT-ExtraBoldItalic mbbxi BemboExpertMT-Italic mbbri BemboExpertMT-SemiBold mbbs BemboExpertMT-SemiBoldItalic mbbsi BemboMT mbbr BemboMT-Alt mbbr BemboMT-AltBold mbbb BemboMT-AltBoldItalic mbbbi BemboMT-AltExtraBold mbbx BemboMT-AltItalic mbbri BemboMT-AltSemiBold mbbs BemboMT-AltSemiBoldItalic mbbsi BemboMT-Bold mbbb BemboMT-BoldItalic mbbbi BemboMT-ExtraBold mbbx BemboMT-ExtraBoldItalic mbbxi BemboMT-Schlbk mbbrn BemboMT-SchlbkBold mbbbn BemboMT-SchlbkBoldItalic mbbbin BemboMT-SchlbkItalic mbbrin BemboMT-Semibold mbbs BemboMT-SemiboldItalic mbbsi BemboMTItalic mbbri BemboTitlingMT mbbrd BemboTitlingMT-Italic mbbrdi Benguiat-Bold pbgb Benguiat-BoldItalic pbgbi Benguiat-Book pbgk Benguiat-BookItalic pbgki Benguiat-Medium pbgm Benguiat-MediumItalic pbgmi BenguiatGothic-Bold pugb BenguiatGothic-BoldOblique pugbo BenguiatGothic-Book pugk BenguiatGothic-BookOblique pugko BenguiatGothic-Heavy pugh BenguiatGothic-HeavyOblique pugho BenguiatGothic-Medium pugm BenguiatGothic-MediumOblique pugmo BenguiatGothicITCbyBT-Bold bugb BenguiatGothicITCbyBT-BoldItal bugbi BenguiatGothicITCbyBT-Book bugk BenguiatGothicITCbyBT-BookItal bugki BenguiatITCbyBT-Bold bbgb BenguiatITCbyBT-BoldItalic bbgbi BenguiatITCbyBT-Book bbgk BenguiatITCbyBT-BookItalic bbgki Berkeley-Black pbyc Berkeley-BlackItalic pbyci Berkeley-Bold pbyb Berkeley-BoldItalic pbybi Berkeley-Book pbyk Berkeley-BookItalic pbyki Berkeley-Italic pbymi Berkeley-Medium pbym Berling-Bold pbrb Berling-BoldItalic pbrbi Berling-Italic pbrri Berling-Roman pbrr BernardMT-Condensed mbnrc Bernhard-BoldCondensed pb7bc BernhardBoldCondensedBT-Regular bb7bc BernhardFashionBT-Regular bb7rn BernhardModern-Bold pb7r BernhardModern-BoldItalic pb7bi BernhardModern-Italic pb7ri BernhardModern-Roman pb7r BernhardModernBT-Bold bb7b BernhardModernBT-BoldItalic bb7bi BernhardModernBT-Italic bb7ri BernhardModernBT-Roman bb7r BernhardTangoBT-Regular bb7rw BiffoMT mbfr BinnerGothicMT mn1r BinnerPosterMT mn1p BinnyOldStyleMT mb2r BinnyOldStyleMT-Italic mb2ri Birch pbir BlackfordOldStyleSSiBoldOldStyleFigures ktvbi BlackfordOldStyleSSiNormal ktvri BlackfordOldStyleSSiSmallCaps ktvrc BlackfordSSi ktvr BlackfordSSi-Bold ktvb BlackfordSSi-BoldItalic ktvbi BlackfordSSi-BoldOldStyleFigures ktvbi BlackfordSSi-Italic ktvri BlackfordSSi-ItalicOldStyleFigures ktvri BlackfordSSi-SmallCaps ktvrc BlackfordSSiBold ktvb BlackfordSSiBoldItalic ktvbi BlackfordSSiItalic ktvri Blackoak pb0r BladoExpertMT-Italic mb1ri BladoMT-Italic mb1ri BlippoBT-Black bb8c BlocSSiBold kaab BlockBE-Condensed pb6rc BlockBE-ExtraCn pb6rq BlockBE-ExtraCnIt pb6riq BlockBE-Heavy pb6h BlockBE-Italic pb6ri BlockBE-Regular pb6r BlueprintMT mp6r BlueprintMT-Bold mp6b BlueprintMT-BoldItalic mp6bi BlueprintMT-Italic mp6ri Bodoni pbdr Bodoni-Bold pbdb Bodoni-BoldCondensed pbdbc Bodoni-BoldItalic pbdbi Bodoni-Book pbdk Bodoni-BookItalic pbdki Bodoni-Italic pbdri Bodoni-Poster pbdp Bodoni-PosterCompressed pbdpp Bodoni-PosterItalic pbdpi BodoniBE-Bold ptbb BodoniBE-BoldCn ptbbc BodoniBE-BoldCnItalic ptbbic BodoniBE-BoldExp ptbb BodoniBE-BoldItalic ptbbi BodoniBE-BoldItalicExp ptbbi BodoniBE-BoldItalicOsF ptbbij BodoniBE-BoldOsF ptbbj BodoniBE-CnItalic ptbric BodoniBE-Condensed ptbrc BodoniBE-Italic ptbri BodoniBE-ItalicExp ptbri BodoniBE-ItalicOsF ptbrij BodoniBE-Light ptbl BodoniBE-LightExp ptbl BodoniBE-LightItalic ptbli BodoniBE-LightItalicExp ptbli BodoniBE-LightItalicOsF ptblij BodoniBE-LightSC ptblc BodoniBE-Medium ptbm BodoniBE-MediumCn ptbmc BodoniBE-MediumCnItalic ptbmic BodoniBE-MediumExp ptbm BodoniBE-MediumItalic ptbmi BodoniBE-MediumItalicExp ptbmi BodoniBE-MediumItalicOsF ptbmij BodoniBE-MediumSC ptbmc BodoniBE-Regular ptbr BodoniBE-RegularExp ptbr BodoniBE-RegularSC ptbrc BodoniBT-Bold bbdb BodoniBT-BoldCondensed bbdbc BodoniBT-BoldItalic bbdbi BodoniBT-Book bbdk BodoniBT-BookItalic bbdki BodoniBT-Italic bbdri BodoniBT-Roman bbdr BodoniBookSSiBook kbdk BodoniCondensedSSiBoldCondensed kbdbc BodoniMT mbdr BodoniMT-Black mbdc BodoniMT-BlackItalic mbdci BodoniMT-Bold mbdb BodoniMT-BoldItalic mbdbi BodoniMT-Book mbdk BodoniMT-BookItalic mbdki BodoniMT-CondensedBold mbdbc BodoniMT-CondensedBoldItalic mbdbic BodoniMT-Italic mbdri BodoniMT-UltraBold mbdu BodoniMT-UltraBoldItalic mbdui BodoniPosterCondensedSSiPosterCondensed kbdpp BodoniPosterSSi kbdp BodoniPosterSSiBookItalic kbdki BodoniPosterSSiPosterBold kbdc BodoniPosterSSiPosterItalic kbdpi BodoniRecutBlackCondensedSSiNormal kubcc BodoniRecutBlackSSiBlack kubc BodoniRecutBlackSSiBlackItalic kubci BodoniRecutOldStyleSSiBold kubbi BodoniRecutOldStyleSSiNormal kubri BodoniRecutOldStyleSSiSmallCaps kubrc BodoniRecutSSi kubr BodoniRecutSSi-Black kubc BodoniRecutSSi-BlackCondensed kubcc BodoniRecutSSi-BlackItalic kubci BodoniRecutSSi-Bold kubb BodoniRecutSSi-BoldCondensed kubbc BodoniRecutSSi-BoldItalic kubbi BodoniRecutSSi-BoldItalicOldStyleFigures kubbi BodoniRecutSSi-BoldOldStyleFigures kubb BodoniRecutSSi-Italic kubri BodoniRecutSSi-ItalicOldStyleFigures kubri BodoniRecutSSi-SmallCaps kubrc BodoniRecutSSiBold kubb BodoniRecutSSiBoldItalic kubbi BodoniRecutSSiItalic kubri BodoniSSi kbdr BodoniSSi-Bold kbdb BodoniSSi-BoldCondensed kbdbc BodoniSSi-BoldItalic kbdbi BodoniSSi-Book kbdk BodoniSSi-BookItalic kbdki BodoniSSi-Italic kbdri BodoniSSi-Poster kbdp BodoniSSi-PosterBold kbdc BodoniSSi-PosterCondensed kbdpp BodoniSSi-PosterItalic kbdpi BodoniSSiBold kbdb BodoniSSiBoldItalic kbdbi BodoniSSiItalic kbdri BoffoSSi khbr BonApetit mpi303 BookAntiqua mplr BookAntiqua-Bold mplb BookAntiqua-BoldItalic mplbi BookAntiqua-Italic mplri Bookman-Bold pbkb Bookman-BoldItalic pbkbi Bookman-Demi pbkd Bookman-DemiItalic pbkdi Bookman-Light pbkl Bookman-LightItalic pbkli Bookman-Medium pbkm Bookman-MediumItalic pbkmi BookmanBlackSSiBold kbkb BookmanBlackSSiNormal kbkbi BookmanITCbyBT-Demi bbkd BookmanITCbyBT-DemiItalic bbkdi BookmanITCbyBT-Light bbkl BookmanITCbyBT-LightItalic bbkli BookmanLightSSiLight kbkl BookmanLightSSiLightItalic kbkli BookmanOldStyle mkor BookmanOldStyle-Bold mkob BookmanOldStyle-BoldItalic mkobi BookmanOldStyle-Italic mkori BookmanSSi kbkm BookmanSSiItalic kbkmi BookmanSSiSemiBold kbkd BookmanSSiSemiBoldItalic kbkdi BoostLightSSiLight kspl BoostLightSSiLightItalic ksplo BoostSSi kspm BoostSSi-Bold kspb BoostSSi-BoldItalic kspbo BoostSSi-Italic kspmo BoostSSi-Light kspl BoostSSi-LightItalic ksplo BoostSSiBold kspb BoostSSiBoldItalic kspbo BoostSSiItalic kspmo BorderPi-OneFiveOneFiveNine ppi001 BotanicalMT mpi102 Boton-Bold pbtb Boton-BoldItalic pbtbi Boton-Italic mbtri Boton-Light pbtl Boton-LightItalic pbtli Boton-Medium mbtm Boton-MediumItalic mbtmi Boton-Regular mbtr Boulevard mqtr BravoScriptSSi ksrrw BremenBT-Black bb9c BremenBT-Bold bb9b BroadwayBT-Regular bbwr BroadwayEngravedBT-Regular bbwre Brush445BT-Regular bp3r Brush738BT-RegularA bb4r BrushScript pburw BrushScriptBT-Regular bburw BrushScriptMT mbur BskvillExpMT mbvr BskvillExpMT-Bold mbvb BskvillExpMT-BoldItalic mbvbi BskvillExpMT-Italic mbvri BskvillExpMT-SemiBold mbvs BskvillExpMT-SemiBoldItalic mbvsi BulmerMT-Bold mbmb BulmerMT-BoldAlt mbmb BulmerMT-BoldDisplay mbmbd BulmerMT-BoldDisplayAlt mbmbd BulmerMT-BoldExpert mbmb BulmerMT-BoldItalDisplayAlt mbmbdi BulmerMT-BoldItalic mbmbi BulmerMT-BoldItalicAlt mbmbi BulmerMT-BoldItalicDisplay mbmbdi BulmerMT-BoldItalicExpert mbmbi BulmerMT-Italic mbmri BulmerMT-ItalicAlt mbmri BulmerMT-ItalicDisplay mbmrdi BulmerMT-ItalicDisplayAlt mbmrdi BulmerMT-ItalicExpert mbmri BulmerMT-Regular mbmr BulmerMT-RegularAlt mbmr BulmerMT-RegularDisplay mbmrd BulmerMT-RegularDisplayAlt mbmrd BulmerMT-RegularExpert mbmr BulmerMT-RegularSC mbmrc BulmerMT-SemiBold mbms BulmerMT-SemiBoldAlt mbms BulmerMT-SemiBoldExpert mbms BulmerMT-SemiBoldItalExpert mbmsi BulmerMT-SemiBoldItalic mbmsi BulmerMT-SemiBoldItalicAlt mbmsi BulmerMT-SemiBoldSC mbmss BundesbahnPi-One ppi002 BundesbahnPi-Three ppi004 BundesbahnPi-Two ppi003 CMB10 cmb10 CMBSY10 cmbsy10 CMBX10 cmbx10 CMBX12 cmbx12 CMBX5 cmbx5 CMBX6 cmbx6 CMBX7 cmbx7 CMBX8 cmbx8 CMBX9 cmbx9 CMBXSL10 cmbxsl10 CMBXTI10 cmbxti10 CMCSC10 cmcsc10 CMDUNH10 cmdunh10 CMEX10 cmex10 CMEXNEWS cmexnews CMFF10 cmff10 CMFI10 cmfi10 CMFIB8 cmfib8 CMINCH cminch CMITT10 cmitt10 CMMI10 cmmi10 CMMI12 cmmi12 CMMI5 cmmi5 CMMI6 cmmi6 CMMI7 cmmi7 CMMI8 cmmi8 CMMI9 cmmi9 CMMIB10 cmmib10 CMR10 cmr10 CMR12 cmr12 CMR17 cmr17 CMR5 cmr5 CMR6 cmr6 CMR7 cmr7 CMR8 cmr8 CMR9 cmr9 CMSL10 cmsl10 CMSL12 cmsl12 CMSL8 cmsl8 CMSL9 cmsl9 CMSLTT10 cmsltt10 CMSS10 cmss10 CMSS12 cmss12 CMSS17 cmss17 CMSS8 cmss8 CMSS9 cmss9 CMSSBX10 cmssbx10 CMSSDC10 cmssdc10 CMSSI10 cmssi10 CMSSI12 cmssi12 CMSSI17 cmssi17 CMSSI8 cmssi8 CMSSI9 cmssi9 CMSSQ8 cmssq8 CMSSQI8 cmssqi8 CMSY10 cmsy10 CMSY5 cmsy5 CMSY6 cmsy6 CMSY7 cmsy7 CMSY8 cmsy8 CMSY9 cmsy9 CMTCSC10 cmtcsc10 CMTEX10 cmtex10 CMTEX8 cmtex8 CMTEX9 cmtex9 CMTI10 cmti10 CMTI12 cmti12 CMTI7 cmti7 CMTI8 cmti8 CMTI9 cmti9 CMTT10 cmtt10 CMTT12 cmtt12 CMTT8 cmtt8 CMTT9 cmtt9 CMU10 cmu10 CMVTT10 cmvtt10 Caecilia-Bold pilb Caecilia-BoldItalic pilbi Caecilia-BoldItalicOsF pilbij Caecilia-BoldItalicSC pilbic Caecilia-BoldOsF pilbj Caecilia-BoldSC pilbc Caecilia-Heavy pilh Caecilia-HeavyItalic pilhi Caecilia-HeavyItalicOsF pilhij Caecilia-HeavyItalicSC pilhic Caecilia-HeavyOsF pilhj Caecilia-HeavySC pilhc Caecilia-Italic pilri Caecilia-ItalicOsF pilrij Caecilia-ItalicSC pilric Caecilia-Light pill Caecilia-LightItalic pilli Caecilia-LightItalicOsF pillij Caecilia-LightItalicSC pillc Caecilia-LightOsF pillj Caecilia-LightSC pillic Caecilia-Roman pilr Caecilia-RomanOsF pilrj Caecilia-RomanSC pilrc CalistoMT mc1r CalistoMT-Bold mc1b CalistoMT-BoldItalic mc1bi CalistoMT-Italic mc1ri Calligraphic421BT-RomanB bc9r Calligraphic810BT-Italic bdiri Calligraphic810BT-Roman bdir CalvertMT mc8r CalvertMT-Bold mc8b CalvertMT-Light mc8l CalvertMT-Medium mc8m Candida-Bold pcib Candida-Italic pciri Candida-Roman pcir CantinaExpandedSSiSemiExpanded kiwrx CantinaSSi kiwr CantinaSSi-SemiExpanded kiwrx CantoriaMT mr2r CantoriaMT-Bold mr2b CantoriaMT-BoldItalic mr2bi CantoriaMT-ExtraBold mr2x CantoriaMT-ExtraBoldItalic mr2xi CantoriaMT-Italic mr2ri CantoriaMT-Light mr2l CantoriaMT-LightItalic mr2li CantoriaMT-SemiBold mr2s CantoriaMT-SemiBoldItalic mr2si CaravanLH-Four lpi008 CaravanLH-One lpi005 CaravanLH-Three lpi007 CaravanLH-Two lpi006 CarminaBT-Black brmc CarminaBT-BlackItalic brmci CarminaBT-Bold brmb CarminaBT-BoldItalic brmbi CarminaBT-Light brml CarminaBT-LightItalic brmli CarminaBT-Medium brmm CarminaBT-MediumItalic brmmi Carolina pc0r Carolina-Dfr pc0ra Carta prtr CartographerLightSSiLight krtl CartographerSSi krtr CartographerSSi-Light krtl CascadeScript pccrw Caslon224ITCbyBT-Bold bc2b Caslon224ITCbyBT-BoldItalic bc2bi Caslon224ITCbyBT-Book bc2k Caslon224ITCbyBT-BookItalic bc2ki Caslon540BT-Italic bc5ri Caslon540BT-Roman bc5r CaslonAlternateBlackSSiBold kacb CaslonAlternateBlackSSiBoldItalic kacbi CaslonAlternateSSiAlternateSemiBoldItalic kacsi CaslonAlternateSSiItalic kacri CaslonAlternateSSiRoman kacr CaslonAlternateSSiSemiBold kacs CaslonBT-Bold bcab CaslonBT-BoldItalic bcabi CaslonBlackSSiBold kacb CaslonBlackSSiBoldItalic kacbi CaslonBookBE-Bold pcab CaslonBookBE-BoldExp pcab CaslonBookBE-BoldOsF pcabj CaslonBookBE-Italic pcari CaslonBookBE-ItalicExp pcari CaslonBookBE-ItalicOsF pcarij CaslonBookBE-Medium pcam CaslonBookBE-MediumExp pcam CaslonBookBE-MediumSC pcamc CaslonBookBE-Regular pcar CaslonBookBE-RegularExp pcar CaslonBookBE-RegularSC pcarc CaslonFiveForty-Italic pc5ri CaslonFiveForty-ItalicOsF pc5rij CaslonFiveForty-Roman pc5r CaslonFiveForty-RomanSC pc5rc CaslonFiveSSi kc5r CaslonFiveSSiItalic kc5ri CaslonOpenFace pcarl CaslonOpenFaceSSi kacrl CaslonOpenfaceBT-Regular bcarl CaslonOrnamentsSSiOrnaments kacrp CaslonProBlackSSiBold kacb CaslonProBlackSSiBoldItalic kacbi CaslonProSSi kacr CaslonProSSiItalic kacri CaslonProSSiSemiBold kacs CaslonProSSiSemiBoldItalic kacsi CaslonSSi kacr CaslonSSiItalic kacri CaslonSSiSemiBold kacs CaslonSSiSemiBoldItalic kacsi CaslonSwashSSiBoldItalic kacbiw CaslonSwashSSiItalic kacriw CaslonSwashSSiSemiBoldItalic kacsiw CaslonThree-Italic pc3ri CaslonThree-ItalicOsF pc3rij CaslonThree-Roman pc3r CaslonThree-RomanSC pc3rc CaslonThreeSSi kc3r CaslonThreeSSiItalic kc3ri CaslonTitlingMT mcard CaslonTwoBlackSSiBlack kc2c CaslonTwoBlackSSiBlackItalic kc2ci CaslonTwoMediumSSiMedium kc2m CaslonTwoMediumSSiMediumItalic kc2mi CaslonTwoSSi kc2k CaslonTwoSSiBold kc2b CaslonTwoSSiItalic kc2ki CaslonTwoTwentyFour-Black pc2c CaslonTwoTwentyFour-BlackIt pc2ci CaslonTwoTwentyFour-Bold pc2b CaslonTwoTwentyFour-BoldIt pc2bi CaslonTwoTwentyFour-Book pc2k CaslonTwoTwentyFour-BookIt pc2ki CaslonTwoTwentyFour-Medium pc2m CaslonTwoTwentyFour-MediumIt pc2mi CastellarMT mtlr Caxton-Bold pcxb Caxton-BoldItalic pcxbi Caxton-Book pcxk Caxton-BookItalic pcxki Caxton-Light pcxl Caxton-LightItalic pcxli CaxtonBT-Bold bcxb CaxtonBT-BoldItalic bcxbi CaxtonBT-Book bcxk CaxtonBT-BookItalic bcxki CaxtonBT-Light bcxl CaxtonBT-LightItalic bcxli CentSchlbookPS mncr CentSchlbookPS-Bold mncb CentSchlbookPS-BoldItalic mncbi CentSchlbookPS-Italic mncri CentaurExpertMT murr CentaurExpertMT-Bold murb CentaurExpertMT-BoldItalic murbi CentaurExpertMT-Italic murri CentaurMT murr CentaurMT-Alt murr CentaurMT-AltBold murb CentaurMT-AltBoldItalic murbi CentaurMT-AltItalic murri CentaurMT-Bold murb CentaurMT-BoldExpert murb CentaurMT-BoldItalic murbi CentaurMT-BoldItalicExpert murbi CentaurMT-BoldItalicOsF murbij CentaurMT-BoldOsF murbj CentaurMT-Expert murr CentaurMT-Italic murri CentaurMT-ItalicA murrai CentaurMT-ItalicAlternate murri CentaurMT-ItalicExpert murri CentaurMT-ItalicOsF murrij CentaurMT-SC murrc CentaurMT-SwashCapitals murriw CentaurSwashMT murrw Centennial-Black pcec Centennial-BlackItalic pceci Centennial-BlackItalicOsF pcecij Centennial-BlackOsF pcecj Centennial-Bold pceb Centennial-BoldItalic pcebi Centennial-BoldItalicOsF pcebij Centennial-BoldOsF pcebj Centennial-Italic pceri Centennial-ItalicOsF pcerij Centennial-Light pcel Centennial-LightItalic pceli Centennial-LightItalicOsF pcelij Centennial-LightSC pcelc Centennial-Roman pcer Centennial-RomanSC pcerc CentricLightSSiLightItalic kexli CentricSSi kexr CentricSSi-LightItalic kexli CentricSSiBold kexb Century-Bold pcnb Century-BoldCondensed pcnbc Century-BoldCondensedItalic pcnbic Century-BoldItalic pcnbi Century-Book pcnk Century-BookCondensed pcnkc Century-BookCondensedItalic pcnkic Century-BookItalic pcnki Century-HandtooledBold pcnbf Century-HandtooledBoldItalic pcnbif Century-Light pcnl Century-LightCondensed pcnlc Century-LightCondensedItalic pcnlic Century-LightItalic pcnli Century-Ultra pcnu Century-UltraCondensed pcnuc Century-UltraCondensedItalic pcnuic Century-UltraItalic pcnui Century725BT-BoldCondensed bcnbc Century725BT-RomanCondensed bcnrc CenturyExpanded pcnr CenturyExpanded-Italic pcnri CenturyExpandedBT-Bold bcnbx CenturyExpandedBT-BoldItalic bcnbix CenturyExpandedBT-Italic bcnrix CenturyExpandedBT-Roman bcnrx CenturyGothic mygr CenturyGothic-Bold mygb CenturyGothic-BoldItalic mygbi CenturyGothic-Italic mygri CenturyMT-Bold mcnb CenturyMT-BoldItalic mcnbi CenturyMT-Expanded mcnrx CenturyMT-ExpandedItalic mcnrix CenturyOSMT mcur CenturyOSMT-Bold mcub CenturyOSMT-BoldItalic mcubi CenturyOSMT-Italic mcuri CenturyOldStyle-Bold pcub CenturyOldStyle-Italic pcuri CenturyOldStyle-Regular pcur CenturyOldstyleBT-Bold bcub CenturyOldstyleBT-Italic bcuri CenturyOldstyleBT-Roman bcur CenturyRepriseBlackOSSSiBold kcec CenturyRepriseBlackOSSSiNormal kceci CenturyRepriseBlackSSiBlackItalic kceci CenturyRepriseLightOSSSiNormal kceli CenturyRepriseLightOldStyleSSiLightSmallCaps kcelc CenturyRepriseLightSSiLight kcel CenturyRepriseLightSSiLightItalic kceli CenturyRepriseOldStyleSSiBold kcebi CenturyRepriseOldStyleSSiNormal kceri CenturyRepriseOldStyleSSiSmallCaps kcerc CenturyRepriseSSi kcer CenturyRepriseSSi-BlackItalic kceci CenturyRepriseSSi-BlackItalicOldStyleFigur kceci CenturyRepriseSSi-BlackOldStyleFigures kcec CenturyRepriseSSi-Bold kceb CenturyRepriseSSi-BoldItalic kcebi CenturyRepriseSSi-BoldItalicOldStyleFigure kcebi CenturyRepriseSSi-BoldOldStyleFigures kceb CenturyRepriseSSi-Italic kceri CenturyRepriseSSi-ItalicOldStyleFigures kceri CenturyRepriseSSi-Light kcel CenturyRepriseSSi-LightItalic kceli CenturyRepriseSSi-LightItalicOldStyleFigur kceli CenturyRepriseSSi-LightSmallCaps kcelc CenturyRepriseSSi-SmallCaps kcerc CenturyRepriseSSiBold kceb CenturyRepriseSSiBoldItalic kcebi CenturyRepriseSSiItalic kceri CenturyRetrospectiveBlackSSiBold kcub CenturyRetrospectiveSSi kcur CenturyRetrospectiveSSi-Bold kcub CenturyRetrospectiveSSi-Italic kcuri CenturyRetrospectiveSSi-Light kcul CenturyRetrospectiveSSi-LightItalic kculi CenturyRetrospectiveSSi-SemiBold kcus CenturyRetrospectiveSSiItalic kcuri CenturySchL-Bold uncb CenturySchL-BoldItal uncbi CenturySchL-Ital uncri CenturySchL-Roma uncr CenturySchbookMT mcsr CenturySchbookMT-Bold mcsb CenturySchbookMT-BoldItalic mcsbi CenturySchbookMT-Italic mcsri CenturySchoolbookBT-Bold bcsb CenturySchoolbookBT-BoldCond bcsbc CenturySchoolbookBT-BoldItalic bcsbi CenturySchoolbookBT-Italic bcsri CenturySchoolbookBT-Monospace bcsrt CenturySchoolbookBT-Roman bcsr CenturySchoolbookRepriseFractionsSSiFractions kncr CenturySchoolbookRepriseFractionsSSiFractionsBold kncb CenturySchoolbookRepriseSSi kncr CenturySchoolbookRepriseSSi-Bold kncb CenturySchoolbookRepriseSSi-BoldItalic kncbi CenturySchoolbookRepriseSSi-Fractions kncr CenturySchoolbookRepriseSSi-FractionsBold kncb CenturySchoolbookRepriseSSi-Italic kncri CenturySchoolbookRepriseSSiBold kncb CenturySchoolbookRepriseSSiBoldItalic kncbi CenturySchoolbookRepriseSSiItalic kncri CenturySchoolbookSSi kcsr CenturySchoolbookSSi-Bold kcsb CenturySchoolbookSSi-BoldItalic kcsbi CenturySchoolbookSSi-Italic kcsri CenturySchoolbookSSiBold kcsb CenturySchoolbookSSiBoldItalic kcsbi CenturySchoolbookSSiItalic kcsri ChanceryOrnamentsSSi kzdrp ChanceryScriptBlackSSiBold kzcb ChanceryScriptLightSSiLight kzcl ChanceryScriptLightSSiLightItalic kzcli ChanceryScriptSSi kzcr ChanceryScriptSSi-Bold kzcb ChanceryScriptSSi-Italic kzcri ChanceryScriptSSi-LightItalic kzcli ChanceryScriptSSi-Medium kzcm ChanceryScriptSSi-MediumItalic kzcmi ChanceryScriptSSi-SemiBold kzcd ChanceryScriptSSiItalic kzcri ChanceryScriptSSiLight kzcl ChanceryScriptSSiSemiBold kzcd Charlemagne-Bold pcgb Charlemagne-Regular pcgr Charme phmr CharterBT-Black bchk CharterBT-BlackItalic bchki CharterBT-Bold bchb CharterBT-BoldItalic bchbi CharterBT-Italic bchri CharterBT-Roman bchr Cheltenham-Bold pctb Cheltenham-BoldCond pctbc Cheltenham-BoldCondItalic pctbic Cheltenham-BoldItalic pctbi Cheltenham-Book pctk Cheltenham-BookCond pctkc Cheltenham-BookCondItalic pctkic Cheltenham-BookItalic pctki Cheltenham-HandtooledBdIt pctbif Cheltenham-HandtooledBold pctbf Cheltenham-Light pctl Cheltenham-LightCond pctlc Cheltenham-LightCondItalic pctlic Cheltenham-LightItalic pctli Cheltenham-Ultra pctu Cheltenham-UltraCond pctuc Cheltenham-UltraCondItalic pctuic Cheltenham-UltraItalic pctui CheltenhamBT-Bold bctb CheltenhamBT-BoldCondItalic bctbic CheltenhamBT-BoldCondensed bctbc CheltenhamBT-BoldExtraCondensed bctbq CheltenhamBT-BoldHeadline bctbd CheltenhamBT-BoldItalic bctbi CheltenhamBT-BoldItalicHeadline bctbdi CheltenhamBT-Italic bctri CheltenhamBT-Roman bctr CheltenhamBlackCondensedSSiBlackCondensed kctuc CheltenhamBlackCondensedSSiBlackCondensedItalic kctuic CheltenhamBlackSSiBlack kctu CheltenhamBlackSSiBlackItalic kctui CheltenhamCondensedSSiBoldCondensed kctbc CheltenhamCondensedSSiBoldCondensedItalic kctbic CheltenhamCondensedSSiCondensed kctkc CheltenhamCondensedSSiCondensedItalic kctkic CheltenhamITCbyBT-Bold bctb CheltenhamITCbyBT-BoldItalic bctbi CheltenhamITCbyBT-Book bctk CheltenhamITCbyBT-BookItalic bctki CheltenhamLightCondensedSSiLightCondensed kctlc CheltenhamLightCondensedSSiLightCondensedItalic kctlic CheltenhamLightSSiLight kctl CheltenhamLightSSiLightItalic kctli CheltenhamSSi kctk CheltenhamSSiBold kctb CheltenhamSSiBoldItalic kctbi CheltenhamSSiItalic kctki Cheq pcqr ChessSSi kcqr ChorusLineSSi-Bold krvr ChorusLineSSiBold krvr ChorusLineShadowSSi krvrh CircleFrameMT mpi201 CircleFrameNegMT mpi202 City-Bold pcyb City-BoldItalic pcybi City-Light pcyl City-LightItalic pcyli City-Medium pcym City-MediumItalic pcymi Clairvaux pcvr Clairvaux-Dfr pcvra Clarendon pcdr Clarendon-Bold pcdb Clarendon-Light pcdl ClarendonBT-Black bcdc ClarendonBT-Bold bcdb ClarendonBT-BoldCondensed bcdbc ClarendonBT-Heavy bcdh ClarendonBT-Light bcdl ClarendonBT-Roman bcdr ClarendonBT-RomanCondensed bcdrc ClarendonMT mcdr ClarionMT mc6r ClarionMT-Bold mc6b ClarionMT-Italic mc6ri ClassicSSi kipr ClassicSSi-Bold kipb ClassicSSi-Italic kipri ClassicSSiBold kipb ClassicSSiItalic kipri ClassicalGaramondBT-Bold bsbb ClassicalGaramondBT-BoldItalic bsbbi ClassicalGaramondBT-Italic bsbri ClassicalGaramondBT-Roman bsbr Clearface-Black pcfc Clearface-BlackItalic pcfci Clearface-Bold pcfb Clearface-BoldItalic pcfbi Clearface-Heavy pcfh Clearface-HeavyItalic pcfhi Clearface-Regular pcfr Clearface-RegularItalic pcfri ClearfaceBlackSSiBlack kcfc ClearfaceBlackSSiBlackItalic kcfci ClearfaceBlackSSiExtraBold kcfh ClearfaceBlackSSiExtraBoldItalic kcfhi ClearfaceGothicLH-Black lcfcs ClearfaceGothicLH-Bold lcfbs ClearfaceGothicLH-Light lcfls ClearfaceGothicLH-Medium lcfms ClearfaceGothicLH-Roman lcfrs ClearfaceGothicMT-Bold mcfbs ClearfaceGothicMT-DemiBold mcfds ClearfaceMT-Bold mcfb ClearfaceSSi kcfr ClearfaceSSiBold kcfb ClearfaceSSiBoldItalic kcfbi ClearfaceSSiItalic kcfri ClerestorySSi klnr ClericBlackSSiBlack kmtc ClericBlackSSiBlackItalic kmtci ClericLightSSiLight kmtl ClericLightSSiLightItalic kmtli ClericSSi kmtk ClericSSi-Black kmtc ClericSSi-BlackItalic kmtci ClericSSi-Bold kmtb ClericSSi-BoldItalic kmtbi ClericSSi-Italic kmtki ClericSSi-Light kmtl ClericSSi-LightItalic kmtli ClericSSiBold kmtb ClericSSiBoldItalic kmtbi ClericSSiItalic kmtki Cloister-OpenFace pclrl CloisterBlackBT-Regular bclc Cochin pcor Cochin-Bold pcob Cochin-BoldItalic pcobi Cochin-Italic pcori CoherentMediumSSiMedium kmdm CoherentMediumSSiMediumItalic kmdmi CoherentSSi kmdr CoherentSSi-Bold kmdb CoherentSSi-BoldItalic kmdbi CoherentSSi-Italic kmdri CoherentSSi-Medium kmdm CoherentSSi-MediumItalic kmdmi CoherentSSiBold kmdb CoherentSSiBoldItalic kmdbi CoherentSSiItalic kmdri ColmcilleAltMT molr ColmcilleAltMT-Bold molb ColmcilleAltMT-BoldItalic molbi ColmcilleAltMT-Italic molri ColmcilleMT molr ColmcilleMT-Bold molb ColmcilleMT-BoldItalic molbi ColmcilleMT-Italic molri ColmcilleOrnamentsMT molrp ColonnaMT mo3r ColumbusExpMT mu0r ColumbusExpMT-Bold mu0b ColumbusExpMT-BoldItalic mu0bi ColumbusExpMT-Italic mu0ri ColumbusExpMT-SemiBold mu0s ColumbusExpMT-SemiBoldItal mu0si ColumbusMT mu0r ColumbusMT-Bold mu0b ColumbusMT-BoldItalic mu0bi ColumbusMT-Italic mu0ri ColumbusMT-SemiBold mu0s ColumbusMT-SemiBoldItalic mu0si ColumbusOrnamentsOneMT mu0rp1 ColumbusOrnamentsTwoMT mu0rp2 CommerceBlackCondensedSSiBoldCondensed ktgbc CommerceBlackCondensedSSiBoldCondensedItalic ktgboc CommerceBlackSSiBold ktgb CommerceBlackSSiBoldItalic ktgbo CommerceCondensedSSiCondensedItalic ktgroc CommerceCondensedSSiSemiBoldCondensed ktgsc CommerceCondensedSSiSemiBoldCondensedItalic ktgsoc CommerceLightSSiLight ktgl CommerceLightSSiLightItalic ktglo CommerceSSi ktgr CommerceSSi-Bold ktgb CommerceSSi-BoldCondensed ktgbc CommerceSSi-BoldCondensedItalic ktgboc CommerceSSi-BoldItalic ktgbo CommerceSSi-CondensedItalic ktgroc CommerceSSi-Italic ktgro CommerceSSi-Light ktgl CommerceSSi-LightItalic ktglo CommerceSSi-SemiBold ktgs CommerceSSi-SemiBoldCondensed ktgsc CommerceSSi-SemiBoldCondensedItalic ktgsoc CommerceSSi-SemiBoldItalic ktgso CommerceSSiItalic ktgro CommerceSSiSemiBold ktgs CommerceSSiSemiBoldItalic ktgso CommercialPiBT-Regular bpi004 CommercialScriptBT-Regular bi0r CommercialScriptMT mi0r CompactaBT-Black bc7c CompactaBT-Bold bc7b CompactaBT-BoldItalic bc7bi CompactaBT-Italic bc7ri CompactaBT-Light bc7l CompactaBT-Roman bc7r CompactaMT-Bold mc7b CompendiumBlackSSiBlack kfnu CompendiumBlackSSiBlackItalic kfnuo CompendiumLightSSiLight kfnl CompendiumLightSSiLightItalic kfnlo CompendiumSSi kfnr CompendiumSSi-Book kfnk CompendiumSSi-Light kfnl CompendiumSSi-LightItalic kfnlo CompendiumSSiBold kfnb CompendiumSSiBoldItalic kfnbo CompendiumSSiItalic kfnro CompleatSSi kppr CompleatSSi-Bold kppb CompleatSSi-BoldItalic kppbi CompleatSSi-Italic kppri CompleatSSiBold kppb CompleatSSiBoldItalic kppbi CompleatSSiItalic kppri ConcertoSSi ksor1 ConcordeBE-BoldCn pocbc ConcordeBE-BoldCnOutline pocblc ConcordeBE-Condensed pocrc ConcordeBE-Italic pocri ConcordeBE-ItalicExp pocri ConcordeBE-ItalicOsF pocrij ConcordeBE-Medium pocm ConcordeBE-MediumCn pocmc ConcordeBE-MediumExp pocm ConcordeBE-MediumItalic pocmi ConcordeBE-MediumItalicExp pocmi ConcordeBE-MediumItalicOsF pocmij ConcordeBE-MediumSC pocmc ConcordeBE-Regular pocr ConcordeBE-RegularExp pocrc ConcordeBE-RegularSC pocr ConquistaLightSSiLightItalic knfli ConquistaSSi knfm ConquistaSSi-Italic knfmi ConquistaSSi-LightItalic knfli ConquistaSSiItalic knfmi ContextBlackCondensedSSiBlackCondensed khvcc ContextBlackCondensedSSiBlackCondensedItalic khvcoc ContextBlackSSiBlack khvc ContextBlackSSiBlackItalic khvco ContextCondensedSSiBoldCondensed khvbc ContextCondensedSSiBoldCondensedItalic khvboc ContextCondensedSSiCondensed khvrc ContextCondensedSSiCondensedItalic khvroc ContextExtraCondensedSSiBoldExtraCondensed khvbp ContextExtraCondensedSSiBoldExtraCondensedItalic khvbon ContextExtraCondensedSSiExtraCondensed khvrq ContextExtraCondensedSSiExtraCondensedItalic khvron ContextFractionsSSiFractions khvr ContextFractionsSSiFractionsBold khvb ContextInseratSSi khir ContextLightCondensedSSiLightCondensed khvlc ContextLightCondensedSSiLightCondensedItalic khvloc ContextLightSSiLight khvl ContextLightSSiLightItalic khvlo ContextLightSSiNormal khvj ContextRepriseBlackCondSSiBlackCondensedItalic khncoc ContextRepriseBlackCondSSiBold khncc ContextRepriseBlackCondSSiNormal khnhoc ContextRepriseBlackExpSSiBold khncox ContextRepriseBlackExpSSiNormal khnhox ContextRepriseBlackSSiBlack khnc ContextRepriseBlackSSiBlackItalic khnco ContextRepriseBlackSSiExtraBold khnh ContextRepriseCondensedSSiBoldCondensed khnbc ContextRepriseCondensedSSiBoldCondensedItalic khnboc ContextRepriseCondensedSSiCondensed khnrc ContextRepriseCondensedSSiCondensedItalic khnroc ContextRepriseExpandedSSiBoldExpanded khnbx ContextRepriseExpandedSSiBoldExpandedItalic khnbox ContextRepriseExpandedSSiExpanded khnrx ContextRepriseExpandedSSiExpandedItalic khnrox ContextRepriseExtraBlackSSiExtraBlack khnx ContextRepriseLightCondSSiBold khnloc ContextRepriseLightCondSSiNormal khnjoc ContextRepriseLightExpSSiBold khnlox ContextRepriseLightExpSSiNormal khnjox ContextRepriseLightSSiExtraLight khnj ContextRepriseLightSSiExtraLightItalic khnjo ContextRepriseLightSSiLight khnl ContextRepriseLightSSiLightItalic khnlo ContextRepriseMediumCondSSiNormal khnmoc ContextRepriseMediumExpSSiNormal khnmox ContextRepriseMediumSSiMedium khnm ContextRepriseMediumSSiMediumItalic khnmo ContextRepriseSSi khnr ContextRepriseSSi-Black khnc ContextRepriseSSi-BlackCondensed khncc ContextRepriseSSi-BlackCondensedItalic khncoc ContextRepriseSSi-BlackExpanded khncx ContextRepriseSSi-BlackExpandedItalic khncox ContextRepriseSSi-BlackItalic khnco ContextRepriseSSi-Bold khnb ContextRepriseSSi-BoldCondensed khnbc ContextRepriseSSi-BoldCondensedItalic khnboc ContextRepriseSSi-BoldExpanded khnbx ContextRepriseSSi-Condensed khnrc ContextRepriseSSi-CondensedItalic khnroc ContextRepriseSSi-Expanded khnrx ContextRepriseSSi-ExpandedItalic khnrox ContextRepriseSSi-ExtraBlack khnx ContextRepriseSSi-ExtraBlackCondensed khnxc ContextRepriseSSi-ExtraBlackCondensedItali khnxoc ContextRepriseSSi-ExtraBold khnh ContextRepriseSSi-ExtraBoldCondensed khnhc ContextRepriseSSi-ExtraBoldCondensedItalic khnhoc ContextRepriseSSi-ExtraBoldExpanded khnhx ContextRepriseSSi-ExtraBoldExpandedItalic khnhox ContextRepriseSSi-ExtraLight khnj ContextRepriseSSi-ExtraLightCondensed khnjc ContextRepriseSSi-ExtraLightCondensedItali khnjoc ContextRepriseSSi-ExtraLightExpanded khnjx ContextRepriseSSi-ExtraLightExpandedItalic khnjox ContextRepriseSSi-ExtraLightItalic khnjo ContextRepriseSSi-Italic khnro ContextRepriseSSi-Light khnl ContextRepriseSSi-LightCondensed khnlc ContextRepriseSSi-LightCondensedItalic khnloc ContextRepriseSSi-LightExpanded khnlx ContextRepriseSSi-LightExpandedItalic khnlox ContextRepriseSSi-LightItalic khnlo ContextRepriseSSi-Medium khnm ContextRepriseSSi-MediumCondensed khnmc ContextRepriseSSi-MediumCondensedItalic khnmoc ContextRepriseSSi-MediumExpanded khnmx ContextRepriseSSi-MediumExpandedItalic khnmox ContextRepriseSSi-MediumItalic khnmo ContextRepriseSSi-Thin khna ContextRepriseSSi-ThinCondensed khnac ContextRepriseSSi-ThinCondensedItalic khnaoc ContextRepriseSSi-ThinExpanded khnax ContextRepriseSSi-ThinExpandedItalic khnaox ContextRepriseSSi-ThinItalic khnao ContextRepriseSSiBold khnb ContextRepriseSSiBoldExpandedItalic khnbox ContextRepriseSSiBoldItalic khnbo ContextRepriseSSiItalic khnro ContextRepriseThinCondSSiNormal khnaoc ContextRepriseThinExpSSiNormal khnaox ContextRepriseThinSSiThin khna ContextRepriseThinSSiThinItalic khnao ContextRepriseUltraCondSSiNormal khnxoc ContextRoundedBlackSSiBlack khrc ContextRoundedBlackSSiBlackItalic khrco ContextRoundedCondensedSSiBoldCondensed khrbc ContextRoundedCondensedSSiNormal khrboc ContextRoundedSSi-Black khrc ContextRoundedSSi-BlackItalic khrco ContextRoundedSSi-Bold khrb ContextRoundedSSi-BoldCondensed khrbc ContextRoundedSSi-BoldCondensedItalic khrboc ContextRoundedSSi-BoldItalic khrbo ContextRoundedSSiBold khrb ContextRoundedSSiBoldItalic khrbo ContextSSi khvr ContextSSi-BlackCondensed khvcc ContextSSi-BlackCondensedItalic khvcoc ContextSSi-Bold khvb ContextSSi-BoldCondensed khvbc ContextSSi-BoldCondensedItalic khvboc ContextSSi-BoldItalic khvbo ContextSSi-BoldUltraCondensed khvbn ContextSSi-Condensed khvrc ContextSSi-CondensedItalic khvroc ContextSSi-ExtraCondensed khvrq ContextSSi-ExtraCondensedItalic khvron ContextSSi-ExtraLight khvj ContextSSi-Fractions khvr ContextSSi-FractionsBold khvb ContextSSi-Italic khvro ContextSSi-Light khvl ContextSSi-LightCondensed khvlc ContextSSi-LightCondensedItalic khvloc ContextSSi-LightExtraCondensed khvlc ContextSSi-LightItalic khvlo ContextSSi-SemiCondensed khvrn ContextSSi-UltraCondensed khvru ContextSSiBold khvb ContextSSiBoldItalic khvbo ContextSSiItalic khvro ContextSemiCondensedSSiSemiCondensed khvrn ContextUltraCondensedSSiBoldUltraCondensed khvbn ContextUltraCondensedSSiUltraCondensed khvru CooperBT-Black bcbc CooperBT-BlackHeadline bcbcl CooperBT-BlackItalic bcbci CooperBT-BlackItalicHeadline bcbcil CooperBT-BlackOutline bcbbl CooperBT-Bold bcbb CooperBT-BoldItalic bcbbi CooperBT-Light bcbl CooperBT-LightItalic bcbli CooperBT-Medium bcbm CooperBT-MediumItalic bcbmi CooperBlack pcbci CooperBlack-Italic pcbci CooperSSi-ExtraBlack kcbx CooperSSi-ExtraBlackItalic kcbxi CooperSSiBlack kcbc CooperSSiBlackItalic kcbci Copperplate-ThirtyAB zpcp30ab Copperplate-ThirtyBC zpcp30ab Copperplate-ThirtyOneAB zpcp31ab Copperplate-ThirtyOneBC zpcp31bc Copperplate-ThirtyThreeBC zpc33bc Copperplate-ThirtyTwoAB zpcp32ab Copperplate-ThirtyTwoBC zpcp32bc Copperplate-TwentyNineAB zpcp29ab Copperplate-TwentyNineBC zpcp29bc CopperplateBlackCondensedSSiBlackCondensed kcpxc CopperplateCondensedSSiBoldCondensed kcpbc CopperplateCondensedSSiCondensed kcprc CopperplateExtraCondensedSSiBoldExtraCondensed kcpbo CopperplateExtraCondensedSSiExtraCondensed kcpro CopperplateGothicBT-Bold bcpbs CopperplateGothicBT-BoldCond bcpbsc CopperplateGothicBT-Heavy bcphs CopperplateGothicBT-Roman bcprs CopperplateGothicBT-RomanCond bcprsc CopperplateLightCondensedSSiLightCondensed kcplc CopperplateLightSSiLight kcpl CopperplateSSi kcpr CopperplateSSi-BlackCondensed kcpxc CopperplateSSi-BoldExtraCondensed kcpbo CopperplateSSi-ExtraCondensed kcpro CopperplateSSiBold kcpb Corona ponr Corona-Bold ponb Corona-Italic ponri Coronet potr Coronet-Bold potb CoronetMT-Bold motb CoronetScriptSSi kotr CoronetScriptSSi-Italic kotri CoronetScriptSSiItalic kotri CoronetScriptSSiNormal kotr CortexSSi kbrr CortexSSi-Bold kbrb CortexSSi-BoldItalic kbrbi CortexSSi-Italic kbrri CortexSSiBold kbrb CortexSSiBoldItalic kbrbi CortexSSiItalic kbrri Cottonwood pcwr CountrysideBlackSSiExtraBold kamx CountrysideSSi kamr CountrysideSSiBold kamb CountrysideSSiItalic kamri Courier pcrr Courier-Bold pcrb Courier-BoldOblique pcrbo Courier-Oblique pcrro CourierPS mcrr CourierPS-Bold mcrb CourierPS-BoldItalic mcrbi CourierPS-Italic mcrri CourierTwelveMT mcr12 CremeBlackSSiBold kpgb CremeSSiLight kpgl CremeSSiSemiBold kpgd CriteriaOldStyleSSiBoldOldStyleFigures kplb CriteriaOldStyleSSiNormal kplri CriteriaOldStyleSSiSmallCaps kplrc CriteriaSSi kplr CriteriaSSi-Bold kplb CriteriaSSi-BoldItalic kplbi CriteriaSSi-BoldOldStyleFigures kplb CriteriaSSi-Italic kplri CriteriaSSi-ItalicOldStyleFigures kplri CriteriaSSi-SmallCaps kplrc CriteriaSSiBold kplb CriteriaSSiBoldItalic kplbi CriteriaSSiBoldItalicOldStyleFigures kplbi CriteriaSSiItalic kplri Cushing-Bold puhb Cushing-BoldItalic puhbi Cushing-Book puhk Cushing-BookItalic puhki Cushing-Heavy puhh Cushing-HeavyItalic puhhi Cushing-Medium puhm Cushing-MediumItalic puhmi DINEngschrift pehr DINEngschrift-Alternate pehra DINMittelschrift pm6r DINMittelschrift-Alternate pm6ra DINNeuzeitGrotesk-BoldCond pzgbc DINNeuzeitGrotesk-Light pzgl DailyNews-Bold pdnb DailyNews-BoldItalic pdnbi DailyNews-ExtraBold pdnx DailyNews-ExtraBoldItalic pdnxi DailyNews-Italic pdnri DailyNews-Medium pdnm DailyNews-MediumItalic pdnmi DailyNews-Regular pdnr DanteExpertMT mdtr DanteExpertMT-Bold mdtb DanteExpertMT-BoldItalic mdtbi DanteExpertMT-Italic mdtri DanteExpertMT-Medium mdtm DanteExpertMT-MediumItalic mdtmi DanteMT mdtr DanteMT-Alt mdtr DanteMT-AltBold mdtb DanteMT-AltBoldItalic mdtbi DanteMT-AltItalic mdtri DanteMT-AltMedium mdtm DanteMT-AltMediumItalic mdtmi DanteMT-Bold mdtb DanteMT-BoldAlt mdtb DanteMT-BoldExpert mdtb DanteMT-BoldItalic mdtbi DanteMT-BoldItalicAlt mdtbi DanteMT-BoldItalicExpert mdtbi DanteMT-BoldItalicOsF mdtbij DanteMT-BoldOsF mdtbj DanteMT-Italic mdtri DanteMT-ItalicAlt mdtri DanteMT-ItalicExpert mdtri DanteMT-ItalicOsF mdtrij DanteMT-Medium mdtm DanteMT-MediumAlt mdtm DanteMT-MediumExpert mdtm DanteMT-MediumItalic mdtmi DanteMT-MediumItalicAlt mdtmi DanteMT-MediumItalicExpert mdtmi DanteMT-MediumItalicOsF mdtmij DanteMT-MediumOsF mdtmj DanteMT-Regular mdtr DanteMT-RegularAlt mdtr DanteMT-RegularExpert mdtr DanteMT-RegularSC mdtrc DanteMT-Titling mdtrd DanteTitlingMT mdtrd DavidaBoldBT-Regular bd0b DeVinneBT-Italic bviri DeVinneBT-ItalicText bvirid DeVinneBT-Roman bvir DeVinneBT-Text bvird DecadeBlackCondensedSSiBlackCondensed kaocc DecadeBlackSSiBlack kaoc DecadeBlackSSiExtraBlack kaohx DecadeBlackSSiExtraBlackItalic kaohix DecadeCondensedSSiBoldCondensed kaobc DecadeCondensedSSiCondensed kaorn DecadeLightSSiLight kaol DecadeSSi kaor DecadeSSi-BoldCondensed kaobc DecadeSSi-Condensed kaorn DecadeSSi-ExtraBlackItalic kaohix DecadeSSiBold kaob DecadeSSiItalic kaori Decorated035BT-Regular bpfr DelimaMT mdmr DelimaMT-Bold mdmb DelimaMT-BoldItalic mdmbi DelimaMT-ExtraBold mdmx DelimaMT-ExtraBoldItalic mdmxi DelimaMT-Italic mdmri DelimaMT-Light mdml DelimaMT-LightItalic mdmli DelimaMT-SemiBold mdms DelimaMT-SemiBoldItalic mdmsi DellaRobbiaBT-Bold bdeb DellaRobbiaBT-Roman bder Delta-Bold pdjb Delta-BoldItalic pdjbi Delta-Book pdjk Delta-BookItalic pdjki Delta-Light pdjl Delta-LightItalic pdjli Delta-Medium pdjm Delta-MediumItalic pdjmi Delta-Outline pdjrl DeutchBlackSSiBlack kssc DeutchBlackSSiBlackItalic kssci DeutchGaramondOldStyleSSiBold kegbi DeutchGaramondOldStyleSSiNormal kegri DeutchGaramondOldStyleSSiSmallCaps kegrc DeutchGaramondSSi kegr DeutchGaramondSSiBold kegb DeutchGaramondSSiBoldItalic kegbi DeutchGaramondSSiItalic kegri DeutchLightSSiLight kssl DeutchLightSSiLightItalic kssli DeutchMediumSSiMedium kssm DeutchMediumSSiMediumItalic kssmi DeutchSSi kssr DeutchSSi-Black kssc DeutchSSi-BlackItalic kssci DeutchSSi-Bold kssb DeutchSSi-BoldItalic kssbi DeutchSSi-Italic kssri DeutchSSi-Light kssl DeutchSSi-LightItalic kssli DeutchSSi-Medium kssm DeutchSSi-MediumItalic kssmi DeutchSSiBold kssb DeutchSSiBoldItalic kssbi DeutchSSiItalic kssri DiamondBodoni mpi205 DiamondNegative mpi207 DiamondPositive mpi206 DidotLH-Bold ldob DidotLH-BoldOsF ldobj DidotLH-Headline ldod DidotLH-HeadlineOsF ldodj DidotLH-Initials ldora DidotLH-Italic ldori DidotLH-ItalicOsF ldorij DidotLH-OrnamentsOne ldorp1 DidotLH-OrnamentsTwo ldorp2 DidotLH-Roman ldor DidotLH-RomanOsF ldorj DidotLH-RomanSC ldorc Dingbats uzdr DinosaursMT mpi304 Diotima-Italic pdiri Diotima-ItalicOsF pdirij Diotima-Roman pdir Diotima-RomanOsF pdirj Diotima-RomanSC pdirc DirectionsMT mpi103 Diskus pdkr Diskus-Bold pdkb DomBoldBT-Regular bdcb DomCasual pdcr DomCasual-Bold pdcb DomCasualBT-Regular bdcr DomDiagonalBT-Bold bdcbi DomDiagonalBT-Regular bdcri DorchesterScriptMT mdsr Doric-Bold pdrb DucDeBerry pddr DucDeBerry-Dfr pddra Dutch801BT-Bold btmb Dutch801BT-BoldItalic btmbi Dutch801BT-ExtraBold btmx Dutch801BT-ExtraBoldItalic btmxi Dutch801BT-Italic btmri Dutch801BT-ItalicHeadline btmrid Dutch801BT-Roman btmr Dutch801BT-RomanHeadline btmrd Dutch801BT-SemiBold btms Dutch801BT-SemiBoldItalic btmsi DynameBlackSSiBold kbhb DynameBlackSSiExtraBold kbhh DynameLightSSiLight kbhl DynameSSi kbhm DynameSSi-SemiBold kbhd DynameSSiSemiBold kbhd EECLH-Pi lpi004 Eccentric pxcr Egyptian505BT-Bold beeb Egyptian505BT-Light beel Egyptian505BT-Medium beem Egyptian505BT-Roman beer EgyptianMT-Extended meer EgyptienneF-Black pefc EgyptienneF-Bold pefb EgyptienneF-Italic pefri EgyptienneF-Roman pefr EhrhardtExpMT metr EhrhardtExpMT-Italic metri EhrhardtExpMT-SemiBold mets EhrhardtExpMT-SemiBoldItal metsi EhrhardtMT metr EhrhardtMT-Italic metri EhrhardtMT-Regular metr EhrhardtMT-SemiBold mets EhrhardtMT-SemiBoldItalic metsi EhrhardtMT-Semibold mets EhrhardtMT-SemiboldItalic metsi EisagoGreekSSi ksyrk EisagoNewsSSi ksyrn ElectraLH-Bold leab ElectraLH-BoldCursive leabi ElectraLH-BoldCursiveDisplay leabid ElectraLH-BoldCursiveOsF leabij ElectraLH-BoldDisplay leabd ElectraLH-BoldOsF leabj ElectraLH-BoldSC leabc ElectraLH-Cursive leari ElectraLH-CursiveDisplay learid ElectraLH-CursiveOsF learij ElectraLH-Display leard ElectraLH-Regular lear ElectraLH-RegularOsF learj ElectraLH-RegularSC learc ElegantGaramondBT-Bold bgjb ElegantGaramondBT-Italic bgjri ElegantGaramondBT-Roman bgjr EllingtonMT melr EllingtonMT-Bold melb EllingtonMT-BoldItalic melbi EllingtonMT-ExtraBold melx EllingtonMT-ExtraBoldItalic melxi EllingtonMT-Italic melri EllingtonMT-Light mell EllingtonMT-LightItalic melli ElvenSSiLight kwwr EmbassyBT-Regular be0r EmpireBT-Regular be1r English157BT-Regular boer EngraversGothicBT-Regular benrs EngraversLH-BoldFace lenb EngraversMT menr EngraversMT-Bold menb EngraversOldEnglishBT-Bold benbf EngraversOldEnglishBT-Regular benrf EngraversOldEnglishMT menrf EngraversRomanBT-Bold benb EngraversRomanBT-Regular benr EnsembleMediumSSiMedium kitm EnsembleSSi kitk EnsembleSSiBold kitb ErasITCbyBT-Bold berb ErasITCbyBT-Book berk ErasITCbyBT-Demi berd ErasITCbyBT-Light berl ErasITCbyBT-Medium berm ErasITCbyBT-Ultra beru Esprit-Black peic Esprit-BlackItalic peici Esprit-Bold peib Esprit-BoldItalic peibi Esprit-Book peik Esprit-BookItalic peiki Esprit-Medium peim Esprit-MediumItalic peimi EuropeanPi-Four ppi008 EuropeanPi-One ppi005 EuropeanPi-Three ppi007 EuropeanPi-Two ppi006 Eurostile pesr Eurostile-Bold pesb Eurostile-BoldCondensed pesbc Eurostile-BoldExtendedTwo pesbx Eurostile-BoldOblique pesbi Eurostile-Condensed pesrc Eurostile-Demi pesd Eurostile-DemiOblique pesdi Eurostile-ExtendedTwo pesrx Eurostile-Oblique pesri ExPonto-Regular pxpr ExPontoMM pxpMM ExPontoMM-Alternate pxpMM ExPontoMM-Beginning pxpMMb ExPontoMM-Ending pxpMMe ExPontoMM-OsF pxpMMj Excelsior pexr Excelsior-Bold pexb Excelsior-Italic pexri ExcelsiorCyr-Bold pexbz ExcelsiorCyr-Inclined pexroz ExcelsiorCyr-Upright pexrz Exotic350BT-Bold bpgb Exotic350BT-DemiBold bpgd Exotic350BT-Light bpgl ExpoBlackSSiBlack kavc ExpoBlackSSiBlackItalic kavco ExpoBookSSiBook kavk ExpoBookSSiBookItalic kavko ExpoBookSSiMedium kavm ExpoBookSSiMediumItalic kavmo ExpoLightSSiLight kavl ExpoLightSSiLightItalic kavlo ExpoSSi kavr ExpoSSi-Black kavc ExpoSSi-BlackItalic kavco ExpoSSi-Bold kavh ExpoSSi-BoldItalic kavho ExpoSSi-Book kavk ExpoSSi-BookItalic kavko ExpoSSi-Italic kavro ExpoSSi-Light kavl ExpoSSi-LightItalic kavlo ExpoSSi-Medium kavm ExpoSSi-MediumItalic kavmo ExpoSSiBold kavh ExpoSSiBoldItalic kavho ExpoSSiItalic kavro ExpositionBlackSSiBlack kuwc ExpositionBlackSSiBlackItalic kuwci ExpositionMediumSSiMedium kuwm ExpositionMediumSSiMediumItalic kuwmi ExpositionSSi kuwk ExpositionSSi-Black kuwc ExpositionSSi-BlackItalic kuwci ExpositionSSi-Bold kuwb ExpositionSSi-BoldItalic kuwbi ExpositionSSi-Italic kuwki ExpositionSSi-Medium kuwm ExpositionSSi-MediumItalic kuwmi ExpositionSSiBold kuwb ExpositionSSiBoldItalic kuwbi ExpositionSSiItalic kuwki ExpressBlackSSiBlack kazc ExpressDecoGothicBlackSSiBlack kugh ExpressDecoGothicBlackSSiBlackItalic kugho ExpressDecoGothicLightSSiBook kugk ExpressDecoGothicLightSSiNormal kugko ExpressDecoGothicSSi kugm ExpressDecoGothicSSiBold kugb ExpressDecoGothicSSiBoldItalic kugbo ExpressDecoGothicSSiItalic kugmo ExpressDecoSSi kbgk ExpressDecoSSiBold kbgb ExpressLightSSiLight kazl ExpressSSi kazr ExpressSSi-Black kazc ExpressSSi-Bold kazb ExpressSSi-Light kazl ExpressSSiBold kazb ExtensSSiBold kdrb FacadeMT-Condensed mf2rc FacileBlackSSiBlack ksxc FacileBlackSSiExtraBold ksxu FacileSSi ksxr FacileSSi-Black ksxc FacileSSi-Bold ksxb FacileSSi-ExtraBold ksxu FacileSSi-Italic ksxri FacileSSiBold ksxb FacileSSiItalic ksxri FairfieldLH-Bold lffb FairfieldLH-BoldItalic lffbi FairfieldLH-BoldSC lffbc FairfieldLH-CaptionBold lffbd FairfieldLH-CaptionHeavy lffhd FairfieldLH-CaptionLight lffld FairfieldLH-CaptionMedium lffmd FairfieldLH-Heavy lffh FairfieldLH-HeavyItalic lffhi FairfieldLH-HeavySC lffhc FairfieldLH-Light lffl FairfieldLH-LightItalic lffli FairfieldLH-LightSC lfflc FairfieldLH-Medium lffm FairfieldLH-MediumItalic lffmi FairfieldLH-MediumSC lffmc FairfieldLH-SwBoldItalicOsF lffbiw FairfieldLH-SwHeavyItalicOsF lffhiw FairfieldLH-SwLightItalicOsF lffliw FairfieldLH-SwMediumItalicOsF lffmiw FalstaffFestivalMT mfsrd FalstaffMT mfsr FelixTitlingMT mfxr Fenice-Bold pfnb Fenice-BoldOblique pfnbo Fenice-Light pfnl Fenice-LightOblique pfnlo Fenice-Regular pfnr Fenice-RegularOblique pfnro Fenice-Ultra pfnu Fenice-UltraOblique pfnuo FeniceITCbyBT-Bold bfnb FeniceITCbyBT-BoldItalic bfnbi FeniceITCbyBT-Regular bfnr FeniceITCbyBT-RegularItalic bfnri FestivalTitlingMT mf3rd FetteFraktur pftr FetteFraktur-Dfr pftra FigaroMT mfir Flareserif821BT-Bold balb Flareserif821BT-Light ball Flareserif821BT-Roman balr FlemishScriptBT-Regular bf0r Flora-Bold pflb Flora-Medium pflm FlorentineGaramondSSi kigr FlorentineGaramondSSiBold kigb FlorentineGaramondSSiItalic kigri Flyer-BlackCondensed pfycc Flyer-ExtraBlackCondensed pfyxc Folio-Bold pfob Folio-BoldCondensed pfobc Folio-ExtraBold pfox Folio-Light pfol Folio-Medium pfom FootlightMT mf4r FootlightMT-Bold mf4b FootlightMT-BoldItalic mf4bi FootlightMT-ExtraBold mf4x FootlightMT-ExtraBoldItalic mf4xi FootlightMT-Italic mf4ri FootlightMT-Light mf4l FootlightMT-LightItalic mf4li FormalScript421BT-Regular boir FormatPiOneSSi kpi002 FormatPiThreeSSi kpi004 FormatPiTwoSSi kpi003 Formata-Bold pfab Formata-BoldCondensed pfabc Formata-BoldCondensedItalic pfabic Formata-BoldItalic pfabi Formata-CnItalicExpert pfaric Formata-CnItalicSC pfaricc Formata-Condensed pfarc Formata-CondensedExpert pfarc Formata-CondensedItalic pfaric Formata-CondensedOutline pfarlc Formata-CondensedSC pfarcc Formata-Italic pfari Formata-ItalicExpert pfari Formata-ItalicSC pfaric Formata-Light pfal Formata-LightCnExpert pfalc Formata-LightCnItalicExpert pfalic Formata-LightCnItalicSC pfalicc Formata-LightCnSC pfalcc Formata-LightCondensed pfalc Formata-LightCondensedItalic pfalic Formata-LightExpert pfal Formata-LightItalic pfali Formata-LightItalicExpert pfali Formata-LightItalicSC pfalic Formata-LightSC pfalc Formata-Medium pfam Formata-MediumCondensed pfamc Formata-MediumCondensedItalic pfamic Formata-MediumItalic pfami Formata-Outline pfarl Formata-Regular pfar Formata-RegularExpert pfar Formata-RegularSC pfarc ForteMT mfer FournierExpertMT mf1r FournierExpertMT-Italic mf1ri FournierMT mf1r FournierMT-Alt mf1r FournierMT-AltItalic mf1ri FournierMT-Italic mf1ri FournierMT-TallCaps mf1rd FournierMT-TallCapsItalic mf1rdi FournierOrnamentsMT mf1rp FrakturBT-Regular bftr FrankGothMT-ExtraCondensed mfgrq FranklinGothic-Book pfgk FranklinGothic-BookCmpr pfgkp FranklinGothic-BookCmprItal pfgkip FranklinGothic-BookCnd pfgkc FranklinGothic-BookCndItal pfgkic FranklinGothic-BookItal pfgki FranklinGothic-BookOblique pfgko FranklinGothic-BookXCmpr pfgkq FranklinGothic-Condensed pfgrc FranklinGothic-Demi pfgd FranklinGothic-DemiCmpr pfgdp FranklinGothic-DemiCmprItal pfgdip FranklinGothic-DemiCnd pfgdc FranklinGothic-DemiCndItal pfgdic FranklinGothic-DemiItal pfgdi FranklinGothic-DemiOblique pfgdo FranklinGothic-DemiXCmpr pfgdq FranklinGothic-ExtraCond pfgrq FranklinGothic-Heavy pfgh FranklinGothic-HeavyItal pfghi FranklinGothic-HeavyOblique pfgho FranklinGothic-MedCnd pfgmc FranklinGothic-MedCndItal pfgmic FranklinGothic-Medium pfgm FranklinGothic-MediumItal pfgmi FranklinGothic-Roman pfgr FranklinGothicBlackSSiBlack kfgh FranklinGothicBlackSSiBlackItalic kfghi FranklinGothicCondensedSSiCondensed kfgrc FranklinGothicExtraCondensedSSiExtraCondensed kfgrq FranklinGothicITCbyBT-Book bfgk FranklinGothicITCbyBT-BookItal bfgki FranklinGothicITCbyBT-Demi bfgd FranklinGothicITCbyBT-DemiItal bfgdi FranklinGothicITCbyBT-Heavy bfgh FranklinGothicITCbyBT-HeavyItal bfghi FranklinGothicSSiBook kfgk FranklinGothicSSiBookItalic kfgko FranklinGothicSSiSemiBold kfgd FranklinGothicSSiSemiBoldItalic kfgdo Freeform710BT-Regular bekr Freeform721BT-Black bauc Freeform721BT-BlackItalic bauci Freeform721BT-Bold baub Freeform721BT-BoldItalic baubi Freeform721BT-Italic bauri Freeform721BT-Roman baur Freehand471BT-Regular bccr Freehand521BT-RegularC bmar Freehand575BT-RegularB bjfr Freehand591BT-RegularA bb5r FreestyleScript pfsrw FrenchScriptMT mf5r FrizQuadrata pfgr FrizQuadrata-Bold pfgb FrizQuadrataITCbyBT-Bold bfqb FrizQuadrataITCbyBT-Roman bfqr FrontierMT mpi305 Frutiger-Black pfrc Frutiger-BlackCn pfrcc Frutiger-BlackItalic pfrci Frutiger-Bold pfrb Frutiger-BoldCn pfr8brc Frutiger-BoldItalic pfrbi Frutiger-Cn pfrrc Frutiger-ExtraBlackCn pfrxc Frutiger-Italic pfrri Frutiger-Light pfrl Frutiger-LightCn pfrlc Frutiger-LightItalic pfrli Frutiger-Roman pfrr Frutiger-UltraBlack pfru Futura pfur Futura-Bold pfub Futura-BoldOblique pfubo Futura-Book pfuk Futura-BookOblique pfuko Futura-CondExtraBoldObl pfuxoc Futura-Condensed pfurc Futura-CondensedBold pfubc Futura-CondensedBoldOblique pfuboc Futura-CondensedExtraBold pfuxc Futura-CondensedLight pfulc Futura-CondensedLightOblique pfuloc Futura-CondensedOblique pfuroc Futura-ExtraBold pfux Futura-ExtraBoldOblique pfuxo Futura-Heavy pfuh Futura-HeavyOblique pfuho Futura-Light pful Futura-LightOblique pfulo Futura-Oblique pfuro FuturaBT-Bold bfub FuturaBT-BoldCondensed bfubc FuturaBT-BoldCondensedItalic bfubic FuturaBT-BoldItalic bfubi FuturaBT-Book bfuk FuturaBT-BookItalic bfuki FuturaBT-ExtraBlack bfux FuturaBT-ExtraBlackCondItalic bfuxic FuturaBT-ExtraBlackCondensed bfuxc FuturaBT-ExtraBlackItalic bfuxi FuturaBT-Heavy bfuh FuturaBT-HeavyItalic bfuhi FuturaBT-Light bful FuturaBT-LightCondensed bfulc FuturaBT-LightItalic bfuli FuturaBT-Medium bfum FuturaBT-MediumCondensed bfumc FuturaBT-MediumItalic bfumi FuturaBlackBT-Regular bfuc Galahad-Alternate pghr Galahad-OsF pghrj Galahad-Regular pghr Galliard-Black pglc Galliard-BlackItalic pglci Galliard-Bold pglb Galliard-BoldItalic pglbi Galliard-Italic pglri Galliard-Roman pglr Galliard-Ultra pglu Galliard-UltraItalic pglui GalliardITCbyBT-Bold bglb GalliardITCbyBT-BoldItalic bglbi GalliardITCbyBT-Italic bglri GalliardITCbyBT-Roman bglr GandoBT-Regular bg0r Garamond-Bold pgmb Garamond-BoldCondensed pgmbc Garamond-BoldCondensedItalic pgmbic Garamond-BoldItalic pgmbi Garamond-Book pgmk Garamond-BookCondensed pgmkc Garamond-BookCondensedItalic pgmkic Garamond-BookItalic pgmki Garamond-HandtooledBold pgmbf Garamond-HandtooledBoldItalic pgmbif Garamond-Light pgml Garamond-LightCondensed pgmlc Garamond-LightCondensedItalic pgmluc Garamond-LightItalic pgmli Garamond-Ultra pgmu Garamond-UltraCondensed pgmuc Garamond-UltraCondensedItalic pgmuic Garamond-UltraItalic pgmui GaramondAlternateSSi kadr GaramondAlternateSSiItalic kadri GaramondBlackCondensedSSiBlackCondensedItalic kgmuic GaramondBlackCondensedSSiBoldCondensed kgmbc GaramondBlackCondensedSSiBoldCondensedItalic kgmbic GaramondBlackSSiBlack kgmb GaramondBlackSSiBlackItalic kgmbi GaramondBlackSSiBold kadb GaramondBlackSSiBoldItalic kadbi GaramondBookCondensedSSiBookCondensed kgmkc GaramondBookSSiBook kgmk GaramondBookSSiBookItalic kgmki GaramondCondensedSSiBookCondensedItalic kgmkic GaramondExBlackCondensedSSiExtraBlackCondensed kgmuc GaramondExpertMT mgmr GaramondExpertMT-Bold mgmb GaramondExpertMT-BoldItalic mgmbi GaramondExpertMT-Italic mgmri GaramondExtraBlackSSiExtraBlack kgmu GaramondITCbyBT-Bold bgmb GaramondITCbyBT-BoldCondItalic bgmbic GaramondITCbyBT-BoldCondensed bgmbc GaramondITCbyBT-BoldItalic bgmbi GaramondITCbyBT-Book bgmk GaramondITCbyBT-BookCondItalic bgmkic GaramondITCbyBT-BookCondensed bgmkc GaramondITCbyBT-BookItalic bgmki GaramondLightCondensedSSiLightCondensed kgmlc GaramondLightCondensedSSiLightCondensedItalic kgmlic GaramondLightSSiLight kgml GaramondLightSSiLightItalic kgmli GaramondLightSSiMediumItalic kbami GaramondMT mgmr GaramondMT-AlternativeItalic mgmri GaramondMT-Bold mgmb GaramondMT-BoldItalic mgmbi GaramondMT-Italic mgmri GaramondMT-Swash mgmrw GaramondMT-SwashCaps mgmrd GaramondProBlackSSiBold kadb GaramondProBlackSSiBoldItalic kadbi GaramondProSSi kadr GaramondProSSiItalic kadri GaramondProSSiSemiBold kads GaramondProSSiSemiBoldItalic kadsi GaramondRepriseOldStyleSSiBold kg3bi GaramondRepriseOldStyleSSiBoldSmallCaps kg3bc GaramondRepriseOldStyleSSiNormal kg3ri GaramondRepriseOldStyleSSiSmallCaps kg3rc GaramondRepriseSSi kg3r GaramondRepriseSSi-Bold kg3b GaramondRepriseSSi-BoldItalic kg3bi GaramondRepriseSSi-BoldItalicOldStyleFigur kg3bi GaramondRepriseSSi-BoldSmallCaps kg3bc GaramondRepriseSSi-Italic kg3ri GaramondRepriseSSi-ItalicOldStyleFigures kg3ri GaramondRepriseSSi-SmallCaps kg3rc GaramondRepriseSSiBold kg3b GaramondRepriseSSiBoldItalic kg3bi GaramondRepriseSSiItalic kg3ri GaramondRetrospectiveOSSSiBold ksbbi GaramondRetrospectiveOSSSiNormal ksbri GaramondRetrospectiveOldStyleSSiSmallCaps kg9rc GaramondRetrospectiveSSi kg9r GaramondRetrospectiveSSi-Bold kg9b GaramondRetrospectiveSSi-BoldItalic kg9bi GaramondRetrospectiveSSi-BoldItalicOldStyl kg9bi GaramondRetrospectiveSSi-BoldOldStyleFigur kg9b GaramondRetrospectiveSSi-Italic kg9ri GaramondRetrospectiveSSi-ItalicOldStyleFig kg9ri GaramondRetrospectiveSSiBold ksbb GaramondRetrospectiveSSiBoldItalic ksbbi GaramondRetrospectiveSSiItalic ksbri GaramondSSiItalic kadri GaramondSSiNormal kadr GaramondSSiSemiBold kads GaramondSSiSemiBoldItalic kadsi GaramondSemiExpandedSSiBoldSemiExpandedItalic kbari GaramondSemiExpandedSSiSemiExpanded kbar GaramondThree pg3r GaramondThree-Bold pg3b GaramondThree-BoldItalic pg3bi GaramondThree-BoldItalicOsF pg3bij GaramondThree-BoldSC pg3bj GaramondThree-Italic pg3ri GaramondThree-ItalicOsF pg3rij GaramondThree-SC pg3rc GaramondTitlingCapsSSi kadrd GarthGraphic pggr GarthGraphic-Black pggc GarthGraphic-Bold pggb GarthGraphic-BoldCondensed pggbc GarthGraphic-BoldItalic pggbi GarthGraphic-Condensed pggrc GarthGraphic-ExtraBold pggx GarthGraphic-Italic pggri GazetteLH-Bold lgzb GazetteLH-Italic lgzri GazetteLH-Roman lgzr Geneva eger Geometric231BT-BoldC bkbb Geometric231BT-HeavyC bkbh Geometric231BT-LightC bkbl Geometric231BT-RomanC bkbr Geometric415BT-BlackA bm2c Geometric415BT-BlackItalicA bm2ci Geometric415BT-LiteA bm2l Geometric415BT-LiteItalicA bm2li Geometric415BT-MediumA bm2m Geometric415BT-MediumItalicA bm2mi Geometric706BT-BlackB bnzc Geometric706BT-BlackCondensedB bnzcc Geometric706BT-BoldCondensedB bnzbc Geometric706BT-MediumB bnzm GeometricSlab703BT-Bold bmpb GeometricSlab703BT-BoldCond bmpbc GeometricSlab703BT-BoldItalic bmpbi GeometricSlab703BT-Light bmpl GeometricSlab703BT-LightItalic bmpli GeometricSlab703BT-Medium bmpm GeometricSlab703BT-MediumCond bmpmc GeometricSlab703BT-MediumItalic bmpmi GeometricSlab703BT-XtraBold bmpx GeometricSlab703BT-XtraBoldCond bmpxc GeometricSlab703BT-XtraBoldItal bmpxi GeometricSlab712BT-BoldA brwb GeometricSlab712BT-ExtraBoldA brwx GeometricSlab712BT-LightA brwl GeometricSlab712BT-LightItalicA brwli GeometricSlab712BT-MediumA brwm GeometricSlab712BT-MediumItalA brwmi Giddyup mg2rw Giddyup-Regular pg2r Giddyup-Thangs mpi300 GillAltOneMT mgsra GillAltOneMT-Bold mgsba GillAltOneMT-BoldItalic mgsbia GillAltOneMT-Book mgska GillAltOneMT-BookItalic mgskia GillAltOneMT-Heavy mgsha GillAltOneMT-HeavyItalic mgshia GillAltOneMT-Italic mgsria GillAltOneMT-Light mgsla GillAltOneMT-LightItalic mgslia GillBlackCondensedSSiBlackCondensed kgsuc GillBlackSSiBlack kgsu GillBlackSSiExtraBold kgsx GillCondensedSSiBoldCondensed kgsbc GillCondensedSSiCondensed kgsrc GillLightSSiLight kgsl GillLightSSiLightItalic kgsli GillSSi kgsr GillSSi-BlackCondensed kgsuc GillSSi-Bold kgsb GillSSi-BoldCondensed kgsbc GillSSi-BoldItalic kgsbi GillSSi-Condensed kgsrc GillSSi-Italic kgsri GillSSiBold kgsb GillSSiBoldItalic kgsbi GillSSiItalic kgsri GillSans pgsr GillSans-Bold pgsb GillSans-BoldCondensed pgsbc GillSans-BoldExtraCondensed pgsbq GillSans-BoldItalic pgsbi GillSans-Condensed pgsrc GillSans-ExtraBold pgsx GillSans-ExtraBoldDisplay pgsxd GillSans-Italic pgsri GillSans-Light pgsl GillSans-LightItalic pgsli GillSans-LightShadowed pgslh GillSans-Shadowed pgsrh GillSans-UltraBold pgsu GillSans-UltraBoldCondensed pgsuc GillSansDisplayMT-Bold mgsbd GillSansDisplayMT-CondBold mgsbdc GillSansDisplayMT-ExtraBold mgsxd GillSansMT mgsr GillSansMT-Bold mgsb GillSansMT-BoldCondensed mgsbc GillSansMT-BoldItalic mgsbi GillSansMT-Book mgsk GillSansMT-BookItalic mgski GillSansMT-Condensed mgsrc GillSansMT-ExCondensedBold mgsbq GillSansMT-ExtraBold mgsx GillSansMT-Heavy mgsh GillSansMT-HeavyItalic mgshi GillSansMT-Italic mgsri GillSansMT-Light mgsl GillSansMT-LightItalic mgsli GillSansMT-Schlbk mgsrn GillSansMT-SchlbkBold mgsbn GillSansMT-SchlbkBoldItalic mgsbin GillSansMT-SchlbkItalic mgsrin GillSansMT-Shadow mgsrh GillSansMT-UltraBold mgsu GillSansMT-UltraBoldCondensed mgsuc GillSansShadowedMT-Light mgsrl Giovanni-Black pgvc Giovanni-BlackItalic pgvci Giovanni-Bold pgvb Giovanni-BoldItalic pgvbi Giovanni-Book pgvk Giovanni-BookItalic pgvki GlossaryBlackSSiBlack khgc GlossaryBlackSSiBlackItalic khgci GlossaryMediumSSiMedium khgm GlossaryMediumSSiMediumItalic khgmi GlossarySSi khgk GlossarySSiBold khgb GlossarySSiBoldItalic khgbi GlossarySSiItalic khgki GloucesMT-Bold mgrb GloucesMT-CondensedBold mgrbc GloucesMT-ExtendedBold mgrbx GloucesMT-ExtraCondensedBold mgrbo Glypha pgpr Glypha-Black pgpc Glypha-BlackOblique pgpco Glypha-Bold pgpb Glypha-BoldOblique pgpbo Glypha-Light pgpl Glypha-LightOblique pgplo Glypha-Oblique pgpro Glypha-Thin pgpa Glypha-ThinOblique pgpao GorillaITCbyBT-Regular bg6r Gothic-Thirteen pg1r Gothic725BT-BlackA bazc Gothic725BT-BoldA bazb Gothic821CondensedBT-Regular bb6rc Goudy pgyr Goudy-Bold pgyb Goudy-BoldItalic pgybi Goudy-BoldItalicOsF pgybij Goudy-BoldOsF pgyb Goudy-ExtraBold pgyx Goudy-Heavyface pgyh Goudy-HeavyfaceItalic pgyhi Goudy-Italic pgyri Goudy-ItalicOsF pgyrij Goudy-SC pgyrc GoudyCatalogueBT-Regular bg5r GoudyCatalogueMT mg5r GoudyCatalogueMT-Italic mg5ri GoudyHandtooledBT-Regular bgyrf GoudyHeavyfaceBT-Regular bgyh GoudyHeavyfaceBT-RegularCond bgyhc GoudyMT-Bold mgyb GoudyMT-BoldItalic mgybi GoudyMT-ExtraBold mgyx GoudyModernMT mg4r GoudyModernMT-Italic mg4ri GoudyOldStyleBT-Bold bgob GoudyOldStyleBT-BoldItalic bgobi GoudyOldStyleBT-ExtraBold bgox GoudyOldStyleBT-Italic bgori GoudyOldStyleBT-Roman bgor GoudyOldStyleMT mgor GoudyOldStyleMT-Italic mgori GoudyRetrospectiveSSi kgor GoudyRetrospectiveSSi-Bold kgob GoudyRetrospectiveSSi-Italic kgori GoudyRetrospectiveSSiBold kgob GoudyRetrospectiveSSiItalic kgori GoudySans-Black pysc GoudySans-BlackItalic pysci GoudySans-Bold pysb GoudySans-BoldItalic pysbi GoudySans-Book pysk GoudySans-BookItalic pyski GoudySans-Medium pysm GoudySans-MediumItalic pysmi GoudySansITCbyBT-Black bysc GoudySansITCbyBT-BlackItalic bysci GoudySansITCbyBT-Bold bysb GoudySansITCbyBT-BoldItalic bysbi GoudySansITCbyBT-Light bysl GoudySansITCbyBT-LightItalic bysli GoudySansITCbyBT-Medium bysm GoudySansITCbyBT-MediumItalic bysmi GoudySorts mgyrp GoudyTextMT mgtr GoudyTextMT-Alternate mgtr GoudyTextMT-Dfr mgtra GoudyTextMT-LombardicCapitals mgtrd GrammateusLightSSiLight kcxl GrammateusLightSSiLightItalic kcxli GrammateusSSi kcxk GrammateusSSiBold kcxb GrammateusSSiBoldItalic kcxbi GrammateusSSiItalic kcxki Granjon pgjr Granjon-Bold pgjb Granjon-BoldOsF pgjbj Granjon-Italic pgjri Granjon-ItalicOsF pgjrij Granjon-SC pgjrc GrecoBlackSSiBold ktmb GrecoBlackSSiBoldItalic ktmbi GrecoBlackSSiExtraBold ktmx GrecoEuropaSSi kter GrecoEuropaSSi-Bold kteb GrecoEuropaSSi-BoldItalic ktebi GrecoEuropaSSi-Italic kteri GrecoEuropaSSiBold kteb GrecoEuropaSSiBoldItalic ktebi GrecoEuropaSSiItalic kteri GrecoOldStyleSSiBold ktmbi GrecoOldStyleSSiBoldSmallCaps ktmbc GrecoOldStyleSSiItalicOldStyleFigures ktmri GrecoOldStyleSSiRomanSmallCaps ktmrc GrecoRecutSSi knsr GrecoRecutSSi-Bold knsb GrecoRecutSSi-BoldItalic knsbi GrecoRecutSSi-Italic knsri GrecoRecutSSiBold knsb GrecoRecutSSiBoldItalic knsbi GrecoRecutSSiItalic knsri GrecoSSi-Bold ktmb GrecoSSi-BoldItalic ktmbi GrecoSSi-BoldItalicOldStyleFigures ktmbi GrecoSSi-BoldSmallCaps ktmbc GrecoSSi-ExtraBold ktmx GrecoSSi-Italic ktmri GrecoSSi-ItalicOldStyleFigures ktmri GrecoSSi-Light ktml GrecoSSi-LightItalic ktmli GrecoSSi-Roman ktmr GrecoSSi-RomanSmallCaps ktmrc GrecoSSi-SemiBold ktms GrecoSSi-SemiBoldItalic ktmsi GrecoSSiItalic ktmri GrecoSSiRoman ktmr GrecoSSiSemiBold ktms GrecoSSiSemiBoldItalic ktmsi GrecoTenOldStyleSSiBold kttbi GrecoTenOldStyleSSiBoldOldStyleFigures kttb GrecoTenOldStyleSSiNormal kttri GrecoTenOldStyleSSiOldStyleFigures kttr GrecoTenSSi kttr GrecoTenSSi-Bold kttb GrecoTenSSi-BoldItalic kttbi GrecoTenSSi-BoldItalicOldStyleFigures kttbi GrecoTenSSi-BoldOldStyleFigures kttb GrecoTenSSi-Italic kttri GrecoTenSSi-ItalicOldStyleFigures kttri GrecoTenSSi-OldStyleFigures kttr GrecoTenSSiBold kttb GrecoTenSSiBoldItalic kttbi GrecoTenSSiItalic kttri GrotesqueDisplayMT-BoldCond mgqbdc GrotesqueDisplayMT-BoldExt mgqbdx GrotesqueMT mgqr GrotesqueMT-Black mgqc GrotesqueMT-Bold mgqb GrotesqueMT-BoldExtended mgqbx GrotesqueMT-Condensed mgqrc GrotesqueMT-ExtraCondensed mgqrq GrotesqueMT-Italic mgqri GrotesqueMT-Light mgql GrotesqueMT-LightCondensed mgqlc GrotesqueMT-LightItalic mgqli Guardi-Black pguc Guardi-BlackItalic pguci Guardi-Bold pgub Guardi-BoldItalic pgubi Guardi-Italic pguri Guardi-Roman pgur Hadriano-Bold phab Hadriano-ExtraBold phax Hadriano-ExtraBoldCondensed phaxc Hadriano-Light phal HandelGothicBT-Regular bh0r HeadlineMT-Bold mhdr HeliosSSi ktjr HeliosSSi-Bold ktjb HeliosSSiBold ktjb Helvetica phvr Helvetica-Black phvc Helvetica-BlackOblique phvco Helvetica-Bold phvb Helvetica-BoldOblique phvbo Helvetica-Compressed phvrp Helvetica-Condensed phvrc Helvetica-Condensed-Black phvcc Helvetica-Condensed-BlackObl phvcoc Helvetica-Condensed-Bold phvbc Helvetica-Condensed-BoldObl phvboc Helvetica-Condensed-Light phvlc Helvetica-Condensed-LightObl phvloc Helvetica-Condensed-Oblique phvroc Helvetica-ExtraCompressed phvxp Helvetica-Fraction phvr Helvetica-FractionBold phvb Helvetica-Light phvl Helvetica-LightOblique phvlo Helvetica-Narrow phvrn Helvetica-Narrow-Bold phvbn Helvetica-Narrow-BoldOblique phvbon Helvetica-Narrow-Oblique phvron Helvetica-Oblique phvro Helvetica-UltraCompressed phvup HelveticaCyr-Bold phvbz HelveticaCyr-BoldInclined phvboz HelveticaCyr-Inclined phvroz HelveticaCyr-Upright phvrz HelveticaInserat-Roman phir HelveticaInseratCyr-Upright phirz HelveticaNeue-Black phnc HelveticaNeue-BlackCond phncc HelveticaNeue-BlackCondObl phncoc HelveticaNeue-BlackExt phncx HelveticaNeue-BlackExtObl phncox HelveticaNeue-BlackItalic phnci HelveticaNeue-Bold phnb HelveticaNeue-BoldCond phnbc HelveticaNeue-BoldCondObl phnboc HelveticaNeue-BoldExt phnbx HelveticaNeue-BoldExtObl phnbox HelveticaNeue-BoldItalic phnbi HelveticaNeue-BoldOutline phnbl HelveticaNeue-Condensed phnrc HelveticaNeue-CondensedObl phnroc HelveticaNeue-ExtBlackCond phnxc HelveticaNeue-ExtBlackCondObl phnxoc HelveticaNeue-Extended phnxx HelveticaNeue-ExtendedObl phnxox HelveticaNeue-Heavy phnh HelveticaNeue-HeavyCond phnhc HelveticaNeue-HeavyCondObl phnhoc HelveticaNeue-HeavyExt phnhx HelveticaNeue-HeavyExtObl phnhox HelveticaNeue-HeavyItalic phnhi HelveticaNeue-Italic phnri HelveticaNeue-Light phnl HelveticaNeue-LightCond phnlc HelveticaNeue-LightCondObl phnloc HelveticaNeue-LightExt phnlx HelveticaNeue-LightExtObl phnlox HelveticaNeue-LightItalic phnli HelveticaNeue-Medium phnm HelveticaNeue-MediumCond phnmc HelveticaNeue-MediumCondObl phnmoc HelveticaNeue-MediumExt phnmx HelveticaNeue-MediumExtObl phnmox HelveticaNeue-MediumItalic phnmi HelveticaNeue-Roman phnr HelveticaNeue-Thin phna HelveticaNeue-ThinCond phnac HelveticaNeue-ThinCondObl phnaoc HelveticaNeue-ThinExt phnax HelveticaNeue-ThinExtObl phnaox HelveticaNeue-ThinItalic phnai HelveticaNeue-UltraLigCond phnjc HelveticaNeue-UltraLigCondObl phnjoc HelveticaNeue-UltraLigExt phnjx HelveticaNeue-UltraLigExtObl phnjox HelveticaNeue-UltraLight phnu HelveticaNeue-UltraLightItal phnui HelveticaRounded-Black phrc HelveticaRounded-BlackObl phrco HelveticaRounded-Bold phrb HelveticaRounded-BoldCond phrbc HelveticaRounded-BoldCondObl phrboc HelveticaRounded-BoldObl phrbo Herculanum phcr Highlander-Bold phhb Highlander-BoldItalic phhbi Highlander-Book phhk Highlander-BookItalic phhki Highlander-Medium phhm Highlander-MediumItalic phhmi Hiroshige-Black phgc Hiroshige-BlackItalic phgci Hiroshige-Bold phgb Hiroshige-BoldItalic phgbi Hiroshige-Book phgk Hiroshige-BookItalic phgki Hiroshige-Medium phgm Hiroshige-MediumItalic phgmi Hobo phbr HoboBT-Regular bhbr HoeflerText ehtr Holidays mpi306 HorleyOSMT mhor HorleyOSMT-Bold mhob HorleyOSMT-BoldItalic mhobi HorleyOSMT-Italic mhori HorleyOSMT-Light mhol HorleyOSMT-LightItalic mholi HorleyOSMT-SemiBold mhos HorleyOSMT-SemiBoldItalic mhosi HorleyOldStyleMT mhor HorleyOldStyleMT-Bold mhob HorleyOldStyleMT-BoldItalic mhobi HorleyOldStyleMT-Italic mhori HorleyOldStyleMT-Light mhol HorleyOldStyleMT-LightItalic mholi HorleyOldStyleMT-SbItalic mhosi HorleyOldStyleMT-SemiBold mhos HubbubSSi kjpr HubbubSSi-Bold kjpb HubbubSSiBold kjpb Humanist521BT-Bold bgsb Humanist521BT-BoldCondensed bgsbc Humanist521BT-BoldItalic bgsbi Humanist521BT-ExtraBold bgsx Humanist521BT-Italic bgsri Humanist521BT-Light bgsl Humanist521BT-LightItalic bgsli Humanist521BT-Roman bgsr Humanist521BT-RomanCondensed bgsrc Humanist521BT-UltraBold bgsu Humanist521BT-XtraBoldCondensed bgsxc Humanist777BT-BlackB bfrc Humanist777BT-BlackItalicB bfrci Humanist777BT-BoldB bfrb Humanist777BT-BoldItalicB bfrbi Humanist777BT-ItalicB bfrri Humanist777BT-LightB bfrl Humanist777BT-LightItalicB bfrli Humanist777BT-RomanB bfrr Humanist970BT-BoldC ba9b Humanist970BT-RomanC ba9r HuxleyVerticalBT-Regular bhxr ITCAvantGardeMM pagMM ITCAvantGardeMM-Oblique pagMMo ITCGaramondMM pgmMM ITCGaramondMM-It pgmMMi IlluminatiOneSSiDisplayCaps zkilrd1 IlluminatiTwoSSiDisplayCaps zkilrd2 Imago-Book pimk Imago-BookItalic pimki Imago-ExtraBold pimx Imago-ExtraBoldItalic pimxi Imago-Light piml Imago-LightItalic pimli Imago-Medium pimm Imago-MediumItalic pimmi Impact picr ImpactMT micr ImpressBT-Regular bi1r Impressum-Bold pipb Impressum-Italic pibri Impressum-Roman pipr ImprintExpertMT miir ImprintExpertMT-Bold miib ImprintExpertMT-BoldItalic miibi ImprintExpertMT-Italic miiri ImprintExtras miirp ImprintMT miir ImprintMT-Bold miib ImprintMT-BoldItalic miibi ImprintMT-Italic miiri ImprintMT-Shadow miirh ImprintMT-ShadowItalic miirhi ImpulsBT-Regular bi2r InFractionSSi kpi001 Incised901BT-Black baoc Incised901BT-Bold baob Incised901BT-BoldCondensed baobc Incised901BT-Compact baop Incised901BT-Italic baori Incised901BT-Light baol Incised901BT-Nord baohx Incised901BT-NordItalic baohix Incised901BT-Roman baor Industria-Inline pinrh Industria-InlineA pinrha Industria-Solid pinr Industria-SolidA pinra Industrial736BT-Italic btori Industrial736BT-Roman btor InflexMT-Bold mifb Informal011BT-Black bnlc Informal011BT-Roman bnlr InformaticsSSi kocr InformaticsSSi-Bold kocb InformaticsSSi-BoldItalic kocbi InformaticsSSi-Italic kocri InformaticsSSiBold kocb InformaticsSSiBoldItalic kocbi InformaticsSSiItalic kocri IngenioSSi kmxr InsightMathExtensionSSiExtension klcrv InsightMathSSi-Extension klcrv InsightMathSSi-Italic klcrm InsightMathSSi-Symbol klcry InsightMathSSiItalic klcrm InsightMathSymbolSSiSymbol klcry InsightSSi klcr InsightSSi-Bold klcb InsightSSi-BoldItalic klcbi InsightSSi-Italic klcri InsightSSiBold klcb InsightSSiBoldItalic klcbi InsightSSiItalic klcri InsightSansSSi klcrs InsightSansSSi-Bold klcbs InsightSansSSi-BoldItalic klcbsi InsightSansSSi-Italic klcrsi InsightSansSSiBold klcbs InsightSansSSiBoldItalic klcbsi InsightSansSSiItalic klcrsi Insignia piar Insignia-A piara InstallationBlackSSiBlack kgpc InstallationBlackSSiBlackItalic kgpco InstallationLightSSiLight kgpl InstallationLightSSiLightItalic kgplo InstallationLightSSiThin kgpa InstallationLightSSiThinItalic kgpao InstallationSSi kgpr InstallationSSi-BlackItalic kgpco InstallationSSi-Light kgpl InstallationSSi-LightItalic kgplo InstallationSSi-Thin kgpa InstallationSSi-ThinItalic kgpao InstallationSSiBold kgpb InstallationSSiBoldItalic kgpbo InstallationSSiItalic kgpro InterfaceSSi kopr InterfaceSSiBold kopb InterfaceSSiBoldItalic kopbo InterfaceSSiItalic kopro IntroitLightSSiLight kcdl IntroitSSi kcdr IntroitSSi-Bold kcdb IntroitSSi-Light kcdl IntroitSSiBold kcdb IntuitionSSi kkrr IntuitionSSiBold kkrb IntuitionSSiBoldItalic kkrbi IntuitionSSiItalic kkrri IonicMT mior IonicMT-Bold miob IonicMT-Italic miori IowanOldStyleBT-Black biyc IowanOldStyleBT-BlackItalic biyci IowanOldStyleBT-Bold biyb IowanOldStyleBT-BoldItalic biybi IowanOldStyleBT-Italic biyri IowanOldStyleBT-Roman biyr Ironwood piwr Isabella pizr Isadora-Bold pidb Isadora-Regular pidr Italia-Bold pitb Italia-Book pitk Italia-Medium pitm ItalianOldStyleMT misr ItalianOldStyleMT-Bold misb ItalianOldStyleMT-BoldItalic misbi ItalianOldStyleMT-Italic misri ItcEras-Bold ierb ItcEras-Book ierk ItcEras-Demi ierd ItcEras-Light ierl ItcEras-Medium ierm ItcEras-Ultra ieru ItcKabel-Bold ikbb ItcKabel-Book ikbk ItcKabel-Demi ikbd ItcKabel-Medium ikbm ItcKabel-Ultra ikbu ItcSymbol-Black isyc ItcSymbol-BlackItalic isyci ItcSymbol-Bold isyb ItcSymbol-BoldItalic isybi ItcSymbol-Book isyk ItcSymbol-BookItalic isyki ItcSymbol-Medium isym ItcSymbol-MediumItalic isymi JaakBlackSSiExtraBold kmpx JaakLightSSiLight kmpl JaakLightSSiLightItalic kmpli JaakSSiBold kmpb JaakSSiBoldItalic kmpbi JaakSSiItalic kmpmi JaakSSiMedium kmpm JansonExpertMT mjnr JansonExpertMT-Bold mjnb JansonExpertMT-BoldItalic mjnbi JansonExpertMT-Italic mjnri JansonMT mjnr JansonMT-Bold mjnb JansonMT-BoldItalic mjnbi JansonMT-Italic mjnri JansonOldStyleSSiBold kjnbi JansonOldStyleSSiBoldOldstyleFigures kjnb JansonOldStyleSSiItalicOldstyleFigures kjnri JansonOldStyleSSiSmallCaps kjnrc JansonSSi kjnr JansonSSi-Bold kjnb JansonSSi-BoldItalic kjnbi JansonSSi-BoldItalicOldStyleFigures kjnbi JansonSSi-BoldOldStyleFigures kjnb JansonSSi-Italic kjnri JansonSSi-ItalicOldStyleFigures kjnri JansonSSi-SmallCaps kjnrc JansonSSiBold kjnb JansonSSiBoldItalic kjnbi JansonSSiItalic kjnri JansonText-Bold pjnb JansonText-BoldItalic pjnbi JansonText-BoldItalicOsF pjnbij JansonText-BoldOsF pjnbj JansonText-Italic pjnri JansonText-ItalicOsF pjnrij JansonText-Roman pjnr JansonText-RomanSC pjnrc JoannaMT mjor JoannaMT-Bold mjob JoannaMT-BoldExpert mjob JoannaMT-BoldItalic mjobi JoannaMT-BoldItalicExpert mjobi JoannaMT-BoldItalicOSF mjobij JoannaMT-BoldOSF mjobj JoannaMT-Expert mjor JoannaMT-ExtraBold mjox JoannaMT-ExtraBoldExpert mjox JoannaMT-ExtraBoldOSF mjoxj JoannaMT-Italic mjori JoannaMT-ItalicExpert mjori JoannaMT-ItalicOSF mjorij JoannaMT-SCOSF mjorcj JoannaMT-SemiBold mjos JoannaMT-SemiBoldExpert mjos JoannaMT-SemiBoldItaExpert mjosi JoannaMT-SemiBoldItalic mjosi JoannaMT-SemiBoldItalicOSF mjosij JoannaMT-SemiBoldSCOSF mjossj JournalScriptSSi ki0rw Juniper pjpr Kabel-Black pkbc Kabel-Book pkbk Kabel-Heavy pkbh Kabel-Light pkbl KabelITCbyBT-Book bkbk KabelITCbyBT-Demi bkbd KabelITCbyBT-Medium bkbm KabelITCbyBT-Ultra bkbu Kaufmann pkur Kaufmann-Bold pkub KaufmannBT-Bold bkub KaufmannBT-Regular bkur KeplerMM pkpMM KeplerMM-Ep pkpMM KeplerMM-It pkpMMi KeplerMM-ItEp pkpMMi KeplerMM-ItSC pkpMMic KeplerMM-Or1 pkpMMp1 KeplerMM-Or2 pkpMMp2 KeplerMM-Or3 pkpMMp3 KeplerMM-SC pkpMMc KeplerMM-Sw pkpMMiw KernelAlternateSSiAlternate kiar KernelSSi kiar KernelSSi-Alternate kiara KeyboardAlternateSSiBoldAlternate katb KeyboardAlternateSSiMediumAlternate katm KeyboardCondensedAltSSiBoldCondensedAlternate katbc KeyboardCondensedAltSSiCondensedAlternate katrc KeyboardCondensedSSiBoldCondensed katbc KeyboardCondensedSSiCondensed katrc KeyboardDisplaySSi katrd KeyboardEliteSSi kper KeyboardEliteSSi-Bold kpeb KeyboardEliteSSi-BoldItalic kpebo KeyboardEliteSSi-Italic kpero KeyboardEliteSSiBold kpeb KeyboardEliteSSiBoldItalic kpebo KeyboardEliteSSiItalic kpero KeyboardLightAlternateSSiLightAlternate katl KeyboardLightCondensedSSiLightCondensed katlc KeyboardLightSSiLight katl KeyboardSSi-Alternate katma KeyboardSSi-BoldAlternate katba KeyboardSSi-BoldCondensed katbc KeyboardSSi-BoldCondensedAlternate katbac KeyboardSSi-Condensed katrc KeyboardSSi-CondensedAlternate katrac KeyboardSSi-Light katl KeyboardSSi-LightAlternate katla KeyboardSSi-LightCondensed katlc KeyboardSSi-LightCondensedAlternate katla KeyboardSSiBold katb KeyboardSSiMedium katm KeystrokesExtrasMT mpi307 KeystrokesMT mpi308 KeystrokesShadowExtrasMT mpi322 KeystrokesShadowMT mpi323 Kigali-Block pkxrd Kigali-Italic pkxri Kigali-Lx pkxl Kigali-LxItalic pkxli Kigali-Roman pkxr Kigali-Sx pkxs Kigali-SxItalic pkxsi Kigali-ZigZag pkxrw KinoMT mknr KisBT-Italic bjnri KisBT-Roman bjnr KlangMT mklr KoloLP-Alternates lkwr KoloLP-Narrow lkwrn KoloLP-Regular lkwr KoloLP-Wide lkwrw Kompakt pc7r Korinna-Bold pkrb Korinna-KursivBold pkrbi Korinna-KursivRegular pkrr Korinna-Regular pkrri KorinnaITCbyBT-Bold bkrb KorinnaITCbyBT-KursivBold bkrbi KorinnaITCbyBT-KursivRegular bkrri KorinnaITCbyBT-Regular bkrr KudosBlackCondensedSSiBoldCondensed kfubc KudosBlackCondensedSSiBoldCondensedItalic kfuboc KudosBlackCondensedSSiExtraBoldCondensed kfuxc KudosBlackSSiBlack kfuh KudosBlackSSiBlackItalic kfuho KudosBlackSSiExtraBold kfux KudosBlackSSiExtraBoldItalic kfuxo KudosBookSSiBook kfuk KudosBookSSiBookItalic kfuko KudosCondensedSSiCondensed kfurc KudosCondensedSSiCondensedItalic kfuroc KudosLightCondensedSSiLightCondensed kfulc KudosLightCondensedSSiLightCondensedItalic kfuloc KudosLightSSiLight kful KudosLightSSiLightItalic kfulo KudosPosterSSiPoster kfuc KudosSSi kfur KudosSSi-Black kfuh KudosSSi-BlackItalic kfuho KudosSSi-ExtraBoldCondensed kfuxc KudosSSi-Light kful KudosSSi-LightCondensed kfulc KudosSSi-LightCondensedItalic kfuloc KudosSSi-LightItalic kfulo KudosSSi-Poster kfuc KudosSSiBold kfub KudosSSiBoldItalic kfubo KudosSSiItalic kfuro Kuenstler480BT-Black btvc Kuenstler480BT-Bold btvb Kuenstler480BT-BoldItalic btvbi Kuenstler480BT-Italic btvri Kuenstler480BT-Roman btvr KuenstlerScript-Black pksc KuenstlerScript-Medium pksm KuenstlerScript-TwoBold pksb2 KuriakosBlackSSiBold kbbb KuriakosBlackSSiBoldItalic kbbbi KuriakosBlackSSiExtraBold kbbx KuriakosBlackSSiExtraBoldItalic kbbxi KuriakosSSi kbbr KuriakosSSi-Bold kbbb KuriakosSSi-BoldItalic kbbbi KuriakosSSi-ExtraBold kbbx KuriakosSSi-ExtraBoldItalic kbbxi KuriakosSSi-Italic kbbri KuriakosSSi-SemiBold kbbs KuriakosSSi-SemiBoldItalic kbbsi KuriakosSSiItalic kbbri KuriakosSSiSemiBold kbbs KuriakosSSiSemiBoldItalic kbbsi LAstrologyPi-One ppi009 LAstrologyPi-Two ppi010 LDecorationPi-One ppi011 LDecorationPi-Two ppi012 LGamePi-ChessDraughts ppi013 LGamePi-DiceDominoes ppi014 LGamePi-EnglishCards ppi015 LGamePi-FrenchCards ppi016 LHolidayPi-One ppi017 LHolidayPi-Three ppi019 LHolidayPi-Two ppi018 Lapidary333BT-Black bppc Lapidary333BT-Bold bppb Lapidary333BT-BoldItalic bppbi Lapidary333BT-Italic bppri Lapidary333BT-Roman bppr LatinExtraCondensedBT-Regular blirc LatinMT-Condensed mlirc LayoutBlackSSiBlack kfox LayoutCondensedSSiBoldCondensed kfobc LayoutLightSSiLight kfol LayoutSSi kfom LayoutSSi-Black kfox LayoutSSi-Bold kfob LayoutSSi-BoldCondensed kfobc LayoutSSi-Light kfol LayoutSSiBold kfob Leawood-Black plwc Leawood-BlackItalic plwci Leawood-Bold plwb Leawood-BoldItalic plwbi Leawood-Book plwk Leawood-BookItalic plwki Leawood-Medium plwm Leawood-MediumItalic plwmi LegacySans-Bold plebs LegacySans-BoldItalic plebis LegacySans-Book pleks LegacySans-BookItalic plekis LegacySans-Medium plems LegacySans-MediumItalic plemis LegacySans-Ultra pleus LegacySerif-Bold pleb LegacySerif-BoldItalic plebi LegacySerif-Book plek LegacySerif-BookItalic pleki LegacySerif-Medium plem LegacySerif-MediumItalic plemi LegacySerif-Ultra pleu LetterGothic plgr LetterGothic-Bold plgb LetterGothic-BoldSlanted plgbo LetterGothic-Slanted plgro LetterGothic12PitchBT-Bold blgb LetterGothic12PitchBT-BoldItal blgbi LetterGothic12PitchBT-Italic blgri LetterGothic12PitchBT-Roman blgr LetterGothicMT mlgr LetterGothicMT-Bold mlgb LetterGothicMT-BoldOblique mlgbo LetterGothicMT-Oblique mlgro LibertyBT-Regular bl1r LibraBT-Regular bl2r LibreSansSerifBlackSSiExtraBold kroxs LibreSansSerifLightSSiLight krols LibreSansSerifLightSSiLightItalic krolis LibreSansSerifSSi krors LibreSansSerifSSi-Bold krobs LibreSansSerifSSi-ExtraBold kroxs LibreSansSerifSSi-Italic kroris LibreSansSerifSSi-Light krols LibreSansSerifSSi-LightItalic krolis LibreSansSerifSSiBold krobs LibreSansSerifSSiItalic kroris LibreSemiSansBlackSSiExtraBold kr1xs LibreSemiSansLightSSiLight kr1ls LibreSemiSansLightSSiLightItalic kr1lis LibreSemiSansSSi kr1rs LibreSemiSansSSi-Bold kr1bs LibreSemiSansSSi-ExtraBold kr1xs LibreSemiSansSSi-Italic kr1ris LibreSemiSansSSi-Light kr1ls LibreSemiSansSSi-LightItalic kr1lis LibreSemiSansSSiBold kr1bs LibreSemiSansSSiItalic kr1ris LibreSemiSerifSSi kr1r LibreSemiSerifSSi-Bold kr1b LibreSemiSerifSSiBold kr1b LibreSerifSSi kror LibreSerifSSi-Bold krob LibreSerifSSi-Italic krori LibreSerifSSiBold krob LibreSerifSSiItalic krori Life-Bold plfb Life-Italic plfri Life-Roman plfr LinoLetter-Black pllc LinoLetter-BlackItalic pllci LinoLetter-BlackItalicOsF pllcij LinoLetter-BlackOsF pllcj LinoLetter-BlackSC pllcc LinoLetter-Bold pllb LinoLetter-BoldItalic pllbi LinoLetter-BoldItalicOsF pllbij LinoLetter-BoldOsF pllbk LinoLetter-BoldSC pllbc LinoLetter-Italic pllri LinoLetter-ItalicOsF pllri LinoLetter-Medium pllm LinoLetter-MediumItalic pllmi LinoLetter-MediumItalicOsF pllmij LinoLetter-MediumOsF pllmj LinoLetter-MediumSC pllmc LinoLetter-Roman pllr LinoLetter-RomanOsF pllrj LinoLetter-RomanSC pllrc Linoscript plnrw Linotext plnr Linotext-Dfr plnra Lithos-Black ploc Lithos-Bold plob Lithos-ExtraLight ploi Lithos-Light plol Lithos-Regular plor LockupSSi konr LockupSSi-Bold konb LockupSSi-Italic konri LockupSSiBold konb LockupSSiItalic konri LubalinGraph-Book plbk LubalinGraph-BookOblique plbko LubalinGraph-Demi plbd LubalinGraph-DemiOblique plbdo LuciaBT-Regular bl3r LucianBT-Bold bl4b LucianBT-Roman bl4r Lucida plcr Lucida-Bold plcb Lucida-BoldItalic plcbi Lucida-Italic plcri LucidaMath-Extension plcrv LucidaMath-Italic plcrim LucidaMath-Symbol plcry LucidaSans plsr LucidaSans-Bold plsb LucidaSans-BoldItalic plsbi LucidaSans-Italic plsri LucidaSansTypewriter plsrt LucidaSansTypewriter-Bd plsbt LucidaSansTypewriter-BdObl plsbot LucidaSansTypewriter-Obl plsrot LucidaTypewriter plcrt LucidaTypewriter-Bold plcbt LucidaTypewriter-BoldObl plcbot LucidaTypewriter-Obl plcrot LydianBT-Bold blyb LydianBT-BoldItalic blybi LydianBT-Italic blyri LydianBT-Roman blyr LydianCursiveBT-Regular blyrw LydianCursiveMT mlyrw LydianMT mlyr MAvantGardeGothicPS-Book magk MAvantGardeGothicPS-BookObl magko MAvantGardeGothicPS-Demi magd MAvantGardeGothicPS-DemiObl magdo MBookmanPS-Demi mbkd MBookmanPS-DemiItalic mbkdi MBookmanPS-Light mbkl MBookmanPS-LightItalic mbkli MBraggadocio mb3r MGloucester-OldStyle mgrr MGoudyModern mg4r MGoudyModern-Italic mg4ri MICR pimcr MICRSSi kpmicr MOldStyle-BoldOutline mosbl MTimesNewRomanCyrillic mntrz MTimesNewRomanCyrillic-BolInc mntboz MTimesNewRomanCyrillic-Bold mntbz MTimesNewRomanCyrillic-Inc mntroz MTimesNewRomanGreek mntrk MTimesNewRomanGreek-BoldInc mntbok MTimesNewRomanGreek-Boldm mntbk MTimesNewRomanGreek-Inclined mntrok MZAntiqua mzar MZAntiqua-Bold mzab MZAntiqua-BoldItalic mzabi MZAntiqua-Italic mzari MZapfChanceryPS-MediumItalic mzcmi MZapfDingbatsPS mzdr MacedonSSi komr Machine pmhr Machine-Bold pmhb MachineITCbyBT-Regular bmhr MacroSSi kngr MacroSSi-Black kngc MacroSSi-BlackItalic kngco MacroSSiBold kngb MacroSSiBoldItalic kngbo MacroSSiItalic kngro Madrone pmrr ManualSSi ktkr ManualSSiBold ktkb ManualSSiBoldItalic ktkbo ManualSSiItalic ktkro Marigold pmgr MarkerBoardDisplaySSi kczr Math1 wpi001r Math1-Bold wpi001b Math1Mono wpi001rt Math1Mono-Bold wpi001bt Math2 wpi002r Math2-Bold wpi002b Math2Mono wpi002rt Math2Mono-Bold wpi002bt Math3 wpi003r Math3-Bold wpi003b Math3Mono wpi003rt Math3Mono-Bold wpi003bt Math4 wpi004r Math4-Bold wpi004b Math4Mono wpi004rt Math4Mono-Bold wpi004bt Math5 wpi005r Math5-Bold wpi005b Math5Mono wpi005rt Math5Mono-Bold wpi005bt MathematicalPi-Five ppi024 MathematicalPi-Four ppi023 MathematicalPi-One ppi020 MathematicalPi-Six ppi025 MathematicalPi-Three ppi022 MathematicalPi-Two ppi021 MatiqueSSi kcir MatiqueSSi-Bold kcib MatiqueSSiBold kcib MaturaMT mm7r MaturaMT-ScriptCapitals mm7rw Maximus pmxr MediciScript pmirw Melior pmlr Melior-Bold pmlb Melior-BoldItalic pmlbi Melior-Italic pmlri Melodies mpi309 MemoScriptSSi khmbw Memphis-Bold pmpb Memphis-BoldItalic pmpbi Memphis-ExtraBold pmpx Memphis-Light pmpl Memphis-LightItalic pmpli Memphis-Medium pmpm Memphis-MediumItalic pmpmi MercuriusMT-BoldScript mmeb Meridien-Bold pmd Meridien-BoldItalic pmd Meridien-Italic pmd Meridien-Medium pmd Meridien-MediumItalic pmd Meridien-Roman pmd MesouranCasualBlackSSiBold kstbn MesouranCasualBlackSSiBoldItalic kstbin MesouranCasualSSi kstrn MesouranCasualSSi-Bold kstbn MesouranCasualSSi-BoldItalic kstbin MesouranCasualSSi-Italic kstrin MesouranCasualSSi-SemiBold kstsn MesouranCasualSSi-SemiBoldItalic kstsin MesouranCasualSSiItalic kstrin MesouranCasualSSiSemiBold kstsn MesouranCasualSSiSemiBoldItalic kstsin MesouranSansBlackSSiBold kstbs MesouranSansBlackSSiBoldItalic kstbis MesouranSansSSi kstrs MesouranSansSSi-Bold kstbs MesouranSansSSi-BoldItalic kstbis MesouranSansSSi-Italic kstris MesouranSansSSi-SemiBold kstss MesouranSansSSi-SemiBoldItalic kstsis MesouranSansSSiItalic kstris MesouranSansSSiSemiBold kstss MesouranSansSSiSemiBoldItalic kstsis MesouranSerifBlackSSiBold kstsi MesouranSerifBlackSSiBoldItalic kstbi MesouranSerifSSi kstr MesouranSerifSSi-Bold kstb MesouranSerifSSi-BoldItalic kstbi MesouranSerifSSi-Italic kstri MesouranSerifSSi-SemiBold ksts MesouranSerifSSi-SemiBoldItalic kstsi MesouranSerifSSiItalic kstri MesouranSerifSSiSemiBold ksts MesouranSerifSSiSemiBoldItalic kstb Mesquite pmqr MetronBlackSSiBlack ksfc MetronLightSSiLight ksfl MetronLightSSiLightItalic ksfli MetronSSi ksfr MetronSSi-Black ksfc MetronSSi-Bold ksfb MetronSSi-Italic ksfri MetronSSi-Light ksfl MetronSSi-LightItalic ksfli MetronSSiBold ksfb MetronSSiItalic ksfri MicrofineSSi klgr MicrofineSSi-Bold klgb MicrofineSSi-BoldItalic klgbo MicrofineSSi-Italic klgro MicrofineSSiBold klgb MicrofineSSiBoldItalic klgbo MicrofineSSiItalic klgro MicrofineSSiNormal klgr MilestonesOneMT mpi310 MilestonesTwoMT mpi311 MinimaSSi kesr MinimaSSi-Bold kesb MinimaSSi-BoldExpanded kesbx MinimaSSi-BoldItalic kesbo MinimaSSi-Expanded kesrx MinimaSSi-ExpandedItalic kesrox MinimaSSi-Italic kesro Minion-Black pmnc Minion-BlackOsF pmncj Minion-Bold pmnb Minion-BoldCondensed pmnbc Minion-BoldCondensedItalic pmnbic Minion-BoldItalic pmnbi Minion-BoldItalicOsF pmnbij Minion-BoldOsF pmnbj Minion-Condensed pmnrc Minion-CondensedItalic pmnric Minion-DisplayItalic pmnrid Minion-DisplayItalicSC pmnrdic Minion-DisplayRegular pmnrd Minion-DisplayRegularSc pmnrdc Minion-Italic pmnri Minion-ItalicSC pmnric Minion-Ornaments pmmrp Minion-Regular pmnr Minion-RegularSC pmnrc Minion-Semibold pmns Minion-SemiboldItalic pmnsi Minion-SemiboldItalicSc pmnsic Minion-SemiboldSC pmnsc Minion-SwashDisplayItalic pmnrdiw Minion-SwashItalic pmnriw Minion-SwashSemiboldItalic pmnsiw MinionCyr-Bold pmnbz MinionCyr-BoldItalic pmnbiz MinionCyr-Italic pmnriz MinionCyr-Regular pmnrz MinionCyr-Semibold pmnsz MinionCyr-SemiboldItalic pmnsiz MinionExp-Black pmnc MinionExp-Bold pmnb MinionExp-BoldItalic pmnbi MinionExp-DisplayItalic pmnrdi MinionExp-DisplayRegular pmnrd MinionExp-Italic pmnri MinionExp-Regular pmnr MinionExp-Semibold pmns MinionExp-SemiboldItalic pmnsi MinionMM pmnMM MinionMM-Ep pmnMM MinionMM-It pmnMMi MinionMM-ItEp pmnMMi MinionMM-ItSC pmnMMic MinionMM-Or pmnMMp MinionMM-SC pmnMMc MinionMM-Sw pmnMMiw Minister-Black pmtc Minister-BlackItalic pmtci Minister-Bold pmtb Minister-BoldItalic pmtbi Minister-Book pmtk Minister-BookItalic pmtki Minister-Light pmtl Minister-LightItalic pmtli MiraraeBT-Bold bm3b MiraraeBT-Roman bm3r MissiveBlackSSiExtraBold kwsx MissiveSSi kwsr MissiveSSi-Bold kwsb MissiveSSi-ExtraBold kwsx MissiveSSi-Italic kwsri MissiveSSiBold kwsb MissiveSSiItalic kwsri MisterEarlBT-Regular bm4r Mistral pmsr Modern20BT-ItalicB bmori Modern20BT-RomanB bmor Modern735BT-RomanA bbpr ModernMT-Bold mmob ModernMT-BoldItalic mmobi ModernMT-Condensed mmorc ModernMT-CondensedItalic mmori ModernMT-Extended mmor ModernMT-ExtendedItalic mmorix ModernMT-Wide mmorw ModernMT-WideItalic mmoriw Mojo pmjr Monaco emcr MonasteryScriptSSi klnrw MonitorSSi kb7r MonitorSSi-Bold kb7b MonitorSSi-BoldItalic kb7bi MonitorSSi-Italic kb7ri MonitorSSiBold kb7b MonitorSSiBoldItalic kb7bi MonitorSSiItalic kb7ri MonitorSSiNormal kb7r MonkeyBusiness mpi312 MonolineScriptMT mm1r MonologueBlackCapsSSiBlackSmallCaps kilhc MonologueBlackCapsSSiNormal kilhci MonologueBlackSSiBlack kilh MonologueBlackSSiBlackItalic kilhi MonologueCapsSSiBoldItalicSmallCaps kilbci MonologueCapsSSiBoldSmallCaps kilbc MonologueCapsSSiItalicSmallCaps kilrci MonologueCapsSSiSmallCaps kilrc MonologueLightCapsSSiLightSmallCaps killc MonologueLightCapsSSiNormal killci MonologueLightSSiLight kill MonologueLightSSiLightItalic killi MonologueSSi kilr MonologueSSi-Black kilh MonologueSSi-BlackItalic kilhi MonologueSSi-BlackItalicSmallCaps kilhci MonologueSSi-BlackSmallCaps kilhc MonologueSSi-Bold kilb MonologueSSi-BoldItalic kilbi MonologueSSi-BoldItalicSmallCaps kilbci MonologueSSi-BoldSmallCaps kilbc MonologueSSi-Italic kilri MonologueSSi-ItalicSmallCaps kilrci MonologueSSi-Light kill MonologueSSi-LightItalic killi MonologueSSi-LightItalicSmallCaps killci MonologueSSi-LightSmallCaps killc MonologueSSi-SmallCaps kilrc MonologueSSiBold kilb MonologueSSiBoldItalic kilbi MonologueSSiItalic kilri Monospace821BT-Bold bhvbt Monospace821BT-BoldItalic bhvbit Monospace821BT-Italic bhvrit Monospace821BT-Roman bhvrt MonotypeOldStyleMT-BoldOut mm8bl MonotypeSorts mpi313 MotifScriptSSi kburw MurrayHillBT-Bold bm5b MusterSSi kfqr MusterSSiBold kfqb Myriad-Bold pmyb Myriad-BoldItalic pmybi Myriad-CnBold pmybc Myriad-CnBoldItalic pmybic Myriad-CnItalic pmyric Myriad-CnSemibold pmysc Myriad-CnSemiboldItalic pmysic Myriad-Condensed pmyrc Myriad-Headline pmyrd Myriad-Italic pmyri Myriad-Roman pmyr Myriad-Sketch pmyrl Myriad-Tilt pmyrn MyriadMM pmyMM MyriadMM-It pmyMMi NanoScriptSSi kfsrw NationalCodes-Africa ppi033 NationalCodes-America ppi034 NationalCodes-AsiaPlus ppi035 NationalCodes-Europe ppi036 NationalCodes-Universal ppi037 NatureMT mpi314 NeographikMT mnkr NeueHammerUnziale-One pnw1r NeueHammerUnziale-OneAlt pnw1r NeueHammerUnziale-Two pnw2r NeueHammerUnziale-TwoAlt pnw2r Neuland pnlr NeuzeitS-Book pnzk NeuzeitS-BookHeavy pnzh NewAster pna NewAster-Black pna NewAster-BlackItalic pna NewAster-Bold pna NewAster-BoldItalic pna NewAster-Italic pna NewAster-SemiBold pna NewAster-SemiBoldItalic pna NewBaskerville-Bold pnbb NewBaskerville-Bold-DTC dnbb NewBaskerville-BoldItalic pnbbi NewBaskerville-BoldItalic-DTC dnbbi NewBaskerville-BoldItalicOsF pnbbij NewBaskerville-BoldSC pnbbj NewBaskerville-Italic pnbri NewBaskerville-ItalicOsF pnbrij NewBaskerville-Roman pnbr NewBaskerville-Roman-DTC dnbr NewBaskerville-RomanItalic-DTC dnbri NewBaskerville-SC pnbrc NewBaskervilleITCbyBT-Bold bnbb NewBaskervilleITCbyBT-BoldItal bnbbi NewBaskervilleITCbyBT-Italic bnbri NewBaskervilleITCbyBT-Roman bnbr NewBerolinaMT mnrr NewCaledonia pndr NewCaledonia-Black pndc NewCaledonia-BlackItalic pndci NewCaledonia-Bold pndb NewCaledonia-BoldItalic pndbi NewCaledonia-BoldItalicOsF pndbij NewCaledonia-BoldSC pndbc NewCaledonia-Italic pndri NewCaledonia-ItalicOsF pndrij NewCaledonia-SC pndrc NewCaledonia-SemiBold pnds NewCaledonia-SemiBoldItalic pndsi NewCenturySchlbk-Bold pncb NewCenturySchlbk-BoldItalic pncbi NewCenturySchlbk-Fraction pncr NewCenturySchlbk-FractionBold pncb NewCenturySchlbk-Italic pncri NewCenturySchlbk-Roman pncr NewClarendonMT mnnr NewClarendonMT-Bold mnnb News701BT-BoldA biob News701BT-ItalicA biori News701BT-RomanA bior NewsGothic pngr NewsGothic-Bold pngb NewsGothic-BoldOblique pngbo NewsGothic-Oblique pngro NewsGothicMT mngr NewsGothicMT-Bold mngb NewsGothicMT-Condensed mngrc NewsGothicMT-CondensedBold mngbc NewsGothicMT-Italic mngri NewsPlantinMT mnpr NewsPlantinMT-Bold mnpb NewsPlantinMT-BoldItalic mnpbi NewsPlantinMT-Italic mnpri NewspaperPiBT-Regular bpi001 NimbusMonL-Bold ucrb NimbusMonL-BoldObli ucrbo NimbusMonL-Regu ucrr NimbusMonL-ReguObli ucrro NimbusRomNo9L-Medi utmb NimbusRomNo9L-MediItal utmbi NimbusRomNo9L-Regu utmr NimbusRomNo9L-ReguItal utmri NimbusSanL-Bold uhvb NimbusSanL-BoldCond uhvbrc NimbusSanL-BoldCondItal uhvroc NimbusSanL-BoldItal uhvbo NimbusSanL-Regu uhvr NimbusSanL-ReguCond uhvrc NimbusSanL-ReguCondItal uhvboc NimbusSanL-ReguItal uhvro NimrodMT mnir NimrodMT-Bold mnib NimrodMT-BoldItalic mnibi NimrodMT-Italic mniri Nofret-Bold pnfb Nofret-BoldExpert pnfb Nofret-BoldItalic pnfbi Nofret-BoldItalicExpert pnfbi Nofret-BoldItalicOsF pnfbij Nofret-BoldOsF pnfbj Nofret-Italic pnfri Nofret-ItalicExpert pnfri Nofret-ItalicOsF pnfrij Nofret-Light pnfl Nofret-LightExpert pnfl Nofret-LightItalic pnfli Nofret-LightItalicExpert pnfli Nofret-LightItalicOsF pnflij Nofret-LightSC pnflc Nofret-Medium pnfm Nofret-MediumExpert pnfm Nofret-MediumItalic pnfmi Nofret-MediumItalicExpert pnfmi Nofret-MediumItalicOsF pnfmij Nofret-MediumSC pnfmc Nofret-Regular pnfr Nofret-RegularExpert pnfr Nofret-RegularSC pnfrc NormandeBT-Italic bn0ri NormandeBT-Roman bn0r NotreDame-Ornaments pnorp NotreDame-Roman pnor NotreDame-RomanDfr pnora NovaBlackExpandedSSiBlackExpanded kuncx NovaBlackExpandedSSiBlackExpandedItalic kunxox NovaBlackExpandedSSiExtraBoldExpandedItalic kuncox NovaBlackSSiBlackItalic kunxo NovaBlackSSiExtraBold kunc NovaBlackSSiExtraBoldItalic kunco NovaCondensedSSiBoldCondensed kunbc NovaCondensedSSiBoldCondensedItalic kunboc NovaCondensedSSiCondensed kunrc NovaCondensedSSiCondensedItalic kunroc NovaExpandedSSiBoldExpanded kunbx NovaExpandedSSiBoldExpandedItalic kunbox NovaExpandedSSiExpanded kunrx NovaExpandedSSiExpandedItalic kunrox NovaLightCondensedSSiLightCondensed kunlc NovaLightCondensedSSiLightCondensedItalic kunloc NovaLightSSiLight kunl NovaLightSSiLightItalic kunlo NovaLightUltraSSiLightUltraCondensed kunlo NovaLightUltraSSiThinUltraCondensed kunao NovaMediumSSiMedium kunr NovaSSi-BlackExpanded kuncx NovaSSi-BlackExpandedItalic kunxox NovaSSi-BlackItalic kunxo NovaSSi-Bold kunb NovaSSi-BoldCondensed kunbc NovaSSi-BoldCondensedItalic kunboc NovaSSi-BoldExpanded kunbx NovaSSi-BoldExpandedItalic kunbox NovaSSi-BoldItalic kunbo NovaSSi-Condensed kunrc NovaSSi-CondensedItalic kunroc NovaSSi-Expanded kunrx NovaSSi-ExpandedItalic kunrox NovaSSi-ExtraBlack kunx NovaSSi-ExtraBlackExpanded kunxx NovaSSi-ExtraBold kunc NovaSSi-ExtraBoldExpandedItalic kuncox NovaSSi-ExtraBoldItalic kunco NovaSSi-Italic kunro NovaSSi-Light kunl NovaSSi-LightCondensed kunlc NovaSSi-LightCondensedItalic kunloc NovaSSi-LightItalic kunlo NovaSSi-LightUltraCondensed kunlo NovaSSi-Medium kunr NovaSSi-ThinUltraCondensed kunao NovaSSi-UltraCondensed kunro NovaSSiBold kunb NovaSSiBoldItalic kunbo NovaSSiItalic kunro NovaUltraExpandedSSiExtraBlackExpanded kunxx NovaUltraSSiExtraBlack kunx NovaUltraSSiUltraCondensed kunro Novarese-Bold pnvb Novarese-BoldItalic pnvbi Novarese-Book pnvk Novarese-BookItalic pnvki Novarese-Medium pnvm Novarese-MediumItalic pnvmi Novarese-Ultra pnvu NuanceBlackSSiBlack kvlc NuanceBlackSSiBlackItalic kvlci NuanceLightSSiLight kvll NuanceLightSSiLightItalic kvlli NuanceSSi kvlr NuanceSSi-Black kvlc NuanceSSi-BlackItalic kvlci NuanceSSi-Bold kvlb NuanceSSi-BoldItalic kvlbi NuanceSSi-Italic kvlri NuanceSSi-Light kvll NuanceSSi-LightItalic kvlli NuanceSSiBold kvlb NuanceSSiBoldItalic kvlbi NuanceSSiItalic kvlri NuptialBT-Regular bnur NuptialScript pnur Nyx pnxr OCR1SSi koar OCR2SSi kobr OCRA poar OCRA-Alternate poara OCRAbyBT-Regular boar OCRB pobr OCRB-Alternate pobra OCRB10PitchBT-Regular bobr OceanSansMT-Bold mo4b OceanSansMT-BoldItalic mo4bi OceanSansMT-Book mo4k OceanSansMT-BookItalic mo4ji OceanSansMT-ExtraBold mo4x OceanSansMT-ExtraBoldItalic mo4xi OceanSansMT-Light mo4l OceanSansMT-LightItalic mo4li OceanSansMT-SemiBold mo4s OceanSansMT-SemiBoldItalic mo4se OctavianMT movr OctavianMT-Expert movr OctavianMT-Italic movri OctavianMT-ItalicExpert movri OctavianMT-ItalicOsF movrij OctavianMT-SC movrc OfficinaSans-Bold pofbs OfficinaSans-BoldItalic pofbis OfficinaSans-Book pofks OfficinaSans-BookItalic pofkis OfficinaSerif-Bold pofb OfficinaSerif-BoldItalic pofbi OfficinaSerif-Book pofk OfficinaSerif-BookItalic pofki OldClaudeLP lojr OldClaudeLP-OsF lojrj OldClaudeLP-SC lojrc OldDreadfulNo7BT-Regular bo0r OldEnglishTextMT moer OldStyleMT mosr OldStyleMT-Bold mosb OldStyleMT-BoldItalic mosbi OldStyleMT-Italic mosri OldStyleSeven po7r OldStyleSeven-Italic po7ri OldStyleSeven-ItalicOsF po7rij OldStyleSeven-SC po7rc OleScriptSSi kccrw Olympian poyr Olympian-Bold poyb Olympian-BoldItalic poybi Olympian-Italic poyri OlympicLH-Pi lpi001 Omnia pomr Ondine poir OnyxBT-Regular boxr OnyxMT moxr Optima popr Optima-Black popc Optima-BlackItalic popci Optima-Bold popb Optima-BoldItalic popbi Optima-BoldOblique popbo Optima-DemiBold popd Optima-DemiBoldItalic popdi Optima-ExtraBlack popx Optima-ExtraBlackItalic popxi Optima-Italic popri Optima-Medium popm Optima-MediumItalic popmi Optima-Oblique popro Optimum-Bold-DTC dopb Optimum-BoldItalic-DTC dopbo Optimum-Roman-DTC dopr Optimum-RomanItalic-DTC doro OrandaBT-Bold bo1b OrandaBT-BoldCondensed bo1bc OrandaBT-BoldItalic bo1bi OrandaBT-Italic bo1ri OrandaBT-Roman bo1r OrandaBT-RomanCondensed bo1rc Orator porr Orator-Slanted porro OratorBT-FifteenPitch borr15 OratorBT-TenPitch borr10 OrbitBbyBT-Regular bo2r OrchidBlackSSiBlack knac OrchidBlackSSiBlackItalic knaci OrchidBlackSSiBold knab OrchidBlackSSiBoldItalic knabi OrchidSSi knar OrchidSSi-Black knac OrchidSSi-BlackItalic knaci OrchidSSi-BoldItalic knabi OrchidSSi-Italic knari OrchidSSi-SemiBold knas OrchidSSi-SemiBoldItalic knasi OrchidSSiBold knab OrchidSSiItalic knari OrchidSSiSemiBold knas OrchidSSiSemiBoldItalic knasi OriginalGaramondBT-Bold begb OriginalGaramondBT-BoldItalic begbi OriginalGaramondBT-Italic begri OriginalGaramondBT-Roman begr Ouch poqr OvalFrameMT mpi208 OvalFrameNegativeMT mpi209 OzHandicraftBT-Roman bozr PTBarnumBT-Regular bpbr PalaceScriptMT mp1r PalaceScriptMT-SemiBold mp1rs Palatino-Black pplc Palatino-BlackItalic pplci Palatino-Bold pplb Palatino-BoldItalic pplbi Palatino-BoldItalicOsF pplbij Palatino-BoldOsF pplbj Palatino-Italic pplri Palatino-ItalicOsF pplrij Palatino-Light ppll Palatino-LightItalic pplli Palatino-Medium pplm Palatino-MediumItalic pplmi Palatino-Roman pplr Palatino-SC pplrc PaletteBlackSSiBlack kauc PaletteBlackSSiBlackItalic kauci PaletteSSi kaur PaletteSSi-Black kauc PaletteSSi-BlackItalic kauci PaletteSSi-Bold kaub PaletteSSi-BoldItalic kaubi PaletteSSi-Italic kauri PaletteSSiBold kaub PaletteSSiBoldItalic kaubi PaletteSSiItalic kauri PalindromeBlackSSiBold kesb PalindromeBlackSSiBoldItalic kesbo PalindromeCondensedSSiBoldCondensed kesbc PalindromeCondensedSSiCondensed kesrc PalindromeExpandedSSiBoldExpanded kesbx PalindromeExpandedSSiExpanded kesrx PalindromeSSi kesr PalindromeSSi-BoldCondensed kesbc PalindromeSSi-Condensed kesrc PalindromeSSi-Expanded kesrx PalindromeSSi-SemiBold kesd PalindromeSSi-SemiBoldItalic kesdo PalindromeSSiItalic kesro PalindromeSSiSemiBold kesd PalindromeSSiSemiBoldItalic kesdo PalmaBlackSSiBlack kfrc PalmaBlackSSiExtraBlack kfru PalmaLightSSiLight kfrl PalmaLightSSiLightItalic kfrli PalmaSSi kfrr PalmaSSi-Black kfrc PalmaSSi-BlackItalic kfrci PalmaSSi-Bold kfrb PalmaSSi-BoldItalic kfrbi PalmaSSi-ExtraBlack kfru PalmaSSi-Italic kfrri PalmaSSi-Light kfrl PalmaSSi-LightItalic kfrli PalmaSSiBold kfrb PalmaSSiBoldItalic kfrbi PalmaSSiItalic kfrri Palton-Light-DTC dpll ParallaxSSi knzk ParallaxSSi-Bold knzh ParallaxSSiBold knzh Parisian ppsr ParisianBT-Regular bpsr ParkAvenue ppar ParkAvenueBT-Regular bpar Parties mpi315 PartitionOldStyleSSiNormal ko7ri PartitionOldStyleSSiSmallCaps ko7rc PartitionSSi ko7r PartitionSSi-Italic ko7ri PartitionSSi-ItalicOldStyleFigures ko7ri PartitionSSi-SmallCaps ko7rc PartitionSSiItalic ko7ri Peignot-Bold ppgb Peignot-Demi ppgd Peignot-Light ppgl PenTweaksOneSSi zkshalw PenTweaksThreeSSi zkshvow PenTweaksTwoSSi zkshanw PepitaMT mp2r PerformaBlackSSiBlack kkbc PerformaBookSSiBook kkbk PerformaBookSSiSemiBold kkbd PerformaOutlineSSiOutline kkbrl PerformaSSi-Outline kkbrl PerformaSSiBold kkbh PerformaSSiMedium kkbm Perpetua mppr Perpetua-Bold mppb Perpetua-BoldExp pppb Perpetua-BoldItalic mppbi Perpetua-BoldItalicExp pppbi Perpetua-BoldItalicOsF pppbij Perpetua-BoldOsF pppbj Perpetua-Exp pppr Perpetua-Italic mppri Perpetua-ItalicExp pppri Perpetua-ItalicOsF ppprij Perpetua-SC ppprc PerpetuaExpert mppr PerpetuaExpert-Bold mppb PerpetuaExpert-BoldItalic mppbi PerpetuaExpert-Italic mppri PerpetuaTitlingMT mpprd PerpetuaTitlingMT-Bold mppbd PerpetuaTitlingMT-Light mppld PerrywoodMT mpwr PerrywoodMT-Bold mpwb PerrywoodMT-BoldItalic mpwbi PerrywoodMT-ExtraBold mpwx PerrywoodMT-ExtraBoldItalic mpwxi PerrywoodMT-Italic mpwri PerrywoodMT-Light mpwl PerrywoodMT-LightItalic mpwli PerrywoodMT-SemiBold mpws PerrywoodMT-SemiBoldItalic mpwsi PerspectiveBlackSSiNormal kuhhi PerspectiveMediumSSiMedium kuhm PerspectiveMediumSSiMediumItalic kuhmi PerspectiveSSi kuhk PerspectiveSSi-Black kuhh PerspectiveSSi-BlackItalic kuhhi PerspectiveSSi-Bold kuhb PerspectiveSSi-BoldItalic kuhbi PerspectiveSSi-Italic kuhki PerspectiveSSi-Medium kuhm PerspectiveSSi-MediumItalic kuhmi PerspectiveSSiBold kuhb PerspectiveSSiBoldItalic kuhbi PerspectiveSSiItalic kuhki PersuasionSSi kbsr Petrucchio mpi301 PetticoatScriptSSi kb7rw PhotinaMT mphr PhotinaMT-Bold mphb PhotinaMT-BoldItalic mphbi PhotinaMT-Italic mphri PhotinaMT-SemiBold mphs PhotinaMT-SemiBoldItalic mphsi PhotinaMT-UltraBold mphu PhotinaMT-UltraBoldItalic mphui PioneerITCbyBT-Regular bp4r PiranesiItalicBT-Regular bp5r PlacardMT-Condensed mpdrc PlacardMT-CondensedBold mpdbc Plantin mpnr Plantin-Bold mpnb Plantin-BoldCondensed mpnbc Plantin-BoldItalic mpnbi Plantin-Italic mpnri Plantin-Light mpnl Plantin-LightItalic mpnli Plantin-Semibold mpns Plantin-SemiboldItalic mpnsi PlantinExp mpnr PlantinExp-AltFigures mpnra PlantinExp-Bold mpnb PlantinExp-BoldItalic mpnbi PlantinExp-Italic mpnri PlantinExp-Light mpnl PlantinExp-LightItalic mpnli PlantinExp-SemiBold mpns PlantinExp-SemiBoldItalic mpnsi PlantinHeadlineMT-BoldCond mpnbdc PlantinHeadlineMT-LightCond mpnldc PlantinHeadlineMT-MedCond mpnmdc PlantinMT-Schlbk mpnrn PlantinMT-SchlbkBold mpnbn PlantinMT-SchlbkBoldItalic mpnbin PlantinMT-SchlbkItalic mpnrin PlaybillBT-Regular bpyr PlaytimeMT mpi319 PlugSSi kmqr PoliphilusExpertMT mpzr PoliphilusMT mpzr Pompeijana-Borders ppjrp Pompeijana-Roman ppjr Ponderosa ppor Poplar pp0r PopplLaudatio-Bold ppub PopplLaudatio-BoldCondensed ppubc PopplLaudatio-BoldItalic ppubi PopplLaudatio-Condensed ppurc PopplLaudatio-Italic mpuri PopplLaudatio-Light ppul PopplLaudatio-LightCondensed ppulc PopplLaudatio-LightItalic ppuli PopplLaudatio-Medium mpum PopplLaudatio-MediumCondensed ppumc PopplLaudatio-MediumItalic mpumi PopplLaudatio-Regular mpur PopplPontifexBE-Bold ppxb PopplPontifexBE-BoldExp ppxb PopplPontifexBE-BoldOsF ppxbj PopplPontifexBE-Italic ppxri PopplPontifexBE-ItalicExp ppxri PopplPontifexBE-ItalicOsF ppxrij PopplPontifexBE-Medium ppxm PopplPontifexBE-MediumCn ppxmc PopplPontifexBE-MediumCnExp ppxmc PopplPontifexBE-MediumCnSC ppxmcc PopplPontifexBE-MediumExp ppxm PopplPontifexBE-MediumSC ppxmc PopplPontifexBE-Regular ppxr PopplPontifexBE-RegularExp ppxr PopplPontifexBE-RegularSC ppxrc PopplResidenz-Light pprl PopplResidenz-Regular pprr PostAntiquaBE-Medium ppqm PostAntiquaBE-Regular ppqr PostMediaeval-Italic ppmri PostMediaeval-Medium ppmm PostMediaeval-Regular ppmr PosterBodoniBT-Italic bbdpi PosterBodoniBT-Roman bbdp Present pptr Present-Black pptc Present-BlackCondensed pptcc Present-Bold pptb Present-BoldCondensed pptbc Present-Condensed pptrc PrestigeElite pper PrestigeElite-Bold ppeb PrestigeElite-BoldSlanted ppebo PrestigeElite-Slanted ppero ProseScriptSSi kkur ProseScriptSSiBold kkub ProtocolSSi kmlr ProtocolSSiBold kmlb ProtocolSSiBoldItalic kmlbi ProtocolSSiItalic kmlri QuantaPiFiveSSi kpi022 QuantaPiFourSSi kpi025 QuantaPiOneSSi kpi024 QuantaPiSixSSi kpi021 QuantaPiThreeSSi kpi020 QuantaPiTwoSSi kpi023 QueBlackSSiExtraBold kshx QueSSi kshk QueSSi-Bold kshb QueSSi-ExtraBold kshx QueSSi-Italic kshro QueSSiBold kshb QueSSiItalic kshro QuillScriptBlackSSiBlack kksc QuillScriptSSi kksm QuillScriptSSi-Black kksc QuillScriptSSi-Bold kksb QuillScriptSSiBold kksb QuintessenceBlackSSiBlack kwdc QuintessenceBlackSSiBlackItalic kwdci QuintessenceMediumSSiMedium kwdm QuintessenceMediumSSiMediumItalic kwdmi QuintessenceSSi kwdk QuintessenceSSi-Black kwdc QuintessenceSSi-BlackItalic kwdci QuintessenceSSi-Bold kwdb QuintessenceSSi-BoldItalic kwdbi QuintessenceSSi-Italic kwdki QuintessenceSSi-Medium kwdm QuintessenceSSi-MediumItalic kwdmi QuintessenceSSiBold kwdb QuintessenceSSiBoldItalic kwdbi QuintessenceSSiItalic kwdki QuintetSSi ksor Quorum-Black pqrc Quorum-Bold pqrb Quorum-Book pqrk Quorum-Light pqrl Quorum-Medium pqrm Raleigh prar Raleigh-Bold prab Raleigh-DemiBold prad Raleigh-Medium pram RaleighBT-Bold brab RaleighBT-DemiBold brad RaleighBT-ExtraBold brax RaleighBT-Light bral RaleighBT-Medium bram RaleighBT-Roman brar Raphael prrr RecitalSSi ktor RecitalSSi-Bold ktob RecitalSSi-BoldItalic ktobi RecitalSSi-Italic ktori RecitalSSiBold ktob RecitalSSiBoldItalic ktobi RecitalSSiItalic ktori RecognitaBookSSiMedium kram RecognitaBookSSiSemiBold krad RecognitaSSi krar RecognitaSSi-Bold krab RecognitaSSi-Book kram RecognitaSSi-SemiBold krad RecognitaSSiBold krab ReductoCondensedSSiCondensed kehr ReductoLightSSiLight kzgl ReductoSSi km6r ReductoSSi-Bold kzgbc ReductoSSi-Condensed kehr ReductoSSi-Light kzgl ReductoSSiBold kzgbc Reporter-Two prpr ResourceSSi klfr ResourceSSi-Bold klfb ResourceSSi-Italic klfri ResourceSSiBold klfb ResourceSSiItalic klfri Revival565BT-Bold bbrb Revival565BT-BoldItalic bbrbi Revival565BT-Italic bbrri Revival565BT-Roman bbrr Revue prvr RevueBT-Regular brvr Ribbon131BT-Bold botb Ribbon131BT-Regular botr Rockwell prwr Rockwell-Bold prwb Rockwell-BoldCondensed prwbc Rockwell-BoldItalic prwbi Rockwell-Condensed prwrc Rockwell-ExtraBold prwx Rockwell-Italic prwri Rockwell-Light prwl Rockwell-LightItalic prwli RockwellMT mrwr RockwellMT-Bold mrwb RockwellMT-BoldCondensed mrwbc RockwellMT-BoldItalic mrwbi RockwellMT-Condensed mrwrc RockwellMT-ExtraBold mrwx RockwellMT-Italic mrwri RockwellMT-Light mrwl RockwellMT-LightItalic mrwli RococoOrnamentsOne mpi001 RococoOrnamentsTwo mpi002 RomanaBT-Bold br0b RomanaBT-Roman br0r Romic-Bold prcb Romic-ExtraBold prcx Romic-Light prcl Romic-LightItalic prcli Romic-Medium prcm Rotation-Bold prnb Rotation-Italic prnri Rotation-Roman prnr RotisSansSerif prors RotisSansSerif-Bold probs RotisSansSerif-ExtraBold proxs RotisSansSerif-Italic proris RotisSansSerif-Light prols RotisSansSerif-LightItalic prolis RotisSemiSans pr1rs RotisSemiSans-Bold pr1bs RotisSemiSans-ExtraBold pr1xs RotisSemiSans-Italic pr1ris RotisSemiSans-Light pr1ls RotisSemiSans-LightItalic pr1lis RotisSemiSerif pr1r RotisSemiSerif-Bold pr1b RotisSerif pror RotisSerif-Bold prob RotisSerif-Italic prori RunicMT-Condensed mrurc RussellSquare prqr RussellSquare-Oblique prqro Rusticana-Borders prxrp Rusticana-Roman prxr RuzickaFreehandLH-Bold lrzb RuzickaFreehandLH-BoldSC lrzbc RuzickaFreehandLH-Roman lrzr RuzickaFreehandLH-RomanSC lrzrc Sabon-Bold psbb Sabon-BoldItalic psbbi Sabon-BoldItalicOsF psbbij Sabon-BoldOsF psbbj Sabon-Italic psbri Sabon-ItalicOsF psbrij Sabon-Roman psbr Sabon-RomanSC psbrc SabonMT msbr SabonMT-Italic msbri SabonMT-ItalicOSF msbrij SabonMT-SCOSF msbrcj SabonMT-SemiBold msbs SabonMT-SemiBoldOSF msbsj SanMarco ps0r SanMarco-Dfr ps0ra SansBlackCondensed-DTC dhvcc SansBlackCondensed-Oblique-DTC dhvcoc SansExtended-Medium-DTC dhvmx SansExtended-Regular-DTC dhvrx SansExtended-RegularOblique-DTC dhvroc SansExtraBlackCondensed-DTC dhvxc SansLightExtended-DTC dhvlx SansThinCondensed-DTC dhvhc SansThinCondensed-Oblique-DTC dhvhoc Sassoon-Primary ps7rp SassoonInfant ms7ri SassoonInfant-Alt ms7rai SassoonInfant-Bold ms7bi SassoonInfant-BoldAlt ms7bai SassoonPrimary ms7rp SassoonPrimary-Alt ms7rap SassoonPrimary-Bold ms7bp SassoonPrimary-BoldAlt ms7bap SassoonSanSlope ms7ris SassoonSanSlope-Alt ms7rais SassoonSanSlope-Bold ms7bis SassoonSanSlope-BoldAlt ms7bais SassoonSanSlope-Medium ms7mis SassoonSanSlope-MediumAlt ms7mais SassoonSans ms7rs SassoonSans-Alt ms7ras SassoonSans-Bold ms7bs SassoonSans-BoldAlt ms7bas SassoonSans-Medium ms7ms SassoonSans-MediumAlt ms7mas SaxNViolinsLightSSiLight ksol4 SaxNViolinsSSi ksor3 SaxNViolinsSSi-Light ksol4 SchadowBT-BlackCondensed bhwcc SchneidlerBT-Black bssc SchneidlerBT-BlackItalic bssci SchneidlerBT-Bold bssb SchneidlerBT-BoldItalic bssbi SchneidlerBT-Italic bssri SchneidlerBT-Light bssl SchneidlerBT-LightItalic bssli SchneidlerBT-Medium bssm SchneidlerBT-MediumItalic bssmi SchneidlerBT-Roman bssr ScienceTypeCustomPi-No1T ppi028 ScienceTypeCustomPi-No2T ppi029 ScienceTypeCustomPi-No3T ppi030 ScienceTypeCustomPi-No4T ppi031 ScienceTypeCustomPi-No5T ppi032 ScotchRomanMT ms1r ScotchRomanMT-Italic ms1ri ScribeSSi-ItalicSmallCaps korro ScribeSSi-SmallCaps korr ScribeSSiItalicSmallCaps korro ScribeSSiSmallCaps korr ScriptMT-Bold ms2b ScriptoriaProSSi ks9ri ScriptoriaSSi ks9ri SeagullBT-Bold bs3b SeagullBT-Heavy bs3h SeagullBT-Light bs3l SeagullBT-Medium bs3m SemiaScriptSSi kldrw SenatusSSi kcgr SenatusSSi-Bold kcgb SenatusSSiBold kcgb SentinalSSi kbir SerifGothic psgr SerifGothic-Black psgc SerifGothic-Bold psgb SerifGothic-ExtraBold psgx SerifGothic-Heavy psgh SerifGothic-Light psgl Serifa-Black psfc Serifa-Bold psfb Serifa-Italic psfri Serifa-Light psfl Serifa-LightItalic psfli Serifa-Roman psfr Serpentine-Bold pspb Serpentine-BoldOblique pspbo Serpentine-Light pspl Serpentine-LightOblique psplo Serpentine-Medium pspm Serpentine-MediumOblique pspmo ShadowSSi kumr Shannon-Bold pshb Shannon-Book pshk Shannon-ExtraBold pshx Shannon-Oblique pshro Shelley-AllegroScript zpshals Shelley-AndanteScript zpshans Shelley-VolanteScript zpshvos ShelleyAllegroBT-Regular zbshals ShelleyAndanteBT-Regular zbshans ShelleyVolanteBT-Regular zbshvos ShoestringSSi krqr ShoestringSSi-Italic krqro ShoestringSSiItalic krqro ShortHaulSSi kicr ShotgunBT-Regular bs4r ShotgunBlanksBT-Regular bs4rl SignsMT mpi320 SimonciniGaramond pigr SimonciniGaramond-Bold pigb SimonciniGaramond-Italic pigri Skia eskr Slimbach-Black pscc Slimbach-BlackItalic pscci Slimbach-Bold pscb Slimbach-BoldItalic pscbi Slimbach-Book psck Slimbach-BookItalic pscki Slimbach-Medium pscm Slimbach-MediumItalic pscmi SlotSSiBlack kp0r SnellBT-Black bs5c SnellBT-Bold bs5b SnellBT-Regular bs5r SnellRoundhand-BlackScript prscw SnellRoundhand-BoldScript psrbw SnellRoundhand-Script psrrw SnippetScriptSSi kptr Sonata psor SophisticateBlackSSiExtraBold ktfh SophisticateBlackSSiExtraBoldItalic ktfhi SophisticateSSi ktfr SophisticateSSiItalic ktfri SophisticateSSiSemiBold ktfd SophisticateSSiSemiBoldItalic ktfdi SouthwestOrnamentsMT mpi321 Souvenir-Bold psvb Souvenir-BoldItalic psvbi Souvenir-Demi psvd Souvenir-DemiItalic psvdi Souvenir-Light psvl Souvenir-LightItalic psvli Souvenir-Medium psvm Souvenir-MediumItalic psvmi SouvenirBlackSSiBold ksvb SouvenirBlackSSiBoldItalic ksvbi SouvenirBlackSSiExtraBold ksvu SouvenirBlackSSiExtraBoldItalic ksvui SouvenirITCbyBT-Demi bsvd SouvenirITCbyBT-DemiItalic bsvdi SouvenirITCbyBT-Light bsvl SouvenirITCbyBT-LightItalic bsvli SouvenirLightSSiLight ksvl SouvenirLightSSiLightItalic ksvli SouvenirSSi ksvm SouvenirSSiItalic ksvmi SouvenirSSiSemiBold ksvd SouvenirSSiSemiBoldItalic ksvdi SpartaSSi khcr Spartan-BookClassified psnk Spartan-HeavyClassified psnh SpartanFourMT msn4 SpartanFourMT-Bold msnb4 SpartanFourMT-Italic msnri4 SpartanOneMT msn1 SpartanOneMT-Bold msnb1 SpartanOneMT-Italic msnri1 SpartanOneThreeMT msnr13 SpartanOneThreeMT-Bold msnb13 SpartanOneThreeMT-Italic msni13 SpartanOneTwoMT msnr12 SpartanOneTwoMT-Bold msnb12 SpartanOneTwoMT-Italic msni12 SpartanThreeFourMT msnr34 SpartanThreeFourMT-Bold msnb34 SpartanThreeFourMT-Italic msni34 SpartanThreeMT msn3 SpartanThreeMT-Bold msnb3 SpartanThreeMT-Italic msnri3 SpartanTwoFourMT msnr24 SpartanTwoFourMT-Bold msnb24 SpartanTwoFourMT-Italic msni24 SpartanTwoMT msn2 SpartanTwoMT-Bold msnb2 SpartanTwoMT-Italic msnri2 SpectrumMT msmr SpectrumMT-Expert msmr SpectrumMT-Italic msmri SpectrumMT-ItalicExpert msmri SpectrumMT-ItalicOsF msmrij SpectrumMT-SC msmrc SpectrumMT-SemiBold msms SpectrumMT-SemiBoldExpert msms SpectrumMT-SemiBoldOsF msmsj SpeedoBlackSSiBold kerb SpeedoBookSSiMedium kerm SpeedoLightSSiLight kerl SpeedoSSi kerk SpeedoSSi-Light kerl SpeedoSSiSemiBold kerd SpeedoUltraSSiBlack keru SpiffyScriptSSi krprw SpitbolAlternateSSi karra SpitbolSSi karr SportsFourMT mpi109 SportsOneMT mpi104 SportsThreeMT mpi108 SportsTwoMT mpi105 Square721BT-Bold besb Square721BT-BoldCondensed besbc Square721BT-BoldExtended besbx Square721BT-Roman besr Square721BT-RomanCondensed besrc Square721BT-RomanExtended besrx SquareFrameMT mpi203 SquareFrameNegMT mpi204 SquareSlabserif711BT-Bold bcyb SquareSlabserif711BT-Light bcyl SquareSlabserif711BT-Medium bcym Staccato222BT-Regular bmsr Staccato555BT-RegularA bczr StackBlackSSiBlack kqrc StackLightSSiLight kqrl StackLightSSiMedium kqrm StackSSi kqrk StackSSi-Light kqrl StackSSiBold kqrb StandardSymL usyr StempelGaramond-Bold pegb StempelGaramond-BoldItalic pegbi StempelGaramond-BoldItalicOsF pegbij StempelGaramond-BoldOsF pegbj StempelGaramond-Italic pegri StempelGaramond-ItalicOsF pegrij StempelGaramond-Roman pegr StempelGaramond-RomanSC pegrc StempelSchneidler-Black pssc StempelSchneidler-BlackItalic pssci StempelSchneidler-Bold pssb StempelSchneidler-BoldItalic pssbi StempelSchneidler-Italic pssri StempelSchneidler-Light pssl StempelSchneidler-LightItalic pssli StempelSchneidler-MedItalic pssmi StempelSchneidler-Medium pssm StempelSchneidler-Roman pssr Stencil pslr StencilBT-Regular bslr SterlingSSi koyr SterlingSSi-Bold koyb SterlingSSi-BoldItalic koybi SterlingSSi-Italic koyri SterlingSSiBold koyb SterlingSSiBoldItalic koybi SterlingSSiItalic koyri StoneInformal psir StoneInformal-Bold psib StoneInformal-BoldItalic psibi StoneInformal-Italic psiri StoneInformal-Semibold psis StoneInformal-SemiboldItalic psisi StoneSans pstrs StoneSans-Bold pstbs StoneSans-BoldItalic pstbis StoneSans-Italic pstris StoneSans-PhoneticAlternate pstrs StoneSans-PhoneticIPA pstrs StoneSans-Semibold pstss StoneSans-SemiboldItalic pstsis StoneSerif pstr StoneSerif-Bold pstb StoneSerif-BoldItalic pstbi StoneSerif-Italic pstri StoneSerif-PhoneticAlternate pstr StoneSerif-PhoneticIPA pstr StoneSerif-Semibold psts StoneSerif-SemiboldItalic pstsi StrayhornMT-Bold myhb StrayhornMT-BoldItalic myhbi StrayhornMT-BoldItalicOsF myhbij StrayhornMT-BoldOsF myhbj StrayhornMT-ExtraBold myhx StrayhornMT-ExtraBoldItalic myhxi StrayhornMT-ExtraBoldItalicOsF myhxij StrayhornMT-ExtraBoldOsF myhxj StrayhornMT-Italic myhri StrayhornMT-ItalicOsF myhrij StrayhornMT-Light myhl StrayhornMT-LightItalic myhli StrayhornMT-LightItalicOsF myhlij StrayhornMT-LightSC myhlc StrayhornMT-RegulaSC myhrc StrayhornMT-Regular myhr StuyvesantBT-Regular bs6r SwingMT-Bold mswb Swiss721BT-Black bhvc Swiss721BT-BlackCondensed bhvcc Swiss721BT-BlackCondensedItalic bhvcic Swiss721BT-BlackExtended bhvcx Swiss721BT-BlackItalic bhvci Swiss721BT-BlackOutline bhvcl Swiss721BT-BlackRounded bhrc Swiss721BT-Bold bhvb Swiss721BT-BoldCondensed bhvbc Swiss721BT-BoldCondensedItalic bhvbic Swiss721BT-BoldCondensedOutline bhvblc Swiss721BT-BoldExtended bhvbx Swiss721BT-BoldItalic bhvbi Swiss721BT-BoldOutline bhvbl Swiss721BT-BoldRounded bhrb Swiss721BT-Heavy bhvh Swiss721BT-HeavyItalic bhvhi Swiss721BT-Italic bhvri Swiss721BT-ItalicCondensed bhvric Swiss721BT-Light bhvl Swiss721BT-LightCondensed bhvlc Swiss721BT-LightCondensedItalic bhvlic Swiss721BT-LightExtended bhvlx Swiss721BT-LightItalic bhvli Swiss721BT-Medium bhvm Swiss721BT-MediumItalic bhvmi Swiss721BT-Roman bhvr Swiss721BT-RomanCondensed bhvrc Swiss721BT-RomanExtended bhvrx Swiss721BT-Thin bhva Swiss721BT-ThinItalic bhvai Swiss911BT-ExtraCompressed bhvhq Swiss911BT-UltraCompressed bhvhu Swiss921BT-RegularA bhir Swiss924BT-RegularB bhsr Symbol psyr SymbolBlackSSiBlack ksyc SymbolBlackSSiBlackItalic ksyci SymbolBookSSiBook ksyk SymbolBookSSiBookItalic ksyki SymbolBookSSiMedium ksym SymbolBookSSiMediumItalic ksymi SymbolPS msyr SymbolProportionalBT-Regular bpi002 SymbolSSi ksyr SymbolSSiBold ksyb SymbolSSiBoldItalic ksybi Syntax-Black psxc Syntax-Bold psxb Syntax-Italic psxri Syntax-Roman psxr Syntax-UltraBlack psxu TangoBT-Regular bt0r TangoScriptBlackSSiBlack ks5c TangoScriptSSi ks5r TangoScriptSSiBold ks5b Tekton ptkr Tekton-Bold ptkb Tekton-BoldOblique ptkbo Tekton-Oblique ptkro TektonMM ptkMM TektonMM-Oblique ptkMMo Tempo-HeavyCondensed ptphc Tempo-HeavyCondensedItalic ptphic TerminusBlackCondensedSSiBoldCondensed kpnbc TerminusBlackSSiBold kpnb TerminusBlackSSiBoldItalic kpnbi TerminusLightSSiLight kpnl TerminusLightSSiLightItalic kpnli TerminusSSi kpnr TerminusSSi-Bold kpnb TerminusSSi-BoldCondensed kpnbc TerminusSSi-BoldItalic kpnbi TerminusSSi-Italic kpnri TerminusSSi-Light kpnl TerminusSSi-LightItalic kpnli TerminusSSi-SemiBold kpns TerminusSSi-SemiBoldItalic kpnsi TerminusSSiItalic kpnri TerminusSSiSemiBold kpns TerminusSSiSemiBoldItalic kpnsi ThesisSSi kcor ThesisSSi-Bold kcob ThesisSSi-BoldItalic kcobi ThesisSSi-Italic kcori ThesisSSiBold kcob ThesisSSiBoldItalic kcobi ThesisSSiItalic kcori ThinxSSi ksnk ThinxSSi-Bold ksnh ThinxSSiBold ksnh ThunderbirdBT-Regular bt1r TiascoOldStyleSSiBoldOldStyleFigures kgjb TiascoOldStyleSSiItalicOldStyleFigures kgjri TiascoOldStyleSSiSmallCaps kgjrc TiascoSSi kgjr TiascoSSi-Bold kgjb TiascoSSi-BoldOldStyleFigures kgjb TiascoSSi-Italic kgjri TiascoSSi-ItalicOldStyleFigures kgjri TiascoSSi-SmallCaps kgjrc TiascoSSiBold kgjb TiascoSSiItalic kgjri Tiffany ptfr Tiffany-Demi ptfd Tiffany-DemiItalic ptfdi Tiffany-Heavy ptfhi Tiffany-HeavyItalic ptfhi Tiffany-Italic ptfri TiffanyITCbyBT-Demi btfd TiffanyITCbyBT-DemiItalic btfdi TiffanyITCbyBT-Heavy btfh TiffanyITCbyBT-HeavyItalic btfhi TiffanyITCbyBT-Light btfl TiffanyITCbyBT-LightItalic btfli Times-Bold ptmb Times-BoldItalic ptmbi Times-BoldItalicOsF ptmbij Times-BoldSC ptmbc Times-ExtraBold ptmx Times-Italic ptmri Times-ItalicOsF ptmrij Times-PhoneticAlternate ptmr Times-PhoneticIPA ptmr Times-Roman ptmr Times-RomanSC ptmrc Times-Semibold ptms Times-SemiboldItalic ptmsi TimesEuropa-Bold pteb TimesEuropa-BoldItalic ptebi TimesEuropa-Italic pteri TimesEuropa-Roman pter TimesNRExpertMT mntr TimesNRExpertMT-Bold mntb TimesNRExpertMT-BoldItalic mntbi TimesNRExpertMT-Italic mntri TimesNRMT mntr TimesNRMT-Bold mntb TimesNRMT-BoldItalic mntbi TimesNRMT-ExtraBold mntx TimesNRMT-Italic mntri TimesNRMT-Medium mntm TimesNRMT-MediumItalic mntmi TimesNRMT-SemiBold mnts TimesNRMT-SemiBoldItalic mntsi TimesNRPSExpert mnsr TimesNRPSExpert-Bold mnsb TimesNRPSExpert-BoldItalic mnsbi TimesNRPSExpert-Italic mnsri TimesNRSevenMT mntr7 TimesNRSevenMT-Bold mntb7 TimesNRSevenMT-BoldItalic mntbi7 TimesNRSevenMT-Italic mntri7 TimesNewRomanMT-BoldCond mntbc TimesNewRomanMT-Cond mntrc TimesNewRomanMT-CondItalic mntric TimesNewRomanPS mnsr TimesNewRomanPS-Bold mnsb TimesNewRomanPS-BoldItalic mnsbi TimesNewRomanPS-Italic mnsri TimesNewRomanSF mntr TimesNewRomanSF-Bold mntb TimesNewRomanSF-BoldItalic mntbi TimesNewRomanSF-Italic mntri TimesSmallTextMT mtmrg TimesSmallTextMT-Bold mtmbg TimesSmallTextMT-Italic mtmrgi TimesTen-Bold pttb TimesTen-BoldItalic pttri TimesTen-BoldItalicOsF pttbij TimesTen-BoldOsF pttbj TimesTen-Italic pttri TimesTen-ItalicOsF pttrij TimesTen-Roman pttr TimesTen-RomanSC pttrc TimesTenCyr-Bold pttbz TimesTenCyr-BoldInclined pttbozr TimesTenCyr-Inclined pttroz TimesTenCyr-Upright pttrz TorrentGraphicSSi klbk TorrentGraphicSSiItalic klbko TorrentGraphicSSiSemiBold klbd TorrentGraphicSSiSemiBoldItalic klbdo ToucheSSi kpsr TourinaSSi kb7rn TradeGothic ptg TradeGothic-Bold ptg TradeGothic-BoldCondTwenty ptgc TradeGothic-BoldCondTwentyObl ptgc TradeGothic-BoldOblique ptg TradeGothic-BoldTwo ptg TradeGothic-BoldTwoOblique ptg TradeGothic-CondEighteen ptgc TradeGothic-CondEighteenObl ptgc TradeGothic-Light ptg TradeGothic-LightOblique ptg TradeGothic-Oblique ptg TradeGothicLH-BoldExtended ltgbx TradeGothicLH-Extended ltgrx Trajan-Bold ptjb Trajan-Regular ptjr Transitional521BT-BoldA beab Transitional521BT-CursiveA bearw Transitional521BT-RomanA bear Transitional551BT-MediumB bffm Transitional551BT-MediumItalicB bffmi TransportMT mpi106 TrendexBlackSSiBold kagb TrendexBlackSSiBoldItalic kagbo TrendexCondensedSSiBoldCondensed kagbc TrendexCondensedSSiCondensed kagkc TrendexLightCondensedSSiMediumCondensed kagmc TrendexLightSSiExtraLight kagi TrendexLightSSiExtraLightItalic kagio TrendexLightSSiMedium kagm TrendexLightSSiMediumItalic kagmo TrendexSSi kagk TrendexSSi-Bold kagb TrendexSSi-BoldCondensed kagbc TrendexSSi-BoldItalic kagbo TrendexSSi-Condensed kagkc TrendexSSi-ExtraLight kagi TrendexSSi-ExtraLightItalic kagio TrendexSSi-Italic kagko TrendexSSi-Medium kagm TrendexSSi-MediumCondensed kagmc TrendexSSi-MediumItalic kagmo TrendexSSi-SemiBold kagd TrendexSSi-SemiBoldItalic kagdo TrendexSSiItalic kagko TrendexSSiSemiBold kagd TrendexSSiSemiBoldItalic kagdo TridentBlackSSiBlack knvu TridentMediumSSiMedium knvm TridentMediumSSiMediumItalic knvmi TridentSSi knvk TridentSSiBold knvb TridentSSiBoldItalic knvbi TridentSSiItalic knvki TrumpMediaeval-Bold ptvb TrumpMediaeval-BoldItalic ptvbi TrumpMediaeval-BoldItalicOsF ptvbij TrumpMediaeval-BoldOsF ptvbj TrumpMediaeval-Italic ptvri TrumpMediaeval-ItalicOsF pvvrij TrumpMediaeval-Roman ptvr TrumpMediaeval-SC ptvrc TumbleweedSSi kpor TwCenMT-Bold mtwb TwCenMT-BoldItalic mtwbi TwCenMT-CondensedBold mtwbc TwCenMT-CondensedExtraBold mtwxc TwCenMT-CondensedMedium mtwmc TwCenMT-CondensedUltraBold mtwuc TwCenMT-ExtraBold mtwx TwCenMT-ExtraBoldItalic mtwxi TwCenMT-Light mtwl TwCenMT-LightItalic mtwli TwCenMT-Medium mtwm TwCenMT-MediumItalic mtwmi TwCenMT-SemiBold mtws TwCenMT-SemiMedium mtwsm TwCenMT-UltraBold mtwu TwCenMT-UltraBoldItalic mtwui TycoonBlackSSiBlack kndc TycoonBlackSSiBlackItalic kndci TycoonBlackSSiBold kndb TycoonBlackSSiBoldItalic kndbi TycoonOldStyleSSiItalicOldStyleFigures kndri TycoonOldStyleSSiSmallCaps kndrc TycoonSSi kndr TycoonSSi-Black kndc TycoonSSi-BlackItalic kndci TycoonSSi-Bold kndb TycoonSSi-BoldItalic kndbi TycoonSSi-Italic kndri TycoonSSi-ItalicOldStyleFigures kndri TycoonSSi-SemiBold knds TycoonSSi-SemiBoldItalic kndsi TycoonSSi-SmallCaps kndrc TycoonSSiBoldItalicOldStyleFigures kndbi TycoonSSiItalic kndri TycoonSSiSemiBold knds TycoonSSiSemiBoldItalic kndsi TypewriterEliteMT mtyre TypewriterGothicMT mtyrs TypewriterMT mtyr TypoUprightBT-Regular bt2r URWBookmanL-DemiBold ubkd URWBookmanL-DemiBoldItal ubkdi URWBookmanL-Ligh ubkl URWBookmanL-LighItal ubkli URWChanceryL-MediItal uzcmi URWGothicL-Book uagk URWGothicL-BookObli uagko URWGothicL-Demi uagd URWGothicL-DemiObli uagdo URWPalladioL-Bold uplb URWPalladioL-BoldItal uplbi URWPalladioL-Ital uplri URWPalladioL-Roma uplr UbiqGothicBlackSSiBlack ksgc UbiqGothicBlackSSiExtraBold ksgx UbiqGothicLightSSiLight ksgl UbiqGothicSSi ksgr UbiqGothicSSi-Light ksgl UbiqGothicSSi-UltraBlack ksgh UbiqGothicSSiBold ksgb UbiqGothicUltraSSiUltraBlack ksgh Umbra pumr UmbraBT-Regular bumr UnicornScriptSSi knurw Univers punr Univers-Black punc Univers-BlackExt puncx Univers-BlackExtObl puncox Univers-BlackOblique punco Univers-Bold punb Univers-BoldExt punbx Univers-BoldExtObl punbox Univers-BoldOblique punbo Univers-Condensed punrc Univers-CondensedBold punbc Univers-CondensedBoldOblique punboc Univers-CondensedLight punlc Univers-CondensedLightOblique punloc Univers-CondensedOblique punroc Univers-Extended punrx Univers-ExtendedObl punrox Univers-ExtraBlack punx Univers-ExtraBlackExt punxx Univers-ExtraBlackExtObl punxox Univers-ExtraBlackObl punxo Univers-Light punl Univers-LightOblique punlo Univers-LightUltraCondensed punjc Univers-Oblique punro Univers-ThinUltraCondensed punac Univers-UltraCondensed punu Universal-GreekwithMathPi pulrk Universal-NewswithCommPi pulrncp UniversalMath1BT-Regular bpi003 UniversityRoman pzyr UniversityRomanBT-Bold buyb UniversityRomanBT-Regular buyr UpscaleScriptSSi kpar Usherwood-Black puwc Usherwood-BlackItalic puwci Usherwood-Bold puwb Usherwood-BoldItalic puwbi Usherwood-Book puwk Usherwood-BookItalic puwki Usherwood-Medium puwm Usherwood-MediumItalic puwmi Utopia-Black putc Utopia-BlackOsF putcj Utopia-Bold putb Utopia-BoldItalic putbi Utopia-BoldItalicOsF putbij Utopia-BoldOsF putbj Utopia-Headline putrd Utopia-Italic putri Utopia-ItalicOsF putrij Utopia-Ornaments putrp Utopia-Regular putr Utopia-RegularSC putrc Utopia-Semibold puts Utopia-SemiboldItalic putsi Utopia-SemiboldItalicOsF putsij Utopia-SemiboldSC putsc Utopia-Titling putrd UtopiaExp-Black putc UtopiaExp-Bold putb UtopiaExp-BoldItalic putbi UtopiaExp-Italic putri UtopiaExp-Regular putr UtopiaExp-Semibold puts UtopiaExp-SemiboldItalic putsi VAGRounded-Black pvrc VAGRounded-Bold pvrb VAGRounded-Light pvrl VAGRounded-Thin pvra VAGRoundedBT-Regular bvrr VAGRoundedBlackSSiBlack kvrc VAGRoundedBlackSSiBold kvrb VAGRoundedLightSSiLight kvrl VAGRoundedLightSSiThin kvra VacationMT mpi107 VanDijckExpertMT mvdr VanDijckExpertMT-AltFigs mvdra VanDijckExpertMT-AltFigsIta mvdrai VanDijckExpertMT-Italic mvdri VanDijckMT mvdr VanDijckMT-Italic mvdri VectoraLH-Black lvcc VectoraLH-BlackItalic lvcci VectoraLH-Bold lvcb VectoraLH-BoldItalic lvcbi VectoraLH-Italic lvcri VectoraLH-Light lvcl VectoraLH-LightItalic lvcli VectoraLH-Roman lvcr Veljovic-Black pvjc Veljovic-BlackItalic pvjci Veljovic-Bold pvjb Veljovic-BoldItalic pvjbi Veljovic-Book pvjk Veljovic-BookItalic pvjki Veljovic-Medium pvjm Veljovic-MediumItalic pvjmi Venetian301BT-Bold burb Venetian301BT-BoldItalic burbi Venetian301BT-Demi burd Venetian301BT-DemiItalic burdi Venetian301BT-Italic burri Venetian301BT-Roman burr VeracityBlackSSiBlack kutc VeracityBlackSSiBold kutb VeracityBlackSSiBoldItalic kutbi VeracityOrnamentsSSi kutrp VeracityProBlackSSiBlack kutc VeracityProBlackSSiBold kutb VeracityProBlackSSiBoldItalic kutbi VeracityProSSi kutr VeracityProSSi-Black kutc VeracityProSSi-Bold kutb VeracityProSSi-BoldItalic kutbi VeracityProSSi-Italic kutri VeracityProSSi-SemiBold kuts VeracityProSSi-SemiBoldItalic kutsi VeracityProSSiItalic kutri VeracityProSSiSemiBold kuts VeracityProSSiSemiBoldItalic kutsi VeracitySSi kutr VeracitySSi-Black kutc VeracitySSi-Bold kutb VeracitySSi-BoldItalic kutbi VeracitySSi-Italic kutri VeracitySSi-SemiBold kuts VeracitySSi-SemiBoldItalic kutsi VeracitySSiItalic kutri VeracitySSiSemiBold kuts VeracitySSiSemiBoldItalic kutsi VeracityTitlingCapsSSi kutrd Versailles-Black pvlc Versailles-BlackItalic pvlci Versailles-Bold pvlb Versailles-BoldItalic pvlbi Versailles-Italic pvlri Versailles-Light pvll Versailles-LightItalic pvlli Versailles-Roman pvlr VictoriaTitlingMT-Condensed mvirdc VinetaBT-Regular bv0r Visigoth pvgr Viva-BoldExtraExtended pvvxx Viva-LightCondensed pvvlc Viva-Regular pvvr VivaMM pvvMM VoraceSSi kvjk VoraceSSi-Black kvjc VoraceSSi-BlackItalic kvjci VoraceSSi-Bold kvjb VoraceSSi-BoldItalic kvjbi VoraceSSi-Italic kvjki VoraceSSi-Medium kvjm VoraceSSi-MediumItalic kvjmi WaifSSi kmsr WalbaumBook-Bold pwbb WalbaumBook-BoldExpert pwbb WalbaumBook-BoldItalic pwbbi WalbaumBook-BoldItalicExpert pwbbi WalbaumBook-BoldItalicOsF pwbbij WalbaumBook-BoldOsF pwbbj WalbaumBook-Italic pwbri WalbaumBook-ItalicExpert pwbri WalbaumBook-ItalicOsF pwbrij WalbaumBook-MdExpert pwbm WalbaumBook-MdItalicExpert pwbmi WalbaumBook-MdItalicOsF pwbmij WalbaumBook-Medium pwbm WalbaumBook-MediumItalic pwbmi WalbaumBook-MediumSC pwbmc WalbaumBook-Regular pwbr WalbaumBook-RegularExpert pwbr WalbaumBook-RegularSC pwbrc WalbaumExpMT mwbr WalbaumExpMT-Italic mwbri WalbaumExpMT-Medium mwbm WalbaumExpMT-MediumItalic mwbmi WalbaumMT mwbr WalbaumMT-Italic mwbri WalbaumMT-Medium mwbm WalbaumMT-MediumItalic mwbmi WalbaumSSi kwbr WalbaumSSi-Bold kwbb WalbaumSSi-BoldItalic kwbbi WalbaumSSi-BoldItalicOldStyleFigures kwbbi WalbaumSSi-BoldOldStyleFigures kwbb WalbaumSSi-Italic kwbri WalbaumSSi-ItalicOldStyleFigures kwbri WalbaumSSi-SmallCaps kwbrc WantedPosterSSiBlack kb0r WarningLH-Pi lpi002 WatersTitlingMM pwtMM WatersTitlingMM-Alternate pwtMM WatersTitlingMM-Ligatures pwtMMl WatersTitlingMM-TallCaps pwtMMd WeddingTextBT-Regular bw0r Weidemann-Black pwdc Weidemann-BlackItalic pwdci Weidemann-Bold pwdb Weidemann-BoldItalic pwdbi Weidemann-Book pwdk Weidemann-BookItalic pwdki Weidemann-Medium pwdm Weidemann-MediumItalic pwdmi Weiss pwsr Weiss-Bold pwsb Weiss-ExtraBold pwsx Weiss-Italic pwsri WendyLP-Bold lwhb WendyLP-Light lwhl WendyLP-Medium lwhm WiesbadenSwing-Dingbats ppi033 WilhelmKlingsporGotisch pwgr WilhelmKlingsporGotisch-Dfr pwgra Wilke-Black pwkc Wilke-BlackItalic pwkci Wilke-Bold pwkb Wilke-BoldItalic pwkbi Wilke-Italic pwkri Wilke-Roman pwkr Willow pwwr WindsorBT-Elongated bwnrx WindsorBT-Light bwnl WindsorBT-LightCondensed bwnlc WindsorBT-Outline bwnrl WindsorBT-Roman bwnr WindsorMT mwnr WittenbergerFrakturMT mwrr WittenbergerFrakturMT-Bd mwrb WittenbergerFrakturMT-BdDfr mwdba WittenbergerFrakturMT-Dfr mwdra WitternbergerFraktMT mwrr WitternbergerFraktMT-Bold mwrb WoodcutOrnamentsOneSSi kpi026 WoodcutOrnamentsTwoSSi kpi027 WoodtypeOrnaments-One ppi026 WoodtypeOrnaments-Two ppi027 ZapfCalligraphic801BT-Bold bplb ZapfCalligraphic801BT-BoldItal bplbi ZapfCalligraphic801BT-Italic bplri ZapfCalligraphic801BT-Roman bplr ZapfChancery-Bold mzcb ZapfChancery-Demi mzcd ZapfChancery-Italic pzcri ZapfChancery-Light pzcl ZapfChancery-LightItalic pzcli ZapfChancery-MediumItalic pzcmi ZapfChancery-Roman pzcr ZapfChanceryITCbyBT-Bold bzcb ZapfChanceryITCbyBT-Demi bzcd ZapfChanceryITCbyBT-Medium bzcm ZapfChanceryITCbyBT-MediumItal bzcmi ZapfDingbats pzdr ZapfDingbatsITCbyBT-Regular bzdr ZapfElliptical711BT-Bold bmlb ZapfElliptical711BT-BoldItalic bmlbi ZapfElliptical711BT-Italic bmlri ZapfElliptical711BT-Roman bmlr ZapfHumanist601BT-Bold bopb ZapfHumanist601BT-BoldItalic bopbi ZapfHumanist601BT-Demi bopd ZapfHumanist601BT-DemiItalic bopdi ZapfHumanist601BT-Italic bopri ZapfHumanist601BT-Roman bopr ZapfHumanist601BT-Ultra bopu ZapfHumanist601BT-UltraItalic bopui Zeal epi001 ZeitgeistExpertMT mztr ZeitgeistExpertMT-Bold mztb ZeitgeistExpertMT-Cameo zmztcm ZeitgeistExpertMT-Condensed mztrc ZeitgeistExpertMT-Italic mztri ZeitgeistMT mztr ZeitgeistMT-Alternative mztr ZeitgeistMT-Bold mztb ZeitgeistMT-Cameo zmztcm ZeitgeistMT-Condensed mztrc ZeitgeistMT-CrazyPaving zmztcz ZeitgeistMT-Italic mztri ZiptyDo pzpr ZurichBT-Black bunc ZurichBT-BlackExtended buncx ZurichBT-BlackItalic bunci ZurichBT-Bold bunb ZurichBT-BoldCondensed bunbc ZurichBT-BoldCondensedItalic bunbic ZurichBT-BoldExtended bunbx ZurichBT-BoldExtraCondensed bunbq ZurichBT-BoldItalic bunbi ZurichBT-ExtraBlack bunx ZurichBT-ExtraCondensed bunrq ZurichBT-Italic bunri ZurichBT-ItalicCondensed bunric ZurichBT-Light bunl ZurichBT-LightCondensed bunlc ZurichBT-LightCondensedItalic bunlic ZurichBT-LightExtraCondensed bunlq ZurichBT-LightItalic bunli ZurichBT-Roman bunr ZurichBT-RomanCondensed bunrc ZurichBT-RomanExtended bunrx ZurichBT-UltraBlackExtended bunux pstoedit-3.62/misc/safer.ps0000774000175500000000000000055007336011010012602 00000000000000% disallow all file ops /file { (Your PostScript program tried to use an unsafe operation \(file\) \n) print quit } bind def /renamefile { (Your PostScript program tried to use an unsafe operation \(renamefile\) \n) print quit } bind def /deletefile { (Your PostScript program tried to use an unsafe operation \(deletefile\) \n) print quit } bind def pstoedit-3.62/misc/svg.fmp0000774000175500000000000000211007370326122012446 00000000000000% % Fontmap for SVG Driver (drvsvg) % (part of plugins.dll ) % % this is implicitly used by the svg driver % but can be used also explicitly using the -fontmap option % % format: % "document font" "font description in SVG syntax" % "Helvetica" "font-family:Helvetica,Arial;" "Helvetica-Bold" "font-family:Helvetica-Bold,Arial,sans-serif;font-weight:bold;" "Helvetica-Narrow" "font-family:Helvetica-Narrow,Arial,sans-serif;font-weight:narrow;" "Helvetica-Oblique" "font-family:Helvetica-Oblique,Arial,sans-serif;font-style:oblique;" "Helvetica-BoldOblique" "font-family:Helvetica-BoldOblique,Arial,sans-serif;font-style:oblique;font-weight:bold;" % "Times-Roman" "font-family:'Times New Roman';" "Times-Italic" "font-family:'Times New Roman';font-style:oblique;" "Times-Bold" "font-family:'Times New Roman';font-weight:bold;" % "Courier" "font-family:Courier,'Courier',monospace;" "Courier-Bold" "font-family:Courier-Bold,'Courier',monospace;font-weight:bold;" "Courier-BoldOblique" "font-family:Courier-BoldOblique,'Courier',monospace;font-weight:bold;font-style:oblique;" pstoedit-3.62/misc/swffonts/0000755000175500010010000000000012137264542013104 500000000000000pstoedit-3.62/misc/swffonts/default.fdb0000774000175500000000000005232307336027230015130 00000000000000fdb0˜Techno-RT‚›ÃÅÇ[ ¢¤¦×ú(»½¿ =mÿv x z | ~ œ ¼ • P Á Ò  ? u ” ª ¹ Ç Ù Z r » 4_¬4y¸Ûô(wG‹õh¨í{œ«Þ8^°äA‚õ_Ýõ.[œèQi{“ª¹Ê>§üfÃýŒÀÜkêxáOzê R { ¸ û B!‚!á!ð!O"•"—"õ"|#!$u$î$d%·%:&½&G'Ô'(I)Ð)<*¨*+‘+¯+Í+ó+,•,ü,c-Ò-D.á.%/i/´/0.0y0Ù01Ï1û1m23ª3S4²4Ã4ß45Ž5Ï5b66³6Ø6$7V7ï7858U88 9^9ô9È:;h;†;™;´; <’<±<Ý< =0=2=…=>±>C?ê?ù?@4@`@w@Ž@µ@×@7A}AAùAB'BeB¸BöBCCFCUD°D E^E½EF/FUF~FœFGzG HxHÀHIXIgIIÆIÕIJJiJ¥JÄJþJK-jµyR¦âG–Ön[ÁRÉnn±x¡·ŸÎóÝbðUû©D5b®µyR¦å¿–Ön$ASnn±xÞwŸ6óÝbð*;© ¼5@­‰ætïg3¦…80ó‚Zá±80T´Ï)–ãó†ÎÜMñ¹ë¾7:‹¸›5k»hvË5ïŠÅ·Å[eexªµ_UU5jï¼w;¨Ž Ëž¤±íÛÇÌ®§€V€hWºˆà•wo-ivÀwÖÔÛëU­´«[ÔÊmõ¥6Õµ½êjÖõ*›jÕ.úÝkz–µ¶š˜„:ÊÀ9€ã@P–t‰š­ÀññJ’®6²UÁòÚÀ5jr€w³(€˜ÌZ`“ºÊ˜8Êlã+€KgºÆãyÞ|PÛÏuȃeFΉLçwf~P4è—N‹ 7,›·€5fæÄw,’ڤĺ I²Ã(fLÊdÂ0ˆ7vsÅ CxÞhnìë’ÙMt6npÖìÚ` rÝ ‹sÔ@7»¨€-fZf÷.©ÝĆíŒ ×þäñCo=ÉÞÌÖåÃe˜kcºÜHnØ÷.5kâsæ32E˜8ÎlÓ; ŠÍÕ¬Ƞfs™€#L‹œg6i•Ð×@ÙÓfç]lÕlUì«L‹œg6i•Ð×@ÙÓgg]Lre1–j0¶íƒbªk üÙ³³.æº2ΘË9dP39ŒÌ€vU¶vj¦»3ΘË5d`30VŠí¦Â¬©Ï)œÀ.Êö|òçÏt·@g3.s l«±3få2e …mš©@^Íž\ùî€–è æeÎd)@$2d¸·g5.ƒ Ê“2™0Œ¨ÀÑ)¬à.ìÕlU´‰ä¥2a Q€3žS9À^”ÌùåÏžè Š½•i@#2d:µVíƒb¯uA°ª5lBZyàVÛÆð×¶£ÂïNy›JµÑ5iÃ@øÚ©WZÖâ•ZœR´°5h¾ZeƒÊI|£Öz]g®–áYà¥d]ÙE]-–E'~ÙOîUØž +=É€kt"FÈ]-­¥·¥Š¿‚iw¥²PÒ4•#5£uç·i[ìï™–ñ‹à%Η iðÀ\+‘–±À%²Íù¶·ö¯fÛ¾íÀ›³`³«iŽ­–6­ˆJÐy0–Ïx5ióm÷ÖÔÛiiw©k[ëu­«tÛÔªmêjÖÕ¥­õ¥6õ2›m2ÞúÕh˜êȘ¹X%žã@PX Ô©*àx¹mg=ÆÖJ€5L ‘ØšÝbñ¼ï>(mçºÅØfÝHµaŽ7»© ËíÀ9–FíÃq;ºÜ±€5fZçvY·.3[“¾(mçÅ Cw'`© 7©ÝˆíŒ2Ûêwrá»cÜH-Eõ‘ݸnX÷R‰ÐT‚Ù‰ÝÛ†åu žÛ#a›u‹Å ¼øÞwžëbku 5g¶Yge€()Ð(.pð†žî†¢'€/x ï—ðÓq8a.Îa.  Àýåíó8ó§ÑO¦Ñ\À·PVbežü Š0Œm”lãt]`Ÿøi^¤5jò«xè‰Wñ*Ø`åµ›­|Åm¨å›lŸ¶ùXÄÔçí·%›ò•n ~UU¶ßSj|Ä-Ø~Ûcµ'Sy­UÀ¿ï6UX€ªÜ©Sa‰{kqÐímŠTçZîÍ®O}ÞL Ê%VÞŠmoDɸ.Ð5-š‡ua¹Qݨn+ÁX×–œÿ LØŽçù­¦â¬5b¦ZxýJvÄÏ®²ÜI²É-8ýjvÄϪ²ÜI5gR×v,¸TÝ„í•ý‹-Õ6ÅíkbÛuM±C»Zخ١ØRá¬ö+¶hv·l» û©½„­Û.Ãêsa;exË]¦ì%pÖ{À5gÞÍwßZûW׿˜f×_Ä·k).² Hæ§(ÒhMéiM¨3/¤‘ÌFb0Öi¤ÙƳ{(››7²Éõ"ܱíÜ™µŽ¾Sª’™•)„à%RÆé´¥ƒF=³õ:âÏ×fô´ªì­.ºà'Lj]1~rÇV¬ý…ÍU³*™™Ìdd 5i¢Ÿùß´Ñ®$þhÌkxĈê)/‘Àl¹J@²b`H é(Ž`,lÇJ׎rs• IXž ÅTª•àJ¦"*OÙd˜7x²[êá– Õ¦ÞÖ°Ùœ˜Ì‹VT5_Lm*¯€Jð%S'ì²L›¼Y-õp€KêÓokXlÎLfEª Ð6Ê“ŒíJÀèé|“eÊP ÃSDÀ#9Cógf:P|ó5g*›åÁË­¶ÿRË|Ì·ÌY( ‹Ê”Ã@T_¹'žÜÜm§Üm€I€-G³¦ÏAã–wö%Í`9€*PsfAÌnÚ¬ *p©F캂¥4šì šn‚`i€ å:½à G\4æ¤`5bÊZxýjvβÜN5,öP M””Ñ5 6Uu)Í6“6Vp¯-¨˜lÛ.cl¦` E»*ÒÓ˜¤¹JcʦÀ5H·¹˜›(Öl“I° J›5R­kl¦v€ŸËYe;>Ùsl¦f«QdÌÀƳ€3r¥€5fB|v™¥o»·£ ûsvÄ×)·l[`Õvæ[ïEèwÝô[Lí¶¾*î×v·Sû]«À5d®Ë÷Tû‰M—ÝËfê“bv¹¹iÙƒÜKîÖvÀ5-z‡ua¾ð•ضÞPµêWݨn*À5O½}à•·o¼ Vê 5-ª‡ua¹Qݨn+À5dÊZyôC±WÌ`Eý…P5gZäw€R{ÿèM¿Ìó+bœMŠsB5 &,ؘ {~àöÿLï]6‚ÒL@u—1ÎRÀÊ §3ƒ¬íRc>Ûoÿ)·€”{AYåPÉ -0$Tï»ÁŸxå´þ£·ò†O¤×96ÎÀ$´ “cünoÁÏô 5cöUùZ®åƒ–”"vj÷­¹Û 5eæqf;6cœxØ 'ןíjýÅæÍ^Ã^êÓ‚dÙ‘%-ä¦6‘—”-åÏžp pEk„[o$ü¬µ1뵓Öf Ãp5fZð徯Q[’Fæb# ™À}Ù.}Ñ*øÛQï-Žö4m˜”ñtc%F1 ôæÓ§˜Ób\–$Ôƒ³Q¨êW_”íð%+>IscžmÀL¸à'·¦ŽTÛ]rÚÓå38ѬÇF  R€s}ˆ5IE«áªxëê¾â„ˆ+¶Žcöøn)yQ&Âêb÷uQ¹gݬp^à5fjšw"{ªD“6#LvŠý8-¼&Íx›¶‹ÞZÝìjÚ)+*sëx"d`ýI‡ôÀ)&¨ØÑ›_FÐb§†{à^·P5f–›e±Ÿ_½t}K(3Òã:®¿ìõþk#˜/Þ¶^¦]*BœVB"g'¹¤©³b€&šËÅ›+òoìžßú­ rÒ‚Ž"|ÁÓ‡øÓã/€mM •(”Äö÷2‚¤®P—µü%¼º‰¾ '"A!™E@S@_˜7x*`Ÿ]ð5fFxg!|e¹¸–±弓s©»Ž€¥¤2ùC.¯r¹·Ú§oíŒÀ"×S \˜âL‘T/0¾pç廀àe5^5f¾ñeÖ¶Ù‰Z6Öa£PéÀ¾Al”I £€2¯§åo€ €-†ò¥5%¦YméÙV]uF˜dÏ*c<•ð — ¦39a”]kY0±SVúöÉ­Ó$àj¬Þ‚À ³"ŒÈK.#€$¢²€‚ ’ÙÞ^Öî–èɦö&_˜ ,ŠQH‘•(7& Û˜{ßp5N´Ú«·ñÛoÊôÞ­8GaÌ€m´ø–ç{ö‰MʤÁPÚו¸y%7`¦ë2JM¨}rÍH«}?W~»N± 6ó[º€LÌl1±ø¦Ð6ÐV2.tÀ!d2Š@€¨€ ½0Fø\à _ÓÝ&—J¹ÀrC7‘¨5.:‡ua¹Uݨn*ÁQÇ-nUwjнՀ5.‡ua¾ð•ضÞPµêWݨn*ÁQÃ-nUwjнՀ5IWãvc;6€Lrnð Êå$—†«€%²‰iyÛesq³I( |u5g²«æJá)—ˆ"æN,=˜¬ô‚pG†EŸ„D¾€7%²ÓqÓ2Ø¡\Æ¥`  ¬«VÉ@QÓ¦]§€Ìžë1Ò¯c,¦2  –Ëv` n]yr׆CË1Ó!€ éÌ3¤*5g¦Íw*`|rËã&áÍìÿ!èq8r"ÌŠT"À´¢ú†¸™×Íž¾ %ÐÆÁ™µÆ-À&­ÍØ›7c–²nüß‹¹¾.€*&Œ­˜B´:S´—i•n‡à%nIT‘6†SÆ+”b 5cžZg\€Å©ÇÅ ºpÏ„\Ÿ„[²€7'\²ÓqP È=Ћ•Iè=+ëNë!ó€(>­ÄÝW8À5g‰ö!¥a™u˜÷e'q•²ã¹6ÝmL–2C)¤Àl?ì¯îOf•ÉË›+(O†fœ~õ'õ Å>Êø5gv‰÷,ÒÌ´´»J€o²«¸ÉÙqܛ𸻕nZï0ÁvœÅºMÀ]•ð5g–Éw+³\zöI­“6°¢ÿ2k8†Ì €V*rJG {¶‹]˜­Ç/ O7[&alÙ…”Þ€|ìülð'889ÍN9Í €3Ìjvà5hVZyZfå[†=Ü¿p¸{•nYi¸ªáE7\7fâ¨5câZyZfå[–Zn*€5 +§kfô¢T!!羨Ù(ý€-rÖÅO*š˜k$Îlƒ9À ©@4w&ÑÜò®5NL —9©Ã&A"%• @6_fK”‘6Wö)%†ÙhÜ/v±(ÛuË»TÀp±;•nYi¸ªáYµ«" œ£yƒÄ »wûþ¹~=Îh5N÷CÙ_Ü•M<›™6fX÷-ÜUr§¹€FEå2Yh İ5l¬yUFå_–£H9å&™R¤®UÛ¹Xå¨ÒNyI¦T©+•vîUùe¦âYÒÞ§¶Ôï]©¡’>Z Jcb.²¢èÉÀås€'5h¯yUå[–²JÞͲìÛT„\«Ÿr­Ë-7úÉ&”¾Ä]ö¤{Ì¢Z[1ih€5djUæ~>O =€R€ð…‰°Va&„Á§£ÁéÀ €üú©ª_@Y¤3e€z©Oõ)ó€@ÂLÁ‰&`WÎ ×,ó€,ÿm|Þµù`5hVÌfsÊ9›,âLb³…„Ü«rËN*fÀYŒ @Yk³^tðK¦ý–øP­D²°_ÂÜ@à5dfUæ>N =€Vps¨^›QzDbP‰˜D=Pebæk Ž làVÌÔš³óô€ýþuÔ>²7HfÍôSŸæS%§&…9ƒÍ&6 ±œ°XgXþÛ ½¬rÀ5h:½fLâ/—ø„¥z iQ%ãu_ –\¢Å¡²½©fið miµõ€(·m²€Á¿„—_<,6å[–Zp s5˜ÌbbÈ Ë—˜ËÃ’]ùjԧ‚j1•89&ä¹5fqæ77aܰÊ·reT I(£&H€ô€.jò,•Ô#ªê­`M„¤Øy0¶!䨇‘€K€ceM‹”7¸ž”¢%¥"] Q)²RzÀ\”¾8¥ã‹ ¶·{nð¥¥K]uP"` Üy1˜@&a885g®‰÷,«·r­ËD÷,[4<FÊø5c’ZyRüÀÁ£’:”¨ÀË0w(¿-¡ÜUr¦I€q&Ç=Šš<lL ~[9¸ª5cnZySæÔ•ým òÖMÅW*0”Î*%äŸ-¸¨:â>Ü¿o²NykÞâ¤5lZyQ„ qO/ø‘íÆB× îÄnÛŠMµ ›»ì“žZ÷¸¥åP»Quª­ËS7\ªj"εU¹jfâ¨5LÄ×tîô²·….Ü­ðÞûeàµÎM°îW7`r1È=H]­uM©÷»ïv-ؾâ“u•µa§KôpÜ»ŠÕÄ p3/3”éP5h6×eÆË‰¶+иVýÊ· o¾Á+á´·\(žòÒ[È|5&â«uô5gvquöe·‘#Ÿ HÛ‰½šm‡}ÕÇý-ÐyɆ`M¤9µ¯Ì‚Ø­ËÖÊÆÄ†í'w‘ 6CÌP5c"‰ùYÎÃfÊÿïËx•ý‰@5aâZyŒI±[Ï EÍ…05dZZy_¿ï³C°ÙË1ö%6hx5gÊÜw/;fcöÍ8î^x·Ÿ¹ 5iUù-æíû‘"n €5f¬w0íuÍľóò5fRÑf10Wáu÷/ºq–KÑ·a[hàÍ£€!0!n4ŸÌÚ ÖˆÆ­)@^Û²]».€Ûv.1ÉìÏÊ›rßW~&U21G½-ðÍâB£0è`܆6øÑzÒ¾;±;¿>$Ó{5NdÚ•´ soúÞß•Y¾S´ËfÓ-²×Ô•sfzuWrùË-7û­ÙÉíö ûÊüDÓ…¥‚±•xx[¸ÎfKȨå(Î@ðm­Ú+·þçoÝ„¿lsë&zÌ›BÓP 5eêÐæ.0bܹÊ/òou`KxvSýÆ@à°(S(¥€H¨ç(®€ël;Ì­¦S6¡E8Ó`•³ó5  Üà èÛ[1µchÊÀæ5cróeæ;ê¿k¶6mTGŒ6BÌX .}¥¸d}6s¦ß¤˜ ÎdªZn(9ZfåóNsI*µ ®8Y¯5u&ÕÓö±ÛóY·ö’PCM”,ÑfÀ)Ü•EÇ@5¶ "‚ nì¬5c.øæ÷[Ød˜³ß†^ø0’6p—ëi8°†Bì¤îEç#ÁbyE§FF/FqsaÊ`]B™µJ)@&›Ì­Ÿ™­VçWFÚÙ«@&],C5eÒ‰uÖç¦/%º‘©y™÷5 û*[<¨×}€Ërv.6kö&Œ+Θ¯9¨[ºÚÙ_5cròåè3âM¿j“61mM7L6C X -û¥M8e6õ¦¯d˜ Íd²¼î'ùSœÀ Øf“bLm©ø–§‹œ6ŠSÊ`Z`ûQå`¾iKf76Z~¾M‘ˆ­·AS^€mmM³³çU/»ß¬ËöÈ 2€šd¡fË0ŽNäª.:­iStp5N¤á}7,0œ€G–re”Ài”=3ʇ7,<²Óq?ºÚ‘L[ç[ß3%€ÌRP”5cJ¼ùT>僖¼î(XÒ©– Ûfâƒu(5c~¼ùTÌÀ šShSm¹ü×/ŽÑ½hCkX To”nð9k®â|ú‘¹aݶn'÷R€5c*ZxZíDq¼ Ô„r%ûƳ]Ä.þK^k» “bîV ›”Ñ  7S’©CÈP±c,0îÍÁºs»ðÊL1œ K*F凖Zn'À5HSÙWØœ–( 8&âß¿å¦Û‰þU‡ šd£¤5kOø_}Ë ' g„™a@e L$é!»ÂòîX8a9‹,äÏ8ÀÓ@Zk•îXykÎâINÊgzÛR}¥^ÐÙ5Ge)¥ RpDdÀÂy‹ €À5N¤á}7,0œ€GŽrc”Ài˜=4 ʇ7,<µçq¤—eE°ï¨~ó$€”ÌRP”5c¸æs1QœdQ*'+ydù²Óå&—Ë­Ÿ•­VçUÆ› +ÛXðº²áá<ÿ878. J!9à&¼àž¸×8ËùíËâÖ5NlÚ ‘´ {oúÞß•Y¾Rõ &Ô,¹×ä”y¿;«­Ë,ÏÜAé%éNjAãj?¼¯À%O1)8R@+W…¸'P´ºŠv2ˆí­Ú+·úŸoÞǦ2i”àE`¿®¸€5cjóeä4-¿ˆRý<ÖÐ&Í ª’ñfÈY‹¥¿c_Q®3M»i³É%#YJ¯;ˆVe¹`Ý¡IJ7‰®ˆ9®@55fÔÖ÷­—ݯԶþÒJhY²…š#,ÂX’¨¸è·B$X„SÒÔ 5bÞËäZÇ·Úï¥Ñ4´Nê#]¾šì|×P•‡±/æå‡–¼î ô’ð5E4 f`ñ”Ä)ÎÆŠå2¨Y€´ ¦Ï.«šKVm-P ½Ä  !!ˆ2Œfr È3˶¶Îk|Ý)»4@/&¹2Ö˜ÇU@e`âÉ‹JÀ6 d<î“;©K@ÌÉ30€5a ¼÷g{ŠÖ.ÃÊ–Äï '(¤‡ÊH{ *û³Y€lmM³´cÃ2êCÙ¯Ôz5c.¼ø^¹xÓ¤8æ@ÒïÚXã–òî(9T>å÷N‘K¸•Ñ[m¦¯Û×›kXŸ†ÜP5c¼ø\]© úÑPá…7+d ø1' Z¾ûª·bÏ}JgÃ#n'À5kr¼øVÉ@'ðbNµ}÷UnÅžÚý´®;{ês>q?ÂâíGWÖŠ +¸Ÿáqv£«ëEC†ÜP5M¼ “umKmB–ô:u÷¹`ÝŽmº»×m ¹bÝ¢È%ݬåí¬Óûï×íÚÞâuµ KnÒ7{,:ûª5c¼ø\]¨êÚÑÑá…7©Î`C9± £@6ÔüKSÅÎDmv¢ˆk~V` 唯@4ÿnŸ°ÓrûûíÕ>q>5fÓuûK¯Š^9»Sš‡í› …ÝÕwk%€a¬˜hrP¸ks‰•+fßbCeCbv¥ÀžH "¨5d&üåÛQÙu¤*U¢Ëž”±Ð øQ)@.0VSX€ÙUÔ§4È^dÙY€;°)@]×Ê]|eÙ©•¨Ü¥+ÈÝÛäÀfÙse3j-ÙV–x ¥ÐTíÔ°5c*Zy_¾åÇ–î#À5HŒ”Bã¥.5˜ •yd€Ö>]c€#ÝLÓ–g6QœÈ¥=š¹Y€/²SÀQụ4¶9Kb]ÖYývb—^·mR€§§TºuL³U¨¶fpcYM@·P€5L-Ø^˜?hÖ[M"€–Ø =5ÐÅ®ÞtzÉ8£/RlPÌ^SŸ1Nz¶¢$l†TÖ¬ôˆ’x2–Ê3h  5ÙÔŽå¿v߸‘ƒã›©Ë~í¿q" Э’åMÛ•nïróÂâîU¹l”À¸³b:Lúpq1ɸÀ++”’^®–È%¥äTm•ÍÄ>Í$ %ñÔ5cî d±@”NDÓx ;dNÐ" -²Klˆ %Å`É_ «w hüš¿:s# LBl·Ê›·*Ü1Þåç…ÅÜ«rÙ)€*Ir&&ÈGì’Js’^™`”U•%YMØ ^€V´–»—³I( œuKÃMÀÙÈ´¼Kk²¹¸‡5g¦Íw*`|rËã&áÍìÿ!èq8r"ÌŠT"À´¢ú†¸™×Íž¾ %ÐÆÁ™o’5ÚÚŽ‘bL;Iîk ’Pn›lvÜL¿i›š½+‘¥ äL¸­À¶@.×1ñ©of¶Z}¯ç›7c–²nüß‹¹¾.€*&Œ­˜B´:S´—i•n‡à%nIT‘6†SÆ+”b 5ƒ£}öµ&æyú¹¸—g‰ìCK Ã2ë0îÊNã+eÇrmºÚ˜,d†SH€ØÙ_ÜžÍ*“—6VPŸ Í8ü/êN/ê Š}•ð5fÎõ­9/UvNKhí çz’¾lÇ]½zíúÓ`šo'>žî×K£*¦É*|k€kdEFPù=µ¦ ¥_cWO¬ê¶sL J½Ê¨·*ܵ’Pöm—fÚ 4"å\û•nYi¸‡ÖI4¥ö"ïµ#ÞeÒÙ‹K@5½½Ô†å»vḒƒÇ»© Ë~íÃq" ÈÔ«™øù>€ôNJÂ&ÁY„šž§0 ð?ê¦>©}djÍ–ê¥?Ô¤KÎU 3$™€Ll_8+\³Î³ýµóz×å€5ͽԆå»vḒƒ×»© Ë~íÃq" Ç$´åKó#ŽJ4êP£;,ÁÜ ü¶‡qUÊ™&}Æ<›ö(hð L±0€!ùlæâ¨5avúvgåM¹o«¿*€Ìb`¯Âëî_tã,—£!nÂ&¶ÑÁ›GB`BÜi‹q˜5´­ZR€½·d»v]¶ì"\b/“b¾¬o?×7ûíJMÌ*=èyo€ä†o€Cä1·ÀÖ‹Ö•ñ݈ÉÝùñ&›Ø5avúvgåM¹o«¿*€Ìb`¯Âëî_tã,—£!nÂ&¶ÑÁ›GB`BÜi‹q˜5´­ZR€½·d»v]¶ì"\b/“cƬoµ×7ûÏÊMÌ*=èyo€ä†o€Cä1·ÀÖ‹Ö•ñ݈ÉÝùñ&›Ø5`Ƭw¥«›{ÒªMˆ­´ö;iÓö"X]¾›3ò¦Ü·ÆÕ߉•@ Œf10Wáu÷/ºq–KÑ·a[hàÍ£€!0!n4ŸÌÚ ÖˆÆ­)@^Û²]».€Ûv.1É‚£Þ‡–øHfñ!Q˜t0nC| h½i_،ߟi½€5g>¬÷-û· ÄŽê@Œ©“ºÜ·nÜ7@¬.ßM™ùSn[ãjïÄÊ F3˜+ðºû—Ý8Ë%èÈFÛ°‰­€4pfÑÀ˜·bÜf mkDcV” /mÙ.Ý—@m»—‹äÁQïCË|$3x€(̺7!¾´^´¯ŽìFNïω4ÞÀ5g2~eêªÉÙm¤\ïRW՘뷯]¿ZlMäç³ݺéc”edØåO‘p lƒH¨Ê­!]iƒiWèÕÓë:­œÓÖ´à+çjïÄÊ F3˜+ðºû—Ý8Ë%èÈFÛ°‰­€4pfÑÀ˜·bÜf mkDcV” /mÙ.Ý—@m»—‹äögåM¹o€T{ÐòßÉ Þ$ 3.† Èco­­+㻓»óâM7°5d^ä´ Í“3@J@4Ù 10$LsÜÀº@.Ó93ÎÀYc’R¨Hœ ØI-”‘ÀK ‹’Ù¸l &§¹*‹ŽJät€¬.ßM™ùSn[ãjïÄÊ F3˜+ðºû—Ý8Ë%èÈFÛ°‰­€4pfÑÀ˜·bÜf mkDcV” /mÙ.Ý—@m»—‹äÁQïCË|$3x€(̺7!¾´^´¯ŽìFNïω4ÞÀ5eêÐæ.0bܹÊ/òou`KxvSýÆ@à°(S(¥€H¨ç(®€ël;Ì­¦S6é> ­°íhKÈYb£¬*I@9¶zm±Ûp 3}¦^vjô®F–Ñ âB·Ù»NtÉÆ¥­›©¯|6p§æk@¹ÀѶ¶cjÆÐ •€ Ì5dBZwûíjMÌóõpŒ»ã7¸àÞÃ$Àžü2÷Á€³€¬¿[IÅ„0e'r/8 Ê-:00xÊ3ˆ ›S*êͪQJ4ØelüÍh·8º6ÖÌmXÚ2èb5e.¬w0íuÍľóòŒ»ã7¸àÞÃ$Àžü2÷Á€³€¬¿[IÅ„0e'r/8 Ê-:00xÊ3ˆ ›S*êͪQJ4ØelüÍh·8º6ÖÌmXÚ2èb5`f¬w¥«›{ÒªMˆ­´ö;iÓö"Y~¶“‹`.ÊNä^p<'”Zt`$`ñ”g6¦UÔ)›T¢”i° ÊÙùšÐnptm­˜Ú±´eÐÄ0V=.¬³“{Ž-ì2LYïÃ/|5fÚ¬÷-û· ÄŽê@‹“ºÜ·îÜ7 ¬¿[IÅ„0e'r/8 Ê-:00xÊ3ˆ ›S*êͪQJ4ØelüÍh·8º6ÖÌmXÚ2èb+—VH@ÙɽÇö&¬÷á—¾ 5eZwÚÔ›˜ çêæâ\*óÊ¡÷,µçq@5cr¬w0íUÍľóú*óÊ¡÷,µçq@5e>¬v"¶ÓØí§OØŠÞ•®l9ïK)XÒ¯<ªrÁË^w5a¬÷-û· ÄŽê@”š³¹oݸn$wR¬iWžU¹`å¯;Š5g~åêªÉÙm¤\ïRW՘뷯]¿ZlMäç³ݺéc”edØåO‘p lƒkRVE@miƒiWí(ïVÎiëZp:g é¹`á„äPip ºÙùZÐnp\i°˜Ò½°g05fæ¬÷-û· ÄŽê@‹I“ºÜ·nÜ7@¬x]Yp€ðžÀœ›œ—‰¥œð N€^pO\kœeüöåñkVe.ã"ˆQ8[Ë'Í–Ÿ(4¸]lü­h·8®4ØLi^Ø3˜Šˆ5f*ou®9/EvŽKdí çz’¾lÇ]ÍzízÓ`šp'=Óžî×O¢ê§É*lk€kdEFPù=µ¥ ¥ot¡¾u[9¦ Ç…Õ— çü À ¹À pHšQ Ï”è5çõÀ¹À_Ïn_°fRáN2(€€¼²|Ùiò€K€eÖÏÊÖ€+s€*ãM„Æ•í€9€¨€5dJZwûíjMÌóõpŒºóÂõÈÆ!Ç2—~ÒÇ·—qAÊ¡÷/ºtŠ]Ä®ŠÛn5xÞ¼ÛZÀü0îâ€5eЬw0íUÍľóúŒºóÂõÈÆ!Ç2—~ÒÇ·—qAÊ¡÷/ºtŠ]Ä®ŠÛn5xÞ¼ÛZÀü0îâ€5dòZw¥T›[iìvÓ§ìEoKW6ÁX˯µÈµ@C Õ\•ÕBKIZ ? ª´‹*ø5eê¸f#+ Sß} Ëê_\²k,àI3?à2ZNKE‰Pt‹f2Œà.†×!©{;¼ž[ÉåŒÙfثٛš·ÇZê~¶äUœokæ*¯SîÙ¡ØUÙ\•ø”jÀ5g*‰ö$%²YYu•£eWa¯ewbW…”ØeÙ«ØlÝUpF»4[ ü3®ÅîÌþÂÍôÀÆz3h²€n(¶WÀ5e~jæ,"JÛ1/«üxIõ% fd™ÒÚ®Ì(<¨+4Æ—Jehò€q•D¹SÐ%*õ%TJQ@s(e—M–]H5€†ô´.ðƒµÿ–AÞDÙ9€$tòü@Š@"Âí³•s[âôêMÓ¨y( GíÊ~Û-òÓ­¾Ä»ë€‹(LëLiª˜2Xa*F©YšÛd¶Ù€’P.NKS©m$¤M6À‘ ¶DîP5Bý˜ ÿ cüp •ÀÏæ??W˜_þl$ p ª0pfÂÀ©5d_ädƒÒÖ–Þ⻕ûìSòÆMK<®sbŸ†}“©\!_këM­«ñe/»_¨íý¥Ú 5(Y¢2L%€Q»*‹Ž€kv$Œé´ ³h*¤‚êeN˜c͈é}`ëÖM4¤ #æòS˜4@†R €‘PÞC¶†)¼öƦÛ¾š¤?6lüà©€$L²æ1ËV™8œ˜™jÇ4 Ê¤× €“>£ªLŒ¨Ø3p5dȵ`“B^VMwY$ ÔEœ¼j'§(4&™ô›h{pA—ŸA–XgXŒ9iÌ9tt ¼i5k‚~øT-‰^ª0O75Õÿ›ìJðÝ1‚˜´x´©_…8Ø–á6ôž¼‡ìÇZÙyÖÌF–Õ”‡$>v |J”b²,¨‚±ÿCv.xS=‰~7bÓfŸqù²²5fVZwÚ”›˜ çúæâ\5c¬w-û· ÄŽê@œª±¹oݸn$wR5g&ñö]v ¶é$î+6]·![mÝvÛgm+½Ô—³°ÿ´¾ßr¥³¸øÚ—µÇnª&£@5l:‰÷-²Í¤Ìº €s´3q“²ã¹7ßÿmL–4C)”Àn&6W÷$³JeeÍ“”'»ܺ𸻕n[%0‰ö$Ç¸Ž U¥L$Ù)NðAëj—Öãe|— ß( |5KÃU°ØÄ´¼ €m²¹¸‹ÚH5h¶H÷ï3Š‹€5á `¬ÂMJ£·5“m~ÖòEÆ~¶x0 ¿þªcê—Ð •@ 6˜OíV#5hÓf20F˜8Âlã s}IGVé%šcl˜[´ûf™%¸Y"ÒŠdžœâ—ž æº2ИËAVà˜•A’Œv²ÏLŽd` ˜*²5­¦Òð²:vJO` €Á«dºv`¶åAí(, ÈÛL}É©.Ò€Èë«)bˆmHº××›éÓN 5dúË÷R»‰—½ËFˆÄ&̆å£fq1»kØ|"©wY²çÁ*lÆ€5dªów×›ÔF—Î7f«³;ÅÑwP©*èx.Í™SeÀ-`®ów¨M›ëæ—Î(ž«³;ÆíÑwP ®‡Ùà»v\5gšüæØ8¯BÙTÜ[lªîR¶PwÛ*»”­”íʶ͖å'f¯qo³¹IÙ«Ü[êÒß`•ðÞŠ­×®òÒ[È|6â«u¹(6\5c*¼ø^¹xã¤4æ€ÒçÚYã–òî(9T>å÷N‘˸Á[n²3uG¹gå™ÛŠ5en…ek£Ïf‡ZašÑ• ¹å˜>[30¡†TÆKàÙ…5dêhePtNobON´É¶®`y¯@7·&ÞÛ¶˜Ünb-´° jƒÈ¨ä›Y¯-$ËY×($” )›6ÛPüv¥}ÌŠN: Žô‘P ²CkI@`éºM.¨ *TäÕ0ŒNCP5bæZfN.5˜¼Ðv`½#i´¬@&°ÓÌ›O,Š` ÜÙ‹sTX¹¼ò*J#@s_}uÉÍt%r¼¾L( È:Ë€5iÃæPj”nÌåêÏcv®ÐŽ\è±—ÍNâ{er³?0Öe”Á–`sKüâKæ/[’mùÉ~“%^d—™³óx–ý¢MöˆŸ0xZdÁic‡û,;­šÄömåɧ=ét^ÛF]t;M—´À¦˜®˜F¼FT™è˜Ï¥d`!yY˜>ºbñ5g.øæ÷[Ød˜³ß†^ø0’6p§ëi8°†Bì¤îEç#ÁbyE§FF/FqsaÊ`¹´J«%ž)prÕ‚]lÛV5 ž,Úx€BãL[ŒÀ­ ­hŒjÒ”ÍÛeÝ¶Ø ·aã|žÌü¨·¬ñµ‹ÞT`•Ò%$bvõ”çT &],CFÍ!&„ò–¾Ë%úl‰@/v@ÝèÊöKCHðk":D½3}‰7î ìߟi½€Ip5gr÷î‘SŒ ,ào,Ÿ6Z| × {ûs6Þno!`'ék€‰Àq¦ÂcJöÀ @ ¶ÆmD$5eš¸÷V•Ú†â¼+VÛô™r¢är]¨»¥—ºP eðÁéK`j?Ĩü á´YŠZÅf ÛF4€<ØXà€ºô¡ï Á!r%&´ò5«£­¬í›½‡—p5EÄãæÒfåW˜¶›@¨Ùˆw*;µ Å~êÀ5N¦›ØƒÝ¶ðZ{0¼ W 5kªZyéÖ™¹TãŸÖ{‰íæ¦29P7€5f*‰uÓå¦_e¸™©y÷5 [*[ܨ6`Íi´ ¨@5Èù®=šj†éx9RžQÙ€Cå½Z’¶kõL(a•1†Rø¶au´²¾5f áö¦OÚ5–ÓH %¶OMt1k·§]²N¨ËÔ€›3W”çÌSž€­¨‰!•5«="$žŒ€e²ŒÚè*`¨Í…é€öe´Ò( m€ÓÓ] Zíé×G¬“ª2õ &Å Àå9óç kj"FÈeMjÏH‰'# l£6€º5KCçåo¯?‚÷`¬¡ËNc9¦r^¾cZn 5dJå÷á;ÏM]Ë®ü$§yúS¸‹FµE¼ý)ÜEïÂ6wžš»—]øIH5eŠå÷Ÿšûð}˶óÔ¯~O¸ŠbVåï?5÷áû—mç©^ü$Ÿq5ks¨wV•Ú†â¼;Z†êÃr£»PÜW‚–ÕCua¹Qݨn+À5‚ }çå&æ}®¹¸—hVÉr¦íÊ· w¹yáqw*ܶJ` ÜY1&}88˜äÜà•ÊI/ WKdÒò*¶Êæâf’Pøê5g õ­9/UVNËhå çz’¾¬Ç]½zíúÓ`zo'>ží×K£+&Ç*|‹€kdEFPù=µ¦ ¥_£WO¬ê¶sL¡[%Ê›·*Ü1Þåç…ÅÜ«rÙ)€$qf<Ät™ôàâc“p€VW)$¼5\-KKȨÛ+›ˆ}šI@Kã¨5dÎäPôFÖ”6•¾Ò†ùÕlæžµÇ%èªÑÙlœ¤\ïRW՘빯]¯Zl;&Ïug»uÓÇ(ºÉñÊ›"àÙ‘Q”<ªç?Ô¤KÎU 3$™€Ll_8+\³Î³ýµóz×å€M–ê¤ ÈÔ«™øù>€ôNJÂ&ÁY„šž§0 ð?ê¦>©}5l–ZvW÷-²Í¤´Ý"À[);Œ­—ɶëj`±’M ~q1²¿¹$–H \eµÇ¦™u¬BZ¤#€žøÞj¨ï: ¿„>¦r¥ •ÐåN8©©IgK×k'®ãêë?ĦJNKƒJ¨!€L‚a87^µN´üõózW_M€ä¦5fþøæö[Øe˜³ß†^ø/€’7p§+i8°†Bì¤îEç!ABÙE,BGÀ*ùDð{aÊo¥’¹¶J®À%’9ps׆\Hó‹—0ºà&—Ë­Ÿ•­VçUÆ› +Û5¾)a ÓHÌNé)ÞŠ€L¼X† ÆMüŸð'&ç%Á"iD'<S ל×ZçY=¹|ZÀ\ <'5h\ù0Ì?"Ùy5j£\ù-nÌ?"SÙy5f¾¤õn¬7*»µ æ«^ÂNþrTùi¿œ•ÔUº°ÜªîÔ7š­{ 5gf²wå’»ÛÆV½Jûµ Å^êÀ‚;ó¼ekÔ¯»PÜUî¬7å’»À5c~Zw󒺊·V•]Ú†óU¯a$5c^²wå’»ÛÆV½Jûµ Å^êÀ5EÜÝÀn"wP—pT¢mÛ—}Üâ'u ƒhÿ“Ù{à›va@5KÜÙÛ¶-×k«®×X°Vsfø ÿ|½ÿÞÿ€5g2¬÷-û· ÄŽê@Œz³¹oݸn$wR¬aמj:¶´txaMÅ*s˜‡ÎlC(Ð µ?Ôñs†Ñ]¨¢ß„•˜9e1?Û§ì4ܾľûuO†FÜO€5Á½Ô†å»vḒƒË»© Ë~íÃq" Ðm®”.&Ø8¯Bá[÷*Ü5¾û¯†ÒÜUp¢{ËHmo!ðÔ›Š­×Ð5e*Zy±EÌ‹ËM…Ð5OÌ š–vhÐ  g2Üÿ¶×¥¿­§öô„ç%¯C~ BRoر™AAÌgЙ͕õD¬{ C¡šþÿ²§bwY‰;Z“H2ìSk1'a*aJ”+éËú`t`ÄbסÀ5dJå÷á;ÏM]Ë®ü$§yúS¸‹5HíEß„kî]·ž¥{ð’}ÄVóó\5d²€åº‘©y™÷5G*‡Ü°òܽ‰~Tk¹`å¹[5û FçLWœÔ­PMol¯ë¥ËLÞ€5eÒZw\«@4ÉF He_brX 0à›‹|ÿ–Á鯽5-ÐŒËÌй®ØKÙRصåF»–[•±q³_°‘0ifŒÅz- ÚÖÈH5bŠÛøý·îâ7àî"6Vw-ÛĈýýÄVâKegrñÄ@÷.|A;÷rë³O¸ßÞ»o\w.4ûˆ°5FŗܨîÔ7û«5-z‡ua¾ð•ضÞPµêWݨn*À5-z‡ua¾ð•ضÞPµêWݨn*ÁS³¨n¬7Þ»ÛʽJûµ ÅX5iªŸùß´Ñ®$þhÌkxĉ )/‘Àl¹J@²b`H é(Ž`,lÇJ׎rs• IXž Ådª•àJ¦"*OÙd˜7x²[êá– Õ¦ÞÖ°Ùœ˜Ì‹VT5_L}*¯€Jð%S'ì²L›¼Y-õp€KêÓokXlÎLfEª ×®þÙr”qdÔÀ‘@ÎQÀYÙŽ”Ÿäç;@’ :>_#€$lc1Êð%S'ì²L›¾Y-åpÀKêÓokXlÎLfC«**¯@´²¤ã;@’°::_#À$Ùr”pãd ÔÀ‘0ÎPüÀYÙŽ”Ÿ<À5‚Ç}=éU&ÄVÚ{´éû[ÒÕ͇0V…l—*nÜ«pÇ{—žr­Ëd¦=ŘóÐgЃ‰ŽMÀY\¤’ðÕp¶@q-/" l®n!öi%/Ž 5‚©}ée&ÄVÚ{´éû[ҵ͇0Vq(žÄ4²l3.³ì¤î2¶\w&Û­©€ÆHe4ø ‡ý•ýÉìÒ 9seeIðÌÓ€/Âþ¤âþ¢¸§Ù_5ƒÇ}öµ&æyú¹¸—hVÉr¦íÊ· w¹yáqw*ܶJ` ÜY1&}88˜äÜà•ÊI/ WKdÒò*¶Êæâf’Pøê5µÔ†å¿vḑƒ¿›© Ë~íÃq" Î%؆–@ †eÖ`Ý”ÆVËŽäÛuµ0XÉ ¦?°ÿ²¿¹=šT'.l¬  >špø_Ôœ_Ô@7û+à5‚}çå&æ}®¹¸—g‰ìCK Ã2ë0îÊNã+eÇrmºÚ˜,d†SH€ØÙ_ÜžÍ*“—6VPŸ Í8ü/êN/ê Š}•ð5‚É}öµ&æyú¹¸—câZr´ÍÊ·,´ÜU5µ}ée&ÄVÚ{´éû[ҵ͇0V>%§+LÜ«rËMÅP5‚å½Ô†å¿vḑcâZr´ÍÊ·,´ÜU°Û#w-û· ÄŽê@5a¾FwÚ뛉}çå&æ‰iÊÓ7*ܲÓqT5ƒÏ}ö¥&æyþ¹¸—djUÌü|Ÿ@z'¥á `¬ÂMƒOGƒÓ€øõST¾€²5HfËõRŸêR%ç*„™ƒLÀ&6 ¯œ®YçYþÚù½kòÀ5‚±}ée&ÄVÚ{´éû[ҵ͇0VF¥\ÏÀÉô¢pŠP >±6 Ì Ѐ4ôx=8€P_ÿU1õKè+#T†l°U)þ¥ ^p¨I˜1$Ìc`ªùÁZàžpŸí¯›Ö¿,5h¾ZeƒÊI|£Öz]g®–áYà¥d]ÙE]-–E'~ÙOîUØž +=É€kt"FÈ]-­¥·¥Š¿‚iw¥²PÒ4•#5£uç·i[ìï™–ñ‹à%Η iðÀ\+‘–±À%²Íù¶·ö¯fÛ¾íÀ›³`³«iŽ­–6­ˆJÐy0–Ïx5õ}çå&æ}®¹¸—djUÌü|Ÿ@z'¥á `¬ÂMƒOGƒÓ€øõST¾€²5HfËõRŸêR%ç*„™ƒLÀ&6 ¯œ®YçYþÚù½kòÀ5ƒÏ}ö¥&æyþ¹¸—c’Zr¥ù€ƒG%u( Q€–`îP ~[C¸ªåL“>ãMŽ{4x& ؘ@ü¶sqT5‚¹}=ée&ÄVÚ{´éû[ҵ͇0V9%§*_˜4rQ§R€•Ùfå·å´;Š®TÉ0î1äØç±@G€b`͉„Ëg7@5û}çå&æ}®¹¸—c’Zr¥ù€ƒG%u( Q€–`îP ~[C¸ªåL“>ãMŽ{4x& ؘ@ü¶sqT5cJ¼ùT>僖¼î(5g>¬v"¶ÓØí§OØŠÞ–®l9ïJ©5g}eêªÉÙm¤\ïRW՘뷯]¿ZlMäç³ݺéc”edØåO‘p lƒkRVE@miƒiWèÕÓë:­œÓÖ´à5f–§x+}˜n'eè5fºzdÅèØ—!Œ6Ý…Í\—¥6^ˆÆÂ䀢A‘Ž>— Ö˜´ßdCÃ:Ò­ºIanPù5eB¬w,¶-Åêx5d¶täí3“<ìK@ÌÙ34¤3MÓDÀ79 Ì Y`’R¨Hœ ØI-”‘ÀK ‹’Ù¸l &§¹*‹ŽJät€5H§ÑÑ{[aÚЗ²ÅGXT’€slôÛc¶àfûL¼ìÕé\-‡"@Ä…n²vœé“K[4; 5döZwÝT›ûÍUÍÄ+AÓ}ÕI±¼Õ\ÜI5/^j”¶ˆk1%L´€2a²b`ioí+õ²«¦aôÊ×{ÒÚ¼4€LeCëK‹Z] 5g>ZwÚÔ›»íU͇m«)ûVlv€  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿV22Ï3¹í3UUœUŠ3nœnÞ›í|þ”TÈ@@ÖÖ:TþþþþþþþþþþííTÖTÑeN-ôBïàREÛNàC3353SÞïD78;.å@T@Dïô³ôÇEþþ ùýþàôôh•Tþôêù•|ÿ|ôNNôï33Dïïïïïï³ÇÇÇÇÿÿÿÿþàààààþþþþ©S­ç¡DI™00ù:3uTT0þë[s-gwsˆ¿àÑ ýgôééÿNN3R°ý ù. ú&&(5©¿NïNïïEEEE333DDDXc«ßXcõ«ßXwrÀXD]Õï€Xu”`!¡6€`!&€ `¡¾€ XAKs4X+erÐXb¼€XNWÕ€X)^’ÐX~XiµÏÆ€XAKsX!lÏÆ€XwRÈ&€X+n1XUX*2ÐX,’ÓX+:’ÐX ?r¬X'M’¨X Cr¬XRÓX+%RÐU€X"ÒÐU€X8²«H€X7ö_¯€H¯PJ€PšûÇuðH­µPX&RÐ*€X$:ò¬€_Ö²¬X 6’¬X7r¬€X @²À_ý6’ÐX';²¬€_ý22ÐX!;Ò¬€X!;¬€X8v¨X6¨J€X%U›ÆX"6·‹€X&'5›ÆX 62 XhÒ¬WX:B²¬X?B²ÐX =2¬X?C’ÐX?;RÐX?;²ÐX >Ò°X?B²ÐXNÐX3’ÐX?JòÐX?;ÒÐX?`²ÐX?@’ÐX Br¬X?B²ÐX Br¬U€X?I²ÐX :Ò¬€X=rÐX:A’ÐX2@RÐX2`òÐX'ArÐX#A²ÐX;²ÐX+&’ÐU€X%'Ð,X "ÒÐU€X>R®ÜXH€¤U€Xk0Ò¬X8µÄX+:²Ð€X5ÄX!9RЀX5UÄX.’„€X!9uÄYX+:’ÐX2RÐ_©òÐYX+?ÐX5"2ÐX+ZuÄX+:•ÄX8ÕÄX+:µÄU€X!9UÄU€X+,UÄX0ÕÄX(ÒÐX+:•äX':äX,[•äX!9UèX$9µäYX0•äX -RÐU€X;RÐU€X.RÐU€PðB–p`­þ`­ÚX =2¬z`ŽÕô`%ü€`þ€p`eþ€pX8²ÐX8²ÐX9òÐX9ó$X9“0X8±¸X5Äo€X5RÐX5RÐX6òÐX6Ó$X.(rÐ_Æ’Ð_±)òÐ_³)3$X+:“4X8ÒÐX8ÒÐX8ÒÐX8Ó$X8Ó(X+:’ÐX+:’ÐX+:’ÐX+:“$X2rÐU€X'³ð€X5€X;RÐX3RÌAX_A6¯«X@2ÐU€XNPÒ„GXB\Ô[ü€XB\Ô[ü€X\Ó X2²Ò¬X49S"¬X695»ÆX:dr¬XE±¸!€XL×SX*:Ö_ЀX%U›Ð€X+'՛ЀX DrÐX*:•äU€X8²ÐX+GÒÐXN2ÐXEuè_Ý1R„XX ,RÏ X,’Ó €X#L²¨XUUÄX;”\$€X!9ÄeX*5Ä^€PTêGúhX]RÐ_Ý1R„XX <¢_üB2ÐX ;÷/¼€X </¼€X+[@`­ô`­ÿ€X BpX gr°€XSÕÄX@\€XUU\€X,<2Òü€X#;2Òü€X,òÒü€X#òÒü€X696?·X@µ·µ€X$9³$Y`mþ€_Ö)RÐ_€B5°X "W/¼€X#·/¼€X>Ò„XFr X2’ÐB€PRlCvXH¯PJ€P ìê¨X)s¨`­ô€`Uô`­ô`Žýþ`ŽÕô`' %ôgé …ôgî •þ€gíÅô`ôp`ôpX)^’Ð`ôp`eôp`eô€p`eôpX2UäX19òÒ¬X78Ó*®€X\4³R§XE7’Ò¬€X°*ê¬Xy1º²QpÀ}øXAAÒ¬Pö¡ùæøX19òÒ¬pstoedit-3.62/misc/swffonts/Makefile.am0000774000175500000000000000012007530740576015062 00000000000000fdbdir=${datadir}/pstoedit/swffonts EXTRA_DIST=default.fdb fdb_DATA=default.fdb pstoedit-3.62/misc/swffonts/Makefile.in0000644000175500010010000002562212137264203015072 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = misc/swffonts DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(fdbdir)" fdbDATA_INSTALL = $(INSTALL_DATA) DATA = $(fdb_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ fdbdir = ${datadir}/pstoedit/swffonts EXTRA_DIST = default.fdb fdb_DATA = default.fdb all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu misc/swffonts/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu misc/swffonts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-fdbDATA: $(fdb_DATA) @$(NORMAL_INSTALL) test -z "$(fdbdir)" || $(MKDIR_P) "$(DESTDIR)$(fdbdir)" @list='$(fdb_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(fdbDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(fdbdir)/$$f'"; \ $(fdbDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(fdbdir)/$$f"; \ done uninstall-fdbDATA: @$(NORMAL_UNINSTALL) @list='$(fdb_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(fdbdir)/$$f'"; \ rm -f "$(DESTDIR)$(fdbdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(fdbdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-fdbDATA 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-fdbDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-fdbDATA install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-fdbDATA # 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: pstoedit-3.62/misc/unix.fmp0000644000175500010010000000021712137223611012632 00000000000000% *nix specific system font map file % to be enriched later with system specific font name redirections % (based on a proposal by Scott Pakin) pstoedit-3.62/misc/wemf.fmp0000774000175500000000000000114707336011010012603 00000000000000% % Fontmap for Enhanced Windows Metafile Driver (wemf) % (part of plugins.dll or importps.dll) % % this is implicitly used by the wemf/importps driver % but can be used also explicitly using the -fontmap option % % format: % "document font" "font to be used in output:font tags" % font tags can be any of Bold, Italic, Narrow % "Helvetica-Bold" "Arial:Bold" "Helvetica-Narrow" "Small Fonts" "Helvetica-Oblique" "Arial:Italic" "Helvetica" "Arial" "Times-Italic" "Times New Roman:Italic" "Times-Roman" "Times New Roman" "Times-Bold" "Times New Roman:Bold" "Courier" "Courier New" "Courier-Bold" "Courier New:Bold" pstoedit-3.62/misc/windows.fmp0000644000175500010010000000022212137223566013346 00000000000000% Windows specific system font map file % to be enriched later with system specific font name redirections % (based on a proposal by Scott Pakin) pstoedit-3.62/missing0000774000175500000000000002123107530465320011613 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing 0.3 - GNU automake" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then # We have makeinfo, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar ${1+"$@"} && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar ${1+"$@"} && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" ${1+"$@"} && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" ${1+"$@"} && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 pstoedit-3.62/mkinstalldirs0000774000175500000000000000132207530465320013021 00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here pstoedit-3.62/msdev/0000755000175500010010000000000012137264547011423 500000000000000pstoedit-3.62/msdev/Makefile.am0000774000175500000000000000002507572440252013372 00000000000000EXTRA_DIST=msdev.tar pstoedit-3.62/msdev/Makefile.in0000644000175500010010000002342212137264204013401 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = msdev DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = msdev.tar all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu msdev/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu msdev/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/msdev/msdev.tar0000774000175500000000000014400007572437744013202 00000000000000pstoeditmain/pstoedit.c001777 000001 000001 00000010162 07556605604 011253 /* pstoeditexe.cpp : This file is part of pstoedit main program for Windows 9X/NT. Just calls the pstoedit.dll Copyright (C) 1999 Wolfgang Glunz, wglunz@geocities.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include // #include // use stdio to be plain C compatible #include #include "pstoedll.h" int write_callback_test (void * cb_data, const char* text,unsigned long length) /* Returns number of characters successfully written */ { fwrite(text, 1, length, stdout); return length; } int main(int argc,char* argv[]) { char myname[2000]; void * handle = 0; myname[0] = '\0'; GetModuleFileName(0,myname,sizeof(myname)); { const int len = strlen(myname); if (len < 0) { fprintf(stderr, "could not find path to myself"); return 1; } myname[len-3] = 'D'; myname[len-2] = 'L'; myname[len-1] = 'L'; } handle = LoadLibrary(myname); if (handle) { {void * fptr0 = GetProcAddress(handle, "pstoedit_checkversion"); if (fptr0) { pstoedit_checkversion_func * pstoedit_checkversion = (pstoedit_checkversion_func *) fptr0; int result = pstoedit_checkversion(pstoeditdllversion); if (!result) { fprintf(stderr,"wrong version of pstoedit.dll found\n"); return 1; } } else { fprintf(stderr, "could not find pstoedit_checkversion in %s",myname); return 1; }} {void * fptr0 = GetProcAddress(handle, "setPstoeditOutputFunction"); if (fptr0) { setPstoeditOutputFunction_func * setPstoeditOutputFunction = (setPstoeditOutputFunction_func *) fptr0; setPstoeditOutputFunction(0, // no Call Back Data ptr write_callback_test); } else { fprintf(stderr, "could not find setPstoeditOutputFunction in %s",myname); return 1; }} #if NOTNEEDEDINMAIN {void * fptr1 = GetProcAddress(handle, "getPstoeditDriverInfo_plainC"); if (fptr1) { getPstoeditDriverInfo_plainC_func * getPstoeditDriverInfo_plainC = (getPstoeditDriverInfo_plainC_func *) fptr1; struct DriverDescription_S * dd = getPstoeditDriverInfo_plainC(); struct DriverDescription_S * ddi = dd; #define DUMPLIST #ifdef DUMPLIST while(ddi && (ddi->symbolicname) ) { fprintf(stdout, "%s : %s : %s\n", ddi->symbolicname, ddi->explanation, ddi->suffix); ddi++; } #endif //free(dd); {void * fptr0 = GetProcAddress(handle, "clearPstoeditDriverInfo_plainC"); if (fptr0) { clearPstoeditDriverInfo_plainC_func * clearPstoeditDriverInfo_plainC = (clearPstoeditDriverInfo_plainC_func *) fptr0; clearPstoeditDriverInfo_plainC(dd); } else { fprintf(stderr, "could not find clearPstoeditDriverInfo_plainC in %s",myname); return 1; }} } else { fprintf(stderr,"could not find getPstoeditDriverInfo_plainC in %s",myname); return 1; }} #endif {void * fptr2 = GetProcAddress(handle, "pstoedit_plainC"); if (fptr2) { pstoedit_plainC_func * pstoedit_plainC = (pstoedit_plainC_func *) fptr2; // #define JUSTFORUSAGEDEMO #ifdef JUSTFORUSAGEDEMO const char * testargv[] = {"pstoedit", "-help" }; const int testargc = 2; pstoedit_plainC(testargc,testargv,"asdadsa.dll"); #else pstoedit_plainC(argc,argv,0); #endif } else { fprintf(stderr,"could not find pstoedit_plainC in %s",myname ); return 1; }} FreeLibrary(handle); } else { fprintf(stderr,"could not open %s",myname ); return 1; } return 0; } pstoeditmain/pstoedit.vcproj001777 000001 000001 00000007646 07572434700 012344 pstoeditmain/pstoedit.sln001777 000001 000001 00000001624 07572431774 011633 Microsoft Visual Studio Solution File, Format Version 7.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pstoedit", "pstoedit.vcproj", "{0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}" EndProject Global GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Debug.ActiveCfg = Debug|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Debug.Build.0 = Debug|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Release.ActiveCfg = Release|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal ptoedll/ptoedll.vcproj001777 000001 000001 00000012633 07572434700 011107 ptoedll/ptoedll.sln001777 000001 000001 00000001622 07556540356 010403 Microsoft Visual Studio Solution File, Format Version 7.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ptoeDLL", "ptoeDLL.vcproj", "{36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}" EndProject Global GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Debug.ActiveCfg = Debug|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Debug.Build.0 = Debug|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Release.ActiveCfg = Release|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal stddrivers/stddrivers.vcproj001777 000001 000001 00000022455 07572434700 012366 stddrivers/stddrivers.sln001777 000001 000001 00000002211 07572432324 011643 Microsoft Visual Studio Solution File, Format Version 7.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stddrivers", "stddrivers.vcproj", "{256D09BE-4571-4B55-A044-1DF874A2C2FE}" EndProject Global GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = debugzlibnoplotutils ConfigName.2 = Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Debug.ActiveCfg = Debug|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Debug.Build.0 = Debug|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.debugzlibnoplotutils.ActiveCfg = debugzlibnoplotutils|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.debugzlibnoplotutils.Build.0 = debugzlibnoplotutils|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Release.ActiveCfg = Release|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal cleanup.bat001777 000001 000001 00000000147 07572435400 006666 del /Q pstoeditmain\debug\*.* del /Q ptoedll\debug\*.* del /Q stddrivers\debug\*.* del /Q test\*.* cpbin.bat001777 000001 000001 00000000244 07572433450 006333 copy pstoeditmain\debug\pstoedit.exe test copy ptoedll\debug\pstoedit.dll test copy ptoedll\debug\pstoedit.lib test copy stddrivers\debug\stddrivers.dll test test/readme.txt001777 000001 000001 00000000000 07572435716 007522 msvc_top.sln001777 000001 000001 00000006261 07572435144 007127 Microsoft Visual Studio Solution File, Format Version 7.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msvc_top", "msvc_top.vcproj", "{0F873F1F-7359-4AAF-AC05-9B5B516C0116}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pstoedit", "pstoeditmain\pstoedit.vcproj", "{0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ptoeDLL", "ptoedll\ptoeDLL.vcproj", "{36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stddrivers", "stddrivers\stddrivers.vcproj", "{256D09BE-4571-4B55-A044-1DF874A2C2FE}" EndProject Global GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = debugzlibnoplotutils ConfigName.2 = Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.0 = {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9} {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.1 = {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7} {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.2 = {256D09BE-4571-4B55-A044-1DF874A2C2FE} EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.Debug.ActiveCfg = Debug|Win32 {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.Debug.Build.0 = Debug|Win32 {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.debugzlibnoplotutils.ActiveCfg = Debug|Win32 {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.debugzlibnoplotutils.Build.0 = Debug|Win32 {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.Release.ActiveCfg = Release|Win32 {0F873F1F-7359-4AAF-AC05-9B5B516C0116}.Release.Build.0 = Release|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Debug.ActiveCfg = Debug|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Debug.Build.0 = Debug|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.debugzlibnoplotutils.ActiveCfg = Debug|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.debugzlibnoplotutils.Build.0 = Debug|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Release.ActiveCfg = Release|Win32 {0E1F2664-99C1-41BF-98A0-5EA2F0E30AF9}.Release.Build.0 = Release|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Debug.ActiveCfg = Debug|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Debug.Build.0 = Debug|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.debugzlibnoplotutils.ActiveCfg = Debug|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.debugzlibnoplotutils.Build.0 = Debug|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Release.ActiveCfg = Release|Win32 {36C2BC5F-8FF1-4F87-8703-13DFC0F8BDC7}.Release.Build.0 = Release|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Debug.ActiveCfg = Debug|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Debug.Build.0 = Debug|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.debugzlibnoplotutils.ActiveCfg = debugzlibnoplotutils|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.debugzlibnoplotutils.Build.0 = debugzlibnoplotutils|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Release.ActiveCfg = Release|Win32 {256D09BE-4571-4B55-A044-1DF874A2C2FE}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal msvc_top.vcproj001777 000001 000001 00000005552 07572434514 007640 readme.txt001777 000001 000001 00000001320 07572436610 006543 This directory contains the project files needed to build pstoedit using MS VC++ 7.0. This directory is expected to reside in parallel to the src directory, i.e. as direct subdirectory of the pstoedit root directory. This is needed because the projects address the sources using relative pathes. The top project is msvc_top.vcproj. THere are three subprojects 1. ptoedll - this builds the core pstoedit.dll and pstoedit.lib 2. stddrivers - this builds the standard drivers 3. pstoeditmain - this builds the small main program pstoedit.exe When building the msvc_top project, all the subprojects will be built automatically so there is no need to build them manually Wolfgang Glunz - wglunz@pstoedit.netpstoedit-3.62/os2/0000755000175500010010000000000012137264543011004 500000000000000pstoedit-3.62/os2/Makefile.am0000774000175500000000000000011607530466240012757 00000000000000EXTRA_DIST=makefile.os2 \ pstoedit.inf \ pstoedit.ini \ readme.os2 pstoedit-3.62/os2/Makefile.in0000644000175500010010000002350612137264204012771 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = os2 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = makefile.os2 \ pstoedit.inf \ pstoedit.ini \ readme.os2 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu os2/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu os2/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/os2/makefile.os20000774000175500000000000002337607415405112013133 00000000000000# Generated automatically from Makefile.in by configure. # Makefile for pstoedit. Modified for OS/2 DLL based version. # Install pstoedit in $prefix/bin and # fontmap files in $prefix/lib # SHELL=g:/bin/sh.exe prefix=g: exec_prefix=${prefix} bindir=${exec_prefix}/bin libdir=${exec_prefix}/lib mandir=${prefix}/man MANEXT=1 MANDIR=$(mandir)/man$(MANEXT) #check this out ... #LOCALDEFINES=-DHAVE_LIBMING #LOCALLIBS=-lming AWK=gawk INSTALL=g:/bin/install.exe -c #do NOT use this! GS by definition points to the executable gs.exe #GS=gsdll2.dll PDLL=pstoedit.dll PDEF=pstoedit.def PLIB=pstoedit.a DEFFILE=pstoeditexe.def # Choose a compiler + linker CCC=gcc.exe -DBUGGYGPP -ansi -pedantic -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wstrict-prototypes LDLIBS=$(LOCALLIBS) -lm -ldl -lstdcpp #LDLIBS=-lcext -lstdcpp MAINLIBS=-lstdcpp #release CCFLAGS=-DDEFAULTGS=$(GS) -O2 -m486 -Zmt -DINTERNALBOOL -D__OS2__='' -I. -I../othersrc/gsdllinc #LINKDLL=gcc.exe -s -Zmtd -Zomf -Zdll -Zlinker "/noi" LINKDLL=gcc.exe -s -Zmts -Zsys -Zso -Zomf -Zdll -Zlinker "/noi" LINK=gcc.exe -Zmts -Zomf -Zexe -s #debug #CCFLAGS=-DDEFAULTGS=$(GS) -g -m486 -Zmt -DINTERNALBOOL -D__OS2__='' -I. -I../othersrc/gsdllinc #LINKDLL=gcc.exe -Zmts -Zsys -Zso -Zomf -Zdll -Zlinker "/noi" #LINK=gcc.exe -Zmts -Zomf -Zexe IMPLIB=implib INSTALL_PROGRAM=$(INSTALL) INSTALL_DATA=$(INSTALL) -m 644 INSTALL_DIR=$(INSTALL) -d -m755 # or: mkdir -p OBJEXT=obj EXEEXT=.exe OUTPUT=-o pstoedit SPECIFICDRIVERS= drvtgif.$(OBJEXT) drvfig.$(OBJEXT) drvidraw.$(OBJEXT) drvgnplt.$(OBJEXT) drvmet.$(OBJEXT) MAIN=cmdmain target=pstoedit.exe # For developers only: # Uncomment the following lines (LEXSOURCE= and PSHEADER=) if you have # pstoedit.pro and makeedit.l and need to make some changes in these files. #LEXSOURCE=lexyy.cpp # This is some sort ot hack. If LEXSOURCE is not defined, the make rule below # only relates to dummy.cpp, which is not used by the main target. #PSHEADER=pstoedit.ph # same comment applies to PSHEADER variable ############################################################# default : $(target) # No changes should be necessary below this line .SUFFIXES: .cpp .obj .o .chk .cpp.o: $(CCC) -c $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) $< .cpp.obj: $(CCC) -c -Zomf $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) $< # $(CCC) /c $(LOCALDEFINES) $(CCFLAGS) $&.cpp .c.o: $(CCC) -c -Zomf $(LOCALDEFINES) $(CCFLAGS) -Zc++-comments $< $(DEFFILE): @echo NAME pstoedit WINDOWCOMPAT > $@ @echo DESCRIPTION '"cmd line tool pstoedit.exe, THff 2002, (c) W. Glunz"' >> $@ @echo STACKSIZE 512000 >> $@ @echo >> $@ $(PDEF): @echo LIBRARY pstoedit INITINSTANCE TERMINSTANCE > $@ @echo DESCRIPTION '"pstoedit.dll, THff 2002, (c) W. Glunz"' >> $@ @echo >> $@ @echo DATA >> $@ @echo MULTIPLE NONSHARED >> $@ @echo >> $@ @echo EXPORTS >> $@ @echo '"pstoedit" @1' >> $@ @echo '"pstoedit_checkversion" @2' >> $@ @echo '"pstoeditwithghostscript" @3' >> $@ @echo '"pstoedit_plainC" @4' >> $@ @echo '"getPstoeditDriverInfo_plainC" @5' >> $@ @echo '"clearPstoeditDriverInfo_plainC" @6' >> $@ @echo '"setPstoeditOutputFunction" @7' >> $@ @echo >> $@ # Standard Drivers (for all systems) STANDARDDRIVERS=\ drvlwo.$(OBJEXT) \ drvrib.$(OBJEXT) \ drvrpl.$(OBJEXT) \ drvdxf.$(OBJEXT) \ drvjava.$(OBJEXT) \ drvjava2.$(OBJEXT) \ drvlplot.$(OBJEXT) \ drvpdf.$(OBJEXT) \ drvkillu.$(OBJEXT) \ drvsk.$(OBJEXT) \ drvmpost.$(OBJEXT) \ drvmma.$(OBJEXT) \ drvswf.$(OBJEXT) \ drvlatex2e.$(OBJEXT) \ drvpic.$(OBJEXT) \ drvhpgl.$(OBJEXT) \ drvtk.$(OBJEXT) HELPERS= # Comment out the next line if you don't want the sample driver to be included SAMPLEDRIVER=drvsampl.$(OBJEXT) DRIVERS=$(STANDARDDRIVERS) $(LOCALDRIVERS) $(SAMPLEDRIVER) $(SPECIFICDRIVERS) OBJECTS=dynload.$(OBJEXT) callgs.$(OBJEXT) $(MAIN).$(OBJEXT) pstoedit.$(OBJEXT) lexyy.$(OBJEXT) miscutil.$(OBJEXT) cbstream.$(OBJEXT) image.$(OBJEXT) drvbase.$(OBJEXT) subpath.$(OBJEXT) $(DRIVERS) $(HELPERS) TESTDRIVER=drvpdf libdemo : libusagedemo.$(OBJEXT) drvbase.$(OBJEXT) $(TESTDRIVER).$(OBJEXT) $(LINK) -o libusagedemo libusagedemo.$(OBJEXT) drvbase.$(OBJEXT) $(TESTDRIVER).$(OBJEXT) $(target) : $(PLIB) $(MAIN).$(OBJEXT) $(DEFFILE) $(LINK) $(OUTPUT) $(MAIN).$(OBJEXT) $(PLIB) $(MAINLIBS) $(DEFFILE) $(PLIB) : $(PDLL) $(IMPLIB) /noignorecase $@ $< # $(IMPLIB) -o $(PLIB) $(PDEF) $(PDLL) : $(OBJECTS) $(PDEF) $(LINKDLL) -o $(PDLL) $(OBJECTS) $(LDLIBS) $(PDEF) dummy.cpp $(LEXSOURCE) : makeedit.l flex -L -8 makeedit.l -mv lex.yy.c lexyy.cpp -mv lexyy.c lexyy.cpp clean: rm -f core pstoedit.pure pstoedit.proof pstoedit$(EXEEXT) *.$(OBJEXT) *.chk *.obj pstoedit.dll pstoedit.lib pstoedit.def pstoedit *~ test: pstoedit$(EXEEXT) -cd ../examples;\ ../src/pstoedit -f tgif illusion.ps illusion.ps.obj;\ tgif illusion.ps.obj;\ ../src/pstoedit -scale 2 -f tgif illusion.ps illusion.ps.obj;\ tgif illusion.ps.obj;\ ../src/pstoedit -dt -f tgif illusion.ps illusion.ps.obj;\ tgif illusion.ps.obj;\ ../src/pstoedit -f tgif eschertr.ps eschertr.ps.obj;\ tgif eschertr.ps.obj;\ ../src/pstoedit -f fig illusion.ps illusion.ps.fig;\ xfig illusion.ps.fig;\ ../src/pstoedit -f fig eschertr.ps eschertr.ps.fig;\ xfig eschertr.ps.fig;\ ../src/pstoedit -f fig spiral.ps spiral.ps.fig;\ xfig spiral.ps.fig;\ echo "now trying RIB for RenderMan ";\ ../src/pstoedit -dt -f rib illusion.ps illusion.ps.rib ;\ ../src/pstoedit -dt -f rib eschertr.ps eschertr.ps.rib ;\ echo "now trying LWO for LightWave 3D ";\ ../src/pstoedit -dt -f lwo illusion.ps illusion.ps.lwo ;\ ../src/pstoedit -dt -f lwo eschertr.ps eschertr.ps.lwo ;\ echo "now trying RPL for Real3D ";\ ../src/pstoedit -dt -f rpl illusion.ps illusion.ps.rpl ;\ ../src/pstoedit -dt -f rpl eschertr.ps eschertr.ps.rpl ;\ echo "tests done"; # groff -man ../doc/pstoedit.1 > pstoedit.man.ps # if you don't have groff, try the following instead # troff -man -Tpsc ../doc/pstoedit.1 | psdit > pstoedit.man.ps # for a really large test use the following TESTOPTIONS=-dt -nc -sclip -ssp "-flat 10" -merge "-page 1" -split TESTFILES=*.ps # for a small test use the following TESTOPTIONS=-v -dt "-flat 10" -merge TESTFILES=eschertr.ps bigtest: pstoedit$(EXEEXT) -cd ../examples;\ echo "set -x " > runalltests; \ for format in `../src/pstoedit -help 2>&1 | awk 'BEGIN {p=0;} /^Available/ { p=1; next; } (p==1) { print $$1; }' | grep ":" | sed -e 's/://g' ` ; \ do \ for infile in $(TESTFILES) ; \ do \ for option in $(TESTOPTIONS) ; \ do \ echo ../src/pstoedit $${option} -f $${format} $${infile} $${infile}.out.$${format} >> runalltests; \ done; \ done; \ done; \ sh runalltests; \ echo "big tests done"; drvmdraw.ph : drvmdraw.pro $(AWK) -f mkmdraw.awk < drvmdraw.pro > drvmdraw.ph dummy.ph $(PSHEADER) : pstoedit.pro $(AWK) -f mkpspro.awk < pstoedit.pro > pstoedit.ph install: pstoedit$(EXEEXT) ../doc/pstoedit.1 if [ ! -d $(bindir) ] ; then \ $(INSTALL_DIR) $(bindir); \ fi $(INSTALL_PROGRAM) pstoedit$(EXEEXT) $(bindir) if [ ! -d $(libdir) ] ; then \ $(INSTALL_DIR) $(libdir); \ fi $(INSTALL_DATA) ../misc/mpost.fmp $(libdir) $(INSTALL_DATA) ../misc/latex2e.fmp $(libdir) if [ ! -d $(MANDIR) ] ; then \ $(INSTALL_DIR) $(MANDIR); \ fi $(INSTALL_DATA) ../doc/pstoedit.1 $(MANDIR)/pstoedit.$(MANEXT); echo "please copy ../doc/pstoedit.htm to a suitable place" # Just for running static check tools LINTLIKECHECKER=cppchecker LINTLIKECHECKER=flintchecker ALLCHKS=\ drvbase.chk\ drvwmf.chk\ drvdxf.chk\ drvfig.chk\ drvgnplt.chk\ drvmet.chk\ drvpdf.chk\ drvjava.chk\ drvsampl.chk\ drvtgif.chk\ drvidraw.chk\ drvlwo.chk\ drvrib.chk\ drvrpl.chk\ drvavf.chk\ lexyy.chk\ cmdmain.chk\ pstoedit.chk\ cdlib.chk .cpp.chk: $(LINTLIKECHECKER) $< $@ -c $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) checknamed: $(ALLCHKS) echo checks done checkall: for f in *.cpp; do \ $(LINTLIKECHECKER) $$f `basename $$f .cpp`.log $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) ;\ done #depend: # makedepend *.cpp # DO NOT DELETE lexyy.$(OBJEXT): lexyy.cpp drvbase.h drvfuncs.h image.h drvbase.$(OBJEXT): drvbase.cpp drvbase.h drvfuncs.h image.h pstoedit.$(OBJEXT): pstoedit.cpp drvbase.h drvfuncs.h psfront.h pstoedit.h pstoedit.ph version.h $(MAIN).$(OBJEXT): $(MAIN).cpp pstoedit.h drvtgif.$(OBJEXT): drvtgif.cpp drvtgif.h drvbase.h drvfuncs.h image.h drvtk.$(OBJEXT): drvtk.cpp drvtk.h drvbase.h drvfuncs.h image.h drvlwo.$(OBJEXT): drvlwo.cpp drvlwo.h drvbase.h drvfuncs.h image.h drvrib.$(OBJEXT): drvrib.cpp drvrib.h drvbase.h drvfuncs.h image.h drvrpl.$(OBJEXT): drvrpl.cpp drvrpl.h drvbase.h drvfuncs.h image.h drvidraw.$(OBJEXT): drvidraw.cpp drvidraw.h drvbase.h drvfuncs.h image.h drvfig.$(OBJEXT): drvfig.cpp drvfig.h drvbase.h drvfuncs.h image.h drvgnplt.$(OBJEXT): drvgnplt.cpp drvgnplt.h drvbase.h drvfuncs.h image.h drvdxf.$(OBJEXT): drvdxf.cpp drvdxf.h drvbase.h drvfuncs.h image.h drvmet.$(OBJEXT): drvmet.cpp drvmet.h drvbase.h drvfuncs.h image.h drvpdf.$(OBJEXT): drvpdf.cpp drvpdf.h drvbase.h drvfuncs.h image.h drvtext.$(OBJEXT): drvtext.cpp drvtext.h drvbase.h drvfuncs.h image.h cdlib.$(OBJEXT): cdlib.cpp drvmdraw.$(OBJEXT): drvmdraw.cpp drvbase.h drvmdraw.h drvfuncs.h image.h drvmdraw.ph drvsampl.$(OBJEXT): drvsampl.cpp drvbase.h drvsampl.h drvfuncs.h image.h drvjava.$(OBJEXT): drvjava.cpp drvbase.h drvjava.h drvfuncs.h image.h drvjava2.$(OBJEXT): drvjava2.cpp drvbase.h drvjava2.h drvfuncs.h image.h drvwmf.$(OBJEXT): drvwmf.cpp drvbase.h drvwmf.h drvfuncs.h image.h callgs.$(OBJEXT): callgs.cpp ../othersrc/gsdllinc/dwmainc.c ../othersrc/gsdllinc/getini.c pstoedit.ph: # dummy for RiscOS GNU make's screwed dependencies pstoedit-3.62/os2/pstoedit.inf0000774000175500000000000013263107415404210013253 00000000000000HSP›3cÉ,2›ô¡e?ø ç(ðŒ õøTYµPSTOEDIT  !"#$%&'()*+,-./012 &1  +/."2- '!*)%0($,#  %  PSTOEDIT External links4http://cm.bell-labs.com/who/hobby/MetaPost.html#http://sketch.sourceforge.net//http://sourceforge.net/projects/autotrace/-http://www.cs.columbia.edu/ williamhttp://www.gmlewis.com/http://www.mayura.com&http://www.pstoedit.net/importps/%http://www.pstoedit.net/plugins/&http://www.pstoedit.net/pstoedit/&http://www.walden.com/ lark/(http://xarch.tu-graz.ac.at/autocad/mailto:birrell@pa.dec.commailto:ccox@airmail.net/mailto:chammer@hermes.hrz.uni-bielefeld.demailto:dave@opaque.net!mailto:derekn@vw.ece.cmu.edumailto:egil@kvaleberg.no mailto:gehriger@linkcad.com mailto:ghost@aladdin.com !mailto:gisbert@tapirsoft.de"mailto:glenn@gmlewis.com"#mailto:gsview@ghostgum.com.au$mailto:herzog@online.de(%mailto:Ian_MacPhedran@engr.USask.CA&mailto:jpmg@eng.cam.ac.uk%'mailto:kircher@edvz.tuwien.ac.at4(mailto:Klaus.Steinberger@physik.uni-muenchen.de')mailto:kus@iti.cs.uni-magdeburg.de*mailto:lark@walden.com!+mailto:leszek@sopot.rodan.pl&,mailto:libemf@lignumcomputing.com-mailto:lkv@mania.robin.de.mailto:lorax@nist.gov/mailto:mcjones@pa.dec.com0mailto:niepraschk@ptb.de"1mailto:p.katzmann@thiesen.com2mailto:pakin@cs.uiuc.edu3mailto:piet@cs.ruu.nl&4mailto:plaum@IPF.Uni-Stuttgart.de5mailto:rcw2@ukc.ac.uk,6mailto:rd@berlepsch.wohnheim.uni-ulm.de7mailto:rosen@unr.edu 8mailto:rsm@math.arizona.edu%9mailto:rurban@sbox.tu-graz.ac.at:mailto:rz47b7@PostAG.DE!;mailto:thoffman@zappa.sax.de2<mailto:Thorsten_Behrens@public.uni-hamburg.de=mailto:wglunz@pstoedit.net#>mailto:william@cs.columbia.educˆ›Ïò!Nj„ªÏõCa}¬Çè%Bb¡½å(\ƒž¿å;Xz—±×ñ6V{—¸ê  1µ$ÿÀÿÿàÿÿà$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSystem ProportionalµCourier µHelv µTms RmnµSystem VIOµTms Rmn µHelv µSystem VIOµ!"#%&'()*+,-./0020311011121316220002001330300x30031323603D455050006072889597999:;<>?@aAa4ableaboutaboveac acceptingaccepts according accordinglyACKNOWLEDGEMENTS activatedactsadded addition additional AdditionalAddsadtaffectafterAfteragainagains agreementsAIaipsairmailaladdinAladdinALDUSallAllAllen allocatesallow allowingallows alphabetsalreadyalsoAlsoalwaysan anchoredandAndangleanotherAnother anothernameansweranswersanyAnyanymoewAnyone appendingapplet applicationapply approximatedapproximationapproximations arbitrary arbitrayARCHIVEare argumentArialarizonaaroundaroundsasAs asserted associatedassumes assumptionatAtattempt attributes attributionauauthorAUTHORauthorsautocad autoconf Automaticautomatically autotrace Autotrace availableavoidbBbackBACKbackend backends backmostbadBarnettbasebasedbasicbebecausebeeingbefore beginningBehaves behaviorbehindBehrensbeingbellbelongbelowbenefit berlepsch Bernhardbesidesbestbetterbibliographic bielefeldbiggerBillbinarybirrellbitbitmapBitmapbitmapsBjoernblackbobookborderBorland boundingboxboxesbreaksbugBUGbuilt BurkhardbutButbycCCAcalledcallingcamcancannot CANONICALcanvas capacityCarstencasecasescausedcausesccoxcdef certainlyCGMchammerchancechanceschangechangedchanges changingchapter character characterscheckcheckedchecksChengchoicechoosesChris Christoph citationsclassclassesClick clippathclipped clippingcmcmuCMYKcodecodescoloncolorcolors columbiacom combinationcomescommand commentscommon compatible compensatecompile compiledcomplex composite concerning confusion constant constructscontactcontain containing containscontent Contents contributed contributorscontrol controllable controlled conventions conversion CONVERSIONconvertConvert converted converting converts cooperates coordinatescopy copyrightcorecorner correctlycorrespondingcouldcouldn countriesCouriercourseCoxcppCPUcreateCreatecreated creatingcscurrent currently CurrentlycurvescustomdDanieldashdatedaveDaveDavid dDELAYBINDdeDEdebug debuggingdecdefdefaultdefinedefined deletefiledepends DeprecateddepthDerekderekn described description Description descriptionsdetailsDeutschdf diagramsdid different directly directorydis Disables disablingdisplay displayed displays distibutiondistort distribution distributorsdNOBINDdo documentdocumentation documentsdoesdoesndoingdonDONdoneDorschDOSdouble downsidedpiDrdrawDrawdrawingdrawndriver drivernamedriversdrvbase drvfuncs drvlplot drvsampldtduedump dumpfileduringdvipsdxfDXF dynamicallyeeachEacheasiereasilyeceedgeseditEditeditededitingeduedvzEdwardeffectegilEgileither elementary eliminate embeddedemfEMFemitEmulateenabledenables enclosed encodingendENDengengrentry environment ENVIRONMENTeoeofillEPS equivalents especiallyetceveneveryexactlyexampleExample executable executably executed existingexitexits expected experimental explanation Explorer extendedextents externalffactorfalseFAQsfarfeaturefeelfewfigFigfigurefile filenamefilesfillfilledfillingfillsfilter filteringfindfinerfirstfitsfixedfixesflat flattenerfloatfmpfollow followingfollowsfontfontmap fontname FONTPATHfontsforForforcedforces foregoingformatformats formatting Fortunatelyfound Foundation fragmentframeFree frequentlyfromFrom frontendfull function functionsfurther FurthermorefuturegGgapgaps gehriger Gehriger Generally generate generated generates Generates generating geometricGerhardgetghost ghostgum Ghostscript GhostScriptgisbertGisbertgivegivengivesgivingglennGlennGlunzgmfagmfbgmlewisGNUgnuplotGnuplotgogoodGoslinggovGPLgraphic graphical graphicsgraz greyscalesgroffGroffgroupgroupedgsGSgsviewGsviewGUIhhamburgHammerhandhandleHandlehandled handlinghappenshardhashaveheaderHeighthelphelpful HelveticaherehermesherzogHerzogHigherhintshishobby Hoffmannhole horizontallyhowHoweverHPGLhrzhtmhtmlHTMLhttphuge hyperlink hyperlinks hyperrefiIIanIBMideasIdrawifIfifelseignoredimageimages imagesaspng implement implementedimport important importantly imported importps impossibleImPress improvementsinIninchesinclude included includefile includinginconsistently incorporated increasingly independentindex individualinfile information informedinitialinput inputfileinsert installationinstallations installed instanceinsteadinteger integers integrated intellectual intensiveinter interface interiors intermediate internal internallyinternational interpreted interpreterintoIPFisISO isolatedissuesitItitemsitiitsitself JaeschkejavaJavaJAVAjava1java2JensJohnsonjoutjoutlnjoutputjpmgjtxt3justJustKai katzmann KatzmannKaufmankeepkeykircherKircherKlausknowsKontourkus kvaleberg KvaleberglLlabs landscapeLangLarlargelargerlarklaterLaTeXLaTeX2eLatinLatin1launchlayerlayerslcleadleadingleastleaveleftLEGALlengthlengthslessleszekLeszekletterletterslevelLEVELLevellevel1LewislibLIBlibemflibEMFlibminglibplotlibrarylicenseLicense LightWavelignumcomputinglikelimited limitiations limitinglinelinesLINEslineto linewidthslinklinkcadlinksLinuxlistlittlelkvloadedlocallocated locationLocatorlooklookinglooksloraxlotlowerltLutzlwoLWOmMmachine MacPhedranmade magdeburgMaiermailingmailtomakemakesmanmaniamanpagemanualmanymapmappedmapping mappingsmapsMapsMartinmath mathematical mathematicsmattermaymayuraMayuramcjonesmemeanmeaningmediummemorymention mentionedmenumergemetMET metafile metapost MetaPostmethodsmifmightmindmiscmodemodels modifiedmomentmoreMoremostMostmovetomovetosmpostMSmuch muenchenmultimultiplatform multiplemustMynNnamenamesnarrownativenbnbspncnearestnearlyneedneedsneithernetnewnewernfrnicenicelynicer niepraschk NiepraschknistnixnlnoNonomaptoisolatin1nonNon Noonburgnopagenornormal normally Normallynot notationnoteNotenotesNOTESnoticeNOTICESnownqnumbernumbersoOobjectobjectsoccuroccursOCRoddofOFOfoffoffersOfficeoldolderOmitonOnoneOneonesonlineonlyOnlyOostrumopaqueOpen operations operator operatorsopt1opt2optionoptionsOptionsOPTIONSororder orientation original originallyOSotherOtherothers otherwiseoutoutfileoutlineoutput outputfileover overloadedoverrun overwriteownersppapackage packagespagepages pagesize painting PaintShoppakinPakinpaper parameterpartpasspassedpassingpatchpatchedpathpathespathsPatrick patternsPDF pdfLaTeXpenPerperform performing permissionpermitPeter Petersen PhotoLinephysikpicpicture picturespietPiet PiotrowiczpixelplplacedplacesplainplaumPlaumpleasePleaseplotpluginsPNGpointspolygon polygons POLYLINEspop portability portrait Portrait positioned possiblePostAG postcript postscript PostScript potentially powerful precision Precision prepared previous Previously PRINCIPLEprintPro probablyproblem problemsprocess processed processingproduceprogram programs projectsprompt propertyprovide provided provides providingpsps2aiPs2ai ps2aplotpsargPSJava PSTOEDIT pstoedit Pstoedit pstotextptaptbptipublicPublicpurposeputPutquitquitequoteR r300x300Rainerrcw2rdreadreadingreadmerealReal3Dreallyreason recognize recognized recombine recommended redefines redefining redefinitionredefinitionsredistributable referenced regardingReinirelated relationreleaseRELEASE releasesrely renamefile RenderManReplace replaced replacement replacesreports representrepresentation represented requested requires resolution resolved resource Resourcerespect respective respectively responsible restrictions RESTRICTIONS Restrictionsresult resultingresultsrevised reworkingrgbRGBribRIBrightrightsRiscOSRobRobertrobinrodanRolfrosenRosenRotagerotaterotated rotating rotationrougherroundsrplRPLrsmrulerunrunningrunsrurbanRussellruurz47b7sSSAFERsamesampleSattlersaxsboxscalescalingsclipScottsecondseeSeeseemseemsseen segmentsselectSelect selected selectivelyselectsSelke semantic semanticssendsent separated separatelyseriessetsetflat setlengthsetsSetssetting settingsseveralSeveral severelyshelfshell SHOOTINGshouldshowshown shrinkingsimplesimply simulate simulatedsinceSincesinglesiteSITE situationssizesizessketch slightlysmallersmartersoSo software SoftwaresomeSome something sometimes SometimessopotSorrysortsource sourceforgespacespacesspacingspecialSpecial specific SPECIFIC specified specifierspecify specifyingSplinessplitssp standardstart startdepthstartsSTDERR Steinbergerstepstillstrangestringstringsstroke strongly structure Stuttgartstylesubsubjectsubpath subprocess subscribe subsequent successfullysuchSuch suggestions suitablesupport supported supports surroundingswapSWFswitchSwitch switchedSymbolsymbols SynopsissyntaxsystemSYSTEMsystemstT t2fontsast1taTabletagtagnametake tapirsofttargetTclTEMPtempnam temporaryterms testfileTeX TeXbitmaptextTexttgifthanthattheThetheirthemthenthereTheretherebytheseThesetheyTheythick thickness thicknessesthiesenthinthisThis thoffmanThomas ThorstenthosethoughthroughthusThustimetkTkTMPTMPDIRtoTotooltoptopmosttotally Trademarks transfers transparenttreattreatedtries triggerstroffTROUBLEtruetrytuturnstuwientwotxttypeType typicallyucharuglyuiucukukculm unchangedunderuniUniUnified unitlengthUnixUNIXunlessunnamedunrunsafeupupdatedupdatesupperUrbanURLusableusageUSaskuseUSEuseduseful usepackageuserusersusesusingUsingusualusuallyUwevvaluesvan variable variables VARIABLESvariousvevectorverboseverifyversversionVersion versionsveryviaViewegVisualvwWwaldenwantWarnerwarningwaswayWebWeberweightwellwemfwerewglunzwhenWhen wheneverwherewhetherwhichwhitewhowholeWhywidthWidthwillwilliamWIN32swindingWindowsWINDOWSwishwithWithwithinwithoutwmfWMF wohnheim WolfgangworkworkswouldwriteswritingwrittenwrongwronglywrotewwwxarchxfigyesyouYouyourzappazero[\]_{|}':õ¬ÿúýÿý¯ÿýýýÿýüBüí^ÿþýýýÿýü  üÿýýýÿýçü üÿýýÿ°ÿÚ7¥¡Qvåæ_XýÿýÒ3ÿýýÿúüÿüÏÿýüÿ üYÔ2Áÿýüÿ üYcÿýüÿ üY¬ÓÍÔ_iRtÿþÿýüÿü:ÿýüÿ ü¶|ÿýüÿ üáÿýüÿ ü§4ÿýüÿ ü‹ÿþÿýüÿü–ÿýüÿü%üKüÇ—ÿýüÿ ü‹ÿýüÿ üLäÿýüÿ üÐÇ‹ÿýüÿ üÛÂÿýüÿ ü·ÿýüÿ üOÿýüÿ üŒÿýüÿ ü"ÿýüÿ ü/Äÿýüÿ üÿýüÿ ü{ŒÿþÿýþúýÿýÏÿýýúýÿýYÔ2Áÿýýúÿ°ÿòÿüüãüüeÿóúÿ°ÿòÿüüÿóòÿüü<ÿÿUÿóòÿüü>ÿóòÿüüFÿóòÿüüSÿÿŽÿóòÿüüTÿÿPÿóòÿüümÿÿnÿóòÿüü€ÿóòÿüüƒÿóòÿüü‡ÿóòÿüüˆÿóòÿüüÿóòÿüüÿÿŽÿóòÿüüžÿÿËÿóòÿüü®ÿÿËÿóòÿüü³˜üü²ÿóòÿüü¹ÿóòÿüüºÿÿüüÿóòÿüü¼ÿÿNÿóòÿüü½ÿóòÿüüÊÿóòÿüüÉÿóòÿüüÑÿóòÿüüÞÿÿ0ÿóòÿüüãÿóÿüüMÿÿüWò•óüÿüòÿüqÿòÿ›ÿüóüóúÿ°ÿòÿüü¼ÿÿNÿóÿüüMÿÿüWò•óüÿÿüü+ÿÿüpüPÿòÿüšüPÿóúýÿýYcÿýýúYìb°.(-èüÿ üHô5ÙæüWÿ üúýÿýY¬ÓÍÔ_iRtÿýýúÿ°ÿ.(â!¥¡_iRVÀ¬oü‚ü‘ü üü ü¨ü£ü¾ÿÿügï°†küÿÿVü;üúýÿý:ÿýýúýÿý¶|ÿýýúØAµü üÿü°ÿüúýÿýáÿýýúÿ°ÿ8¥¡QÙåæ_üXüÕ¸Q.(I˜jvåCüœüÝúÿ °üüeÿ úÙ\~ΚüXü±1ëz¿WEslÔü)üE.(r!¤ #èÿ ÿügï°†¤ÿÿüx9Ô¤ÙÔ»=éÔ°)würüüfüßð\}yVÔü¤üÔEêÅ?Ô¸ü`ü¾Ô@­ëÔ¤VZü;üúýÿý§4ÿýýúÿ°ÿî,´ÔÜ'Ÿ“ü¥üÿ Ìÿ ÿ Ãÿ üü*D,Ôh’ ŠÎ,ü&ü´Öü“üÔ¥˜¡PÓ…Ù(6w©,¥üuüüG[ü]üÿaÿ üñ‰„Ùd¥url™Ùà×ü«üüfüð.¢Æüü$üJüª¦Q,ÈÔÿüü+ÿ”V  )*,2=BCEHQR[`buv|‰‘•–˜žŸ¶»¾ÌÐÓÕé "#$%(Y[]bcjpq}€„‰’𛝰µÎÏÑÙÛàèðñôùú  '35<>?LO^dsx{|€ƒ…†‘’–›Ÿ¦§©ÁÇÖçðû +ET[inoqt†ˆ‘’œ¡±²µ¶·¸¹ºÆÇÐÑÓÔÕåéï "#(/12357QZ[svz‰¢¤¨ºÁÅÆÈÓØßïóõö $&89:AJKY[gmpr€ŽšŸ ¢§ª¿ÈÏÑÖØàäåéëîü?õã4™yüUü·üüüNüÇü˜üü#üúÕ›Órï(ÔqEÛÔ²ÔA•r ÅüVü¢SÓ0’¾”xü‚üü{üü½üüOüò*|ÙSãÔÿüüQ3ÿü–üúÚ›r¯(üMü§\ÿ«ÿÜÔA\kÔ¹MüCü™üüúýÿý‹ÿýýúiñåÛ¦Tü9üó¢qƒ©ÙüRü=ü`ü`ü ü™ur±Z§üü¢wü üüTüúýÿý—ÿýýúúÿúÿüüDÿÿ @ÑÒrBüŸüÚ¨ t›üSüÚ–rÍ‘hÔ¹=ŠÌüÙüüG]üÿübÿüúþÿýÿüü ÿÿ @ÑÚ–Þ‘ÔüüD–ºZYÓ¸Û †ˆÑüYüüG]üüÎüúþÿýÿüüÐÿÿ dß Y¶ßüüà YÄŒKYìüTülÔ5ü€üÑãËYrBŸ¿«ÓË XrŠ‘Ôâü}üiÙ–rü¼ü«ÓÔoLWÔ¶Z ÈX_ˆÑü›üÚ~Š Ýkü,ü'sr„jZ«ÛäÙsîfÛ< ÅüŽüúþÿýÿüü­™üü¬ÿÿ ¤Ñëÿü¬ÿüH. ÑÉržü»üëÿü­ÿüÙr>’k,ç×r ‡ôünüvüÆü‰ ÑÉrBskÔmüSüügükÂüÀüÙ¨ð ü/üÚrEÛzkü«üØ+´ÑêünüvÆérI¡kü¢üÕ?üü£üÑür $SÁeÛJüÑüúþÿýÿüü…ÿÿ lˆ€«³%Yê X6(Ôÿüü8ÿü–üÚrü>ü!ü*üÏcËüYüÚ"* ÍãÔÿüü…ÿ–&ÖsÊ7‘Ô°ÔÔ^SèÔSrá2p™üŠü¥Öš1ü«üúþÿýÿüü:ÿÿ “ ;F§(ü`üÃT’í2ÙüæüúþÿýÿüüªÿÿÉÿÿ ÕÉaêÙ–rœ9Û`ç`r)Û¦Ô¢SZÿü«ÿü[üPü ÿ üüªÿ ÿ üÿ ÿ ®ÿ ÿ üÿ Ú-ÔµÛ  ",2EPR`intv|€‚Ž‘•–—˜Ÿ ¥«´¹ÊËÌÐÓÔÚÜéê,JKNPR]acfnrw{€‚‰Š’“–™¦®¯°»¿ÎÓÙÛáèîïóôõ ",EFJL^op}€‘ž¢¥¦©­ÖÙíñÿ 9MPVXamt}€…‡ˆ˜™šœŸ¥«¯°²µ·¸¹ÃÆÜåù   !'/257AEFORcej¨©¯°¸ºÈËÏÔÕßàâæëï÷"$4589:=>DJKYehkopŠ“•¤°´¼ÀÁÏÐÑ×ÙÜÞäåæèFõ(ÜüCüüüñëŽücü)Ö¶ÚífI“kÿüü?ÿxü½üúþÿýþúô$Ïbw§| “ƒ#ÿüü¬ü}«ÿüÛ$ åZLkÖ§OÜ 1æÃ| È7-„Õ‹Î#ü­üüjüÚµÕÖ§©+ZÖ§{Î#ÖvüüüüúlóìÜ †˜Übó‡$ã†üü¬˜ÿüü¬•ÿÿüü¬–ÿÿüü¬ü–ÿü»ÖcZ›¦ü˜üúúÿúÿüü‚ÿÿ Ä]¢Ö´ŽS¥ðHÕn<-ÔÖRü-üÁ§A‹ÍüÚüDªß`ÞüüÖœÖSü¤üwÖ§üüÿ­ÿxܯüØükÙTG›=óÊÿü‚ÿüúþÿýÿüüžÿÿžŒÿÿ ¼ž^…ž§™¡üOüúþÿýÿüüºÿÿü üÿÿ ¹m#üüúþÿýÿüü·ÿÿ Áêü ü ­æÖ,.üuü×üü·—Ý‘Ö"Üã¸üéüúþÿýÿüüËÿÿ 5‰OZGžŽÖüsü[ÚÖP‡/üü8îx±ðÖ6žüŒüÛ—xБZÕüBüÑ͆Ÿò’üOüüF_üN™üdüúþÿýÿüüàÿÿ*ÿÿ Å­%€*^ÖKä#Ö§OÜÖVKŽÖÒü\üoÚ&­³Ös*#Ç*nšÜ¿Ö£Õü3üÑ ü2ü×9ZÚxüüèÖÿüüàÿ—yx¦ÜÊ*Ü äütülóìÜãüÆüãüüàüüúþÿýÿüü;ÿÿXÿÿ ÅYJn§ª@‹güXü[üLüÚen§Qa#ÿüEÿ üoÌ&ÿ­ÿæ²üVü×9ZÚxü4üV$ ÉçÖÿüü;ÿü—üÿüü;iÿ'áYÜ ±#üiüúþÿýÿüüpÿÿˆŽ§OÜ qÿÿ Û˜ÜʧOÕï Mz!ÖŠsxü®üÛxhZrÈž¾™Z>¨â§ü”üüF_üüOüü°ü™ü:üúþÿýÿüüWÿÿˆŽV€OZ­ÿÿ ×V€xÀÓO0~nÖUü\üúÿ  ,25<?BRX^`bcdvŽ˜Ÿ¢¥ÌÓÔÙÜåçéíü#,/17;?@NQ]`aefnru|€Ž’“˜ ¦®¿ÃÖÙÚÛÜÝìíïðñóôõùú ,IKLPQ^ops€ƒ„†‘˜£¦§©­Àïñò,./EPQ^`aer…ˆ’—œ¢£¥§«²³´µ¶¹º¿ÅÆÑÒÛåìú "#+/2EN^abcfijz{ˆ‰¨®ºÀÈËÐÑßàãéìîðòõ"+4789:ACJKYkmqrƒ”•–›¦¨°´ÁÈÏÐÑäåLõ ü=ôXôüŽüÎôXôüŽÿýÿ|$îÿüþÿü-ÿýÿjXŽ0üÂüæÿýÿÓüüXŽîüÂüü”ü ÿúHXŽ^lÓ=s*Ù„jÖs1üLüÓ‘ŽsçZÓüžü úkÓÿüüYÿ™s“üÄüÿ­ÿZÓUÿüAÿ üWlÓp:éÒU6YUjüü Ôp:üsü úúÿ ýüÿíü Ô±:ìÓÿ­ÿPsúþÿ ýüÿäü ýÿ ÿÿÔ:ìÓ­Qsÿÿü yü ÿúþÿ úÔü üWlÓ‰:–Ó­;s²ƒUî…`Ÿ ©XÞÕÏüMü Úsè#‡s_çîüÏ üuÛ«ü>üÍæÆXüü ÚUÓ‡¬'µ£üÿ&ÿ¢3 â Iÿÿü úOsüê üWÞ"çãüíü ¶Ó‰:–Ó­ü<ü úþÿýÿüüSÿÿ\ÿÿ Ξ\®'ÿü­ÿü ¾\B("~üEüáÿ­üüfÿÞba}–ü]ü ¶üüüKüÃü›ü&ZR–Óòÿü üšÿóÞÿüüSÿü\ü úþÿýÿüü³ÿÿTÿÿ ³'ÓÄüTü üü4çîÿüüSÑÿü˜ üúþÿýÿüüÅÿÿ ¼È§ýºü>üÍË©¦/Èü¦üüi Fü ¦îrüŒü mÓ’ü)üGÉsßn¥ZÊü ü Ú(vÞ!€ü°ü ÔŠ.)ìÙdsjðæÓÿüüCÿ™»ÁÐîxzüFüü•üœüüüi Fü wÒeügü ëÓÿüüÅÿ™sü¸ü­àÞJØüªü ühüÙ™s2Ýüqüúþÿýÿüü´ÿÿ ¼,ý‹ –­ü>üÍeËZü,ü [Òÿ­ÿ—™Þ¨Ó,–Óc9ï¤Ó+ÞÓü ü ühüÙ°l5%¯'‚–{·ÜtžüVü ÀæÙ™˜jñž8`ÓoDÞü,ü müüÙüü½ü,üs“NÓ±7lü©ü ׈"|@Ó?ü¿ü ,–Ðs“ÌåðæÓÿüüCÿü™ü úþÿýÿü¡ÿÿüÇÿÿ ¸ ¿Zž†ýÚ™¹Ó ¿ZÓžü†ü 4Ùs %,./12AJ[\^`dv|‚Ž‘“–—˜šŸ £¨«ÌÓÙì÷ù-5:=>NP`abikouzƒ„‰Š‘’“”¥°³¹¾¿ÁÂÉÎÏÙÛëïðôõùúý5ILO[^iop€Š‘”¡©×Úâíîôÿ .01@JMOVWYZefhr…ˆ‰”œ «µ¶¸¹¿ÆÈÑÓÖ×Ýàáâé#(2Mcwž¢¤¥¨¬º½ÂÈÍÎÐÕÜßêïðö÷ "+24689:;>?AJKORTYcdoty~€”¹½¿ÌÏÒäæéëì¿RõºqÚ*Ìuü#ü){%Ú*š$eüXüÍžºm¿eÉŽÌßžºüüüFYüt˜üüúþÿýÿüü(ÿÿ ò,°#¦“üüíÌ£lüWü*P±ÿ ¨ÿ ÿüüLCÿÿhÿÿDÿϱÿ ¨ÿ ÿüüLÿÿUÿÿüü(ÿÿDÿÿü›ÿüúþÿýÿüüQÿÿŒÿÿ dÌ#@ŠÅ8eÌå£@˜cÌÿüüÿ•mü¿ü8*üvüÞÌÿüüQÿ•‘,6ÐüüÑŸm=7Ó £ÿ ·ÿ ü4üaüüüFYü \ü¯üxüüüFYüüüOüüúþÿýÿüü€ÿÿ ¹âü ü ÿ¨ÿÝÌÿüü9ÿ•æ+ü[ü¤Ìÿüü>ÿ•äÚk)˽/¥c üÜü²£M£”ëÕ„ü´üüFYüyRüwüÞÿüü€ÿÌÃ,%e-Ìÿüü9ÿ^<®ü&üfÄ -¢5Ìü üúþÿýÿüüÿÿ …8ý‰¨×Ór8VÌjÖÎÓÌœcÌœUÇü8üdÌ#@ŠÅü8üϨ¬8* ¶Žvüü³ÿüüQÿü•üübüe».ÌÜ{êÓ`Ð'R$Ë™Åü8üÑ,%TãÌÿüüÿü•üúþÿýÿüü‹ÿÿ †JVÌ£ülü‰ZK¦Ì¨üjMüS:o,%ÛÓ!üÐüdñü?üñé`ÓØ©Ìÿü_ü ÿ§ÓJVüZüúþÿýÿüüàÿÿ Èáü|ü¼im¸Eü¦üúþÿýÿüü‡ÿÿ ‰ÿ¨ÿz02ÓÌ’;*ÌünüsüHüdñÁÿüü‡ÿÏÌHVÌj£m¡ÙÓÌüœüúþÿýÿüjüMÿÿ jüMüd üümü]üÂjmüÚüúþÿýÿüœüMÿÿ œüMüd…œM˜üüm]üüÿ¨ÿïÌ­ÓÂüœüúþÿýþúdƒjˆœMm]üü¨îN«VÂjðÓÂüœüúýÿý"üIü¾—ÿýýúÿ¨ÿñÓ g–Ó ü#üÑmA*–ÓÌU¿ÌÿüüLÿü•üÍUÀp–~%µ* 3ü üd}Ê‘•‚Ó%¡ÓÌü#üÌèÓÿüüLÿ~%GìüBüªü1üüÒü úÿüüLÿÿüUó ü••üôüÿúÔ³ç–Æ*  ,/24>BGIRX[^`lpqrvw|‚ˆ’–—˜Ÿ¢¥¾ÊÌÑÓÙÚÛéêþÿ#>GKP`amnrwz‹Œ’­®°ÅÆÎÙàãäèôõöù  !"#=LV^op€ŒŽ‘˜¦©ª­±ÀÆÝíù2MPTafikopr}~„‡ˆ‘’“œ¢¥§©«±µ¶¸¹½¿ÄÆÉÑÙÛÜþ %2=?Fcuw“”š§³·¹»ÉÐÕßàâïðñò÷0789:<=JKRYZ^`dox’”–—š£¦ª³´¼ÁÄÈÎÏÑÒØÚÛäåéëþYõMÉüaüüàü ÿ ³üüVüa ümÿ úÔ\?tu™áÛ=Óü‘üüÈü«ãÓ 4Ûf ;…š Í*ÓÉüaüú<ÿüÿüÿüvÿüÿüJÿüÿü©ÿüÿüWÿüÿüŽÿüÿü|ÿüÿüÿüÿüMÿüÿòÿÓžIÉü ü£ Œ!ÚQüæüÀüüRüçüü#üúÔÿòÿÓÿMÿHÎÓ\Éü ü úúÿúÿüüVüò üˆÿÿ ‹^pÓ@ÛüüÃ!SîüqüþÿýÿüüVüò ü“ÿÿ P•^*Ä^nüüÇA™†Òügü)üuü¿Óžü-üê¹]ét™üüØtµ5_ü›ÓüÂîürüþÿýÿüüVüò üÿÿ üCüÐEßì$ªüü ¼ü9üÖ˜GÛx8ð%&üütÇ2ü¤üüoLüîüBüϺ¨×¡½ÑüUüÙ:!D’Æ_üNülÛYü¥üúþÿýþúÔÿvÿÛÊÓ1”šÓ1Òtd*ü³üÔ>tü²üó,.ØäúúÿúÿüüVüv ÿÿüÿÿ úþÿýþúÔÿJÿÓŸÿüü‚ÿë`­‚Û!¸ƒpÓdKüZüÔ>tÛãü®üúüTü ÿ üüVÿ ÿ üÿ ÿ J ‚ÿ ÿ üÿ úÔÿÿÓ\Å/ üüñ üüúúÿúÿ§ÿÿ F–eü„ü‚l íšüôüþÿýÿzÿÿ —[š¬üsüþÿýÿ+ÿÿ —ü3üwüiüþÿýÿÏÿÿ œüÑüþÿýÿcÿÿ œühüþÿýÿåÿÿ ´è¦ÛÿüÌÿüúþÿýþúüTü ÿ üüVÿ ÿ üÿ ÿ  ~ÿ ÿ üÿ úÔÿ©ÿÓü ü úúÿúÿüüÞÿÿ þÿýÿüüjÿÿ ë`¦Û!6ïÞüjüü»üktü>üÞÁÓ0šÍÑü^üúü'ü Õ ¶A™"p úþÿýÿüüxÿÿ ‰Ó©OÓb]”š^ÒA™ŠÛü(üpjü^üúþÿýÿüüÑÿÿ ‰Ó©Û·¾üÑüÝuüüúþÿýÿüü{ÿÿ þÿýÿüü¯ÿÿ Û7_Ó±ü¢ü°tü>üúüTü ÿ üüVÿ ÿ üÿ ÿ © üÞüüÑü{ÿ ÿ üÿ úþÿýþúÔÿWÿHÓ\ü ü úúÿúÿüüËÿÿ Xy }üütÓüÜü Óü ü +,2679:<RX]`aevx|~‚„‘“—™Ÿª«ÀÂÃÇÈÊÌÍÓâäéïôø  +.;=CNXorsvw~‚„’§¨©ª´µ½ÀÌÎÖרÙÞíïóô÷ù /5789LO\i€”• ©­´ÀÆËÐÓÛàáãæ (.39FILPSTceg}~†ˆœŸ¤¥«µ¶¹»ÀÂÃÆÍçñ÷ÿ  02<>JLghnp~Š”š¨ÃÄÇÊÑÚâåîòùû"#489:ADFJKQY]bfmo„‡•šžŸ£·¼ÁÂÆÌÏÑÒÓåèé_õù¦ü9ü·Ëð Û§Θ›†€üü›á™Ù¬ü˜üÞ0ºs­nôéà¸Æü'üÙ˜Øë8/ü·ütÏ 2ôÂ: †—àÅÈü&üúþÿýÿüü<ÿÿ ü}{và²Ù½ü„OüWÙ4àüüÚ({ØÝ4{–"èÙü5àæüˆ™üfüüiüü…ü¼™RüCüÒ5‘ åüµ´üÄ Ž·Dò$‹ü)ü¡ (+,26BDLRSWX[^_`kvz|‚…‘—Ÿ¤¦«¬±º»¾ÄÊÌÓÖÙ!&48NOSTWbdkoru‚‡‹«¬¸ÀÄÈÎÓÔØÙÛãéìíôùûý  ()+:;?MN^defjoptu~€‚„“–˜§©­®¯ßàåùÿ4DLU\cdhqrv€ƒˆ’—œ¢¥«¬µ¶¹ÃÆÑÓØèú !"$')+,-2;@uŠš­±º¾ÇÕÜßáèéîðúþ "%'(4689:=AJKUY\”•¢¨ª°¶ºÁÆÇÈÏ×ÙÜäÒeõ÷ÒÙÉÖÐYqÝWK*ˆDüÿÿcð‡2ÿÿüEÙψŽYï%ü’üúfñ`ã˜\™ÍüüÑñ`Ù ÏU¾£ÙÏÿü¯ü®ÿQižÙ‚ÖEüîü×£qji‘ä˜ü\üúÏüÿüâüó  üôü;ÿüülüúÿüü-ó kèó©©©ôó;ôgô;ÿú²Ïü€üúüÿütMü;ÿüúíúüÿütMü-ÿüúüü–Ï-m˜ü;üúüÿüvü¯Ÿüü;ÿüúíúüÿüvü¯Ÿüü-ÿüúüÿüuMü;ÿüúíúüÿüuMü-ÿüúÏúüÿüwÛü;ÿüúíúüÿüwÛü-ÿüúü•üfñ¤ÿ¯ÿW°ãü  üñ`Ù/ÙÏ£üü×ãq=)s(TÏd˜¦üzüü<üÃWÏü4ü)Öç.!(ÎÖãì]pÏ\ü?üúþÿýüŠüÿ ú•üÎü"N"ºüyüŠB”Æü«ü¸üIüŒ$x7IÙüRüræeáqü¼üüZüåO«­±šÏüJü—Rü·üJØ„ÅüsüúX‹šŠü»üúÿÿüc0&{2êaŠübÿÿúþÿýü|üÿ ýúÿ ýüÿ|ü¸§Hq”åü¬ü#ü³ü„G«5!hüüüSüÔüü'üÓüüÕü:ü¥üÙüOüü[ü3¨†¡üËü¸‰ü,üúþÿ ýüÿü«5!”Ç>*ü§ü)+%_*Lü¢üfPàü1üÏüÚü~AìÙ@ÿüòßó1ôÿüeP6´üÌüÏüÚü~AìÙ@ÿüòßóµôÿüúþÿ ýüÿüü}üü8üVÀ *Ï$!iʘÿüòÜÿüÁ¹Pq¿…˜Cÿüò½óòÜôóôÿüúþÿ ýüÿüÐ$9È›ü$üÄüüüoüé¶ü}üü8üVÀÙÏünü׃ü^üFϧü“üúþÿ ýüÿüëqÖ$üÞüœqüªü| #&,-027HLMRSZ\`afhov|}—Ÿ©¯±ÊÌÓ×Þãäú %'<BM\`aknort‚œ¤´·¼¿ÍÐÒÕØÙÜßåíïôõùü .DGLYbdmopqr€„‹“˜™š§©¬­»¼½¿ÀËÑÒÛéï '(-89:;AJTbehlnsuwˆ‹Ž›œ£¥§¨µºÃÆÊÐÞßäíòó#+,2]`uЋޒ𣥧º¼ËÌÖÛàåîò)024789:=>EGIJKPY\h}Š‘”£¥¦¨©²´¿ÁÃÅÈÏ×Ùàäêíï]kõ™Æ*dÏŸüKüMjxü*üÈd£ü`üüüž0؈ügüµwΠ* HGØ6{ü/üXütüÏÍoP* ‰Ø65ü…üüü|üü"ü.ü™üüÏ«¬´ïÏ{üühØÏÅ?üüìfZÏiüüþÿ úþÿý:üüÿ úÙlñ*ÁZÿüFü9ÿÿüFcÿü¶1oÿüDücÿÿüEücÿWN’†Î» mWüüúþÿýþúýÿýLäÿýýú;£uØ )'ªw¿3üÕüò*œÏ;'¹ÏaKâØÏŒ’Ä£üuüúò*-錒£uç4vªüßüÿ ªÿ ÿüüfüáÿüú¶Ï^„W<’KãÞ']ŠnÿüaôüVÿÿüaô~ÿüšKã›Øü=üü¤üSü¨ü¶Ï®ü@üúÿªÿËRßÏ\ÿüÊÿ üÔÏ€WËR‡ 7'šKãÞ'Óü\ü¶ÏÿüÊÿ üƒW<’KãüÞü•ÝÆÓw¥Ïÿ×ÿüâü”üCüëJÿÖÿ™ÿüÉÿüúýÿýǾ‘ÿýýúúÿúüCüëÿ úª4ìü‹üæü(ü™$ü(ü²Üü ü#ü—üy‡±Üüêü&,A±Ü¡üü#üCüúÿªÿí!jñs}åü ü ’^åü ü’übüà“å’^w¢&°Ï¹’¼KüãüúþÿýþúýÿýÚºÿýýúkñe§ìÿªÿTÛè]Ã>óüQükðÛÿ ªÿ ÿüüO©ÿÿürü©ÿÿüÌü©ÿ-èÿüÌü©ÿÂ>8ßü]ükÓQüBüÈ8ÐÑ·Ø ¦ìÿüªÿü³£ü[ükÓQ‚_&Ï›W½YwüîüϦw¥oÏWϽüYüpJ+¸%U¯ØÏüüú2¦ì£RwÎÏ£Q­–’ÏÀ£˜üqüÒwŽI’Ójñz¤ÏQ #$',-23BFUY[^`fhs‚ˆ—Ÿ°²¸ÁÆÊÌÎÐÓÙßëóý   ,49NZfhoprsy…†ˆ–› £´µ¼ÉÎØÙÛáäçòôõù/5=>AELORghopvwz€‡–—¦§©­®ÀÛÜäõÿ+,7KMNRV[er}€ˆœ£¥¦§«²¹¿ÆËÏæòóû  +2HKPXdi“•𥦍ªµ¿ÆÇßîïð÷øþ  "-./1489=>?JSTWXYZgiy•–šžŸ¦¬³ÀÁÊÍÏØÝßãäåæì•põFµÍšŸü¡üâÑŠ•nÍŠƒBŒàÍš“üüühüé«ÝÍ6‘ü¢üÑ–N×ðïÍšü²üú¹Pükü層üXü úúÿúüÿüüzÐüׂüüF~ü×üþÿýüÿüÁüü9ÁüüׂüüFüÁüþÿýüÿüyüüdÍy‘üI^üüÁü×üüUü5üúþÿýþúüküåoüðüXÍ“„üü&ºœ8³Þn×üÕüúýÿý¦ÿýýúü‹ü¾WüI^üÉüWü×:Vë( ,ãÍÿüü<ÿü—üÿ¢ÿ.Í·‘Í¥VÂÌÍí‘ÍÁnÍšVtÍ­nÍ¥üVüÔtEXJÊ\ü=ü¼-LÄt}nÓü*üm-) sÍÇüZü¢>üüüqü°ÍüüÛü—üú¢Å#f”XºüüúÎeÍ ü©üü€üü¨ü?ŒÄüÊüúüaü¢BŒÄü0üó(Ù×àÍÿüü®ÿ—×´ü0üühüÓüCüÆðn+üNüú¼ÍvüüwüxüúÎubu»Q̉›Rn™× 3üßüÒ›Rv/üü’Äü/üÌ׿ÖÍp‘7Ÿü@üÔ(K ]üj@ü°Íÿüu w £ôwüÚÿ˜ÿüu x £ôxüiÿQX…ü;üúýÿýOÿýýúì?{|Ž˜dÀl7×üË üñãÍÿüüGÿü—üúÔt!†üDüÆÄ4žïr`ü‡¬ü¯üDüÆÄçèÍüMüS–‘ŸüüîüªüYÂÿ¢ÿ%Ïs¸êÂ_tü[üÔ§nÍügü"Tï$1q‘"üØü¶æü ü ò(ÙÍÿüü½ÿ—n2ïÍñüüúìB¢ Ü§]ŸRc'üHüúÈAäà#üWüÃW) áˆVn›üZü¹¢ !,0267>ARV[`jmv{|”—˜Ÿ ¡¹½ÅÊÌÓÔÙÚåéðõù #.6N[]ghnoqrsuw~‰Ž’“–®¶ÇÑÒÙÛÜÝêïóôõùýÿ -5[^abjop€„Œ˜¡§©´µ·¸èêîÿ/>?CTVXhorˆŠ•–—œ§©«±²µ¹º¼¿ÁÒâ!"2GSbsw|’“𤦍«´ÈÍÏÐÕÙÜßçíö÷ýÿ"+234689:<=ABJKOQYainrsy„Š”•˜¡¦©¸¼¾ÁÅÆËÏ×âäåìvwõï³ÎÌIêüIü˜ü1üβIçhŽ#¤üüDeŠÊüÝüúýÿý–ÿýýúýÿýÿýýúíüSüÿ1ÿüæ ©ü‘ÿÿúýÿý!Ãÿýýúÿ ÿüb ï©‘©üÿÿúÏÂòFj ÿ©ÿ®¦]`ÒÈÒ †}h›ÒPk ’°üGüúýÿýÿýýúúÿúüÿüvÆÿÿüvÆ žÖü4ÿÿîÎlà—Ïü‰üúþÿýüÿüwsÿÿüx ãü,ÿÿµÎi.-Ë8ØÎÇ/—ωH¯ü üüÿ ÿb ïã,üüxÿÿüúþÿýüÿü3üüºÿ+ÿü¹ ×ü@ÿÿ§dÄ¢*L^¨ü¥üúþÿýüÿüc„ÿÿücô„ CÜü ÿÿ§Îñüüúþÿýüÿü"Zÿÿü% \aÖü4ÿÿ§ÎUÎl=üüúþÿýüÿü(p§ÎüœüŒü‹üüüÑ_ÿ/ÿüÐ ó¿ü4ÿÿ9ÄMÙ™Îüœüüüúþÿýüÿüqåÿ.ÿü¾ ¡ü5ÿÿ§ÎéŒüëüüü WÞnüYüúþÿýüÿNüBrÿ"ÿü€ “üVÿÿ§Î$;zÝhÎ$üüúþÿýüÿüOuÿÿüt AÔüÿÿ§ÄüGüúþÿýüÿü'ÿ2ÿüè 2+ü@ÿÿ§[êÎÍKÄ&ÒÍÒ‡Î>ÒüfüüÛ ÿÿb ï2+@üèÿÿúþÿýüÿü­Úÿ-ÿü¼ ÀÓXüÿÿ§mJÎE=üÿ ÿb ðÓXÿÿüúþÿýüÿüRüƒüyÿÿüQ Tü,ÿÿ§±ü¶ü¬ü»ü{ü‚üüüüÿÿb ïT,ÿÿüúþÿýüÿü ßšÿ'ÿüŸ 2½ü”ÿÿ…ÁüGüúþÿýüÿüáÿ!ÿü~ ˆ¸ü4ÿÿ§ÁGÉJügüúþÿýüÿü6üü•ÿÿü7 â?)ü@ÿÿª:ÿ*ÿü« ìÖÕü4ÿÿo´ ü|üÅ0<ü£üúþÿýüÿü·äÿ)ÿ !#,1268=[`cuv‚ƒ‰‹”—˜­³µÆÏÕØÚàáæîòûý *2:FHIUV^_x‹•—žŸ²ºËâçíïôù  %&'*,146@COSWXZ]`dkmov€‰Ž‘Ÿ«³¹ºÅÈÉÊÕØóúý  !"%'*+6GHTV]hqrz|‚œž¥­º¾Úðôõ !"#(.2BDIWXZ\_bckx}ƒ†‡–˜™ ¡ÁÒÓßîü 269JLMYjlwz‚…†ˆ‰Œ’œ¦«­¯±¶»ÈÉÌÏÔÕÖßàáâäçì.~õÆüµ ç üæÿÿ‚±+èüºüúþÿýüÿü£Rÿÿüm @& üæÿÿ‚ÌÓ¶Úì—±füMüÁÃüŽüúþÿýüÿüÅ¡ÿ&ÿü  2åü<ÿÿDÚ`ÚüÔüúþÿýüÿü¦pÿ%ÿüo Þü*ÿÿDÚ\üüúþÿýüÿü(0ÿÿü' ü‘ÿÿ.ÚüÙüâüüúþÿýüÿüáÿ0ÿüáô ´éUü6ÿÿ"§D¹Úñüüúþÿýüÿüz©ÿÿüy ͼüªÿÿcÚbÔDÚó: lüTüúþÿýüÿü>tÿÿü= sü•ÿÿ.Ú¨üüúþÿýüÿnüîÄÿÿür i2éƒü6ÿÿcÚDüqüúþÿýüÿüÅü¡üü  2åü<¯Úwüüúþÿýüÿü$¬üÿ(ÿ« gêÑ6ÿÿüÔD,B¢DÚóüüúþÿýüÿü ZüÿÿY ™6ÿÿü.ÚDÊÿÿü^ ÊÏ‘üÿÿúþÿýüÿü½“üÿ$ÿ’ ³6ÿÿü/Ú]…ŸãüvüàãIÚëÒÚ]†FßüEüúþÿýüÿüÈ›ÇË#C#ü·üÎa_ü9ü׋ÝüXüúþÿýüÿüPüïüÆüÿÿO Ø6ÿÿüDÚk üüúþÿýüÿü»üÂü„üÿ,ÿ¿ ˆ<ÿÿüD‡e˜Ú~D~üjüþÿýüÿüÛ—²üÿ#ÿ‰ ž7ü*ÿÿÿ ÿü! ž7ü*ÿÿDQŠÚ¥ãíÜÉ­)D¤ü¾üþÿýüÿü3HÿÿüG ü*ÿÿD[W-ÚV—ÐfÚ;üEüþÿýüÿüÿ ÿü{ €ü*ÿÿD[ò˜Ú|ðã1üñü?Aèüü”üÖüþÿýüÿü5ÿÿü4 šü‘ÿÿD°Ú}ðh DJÕüAüþÿýüÿü%üdü ¦8ÿÿüK ü*ÿÿÀuÿÿüS L*üÿÿDÜW¶NüSüúþÿýþúýÿýx–ÿýýúäŒÚ®—ܸüœüú ,128@NORTX`gvy‡ŠŒ—›œ§®·¼ÆÉËÒÝñý  #36:ADEHL\u‚¡¢¨±ÛÝæôù $0>@BHORTUX_cdjnoswy€¨©°²µ¶¾ÂÃÄÌÍÎÏÔÚÛçëìö÷øùúþ "#$),-5<=BCJPV_qxy{}œ¥ª®ÁÌÍÎÑÖ×âãêëíîñöøüý&(*2468CVdoy€‚„…Œ‘—š›œŸ¥²¶ÂË×Ùßäåèô!"*,9:;<HJKNVY_tuvyz{‹™®ÁÔ×âìЀT°H)'L;8-IP67+:D6A(üDüEL4'*üüúÿ;ÿ-QLG"<0ü#üü%üO3 P& Lü9üú!->F8SAüGüúÿ;ÿ$27?P!.'üJüúMüüüü 5; 3@/R ü=ü6LC üNüúBK L1 '7P, üüúþ 2;BKP`hov|†Š¯ÌÑý)0lrÛôøþ+2K^|€†ˆŒœ¤©­±ü9}ˆŒœ¹¿Ï&29:TYqrtw¨ÝÞà 9:@JYyÏ­ -ÿú    üü üü 2R^¿è£ÍÙ€© ˆœ¹ÚUmÌJKY|‰Áw‚‚ÿúüÿþü üü ýÿúÿ??explore.exe http://cm.bell-labs.com/who/hobby/MetaPost.htmlü   ýÿÿ ,^©«öúÊÍYbdlÒÞJl¯9:Y‰µÃä#ƒhÿúüÿþü  üü ýÿúÿ..explore.exe http://sketch.sourceforge.net/ü ýÿÿ ,^«öÊÍdlÞql¯×è9:Y‰µäуvÿúüÿþü üü ýÿúÿ::explore.exe http://sourceforge.net/projects/autotrace/ü  ýÿÿ ,^«öÊÍdlÞq$l¯è9:Y‰µäƒ„xÿúüÿþü üü ýÿúÿ88explore.exe http://www.cs.columbia.edu/ williamü   ýÿÿ ,-^«ö:ÊÍdlÞjl¯9:Y‰µÉàä&…aÿúüÿþü üü ýÿúÿ''explore.exe http://www.gmlewis.com/ü  ýÿÿ ,^«öÊÍ*dlÞl¯9:Y‰µàä¼…^ÿúüÿþü üü ýÿúÿ%%explore.exe http://www.mayura.comü  ýÿÿ ,^«öÊÍdlÞ:l¯9:Y‰µàäa†mÿúüÿþü üü ýÿúÿ11explore.exe http://www.pstoedit.net/importps/ü  ýÿÿ ,^«öÊÍdl|Þq2l¯9:Y‰µàä‡lÿúüÿþü üü ýÿúÿ00explore.exe http://www.pstoedit.net/plugins/ü  ýÿÿ ,^«öÊÍdlÞq2l¯9:Y‰µà䮇mÿúüÿþü  üü ýÿúÿ11explore.exe http://www.pstoedit.net/pstoedit/ü ýÿÿ ,^«öÊÍdlÞq2l¯9:Y‰µàäVˆpÿúüÿþü üü  ýÿúÿ11explore.exe http://www.walden.com/ lark/ü  ýÿÿ ,-^«öÊÍdlØÞjl¯9:Y‰¯µàä ‰sÿúüÿþü üü  ýÿúÿ33explore.exe http://xarch.tu-graz.ac.at/autocad/ü  ýÿÿ ,8^‚‹«öÊÍ6dlÞl¯9:Yj‰µá䫉bÿúüÿþü  üü  ýÿúÿ))explore.exe mailto:birrell@pa.dec.comüýÿÿ ,1^«·öLÊÍlÞ&Îl¯9:Y‰µäCŠ^ÿúüÿþü  üü ýÿúÿ''explore.exe mailto:ccox@airmail.netü ýÿÿ ,1N^«ÝöÊÍlÞ&ql¯9:Y‰µäòŠwÿúüÿþü üü ýÿúÿ::explore.exe mailto:chammer@hermes.hrz.uni-bielefeld.deü   ýÿÿ ,1^«³áöHÊÍS`lÞ&l¯9:Yz‰µä‹]ÿúüÿþü üü ýÿúÿ&&explore.exe mailto:dave@opaque.netü  ýÿÿ ,1^«öDÊÍlÞ&q®l¯9:Y‰µä.Œgÿúüÿþü üü  ýÿúÿ,,explore.exe mailto:derekn@vw.ece.cmu.eduü ýÿÿ ,1^«öûV—ÊÍlÞ&l¯9:Y‰­µäÉŒ_ÿúüÿþü üü ýÿúÿ((explore.exe mailto:egil@kvaleberg.noü  ýÿÿ ,1^«ö¡ÊÍlÎÞ&}l¯9:Y‰µäcbÿúüÿþü üü ýÿúÿ++explore.exe mailto:gehriger@linkcad.comü  ýÿÿ ,1^«öÊÍlÞ &l¯9:Y‰µäú_ÿúüÿþü  üü ýÿúÿ((explore.exe mailto:ghost@aladdin.comü ýÿÿ ,1O^«öÊÍlÞ&l¯9:Y‰µä”Žbÿúüÿþü üü ýÿúÿ++explore.exe mailto:gisbert@tapirsoft.deü  ýÿÿ ,1^«öHÊÍlÞ&l¯*9:Y‰µä+_ÿúüÿþü üü ýÿúÿ((explore.exe mailto:glenn@gmlewis.comü  ýÿÿ ,1^«öÊÍ%*lÞ&l¯9:Y‰µäÉfÿúüÿþü üü ýÿúÿ--explore.exe mailto:gsview@ghostgum.com.auü  ýÿÿ ,1^‡«öÊÍ>lÞ&l¯9:Y‰µäa^ÿúüÿþü üü ýÿúÿ''explore.exe mailto:herzog@online.deü  ýÿÿ ,1^«öHÊÍTlÞ&ªl¯9:Y‰µä‘nÿúüÿþü  üü ýÿúÿ33explore.exe mailto:Ian_MacPhedran@engr.USask.CAü ýÿÿ ,1^«Ïö²ÊÍklÞ!&l¯9:Y‰Œµäì©‘dÿúüÿþü üü  ýÿúÿ))explore.exe mailto:jpmg@eng.cam.ac.ukü ýÿÿ ,18^«Òö±ÊÍl¾Þ&l¯9:Yu‰µäP’kÿúüÿþü üü  ýÿúÿ00explore.exe mailto:kircher@edvz.tuwien.ac.atü ýÿÿ ,18^‚«öžÊÍlÈÞ&l¯9:Yl‰µä“|ÿúüÿþü  üü ýÿúÿ??explore.exe mailto:Klaus.Steinberger@physik.uni-muenchen.deü ýÿÿ ,1^«öHÊÍlÊÞ&]ðl¯ü9:Yz‰µä·“oÿúüÿþü üü  ýÿúÿ22explore.exe mailto:kus@iti.cs.uni-magdeburg.deü  ýÿÿ ,1^«ö:HÊÍl°ÍÞ#&l¯9:Yz‰µäT”]ÿúüÿþü üü ýÿúÿ&&explore.exe mailto:lark@walden.comü  ýÿÿ ,1^«öÊÍlØÞ&l¯9:Y‰¯µäñ”eÿúüÿþü üü ýÿúÿ,,explore.exe mailto:leszek@sopot.rodan.plü   ýÿÿ ,1^«öÊÍlÞë&øl„¯ä9:Y‰µä“•hÿúüÿþü üü ýÿúÿ11explore.exe mailto:libemf@lignumcomputing.comü  ýÿÿ ,1^«öÊÍlÞöþ&l¯9:Y‰µä-–bÿúüÿþü üü ýÿúÿ))explore.exe mailto:lkv@mania.robin.deü  ýÿÿ ,1^«öHÊÍlÞ&*lƒ¯9:Y‰µäÖ\ÿúüÿþü üü ýÿúÿ%%explore.exe mailto:lorax@nist.govü  ýÿÿ ,1^«öÊÍ1lÞ&zl¯9:Y‰µä]—bÿúüÿþü  üü ýÿúÿ))explore.exe mailto:mcjones@pa.dec.comü ýÿÿ ,1^«öLÊÍlÞ&<Îl¯9:Y‰µäö—_ÿúüÿþü üü ýÿúÿ((explore.exe mailto:niepraschk@ptb.deü  ýÿÿ ,1^«öHÊÍlÞ&x6l¯9:Y‰µä”˜fÿúüÿþü üü ýÿúÿ--explore.exe mailto:p.katzmann@thiesen.comü  ýÿÿ ,1^«öÊÍlÃÞ&Íl¯9:HY‰µä/™aÿúüÿþü  üü ýÿúÿ((explore.exe mailto:pakin@cs.uiuc.eduü ýÿÿ ,1^«ö:ÊÍlÞ&Öl¯9:Yt‰µäÇ™^ÿúüÿþü üü ýÿúÿ%%explore.exe mailto:piet@cs.ruu.nlü  ýÿÿ ,1^«ö:ÊÍlÞ&|ôl˜¯9:Y‰µämšlÿúüÿþü  üü ýÿúÿ11explore.exe mailto:plaum@IPF.Uni-Stuttgart.deü ýÿÿ ,1^«öHÊÍl¨Þ&ül¯9:Y{‰µä ›^ÿúüÿþü  üü ýÿúÿ%%explore.exe mailto:rcw2@ukc.ac.ukü ýÿÿ ,18^«öÊÍlÞ&Cl¯9:Yuv‰µä·›tÿúüÿþü  üü  ýÿúÿ77explore.exe mailto:rd@berlepsch.wohnheim.uni-ulm.deüýÿÿ ,1^«­öHÊÍlÞ&Dl¯9:Ywz‰µÕäRœ[ÿúüÿþü  üü ýÿúÿ$$explore.exe mailto:rosen@unr.eduü ýÿÿ ,1^«öÊÍlÞ&l†¯9:Y‚‰µäîœdÿúüÿþü  üü ýÿúÿ++explore.exe mailto:rsm@math.arizona.eduü ýÿÿ ,1^y«öÊÍlÞ&5l‘¯9:Y‰µä•mÿúüÿþü üü  ýÿúÿ00explore.exe mailto:rurban@sbox.tu-graz.ac.atü ýÿÿ ,18^‚«öÊÍ6lÞ&l–¡¯9:Yj‰µä3ž^ÿúüÿþü  üü ýÿúÿ''explore.exe mailto:rz47b7@PostAG.DEü ýÿÿ ,1^«öIÊÍlÞ& l™¯9:Y‰µäОeÿúüÿþü  üü ýÿúÿ,,explore.exe mailto:thoffman@zappa.sax.deü ýÿÿ ,1^«öHÊÍlÞ&l ¯9:LY‰µä焟zÿúüÿþü üü  ýÿúÿ==explore.exe mailto:Thorsten_Behrens@public.uni-hamburg.deü ýÿÿ ,1^§«öHÊÍBlÞ&8l¯9:NYz‰µäì' aÿúüÿþü  üü ýÿúÿ**explore.exe mailto:wglunz@pstoedit.netü  ýÿÿ ,1^«öÊÍlÞ&q2l¯9:Y‰µ»äÆ gÿúüÿþü  üü  ýÿúÿ..explore.exe mailto:william@cs.columbia.eduüýÿÿ ,1^«ö:ÊÍlÞ&l¯9:Y‰µÉäs3<æAëGýM©Tè[Óa¼gGmr`y€xí³‚Sƒ„½„V…ì…“†9‡Þ‡ŽˆA‰Ý‰sŠ*‹¿‹bŒùŒ“*ŽÄŽ[û‘=‘Ý‘„’@“ï“„”#•Õ_–ó–—&˜Æ˜a™ù™£š;›ï›‚œ ÍcžŸ¾ŸW €€€€€€ÀÀ€€€ à ¤€¿ø€€€€€€€€€€€€€€€€€€€€€€€€€€€€€„€€€ €ÿÿÿÿàÀ€€€€€€0D€€€€€€€€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€,€€€€€€€€€€€€€€€€€€€€€ˆ€€€€€€€€€€€€€€€€€€€€€€€0€ €€*€€€€€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€ €@€€€€€€2£”€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ „ €€€€€€€€€€€€€€ €ŒH¡€.€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€@€€€€€ „@ €€€ €À€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€"€€€€ -€€€€€€€€€€€0€€€€€€€€€€€€€€€€€€€€€ €€€€€€€€ €¿ø€€€€€€€€€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€(À€€€€€€€€€€€€€€€€€€€€€€€%€€€€€€€€ €€€ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ €€€€€€€ €€€€€€€€€€@€€€!€@€€@€€€"€€€€€€€€€€€€ ÿÿÿÿà€€€!€€€€€€€€€€,€€€€€#€€€€€€€€€€€€€ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ ˜â€@€€€€€€$€"€'€ €€€€€€€€€€À€€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€%€€€€€€€€&€€€À€€€€€€€€€€€€€€€€€€€€€€€€'€€€€€€(€€€€€@€€€€€€€€€€.€€€€€€€€€€€€€€€€€€€€€€ˆ€€€€€€€€€€€€€ €à@€€€$€0€€€€€€€€€€)*€€€€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€€€€€€!€+€€€€€€€€€€,€€€€-€'.€€€€€€/-€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À€€€€€€€€€€€€€€€€€€€€€€€€€˜€€€€€€€€€€€€€€€€€€€€€€€€€€€(€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€%€ÀÀ/€0€€€€€€€€€€€€€€€€€€€€€€€€€€ -€€€€€€€€&))*€€ € €(@€€€€€+€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€@€€€€€€€€€€€€1€€€€€À€ €€€€€2€€€€€€€€€€€*€€€€€€€€€€‡ð€€€€€/€€€€0€€€L „ pstoedit-3.62/os2/pstoedit.ini0000774000175500000000000000041207415404216013253 00000000000000ÿÿÿÿ/(commonPGOfontmap„ hrplugindirg:\share\pstoedit· œ¥gstocallg:\dll\gsdll2.dllÏ22ÖGS_LIBf:\gstools\gs7.00\lib;f:\gstools\fonts;c:\psfontspstoedit-3.62/os2/readme.os20000774000175500000000000000657407415405142012617 00000000000000Second test release of pstoedit 3.31 for OS/2 This is an update of the test releases for pstoedit 3.21 and 3.30. Nothing spectacular new in here. These files are compiled and (somewhat) tested on a single machine using a German Warp 4(.5), FP 15. I make them available for anybody who is interested in testing them. I am interested in any feedback. Send your comments to thoffman@zappa.sax.de Please do not redistribute these files (i.e.,do not upload them to public FTP servers). I would like to note that I added some minor modifications to code that resulted from the work of C.Jaeschke. To get this program working, pstoedit.exe must find pstoedit.dll and gsdll2.dll. I put them into the LIBPATH. Also make the runtime libraries of emx available. pstoedit.dll is "gvpm-ready". In cooperation w/ R.Lang this led to integration into this graphical tool (This version works w/ "stock" gvpm 4.0 at least). As of this moment, gvpm still contains the pstoedit.dll of version 3.21. You can simply copy this new dll over it. (Check: when the Mathematica backend is listed, you are using v3.31) NEW: pstoedit.exe looks for configuration data into pstoedit.ini, too. You receive a template of this ini with this release. Change it according to your system's values (use regedit2 for this) and put it alongside with pstoedit.exe or in the directory of the SYSTEM_INI, i.e. os2.ini (e.g., C:\OS2). Search sequence changed: pstoedit looks for the GS_LIB dirs in the following order: 1. look for pstoedit.ini (see above) 2. look for gvpm.ini (the ASCII ini from gvpm) 3. look for the environment variable GS_LIB 4. look for a built-in value Buglet removed: pstoedit does not any longer create empty pstoedit.ini files in your working directory (did this before, if it could not find an pstoedit.ini in the system or exe directory.). If you are using pstoedit.ini then you have to update the path of the ghostscript lib when upgrading these. The main differences to the "old" version for OS/2 (must have been around v.2.60) are: -no longer necessary to use pstoedit.cmd: use pstoedit.exe -windowing code for met removed (pstoedit only writes to an output file, which you can look at using OS/2's picture viewer) -info output goes to STDERR, you can redirect this output -limited support for images added (mostly taken from the wmf driver code) -some of the "*nix formats" included (call pstoedit -help to see a list of supported formats) -added pstoedit.inf (Thanks to A.Zabolotny for html2ipf). -made using autoconf et.al. with (not so) minor modifications of the resulting Makefile, i.e. no hand crafted Makefile used (Thanks to H.C.Chu for autoconf). New in comparison with v3.21 is the added Mathematica backend. The directory examples contains the *ps files from the original (source) distribution and output created for the met device. Compare the files to find out about the capa- bilities and limits of this program. Known deficencies are: -image boundaries cannot be skewed (the content is rotated, although): see imagetest.[ps,met] -"stairs" in text are not shown: see largetextspace.[ps,met] -text orientations are not always correct: see textmat.[ps,met] -content of multiple pages is printed on one page: twopages.[ps,met] -path handling fails: pathtest.[ps,met] January 2002 Thomas Hoffmann thoffman@zappa.sax.de pstoedit-3.62/othersrc/0000755000175500010010000000000012137264543012132 500000000000000pstoedit-3.62/othersrc/gsdllinc/0000755000175500010010000000000012137264544013732 500000000000000pstoedit-3.62/othersrc/gsdllinc/callgsdllviaiapi.cpp0000774000175500000000000001634512137232215017663 00000000000000/* Copyright (C) 1998, Russell Lang. All rights reserved. Copyright (C) 2005, Wolfgang Glunz. All rights reserved. Wolfgang Glunz implemented the C++ wrapper and the adaptation to the new iapi.h This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #if defined (_WIN32) #include // the next define is needed in gsdll.h #define _Windows #endif #include I_stdio #include I_string_h #include #include #include "iapi.h" typedef int (GSDLLCALLPTR gs_write_callback_funcptr) (void * cb_data, const char* text, int length); // length needs to be int because of gs api static int GSDLLCALL default_gs_addmess(void * /* cb_data */ , const char* text, int length) { // this default is just used in test environment. In real version, the output handler // is set via pstoedit.c #define OUTPUTSTREAM stderr // from pstoedit 3.50 on we redirect all stdout of ghostscript to stderr in order to avoid problems // in case pstoedit's output is written to stdout (e.g. this is done if being called from inkscape) //fprintf(OUTPUTSTREAM,"in default_gs_addmess\n"); if (text) { fwrite(text,1,length,OUTPUTSTREAM); fflush(OUTPUTSTREAM); return length; } else { return 0; } } static gs_write_callback_funcptr current_write_callback = default_gs_addmess; void set_gs_write_callback(gs_write_callback_funcptr new_cb) { // cout << "CB set " << endl; current_write_callback = new_cb; } static char messagebuffer[1000]; // just for local formatting static void writemessage(const char *msg = messagebuffer) { (void)current_write_callback(0,msg,(int) strlen(msg)); } static int GSDLLCALL std_inHandler(void * /*caller_handle*/, char * buf , int len ) // len needs to be int because of gs api { // return 0; const size_t result = fread(buf,1,len,stdin); return (int) result; } /* main handler for the GS DLL */ class GSDLL { public: GSDLL() : hmodule(0), new_instance(0), delete_instance(0), set_stdio(0), init_with_args(0), run_string(0), run_file(0), exit(0), minst(0) { } ~GSDLL() { gs_load_dll_cleanup(); new_instance=(0); delete_instance=(0); set_stdio=(0); init_with_args=(0); run_string=(0); run_file=(0); exit=(0); minst=(0) ; hmodule=0; } void gs_load_dll_cleanup(void) { if (hmodule) (void) FreeLibrary(hmodule); hmodule=(0); } /* load GS DLL if not already loaded */ /* return TRUE if OK */ bool gs_load_dll(const char * szDllName) { // long version; hmodule = LoadLibrary(szDllName); if (hmodule < (HINSTANCE)HINSTANCE_ERROR) { /* fprintf(stderr,"loading %s failed\n", szDllName); */ return false; } // fprintf(stderr, "loaded %s\n", szDllName); /* DLL is now loaded */ /* Get pointers to functions */ //TODO if ( (gsapi.revision = (PFN_gsdll_revision) GetProcAddress(gsapi.hmodule, "gsdll_revision")) == NULL) //TODO return gs_load_dll_cleanup(); #ifdef GS_REVISION /* check DLL version [OPTIONAL] */ revision(NULL, NULL, &version, NULL); if (version != (long)GS_REVISION) { sprinft(messagebuffer,"Wrong version of DLL found.\n Found version %ld\n\ Need version %ld\n", version, (long)GS_REVISION); write_message(); return gs_load_dll_cleanup(); } #endif /* continue loading other functions */ if ( (new_instance = (PFN_gsapi_new_instance) GetProcAddress(hmodule, "gsapi_new_instance")) == NULL) { writemessage("could not load gsapi_new_instance\n"); gs_load_dll_cleanup(); return false; } if ( (delete_instance = (PFN_gsapi_delete_instance) GetProcAddress(hmodule, "gsapi_delete_instance")) == NULL) { writemessage("could not load gsapi_delete_instance\n"); gs_load_dll_cleanup(); return false;} if ( (set_stdio = (PFN_gsapi_set_stdio) GetProcAddress(hmodule, "gsapi_set_stdio")) == NULL) { writemessage("could not load gsapi_set_stdio\n"); gs_load_dll_cleanup(); return false;} if ( (init_with_args = (PFN_gsapi_init_with_args) GetProcAddress(hmodule, "gsapi_init_with_args")) == NULL) { writemessage("could not load gsapi_init_with_args\n"); gs_load_dll_cleanup(); return false;} if ( (run_string = (PFN_gsapi_run_string) GetProcAddress(hmodule, "gsapi_run_string")) == NULL) { writemessage("could not load gsapi_run_string\n"); gs_load_dll_cleanup(); return false;} if ( (run_file = (PFN_gsapi_run_file) GetProcAddress(hmodule, "gsapi_run_file")) == NULL) { writemessage("could not load gsapi_run_file\n"); gs_load_dll_cleanup(); return false;} if ( (exit = (PFN_gsapi_exit) GetProcAddress(hmodule, "gsapi_exit")) == NULL) { writemessage("could not load gsapi_exit\n"); gs_load_dll_cleanup(); return false;} return true; } private: HINSTANCE hmodule; /* handle to module */ public: // yes - I make these public - Of course one could add real methods without the // minst argument which just forward the call to the pointer adding the minst argument // but that would mean a lot of code duplication for little added value (W. Glunz) /* pointers to DLL functions */ PFN_gsapi_new_instance new_instance; PFN_gsapi_delete_instance delete_instance; PFN_gsapi_set_stdio set_stdio; PFN_gsapi_init_with_args init_with_args; PFN_gsapi_run_string run_string; PFN_gsapi_run_file run_file; PFN_gsapi_exit exit; // pointer to the GhostScript instance (but there can only be one anyway) gs_main_instance *minst; }; // can be static - since it is #included into callgs.cpp static int callgsDLL(int argc, char *argv[]) { GSDLL gsapi; (void) SETMODE(FILENO(stdin), O_BINARY); // const char szDllName[] = "gsdll32.dll"; const char * const szDllName = argv[0]; // if (!gsapi.gs_load_dll(szDllName)) { sprintf_s(TARGETWITHLEN(messagebuffer,1000), "Can't load %s (possibly due to 32/64 bit mix - will try gswin32c.exe instead\n", szDllName); writemessage(); return -1; } const int e_Quit = -101; // see ierrors.h int code = gsapi.new_instance(&(gsapi.minst), NULL); if (code < 0) { writemessage("new_instance failed\n"); return 1; } (void)gsapi.set_stdio(gsapi.minst,std_inHandler,current_write_callback,current_write_callback); // params: in, out, err code = gsapi.init_with_args(gsapi.minst, argc, argv); int exit_code; const char start_string[] = "systemdict /start get exec\n"; if (code == 0) code = gsapi.run_string(gsapi.minst, start_string, 0, &exit_code); int code1 = gsapi.exit(gsapi.minst); if ((code == 0) || (code == e_Quit)) code = code1; gsapi.delete_instance(gsapi.minst); if ((code == 0) || (code == e_Quit)) { // sprintf(messagebuffer,"return OK\n"); writemessage(); return 0; } else { // sprintf(messagebuffer,"return FAIL %d\n",code);writemessage(); return 1; } } pstoedit-3.62/othersrc/gsdllinc/dwmaincgsdll.c0000774000175500000000000003003110234255100016445 00000000000000/* Copyright (C) 1998, Russell Lang. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* dwmainc.c */ /* Ghostscript DLL loader for Win32 */ /* For console mode application */ /* This is intended as example code, showing how you can * use the Ghostscript DLL from your application. * If you rename the main() function below to gsdll_main() * and link this file with your program, you can call * Ghostscript using gsdll_main(). * Note that your application *must* be a console application * to use this code, otherwise you will need to remove all * references to stdin and stdout from this file. * * Example compilation: * bcc32 -v -DGS_REVISION=510 -Ik:\bc45\include -Lk:\bc45\lib dwmainc.c * * This is similar to the OS/2 file dpmainc.c. */ /* Russell Lang 1998-01-06 */ #include "cppcomp.h" #if defined (_WIN32) #include // the next define is needed in gsdll.h #define _Windows #elif defined (__OS2__) #define INCL_DOS #define INCL_WIN #include #endif #include I_stdio #include I_string_h #include #include // old DLL (uses aladdin lic) #include "gsdll.hpp" #include "gsdll.h" #define MAXSTR 256 #if defined (_WIN32) const char *szDllName = "gsdll32.dll"; #elif defined (__OS2__) const char *szDllName = "GSDLL2.DLL"; #endif const char start_string[] = "systemdict /start get exec\n"; int debug = FALSE; /* main structure with info about the GS DLL */ typedef struct tagGSDLL { BOOL valid; /* true if loaded */ #if defined (_WIN32) HINSTANCE hmodule; /* handle to module */ #elif defined (__OS2__) HMODULE hmodule; /* handle to module */ #endif /* pointers to DLL functions */ PFN_gsdll_revision revision; PFN_gsdll_init init; PFN_gsdll_execute_begin execute_begin; PFN_gsdll_execute_cont execute_cont; PFN_gsdll_execute_end execute_end; PFN_gsdll_exit exit; PFN_gsdll_lock_device lock_device; #if defined (_WIN32) #ifdef OLDGSDLL PFN_gsdll_copy_dib copy_dib; PFN_gsdll_copy_palette copy_palette; PFN_gsdll_draw draw; #endif /* pointer to mswindll device */ char FAR *device; #elif defined (__OS2__) PFN_gsdll_get_bitmap get_bitmap; /* pointer to os2dll device */ char *device; #endif } GSDLL; GSDLL gsdll; typedef int (gs_write_callback_func) (void * cb_data, const char* text, unsigned long length); static int default_gs_addmess(void * /* cb_data */ , const char* text, unsigned long length) { //fputs(text, stdout); fwrite(text,1,length,stdout); fflush(stdout); return length; } static gs_write_callback_func* current_write_callback = default_gs_addmess; void set_gs_write_callback(gs_write_callback_func* new_cb) { current_write_callback = new_cb; } static char messagebuffer[1000]; // just for local formatting static void write_message() { current_write_callback(0,messagebuffer,strlen(messagebuffer)); } /* free GS DLL */ /* This should only be called when gsdll_execute has returned. */ /* TRUE means no error. */ BOOL gs_free_dll(void) { BOOL flag; #if defined (_WIN32) if (gsdll.hmodule < (HINSTANCE)HINSTANCE_ERROR) flag = TRUE; else flag = FreeLibrary(gsdll.hmodule); gsdll.hmodule = NULL; #elif defined (__OS2__) if (gsdll.hmodule == (HMODULE) NULL) flag=TRUE; else flag = !DosFreeModule(gsdll.hmodule); gsdll.hmodule = (HMODULE) NULL; #endif gsdll.revision = NULL; gsdll.init = NULL; gsdll.execute_begin = NULL; gsdll.execute_cont = NULL; gsdll.execute_end = NULL; gsdll.exit = NULL; gsdll.lock_device = NULL; #if defined (_WIN32) #ifdef OLDGSDLL gsdll.copy_dib = NULL; gsdll.copy_palette = NULL; gsdll.draw = NULL; #endif #elif defined (__OS2__) gsdll.get_bitmap = NULL; #endif gsdll.device = NULL; return flag; } BOOL gs_load_dll_cleanup(void) { (void) gs_free_dll(); return FALSE; } /* load GS DLL if not already loaded */ /* return TRUE if OK */ BOOL gs_load_dll(void) { #if defined (_WIN32) // long version; gsdll.hmodule = LoadLibrary(szDllName); if (gsdll.hmodule < (HINSTANCE)HINSTANCE_ERROR) return FALSE; /* DLL is now loaded */ /* Get pointers to functions */ if ( (gsdll.revision = (PFN_gsdll_revision) GetProcAddress(gsdll.hmodule, "gsdll_revision")) == NULL) return gs_load_dll_cleanup(); #ifdef GS_REVISION /* check DLL version [OPTIONAL] */ gsdll.revision(NULL, NULL, &version, NULL); if (version != (long)GS_REVISION) { sprinft(messagebuffer,"Wrong version of DLL found.\n Found version %ld\n\ Need version %ld\n", version, (long)GS_REVISION); write_message(); return gs_load_dll_cleanup(); } #endif /* continue loading other functions */ if ( (gsdll.init = (PFN_gsdll_init) GetProcAddress(gsdll.hmodule, "gsdll_init")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.execute_begin = (PFN_gsdll_execute_begin) GetProcAddress(gsdll.hmodule, "gsdll_execute_begin")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.execute_cont = (PFN_gsdll_execute_cont) GetProcAddress(gsdll.hmodule, "gsdll_execute_cont")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.execute_end = (PFN_gsdll_execute_end) GetProcAddress(gsdll.hmodule, "gsdll_execute_end")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.exit = (PFN_gsdll_exit) GetProcAddress(gsdll.hmodule, "gsdll_exit")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.lock_device = (PFN_gsdll_lock_device) GetProcAddress(gsdll.hmodule, "gsdll_lock_device")) == NULL) return gs_load_dll_cleanup(); #ifdef OLDGSDLL if ( (gsdll.copy_dib = (PFN_gsdll_copy_dib) GetProcAddress(gsdll.hmodule, "gsdll_copy_dib")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.copy_palette = (PFN_gsdll_copy_palette) GetProcAddress(gsdll.hmodule, "gsdll_copy_palette")) == NULL) return gs_load_dll_cleanup(); if ( (gsdll.draw = (PFN_gsdll_draw) GetProcAddress(gsdll.hmodule, "gsdll_draw")) == NULL) return gs_load_dll_cleanup(); #endif #elif defined (__OS2__) char buf[MAXSTR + 40]; APIRET rc; char *p; const char *dllname; PTIB pptib; PPIB pppib; char szExePath[MAXSTR]; char fullname[1024]; const char *shortname; if ((rc = DosGetInfoBlocks(&pptib, &pppib)) != 0) { // fprintf(stdout, "Couldn't get pid, rc = \n", rc); return FALSE; } /* get path to EXE */ if ((rc = DosQueryModuleName(pppib->pib_hmte, sizeof(szExePath), szExePath)) != 0) { if (debug) { sprintf(messagebuffer, "Couldn't get module name, rc = %ld\n", rc); write_message(); } return FALSE; } if ((p = strrchr(szExePath, '\\')) != (char *)NULL) { p++; *p = '\0'; } dllname = szDllName; if (debug) { sprintf(messagebuffer, "Trying to load %s\n", dllname); write_message(); } memset(buf, 0, sizeof(buf)); rc = DosLoadModule((PBYTE)buf, sizeof(buf), (PCSZ)dllname, &gsdll.hmodule); if (rc) { /* failed */ /* try again, with path of EXE */ if ((shortname = strrchr((const char *)szDllName, '\\')) == (const char *)NULL) shortname = szDllName; strcpy(fullname, szExePath); if ((p = strrchr(fullname, '\\')) != (char *)NULL) p++; else p = fullname; *p = '\0'; strcat(fullname, shortname); dllname = fullname; if (debug) { sprintf(messagebuffer, "Trying to load %s\n", dllname); write_message(); } rc = DosLoadModule((PBYTE)buf, sizeof(buf), (PCSZ)dllname, &gsdll.hmodule); if (rc) { /* failed again */ /* try once more, this time on system search path */ dllname = shortname; if (debug) { sprintf(messagebuffer, "Trying to load %s\n", dllname); write_message(); } rc = DosLoadModule((PBYTE)buf, sizeof(buf), (PCSZ)dllname, &gsdll.hmodule); } } if (rc != 0) return FALSE; if (debug) { sprintf(messagebuffer,"Loaded Ghostscript DLL\n"); write_message(); } if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_REVISION", (PFN *) (&gsdll.revision))) != 0) return gs_load_dll_cleanup(); #ifdef GS_REVISION /* check DLL version */ gsdll.revision(NULL, NULL, &revision, NULL); if (revision != GS_REVISION) { sprintf(messagebuffer, "Wrong version of DLL found.\n Found version %ld\n Need version %ld\n", revision, (long)GS_REVISION); write_message(); return gs_load_dll_cleanup();; } #endif if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_INIT", (PFN *) (&gsdll.init))) != 0) return gs_load_dll_cleanup(); if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_EXECUTE_BEGIN", (PFN *) (&gsdll.execute_begin))) != 0) return gs_load_dll_cleanup(); if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_EXECUTE_CONT", (PFN *) (&gsdll.execute_cont))) != 0) return gs_load_dll_cleanup(); if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_EXECUTE_END", (PFN *) (&gsdll.execute_end))) != 0) return gs_load_dll_cleanup(); if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_EXIT", (PFN *) (&gsdll.exit))) != 0) return gs_load_dll_cleanup(); if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_LOCK_DEVICE", (PFN *) (&gsdll.lock_device))) != 0) return gs_load_dll_cleanup(); if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, (PCSZ)"GSDLL_GET_BITMAP", (PFN *) (&gsdll.get_bitmap))) != 0) return gs_load_dll_cleanup(); #endif return TRUE; } int read_stdin(char FAR *str, int len) { int ch; int count = 0; while (count < len) { ch = fgetc(stdin); if (ch == EOF) return count; *str++ = (char) ch; count++; if (ch == '\n') return count; } return count; } int gsdll_callback(int message, char *str, unsigned long count) { switch (message) { case GSDLL_STDIN: return read_stdin(str, count); case GSDLL_STDOUT: if (str != (char *)NULL) // fwrite(str, 1, count, stdout); // fflush(stdout); current_write_callback(0,str,count); return count; case GSDLL_DEVICE: if (count) { #if defined (_WIN32) #define SYSDLL mswindll #elif defined (__OS2__) #define SYSDLL os2dll #endif sprintf(messagebuffer,"SYSDLL \ device is not supported by the command line version of Ghostscript.\n\ Select a different device using -sDEVICE= as described in use.txt.\n\ Callback: DEVICE %p %s\n", str, count ? "open" : "close"); write_message(); } break; case GSDLL_SYNC: sprintf(messagebuffer,"Callback: SYNC %p\n", str); write_message(); break; case GSDLL_PAGE: sprintf(messagebuffer,"Callback: PAGE %p\n", str); write_message(); break; case GSDLL_SIZE: sprintf(messagebuffer,"Callback: SIZE %p width=%d height=%d\n", str, (int)(count & 0xffff), (int)((count>>16) & 0xffff) ); write_message(); break; case GSDLL_POLL: return 0; /* no error */ default: sprintf(messagebuffer,"Callback: Unknown message=%d\n",message); write_message(); break; } return 0; } int main(int argc, char *argv[]) { int code; #if defined(_WIN32) (void) setmode(fileno(stdin), O_BINARY); #endif if (!gs_load_dll()) { fprintf(stderr, "Can't load %s\n", szDllName); return -1; } code = gsdll.init(gsdll_callback, (HWND)NULL, argc, argv); if (!code) code = gsdll.execute_begin(); if (!code) { code = gsdll.execute_cont(start_string, strlen(start_string)); if (!code) { gsdll.execute_end(); gsdll.exit(); } else code = gsdll.exit(); } (void) gs_free_dll(); if (code == GSDLL_INIT_QUIT) return 0; return code; } pstoedit-3.62/othersrc/gsdllinc/getini.c0000774000175500000000000001172210375676050015303 00000000000000/* Copyright (C) 1998, Russell Lang. All rights reserved. Find the path to the gsview32.ini. Special version for pstoedit. Merged w/ finder for gvpm.ini (OS/2). This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef __OS2__ #ifndef _WIN32 #include #endif static void getini(int verbose,ostream & errstream, char* szIniFile,const char *INIFILEname,DWORD sizeofIniFile) { #if 0 /* get path to EXE */ GetModuleFileName(phInstance, szExePath, sizeof(szExePath)); if ((p = strrchr(szExePath,'\\')) != (char *)NULL) p++; else p = szExePath; *p = '\0'; #endif /* get path to INI file */ szIniFile[0] = '\0'; /* strcpy(szIniFile, szExePath); */ #ifdef _WIN32 DWORD version = GetVersion(); bool is_win4 = false; if (LOBYTE(LOWORD(version)) >= 4) is_win4 = true; /* allow for user profiles */ if (is_win4) { LONG rc; HKEY hkey; DWORD keytype; DWORD cbData; DWORD fa; /* Find the user profile directory */ rc = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\ProfileReconciliation", 0, KEY_READ, &hkey); if (rc == ERROR_SUCCESS) { cbData = sizeofIniFile - strlen(INIFILEname); // cbData = sizeof(szIniFile)-sizeof(INIFILEname); // cout << "cbdata" << (int) cbData << endl; keytype = REG_SZ; rc = RegQueryValueEx(hkey, "ProfileDirectory", 0, &keytype, (LPBYTE)szIniFile, &cbData); (void)RegCloseKey(hkey); } if (rc == ERROR_SUCCESS) { if (verbose) { errstream << "Found ProfileDirectory ! " << endl; } fa = GetFileAttributes(szIniFile); if ((fa != 0xffffffff) && (fa & FILE_ATTRIBUTE_DIRECTORY)) strcat_s(szIniFile,sizeofIniFile, "\\"); else szIniFile[0] = '\0'; } else { /* If we didn't succeed, use the Windows directory */ szIniFile[0] = '\0'; } } if (szIniFile[0] == '\0') { DWORD fa; /* If we didn't succeed, try %USERPROFILE% */ char *p = getenv("USERPROFILE"); if (p && *p) { strcpy_s(szIniFile,sizeofIniFile, p); #ifdef __BORLANDC__ OemToCharBuff(szIniFile, szIniFile, lstrlen(szIniFile)); #endif p = szIniFile + strlen(szIniFile) - 1; if ((*p == '\\') || (*p == '/')) *p = '\0'; /* check if USERPROFILE contains a directory name */ fa = GetFileAttributes(szIniFile); if ((fa != 0xffffffff) && (fa & FILE_ATTRIBUTE_DIRECTORY)) strcat_s(szIniFile,sizeofIniFile, "\\"); else szIniFile[0] = '\0'; } } #else { char *p = getenv("USERPROFILE"); if (p && *p) { strcpy(szIniFile, p); #ifdef __BORLANDC__ OemToAnsiBuff(szIniFile, szIniFile, lstrlen(szIniFile)); #endif p = szIniFile + strlen(szIniFile) - 1; if ((*p == '\\') || (*p == '/')) *p = '\0'; /* check if USERPROFILE contains a directory name */ DIR *d; d = opendir(szIniFile); if (d) { closedir(d); strcat(szIniFile, "\\"); } } } #endif strcat_s(szIniFile,sizeofIniFile, INIFILEname); } #else /*OS/2*/ static void getini(int verbose,ostream & errstream, char* szIniFile, const char *INIFILEname, unsigned int sizeofIniFile) /* get path to INI FILE */ { char *tail, *env; FILESTATUS3 fsts3ConfigInfo = {{0}}; ULONG ulBufSize = sizeof(FILESTATUS3); ULONG inSysDir = 0; APIRET rc; /* first, look in SYSTEM_INI dir */ if ((env = getenv("SYSTEM_INI")) != (char *)NULL) { strcpy(szIniFile, env); inSysDir=1; if ((tail = strrchr(szIniFile,'\\')) != (PCHAR)NULL) { tail++; *tail = '\0'; } } if (inSysDir) { strcat(szIniFile, INIFILEname); rc = DosQueryPathInfo((PSZ)szIniFile, FIL_STANDARD, &fsts3ConfigInfo, ulBufSize); if (rc != 0) inSysDir=0; } /* second, look in the dir of the executable */ if (!inSysDir) { PTIB pptib; PPIB pppib; char szExePath[CCHMAXPATH]; if ( DosGetInfoBlocks(&pptib, &pppib) == 0 ) /* get path to EXE */ if ( DosQueryModuleName(pppib->pib_hmte, sizeof(szExePath), szExePath) == 0 ) { if ((tail = strrchr(szExePath,'\\')) != (PCHAR)NULL) { tail++; *tail = '\0'; } strcpy(szIniFile, szExePath); strcat(szIniFile, INIFILEname); rc = DosQueryPathInfo((PSZ)szIniFile, FIL_STANDARD, &fsts3ConfigInfo, ulBufSize); if (rc != 0) strcpy(szIniFile, INIFILEname); } else strcpy(szIniFile, INIFILEname); } } #endif pstoedit-3.62/othersrc/gsdllinc/gsdll.h0000774000175500000000000000744507435271664015152 00000000000000/* Copyright (C) 1994-2001, Ghostgum Software Pty Ltd. All rights reserved. Portions Copyright (C) 1999 Aladdin Enterprises. All rights reserved. This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of the license contained in the file LICENSE in this distribution. For more information about licensing, please refer to http://www.ghostscript.com/licensing/. For information on commercial licensing, go to http://www.artifex.com/licensing/ or contact Artifex Software, Inc., 101 Lucas Valley Road #110, San Rafael, CA 94903, U.S.A., +1(415)492-9861. */ /* $Id: gsdll.h,v 1.6 2002/02/21 22:24:52 giles Exp $ */ /* This interface is deprecated and will be removed in future * ghostscript releases. Use the interface described in * API.htm and iapi.h. */ #ifndef gsdll_INCLUDED # define gsdll_INCLUDED #include "iapi.h" #ifdef __MACINTOSH__ #define HWND char * #include #pragma export on #endif #ifdef __WINDOWS__ #define _Windows #endif #ifdef __IBMC__ #define GSDLLCALLLINK _System #else #define GSDLLCALLLINK #endif /* global pointer to callback */ typedef int (* GSDLLCALLLINK GSDLL_CALLBACK) (int, char *, unsigned long); extern GSDLL_CALLBACK pgsdll_callback; /* message values for callback */ #define GSDLL_STDIN 1 /* get count characters to str from stdin */ /* return number of characters read */ #define GSDLL_STDOUT 2 /* put count characters from str to stdout */ /* return number of characters written */ #define GSDLL_DEVICE 3 /* device = str has been opened if count=1 */ /* or closed if count=0 */ #define GSDLL_SYNC 4 /* sync_output for device str */ #define GSDLL_PAGE 5 /* output_page for device str */ #define GSDLL_SIZE 6 /* resize for device str */ /* LOWORD(count) is new xsize */ /* HIWORD(count) is new ysize */ #define GSDLL_POLL 7 /* Called from gp_check_interrupt */ /* Can be used by caller to poll the message queue */ /* Normally returns 0 */ /* To abort gsdll_execute_cont(), return a */ /* non zero error code until gsdll_execute_cont() */ /* returns */ /* return values from gsdll_init() */ #define GSDLL_INIT_IN_USE 100 /* DLL is in use */ #define GSDLL_INIT_QUIT 101 /* quit or EOF during init */ /* This is not an error. */ /* gsdll_exit() must not be called */ /* DLL exported functions */ /* for load time dynamic linking */ GSDLLEXPORT int GSDLLAPI gsdll_revision(const char * * product, const char * * copyright, long * gs_revision, long * gs_revisiondate); GSDLLEXPORT int GSDLLAPI gsdll_init(GSDLL_CALLBACK callback, HWND hwnd, int argc, char * * argv); GSDLLEXPORT int GSDLLAPI gsdll_execute_begin(void); GSDLLEXPORT int GSDLLAPI gsdll_execute_cont(const char * str, int len); GSDLLEXPORT int GSDLLAPI gsdll_execute_end(void); GSDLLEXPORT int GSDLLAPI gsdll_exit(void); GSDLLEXPORT int GSDLLAPI gsdll_lock_device(unsigned char *device, int flag); /* Function pointer typedefs */ /* for run time dynamic linking */ typedef int (GSDLLAPIPTR PFN_gsdll_revision)(const char ** product, const char ** copyright, long * revision, long * revisiondate); typedef int (GSDLLAPIPTR PFN_gsdll_init) (GSDLL_CALLBACK, HWND, int argc, char * * argv); typedef int (GSDLLAPIPTR PFN_gsdll_execute_begin) (void); typedef int (GSDLLAPIPTR PFN_gsdll_execute_cont) (const char * str, int len); typedef int (GSDLLAPIPTR PFN_gsdll_execute_end) (void); typedef int (GSDLLAPIPTR PFN_gsdll_exit) (void); typedef int (GSDLLAPIPTR PFN_gsdll_lock_device) (unsigned char *, int); #ifdef __MACINTOSH__ #pragma export off #endif #endif /* gsdll_INCLUDED */ pstoedit-3.62/othersrc/gsdllinc/iapi.h0000774000175500000000000002456510331121374014746 00000000000000/* Copyright (C) 1996-2001 Ghostgum Software Pty Ltd. All rights reserved. This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of the license contained in the file LICENSE in this distribution. For more information about licensing, please refer to http://www.ghostscript.com/licensing/. For information on commercial licensing, go to http://www.artifex.com/licensing/ or contact Artifex Software, Inc., 101 Lucas Valley Road #110, San Rafael, CA 94903, U.S.A., +1(415)492-9861. */ /* $Id: iapi.h,v 1.8.2.1 2003/12/12 22:08:04 giles Exp $ */ /* * Public API for Ghostscript interpreter * for use both as DLL and for static linking. * * Should work for Windows, OS/2, Linux, Mac. * * DLL exported functions should be as similar as possible to imain.c * You will need to include "ierrors.h". * * Current problems: * 1. Ghostscript does not support multiple instances. * 2. Global variables in gs_main_instance_default() * and gsapi_instance_counter */ /* Exported functions may need different prefix * GSDLLEXPORT marks functions as exported * GSDLLAPI is the calling convention used on functions exported * by Ghostscript * GSDLLCALL is used on callback functions called by Ghostscript * When you include this header file in the caller, you may * need to change the definitions by defining these * before including this header file. * Make sure you get the calling convention correct, otherwise your * program will crash either during callbacks or soon after returning * due to stack corruption. */ #ifndef iapi_INCLUDED # define iapi_INCLUDED #ifdef __cplusplus extern "C" { #endif #if defined(_WINDOWS_) || defined(__WINDOWS__) # ifndef _Windows # define _Windows # endif #endif #ifdef _Windows # ifndef GSDLLEXPORT # define GSDLLEXPORT __declspec(dllexport) # endif # ifndef GSDLLAPI # define GSDLLAPI __stdcall # endif # ifndef GSDLLCALL # define GSDLLCALL __stdcall # endif #endif /* _Windows */ #if defined(OS2) && defined(__IBMC__) # ifndef GSDLLAPI # define GSDLLAPI _System # endif # ifndef GSDLLCALL # define GSDLLCALL _System # endif #endif /* OS2 && __IBMC */ #ifdef __MACOS__ # pragma export on #endif #ifndef GSDLLEXPORT # define GSDLLEXPORT #endif #ifndef GSDLLAPI # define GSDLLAPI #endif #ifndef GSDLLCALL # define GSDLLCALL #endif #if defined(__IBMC__) # define GSDLLAPIPTR * GSDLLAPI # define GSDLLCALLPTR * GSDLLCALL #else # define GSDLLAPIPTR GSDLLAPI * # define GSDLLCALLPTR GSDLLCALL * #endif #ifndef gs_main_instance_DEFINED # define gs_main_instance_DEFINED typedef struct gs_main_instance_s gs_main_instance; #endif #ifndef display_callback_DEFINED # define display_callback_DEFINED typedef struct display_callback_s display_callback; #endif typedef struct gsapi_revision_s { const char *product; const char *copyright; long revision; long revisiondate; } gsapi_revision_t; /* Get version numbers and strings. * This is safe to call at any time. * You should call this first to make sure that the correct version * of the Ghostscript is being used. * pr is a pointer to a revision structure. * len is the size of this structure in bytes. * Returns 0 if OK, or if len too small (additional parameters * have been added to the structure) it will return the required * size of the structure. */ GSDLLEXPORT int GSDLLAPI gsapi_revision(gsapi_revision_t *pr, int len); /* * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING * Ghostscript supports only one instance. * The current implementation uses a global static instance * counter to make sure that only a single instance is used. * If you try to create two instances, the second attempt * will return < 0 and set pinstance to NULL. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */ /* Create a new instance of Ghostscript. * This instance is passed to most other API functions. * The caller_handle will be provided to callback functions. */ GSDLLEXPORT int GSDLLAPI gsapi_new_instance(gs_main_instance **pinstance, void *caller_handle); /* * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING * Ghostscript supports only one instance. * The current implementation uses a global static instance * counter to make sure that only a single instance is used. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */ /* Destroy an instance of Ghostscript * Before you call this, Ghostscript must have finished. * If Ghostscript has been initialised, you must call gsapi_exit() * before gsapi_delete_instance. */ GSDLLEXPORT void GSDLLAPI gsapi_delete_instance(gs_main_instance *instance); /* Set the callback functions for stdio * The stdin callback function should return the number of * characters read, 0 for EOF, or -1 for error. * The stdout and stderr callback functions should return * the number of characters written. * If a callback address is NULL, the real stdio will be used. */ GSDLLEXPORT int GSDLLAPI gsapi_set_stdio(gs_main_instance *instance, int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len), int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len), int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len)); /* Set the callback function for polling. * This is used for handling window events or cooperative * multitasking. This function will only be called if * Ghostscript was compiled with CHECK_INTERRUPTS * as described in gpcheck.h. * The polling function should return 0 if all is well, * and negative if it wants ghostscript to abort. * The polling function must be fast. */ GSDLLEXPORT int GSDLLAPI gsapi_set_poll(gs_main_instance *instance, int (GSDLLCALLPTR poll_fn)(void *caller_handle)); /* Set the display device callback structure. * If the display device is used, this must be called * after gsapi_new_instance() and before gsapi_init_with_args(). * See gdevdisp.h for more details. */ GSDLLEXPORT int GSDLLAPI gsapi_set_display_callback( gs_main_instance *instance, display_callback *callback); /* Initialise the interpreter. * This calls gs_main_init_with_args() in imainarg.c * 1. If quit or EOF occur during gsapi_init_with_args(), * the return value will be e_Quit. This is not an error. * You must call gsapi_exit() and must not call any other * gsapi_XXX functions. * 2. If usage info should be displayed, the return value will be e_Info * which is not an error. Do not call gsapi_exit(). * 3. Under normal conditions this returns 0. You would then * call one or more gsapi_run_*() functions and then finish * with gsapi_exit(). */ GSDLLEXPORT int GSDLLAPI gsapi_init_with_args(gs_main_instance *instance, int argc, char **argv); /* * The gsapi_run_* functions are like gs_main_run_* except * that the error_object is omitted. * If these functions return <= -100, either quit or a fatal * error has occured. You then call gsapi_exit() next. * The only exception is gsapi_run_string_continue() * which will return e_NeedInput if all is well. */ GSDLLEXPORT int GSDLLAPI gsapi_run_string_begin(gs_main_instance *instance, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string_continue(gs_main_instance *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string_end(gs_main_instance *instance, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string_with_length(gs_main_instance *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string(gs_main_instance *instance, const char *str, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_file(gs_main_instance *instance, const char *file_name, int user_errors, int *pexit_code); /* Exit the interpreter. * This must be called on shutdown if gsapi_init_with_args() * has been called, and just before gsapi_delete_instance(). */ GSDLLEXPORT int GSDLLAPI gsapi_exit(gs_main_instance *instance); /* Visual Tracer */ /* This function is only for debug purpose clients */ struct vd_trace_interface_s; GSDLLEXPORT void GSDLLAPI gsapi_set_visual_tracer(struct vd_trace_interface_s *I); /* function prototypes */ typedef int (GSDLLAPIPTR PFN_gsapi_revision)( gsapi_revision_t *pr, int len); typedef int (GSDLLAPIPTR PFN_gsapi_new_instance)( gs_main_instance **pinstance, void *caller_handle); typedef void (GSDLLAPIPTR PFN_gsapi_delete_instance)( gs_main_instance *instance); typedef int (GSDLLAPIPTR PFN_gsapi_set_stdio)(gs_main_instance *instance, int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len), int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len), int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len)); typedef int (GSDLLAPIPTR PFN_gsapi_set_poll)(gs_main_instance *instance, int(GSDLLCALLPTR poll_fn)(void *caller_handle)); typedef int (GSDLLAPIPTR PFN_gsapi_set_display_callback)( gs_main_instance *instance, display_callback *callback); typedef int (GSDLLAPIPTR PFN_gsapi_init_with_args)( gs_main_instance *instance, int argc, char **argv); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_begin)( gs_main_instance *instance, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_continue)( gs_main_instance *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_end)( gs_main_instance *instance, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_with_length)( gs_main_instance *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string)( gs_main_instance *instance, const char *str, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_file)(gs_main_instance *instance, const char *file_name, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_exit)(gs_main_instance *instance); typedef void (GSDLLAPIPTR PFN_gsapi_set_visual_tracer) (struct vd_trace_interface_s *I); #ifdef __MACOS__ #pragma export off #endif #ifdef __cplusplus } /* extern 'C' protection */ #endif #endif /* iapi_INCLUDED */ pstoedit-3.62/othersrc/gsdllinc/LICENSE0000774000175500000000000000232310006411762014646 00000000000000 The files in the src, lib, toolbin, examples, doc and man directories (folders) and any subdirectories (sub-folders) thereof are part of GPL Ghostscript. The files in the Resource directory and any subdirectories thereof are also part of GPL Ghostscript, with the explicit exception of the files in the CMap subdirectory. The CMap files are copyright Adobe Systems Incorporated and covered by a separate license which permits only verbatim distribution. GPL Ghostscript is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. GPL Ghostscript is distributed in the hope that 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 so you can know your rights and responsibilities. It should be in a file named doc/COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place Suite 330, Boston, MA 02111-1307, USA. pstoedit-3.62/othersrc/gsdllinc/Makefile.am0000774000175500000000000000021610340116060015666 00000000000000EXTRA_DIST=dwmaincgsdll.c \ callgsdllviaiapi.cpp \ iapi.h \ getini.c \ gsdll.h \ wgsver.c \ wgsver.h \ LICENSE pstoedit-3.62/othersrc/gsdllinc/Makefile.in0000644000175500010010000002366012137264204015717 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = othersrc/gsdllinc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = dwmaincgsdll.c \ callgsdllviaiapi.cpp \ iapi.h \ getini.c \ gsdll.h \ wgsver.c \ wgsver.h \ LICENSE all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu othersrc/gsdllinc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu othersrc/gsdllinc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/othersrc/gsdllinc/wgsver.c0000774000175500000000000002445212036104742015333 00000000000000/* Copyright (C) 2001-2003, Ghostgum Software Pty Ltd. All rights reserved. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ /* * This file is part of GSview. The above notice applies only * to this file. It does NOT apply to any other file in GSview * unless that file includes the above copyright notice. */ /* $Id: wgsver.c,v 1.1.2.4 2003/07/14 08:03:09 ghostgum Exp $ */ /* Obtain details of copies of Ghostscript installed under Windows */ /* To compile as a demo program, define DUMP_GSVER */ /* #define DUMP_GSVER */ #include #include #include #include #include "wgsver.h" /* Ghostscript may be known in the Windows Registry by * the following names. */ static const char * const gs_products[] = { /* #define GS_PRODUCT_AFPL */ "AFPL Ghostscript", /* #define GS_PRODUCT_ALADDIN */ "Aladdin Ghostscript", /* #define GS_PRODUCT_GPL */ "GPL Ghostscript", /* #define GS_PRODUCT_GNU */ "GNU Ghostscript", 0}; /* Get Ghostscript versions for given product. * Store results starting at pver + 1 + offset. * Returns total number of versions in pver. */ static int get_gs_versions_product(int *pver, int offset, HKEY hkeyroot, REGSAM regopenflags, const char *gs_productfamily, const char *gsregbase) { HKEY hkey; DWORD cbData; char key[256]; int ver; char *p; int n = 0; if (strlen(gsregbase)) sprintf_s(TARGETWITHLEN(key,256) , "Software\\%s\\%s", gsregbase, gs_productfamily); else sprintf_s(TARGETWITHLEN(key,256) ,"Software\\%s", gs_productfamily); long regtestresult = RegOpenKeyExA(hkeyroot, key, 0, KEY_READ|regopenflags , &hkey); if (regtestresult == ERROR_SUCCESS) { /* Now enumerate the keys fprintf(stdout," return code for \"%s\" is %d\n", key, regtestresult);*/ cbData = sizeof(key) / sizeof(char); while (RegEnumKeyA(hkey, n, key, cbData) == ERROR_SUCCESS) { n++; ver = 0; p = key; while (*p && (*p!='.')) { ver = (ver * 10) + (*p - '0')*100; p++; } if (*p == '.') p++; if (*p) { ver += (*p - '0') * 10; p++; } if (*p) ver += (*p - '0'); if (n + offset < pver[0]) { /* the pver[0] item contains the lenght of the pver vector */ /* this function is called also just for counting purposes */ pver[n+offset] = ver; } } } else { /* fprintf(stdout," return code for \"%s\" is %d\n", key, regtestresult); */ } return n+offset; } /* Query registry to find which versions of Ghostscript are installed. * Return version numbers in an integer array. * On entry, the first element in the array must be the array size * in elements. * If all is well, TRUE is returned. * On exit, the first element is set to the number of Ghostscript * versions installed, and subsequent elements to the version * numbers of Ghostscript. * e.g. on entry {5, 0, 0, 0, 0}, on exit {3, 550, 600, 596, 0} * Returned version numbers may not be sorted. * * If Ghostscript is not installed at all, return FALSE * and set pver[0] to 0. * If the array is not large enough, return FALSE * and set pver[0] to the number of Ghostscript versions installed. */ BOOL get_gs_versions(int *pver, const char *gsregbase) { int n=0; if (pver == (int *)NULL) return FALSE; const char * const * productptr = &gs_products[0]; while (productptr && *productptr) { n = get_gs_versions_product(pver, n, HKEY_LOCAL_MACHINE, 0, *productptr, gsregbase); n = get_gs_versions_product(pver, n, HKEY_CURRENT_USER, 0, *productptr, gsregbase); n = get_gs_versions_product(pver, n, HKEY_LOCAL_MACHINE, KEY_WOW64_64KEY, *productptr, gsregbase); n = get_gs_versions_product(pver, n, HKEY_CURRENT_USER, KEY_WOW64_64KEY, *productptr, gsregbase); productptr++; } if (n >= pver[0]) { pver[0] = n; return FALSE; /* too small */ } if (n == 0) { pver[0] = 0; return FALSE; /* not installed */ } pver[0] = n; return TRUE; } /* * Get a named registry value. * Key = hkeyroot\\key, named value = name. * name, ptr, plen and return values are the same as in gp_getenv(); */ static int gp_getenv_registry(HKEY hkeyroot, REGSAM regopenflags, const char *key, const char *name, char *ptr, int *plen) { HKEY hkey; DWORD cbData, keytype; BYTE b; LONG rc; BYTE *bptr = (BYTE *)ptr; /* fprintf(stdout,"checking key %s %s\n",key,name); */ if (RegOpenKeyExA(hkeyroot, key, 0, KEY_READ | regopenflags , &hkey) == ERROR_SUCCESS) { keytype = REG_SZ; cbData = *plen; if (bptr == (BYTE *)NULL) bptr = &b; /* Registry API won't return ERROR_MORE_DATA */ /* if ptr is NULL */ rc = RegQueryValueExA(hkey, (char *)name, 0, &keytype, bptr, &cbData); (void)RegCloseKey(hkey); if (rc == ERROR_SUCCESS) { *plen = cbData; return 0; /* found environment variable and copied it */ } else if (rc == ERROR_MORE_DATA) { /* buffer wasn't large enough */ *plen = cbData; return -1; } } return 1; /* not found */ } static BOOL get_gs_string_product(int gs_revision, const char *name, char *ptr, int len, const char *gs_productfamily, const char *gsregbase) { /* If using Win32, look in the registry for a value with * the given name. The registry value will be under the key * HKEY_CURRENT_USER\Software\AFPL Ghostscript\N.NN * or if that fails under the key * HKEY_LOCAL_MACHINE\Software\AFPL Ghostscript\N.NN * where "AFPL Ghostscript" is actually gs_productfamily * and N.NN is obtained from gs_revision. */ int code; char key[256]; char dotversion[16]; int length; DWORD version = GetVersion(); if (((HIWORD(version) & 0x8000) != 0) && ((HIWORD(version) & 0x4000) == 0)) { /* Win32s */ return FALSE; } sprintf_s(TARGETWITHLEN(dotversion,16), "%d.%02d", (int)(gs_revision / 100), (int)(gs_revision % 100)); if (strlen(gsregbase)) sprintf_s(TARGETWITHLEN(key,256), "Software\\%s\\%s\\%s", gsregbase, gs_productfamily, dotversion); else sprintf_s(TARGETWITHLEN(key,256), "Software\\%s\\%s", gs_productfamily, dotversion); length = len; code = gp_getenv_registry(HKEY_CURRENT_USER, 0, key, name, ptr, &length); if ( code == 0 ) return TRUE; /* found it */ length = len; code = gp_getenv_registry(HKEY_LOCAL_MACHINE, 0, key, name, ptr, &length); if ( code == 0 ) return TRUE; /* found it */ length = len; code = gp_getenv_registry(HKEY_CURRENT_USER, KEY_WOW64_64KEY, key, name, ptr, &length); if ( code == 0 ) return TRUE; /* found it */ length = len; code = gp_getenv_registry(HKEY_LOCAL_MACHINE, KEY_WOW64_64KEY, key, name, ptr, &length); if ( code == 0 ) return TRUE; /* found it */ return FALSE; } BOOL get_gs_string(int gs_revision, const char *name, char *ptr, int len, const char *gsregbase) { const char * const * productptr = &gs_products[0]; while (productptr && *productptr) { if (get_gs_string_product(gs_revision, name, ptr, len, *productptr, gsregbase)) return TRUE; productptr++; } return FALSE; } /* Set the latest Ghostscript EXE or DLL from the registry */ BOOL find_gs(char *gspath, int len, int minver, BOOL bDLL, const char *gsregbase) { int count; int *ver; int gsver; char buf[256]; char *p; int i; DWORD version = GetVersion(); if ( ((HIWORD(version) & 0x8000)!=0) && ((HIWORD(version) & 0x4000)==0) ) return FALSE; // win32s count = 1; (void)get_gs_versions(&count, gsregbase); if (count < 1) return FALSE; ver = (int *)malloc((count+1)*sizeof(int)); if (ver == (int *)NULL) return FALSE; ver[0] = count+1; if (!get_gs_versions(ver, gsregbase)) { free(ver); return FALSE; } gsver = 0; for (i=1; i<=ver[0]; i++) { if (ver[i] > gsver) gsver = ver[i]; } free(ver); if (gsver < minver) // minimum version (e.g. for gsprint) return FALSE; if (!get_gs_string(gsver, "GS_DLL", buf, sizeof(buf), gsregbase)) return FALSE; if (bDLL) { strncpy_s(gspath, len, buf, len-1); return TRUE; } else { p = strrchr(buf, '\\'); if (p) { p++; *p = 0; #ifdef _WIN64 strncpy_s(p,sizeof(buf)-1-strlen(buf), "gswin64c.exe", sizeof(buf)-1-strlen(buf)); #else strncpy_s(p,sizeof(buf)-1-strlen(buf), "gswin32c.exe", sizeof(buf)-1-strlen(buf)); #endif strncpy_s(gspath,len, buf, len-1); return TRUE; } return FALSE; } } #ifdef DUMP_GSVER #define ENTRYPOINT main(int argc, char *argv[], char *gsregbase) #else #define ENTRYPOINT dumpgsvers(const char *gsregbase) #endif /* This is an example of how you can use the above functions */ int ENTRYPOINT { BOOL flag; int ver[10]; int i; char buf[256]; if (find_gs(buf, sizeof(buf), 550, TRUE, gsregbase)) fprintf(stderr,"Latest GS DLL is %s\n", buf); if (find_gs(buf, sizeof(buf), 550, FALSE, gsregbase)) fprintf(stderr,"Latest GS EXE is %s\n", buf); ver[0] = sizeof(ver) / sizeof(int); flag = get_gs_versions(ver, gsregbase); fprintf(stderr,"Versions: %d\n", ver[0]); if (flag == FALSE) { fprintf(stderr,"get_gs_versions failed, need %d\n", ver[0]); return 1; } for (i=1; i <= ver[0]; i++) { fprintf(stderr," %d\n", ver[i]); if (get_gs_string(ver[i], "GS_DLL", buf, sizeof(buf), gsregbase)) fprintf(stderr," GS_DLL=%s\n", buf); if (get_gs_string(ver[i], "GS_LIB", buf, sizeof(buf), gsregbase)) fprintf(stderr," GS_LIB=%s\n", buf); } return 0; } pstoedit-3.62/othersrc/gsdllinc/wgsver.h0000774000175500000000000000325610266725530015346 00000000000000/* Copyright (C) 2001-2002, Ghostgum Software Pty Ltd. All rights reserved. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ /* * This file is part of GSview. The above notice applies only * to this file. It does NOT apply to any other file in GSview * unless that file includes the above copyright notice. */ /* $Id: wgsver.h,v 1.1.2.2 2002/05/27 11:18:32 ghostgum Exp $ */ /* Functions for finding Ghostscript versions */ BOOL get_gs_versions(int *pver, const char *gsregpath); BOOL get_gs_string(int gs_revision, const char *name, char *ptr, int len , const char *gsregpath); BOOL find_gs(char *gspath, int len, int minver, BOOL bDLL, const char *gsregpath); pstoedit-3.62/othersrc/Makefile.am0000774000175500000000000000004007572440432014102 00000000000000EXTRA_DIST = SUBDIRS = gsdllinc pstoedit-3.62/othersrc/Makefile.in0000644000175500010010000003647412137264204014127 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = othersrc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/pstoedit_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = SUBDIRS = gsdllinc all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu othersrc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu othersrc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pstoedit-3.62/readme.install0000774000175500000000000001722707530533356013063 00000000000000Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. pstoedit-3.62/src/0000755000175500010010000000000012137264547011074 500000000000000pstoedit-3.62/src/base64writer.cpp0000644000175500010010000000725212137226065014040 00000000000000/* Base64 encoding - originally part of drvSK (by Bernhard Herzog) - now factored out for general usage This base64 code is a modified version of the code in Python's binascii module, which came with the following license: Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum, Amsterdam, The Netherlands. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Stichting Mathematisch Centrum or CWI or Corporation for National Research Initiatives or CNRI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. While CWI is the initial source for this software, a modified version is made available by the Corporation for National Research Initiatives (CNRI) at the Internet address ftp://ftp.python.org. STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "base64writer.h" static const unsigned short BASE64_MAXASCII=76; /* Max chunk size (76 char line) */ static const unsigned char table_b2a_base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; #define FBUFLEN 2048 #define BASE64_PAD '=' int Base64Writer::write_base64(const unsigned char *buf, size_t length) { unsigned char encoded[FBUFLEN]; unsigned char *ascii_data = encoded; const unsigned char *bin_data = buf; unsigned char this_ch; size_t bin_len = ((FBUFLEN / 4) * 3); if (bin_len > length) bin_len = length; /* first, fill the ascii buffer and don't care about max. line length */ for (; bin_len > 0; bin_len--, bin_data++) { /* Shift the data into our buffer */ leftchar = (leftchar << 8) | *bin_data; leftbits += 8; /* See if there are 6-bit groups ready */ while (leftbits >= 6) { this_ch = (leftchar >> (leftbits - 6)) & 0x3f; leftbits -= 6; *ascii_data++ = table_b2a_base64[this_ch]; } } /* now output the ascii data line by line */ size_t ascii_left = ascii_data - encoded; while (ascii_left > 0) { size_t linelength = BASE64_MAXASCII - column; if (ascii_left < linelength) linelength = ascii_left; (void)outf.write((char *) (ascii_data - ascii_left), linelength); // SUN CC needs this cast ascii_left -= linelength; column += linelength; if (column >= BASE64_MAXASCII) { (void)outf.put('\n'); column = 0; } } return bin_data - (const unsigned char *) buf; } void Base64Writer::close_base64() { if (!closed) { unsigned char buf[4]; unsigned char *ascii_data = buf; if (leftbits == 2) { *ascii_data++ = table_b2a_base64[(leftchar & 3) << 4]; *ascii_data++ = BASE64_PAD; *ascii_data++ = BASE64_PAD; } else if (leftbits == 4) { *ascii_data++ = table_b2a_base64[(leftchar & 0xf) << 2]; *ascii_data++ = BASE64_PAD; } if (ascii_data > buf || column != 0) { *ascii_data++ = '\n'; /* Append a courtesy newline */ } if (ascii_data > buf) { (void)outf.write((char *) buf, ascii_data - buf); } closed = 1; } } Base64Writer::~Base64Writer() { if (!closed) close_base64(); } pstoedit-3.62/src/base64writer.h0000644000175500010010000000435212137224255013502 00000000000000#ifndef BASE64WRITER #define BASE64WRITER /* Base64 encoding - originally part of drvSK (by Bernhard Herzog) - now factored out for general usage This base64 code is a modified version of the code in Python's binascii module, which came with the following license: Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum, Amsterdam, The Netherlands. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Stichting Mathematisch Centrum or CWI or Corporation for National Research Initiatives or CNRI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. While CWI is the initial source for this software, a modified version is made available by the Corporation for National Research Initiatives (CNRI) at the Internet address ftp://ftp.python.org. STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef cppcomp_h #include "cppcomp.h" #endif #include I_iostream //#include I_fstream USESTD class DLLEXPORT Base64Writer { public: Base64Writer( ostream& outf_p) : outf(outf_p), leftbits(0), leftchar(0), column(0), closed(0) {} ~Base64Writer(); private: ostream & outf; unsigned int leftbits; unsigned int leftchar; unsigned int column; int closed; public: int write_base64(const unsigned char * buf, size_t length); void close_base64(); private: // declared but not defined Base64Writer(const Base64Writer&); Base64Writer(); const Base64Writer& operator=(const Base64Writer&); }; #endif pstoedit-3.62/src/callgs.cpp0000644000175500010010000004671412137224252012766 00000000000000/* callgs.cpp : This file is part of pstoedit interface to GhostScript Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Proposal for a "cleaned up" version: removed (IMHO) dead/old code, e.g., WIN32 is "dll only" now, because gs32 comes w/DLL Extended for OS/2 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #include I_iostream #include I_fstream #include "pstoedit.h" #include I_stdlib #include I_string_h // rcw2:Can't put angle brackets onto commandline for g++ on RiscOS :( #ifdef riscos #ifndef DEFAULTGS #define DEFAULTGS .ghost #endif #endif #include "miscutil.h" //extern char *getRegistryValue(ostream & errstream, const char *typekey, const char *key); static RSString createCmdLine(int argc, const char *const argv[]) { // create a single string from all args RSString result(""); for (unsigned int i = 0; i < (unsigned) argc; i++) { result += argv[i]; result += " "; } return result; } #if defined(_WIN32) || defined (__OS2__) // using GhostScript DLL #define WITHDLLSUPPORT 1 #ifdef WITHDLLSUPPORT #ifndef USEOLDAPI #include "callgsdllviaiapi.cpp" #else // version which uses obsolete API and gsdll.h #include "dwmaincgsdll.c" #endif #endif #if defined(_WIN32) // retrieve version to be used from registry #include "wgsver.c" // ONLY WINDOWS #endif // #undef main #define WITHGETINI #ifdef WITHGETINI #include "getini.c" #endif // Interface to GhostScript EXE - as an alternative to the DLL // The usage of the DLL makes problem in case of gsview, since // there can only be one instance of the DLL and GhostScript active // in one process. So - if being called from gsview - we need to start // ghostscript via the EXE. // Same holds if 64 bit ghostscript should be called from 32 big pstoedit. #include #include I_stdio static int callgsEXE(int argc, const char * const argv[]) { int gsresult = 0; STARTUPINFO MyStartupInfo; // process data memset(&MyStartupInfo,'\0',sizeof(MyStartupInfo)); MyStartupInfo.cb = sizeof(STARTUPINFO); MyStartupInfo.wShowWindow=SW_SHOWMINNOACTIVE; PROCESS_INFORMATION MyProcessInformation; // CreateProcess fills in this structure DWORD gs_status = 0; const RSString& commandline = createCmdLine(argc,argv); cerr << "running-win command line: " << commandline << endl; BOOL status = CreateProcess( NULL, // Application Name (LPSTR)commandline.value(), NULL, // Process attributes (NULL == Default) NULL, // Thread-Attributes (Default) FALSE, // InheritHandles CREATE_NEW_PROCESS_GROUP, // CreationFlags NULL, // Environment (NULL: same as calling-process) NULL, // Current Directory (NULL: same as calling process) (LPSTARTUPINFO)(&MyStartupInfo), // Windows-state at Startup // window of calling process gets minimized + and shown disabled (LPPROCESS_INFORMATION)(&MyProcessInformation) ); if (status) gsresult=0; else gsresult=-1; // Failure for ( ; ; ) { // while true but without compiler warning status=GetExitCodeProcess(MyProcessInformation.hProcess, &gs_status); if ( !status ) { // process-Status could not be determined gsresult=-1; break; } else if (gs_status==STILL_ACTIVE) { // gs still working Sleep(500); // polling interval } else break; // process terminated } if (gsresult != 0) { cerr << "Interpreter failure: " << gsresult << endl; } (void)CloseHandle(MyProcessInformation.hProcess); (void)CloseHandle(MyProcessInformation.hThread); return gsresult; } // define PSTOEDITDEBUG int callgs(int argc, const char * const argv[]) { const bool verbose = false; // debug only // #define PSTOEDITDEBUG 1 #ifdef PSTOEDITDEBUG cerr << "Commandline " << endl; for (int i = 0; i < argc; i++) { cerr << "argv[" << i << "]: " << argv[i] << endl; } #endif /* force usage of exe - for test purposes only char * dll = strstr(argv[0],"gsdll32.dll"); strcpy(dll,"gswin32.exe"); */ int result = false; // check the first arg in the command line whether it contains gsdll32.dll if ((strstr(argv[0],"gsdll32.dll") != NULL) || (strstr(argv[0],"gsdll64.dll") != NULL)) { #ifdef WITHDLLSUPPORT result = callgsDLL(argc, (char **) argv); #else cerr << "Sorry, but DLL support was not enabled in this version of pstoedit" << endl; return 2; #endif } else { result = callgsEXE(argc,argv); // callgsDLL(argc, (char **) argv); } if (result == -1 ) /* could not even load the dll/exe - so try fallback exe */ { const char * * newargv = new const char *[argc]; for (int i = 0; i< argc; i++) { newargv[i] = argv[i]; } char * dlldirname = cppstrdup(argv[0]); char * p = strrchr(dlldirname, '\\'); if (p) { p++; *p = 0; } const RSString gsdir(dlldirname); delete[] dlldirname; #ifdef _WIN64 const RSString defaultexe(gsdir + RSString("gswin64c.exe")); const RSString fallbackexe(gsdir + RSString("gswin32c.exe")); #else const RSString defaultexe(gsdir + RSString("gswin32c.exe")); const RSString fallbackexe(gsdir + RSString("gswin64c.exe")); #endif const RSString exename( fileExists(defaultexe.value()) ? defaultexe : fallbackexe ); if (verbose) { cerr << "loading: " << argv[0] << " failed (possibly due to 32/64 bit mix - reverting to call gs as exe via: " << exename << endl; } newargv[0] = exename.value(); result = callgsEXE(argc,newargv); delete [] newargv; /* just the array - the content is not owned */ return result; } else return result; #if 0 } else { if (verbose) { cerr << "calling gs as exe: " << argv[0] << endl; } return callgsEXE(argc,argv); } #endif } #else // not a windows system int callgs(int argc, const char *const argv[]) { #ifndef USE_FORK RSString commandline = createCmdLine(argc, argv); commandline += " 1>&2" ; // redirect all stdout of ghostscript to stderr // in order not to interfere with stdout of pstoedit const int result = system(commandline.value()); return result; #else // // version using fork as proposed by Guan Xin - but this does not handle stdout redirection. // /* Return values: -1: error spawning gs -2: error waiting gs otherwise: exit status of gs */ const int pid = fork(); switch(pid) { case -1: perror("fork"); return -1; case 0: execvp(argv[0], argv); perror("execvp"); return -1; default: { int status; if(pid == waitpid(pid, &status, 0) && WIFEXITED(status)) { return WEXITSTATUS(status); } return -2; } } #endif } #endif #define str(x) #x #define xstr(x) str(x) const char *whichPI(ostream & errstream, int verbose, const char *gsregbase, const char * gsToUse) { // determines which PostScript interpreter to use // !FIXME: change the sequence to 2-1-3 (for Unix); with the upcoming gsview for X11 possibly introduce // a lookup of "gsviewX11.ini" (or whatever its name is) // !FIXME: possibly introduce a new environment var. GS_DLL or the like // WIN32: // 1. look in the registry // 2. look into gsview32.ini // 2. look in the environment for the value of GS -- NOT TRUE! This is commented out. // 4. look for the compiled-in DEFAULTGS (which has to hold the DLL) // OS/2: // 1. look in the native profile pstoedit.ini // 2. look into gvpm.ini // 3. look for the compiled-in DEFAULTGS (which has to hold the DLL) // else (i.e. UNIX): // 1. look in the environment for the value of GS // 2. look in the "registry" ($(HOME)/.pstoedit.reg) // 3. look for the compiled-in DEFAULTGS (which has to hold the executable) #ifdef DEFAULTGS static const char *const defaultgs = xstr(DEFAULTGS); #else static const char *const defaultgs = ""; #endif const char *gstocall; // for debugging verbose = true; if (verbose) errstream << endl << "Looking up where to find the PostScript interpreter." << endl; if (gsToUse != 0) { if (verbose) { errstream << " an explicit path was given - using : " << gsToUse << endl; } // an explicit path is given as option already - this overrules everthing return gsToUse; } #if defined (_WIN32) RSString gstocallfromregistry = getRegistryValue(errstream, "common", "gstocall"); if (gstocallfromregistry.value() != 0) { if (verbose) errstream << "found value in registry" << endl; static char buffer[2000]; buffer[2000-1] = 0; // add EOS strncpy_s(buffer,2000-1, gstocallfromregistry.value(),2000-1); // delete[]gstocallfromregistry; gstocall = buffer; } else { if (verbose) errstream << "didn't find value in registry, trying gsview32.ini" << endl; // try gsview32.ini static char pathname[1000]; // static, since we return it const char inifilename[] = "gsview32.ini"; #ifdef WITHGETINI char fullinifilename[1000]; getini(verbose, errstream, fullinifilename, inifilename, sizeof(fullinifilename)); #else const char *fullinifilename = inifilename; #endif if (verbose) errstream << "looking in " << fullinifilename << endl; DWORD result = GetPrivateProfileString("Options", "GhostscriptDLL", "", //default pathname, sizeof(pathname), fullinifilename); if (result > 0) { if (verbose) { errstream << "found value in "; if (strcmp(inifilename, fullinifilename) == 0) { char sysdir[2000]; sysdir[0] = '\0'; UINT ret = GetWindowsDirectory(sysdir, 2000); if (ret) errstream << sysdir << '\\'; } errstream << fullinifilename << endl; } gstocall = pathname; } else { if (verbose) errstream<< "nothing found in gsview32.ini file - using find_gs to lookup latest version of GhostScript in registry " << endl; static char buf[1000]; if (find_gs(buf, sizeof(buf), 550 /* min ver*/ , getPstoeditsetDLLUsage() , gsregbase)) { if (verbose) { (void)dumpgsvers(gsregbase); if (getPstoeditsetDLLUsage()) errstream << "Latest GS DLL is " << buf << endl; else errstream << "Latest GS EXE is " << buf << endl; } gstocall = buf; } else { if (verbose) errstream << "find_gs couldn't find GS in registry" << endl; if (strlen(defaultgs) > 0) { gstocall = defaultgs; } else { errstream << "Fatal: don't know which interpreter to call. " << "Either enter gstocall into the registry " << "or compile again with -DDEFAULTGS=..." << endl; gstocall = 0; } } } } #elif defined (__OS2__) RSString gstocallfromregistry = getRegistryValue(errstream, "common", "gstocall"); if (gstocallfromregistry.value() != 0) { if (verbose) errstream << "found value in pstoedit.ini" << endl; static char buffer[2000]; buffer[2000-1] = 0; // add EOS strncpy(buffer, gstocallfromregistry.value(),2000-1); gstocall = buffer; } else { if (verbose) errstream << "didn't find value in pstoedit.ini, trying gvpm.ini" << endl; // try gvpm.ini static char pathname[1000]; // static, since we return it const char inifilename[] = "gvpm.ini"; #ifdef WITHGETINI char fullinifilename[1000]; getini(verbose, errstream, fullinifilename, inifilename, sizeof(fullinifilename)); #else const char *fullinifilename = inifilename; #endif if (verbose) errstream << "looking in " << fullinifilename << endl; ifstream regfile(fullinifilename); int result = 0; if (regfile) { char line[1000]; while (!regfile.eof() && !result) { regfile.getline(line, 1000); if (strstr(line, "[Options]")) do { regfile.getline(line, 1000); if (strstr(line, "GhostscriptDLL=")) { strncpy(pathname, line + strlen("GhostscriptDLL="),1000); char *cr = strrchr(pathname, '\r'); if (cr) *cr = 0; result = 1; break; } } while (!regfile.eof() && !strchr(line, '[')); } } if (result > 0) { if (verbose) errstream << "found value in " << fullinifilename << endl; gstocall = pathname; } else { if (strlen(defaultgs) > 0) { gstocall = defaultgs; if (verbose) errstream << "nothing found so far, trying default: " << defaultgs << endl; } else { errstream << "Fatal: don't know which interpreter to call. " << "Either enter gstocall into pstoedit.ini " << " or compile again with -DDEFAULTGS=..." << endl; gstocall = 0; } } } #else //UNIX gstocall = getenv("GS"); if (gstocall == 0) { if (verbose) errstream << "GS not set, trying registry for common/gstocall" << endl; RSString gstocallfromregistry = getRegistryValue(errstream, "common", "gstocall"); if (gstocallfromregistry.value() != 0) { if (verbose) errstream << "found value in registry" << endl; static char buffer[2000]; buffer[2000-1] = 0; // add EOS strncpy(buffer, gstocallfromregistry.value(),2000-1); gstocall = buffer; } else { { if (strlen(defaultgs) > 0) { gstocall = defaultgs; if (verbose) errstream << "nothing found so far, trying default: " << defaultgs << endl; } else { errstream << "Fatal: don't know which interpreter to call. " << "Either setenv GS or compile again with -DDEFAULTGS=..." << endl; gstocall = 0; } } } } else { if (verbose) errstream << "GS is set to:" << gstocall << endl; } #endif if (verbose && gstocall) errstream << "Value found is:" << gstocall << endl; return gstocall; } #if defined(_WIN32) static const char *getOSspecificOptions(int verbose, ostream & errstream, char *buffer, unsigned int buflen ) { const char *PIOptions = 0; if (verbose) errstream << "didn't find value in registry, trying gsview32.ini" << endl; // try gsview32.ini const char inifilename[] = "gsview32.ini"; #ifdef WITHGETINI char fullinifilename[1000]; getini(verbose, errstream, fullinifilename, inifilename, sizeof(fullinifilename)); #else const char *fullinifilename = inifilename; #endif if (verbose) errstream << "looking in " << fullinifilename << endl; DWORD result = GetPrivateProfileString("Options", "GhostscriptInclude", "", //default buffer, buflen, fullinifilename); if (result > 0) { //2. if (verbose) { errstream << "found value in "; if (strcmp(inifilename, fullinifilename) == 0) { char sysdir[2000]; sysdir[0] = '\0'; UINT ret = GetWindowsDirectory(sysdir, 2000); if (ret) errstream << sysdir << '\\'; } errstream << fullinifilename << endl; } PIOptions = buffer; } else { // 3. #if 0 // no longer needed with newest find_gs. gs stores the related gs_lib in the registry. static char buf[500]; const unsigned int gsver = get_latest_gs_version(); if (gsver) { get_gs_string(gsver, "GS_LIB", buf, sizeof(buf)); if (verbose) { errstream << "found GS_LIB as " << buf << " from latest version of gs" << endl; } PIOptions = buf; } #endif } return PIOptions; } static const char * const lookupplace = "registry"; #elif defined(__OS2__) static const char *getOSspecificOptions(int verbose, ostream & errstream, char *buffer, unsigned int buflen) { const char *PIOptions = 0; if (verbose) errstream << "didn't find value in pstoedit.ini, trying gvpm.ini" << endl; // try gvpm.ini const char inifilename[] = "gvpm.ini"; char fullinifilename[1000]; getini(verbose, errstream, fullinifilename, inifilename, sizeof(fullinifilename)); if (verbose) errstream << "looking in " << fullinifilename << endl; ifstream regfile(fullinifilename); int result = 0; if (regfile) { char line[1000]; while (!regfile.eof() && !result) { regfile.getline(line, 1000); if (strstr(line, "[Options]")) do { regfile.getline(line, 1000); if (strstr(line, "GhostscriptInclude=")) { strncpy(buffer, line + strlen("GhostscriptInclude="),buflen); char *cr = strrchr(buffer, '\r'); if (cr) *cr = 0; result = 1; break; } } while (!regfile.eof() && !strchr(line, '[')); } } if (result > 0) { //2. if (verbose) { errstream << "found value in " << fullinifilename << endl; } PIOptions = buffer; } return PIOptions; } static const char * const lookupplace = "pstoedit.ini"; #else static const char *getOSspecificOptions(int verbose, ostream & errstream, char *buffer, unsigned int buflen) { return 0; } static const char * const lookupplace = "registry"; #endif const char *defaultPIoptions(ostream & errstream, int verbose) { // returns default options to be passed to the Postscript Interpreter // WIN32: // 1. look in the registry // 2. look into gsview32.ini // 3. look for latest version of ghostscript in registry // 4. look in the environment for the value of GS_LIB // 5. look for the compiled-in GS_LIB // OS/2: // 1. look in the native profile pstoedit.ini // 2. look into gvpm.ini // 3. look in the environment for the value of GS_LIB // 4. look for the compiled-in GS_LIB // else (i.e. UNIX): // 1. look in the "registry" ($(HOME)/.pstoedit.reg) // 2. look in the environment for the value of GS_LIB // 3. look for the compiled-in GS_LIB #ifdef GS_LIB static const char *const defaultPIOptions = xstr(GS_LIB); #else static const char *const defaultPIOptions = ""; #endif static char buffer[2000]; const char *PIOptions; if (verbose) errstream << endl << "Looking up specific options for the PostScript interpreter." << endl << "First trying " << lookupplace << " for common/GS_LIB" << endl; // try first registry/ini value, then GS_LIB and at last the default RSString PIOptionsfromregistry = getRegistryValue(errstream, "common", "GS_LIB"); if (PIOptionsfromregistry.value() != 0) { // 1. if (verbose) errstream << "found value in " << lookupplace << endl; strncpy_s(buffer,sizeof(buffer), PIOptionsfromregistry.value(),sizeof(buffer)); // delete[]PIOptionsfromregistry; PIOptions = buffer; } else { //2.-4. PIOptions = getOSspecificOptions(verbose, errstream, buffer,sizeof(buffer) ); if (PIOptions == NULL) { //3. if (verbose) errstream << "still not found an entry - now trying GS_LIB env var." << endl; PIOptions = getenv("GS_LIB"); if (PIOptions == NULL) { //4. if (verbose) errstream << "GS_LIB not set" << endl; if (strlen(defaultPIOptions) > 0) { PIOptions = defaultPIOptions; if (verbose) errstream << "nothing found so far, trying default: " << defaultPIOptions<< endl; } else { PIOptions = 0; } } else { if (verbose) errstream << "GS_LIB is set to:" << PIOptions << endl; } } } if (PIOptions && (PIOptions[0] != '-') && (PIOptions[1] != 'I')) { static char returnbuffer[2000]; returnbuffer[2000-1]=0; strncpy_s(returnbuffer,sizeof(returnbuffer)-1, "-I",sizeof(returnbuffer)-1); strcat_s(returnbuffer,sizeof(returnbuffer)-1, PIOptions); PIOptions = returnbuffer; } if (verbose ) errstream << "Value returned:" << (PIOptions ? PIOptions : "") << endl << endl; return PIOptions; } const char *whichPINoVerbose(ostream & errstream, const char *gsregbase, const char * gsToUse) { return whichPI(errstream, 0, gsregbase, gsToUse); } pstoedit-3.62/src/cbstream.cpp0000644000175500010010000000560712137231657013324 00000000000000/* callbackBuffer : This file is part of pstoedit streambuf that writes the data to a user defineable call back function Copyright (C) 1998 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. This code is mainly based on the example given in: The GNU C++ Iostream Library Using the streambuf Layer Simple output re-direction by redefining overflow */ #if defined(_WIN32) || defined(__OS2__) // this code is only needed under WIN32 // ...and under OS/2 #include "cppcomp.h" #include "cbstream.h" #include I_string_h int callbackBuffer::underflow(void) { const char message[] = "unexpected call to callbackbuf::underflow()\n"; (void) write_to_callback(message, strlen(message)); return 0; } write_callback_type *callbackBuffer::set_callback(void *cb_data_p, write_callback_type * new_cb) { write_callback_type *old_cb = write_callback; write_callback = new_cb; cb_data = cb_data_p; return old_cb; } int callbackBuffer::write_to_callback(const char *text, size_t length) { if (write_callback) { return (*write_callback) (cb_data, text, (int) length); // cast to int - see comment in cbstream.h } else { return 0; } } int callbackBuffer::sync() { streamsize n = pptr() - pbase(); return (n && write_to_callback(pbase(), (unsigned int) n) != n) ? EOF : 0; } int callbackBuffer::overflow(int ch) { streamsize n = pptr() - pbase(); if (n && sync()) return EOF; if (ch != EOF) { char cbuf[1]; cbuf[0] = (char) ch; if (write_to_callback(cbuf, 1) != 1) return EOF; } pbump(-n); // Reset pptr(). return 0; } streamsize callbackBuffer::xsputn(const char *text, streamsize n) { return sync() == EOF ? 0 : write_to_callback(text, (unsigned int) n); } // #define TEST #ifdef TEST int write_callback_test(void *cb_data, const char *text, int length) /* Returns number of characters successfully written */ { // cout << "@@@@" << length << endl; unsigned int count = length; while (count) { cout << *text; text++; count--; } return length; } int main(int argc, char **argv) { callbackBuffer wbuf(0, write_callback_test); // ostream wstr(&wbuf); cerr = &wbuf; cerr << "Hello world!\n" << endl; wbuf.set_callback(0, 0); cerr << "Hello world!\n"; return 0; } #endif #endif pstoedit-3.62/src/cbstream.h0000644000175500010010000000474612137226527012774 00000000000000#ifndef CBSTREAM_H #define CBSTREAM_H /* callbackBuffer : This file is part of pstoedit streambuf that writes the data to a user defineable call back function Copyright (C) 1998 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. This code is mainly based on the example given in: The GNU C++ Iostream Library Using the streambuf Layer Simple output re-direction by redefining overflow */ #ifndef cppcomp_h #include "cppcomp.h" #endif #include I_iostream #include I_string_h #include I_streamb USESTD #if !defined(HAVESTL) && !defined(__GNUG__) // this should be defined for all ANSI compilers in iostream // but this is also already defined in old GNU compilers typedef int streamsize; // oder long ?? MSVC likes int #endif #if defined(_WIN32) || defined(__OS2__) typedef int (__stdcall write_callback_type) (void * cb_data, const char* text, int length); // length is int and not unsigned long because of gs-api #else typedef int ( write_callback_type) (void * cb_data, const char* text, int length); #endif //lint !e1712 // no default ctor class callbackBuffer : public streambuf { public: callbackBuffer(void * cb_data_p, write_callback_type* wcb) : cb_data(cb_data_p), write_callback(wcb) {} write_callback_type * set_callback(void * cb_data_p,write_callback_type* new_cb); int write_to_callback(const char* text, size_t length); protected: int sync(); int overflow(int ch); int underflow(void); // Defining xsputn is an optional optimization. // (streamsize was recently added to ANSI C++, not portable yet.) streamsize xsputn(const char* text, streamsize n); private: void * cb_data; write_callback_type * write_callback; callbackBuffer(const callbackBuffer &); // not defined const callbackBuffer & operator = (const callbackBuffer &); // not defined }; #endif pstoedit-3.62/src/cmdmain.cpp0000644000175500010010000000263412137224252013122 00000000000000/* cmdmain.cpp : This file is part of pstoedit main program for command line usage Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #include "pstoedit.h" #include I_iostream int main(int argc, const char *const argv[]) { #if defined(_WIN32) || defined (__OS2__) if (!pstoedit_checkversion(301)) return 1; if (!getenv("PSTOEDITUSEGSEXE")) setPstoeditsetDLLUsage(true); // use the gs DLL in stand-alone mode #else ignoreVersionCheck(); #endif // on UNIX like systems, we can use cerr as error stream // except for some help/diag messages which are preferred on cout useCoutForDiag(true); const int result = pstoeditwithghostscript(argc, argv, cerr); return result; } pstoedit-3.62/src/cppcomp.h0000644000175500010010000002036312137224255012622 00000000000000#ifndef cppcomp_h #define cppcomp_h /* cppcomp.h : This file is part of pstoedit header declaring compiler dependent stuff Copyright (C) 1998 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef HAVE_CONFIG_H #include "pstoedit_config.h" #endif #ifdef _MSC_VER # ifndef DLLEXPORT # define DLLEXPORT __declspec( dllexport ) # endif #else # define DLLEXPORT #endif #ifdef _AIX #define _unix #endif #if defined (_MSC_VER) && (_MSC_VER >= 1100) // MSVC 5 and 6 have ANSI C++ header files, but the compilation // is much slower and object files get bigger. // add other compiler that support STL and the ANSI C++ standard here // 1100 means : compiler v 11 which is MSVC 5 // 1200 - VS 6 // 1300 - VS 7 (2002) // 1400 - VS 8 (2005) // NOTE: If your compiler or installation does not come with // an installation of the STL, just umcomment the next line #define HAVESTL #define HAVETYPENAME // now this is again commented out by default, since now all // drivers can be compiled without the STL #define USE_NEWSTRSTREAM #define HAVEAUTOPTR #endif #if defined (FORCESTLUSAGE) // #define HAVESTL //wogl test #define HAVETYPENAME #endif #if defined (__GNUG__) && (__GNUC__>=3) // GNU 3.0 compiles in HAVESTL mode. // but is sooooooooooo slow // further, I had some crashes in this mode which don't occur in the traditional mode // so I finally commented this out again and made the code compile also in traditional mode #define HAVESTL #define HAVETYPENAME #define HAVEAUTOPTR //#if (__GNUC__>=3) #define USE_NEWSTRSTREAM //#endif //#include // really should have autoconf figure this out //#include //#include #endif #ifdef __SUNPRO_CC #if __SUNPRO_CC >= 0x500 #define HAVETYPENAME #if __SUNPRO_CC_COMPAT >= 5 // SUN's new compiler seems to work with STL (only) #define HAVESTL #define HAVEAUTOPTR #ifndef INTERNALBOOL #define INTERNALBOOL #endif #else // we compile with -compat=4 #ifdef INTERNALBOOL #undef INTERNALBOOL #endif #endif #else // for the old version (CC 4.x) #endif #endif #ifndef HAVETYPENAME #define typename #endif // // Note: for MSVC the usage of precompiled headers has to be turned // off, otherwise compilation fails within the stdio. (the first time // it works, but not a second one) (at least with MSVC 5) // #ifdef HAVESTL #define I_fstream #define I_iomanip #define I_ios #define I_iostream #if (defined (_MSC_VER) && _MSC_VER >= 1100) // 1100 is version 5.0 #pragma warning(disable: 4786) #define I_istream #define I_ostream #define I_streamb #else #define I_istream #define I_ostream #define I_streamb #endif #ifdef USE_NEWSTRSTREAM #define I_strstream #define C_istrstream istringstream #define C_ostrstream ostringstream #else #define I_strstream #define C_istrstream istrstream #define C_ostrstream ostrstream #endif #define I_stdio #define I_stdlib #define USESTD using namespace std; #else // section for non ANSI C++ compilers #define I_fstream #define I_iomanip #define I_ios #define I_iostream #define I_istream #define I_ostream #define I_streamb #if (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) && !defined(DJGPP) #define I_strstream // next macro is to avoid usage of the above lengthy || list and because in .fl file __unix__ cannot be used sometimes because m4 // expands this sometimes to "" #define PSTOEDIT_UNIXLIKE #else #define I_strstream #endif #define C_istrstream istrstream #define C_ostrstream ostrstream #if defined (__GNUG__) || defined (BOOLDEFINED) || ( defined (_MSC_VER) && _MSC_VER >= 1100) || defined (__BCPLUSPLUS__) && __BCPLUSPLUS__ >= 0x0400 || defined (INTERNALBOOL) || defined (_BOOL_EXISTS) // no need to define bool // 1100 is version 5.0 // is for Digital Unix #else typedef int bool; const bool false = 0; const bool true = 1; #define BOOLDEFINED 1 #endif #define I_stdio #define I_stdlib #define USESTD #endif #if (defined (_MSC_VER) && _MSC_VER >= 1100) || defined (LINT) #define NOCOPYANDASSIGN(classname) \ private: \ classname(const classname&); \ const classname & operator=(const classname&); #else /* nothing - GNU has problems with this anyway. But, it doesn't harm. During compilation with VC++ potential misusages of the forbidden methods will be detected */ #define NOCOPYANDASSIGN(classname) #endif // rcw2: work round case insensitivity in RiscOS #ifdef riscos #define I_string_h "unix:string.h" #else #define I_string_h #endif // some code seems to rely on _WIN32 instead of WIN32 #if defined (WIN32) #ifndef _WIN32 #define _WIN32 WIN32 #endif #endif #ifndef NIL // 0 pointers #define NIL 0 #endif #if defined(_MSC_VER) && (_MSC_VER >= 1400) // for MS VS 8 (== cl version 14) we can use the new secure *_s string functions // for other systems we have to "emulate" them #define TARGETWITHLEN(str,len) str,len // MSVC moans: 'open': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _open. See online help for details. #define OPEN _open #define CLOSE _close #define READ _read #define STRICMP _stricmp #define FILENO _fileno #define SETMODE _setmode #define TEMPNAM _tempnam #define GETCWD _getcwd #else #include I_iostream #include I_string_h // for strlen #include I_stdlib // for exit #define OPEN open #define CLOSE close #define READ read #define STRICMP stricmp #define FILENO fileno #define SETMODE setmode #define TEMPNAM tempnam #define GETCWD getcwd USESTD // approach for emulation: // * guarantee that the result string ends with \n (array[size-1] = 0) // * if the above condition cannot be achieved - exit with error message // // the implementation is far from optimal from a performance point of view - but for pstoedit this is not critical // static inline void strncpy_s(char * de, size_t de_size, const char * so, size_t count) { const size_t sourcelen = strlen(so); size_t tobecopied = sourcelen < count ? sourcelen : count; if ( tobecopied < de_size ) { while (so && *so && (tobecopied > 0) ) { *de = *so; ++de; ++so; --tobecopied; } // does not copy final 0 *de = 0; } else { cerr << "buffer overflow in strcpy_s. Input string: '" << so << "' count: " << count << " sourcelen " << sourcelen << " buffersize " << de_size << endl; exit(1); } } static inline void strcpy_s(char * de, size_t de_size, const char * so) { strncpy_s(de, de_size, so, strlen(so) ); } static inline void strcat_s(char * de, size_t de_size, const char * so) { // copy string into de + strlen(de) const size_t already_in = strlen(de); strcpy_s(de + already_in, de_size - already_in, so); } // sprintf_s requires a second argument indicating the size of the target string // because sprintf can have any number of arguments, we cannot handle this in the // same manner as the functions above. So we need to hide/unhide this second argument // for older compilers #ifdef HAVE_SNPRINTF #define sprintf_s snprintf #define TARGETWITHLEN(str,len) str,len #else #define sprintf_s sprintf #define TARGETWITHLEN(str,len) str #endif // sscanf_s requires a size argument for output strings, unless we use "to-string", we can use sscanf // but this has to be assured in each individual case !!! // TARGETWITHLEN is not being used in the context of sscanf #define sscanf_s sscanf #endif #endif pstoedit-3.62/src/drvasy.cpp0000644000175500010010000003330612137224252013022 00000000000000/* drvASY.cpp : This file is part of pstoedit Backend for Asymptote files Contributed by: John Bowman Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_geocities.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef _MSC_VER // #define _POSIX_ // for MSVC and limits.h #endif #include "drvasy.h" // #include I_fstream #include I_stdio #include I_stdlib #include #ifndef FLT_MAX #include // Need definition of FLT_MAX #include // FLT_MAX on MSVC #endif #include // PATH_MAX for MSVC #include // Need definition of ispunct() #include #if !(defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) #define LINE_MAX 2048 // for MSVC #endif // Constructor -- Initialize variables and take other per-document actions drvASY::derivedConstructor(drvASY): constructBase, // Initialize member variables prevFontName(""), prevFontWeight(""), prevR(0.0f), prevG(0.0f), prevB(0.0f), // Black prevFontAngle(FLT_MAX), prevFontSize(-1.0), prevLineWidth(0.0f), prevLineCap(1), // Round line caps prevLineJoin(1), // Round joins prevDashPattern(""), // Solid lines fillmode(false), clipmode(false), evenoddmode(false), firstpage(true), imgcount(0), level(0) { // Output copyright information outf << "// Converted from PostScript(TM) to Asymptote by pstoedit\n" << "// Asymptote 1.00 (or later) backend contributed by John Bowman\n" << "// pstoedit is Copyright (C) 1993 - 2013 Wolfgang Glunz" << " \n\n"; outf << "import pstoedit;" << endl; } // Destructor -- Tell Asymptote to end the file drvASY::~drvASY() { options=0; } void drvASY::save() { while(gsavestack.size() && gsavestack.front()) { gsavestack.pop_front(); outf << "gsave();" << endl; ++level; clipstack.push_back(false); } } void drvASY::restore() { while(gsavestack.size() && !gsavestack.front()) { gsavestack.pop_front(); while(clipstack.size() > 0) { if(clipstack.back()) outf << "endclip();" << endl; clipstack.pop_back(); } outf << "grestore();" << endl; if(level > 0) --level; } } // Output a path void drvASY::print_coords() { bool withinpath = false; // true=already started plotting points unsigned int pointsOnLine = 0;// Number of points on the current output line bool havecycle=false; bool firstpoint=false; save(); if (fillmode || clipmode) { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: if(withinpath) { if(firstpoint) { firstpoint=false; // ignore a spurious moveto unsigned int next=n+1; if(next == numberOfElementsInPath()) break; Dtype nexttype=pathElement(next).getType(); if(nexttype == moveto || nexttype == closepath) break; } } else { firstpoint=true; if(clipmode) { outf << "beginclip("; bool pop=clipstack.size() > 0; if(pop) { clipstack.pop_back(); clipstack.push_back(true); } } else outf << "fill("; } case lineto: { const Point & p = elem.getPoint(0); if(elem.getType() == lineto) { if (withinpath) { outf << "--"; } else { cerr << "lineto without a moveto; ignoring" << endl; break; } } else { if (withinpath) { outf << "^^"; firstpoint=true; } } outf << '(' << (p.x_ + x_offset) << ',' << (p.y_ + y_offset) << ')'; withinpath = true; havecycle=false; pointsOnLine++; } break; case closepath: outf << "--cycle"; havecycle=true; break; case curveto: { if (!withinpath) { cerr << "curveto without a moveto; ignoring" << endl; break; } const Point & p0 = elem.getPoint(0); outf << "..controls (" << (p0.x_ + x_offset) << ',' << (p0.y_ + y_offset) << ") and ("; const Point & pt1 = elem.getPoint(1); outf << (pt1.x_ + x_offset) << ',' << (pt1.y_ + y_offset) << ")..("; const Point & pt2 = elem.getPoint(2); outf << (pt2.x_ + x_offset) << ',' << (pt2.y_ + y_offset) << ')'; pointsOnLine += 3; withinpath = true; havecycle=false; } break; default: errf << "\t\tFatal: unexpected path element in drvasy" << endl; abort(); break; } if (pointsOnLine >= 3) { outf << "\n\t"; pointsOnLine = 0; } } if (withinpath) { // Finish the final path if(!havecycle) outf << "--cycle"; if(evenoddmode) outf << ",currentpen+evenodd"; outf << ");" << endl; } } else { // Stroking, not filling for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: if(!withinpath) outf << "draw("; case lineto: { const Point & p = elem.getPoint(0); if(elem.getType() == lineto) { if (withinpath) { outf << "--"; } else { cerr << "lineto without a moveto; ignoring" << endl; break; } } else { if (withinpath) outf << "^^"; } outf << '(' << (p.x_ + x_offset) << ',' << (p.y_ + y_offset) << ')'; withinpath = true; pointsOnLine++; } break; case closepath: outf << "--cycle);" << endl; withinpath = false; pointsOnLine = 0; break; case curveto: { if (!withinpath) { cerr << "curveto without a moveto; ignoring" << endl; break; } const Point & p0 = elem.getPoint(0); outf << "..controls (" << (p0.x_ + x_offset) << ',' << (p0.y_ + y_offset) << ") and ("; const Point & pt1 = elem.getPoint(1); outf << (pt1.x_ + x_offset) << ',' << (pt1.y_ + y_offset) << ")..("; const Point & pt2 = elem.getPoint(2); outf << (pt2.x_ + x_offset) << ',' << (pt2.y_ + y_offset) << ')'; pointsOnLine += 3; withinpath = true; } break; default: errf << "\t\tFatal: unexpected path element in drvasy" << endl; abort(); break; } if (pointsOnLine >= 3 && n + 1 < numberOfElementsInPath() && pathElement(n + 1).getType() != moveto) { outf << "\n\t"; pointsOnLine = 0; } } if (withinpath) { // Finish the final path outf << ");" << endl; } } restore(); } // Each page will produce a different figure void drvASY::open_page() { if(firstpage) firstpage=false; else outf << "newpage();" << endl; } void drvASY::close_page() { } void drvASY::show_image(const PSImage & imageinfo) { restore(); if (outBaseName == "" ) { errf << "images cannot be handled via standard output. Use an output file" << endl; return; } imgcount++; Point ll,ur; imageinfo.getBoundingBox(ll,ur); ostringstream buf; buf << outBaseName << "." << imgcount << ".eps"; outf << "label(graphic(\"" << buf.str() << "\",\"bb=" << ll.x_ << " " << ll.y_ << " " << ur.x_ << " " << ur.y_ << "\"),(" << ll.x_ << "," << ll.y_ << "),align);" << endl; // Try to draw image in a separate layer. if(level == 0) outf << "layer();" << endl; ofstream outi(buf.str().c_str()); if (!outi) { errf << "Could not open file " << buf.str() << " for output"; exit(1); } imageinfo.writeEPSImage(outi); (void)remove(imageinfo.FileName.value()); outi.close(); } // Output a text string void drvASY::show_text(const TextInfo & textinfo) { restore(); // Change fonts string thisFontName(textinfo.currentFontName.value()); string thisFontWeight(textinfo.currentFontWeight.value()); const double ps2tex=72.27/72.0; if (thisFontName != prevFontName || thisFontWeight != prevFontWeight) { if(textinfo.is_non_standard_font) { size_t n = thisFontName.length(); for(size_t i=0; i < n; i++) thisFontName[i] = (char) tolower(thisFontName[i]); outf << "textpen += font(\"" << thisFontName << "\""; if(textinfo.currentFontSize > 0) outf << "," << textinfo.currentFontSize*ps2tex; outf << ");" << endl; } else { outf << "textpen += " << thisFontName << "("; if(thisFontWeight == string("Bold")) outf << "\"b\""; else if(thisFontWeight == string("Condensed")) outf << "\"c\""; outf << ");" << endl; } prevFontName = thisFontName; prevFontWeight = thisFontWeight; } // Change colors if (textinfo.currentR != prevR || textinfo.currentG != prevG || textinfo.currentB != prevB) { outf << "textpen=0*textpen+rgb(" << textinfo.currentR << "," << textinfo.currentG << "," << textinfo.currentB << ");" << endl; prevR = textinfo.currentR; prevG = textinfo.currentG; prevB = textinfo.currentB; } // Change font size if (textinfo.currentFontSize != prevFontSize) { if (textinfo.currentFontSize > 0) { outf << "textpen += fontsize(" << textinfo.currentFontSize*ps2tex << ");" << endl; prevFontSize = textinfo.currentFontSize; } else { if (Verbose()) errf << "warning: font size of " << textinfo. currentFontSize << "pt encountered; ignoring" << endl; } } // Change rotation if (textinfo.currentFontAngle != prevFontAngle) prevFontAngle = textinfo.currentFontAngle; // Output the text using macros defined in the constructor outf << "label("; if(prevFontAngle != 0.0) outf << "rotate(" << prevFontAngle << ")*("; bool texify=false; bool quote=false; const char *c=textinfo.thetext.value(); if(*c) for (; *c; c++) { if (*c >= ' ' && *c != '\\' && *c <= '~') { if(!texify) { if(quote) outf << "\"+"; else quote=true; outf << "texify(\""; texify=true; } if (*c == '"') outf << "\\\""; else outf << (*c); } else { if(texify) { outf << "\")+"; texify=false; quote=false; } if(!quote) { outf << "\""; quote=true; } outf << "\\char" << (int) *c; } } else outf << "\"\""; if(quote) outf << "\""; if(texify) outf << ")"; if(prevFontAngle != 0.0) outf << ")"; outf << ",(" << textinfo.x << ',' << textinfo.y << "),align,textpen);" << endl; } // Output a path void drvASY::show_path() { // Change colors if (currentR() != prevR || currentG() != prevG || currentB() != prevB) { prevR = currentR(); prevG = currentG(); prevB = currentB(); outf << "currentpen=0*currentpen+rgb(" << prevR << "," << prevG << "," << prevB << ");" << endl; } // Change line width float linewidth=currentLineWidth(); // Fix up zero linewidths resulting from a dtransform truncate idtransform if(linewidth == 0.0) linewidth=0.5f; if(linewidth != prevLineWidth) { prevLineWidth = linewidth; outf << "currentpen += " << prevLineWidth << "bp;" << endl; } // Change line cap if (currentLineCap() != prevLineCap) { prevLineCap = currentLineCap(); outf << "currentpen += "; switch (prevLineCap) { case 0: outf << "squarecap;" << endl; break; case 1: outf << "roundcap;" << endl; break; case 2: outf << "extendcap;" << endl; break; default: errf << "\t\tFatal: Unknown linecap \"" << prevLineCap << '"' << endl; abort(); break; } } // Change line join if (currentLineJoin() != prevLineJoin) { prevLineJoin = currentLineJoin(); outf << "currentpen += "; switch (prevLineJoin) { case 0: outf << "miterjoin;" << endl; break; case 1: outf << "roundjoin;" << endl; break; case 2: outf << "beveljoin;" << endl; break; default: errf << "\t\tFatal: Unknown linejoin \"" << prevLineJoin << '"' << endl; abort(); break; } } // Change dash pattern string currentDashPattern = dashPattern(); if (currentDashPattern != prevDashPattern) { prevDashPattern = currentDashPattern; size_t p=currentDashPattern.find('['); if(p < string::npos) currentDashPattern[p]='\"'; p=currentDashPattern.find(']'); if(p < string::npos) { currentDashPattern[p]='\"'; size_t n=currentDashPattern.length(); p++; if(p < n) (void)currentDashPattern.erase(p,n-p); } outf << "currentpen += linetype(" << currentDashPattern << ",false);" << endl; } // Determine the fill mode evenoddmode=(currentShowType() == drvbase::eofill); fillmode = (evenoddmode || currentShowType() == drvbase::fill); if (!fillmode && currentShowType() != drvbase::stroke) { errf << "\t\tFatal: unexpected show type " << (int) currentShowType() << " in drvasy" << endl; abort(); } // Draw the path print_coords(); } void drvASY::ClipPath(cliptype type) { clipmode=true; evenoddmode=(type == drvbase::eoclip); print_coords(); clipmode=false; } void drvASY::Save() { gsavestack.push_back(true); } void drvASY::Restore() { gsavestack.push_back(false); } static DriverDescriptionT < drvASY > D_asy("asy", "Asymptote Format", "","asy", true, // if backend supports subpaths true, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::png, // support for PNG file images DriverDescription::normalopen, true, // supports multiple pages true /*clipping */ ); pstoedit-3.62/src/drvasy.h0000644000175500010010000000422612137224255012471 00000000000000#ifndef __drvASY_h #define __drvASY_h /* drvasy.h : This file is part of pstoedit Backend for Asymptote files Contributed by: John Bowman Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #ifdef HAVESTL #include // C++ string class #include #else typedef RSString string; #endif class drvASY : public drvbase { public: derivedConstructor(drvASY); ~drvASY(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() {} }*options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); void show_image(const PSImage & imageinfo); void ClipPath(cliptype); void Save(); void Restore(); private: void print_coords(); void save(); void restore(); // Previous values of graphics state variables string prevFontName; string prevFontWeight; float prevR, prevG, prevB; float prevFontAngle; float prevFontSize; float prevLineWidth; unsigned int prevLineCap; unsigned int prevLineJoin; string prevDashPattern; // Set to true for fill or eofill, false for stroke bool fillmode; // Set to true for clip or eoclip, false otherwise bool clipmode; // Set to true for eofill or eoclip, false otherwise bool evenoddmode; // Set to true on first page, false otherwise bool firstpage; int imgcount; unsigned int level; // gsave nesting level std::list clipstack; std::list gsavestack; }; #endif pstoedit-3.62/src/drvbase.cpp0000644000175500010010000013176512137235716013157 00000000000000/* drvbase.cpp : This file is part of pstoedit Basic, driver independent output routines Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #include I_stdlib #include I_iostream //#include I_iomanip #include I_string_h #include I_strstream #include #ifndef miscutil_h #include "miscutil.h" #endif static void splitFullFileName(const char *const fullName, RSString& pathName, RSString& baseName, RSString& fileExt) { if (fullName == NIL) return; char *fullName_T = cppstrdup(fullName); char *baseName_T = 0; #if defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) char *c = strrchr(fullName_T, '/'); #else char *c = strrchr(fullName_T, '\\'); #endif if (c != NIL) { baseName_T = cppstrdup(c + 1); *(c + 1) = 0; pathName = fullName_T; } else { baseName_T = cppstrdup(fullName_T); pathName = ""; } c = strrchr(baseName_T, '.'); if (c != NIL) { fileExt = (c + 1); *c = 0; baseName = baseName_T; } else { fileExt = ""; baseName = baseName_T; } delete[]baseName_T; delete[]fullName_T; } drvbase::drvbase(const char *driveroptions_p, ostream & theoutStream, ostream & theerrStream, const char *nameOfInputFile_p, const char *nameOfOutputFile_p, PsToEditOptions & globaloptions_p, const DriverDescription * Pdriverdesc_p) : // constructor Pdriverdesc(Pdriverdesc_p), DOptions_ptr(Pdriverdesc_p->createDriverOptions()), // totalNumberOfPages(0), // bboxes(0), outf(theoutStream), errf(theerrStream), inFileName(nameOfInputFile_p), outFileName(nameOfOutputFile_p), outDirName(""), outBaseName(""), d_argc(0), d_argv(0), globaloptions(globaloptions_p), // set some common defaults currentDeviceHeight(792.0f ), // US Letter currentDeviceWidth(612.0f ), // US Letter x_offset(0.0f), y_offset(0.0f), currentPageNumber(0), domerge(false), defaultFontName(0), ctorOK(true), saveRestoreInfo(NIL), currentSaveLevel(&saveRestoreInfo), page_empty(true), driveroptions(0), // default for PI1 and PI2 and clippath currentPath(0), last_currentPath(0), outputPath(0), lastPath(0) // default for textInfo_ and lasttextInfo_ { // verbose = (getenv("PSTOEDITVERBOSE") != 0); if (verbose) { errf << "verbose mode turned on\n" << endl; } if (nameOfOutputFile_p) { RSString extension; // not needed splitFullFileName(nameOfOutputFile_p, outDirName, outBaseName, extension ); if (verbose) { errf << "nameofOutputFile: '" << nameOfOutputFile_p; errf << "' outDirName: '" << outDirName; errf << "' outBaseName: '" << outBaseName; errf << "'" << endl; } } // preparse driveroptions and build d_argc and d_argv if (driveroptions_p) { #if 1 Argv driverargs; (void) driverargs.parseFromString(driveroptions_p); d_argc = driverargs.argc; d_argv = new const char *[d_argc + 2]; // 1 more for the argv[0] d_argv[0] = cppstrdup(Pdriverdesc_p->symbolicname); d_argc = 1; for (unsigned int a = 0; a < driverargs.argc; a++) { d_argv[d_argc] = cppstrdup(driverargs.argv[a]); d_argc++; } d_argv[d_argc] = 0; #else driveroptions = cppstrdup(driveroptions_p); //C_istrstream optstream(driveroptions, strlen(driveroptions)); C_istrstream optstream(driveroptions); //, strlen(driveroptions)); const long startOfStream = optstream.tellg(); char currentarg[100]; // first count number of arguments while (!optstream.eof()) { (void) optstream.width(sizeof(currentarg)); optstream >> currentarg; d_argc++; } d_argv = new const char *[d_argc + 2]; // 1 more for the argv[0] // now fill d_args array; (void) optstream.seekg(startOfStream); // reposition to start optstream.clear(); // fill argv[0] with driver name (to be similar with Unix) d_argv[0] = cppstrdup(Pdriverdesc_p->symbolicname); d_argc = 1; while (!optstream.eof()) { optstream >> currentarg; if (strlen(currentarg) > 0) { d_argv[d_argc] = cppstrdup(currentarg); d_argc++; } } d_argv[d_argc] = 0; #endif if (verbose) { errf << "got " << d_argc << " driver argument(s)" << endl; for (unsigned int i = 0; i < d_argc; i++) { errf << "Driver option " << i << ":" << d_argv[i] << endl; } } } // now call the driver specific option parser. if (d_argc>0) { if (DOptions_ptr) { //debug errf << "DOptions_ptr: " << (void*) DOptions_ptr << endl; const unsigned int remaining = DOptions_ptr->parseoptions(errf,d_argc,d_argv); if ((remaining > 0) && !DOptions_ptr->expectUnhandled) { errf << "the following " << remaining << " options could not be handled by the driver: " << endl; for (unsigned int i = 0; i < remaining; i++) { errf << DOptions_ptr->unhandledOptions[i] << endl; } } } else { cerr << "DOptions_ptr is NIL - program flow error - contact author." << endl; } } // bboxes = new BBox[maxPages]; // init segment info for first segment // all others will be updated with each newsegment currentPath = &PI1; lastPath = &PI2; outputPath = currentPath; if ((PI1.path == 0) || (PI2.path == 0) || (clippath.path == 0)) { errf << "new failed in drvbase::drvbase " << endl; exit(1); } textInfo_.thetext.copy(""); setCurrentFontName("Courier", true); setCurrentFontFamilyName("Courier"); setCurrentFontWeight("Regular"); setCurrentFontFullName("Courier"); setCurrentFontSize(10.0f); mergedTextInfo = textInfo_; // initial value - empty buffer lastTextInfo_ = textInfo_; lastTextInfo_.currentFontSize = -textInfo_.currentFontSize; // to force a new font the first time. lastTextInfo_.currentR = textInfo_.currentR + 1; // to force new color } drvbase::~drvbase() { currentPath = 0; lastPath = 0; outputPath = 0; if (d_argv) { for (unsigned int i = 0; i < d_argc; i++) { delete[](d_argv[i]); d_argv[i] = 0; } delete[]d_argv; d_argv = NIL; } if (driveroptions) { delete[]driveroptions; driveroptions = NIL; } // delete[] bboxes; bboxes = NIL; // delete[]outDirName; // outDirName = NIL; // delete[]outBaseName; // outBaseName = NIL; Pdriverdesc = NIL; delete DOptions_ptr; DOptions_ptr = NIL; if (currentSaveLevel->previous != NIL) { while (currentSaveLevel->previous != NIL) { currentSaveLevel = currentSaveLevel->previous; delete currentSaveLevel->next; } } currentSaveLevel = 0; defaultFontName = NIL; last_currentPath = NIL; } const RSString & drvbase::getPageSize() const { return globaloptions.outputPageSize(); } const BBox & drvbase::getCurrentBBox() const { if ( verbose ) cout << " get getCurrentBBox for page: " << currentPageNumber << " of " << totalNumberOfPages() << endl; if ((totalNumberOfPages() > 0) && (currentPageNumber <= totalNumberOfPages())) { // page numbers start from 1. return bboxes()[currentPageNumber > 0 ? (currentPageNumber - 1) : 0]; } else { static BBox dummy; return dummy; } } void drvbase::startup(bool mergelines) { domerge = false; // default if (mergelines) { if (Pdriverdesc->backendSupportsMerging) { domerge = true; } else { errf << "the selected backend does not support merging, -mergelines ignored" << endl; } } } void drvbase::finalize() { // needed because base destructor is called after derived destructor outputPath->clear(); // define past the end path as empty // close page (if no explicit showpage was done) showpage(); } void drvbase::showpage() { flushOutStanding(); // dump last path if (!page_empty) { close_page(); } page_empty = true; } bool drvbase::pathsCanBeMerged(const PathInfo & path1, const PathInfo & path2) const { // // two paths can be merged if one of them is a stroke and the // other a fill or eofill AND // all pathelements are the same // // This is a default implementation which allows only solid edges since // most backends support only such edges. // If a backend allows more, it can overwrite this function // if (((path1.currentShowType == stroke && path1.currentLineType == solid && ((path2.currentShowType == fill) || (path2.currentShowType == eofill))) || (path2.currentShowType == stroke && path2.currentLineType == solid && ((path1.currentShowType == fill) || (path1.currentShowType == eofill)))) && (path1.numberOfElementsInPath == path2.numberOfElementsInPath)) { //errf << "Pathes seem to be mergeable" << endl; for (unsigned int i = 0; i < path1.numberOfElementsInPath; i++) { const basedrawingelement *bd1 = path1.path[i]; const basedrawingelement *bd2 = path2.path[i]; // if (! *(path1.path[i]) == *(path2.path[i]) ) return 0; //errf << "comparing " << *bd1 << " with " << *bd2 << endl; const bool result = (*bd1 == *bd2); if (verbose) errf << "comparing " << *bd1 << " with " << *bd2 << " results in " << (int) result << endl; if (!result) return false; } if (verbose) errf << "Pathes are mergeable" << endl; return true; } else { if (verbose) errf << "Pathes are not mergable:" << " PI1 st " << (int) path1.currentShowType << " PI1 lt " << (int) path1.currentLineType << " PI1 el " << path1.numberOfElementsInPath << " PI2 st " << (int) path2.currentShowType << " PI2 lt " << (int) path2.currentLineType << " PI2 el " << path2.numberOfElementsInPath << endl; return false; } } const basedrawingelement & drvbase::pathElement(unsigned int index) const { return *(outputPath->path[index + outputPath->subpathoffset]); } bool basedrawingelement::operator == (const basedrawingelement & bd2) const { if (this->getType() != bd2.getType()) { return false; } else { for (unsigned int i = 0; i < this->getNrOfPoints(); i++) { if (!(this->getPoint(i) == bd2.getPoint(i))) return false; } } return true; } bool drvbase::textIsWorthToPrint(const RSString& thetext) const { // check whether it contains just blanks. This makes // problems, e.g. with the xfig backend. const char *cp = thetext.value(); for (size_t i = thetext.length(); i>0; i--) if (*cp++ != ' ') return true; return false; } bool drvbase::textCanBeMerged(const TextInfo & text1, const TextInfo & text2) const { return ( (text1.currentFontName == text2.currentFontName) && (text1.currentFontFamilyName == text2.currentFontFamilyName) && (text1.currentFontFullName == text2.currentFontFullName) && (text1.currentFontWeight == text2.currentFontWeight) && (text1.currentFontSize == text2.currentFontSize) && (text1.currentFontAngle == text2.currentFontAngle) && (text1.currentR == text2.currentR) && (text1.currentG == text2.currentG) && (text1.currentB == text2.currentB) && (fabs(text1.x - text2.x_end) < text1.currentFontSize / 10) && (fabs(text1.y - text2.y_end) < text1.currentFontSize / 10) ); // text matrix is ignored for the moment } void drvbase::show_text(const TextInfo & textinfo) { unused(&textinfo); if (Pdriverdesc->backendSupportsText) { errf << " Backends that support text need to define a show_text method " < instead of currentpath setCurrentShowType(drvbase::stroke); setCurrentLineCap(0); // 0 means "butt", i.e. no overlap setCurrentLineType(drvbase::solid); if (dx > dy) { // horizontal line const float mid = (ury+lly)/2.0f; currentPath->clear(); addtopath(new Moveto(llx-lwhalf,mid)); addtopath(new Lineto(urx+lwhalf,mid)); setCurrentLineWidth( dy+lw ); // debug cout << "rect -> horizontal line " << endl; } else { // vertical line const float mid = (urx+llx)/2.0f; currentPath->clear(); addtopath(new Moveto(mid,lly+lwhalf)); addtopath(new Lineto(mid,ury+lwhalf)); setCurrentLineWidth( dx+lw ); // debug cout << "rect -> vertical line " << endl; } currentPath = savepath; } else { // default - just write the rect as an ordinary polygon // debug cout << "rect as path " << endl; } show_path(); } void drvbase::flushTextBuffer(bool useMergeBuffer) { if (useMergeBuffer) textInfo_ = mergedTextInfo; // this is ugly, I know, but to be consistent // with other functions that use textInfo_ directly // this is needed. const TextInfo* textToBeFlushed = useMergeBuffer ? &mergedTextInfo : &textInfo_; add_to_page(); show_text(*textToBeFlushed); lastTextInfo_ = *textToBeFlushed; // save for font and color comparison } void drvbase::showOrMergeText() { flushOutStanding(flushpath); // dump last path to avoid wrong sequence of text and graphics // this flushing needs to be done in any case, even if the text is not written immediately // but instead buffered first. But otherwise, the order gets corrupted if (globaloptions.mergetext) { if (mergedTextInfo.thetext == "") { mergedTextInfo = textInfo_; // there was nothing in the buffer so far, so just place it there. // for this we need a final flush somewhere } else if (textCanBeMerged(textInfo_,mergedTextInfo)) { // text can be merged. if (verbose) { errf << "Info: merging text '" << mergedTextInfo.thetext << "' and '" << textInfo_.thetext << "'" << endl; } mergedTextInfo.thetext += textInfo_.thetext; static const RSString space(" "); (mergedTextInfo.glyphnames += space ) += textInfo_.glyphnames; mergedTextInfo.x_end = textInfo_.x_end; mergedTextInfo.y_end = textInfo_.y_end; } else { // cannot be merged, so dump text collected so far and place the new // one in the buffer for later if (textIsWorthToPrint(mergedTextInfo.thetext.value())) { TextInfo temp = textInfo_; // save "new" text in temp flushTextBuffer(true); // true -> use merge buffer mergedTextInfo = temp; // set the merge buffer to the "new" text } else { // the merge buffer was not worth to be printed so forget it and // start over with new text mergedTextInfo = textInfo_; } } } else { // always just "pass through" if it is worth to be printed if (textIsWorthToPrint(textInfo_.thetext)) { flushTextBuffer(false); // false -> use textinfo_ } } } void drvbase::pushText(const size_t len, const char *const thetext, const float x, const float y, const char * const glyphnames) { textInfo_.x = x; textInfo_.y = y; textInfo_.thetext.copy(thetext, len); textInfo_.glyphnames.copy(glyphnames ? glyphnames:""); textInfo_.currentFontUnmappedName = textInfo_.currentFontName; textInfo_.remappedfont= false; const char *remappedFontName = drvbase::theFontMapper().mapFont(textInfo_.currentFontName); // errf << " Mapping of " << textInfo_.currentFontName << " returned " << (remappedFontName ? remappedFontName:" ") << endl; if (remappedFontName) { if (verbose) { errf << "Font remapped from '" << textInfo_. currentFontName << "' to '" << remappedFontName << "'" << endl; } textInfo_.currentFontName.copy(remappedFontName); textInfo_.remappedfont= true; } showOrMergeText(); #if 0 if ((lasttextInfo_.y == textInfo_.y) && (lasttextInfo_.x_end >= textInfo_.x) && (lasttextInfo_.x < textInfo_.x) && lasttextInfo_.samefont(textInfo_)) { if (verbose) { errf << "Text overlap ! '" << lasttextInfo_.thetext. value() << "' and '" << textInfo_.thetext.value() << endl; } } #endif } static unsigned short hexdecode( char high, char low) { return 16*hextoint(high) + hextoint(low); } void drvbase::pushHEXText(const char *const thetext, const float x, const float y, const char * const glyphnames) { const size_t textlen = strlen(thetext); if (textlen) { char * decodedText = new char[ (textlen / 2 ) + 1 ]; for (unsigned int i = 0, j = 0; i < (textlen/2); i++) { decodedText[i] = (char) hexdecode(thetext[j], thetext[j+1]); j++;j++; } decodedText[textlen/2] = '\0'; pushText(textlen/2,decodedText,x,y,glyphnames); delete [] decodedText; } } void drvbase::setCurrentWidthParams(const float ax, const float ay, const int Char, const float cx, const float cy, const float x_end, const float y_end) { textInfo_.ax = ax; textInfo_.ay = ay; textInfo_.Char = Char; textInfo_.cx = cx; textInfo_.x_end = x_end; textInfo_.y_end = y_end; textInfo_.cy = cy; } void drvbase::setCurrentFontName(const char *const Name, bool is_non_standard_font) { textInfo_.currentFontName.copy(Name); textInfo_.is_non_standard_font = is_non_standard_font; } void drvbase::setCurrentFontFamilyName(const char *const Name) { textInfo_.currentFontFamilyName.copy(Name); } void drvbase::setCurrentFontFullName(const char *const Name) { textInfo_.currentFontFullName.copy(Name); } void drvbase::setCurrentFontWeight(const char *const Name) { textInfo_.currentFontWeight.copy(Name); } void drvbase::setCurrentFontSize(const float Size) { /* errf << "setting Size to " << Size << endl; */ textInfo_.currentFontSize = Size; } void drvbase::setCurrentFontAngle(float value) { textInfo_.currentFontAngle = value; } bool drvbase::is_a_rectangle() const { /* Detects the following sequences moveto lineto lineto lineto closepath or moveto lineto lineto lineto lineto (if last lineto goes to same coord as first moveto */ // cout << "Testing path " << currentNr() < 0) { pattern = patternAsSetDashString; // now get the numbers // repeat the numbers, if number of entries is odd unsigned int rep = nrOfEntries % 2; // rep is 1 for odd numbers 0 for even numbers = new float[nrOfEntries * (rep + 1)]; unsigned int cur = 0; #if 1 for (unsigned int i = 0; i <= rep; i++) { pattern = patternAsSetDashString; while ((*pattern) && (*pattern != ']')) { if (*pattern == ' ' && (*(pattern + 1) != ']')) { float f = (float) atof(pattern); numbers[cur] = f; // errf << d_numbers[cur] << endl; cur++; } pattern++; } } // if ( *(pattern+1) == ']' ) { // offset = (float) atof(pattern +2); // } if (*(pattern) == ']') { // DMB // fixed by david butterfield offset = (float) atof(pattern + 1); // DMB } #else // this is the "C++" version. But this doesn't work with the GNU library under Linux for (unsigned int i = 0; i <= rep; i++) { // on some systems istrstreams expects a non const char * // so we need to make a copy char *localpattern = new char[strlen(pattern + 1) + 1]; strcpy(localpattern, pattern + 1); // skip leading [ istrstream instream(localpattern); while (!instream.fail()) { float f; instream >> f; if (!instream.fail()) { d_numbers[cur] = f; // errf << d_numbers[cur] << endl; cur++; } } delete[]localpattern; } #endif } } DashPattern::~DashPattern() { delete[]numbers; numbers = 0; nrOfEntries = 0; } void drvbase::guess_linetype() { DashPattern dp(dashPattern()); const float *const d_numbers = dp.numbers; const int nr_of_entries = dp.nrOfEntries; drvbase::linetype curtype = solid; if (nr_of_entries > 0) { int rep = nr_of_entries % 2; // rep is 1 for odd numbers 0 for even // now guess a pattern from // solid, dashed, dotted, dashdot, dashdotdot ; // corresponding to the CGM patterns switch (nr_of_entries * (rep + 1)) { case 2: if (d_numbers[1] == 0.0f) { curtype = drvbase::solid; // if off is 0 -> solid } else if ((d_numbers[0] / d_numbers[1]) > 100) { curtype = drvbase::solid; // if on/off > 100 -> use solid } else if (d_numbers[0] < 2.0f) { // if on is < 2 then always dotted // ok we miss '. . .' curtype = drvbase::dotted; } else { curtype = drvbase::dashed; } break; case 4: if ((d_numbers[1] == 0.0f) && (d_numbers[3] == 0.0f)) { curtype = drvbase::solid; // if off is 0 -> solid } else if ((d_numbers[0] < 2.0f) || (d_numbers[2] < 2.0f)) { curtype = drvbase::dashdot; } else { curtype = drvbase::dashed; } break; case 6: if ((d_numbers[1] == 0.0f) && (d_numbers[3] == 0.0f) && (d_numbers[5] == 0.0f)) { curtype = drvbase::solid; // if off is 0 -> solid } else if ((d_numbers[0] < 2.0f) || (d_numbers[2] < 2.0f) || (d_numbers[2] < 2.0f)) { curtype = drvbase::dashdotdot; } else { curtype = drvbase::dashed; } break; default: curtype = drvbase::dashed; break; } } else { // no entry curtype = drvbase::solid; } // errf << "linetype from " << dashPattern() << " is " << curtype << endl; setCurrentLineType(curtype); } void drvbase::dumpImage() { flushOutStanding(); // dump last path to avoid wrong sequence of text and graphics add_to_page(); imageInfo.calculateBoundingBox(); show_image(imageInfo); delete[]imageInfo.data; imageInfo.nextfreedataitem = 0; imageInfo.data = 0; } unsigned int drvbase::nrOfSubpaths() const { unsigned int nr = 0; for (unsigned int n = 0; n + 1 < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); if (elem.getType() == moveto) nr++; } return nr; } void drvbase::dumpRearrangedPathes() { // Count the subpaths unsigned int numpaths = nrOfSubpaths(); if (verbose) errf << "numpaths: " << numpaths << endl; // Rearrange the path if necessary if ((numpaths > 1) && (currentLineWidth() == 0.0) && (currentShowType() != drvbase::stroke)) { if (verbose) errf << "Starting rearrangment of subpaths" << endl; outputPath->rearrange(); numpaths = nrOfSubpaths(); } if (!numpaths) numpaths = 1; const unsigned int origCount = numberOfElementsInPath(); unsigned int starti = 0; for (unsigned int i = 0; i < numpaths; i++) { unsigned int endi = starti; outputPath->subpathoffset = 0; for ( ; ; ) { // while true but without compiler warning // Find the next end index endi++; if (endi >= origCount) break; else if (pathElement(endi).getType() == moveto) break; } if (endi <= origCount) { if (verbose) errf << "dumping subpath from " << starti << " to " << endi << endl; outputPath->subpathoffset = starti; outputPath->numberOfElementsInPath = endi - starti; show_path(); // from start to end } starti = endi; } outputPath->numberOfElementsInPath = origCount; outputPath->subpathoffset = 0; } bool drvbase::close_output_file_and_reopen_in_binary_mode() { if (Verbose()) cerr << "begin close_output_file_and_reopen_in_binary_mode" << endl; if (outFileName.value() || (&outf != &cout) ) // output is to a file, and outf is not cout { ofstream *outputFilePtr = (ofstream *) (& outf); // ofstream *outputFilePtr = dynamic_cast (& outf); //dbg cerr << "outputfileptr = " << (void*) outputFilePtr << " outf " << (void*) (&outf)<< endl; outputFilePtr->close(); if (Verbose()) cerr << "after close " << endl; #if (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) && !defined(DJGPP) // binary is not available on UNIX, only on PC outputFilePtr->open(outFileName.value(), ios::out); #else // use redundant ios::out because of bug in djgpp outputFilePtr->open(outFileName.value(), ios::out | ios::binary); #endif if (Verbose()) cerr << "after open " << endl; return true; } else { cerr << "Error: This driver cannot write to stdout since it writes binary data " << endl; return false; } // return 0; // not reached - but to make some compilers happy } void drvbase::beginClipPath() { // now we start a clippath, so we need to dump // all previous pathes flushOutStanding(); last_currentPath = currentPath; currentPath = &clippath; outputPath = currentPath; setCurrentShowType(drvbase::stroke); } void drvbase::endClipPath(cliptype clipmode) { add_to_page(); ClipPath(clipmode); clippath.clear(); currentPath = last_currentPath; outputPath = currentPath; } // default versions // virtual void drvbase::ClipPath(cliptype /* clipmode */ ) { } // virtual void drvbase::Save() { } // virtual void drvbase::Restore() { } void drvbase::flushOutStanding( flushmode_t flushmode ) { switch ( flushmode ) { case flushall: // this needs to be fixed concerning the ordering (which was first - the text or the path) flushOutStanding(flushpath); flushOutStanding(flushtext); break; case flushtext: if (textIsWorthToPrint(mergedTextInfo.thetext.value())) { flushTextBuffer(true); mergedTextInfo.thetext=""; // clear the merge buffer } break; case flushpath: dumpPath(false); // false -> no flush text break; default: break; } } void drvbase::dumpPath(bool doFlushText) { if (doFlushText) flushOutStanding(flushtext); // flush text, so merge is not supported in case of // text path text sequence guess_linetype(); // needs to be done here, because we must write to currentpath #ifdef fixlater // this does not work as it is at the moment since // * it changes the showtype also for subsequent segments which might have // more than 2 points AND // * it is not valid, if the only element (besides moveto) is a curveto. if (currentPath->numberOfElementsInPath == 2) { // a polygon with two points is drawn as a line // PROBLEM ! This resetting has an impact on the subsequent segments // if subpathes are not supported by the backend !!!! currentPath->isPolygon = false; currentPath->currentShowType = drvbase::stroke; } #endif if (currentPath->currentShowType != drvbase::stroke) { /* don't show border with fill */ setCurrentLineWidth(0.0f); } if (domerge && pathsCanBeMerged(PI1, PI2)) { // make PI1 the outputPath and clear PI2 if (verbose) { errf << "Path " << PI1.nr << " type " << (int) PI1.currentShowType << endl; errf << PI1.fillR << " " << PI1.fillG << " " << PI1.fillB << endl; errf << PI1.edgeR << " " << PI1.edgeG << " " << PI1.edgeB << endl; errf << PI1.currentLineWidth << endl; errf << "Path " << PI2.nr << " type " << (int) PI2.currentShowType << endl; errf << PI2.fillR << " " << PI2.fillG << " " << PI2.fillB << endl; errf << PI2.edgeR << " " << PI2.edgeG << " " << PI2.edgeB << endl; errf << PI2.currentLineWidth << endl; errf << " have been merged\n"; } // merge PI2 into PI1 if (PI1.currentShowType == stroke) { // PI2 is the fill PI1.currentShowType = PI2.currentShowType; PI1.fillR = PI2.fillR; PI1.fillG = PI2.fillG; PI1.fillB = PI2.fillB; } else { // PI1 is the fill, so copy the line parameters from PI2 PI1.currentLineWidth = PI2.currentLineWidth; PI1.edgeR = PI2.edgeR; PI1.edgeG = PI2.edgeG; PI1.edgeB = PI2.edgeB; } if (verbose) { errf << " result is \n"; errf << "Path " << PI1.nr << " type " << (int) PI1.currentShowType << endl; errf << PI1.fillR << " " << PI1.fillG << " " << PI1.fillB << endl; errf << PI1.edgeR << " " << PI1.edgeG << " " << PI1.edgeB << endl; errf << PI1.currentLineWidth << endl; } outputPath = &PI1; PI1.pathWasMerged = true; PI2.clear(); } else { outputPath = lastPath; } if (numberOfElementsInPath() > 0) { // nothing to do for empty pathes // pathes may be empty due to a merge operation if (verbose) { errf << "working on"; switch (currentShowType()) { case drvbase::stroke: errf << " stroked "; break; case drvbase::fill: errf << " filled "; break; case drvbase::eofill: errf << " eofilled "; break; default: break; } errf << "path " << currentNr() << " with " << numberOfElementsInPath() << " elements" << endl; } if (numberOfElementsInPath() > 1) { // cannot draw single points add_to_page(); if (isPolygon()) { /* PolyGon */ if (is_a_rectangle()) { const float llx = min(min (pathElement(0).getPoint(0).x_, pathElement(1).getPoint(0).x_), min(pathElement(2).getPoint(0).x_, pathElement(3).getPoint(0).x_)); const float urx = max(max (pathElement(0).getPoint(0).x_, pathElement(1).getPoint(0).x_), max(pathElement(2).getPoint(0).x_, pathElement(3).getPoint(0).x_)); const float lly = min(min (pathElement(0).getPoint(0).y_, pathElement(1).getPoint(0).y_), min(pathElement(2).getPoint(0).y_, pathElement(3).getPoint(0).y_)); const float ury = max(max (pathElement(0).getPoint(0).y_, pathElement(1).getPoint(0).y_), max(pathElement(2).getPoint(0).y_, pathElement(3).getPoint(0).y_)); show_rectangle(llx, lly, urx, ury); } else { if (globaloptions.simulateSubPaths) dumpRearrangedPathes(); else show_path(); } } else { /* PolyLine */ if (globaloptions.simulateSubPaths) dumpRearrangedPathes(); else show_path(); } } // cleanup outputPath->clear(); } // swap current and last pointers PathInfo *help = currentPath; currentPath = lastPath; // currentPath will be filled next be Lexer lastPath = help; currentPath->copyInfo(*help); // initialize next path with state of last path // currentPath is the path filled next by lexer outputPath = currentPath; } void drvbase::removeFromElementFromPath() { currentPath->numberOfElementsInPath--; } void drvbase::addtopath(basedrawingelement * newelement) { if (newelement) { if (currentPath->numberOfElementsInPath < maxElements) { currentPath->path[currentPath->numberOfElementsInPath] = newelement; #ifdef DEBUG cout << "pathelement " << currentPath-> numberOfElementsInPath << " added " << *newelement << endl; #endif currentPath->numberOfElementsInPath++; } else { errf << "Fatal: number of path elements exceeded. Increase maxElements in drvbase.h" << endl; exit(1); } } else { errf << "Fatal: newelement is NIL in addtopath " << endl; exit(1); } } void drvbase::PathInfo::clear() { for (unsigned int i = 0; i < numberOfElementsInPath; i++) { // delete path[i]; path[i]->deleteyourself(); // see note in drvbase.h path[i] = 0; } numberOfElementsInPath = 0; pathWasMerged = false; } void drvbase::PathInfo::copyInfo(const PathInfo & p) { // copies the whole path state except the path array currentShowType = p.currentShowType; currentLineType = p.currentLineType; currentLineCap = p.currentLineCap; currentLineJoin = p.currentLineJoin; currentMiterLimit = p.currentMiterLimit; nr = p.nr; // Path is not copied path(0), isPolygon = p.isPolygon; // numberOfElementsInPath = p.numberOfElementsInPath; currentLineWidth = p.currentLineWidth; edgeR = p.edgeR; edgeG = p.edgeG; edgeB = p.edgeB; fillR = p.fillR; fillG = p.fillG; fillB = p.fillB; colorName = p.colorName; dashPattern = p.dashPattern; } ostream & operator << (ostream & out, const basedrawingelement & elem) { out << "type: " << (int) elem.getType() << " params: "; for (unsigned int i = 0; i < elem.getNrOfPoints(); i++) { out << elem.getPoint(i).x_ << " " << elem.getPoint(i).y_ << " "; } out << endl; return out; } ColorTable::ColorTable(const char *const *defaultColors, const unsigned int numberOfDefaultColors, makeColorNameType makeColorName): defaultColors_(defaultColors), numberOfDefaultColors_(numberOfDefaultColors), makeColorName_(makeColorName) { //dbg cerr << " Constructing a color table with " << numberOfDefaultColors << " default colors" << endl; for (unsigned int i = 0; i < maxcolors; i++) newColors[i] = 0; //dbg cerr << 1/(1/numberOfDefaultColors) << endl; } ColorTable::~ColorTable() { unsigned int current = 0; while (newColors[current] != 0) { delete[] newColors[current]; newColors[current] = NIL; current++; } // cannot assign since it is const - defaultColors_ = NIL; //lint -esym(1540,ColorTable::defaultColors_) } unsigned int ColorTable::getColorIndex(float r, float g, float b) { // registers a possibly new color and returns the index // under which the color was registered const char *cmp = makeColorName_(r, g, b); for (unsigned int i = 0; i < numberOfDefaultColors_; i++) { if (strcmp(cmp, defaultColors_[i]) == 0) { return i; } } // look in new colors unsigned int j ; for (j = 0; ((j < maxcolors) && (newColors[j] != 0)); j++) { if (strcmp(cmp, newColors[j]) == 0) { return j + numberOfDefaultColors_; } } // not found so far // j is either maxcolors or the index of the next free entry // add a copy to newColors if (j < maxcolors) { const size_t size = strlen(cmp) + 1; newColors[j] = new char[size]; strcpy_s(newColors[j], size, cmp); return j + numberOfDefaultColors_; } else { // cerr << "running out of colors" << endl; return 0; } } const char * ColorTable::getColorString(float r, float g, float b) // non const { return getColorString(getColorIndex(r, g, b)); } bool ColorTable::isKnownColor(float r, float g, float b) const { // Possible improvements: // could return the next free entry as negative number in case // the color is not found. This would make it possible to // use this function in getColorEntry as well, or (better) // make a pure registercolor(index,.....) instead of // getColorEntry. const char *cmp = makeColorName_(r, g, b); for (unsigned int i = 0; i < numberOfDefaultColors_; i++) { if (strcmp(cmp, defaultColors_[i]) == 0) { return true; } } // look in new colors for (unsigned int j = 0; ((j < maxcolors) && (newColors[j] != 0)); j++) { if (strcmp(cmp, newColors[j]) == 0) { return true; // j+numberOfDefaultColors_; } } // not found so far return false; } const char * ColorTable::getColorString(unsigned int index) const { return (index < numberOfDefaultColors_) ? defaultColors_[index] : newColors[index - numberOfDefaultColors_]; } const DriverDescription *DescriptionRegister:: getDriverDescForName(const char *drivername) const { unsigned int i = 0; while (rp[i] != 0) { if ((strcmp(drivername, rp[i]->symbolicname) == 0)) { return rp[i]; } i++; } return 0; } const DriverDescription *DescriptionRegister:: getDriverDescForSuffix(const char *suffix) const { unsigned int i = 0; const DriverDescription * founditem = 0; while (rp[i] != 0) { if ((strcmp(suffix, rp[i]->suffix) == 0)) { if (founditem) { // already found an entry for this suffix - so it is not unique -> return 0 return 0; } else { founditem = rp[i]; // first chance - but loop throug all items } } i++; } return founditem; } void DescriptionRegister::explainformats(ostream & out, bool withdetails) const { if (withdetails) { // out << "\\subsection{Available formats and their specific options}" << endl; } else { out << "Available formats :\n"; } unsigned int i = 0; while (rp[i] != 0) { if (withdetails) { out << "\\subsubsection{" << rp[i]->symbolicname << " - " << rp[i]->short_explanation <<"}" << endl; if (strlen(rp[i]->long_explanation)>0) { out << rp[i]->long_explanation << endl << endl; } } else { out << '\t' << rp[i]->symbolicname << ":\t"; if (strlen(rp[i]->symbolicname) < 7) { out << '\t'; } out << "\t." << rp[i]->suffix << ":\t"; out << rp[i]->short_explanation << " " << rp[i]->additionalInfo(); } if (!withdetails && rp[i]->checkfunc) { if (!(rp[i]->checkfunc())) { out << " (no valid key found)"; } } if (!withdetails) out << "\t(" << rp[i]->filename << ")" << endl; ProgramOptions* dummy = rp[i]->createDriverOptions(); if (!withdetails && dummy->numberOfOptions() ) { out << "This driver supports the following additional options: (specify using -f \"format:-option1 -option2\")" << endl; } dummy->showhelp(out,withdetails,withdetails); delete dummy; if (withdetails) { out << "%%// end of options " << endl; } else { out << "-------------------------------------------" << endl; } i++; } } void DescriptionRegister::mergeRegister(ostream & out, const DescriptionRegister & src, const char *filename) { int i = 0; while (src.rp[i]) { const unsigned int srcversion = src.rp[i]->getdrvbaseVersion(); if (srcversion != 0) { if (srcversion == drvbaseVersion) { src.rp[i]->filename = filename; registerDriver(src.rp[i]); } else { out << src.rp[i]->short_explanation << "(" << filename << ")" << " - backend has other version than expected by pstoedit core " << srcversion << " <> " << drvbaseVersion << endl; out << "The pstoedit.dll (core) and the additional DLLs (plugins.dll or importps.dll) must have the same version number." << endl; out << "Please get a consistent set of pstoedit.dll (plugins.dll and or importps.dll) from www.pstoedit.net/pstoedit/ " << endl; } } i++; } } void DescriptionRegister::registerDriver(DriverDescription * xp) { // cout << " registering " << (void *) xp << endl; // check for duplicate: for (int i = 0; i < ind; i++) { if (strcmp(rp[i]->symbolicname, xp->symbolicname) == 0) { // duplicate found if (xp->checkfunc && xp->checkfunc() && !(rp[i]->checkfunc())) { // the new one has a license, so use this instead rp[i] = xp; } return; // just use the first version - except for the above case. } } rp[ind] = xp; ind++; } // int Rinit::ref = 0; DLLEXPORT DescriptionRegister *globalRp = 0; extern "C" DLLEXPORT DescriptionRegister * getglobalRp() { return &DescriptionRegister::getInstance(); } #ifdef BUGGYGPP Point Point::transform(const float * matrix) const #else Point Point::transform(const float matrix[6]) const #endif { const float tx = matrix[0] * x_ + matrix[2] * y_ + matrix[4]; const float ty = matrix[1] * x_ + matrix[3] * y_ + matrix[5]; return Point(tx, ty); } const char * DriverDescription::currentfilename = "built-in"; DriverDescription::DriverDescription( const char *const s_name, const char *const short_expl, const char *const long_expl, const char *const suffix_p, const bool backendSupportsSubPathes_p, const bool backendSupportsCurveto_p, const bool backendSupportsMerging_p, // merge a separate outline and filling of a polygon -> 1. element const bool backendSupportsText_p, const imageformat backendDesiredImageFormat_p, const opentype backendFileOpenType_p, const bool backendSupportsMultiplePages_p, const bool backendSupportsClipping_p, const bool nativedriver_p, checkfuncptr checkfunc_p): symbolicname(s_name), short_explanation(short_expl), long_explanation(long_expl), suffix(suffix_p), backendSupportsSubPathes(backendSupportsSubPathes_p), backendSupportsCurveto(backendSupportsCurveto_p), backendSupportsMerging(backendSupportsMerging_p), // merge a separate outline and filling of a polygon -> 1. element backendSupportsText(backendSupportsText_p), backendDesiredImageFormat(backendDesiredImageFormat_p), backendFileOpenType(backendFileOpenType_p), backendSupportsMultiplePages(backendSupportsMultiplePages_p), backendSupportsClipping(backendSupportsClipping_p), nativedriver(nativedriver_p), filename(DriverDescription::currentfilename), checkfunc(checkfunc_p) { DescriptionRegister & registry = DescriptionRegister::getInstance(); //dbg cout << "registering driver " << s_name << "\t at registry " << (void*) ®istry << endl; registry.registerDriver(this); } const char * DriverDescription::additionalInfo() const { return ((checkfunc != 0) ? (checkfunc()? "" : "(license key needed, see pstoedit manual)") : ""); } #if 0 // not needed - pure virtual drvbase *DriverDescription:: CreateBackend(const char *const driveroptions_P, ostream & theoutStream, ostream & theerrStream, const char *const nameOfInputFile, const char *const nameOfOutputFile, const PsToEditOptions & globaloptions) const { unused(driveroptions_P); unused(&theoutStream); unused(&theerrStream); unused(nameOfInputFile); unused(nameOfOutputFile); unused(&globaloptions); return 0; } #endif #if 0 // def BUGGYGPP // // GNU g++ causes a seg fault, when the singleton instance is destroyed triggered by a dlclose() // so we have to live with this small memory leak due to the allocation on the heap // // This problem is now solved by the removal of the dtor for this class. // DescriptionRegister & DescriptionRegister::getInstance() { static DescriptionRegister * theSingleInstance = new DescriptionRegister; globalRp = theSingleInstance; return *theSingleInstance; } #else DescriptionRegister & DescriptionRegister::getInstance() { static DescriptionRegister theSingleInstance; globalRp = &theSingleInstance; return theSingleInstance; } #endif // // SINGLETONSONHEAP might be useful if problems occur during the unloading of libpstoedit.so // // Implementation of SingleTon "Objects". BBox * drvbase::bboxes() { // array of bboxes - maxpages long #ifdef SINGLETONSONHEAP static BBox * dummy = new BBox[maxPages]; return dummy; #else static BBox dummy[maxPages]; return &(dummy[0]); #endif } unsigned int &drvbase::totalNumberOfPages() { // using the singleton pattern for easier linkage static unsigned int nrOfPages = 0; return nrOfPages; } RSString& drvbase::pstoeditHomeDir(){// usually the place where the binary is installed #ifdef SINGLETONSONHEAP static RSString *dummy = new RSString(""); return *dummy; #else static RSString dummy(""); return dummy; #endif } RSString& drvbase::pstoeditDataDir() {// where the fmp and other data files are stored #ifdef SINGLETONSONHEAP static RSString *dummy = new RSString(""); return *dummy; #else static RSString dummy(""); return dummy; #endif } // the global static FontMapper FontMapper& drvbase::theFontMapper() { #ifdef SINGLETONSONHEAP static FontMapper *dummy = new FontMapper; return *dummy; #else static FontMapper dummy; return dummy; #endif } bool drvbase::verbose = false; // offensichtlich kann man keine initialisierten Daten DLLEXPORTieren bool drvbase::Verbose() { return verbose; } void drvbase::SetVerbose(bool param) { verbose = param; } pstoedit-3.62/src/drvbase.h0000644000175500010010000010770712137235711012616 00000000000000#ifndef __drvbase_h #define __drvbase_h /* drvbase.h : This file is part of pstoedit Base class for all specific driver classes/backends. All virtual functions have to be implemented by the specific driver class. See drvSAMPL.cpp Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* // ============================================================================ // // = LIBRARY // pstoedit // // = FILENAME // drvbase.h // // = RCSID // $Id$ */ #ifndef cppcomp_h #include "cppcomp.h" #endif #include I_fstream #include I_stdio #include I_stdlib #include I_string_h USESTD #ifndef assert #include #endif #include "pstoeditoptions.h" #ifndef miscutil_h #include "miscutil.h" #endif // for compatibility checking static const unsigned int drvbaseVersion = 108; // 101 introduced the driverOK function // 102 introduced the font optimization (lasttextinfo_) // 103 introduced the -ssp support and the virtual pathscanbemerged // 104 introduced the fontmatrix handling // 105 introduced the miterlimit Info and outputPageSize // 106 introduced some new utility functions for transformation (*_trans*) // 107 new driver descriptions -- added info about clipping // 108 new driver descriptions -- added info about driver options const unsigned int maxFontNamesLength = 1000; const unsigned int maxPoints = 80000; // twice the maximal number of points in a path const unsigned int maxPages = 10000; // maximum number of pages - needed for the array of bounding boxes const unsigned int maxElements = maxPoints/2; const unsigned int maxSegments = maxPoints/2;// at least half of maxpoints (if we only have segments with one point) class DLLEXPORT Point { public: Point(float x, float y) : x_(x),y_(y) {} Point() : x_(0.0f), y_(0.0f) {}; // for arrays float x_; float y_; bool operator==(const Point & p2) const { return (x_ == p2.x_) && (y_ == p2.y_); //lint !e777 } bool operator!=(const Point & p2) const { return !(*this == p2); } Point operator+(const Point & p) const { return Point (x_+p.x_,y_+p.y_); } const Point & operator+=(const Point & p) { x_+=p.x_; y_+=p.y_; return *this; } Point operator*(float f) const { return Point (x_*f,y_*f); } #if 0 friend bool operator==(const Point & p1, const Point & p2) { return (p1.x_ == p2.x_) && (p1.y_ == p2.y_); //lint !e777 } #endif #ifdef BUGGYGPP Point transform(const float * matrix) const; #else Point transform(const float matrix[6]) const; #endif friend ostream & operator<<(ostream & out,const Point &p) { return out << "x: " << p.x_ << " y: " << p.y_ ; } private: }; struct DLLEXPORT BBox // holds two points describing a Bounding Box { public: Point ll; Point ur; friend ostream & operator<<(ostream & out,const BBox &bb) { return out << "LL: " << bb.ll << " UR: " << bb.ur ; } }; // image needs Point ! #include "psimage.h" static const char emptyDashPattern[] = "[ ] 0.0"; class basedrawingelement ; // forward class DriverDescription ; // forward class DLLEXPORT drvbase // = TITLE // Base class for backends to pstoedit // // = CLASS TYPE // Abstract // // = AUDIENCE // Developers of new backends // // = DESCRIPTION // Abstract base class for backends to pstoedit. // This class defines the virtual functions that every backend has // to implement and some functions that are common to all backends // { friend class sub_path; // needs PathInfo friend class sub_path_list; public: // = PUBLIC TYPES //lint -esym(578,drvbase::fill,fill) enum showtype { stroke, fill, eofill }; enum cliptype { clip , eoclip }; enum linetype { solid=0, dashed, dotted, dashdot, dashdotdot }; // corresponding to the CGM patterns struct DLLEXPORT TextInfo { float x; float y; float FontMatrix[6]; float x_end; // pen coordinates after show in PostScript float y_end; // RSString thetext; RSString glyphnames; bool is_non_standard_font; RSString currentFontName; RSString currentFontUnmappedName; RSString currentFontFamilyName; RSString currentFontFullName; RSString currentFontWeight; float currentFontSize; float currentFontAngle; float currentR; // Colors float currentG; float currentB; RSString colorName; // extracted from PostScript colorspace if /Separation type float cx; // next five items correspond to the float cy; // params for the awidthshow operator int Char; // of PostScript float ax; float ay; bool mappedtoIsoLatin1; bool remappedfont; // was remapped via fontmap bool samefont(const TextInfo& cmp) const { return ( currentFontName == cmp.currentFontName ) && //lint !e1702 // ( currentFontFamilyName == cmp.currentFontFamilyName ) && // ( currentFontFullName == cmp.currentFontFullName ) && ( currentFontWeight == cmp.currentFontWeight ) && //lint !e1702 ( currentFontSize == cmp.currentFontSize ) && //lint !e777 // testing floats for == ( currentFontAngle == cmp.currentFontAngle ) ; //lint !e777 // testing floats for == } bool samecolor(const TextInfo& cmp) const { return ( currentR == cmp.currentR ) && //lint !e777 // testing floats for == ( currentG == cmp.currentG ) && //lint !e777 // testing floats for == ( currentB == cmp.currentB ); //lint !e777 // testing floats for == } TextInfo() : x(0.0f), y(0.0f), x_end(0.0f), y_end(0.0f), // thetext(0), // use standard ctor is_non_standard_font(false), currentFontSize(10.0f), currentFontAngle(0.0f), currentR(0.0f), currentG(0.0f), currentB(0.0f), colorName(""), cx(0.0f), cy(0.0f), Char(32), // 32 means space ax(0.0f), ay(0.0f), mappedtoIsoLatin1(true), remappedfont(false) { for (int i = 0; i < 6 ; i++ ) FontMatrix[i] = 0.0f; } ~TextInfo() { } private: // declared but not defined // const TextInfo & operator = (const TextInfo &); // default is ok // TextInfo(const TextInfo &); // default is ok }; private: // = PRIVATE TYPES protected: // = PROTECTED TYPES struct DLLEXPORT PathInfo { showtype currentShowType; linetype currentLineType; unsigned int currentLineCap; // Shape of line ends for stroke (0 = butt, 1 = round, 2 = square) unsigned int currentLineJoin; float currentMiterLimit; unsigned int nr; basedrawingelement * * path; // a path is an array of pointers to basedrawingelements bool isPolygon; // whether current path was closed via closepath or not unsigned int numberOfElementsInPath; unsigned int subpathoffset; // normally 0, but if subpathes are simulated // then this is set to the begin of the current subpath // before show_path is executed float currentLineWidth; float edgeR; // edge colors float edgeG; float edgeB; float fillR; // fill colors float fillG; float fillB; RSString colorName; bool pathWasMerged; // true, if this path is a result of a merge operation RSString dashPattern; // just the dump of currentdash as string PathInfo() : currentShowType(drvbase::stroke), currentLineType(drvbase::solid), currentLineCap(0), currentLineJoin(0), currentMiterLimit(10.0f), nr(0), path(0), isPolygon(false), numberOfElementsInPath(0), subpathoffset(0), currentLineWidth(0.0f), edgeR(0.0f), edgeG(0.0f), edgeB(0.0f), fillR(0.0f), fillG(0.0f), fillB(0.0f), colorName(""), pathWasMerged(false), dashPattern(emptyDashPattern) { path = new basedrawingelement *[maxElements]; } virtual ~PathInfo() { // added virtual because of windows memory handling // the path content is deleted by clear clear(); delete [] path; } void clear(); void copyInfo(const PathInfo & p); // copies the whole path state except the path array void rearrange(); // rearrange subpaths for backends which don't support them private: // Inhibitors (declared, but not defined) const PathInfo& operator=(const PathInfo&); PathInfo(const PathInfo &); }; //lint -esym(1712,SaveRestoreInfo) // no default ctor class DLLEXPORT SaveRestoreInfo { public: unsigned int clippathlevel; // number of clippathes since opening (=save) unsigned int savelevel; SaveRestoreInfo * previous; SaveRestoreInfo * next; SaveRestoreInfo(SaveRestoreInfo * parent) : clippathlevel(0), previous(parent), next(NIL) { if (parent) { parent->next=this; savelevel = parent->savelevel + 1; } else { savelevel = 0; } } }; public: // = PUBLIC DATA const DriverDescription * Pdriverdesc; // pointer to the derived class' driverdescription ProgramOptions* DOptions_ptr; PSImage imageInfo; static FontMapper& theFontMapper(); static bool Verbose(); // need a wrapper function because static initialized data cannot be DLLEXPORTed static void SetVerbose(bool param); static unsigned int &totalNumberOfPages(); static BBox * bboxes() ; // [maxPages]; // array of bboxes - maxpages long static RSString& pstoeditHomeDir(); // usually the place where the binary is installed static RSString& pstoeditDataDir(); // where the fmp and other data files are stored protected: // = PROTECTED DATA ostream & outf; // the output stream ostream & errf; // the error stream const RSString inFileName; // full name of input file const RSString outFileName; // full name of output file RSString outDirName; // output path with trailing slash or backslash RSString outBaseName; // just the basename (no path, no suffix) unsigned int d_argc; const char ** d_argv; // array of driver argument strings class PsToEditOptions & globaloptions; /* non const because driver can also add an option during ctor */ float currentDeviceHeight; // normally 792 pt (US Letter); used for flipping y values. float currentDeviceWidth; float x_offset; float y_offset; friend class PSFrontEnd; // PSFrontEnd needs access to currentPageNumber unsigned int currentPageNumber; bool domerge; const char * defaultFontName; // name of default font bool ctorOK; // indicated Constructor failure // returned via driverOK() function SaveRestoreInfo saveRestoreInfo; SaveRestoreInfo * currentSaveLevel; private: // = PRIVATE DATA static bool verbose; // access via Verbose() bool page_empty; // indicates whether the current page is empty or not char * driveroptions; // string containing options for backend PathInfo PI1,PI2,clippath; // pi1 and pi2 are filled alternatively (to allow merge), clippath when a clippath is read PathInfo * currentPath; // for filling from lexer PathInfo * last_currentPath; // need to save during usage of currentPath for clippath protected: // for drvrtf PathInfo * outputPath; // for output driver private: PathInfo * lastPath; // for merging TextInfo textInfo_; // this is used both by the lexer to fill in text related info // but also by the backends for query of info, e.g. via "fontchanged" TextInfo mergedTextInfo; // for collecting pieces of text when doing text merge TextInfo lastTextInfo_; // for saving font settings. This is the last really dumped text public: // = PUBLIC METHODS // = CONSTRUCTION, DESTRUCTION AND COPYING drvbase( const char * driverOptions_p, ostream & theoutStream, ostream & theerrStream, const char* nameOfInputFile_p, const char* nameOfOutputFile_p, PsToEditOptions & globaloptions_p, const DriverDescription * Pdriverdesc_p ); // constructor virtual ~drvbase(); // destructor // = BACKEND GENERIC FUNCTIONS // These functions are not backend specific and shouldn't have to be // changed for new backends void startup(bool merge); virtual void finalize(); // needed because base destructor will be called after derived destructor // and thus the base destructor could no longer use the backend. // virtual because so we can achieve that it is called in the // context (DLL) of the real backend. Otherwise it would be called // in the context of the main program which causes memory problems // under windows since the plugins are NOT and extension DLL // void setdefaultFontName(const char * n) {defaultFontName = n;} virtual bool textIsWorthToPrint(const RSString & thetext) const; // in the default implementation full blank strings are ignored virtual bool textCanBeMerged(const TextInfo & text1, const TextInfo & text2) const; // checked whether two pieces of text can be merged into one. void setCurrentDeviceHeight(const float deviceHeight) { currentDeviceHeight = deviceHeight; } void setCurrentDeviceWidth(const float deviceWidth) { currentDeviceWidth = deviceWidth; } float getScale() const { return 1.0f; } inline long l_transX (float x) const { return (long)((x + x_offset) + .5); // rounded long } inline long l_transY (float y) const { return (long)((-1.0f*y + y_offset) + .5); // rounded long, mirrored } inline int i_transX (float x) const { return (int)((x + x_offset) + .5); // rounded int } inline int i_transY (float y) const { return (int)((-1.0f*y + y_offset) + .5); // rounded int, mirrored } inline float f_transX (float x) const { return (x + x_offset) ; } inline float f_transY (float y) const { return (-1.0f*y + y_offset) ; } const RSString & getPageSize() const; // { return globaloptions.outputPageSize; } bool close_output_file_and_reopen_in_binary_mode(); // bool fontchanged() const { return ! textInfo_.samefont(lastTextInfo_); } bool textcolorchanged() const { return ! textInfo_.samecolor(lastTextInfo_); } void setColorName(const char * const name) { textInfo_.colorName = name ; currentPath->colorName = name; } void setRGB(const float R,const float G, const float B) { if ( ( R > 1.0 ) || ( G > 1.0 ) || ( B > 1.0 ) || ( R < 0.0 ) || ( G < 0.0 ) || ( B < 0.0 ) ) { errf << "Warning: color value out of range (0..1). Color change ignored." << R << ' ' << G << ' ' << B << endl; } else { textInfo_.currentR = R ; textInfo_.currentG = G; textInfo_.currentB = B; currentPath->edgeR = R ; currentPath->edgeG = G; currentPath->edgeB = B; currentPath->fillR = R ; currentPath->fillG = G; currentPath->fillB = B; } } void showpage(); const BBox & getCurrentBBox() const; void beginClipPath(); void endClipPath(cliptype clipmode) ; // virtuals - to be implemented by backends virtual void ClipPath(cliptype clipmode); virtual void Save(); virtual void Restore(); // = DRAWING RELATED METHODS void addtopath(basedrawingelement * newelement); void removeFromElementFromPath(); unsigned int &numberOfElementsInPath() { return outputPath->numberOfElementsInPath; } unsigned int numberOfElementsInPath() const { return outputPath->numberOfElementsInPath; } const basedrawingelement & pathElement(unsigned int index) const; void setCurrentLineType(const linetype how) { currentPath->currentLineType = how; } void setCurrentLineWidth(const float linewidth) { currentPath->currentLineWidth = linewidth; } void setDash(const char * const dash) { currentPath->dashPattern.copy(dash); } void setIsPolygon(bool what) { currentPath->isPolygon=what; } // whether current path was closed via closepath or not void setPathNumber(unsigned int nr) { currentPath->nr=nr; } void setCurrentLineJoin(const unsigned int joinType) { currentPath->currentLineJoin = joinType; } void setCurrentMiterLimit(const float miterLimit) { currentPath->currentMiterLimit = miterLimit; } void setCurrentLineCap(const unsigned int capType) { currentPath->currentLineCap = capType; } void setCurrentShowType(const showtype how) { currentPath->currentShowType = how; } void dumpPath(bool doFlushText = true); // shows current path //lint -esym(578,flushall) // flushall hides same name in stdio enum flushmode_t { flushall, flushtext, flushpath }; void flushOutStanding( flushmode_t flushmode = flushall); void dumpRearrangedPathes(); // show the current subpathes after calling rearrange unsigned int nrOfSubpaths() const; void dumpImage(); // shows current image // = TEXT RELATED METHODS void setCurrentWidthParams( const float ax, const float ay, const int Char, const float cx, const float cy, const float x_end = 0.0f, const float y_end = 0.0f); void setMappedtoisolatin1 ( const bool mapped ) { textInfo_.mappedtoIsoLatin1 = mapped; } void setCurrentFontName(const char *const Name,bool is_non_standard_font); void setCurrentFontFamilyName(const char *const Name); void setCurrentFontFullName(const char *const Name); void setCurrentFontWeight(const char *const Name); void setCurrentFontSize(const float Size); void setCurrentFontAngle(float value); const float * getCurrentFontMatrix() const { return textInfo_.FontMatrix; } void setCurrentFontMatrix(const float mat[6]) { for (unsigned short i = 0; i< 6; i++) textInfo_.FontMatrix[i] = mat[i]; } // the push*Text methods set the textinfo_ member and then call the // showOrMergeText(textinfo_) ; void pushText(const size_t len, const char *const thetext, const float x, const float y, const char * const glyphnames=0); void pushHEXText(const char *const thetext, const float x, const float y, const char * const glyphnames=0); void flushTextBuffer(bool useMergeBuffer); // flushes text from the text (merge) buffer void showOrMergeText(); // = BACKEND SPECIFIC FUNCTIONS // If a backend only deals with a special set of font names // the following function must return a 0 terminated list // of font names. virtual const char * const * knownFontNames() const { return 0; } // The next functions are virtual with a default empty implementation virtual void show_image(const PSImage & /* imageinfo */) { cerr << "show_image called, although backend does not support images" << endl; //unused(&imageinfo); } // if during construction something may go wrong, a backend can // overwrite this function and return false in case of an error. // or it can just set the ctorOK to false. virtual bool driverOK() const { return ctorOK; } // some // needed to check for pseude drivers which don't have a real backend // but instead just do the job in the gs frontend. virtual bool withbackend() const { return true; } protected: // = PROTECTED METHODS showtype currentShowType() const { return outputPath->currentShowType; } linetype currentLineType() const { return outputPath->currentLineType; } unsigned int currentLineCap() const { return outputPath->currentLineCap; } unsigned int currentLineJoin() const { return outputPath->currentLineJoin; } float currentMiterLimit() const { return outputPath->currentMiterLimit; } bool isPolygon() const { return outputPath->isPolygon;} // whether current path was closed via closepath or not virtual bool pathsCanBeMerged (const PathInfo & p1, const PathInfo & p2) const; bool pathWasMerged() const { return outputPath->pathWasMerged; } float currentLineWidth() const { return outputPath->currentLineWidth; } unsigned int currentNr() const { return outputPath->nr; } float edgeR() const { return outputPath->edgeR; } // edge colors float edgeG() const { return outputPath->edgeG; } float edgeB() const { return outputPath->edgeB; } float fillR() const { return outputPath->fillR; } // fill colors float fillG() const { return outputPath->fillG; } float fillB() const { return outputPath->fillB; } const RSString & currentColorName() const { return outputPath->colorName; } const char * dashPattern() const { return outputPath->dashPattern.value(); } float currentR() const { return outputPath->fillR; } // backends that don't support merging float currentG() const { return outputPath->fillG; } // don't need to differentiate and float currentB() const { return outputPath->fillB; } // can use these functions. void add_to_page(); private: // = PRIVATE METHODS void guess_linetype(); bool is_a_rectangle() const; // = BACKEND SPECIFIC FUNCTIONS // These next functions are pure virtual and thus need to be implemented for every new backend. virtual void close_page() = 0; // writes a trailer whenever a page is finished (triggered by showpage) virtual void open_page() = 0; // writes a page header whenever a new page is needed virtual void show_path() = 0; // the next functions are virtual with default implementations virtual void show_text(const TextInfo & textinfo) ; virtual void show_rectangle( const float llx, const float lly, const float urx, const float ury); // writes a rectangle at points (llx,lly) (urx,ury) // = INHIBITORS (declared, but not defined) drvbase(); // avoid default ctor drvbase(const drvbase &); drvbase & operator=(const drvbase&); }; //lint -esym(1712,DashPattern) // no default ctor class DLLEXPORT DashPattern { public: DashPattern(const char * patternAsSetDashString); ~DashPattern(); const RSString dashString; int nrOfEntries; float * numbers; float offset; NOCOPYANDASSIGN(DashPattern) }; typedef const char * (*makeColorNameType)(float r, float g, float b); const unsigned int maxcolors = 10000 ; // maximum number of colors //lint -esym(1712,ColorTable) // no default ctor class DLLEXPORT ColorTable { public: ColorTable(const char * const * defaultColors, const unsigned int numberOfDefaultColors, makeColorNameType makeColorName); ~ColorTable(); unsigned int getColorIndex(float r, float g, float b) ; // non const const char * getColorString(float r, float g, float b); // non const ; bool isKnownColor(float r, float g, float b) const; const char * getColorString(unsigned int index) const; private: const char * const * const defaultColors_; const unsigned int numberOfDefaultColors_; char * newColors[maxcolors]; const makeColorNameType makeColorName_ ; NOCOPYANDASSIGN(ColorTable) }; #ifdef __TCPLUSPLUS__ // turbo C++ has problems with enum for template parameters typedef unsigned int Dtype; const Dtype moveto = 1; const Dtype lineto = 2; const Dtype closepath = 3; const Dtype curveto = 4; #else enum Dtype {moveto, lineto, closepath, curveto}; #endif // closepath is only generated if backend supportes subpathes // curveto is only generated if backend supportes it //lint -esym(1769,basedrawingelement) // default ctor sufficient since no members anyway class DLLEXPORT basedrawingelement { public: // default ctor sufficient since no members anyway // basedrawingelement(unsigned int size_p) /*: size(size_p) */ {} virtual const Point &getPoint(unsigned int i) const = 0; virtual Dtype getType() const = 0; friend ostream & operator<<(ostream & out,const basedrawingelement &elem); bool operator==( const basedrawingelement & bd2) const; virtual unsigned int getNrOfPoints() const = 0; virtual basedrawingelement* clone() const = 0; // make a copy // deleteyourself is needed because under Windows, the deletion // of memory needs to be done by the same dll which did the allocation. // this is not simply achieved if plugins are loaded as DLL. virtual void deleteyourself() { delete this; } virtual ~basedrawingelement() {} private: // const unsigned int size; }; inline void copyPoints(unsigned int nr, const Point src[], Point target[]) { // needed because CenterLine cannot inline for loops for (unsigned int i = 0 ; i < nr ; i++ ) target[i] = src[i]; } template class drawingelement : public basedrawingelement { public: // CenterLine !!!! // "drvbase.h", line 455: sorry, not implemented: cannot expand inline function drawingelement // <1 , 0 >::drawingelement__pt__19_XCUiL11XC5DtypeL10(Point*) with for statement in inline drawingelement(float x_1 = 0.0 ,float y_1 = 0.0 , float x_2 = 0.0, float y_2 = 0.0, float x_3 = 0.0, float y_3 = 0.0) : basedrawingelement() { #if defined (__GNUG__) || defined (_MSC_VER) && _MSC_VER >= 1100 const Point p[] = {Point(x_1,y_1),Point(x_2,y_2),Point(x_3,y_3)}; copyPoints(nr,p,points); #else // Turbo C++ hangs if the other solution is used. // and the HP CC compiler doesn't like it either // so use this for all compilers besides GNU and MS VC++ // This, however, is somewhat slower than the solution above Point * p = new Point[3]; p[0] = Point(x_1,y_1); p[1] = Point(x_2,y_2); p[2] = Point(x_3,y_3); copyPoints(nr,p,points); delete [] p; #endif } drawingelement(const Point p[]) : basedrawingelement() { // for (unsigned int i = 0 ; i < nr ; i++ ) points[i] = p[i]; copyPoints(nr,p,points); } drawingelement(const drawingelement & orig) : basedrawingelement() //lint !e1724 // Argument to copy constructor for class drawingelement<<1>,<2>> should be a const reference { // copy ctor if (orig.getType() != curtype ) { cerr << "illegal usage of copy ctor of drawingelement" << endl; exit(1); } else { copyPoints(nr,orig.points,points); } } virtual basedrawingelement* clone() const { return new drawingelement(*this); } const Point &getPoint(unsigned int i) const { #ifndef _lint assert( (i+1) < (nr+1) ); // nr can be 0 - so unsigned i could never be < 0 // but if nr==0, i==0 is also invalid. (logically i has to be 0) ? nr : (unsigned int)1]; //lint !e62 //Incompatible types (basic) for operator ':' }; // CenterLine !!!! // "drvbase.h", line 477: sorry, not implemented: cannot expand inline function // drawingelement <3 , 3 >::drawingelement__pt__19_XCUiL13XC5DtypeL13(Point*) with for statement in inline #if 0 template inline drawingelement::drawingelement(Point p[]) : basedrawingelement() { for (unsigned int i = 0 ; i < nr ; i++ ) points[i] = p[i]; } #endif typedef drawingelement<(unsigned int) 1,moveto> Moveto; typedef drawingelement<(unsigned int) 1,lineto> Lineto; typedef drawingelement<(unsigned int) 0,closepath> Closepath; typedef drawingelement<(unsigned int) 3,curveto> Curveto; #define derivedConstructor(Class) \ Class(const char * driveroptions_p, \ ostream & theoutStream, \ ostream & theerrStream, \ const char* nameOfInputFile_p, \ const char* nameOfOutputFile_p, \ PsToEditOptions & globaloptions_p, /* non const because driver can also add options */ \ const DriverDescription * descptr) #define constructBase drvbase(driveroptions_p,theoutStream,theerrStream,nameOfInputFile_p,nameOfOutputFile_p,globaloptions_p,descptr), options((DriverOptions*)DOptions_ptr) class DLLEXPORT DescriptionRegister { enum {maxelems = 100 }; public: DescriptionRegister() :ind(0) { for (int i = 0; i < maxelems; i++) rp[i] = 0; // cout << " R constructed " << (void *) this << endl; } #if 0 // removed - since otherwise one gets a runtime error when the .so is unloaded // (happens with g++ only). This is a noop anyway. ~DescriptionRegister() { // cout << " R destructed " << (void *) this << endl; } #endif static DescriptionRegister& getInstance(); void registerDriver(DriverDescription* xp); void mergeRegister(ostream & out,const DescriptionRegister & src,const char * filename); void explainformats(ostream & out,bool withdetails=false) const; const DriverDescription * getDriverDescForName(const char * drivername) const; const DriverDescription * getDriverDescForSuffix(const char * suffix) const; DriverDescription* rp[maxelems]; int nrOfDescriptions() const { return ind; } private: int ind; NOCOPYANDASSIGN(DescriptionRegister) }; //extern DLLEXPORT DescriptionRegister* globalRp; extern "C" DLLEXPORT DescriptionRegister * getglobalRp(void); //extern __declspec ( dllexport) "C" { //not needed // DescriptionRegister* getglobalRp(); typedef DescriptionRegister* (*getglobalRpFuncPtr)(void); //} //class Rinit //{ //public: // Rinit() { if (!globalRp) {globalRp = new DescriptionRegister; ref = 1 ; } else { ref++;} } // ~Rinit() { ref--; if (ref == 0) delete globalRp; } // //private: // static int ref; //}; //static Rinit Rinit_var; //now in drvdesc.h typedef bool (*checkfuncptr)(); // static bool nocheck() { return true; } typedef bool (*checkfuncptr)(void); class drvbase; struct OptionDescription { OptionDescription(const char * n = 0, const char * p = 0, const char * d = 0) :Name(n), Parameter(p), Description(d) {} const char * const Name; const char * const Parameter; // e.g. "String" or "numeric", or 0 (implicitly a boolean option then (no argument) const char * const Description; // private: // OptionDescription(const OptionDescription&); const OptionDescription& operator=(const OptionDescription&); // no special copy ctor, assignment op or dtor needed since this class is NOT owner of the (static) strings. }; // An Array of OptionDescription is delimited by an element where Name is 0 //FIXME const OptionDescription endofoptions(0,0,0); //FIXME const OptionDescription nodriverspecificoptions[] = {OptionDescription("driver has no further options",0,0),endofoptions}; //lint -esym(1712,DriverDescription) // no default ctor class DLLEXPORT DriverDescription { public: enum opentype {noopen, normalopen, binaryopen}; enum imageformat { noimage, png, bmp, eps, memoryeps }; // format to be used for transfer of raster images DriverDescription(const char * const s_name, const char * const short_expl, const char * const long_expl, const char * const suffix_p, const bool backendSupportsSubPathes_p, const bool backendSupportsCurveto_p, const bool backendSupportsMerging_p, // merge a separate outline and filling of a polygon -> 1. element const bool backendSupportsText_p, const imageformat backendDesiredImageFormat_p, const opentype backendFileOpenType_p, const bool backendSupportsMultiplePages_p, const bool backendSupportsClipping_p, const bool nativedriver_p = true, checkfuncptr checkfunc_p = 0); virtual ~DriverDescription() { // symbolicname = NIL; // these are const // explanation= NIL; // suffix= NIL; // additionalInfo= NIL; } //lint !e1540 virtual drvbase * CreateBackend (const char * const driveroptions_P, ostream & theoutStream, ostream & theerrStream, const char* const nameOfInputFile, const char* const nameOfOutputFile, PsToEditOptions & globaloptions_p ) const = 0; virtual ProgramOptions * createDriverOptions() const = 0; virtual unsigned int getdrvbaseVersion() const { return 0; } // this is only needed for the driverless backends (ps/dump/gs) const char * additionalInfo() const; // Data members const char * const symbolicname; const char * const short_explanation; const char * const long_explanation; const char * const suffix; const bool backendSupportsSubPathes; const bool backendSupportsCurveto; const bool backendSupportsMerging; // merge a separate outline and filling of a polygon -> 1. element const bool backendSupportsText; const imageformat backendDesiredImageFormat; const opentype backendFileOpenType; const bool backendSupportsMultiplePages; const bool backendSupportsClipping; const bool nativedriver; RSString filename; // where this driver is loaded from // Note: formerly this was a RSString - but that caused problems under X64 / Windows // it seems as constructing and deleting heap during start-up phase when not all DLLs are fully initialized // can cause these problems (well - I know then order of init among DLLs/SOs is not guaranteed by C++) // But the passed strings are temporary - so we need to take a copy to the heap (without destroying it later -> small leak) const checkfuncptr checkfunc; static const char * currentfilename; // the name of the file from which the plugin is loaded NOCOPYANDASSIGN(DriverDescription) }; class DescriptionRegister; //lint -esym(1712,DriverDescription*) // no default ctor template class DLLEXPORT DriverDescriptionT : public DriverDescription { public: DriverDescriptionT(const char * s_name, const char * short_expl_p, const char * long_expl_p, const char * suffix_p, const bool backendSupportsSubPathes_p, const bool backendSupportsCurveto_p, const bool backendSupportsMerging_p, // merge a separate outline and filling of a polygon -> 1. element const bool backendSupportsText_p, const imageformat backendDesiredImageFormat_p, // supports images from a PNG files const DriverDescription::opentype backendFileOpenType_p, const bool backendSupportsMultiplePages_p, const bool backendSupportsClipping_p, const bool nativedriver_p = true, checkfuncptr checkfunc_p = 0 ): DriverDescription( s_name, short_expl_p, long_expl_p, suffix_p, backendSupportsSubPathes_p, backendSupportsCurveto_p, backendSupportsMerging_p, backendSupportsText_p, backendDesiredImageFormat_p, backendFileOpenType_p, backendSupportsMultiplePages_p, backendSupportsClipping_p, nativedriver_p, checkfunc_p ) {} virtual drvbase * CreateBackend ( const char * const driveroptions_P, ostream & theoutStream, ostream & theerrStream, const char* const nameOfInputFile, const char* const nameOfOutputFile, PsToEditOptions & globaloptions_p /* non const because driver can also add arguments */ ) const { drvbase * backend = new T(driveroptions_P, theoutStream, theerrStream,nameOfInputFile,nameOfOutputFile, globaloptions_p,this); return backend; } ProgramOptions * createDriverOptions() const { // ProgramOptions * p = ; // cerr << "creating driver options" << (void*) p << endl; return new typename T::DriverOptions; } // virtual void DeleteBackend(drvbase * & ptr) const { delete (T*) ptr; ptr = 0; } virtual unsigned int getdrvbaseVersion() const { return drvbaseVersion; } private: // typedef DriverDescriptionT SHORTNAME; // NOCOPYANDASSIGN(SHORTNAME) NOCOPYANDASSIGN(DriverDescriptionT) }; #if !( (defined (__GNUG__) && (__GNUC__>=3) && defined (HAVESTL)) || defined (_MSC_VER) && (_MSC_VER >= 1300) ) // 1300 is MSVC.net (7.0) // 1200 is MSVC 6.0 //G++3.0 comes with a STL lib that includes a definition of min and max // some systems have a minmax.h which is indirectly included #ifdef min #undef min #endif #ifdef max #undef max #endif #ifndef min template inline T min(T x, T y) { return (x inline T max(T x, T y) { return (x>y) ? x:y; } #endif #endif inline float bezpnt(float t, float z1, float z2, float z3, float z4) { // Determine ordinate on Bezier curve at length "t" on curve if (t <= 0.0f) { return z1; // t = 0.0f; } if (t >= 1.0f) { return z4; // t = 1.0f; } const float t1 = (1.0f - t); return t1 * t1 * t1 * z1 + 3.0f * t * t1 * t1 * z2 + 3.0f * t * t * t1 * z3 + t * t * t * z4; } inline Point PointOnBezier(float t, const Point & p1, const Point & p2, const Point & p3, const Point & p4) { return Point(bezpnt(t,p1.x_,p2.x_,p3.x_,p4.x_), bezpnt(t,p1.y_,p2.y_,p3.y_,p4.y_)); } #endif pstoedit-3.62/src/drvcairo.cpp0000644000175500010010000006236212137224252013327 00000000000000/* drvcairo.cpp : This file is part of pstoedit Copyright (C) 2009 - 2013 Dan McMahill dan_AT_mcmahill_DOT_net This driver used drvSAMPL.cpp as a reference. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvcairo.h" #include I_fstream #include I_stdio #include I_stdlib #include #include // #include "version.h" // TODO // // - fix text font selection // = When using -pango, the text all appears to be offset in the y-direction from where it // should be. Also bold and italics don't work with -pango. // // = Is it possible to get the postscript bounding box for the text? If so then one idea is I // create the pango or cairo text, get its size and then use cairo_transform to scale it so the pango or // cairo bounding box matches the postscript one. This way even if the fonts are a little different // we end up with something as close as possible. // // = What about symbol font? It looks like the way this has to happen is I need to convert // to the greek alphabet in unicode stored in UTF-8 and that sounds like a pretty big hack // when the chances of really getting fonts to be right are slim. The reality is that // fonts probably won't look right unless you use -dt as a pstoedit option // // - fix bounding box glitches. // = examples/colrtest.ps // // - image and imagemask support // Can I implement this directly? // = examples/imagetest_1.ps // = examples/imagetest_2.ps // = examples/imagetest_3.ps // = examples/oneimg.ps // = examples/woglim.ps // If I can figure out how to get at the pixel data, I can generate cairo code that will render it. // Cairo can also load png from a file however I'd prefer to not to have to do that since it means // the end users program now needs to know how to locate the .png files at runtime and it is not // a given that the users code knows how to reliably do this so I'd rather embed the picture. // // - Is there a better way of getting the name for the header file that is created? // drvCAIRO::derivedConstructor(drvCAIRO): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): // Constructor constructBase, imgcount(0) { ofstream outh; // driver specific initializations // and writing of header to output file outf << "/* ***** Generated from pstoedit ***** */" << endl; outf << "#include " << endl; if (options->pango.value) { outf << "#include " << endl; } outf << "#include " << endl; outf << endl; maxw = 0; maxh = 0; evenoddmode = false; // Generate the header file outh.open(options->header.value.value(), ios::out); outh << "/* " << options->header.value << " */" << endl; outh << "/* ***** Generated from pstoedit ***** */" << endl; outh << "#ifndef __" << options->funcname.value << "_H__" << endl; outh << "#define __" << options->funcname.value << "_H__" << endl; outh << "#include " << endl; outh << "extern cairo_t * (*" << options->funcname.value << "_render[])(cairo_surface_t *, cairo_t *);" << endl; outh << "extern int " << options->funcname.value << "_total_pages;" << endl; outh << "extern int " << options->funcname.value << "_width[];" << endl; outh << "extern int " << options->funcname.value << "_height[];" << endl; outh << "extern void " << options->funcname.value << "_init(void);" << endl; outh << "#endif /* __" << options->funcname.value << "_H__ */" << endl; outh << endl; outh.close(); } drvCAIRO::~drvCAIRO() { unsigned int i; // driver specific deallocations // and writing of trailer to output file outf << endl; outf << "/* Total number of pages */" << endl; outf << "int " << options->funcname.value << "_" << "total_pages;" << endl; outf << endl; outf << "/* Array of the individual page render functions */" << endl; outf << "cairo_t * (*" << options->funcname.value << "_render[" << totalNumberOfPages() << "])(cairo_surface_t *, cairo_t *);" << endl; outf << endl; outf << "/* array of pointers to the widths and heights */" << endl; outf << "int " << options->funcname.value << "_width[" << totalNumberOfPages() << "];" << endl; outf << "int " << options->funcname.value << "_height[" << totalNumberOfPages() << "];" << endl; outf << endl; outf << "/* This function should be called at the beginning of the user program */" << endl; outf << "void " << options->funcname.value << "_init(void)" << endl; outf << "{" << endl; outf << endl; outf << " " << options->funcname.value << "_" << "total_pages = " << totalNumberOfPages() << ";" << endl; outf << endl; // Now spit out an array of pointers to the render functions, so we can deal with multiple pages for (i = 1 ; i <= drvbase::totalNumberOfPages() ; i++) { outf << " " << options->funcname.value << "_render[" << i-1 << "] = "; outf << options->funcname.value << "_page_" << i << "_render;" << endl; } outf << endl; for (i = 1 ; i <= drvbase::totalNumberOfPages() ; i++) { outf << " " << options->funcname.value << "_width[" << i-1 << "] = "; outf << options->funcname.value << "_page_" << i << "_width;" << endl; } for (i = 1 ; i <= drvbase::totalNumberOfPages() ; i++) { outf << " " << options->funcname.value << "_height[" << i-1 << "] = "; outf << options->funcname.value << "_page_" << i << "_height;" << endl; } outf << "}" << endl; outf << endl; outf << "float " << options->funcname.value << "_width_max = " << maxw << ";" << endl; outf << "float " << options->funcname.value << "_height_max = " << maxh << ";" << endl; } void drvCAIRO::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << " cairo_move_to (cr, "; outf << p.x_ + x_offset << ", " << /* currentDeviceHeight - */ -1*p.y_ + y_offset << ");"; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << " cairo_line_to (cr, "; outf << p.x_ + x_offset << ", " << /* currentDeviceHeight - */ -1*p.y_ + y_offset << ");"; } break; case closepath: outf << " cairo_close_path (cr);"; break; case curveto:{ outf << " cairo_curve_to (cr"; for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); outf << ", " << (p.x_ + x_offset) << ", " << /* currentDeviceHeight - */ (-1*p.y_ + y_offset); } outf << ");" << endl; } break; default: errf << "\t\tFatal: unexpected case in drvcairo " << endl; abort(); break; } outf << endl; } } void drvCAIRO::open_page() { BBox mybox; mybox = getCurrentBBox(); x_offset = -mybox.ll.x_; y_offset = mybox.ur.y_; //cout << "Set offset to (" << x_offset << ", " << y_offset << ")" << endl; outf << "/*" << endl; outf << " * Original bounding box = for page # " << currentPageNumber << " is" << endl; outf << " * " << mybox << endl; outf << " * The figure has been offset by (" << x_offset << ", " << y_offset << ")" << endl; outf << " * to move LL to (0,0). The width and height" << endl; outf << " * can be read from the following two variables:" << endl; outf << " */" << endl; outf << "static int " << options->funcname.value <<"_page_" << currentPageNumber << "_width = " << mybox.ur.x_ - mybox.ll.x_ << ";" << endl; outf << "static int " << options->funcname.value << "_page_" << currentPageNumber << "_height = " << mybox.ur.y_ - mybox.ll.y_ << ";" << endl; outf << endl; if (mybox.ur.x_ - mybox.ll.x_ > maxw) { maxw = mybox.ur.x_ - mybox.ll.x_; } if (mybox.ur.y_ - mybox.ll.y_ > maxh) { maxh = mybox.ur.y_ - mybox.ll.y_; } outf << "static cairo_t * " << options->funcname.value << "_page_" << currentPageNumber << "_render"; outf << "(cairo_surface_t *cs, cairo_t *cr)" << endl; outf << "{" << endl; outf << endl; outf << " if (cr == NULL && cs == NULL) {" << endl; outf << " return NULL;" << endl; outf << " } else if(cr == NULL && cs != NULL) {" << endl; outf << " cr = cairo_create (cs);" << endl; outf << " } else if(cr != NULL && cs == NULL) {" << endl; outf << " } else if(cr != NULL && cs != NULL) {" << endl; outf << " }" << endl; outf << endl; outf << " cairo_save (cr);" << endl; outf << endl; if (!options->pango.value) { outf << " /* set an initial font */" << endl; outf << " cairo_select_font_face (cr, \"monospace\"," << " CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);" << endl; } outf << endl; } void drvCAIRO::close_page() { outf << " cairo_restore (cr);" << endl; outf << endl; outf << " return cr;" << endl; outf << "} /* end of " << options->funcname.value << "_page_" << (currentPageNumber) << "_render() */" ; outf << endl; } void drvCAIRO::show_text(const TextInfo & textinfo) { outf << " /*" << endl; outf << " * " << "X " << textinfo.x << " Y " << textinfo.y << endl; outf << " * " << "X_END " << textinfo.x_end << " Y_END " << textinfo.y_end << endl; outf << " * " << "currentFontName: " << textinfo.currentFontName.value() << endl; outf << " * " << "is_non_standard_font: " << textinfo.is_non_standard_font << endl; outf << " * " << "currentFontFamilyName: " << textinfo.currentFontFamilyName.value() << endl; outf << " * " << "currentFontFullName: " << textinfo.currentFontFullName.value() << endl; outf << " * " << "currentFontWeight: " << textinfo.currentFontWeight.value() << endl; outf << " * " << "currentFontAngle: " << textinfo.currentFontAngle << endl; const float *CTM = getCurrentFontMatrix(); const char *family; outf << " * " << "currentFontMatrix: ["; for (unsigned int i = 0; i < 6; i++) { outf << " " << CTM[i]; } outf << ']' << endl; outf << " */" << endl; outf << " {" << endl; outf << " cairo_matrix_t matrix, save_matrix;" << endl; if (options->pango.value) { outf << " PangoFontDescription *desc;" << endl; outf << " PangoLayout *layout;" << endl; } outf << " const char *text = \"" << textinfo.thetext.value() << "\";" << endl; outf << endl; outf << " cairo_set_source_rgb (cr, " << textinfo.currentR << "," << textinfo.currentG << "," << textinfo.currentB << ");" << endl; outf << " cairo_get_matrix (cr, &save_matrix);" << endl; // cairo_matrix_init (xx, yx, xy, yy, x0, y0) // x_new = xx * x + xy * y + x0; // y_new = yx * x + yy * y + y0; outf << " cairo_save (cr);" << endl; outf << " cairo_matrix_init (&matrix," << CTM[0]/textinfo.currentFontSize << ", " << -1.0*CTM[1]/textinfo.currentFontSize << ", " << -1.0*CTM[2]/textinfo.currentFontSize << ", " << 1.0*CTM[3]/textinfo.currentFontSize << ", " << CTM[4] + x_offset << ", " << -1.0*CTM[5] + y_offset << ");" << endl; outf << " cairo_transform (cr, &matrix);" << endl; outf << " cairo_move_to (cr, 0, 0);" << endl; outf << endl; family = "monospace"; if (strstr(textinfo.currentFontName.value(), "Times") || strstr(textinfo.currentFontName.value(), "Roman")) { family = "serif"; } else if (strstr(textinfo.currentFontName.value(), "Helvetica") || strstr(textinfo.currentFontName.value(), "Sans")) { family = "sans-serif"; } else if (strstr(textinfo.currentFontName.value(), "Courier") || strstr(textinfo.currentFontName.value(), "Mono")) { family = "monospace"; } else if (strstr(textinfo.currentFontName.value(), "Symbol") ) { // In this case, what unfortunately needs to happen is I need to convert the // ASCII string to UTF-8 encoded string but with mapping from the family = "symbol"; } else { errf << "currentFontName: " << textinfo.currentFontName.value() << " is not known." << endl; errf << " Defaulting to " << family << endl; } if (options->pango.value) { outf << " /* Set pango font */" << endl; outf << " layout = pango_cairo_create_layout (cr);" << endl; outf << " desc = pango_font_description_from_string (\"" << family << "\");" << endl; outf << " /* A size value of 10 * PANGO_SCALE is a 10 point font. */" << endl; outf << " pango_font_description_set_size (desc, " << textinfo.currentFontSize << " * PANGO_SCALE);" << endl; outf << " pango_layout_set_font_description (layout, desc);" << endl; outf << " pango_font_description_free (desc);" << endl; outf << " pango_layout_set_text (layout, text, -1);" << endl; outf << " pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);" << endl; outf << " pango_cairo_show_layout (cr, layout);" << endl; outf << " g_object_unref (layout);" << endl; } else { const char *weight, *slant; // cairo_select_font_face (cairo_t *cr, // const char *family, // cairo_font_slant_t slant, // cairo_font_weight_t weight); // // family: // standard CSS2 generic family names, ("serif", "sans-serif", // "cursive", "fantasy", "monospace"), are likely to work as expected. // // FIXME -- figure out how to get the family set is a better way // slant: // CAIRO_FONT_SLANT_NORMAL - Upright font style // CAIRO_FONT_SLANT_ITALIC - Italic font style // CAIRO_FONT_SLANT_OBLIQUE - Oblique font style // // FIXME -- set the slant more robustly slant = "CAIRO_FONT_SLANT_NORMAL"; if (strstr(textinfo.currentFontFullName.value(), "Italic")) { slant = "CAIRO_FONT_SLANT_ITALIC"; } else if (strstr(textinfo.currentFontFullName.value(), "Oblique")) { slant = "CAIRO_FONT_SLANT_OBLIQUE"; } // weight: // CAIRO_FONT_WEIGHT_NORMAL - Normal font weight // CAIRO_FONT_WEIGHT_BOLD - Bold font weight // // FIXME -- set the weight more robustly weight = "CAIRO_FONT_WEIGHT_NORMAL"; if (strstr(textinfo.currentFontWeight.value(), "bold") || strstr(textinfo.currentFontWeight.value(), "Bold") ) { weight = "CAIRO_FONT_WEIGHT_BOLD"; } outf << " cairo_select_font_face (cr, \"" << family << "\"," << endl; outf << " " << slant << "," << endl; outf << " " << weight << ");" << endl; // outf << " status = cairo_status (cr);" << endl; //outf << " printf(\"cairo_select_font_face() returned \\\"%s\\\"\\n\", cairo_status_to_string (status));" << endl; outf << " cairo_set_font_size (cr, " << textinfo.currentFontSize << ");" << endl; outf << " cairo_show_text (cr, text);" << endl; } outf << " cairo_set_matrix (cr, &save_matrix);" << endl; outf << " cairo_restore (cr);" << endl; outf << " cairo_move_to (cr, " << textinfo.x_end + x_offset << ", " << -1*textinfo.y_end + y_offset << ");" << endl; outf << " }" << endl; outf << endl; } void drvCAIRO::ClipPath(cliptype type) { // type is 'clip' or 'eoclip' evenoddmode = (type == drvbase::eoclip); outf << " cairo_save (cr);" << endl; outf << " cairo_reset_clip (cr);" << endl; if (evenoddmode) { outf << " cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);" << endl; } else { outf << " cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING);" << endl; } print_coords(); outf << " cairo_clip (cr);" << endl; outf << " cairo_restore (cr);" << endl; } void drvCAIRO::show_path() { DashPattern dp(dashPattern()); outf << endl; outf << " /*" << endl; outf << " * Path # " << currentNr() ; if (isPolygon()) outf << " (polygon):" << endl; else outf << " (polyline):" << endl; outf << " */" << endl; outf << endl; outf << " cairo_save (cr);" << endl; outf << " cairo_set_line_width (cr, " << currentLineWidth() << ");" << endl; // CAIRO_LINE_CAP_BUTT - start(stop) the line exactly at the start(end) point // CAIRO_LINE_CAP_ROUND - use a round ending, the center of the circle is the end point // CAIRO_LINE_CAP_SQUARE - use squared ending, the center of the square is the end point outf << " cairo_set_line_cap (cr, "; switch( currentLineCap() ) { case 0: outf << "CAIRO_LINE_CAP_BUTT);" << endl; break; case 1: outf << "CAIRO_LINE_CAP_ROUND);" << endl; break; case 2: outf << "CAIRO_LINE_CAP_SQUARE);" << endl; break; default: errf << "Unexpected currentLineCap() in cairo driver: " << currentLineCap() << endl; outf << "CAIRO_LINE_CAP_ROUND);" << endl; break; } // cairo_set_dash (cairo_t *cr, const double *dashes, int num_dashes, double offset); // dashes : // an array specifying alternate lengths of on and off stroke portions // // num_dashes : // the length of the dashes array // // offset : // an offset into the dash pattern at which the stroke should start // // dashPattern: has nrOfEntries, float *numbers, float offset if (dp.nrOfEntries > 0) { outf << " {" << endl; outf << " double pat[" << dp.nrOfEntries << "] = {" << endl; for (int i = 0; i < dp.nrOfEntries; i++) { outf << " " << dp.numbers[i] << ", " << endl; } outf << " };" << endl; outf << endl; outf << " cairo_set_dash (cr, pat, " << dp.nrOfEntries << ", " << dp.offset << ");" << endl; outf << " }" << endl; } else { outf << " cairo_set_dash (cr, NULL, 0, 0.0);" << endl; } // cairo_move_to (cr, 0.25, 0.25); // cairo_line_to (cr, 0.5, 0.375); outf << " /* Path Elements 0 to " << numberOfElementsInPath() - 1 << " */" << endl; print_coords(); switch (currentShowType()) { case drvbase::stroke: outf << " cairo_set_source_rgb (cr, " << edgeR() << "," << edgeG() << "," << edgeB() << ");" << endl; outf << " cairo_stroke (cr);" << endl; break; case drvbase::eofill: outf << " cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);" << endl; evenoddmode = true; /* no break */ case drvbase::fill: outf << " cairo_set_source_rgb (cr, " << fillR() << "," << fillG() << "," << fillB() << ");" << endl; outf << " cairo_fill_preserve (cr);" << endl; if (evenoddmode) { outf << " cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING);" << endl; evenoddmode = false; } outf << " cairo_set_source_rgb (cr, " << edgeR() << "," << edgeG() << "," << edgeB() << ");" << endl; outf << " cairo_stroke (cr);" << endl; break; default: // cannot happen outf << " // unexpected ShowType " << (int) currentShowType(); break; } outf << " cairo_restore (cr);" << endl; } void drvCAIRO::show_rectangle(const float llx, const float lly, const float urx, const float ury) { // FIXME -- I need to get some rectangle calls into my sample so i can test this... // cairo_rectangle (cr, x, y, width, height); outf << " cairo_rectangle (cr, " << llx << "," << lly << ", " << urx-llx << "," << ury-lly << ");" << endl; // just do show_path for a first guess show_path(); } void drvCAIRO::show_image(const PSImage & image) { // first retrieve bounding box Point lowerLeft, upperRight; image.getBoundingBox(lowerLeft, upperRight); // not only bounding box must account for scale, // but also transformation matrix! // scale bounding box lowerLeft.x_ *= getScale(); lowerLeft.y_ *= getScale(); upperRight.x_ *= getScale(); upperRight.y_ *= getScale(); const long width = abs(i_transX(upperRight.x_) - i_transX(lowerLeft.x_)); const long height = abs(i_transY(upperRight.y_) - i_transY(lowerLeft.y_)); if (Verbose()) { errf << "image.Width:" << image.width << " image.Height: " << image.height << endl; errf << "Width:" << width << " Height: " << height << endl; } #if 0 // This is an example of how to take image data and get it into a cairo surface. // If I ever figure out the pstoedit end, I can try one of these. int stride; unsigned char *data; cairo_surface_t *surface; g_double w, h; /* CAIRO_FORMAT_ARGB32, CAIRO_FORMAT_RGB24, CAIRO_FORMAT_A8, CAIRO_FORMAT_A1 */ stride = cairo_format_stride_for_width (format, width); data = malloc (stride * height); surface = cairo_image_surface_create_for_data (data, format, width, height, stride); surface = cairo_image_surface_create_from_png_stream (data, format, width, height, stride); #endif // calc long-padded size of scanline const long scanlineLen = ((width * 3) + 3) & ~3L; // now lets get some mem unsigned char *const output = new unsigned char[scanlineLen * height]; for (long i = 0; i < scanlineLen * height; i++) output[i] = 255; // default is background (white) if (!output) { errf << "ERROR: Cannot allocate memory for image" << endl; return; } // setup inverse transformation matrix (scaled, too!) const float matrixScale(image.normalizedImageCurrentMatrix[0] * image.normalizedImageCurrentMatrix[3] - image.normalizedImageCurrentMatrix[2] * image.normalizedImageCurrentMatrix[1]); const float inverseMatrix[] = { image.normalizedImageCurrentMatrix[3] / matrixScale / getScale(), -image.normalizedImageCurrentMatrix[1] / matrixScale / getScale(), -image.normalizedImageCurrentMatrix[2] / matrixScale / getScale(), image.normalizedImageCurrentMatrix[0] / matrixScale / getScale(), (image.normalizedImageCurrentMatrix[2] * image.normalizedImageCurrentMatrix[5] - image.normalizedImageCurrentMatrix[4] * image.normalizedImageCurrentMatrix[3]) / matrixScale, (image.normalizedImageCurrentMatrix[4] * image.normalizedImageCurrentMatrix[1] - image.normalizedImageCurrentMatrix[0] * image.normalizedImageCurrentMatrix[5]) / matrixScale }; // now transform image for (long ypos = 0; ypos < height; ypos++) { // buffer current output scanline (saves us some multiplications) unsigned char *const currOutput = &output[scanlineLen * ypos]; for (long xpos = 0; xpos < width; xpos++) { // now transform from device coordinate space to image space // apply transformation const Point currPoint = Point(xpos + lowerLeft.x_, ypos + lowerLeft.y_).transform(inverseMatrix); // round to integers const long sourceX = (long) (currPoint.x_ + .5); const long sourceY = (long) (currPoint.y_ + .5); // is the pixel out of bounds? If yes, no further processing necessary if (sourceX >= 0L && (unsigned long) sourceX < image.width && sourceY >= 0L && (unsigned long) sourceY < image.height) { // okay, fetch source pixel value into // RGB triplet unsigned char r(255), g(255), b(255), c, m, y, k; // how many components? switch (image.ncomp) { case 1: r = g = b = image.getComponent(sourceX, sourceY, 0); break; case 3: r = image.getComponent(sourceX, sourceY, 0); g = image.getComponent(sourceX, sourceY, 1); b = image.getComponent(sourceX, sourceY, 2); break; case 4: c = image.getComponent(sourceX, sourceY, 0); m = image.getComponent(sourceX, sourceY, 1); y = image.getComponent(sourceX, sourceY, 2); k = image.getComponent(sourceX, sourceY, 3); // account for key c += k; m += k; y += k; // convert color r = 255 - c; g = 255 - m; b = 255 - y; break; default: errf << "\t\tFatal: unexpected case in drvcairo (line " << __LINE__ << ")" << endl; abort(); return; } // set color triple currOutput[3 * xpos] = b; currOutput[3 * xpos + 1] = g; currOutput[3 * xpos + 2] = r; } } } delete[]output; } static DriverDescriptionT < drvCAIRO > D_cairo("cairo", // name "cairo driver", // short description "generates compilable c code for rendering with cairo", // long description "c", // output file suffix true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::memoryeps, // format to be used for raster imagese DriverDescription::normalopen, // binary or ascii output file true, // if format supports multiple pages in one file true /*clipping */ ); pstoedit-3.62/src/drvcairo.h0000644000175500010010000000427012137224255012771 00000000000000#ifndef __drvCAIRO_h #define __drvCAIRO_h /* drvcairo.h : This file is part of pstoedit Class declaration for the cairo driver. Copyright (C) 2009 - 2013 Dan McMahill dan_AT_mcmahill_DOT_net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvCAIRO : public drvbase { public: derivedConstructor(drvCAIRO); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvCAIRO(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor > pango; OptionT < RSString, RSStringValueExtractor > funcname; OptionT < RSString, RSStringValueExtractor > header; DriverOptions(): pango(true,"-pango",0,0,"use pango for font rendering",0,false), funcname(true,"-funcname","string",0, "sets the base name for the generated functions and variables. e.g. myfig", 0,(const char*)"myfig"), header(true,"-header","string",0, "sets the output file name for the generated C header file. e.g. myfig.h", 0,(const char*)"myfig.h") { ADD(pango); ADD(funcname); ADD(header); } }*options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); void ClipPath(cliptype); public: virtual void show_image(const PSImage & imageinfo); private: void print_coords(); int imgcount; float maxw, maxh; bool evenoddmode; }; #endif pstoedit-3.62/src/drvcfdg.cpp0000644000175500010010000001412712137224252013131 00000000000000/* drvcfdg.cpp : This file is part of pstoedit Backend for Context Free Design Grammar files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvcfdg.h" #include I_iostream // Constructor -- Initialize variables and take other per-document actions drvCFDG::derivedConstructor(drvCFDG): constructBase { // Prevent the use of scientific notation, which CFDG doesn't // understand. For now, we hardwire the precision to 6 digits // after the decimal point. outf.setf(ios::fixed); outf.precision(6); // Output copyright information outf << "// Converted from PostScript(TM) to CFDG by pstoedit\n" << "// CFDG backend contributed by Scott Pakin \n" << "// pstoedit is Copyright (C) 1993 - 2013 Wolfgang Glunz" << " \n\n"; // Output the CFDG startshape outf << "startshape page1\n"; } drvCFDG::~drvCFDG() { options=0; } // Each page produces a different path void drvCFDG::open_page() { outf << "\n" << "path page" << currentPageNumber << " {" << endl; } void drvCFDG::close_page() { outf << "}" << endl; } // Given an RGB color, output it as an HSV color. void drvCFDG::print_rgb_as_hsv(float red, float green, float blue) { float hue, saturation, value; float minchan, maxchan, delta; // Determine V (value) minchan = red; minchan = minchan < green ? minchan : green; minchan = minchan < blue ? minchan : blue; maxchan = red; maxchan = maxchan > green ? maxchan : green; maxchan = maxchan > blue ? maxchan : blue; value = maxchan; delta = maxchan - minchan; if (maxchan == 0.0) { // Black outf << "hue 0 sat 0 b 0"; return; } // Determine S (saturation) saturation = delta / maxchan; if (saturation == 0.0) { // Gray outf << "hue 0 sat 0 b " << value; return; } // Determine H (hue) if (red == maxchan) hue = (green - blue) / delta; else if (green == maxchan) hue = 2.0f + (blue - red) / delta; else hue = 4.0f + (red - green) / delta; hue *= 60.0; if (hue < 0.0 ) hue += 360.0; // Output the HSV color outf << "hue " << hue << " sat " << saturation << " b " << value; } void drvCFDG::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << " MOVETO {" << " x " << p.x_ + x_offset << " y " << p.y_ + y_offset << " }"; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << " LINETO {" << " x " << p.x_ + x_offset << " y " << p.y_ + y_offset << " }"; } break; case closepath: outf << " CLOSEPOLY { }"; break; case curveto:{ const char* const suffix[] = {"1", "2", ""}; outf << " CURVETO {"; for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); outf << " x" << suffix[cp] << " " << p.x_ + x_offset << " y" << suffix[cp] << " " << p.y_ + y_offset; } outf << " }"; } break; default: errf << "\t\tFatal: unexpected case in drvcfdg " << endl; abort(); break; } outf << endl; } } void drvCFDG::show_path() { print_coords(); switch (currentShowType()) { case drvbase::stroke: outf << " STROKE { "; print_rgb_as_hsv(edgeR(), edgeG(), edgeB()); outf << " width " << currentLineWidth() << " param"; switch (currentLineCap()) { case 0: outf << " buttcap"; break; case 1: outf << " roundcap"; break; case 2: outf << " squarecap"; break; default: // cannot happen errf << "unexpected LineCap " << (int) currentLineCap(); abort(); break; } outf << " }"; break; case drvbase::fill: outf << " FILL { "; print_rgb_as_hsv(fillR(), fillG(), fillB()); outf << " }"; break; case drvbase::eofill: outf << " FILL { "; print_rgb_as_hsv(fillR(), fillG(), fillB()); outf << " param evenodd }"; break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); abort(); break; } outf << endl; } static DriverDescriptionT < drvCFDG > D_cfdg("cfdg", "Context Free Design Grammar", "Context Free Design Grammar, usable by Context Free Art (http://www.contextfreeart.org/)", "cfdg", true, // backend supports subpaths // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves true, // backend supports elements which are filled and have edges false, // backend does not support text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false // backend does not support clipping ); pstoedit-3.62/src/drvcfdg.h0000644000175500010010000000246212137224255012600 00000000000000#ifndef __drvCFDG_h #define __drvCFDG_h /* drvcfdg.h : This file is part of pstoedit Backend for Context Free Design Grammar files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvCFDG : public drvbase { public: derivedConstructor(drvCFDG); ~drvCFDG(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" private: void print_coords(); void print_rgb_as_hsv(float red, float green, float blue); }; #endif pstoedit-3.62/src/drvdxf.cpp0000644000175500010010000014134112137224252013006 00000000000000/* drvDXF.cpp : This file is part of pstoedit Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net DXF Backend Version 0.9 ( LINEs only, no Text, no color, no linewidth ) (see if polyaslines ) Carsten Hammer chammer_AT_post.uni-bielefeld.de CATS Gesellschaft fuer technische DV-Anwendungen mbH Carl-Zeiss-Strasse 65 33334 Guetersloh This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvdxf.h" #include I_stdio #include I_string_h #include I_iostream // not used - the acad header also works with icad. later we may introduce an option // which header to use #include "dxficad.h" #include "dxfacad.h" // try to use shorter headers // but this doesn't work so far #if 0 static const char dxf14shortheader[] = " 0\n" "SECTION\n" "2\nHEADER\n" " 9\n" "$ACADVER\n" "1\n" "AC1014\n" " 9\n" "$EXTMIN\n" "10\n" "0.0\n" "20\n" "0.0\n" "30\n" "0.0\n" " 9\n" "$EXTMAX\n" "10\n" "1000.0\n" "20\n" "1000.0\n" "30\n" "0.0\n" " 9\n" "$FILLMODE\n" "70\n" "0\n" " 9\n" "$SPLFRAME\n" "70\n" "1\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" "2\n" "TABLES\n" // Layers " 0\n" "TABLE\n" "2\n" "LAYER\n" "70\n" "255\n" // 255 is max number of layers - but can be greater // Layer "0" definition " 0\n" "LAYER\n" "2\n" "0\n" // layername "70\n" "0\n" // unfrozen "62\n" "7\n" // color "6\n" "CONTINUOUS\n" // linestyle // End Layer 0 " 0\n" "ENDTAB\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" "2\n" "ENTITIES\n"; static const char dxf14shorttrailer[] = " 0\n" "ENDSEC\n" " 0\n" "EOF\n"; #endif // voloview doesn't like this header buffer << "999\nDXF generated by pstoedit\n"; static const char dxf9shortheader_prelayer[] = " 0\n" "SECTION\n" " 2\n" "HEADER\n" " 9\n" "$ACADVER\n" " 1\n" "AC1009\n" " 9\n" "$EXTMIN\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$EXTMAX\n" " 10\n" "1000.0\n" " 20\n" "1000.0\n" " 30\n" "0.0\n" " 9\n" "$FILLMODE\n" " 70\n" " 0\n" " 9\n" "$SPLFRAME\n" " 70\n" " 1\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "TABLES\n" // Layertable " 0\n" "TABLE\n" " 2\n" "LAYER\n" " 70\n"; // " 255\n" // max num of layers - but can be greater static const char layer0short[] = // layer 0 " 0\n" "LAYER\n" " 2\n" "0\n" // layer name "0" " 70\n" " 0\n" // unfrozen " 62\n" " 7\n" // color " 6\n" "CONTINUOUS\n"; // line style // end layer 0 static const char dxf9shortheader_postlayer[] = " 0\n" "ENDTAB\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "ENTITIES\n"; static const char dxf9shorttrailer[] = " 0\n" "ENDSEC\n" " 0\n" "EOF\n"; class DXFColor { public: // The SparcCompiler wants to have this public in order to initialize DXFColors struct rgbcolor { rgbcolor(unsigned short r_p,unsigned short g_p,unsigned short b_p) : r(r_p),g(g_p),b(b_p) {} unsigned short r; unsigned short g; unsigned short b; }; private: static const rgbcolor DXFColors[]; public: static const unsigned short numberOfColors; static unsigned int getDXFColor(float r, float g, float b,unsigned int firstcolor = 0); }; unsigned int DXFColor::getDXFColor(float r, float g, float b,unsigned int firstcolor) { float mindist = 2.0f; // theoretically the distance is max 1.0f - but to avoid rounding problems. unsigned int best = firstcolor; for (unsigned int i = firstcolor; i < numberOfColors; i++) { const float dxfr = DXFColors[i].r / 255.0f; const float dxfg = DXFColors[i].g / 255.0f; const float dxfb = DXFColors[i].b / 255.0f; const float dr = dxfr - r; const float dg = dxfg - g; const float db = dxfb - b; const float dist = dr * dr + dg * dg + db * db; if (dist == 0.0) { // errf << "Found exact match for " << r << " " // << g << " " << b << " " << i << " " << numberOfColors << endl; return i; } else if (dist < mindist) { best = i; mindist = dist; } } // errf << "Found approximation for " << r << " " // << g << " " << b << " " << best << " " << mindist << " " << numberOfColors << endl; return best; } const DXFColor::rgbcolor DXFColor::DXFColors[] = { rgbcolor(0x00, 0x00, 0x00), //0 // black - but reserved layer rgbcolor(0xFF, 0x00, 0x00), rgbcolor(0xFF, 0xFF, 0x00), rgbcolor(0x00, 0xFF, 0x00), rgbcolor(0x00, 0xFF, 0xFF), rgbcolor(0x00, 0x00, 0xFF), //5 rgbcolor(0xFF, 0x00, 0xFF), rgbcolor(0xFF, 0xFF, 0xFF), // 7 is the "visible" color - so what normally in PostScript is black (in CAD "white" is visible) rgbcolor(0x41, 0x41, 0x41), rgbcolor(0x80, 0x80, 0x80), rgbcolor(0xFF, 0x00, 0x00), //10 rgbcolor(0xFF, 0xAA, 0xAA), rgbcolor(0xBD, 0x00, 0x00), rgbcolor(0xBD, 0x7E, 0x7E), rgbcolor(0x81, 0x00, 0x00), rgbcolor(0x81, 0x56, 0x56), //15 rgbcolor(0x68, 0x00, 0x00), rgbcolor(0x68, 0x45, 0x45), rgbcolor(0x4F, 0x00, 0x00), rgbcolor(0x4F, 0x35, 0x35), rgbcolor(0xFF, 0x3F, 0x00), //20 rgbcolor(0xFF, 0xBF, 0xAA), rgbcolor(0xBD, 0x2E, 0x00), rgbcolor(0xBD, 0x8D, 0x7E), rgbcolor(0x81, 0x1F, 0x00), rgbcolor(0x81, 0x60, 0x56), //25 rgbcolor(0x68, 0x19, 0x00), rgbcolor(0x68, 0x4E, 0x45), rgbcolor(0x4F, 0x13, 0x00), rgbcolor(0x4F, 0x3B, 0x35), rgbcolor(0xFF, 0x7F, 0x00), //30 rgbcolor(0xFF, 0xD4, 0xAA), rgbcolor(0xBD, 0x5E, 0x00), rgbcolor(0xBD, 0x9D, 0x7E), rgbcolor(0x81, 0x40, 0x00), rgbcolor(0x81, 0x6B, 0x56), //35 rgbcolor(0x68, 0x34, 0x00), rgbcolor(0x68, 0x56, 0x45), rgbcolor(0x4F, 0x27, 0x00), rgbcolor(0x4F, 0x42, 0x35), rgbcolor(0xFF, 0xBF, 0x00), //40 rgbcolor(0xFF, 0xEA, 0xAA), rgbcolor(0xBD, 0x8D, 0x00), rgbcolor(0xBD, 0xAD, 0x7E), rgbcolor(0x81, 0x60, 0x00), rgbcolor(0x81, 0x76, 0x56), //45 rgbcolor(0x68, 0x4E, 0x00), rgbcolor(0x68, 0x5F, 0x45), rgbcolor(0x4F, 0x3B, 0x00), rgbcolor(0x4F, 0x49, 0x35), rgbcolor(0xFF, 0xFF, 0x00), //50 rgbcolor(0xFF, 0xFF, 0xAA), rgbcolor(0xBD, 0xBD, 0x00), rgbcolor(0xBD, 0xBD, 0x7E), rgbcolor(0x81, 0x81, 0x00), rgbcolor(0x81, 0x81, 0x56), //55 rgbcolor(0x68, 0x68, 0x00), rgbcolor(0x68, 0x68, 0x45), rgbcolor(0x4F, 0x4F, 0x00), rgbcolor(0x4F, 0x4F, 0x35), rgbcolor(0xBF, 0xFF, 0x00), //60 rgbcolor(0xEA, 0xFF, 0xAA), rgbcolor(0x8D, 0xBD, 0x00), rgbcolor(0xAD, 0xBD, 0x7E), rgbcolor(0x60, 0x81, 0x00), rgbcolor(0x76, 0x81, 0x56), //65 rgbcolor(0x4E, 0x68, 0x00), rgbcolor(0x5F, 0x68, 0x45), rgbcolor(0x3B, 0x4F, 0x00), rgbcolor(0x49, 0x4F, 0x35), rgbcolor(0x7F, 0xFF, 0x00), //70 rgbcolor(0xD4, 0xFF, 0xAA), rgbcolor(0x5E, 0xBD, 0x00), rgbcolor(0x9D, 0xBD, 0x7E), rgbcolor(0x40, 0x81, 0x00), rgbcolor(0x6B, 0x81, 0x56), //75 rgbcolor(0x34, 0x68, 0x00), rgbcolor(0x56, 0x68, 0x45), rgbcolor(0x27, 0x4F, 0x00), rgbcolor(0x42, 0x4F, 0x35), rgbcolor(0x3F, 0xFF, 0x00), //80 rgbcolor(0xBF, 0xFF, 0xAA), rgbcolor(0x2E, 0xBD, 0x00), rgbcolor(0x8D, 0xBD, 0x7E), rgbcolor(0x1F, 0x81, 0x00), rgbcolor(0x60, 0x81, 0x56), //85 rgbcolor(0x19, 0x68, 0x00), rgbcolor(0x4E, 0x68, 0x45), rgbcolor(0x13, 0x4F, 0x00), rgbcolor(0x3B, 0x4F, 0x35), rgbcolor(0x00, 0xFF, 0x00), //90 rgbcolor(0xAA, 0xFF, 0xAA), rgbcolor(0x00, 0xBD, 0x00), rgbcolor(0x7E, 0xBD, 0x7E), rgbcolor(0x00, 0x81, 0x00), rgbcolor(0x56, 0x81, 0x56), //95 rgbcolor(0x00, 0x68, 0x00), rgbcolor(0x45, 0x68, 0x45), rgbcolor(0x00, 0x4F, 0x00), rgbcolor(0x35, 0x4F, 0x35), rgbcolor(0x00, 0xFF, 0x3F), //100 rgbcolor(0xAA, 0xFF, 0xBF), rgbcolor(0x00, 0xBD, 0x2E), rgbcolor(0x7E, 0xBD, 0x8D), rgbcolor(0x00, 0x81, 0x1F), rgbcolor(0x56, 0x81, 0x60), //105 rgbcolor(0x00, 0x68, 0x19), rgbcolor(0x45, 0x68, 0x4E), rgbcolor(0x00, 0x4F, 0x13), rgbcolor(0x35, 0x4F, 0x3B), rgbcolor(0x00, 0xFF, 0x7F), //110 rgbcolor(0xAA, 0xFF, 0xD4), rgbcolor(0x00, 0xBD, 0x5E), rgbcolor(0x7E, 0xBD, 0x9D), rgbcolor(0x00, 0x81, 0x40), rgbcolor(0x56, 0x81, 0x6B), //115 rgbcolor(0x00, 0x68, 0x34), rgbcolor(0x45, 0x68, 0x56), rgbcolor(0x00, 0x4F, 0x27), rgbcolor(0x35, 0x4F, 0x42), rgbcolor(0x00, 0xFF, 0xBF), //120 rgbcolor(0xAA, 0xFF, 0xEA), rgbcolor(0x00, 0xBD, 0x8D), rgbcolor(0x7E, 0xBD, 0xAD), rgbcolor(0x00, 0x81, 0x60), rgbcolor(0x56, 0x81, 0x76), //125 rgbcolor(0x00, 0x68, 0x4E), rgbcolor(0x45, 0x68, 0x5F), rgbcolor(0x00, 0x4F, 0x3B), rgbcolor(0x35, 0x4F, 0x49), rgbcolor(0x00, 0xFF, 0xFF), //130 rgbcolor(0xAA, 0xFF, 0xFF), rgbcolor(0x00, 0xBD, 0xBD), rgbcolor(0x7E, 0xBD, 0xBD), rgbcolor(0x00, 0x81, 0x81), rgbcolor(0x56, 0x81, 0x81), //135 rgbcolor(0x00, 0x68, 0x68), rgbcolor(0x45, 0x68, 0x68), rgbcolor(0x00, 0x4F, 0x4F), rgbcolor(0x35, 0x4F, 0x4F), rgbcolor(0x00, 0xBF, 0xFF), //140 rgbcolor(0xAA, 0xEA, 0xFF), rgbcolor(0x00, 0x8D, 0xBD), rgbcolor(0x7E, 0xAD, 0xBD), rgbcolor(0x00, 0x60, 0x81), rgbcolor(0x56, 0x76, 0x81), //145 rgbcolor(0x00, 0x4E, 0x68), rgbcolor(0x45, 0x5F, 0x68), rgbcolor(0x00, 0x3B, 0x4F), rgbcolor(0x35, 0x49, 0x4F), rgbcolor(0x00, 0x7F, 0xFF), //150 rgbcolor(0xAA, 0xD4, 0xFF), rgbcolor(0x00, 0x5E, 0xBD), rgbcolor(0x7E, 0x9D, 0xBD), rgbcolor(0x00, 0x40, 0x81), rgbcolor(0x56, 0x6B, 0x81), //155 rgbcolor(0x00, 0x34, 0x68), rgbcolor(0x45, 0x56, 0x68), rgbcolor(0x00, 0x27, 0x4F), rgbcolor(0x35, 0x42, 0x4F), rgbcolor(0x00, 0x3F, 0xFF), //160 rgbcolor(0xAA, 0xBF, 0xFF), rgbcolor(0x00, 0x2E, 0xBD), rgbcolor(0x7E, 0x8D, 0xBD), rgbcolor(0x00, 0x1F, 0x81), rgbcolor(0x56, 0x60, 0x81), //165 rgbcolor(0x00, 0x19, 0x68), rgbcolor(0x45, 0x4E, 0x68), rgbcolor(0x00, 0x13, 0x4F), rgbcolor(0x35, 0x3B, 0x4F), rgbcolor(0x00, 0x00, 0xFF), //170 rgbcolor(0xAA, 0xAA, 0xFF), rgbcolor(0x00, 0x00, 0xBD), rgbcolor(0x7E, 0x7E, 0xBD), rgbcolor(0x00, 0x00, 0x81), rgbcolor(0x56, 0x56, 0x81), //175 rgbcolor(0x00, 0x00, 0x68), rgbcolor(0x45, 0x45, 0x68), rgbcolor(0x00, 0x00, 0x4F), rgbcolor(0x35, 0x35, 0x4F), rgbcolor(0x3F, 0x00, 0xFF), //180 rgbcolor(0xBF, 0xAA, 0xFF), rgbcolor(0x2E, 0x00, 0xBD), rgbcolor(0x8D, 0x7E, 0xBD), rgbcolor(0x1F, 0x00, 0x81), rgbcolor(0x60, 0x56, 0x81), //185 rgbcolor(0x19, 0x00, 0x68), rgbcolor(0x4E, 0x45, 0x68), rgbcolor(0x13, 0x00, 0x4F), rgbcolor(0x3B, 0x35, 0x4F), rgbcolor(0x7F, 0x00, 0xFF), //190 rgbcolor(0xD4, 0xAA, 0xFF), rgbcolor(0x5E, 0x00, 0xBD), rgbcolor(0x9D, 0x7E, 0xBD), rgbcolor(0x40, 0x00, 0x81), rgbcolor(0x6B, 0x56, 0x81), //195 rgbcolor(0x34, 0x00, 0x68), rgbcolor(0x56, 0x45, 0x68), rgbcolor(0x27, 0x00, 0x4F), rgbcolor(0x42, 0x35, 0x4F), rgbcolor(0xBF, 0x00, 0xFF), //200 rgbcolor(0xEA, 0xAA, 0xFF), rgbcolor(0x8D, 0x00, 0xBD), rgbcolor(0xAD, 0x7E, 0xBD), rgbcolor(0x60, 0x00, 0x81), rgbcolor(0x76, 0x56, 0x81), //205 rgbcolor(0x4E, 0x00, 0x68), rgbcolor(0x5F, 0x45, 0x68), rgbcolor(0x3B, 0x00, 0x4F), rgbcolor(0x49, 0x35, 0x4F), rgbcolor(0xFF, 0x00, 0xFF), //210 rgbcolor(0xFF, 0xAA, 0xFF), rgbcolor(0xBD, 0x00, 0xBD), rgbcolor(0xBD, 0x7E, 0xBD), rgbcolor(0x81, 0x00, 0x81), rgbcolor(0x81, 0x56, 0x81), //215 rgbcolor(0x68, 0x00, 0x68), rgbcolor(0x68, 0x45, 0x68), rgbcolor(0x4F, 0x00, 0x4F), rgbcolor(0x4F, 0x35, 0x4F), rgbcolor(0xFF, 0x00, 0xBF), //220 rgbcolor(0xFF, 0xAA, 0xEA), rgbcolor(0xBD, 0x00, 0x8D), rgbcolor(0xBD, 0x7E, 0xAD), rgbcolor(0x81, 0x00, 0x60), rgbcolor(0x81, 0x56, 0x76), //225 rgbcolor(0x68, 0x00, 0x4E), rgbcolor(0x68, 0x45, 0x5F), rgbcolor(0x4F, 0x00, 0x3B), rgbcolor(0x4F, 0x35, 0x49), rgbcolor(0xFF, 0x00, 0x7F), //230 rgbcolor(0xFF, 0xAA, 0xD4), rgbcolor(0xBD, 0x00, 0x5E), rgbcolor(0xBD, 0x7E, 0x9D), rgbcolor(0x81, 0x00, 0x40), rgbcolor(0x81, 0x56, 0x6B), //235 rgbcolor(0x68, 0x00, 0x34), rgbcolor(0x68, 0x45, 0x56), rgbcolor(0x4F, 0x00, 0x27), rgbcolor(0x4F, 0x35, 0x42), rgbcolor(0xFF, 0x00, 0x3F), //240 rgbcolor(0xFF, 0xAA, 0xBF), rgbcolor(0xBD, 0x00, 0x2E), rgbcolor(0xBD, 0x7E, 0x8D), rgbcolor(0x81, 0x00, 0x1F), rgbcolor(0x81, 0x56, 0x60), //245 rgbcolor(0x68, 0x00, 0x19), rgbcolor(0x68, 0x45, 0x4E), rgbcolor(0x4F, 0x00, 0x13), rgbcolor(0x4F, 0x35, 0x3B), rgbcolor(0x33, 0x33, 0x33), //250 rgbcolor(0x50, 0x50, 0x50), rgbcolor(0x69, 0x69, 0x69), rgbcolor(0x82, 0x82, 0x82), rgbcolor(0xBE, 0xBE, 0xBE), rgbcolor(0xFF, 0xFF, 0xFF) //255 }; const unsigned short DXFColor::numberOfColors = sizeof(DXFColor::DXFColors) / sizeof(DXFColor::rgbcolor); //const unsigned short global_numberOfColors = DXFColor::numberOfColors; static inline unsigned short floatColTointCol(float fcol) { return (unsigned short) (fcol*255); } class DXFLayers { public: static RSString normalizeColorName(const RSString & s){ // normalizes color names such that they can be used as DXF layer names // all characters are converted to upper case // all non-alphanumeric characters are replaced by '_' RSString normalized(s); char * cp = (char *) normalized.value(); while (cp && *cp) { if(islower(*cp) && isascii(*cp)) { *cp = (char) toupper(*cp); } if (!isalnum(*cp)) { *cp = '_'; // replace all not alphanumeric characters with _ } cp++; } return normalized; } struct Layer { Layer(float r, float g, float b, struct Layer * next_p = 0): rgb(floatColTointCol(r),floatColTointCol(g),floatColTointCol(b)), next(next_p) {} DXFColor::rgbcolor rgb; struct Layer * next; }; struct NamedLayer { NamedLayer(RSString s, struct NamedLayer * next_p=0): layerName(s), next(next_p) {} RSString layerName; struct NamedLayer* next; }; Layer * LayerTable[DXFColor::numberOfColors]; // for each color as defined in dxfcolor, we can have a linked list of layers // This acts like a hash table with numberofcolors entries and the LayerList as buckets. // we may at the end have several layers for the same color ("same" modulo the number of // entries in DXFColor, i.e. "best match") - but the layerNames are still representing the exact color. unsigned int numberOfLayers; NamedLayer * namedLayers; // just a list of Layernames - these names from from PostScript Separation names // and are used in the DXF without any color values (or better said - mapped to B&W color) DXFLayers() : numberOfLayers(0), namedLayers(0) { for (unsigned int i = 0; i < DXFColor::numberOfColors; i++) LayerTable[i]= 0; } ~DXFLayers() { for (unsigned int i = 0; i < DXFColor::numberOfColors; i++) { Layer * p = LayerTable[i]; while (p) { Layer* pnext = p->next; delete p; p = pnext; } LayerTable[i]= 0; } NamedLayer* nl = namedLayers; while (nl) { NamedLayer* pnext = nl->next; delete nl; nl = pnext; } } void rememberLayerName(const RSString & s) { NamedLayer* nl = namedLayers; while (nl) { if (nl->layerName == s) return; nl = nl->next; } // not found - so prepend to list; NamedLayer* newlayer = new NamedLayer(s,namedLayers); namedLayers = newlayer; // prepend to list; numberOfLayers++; } bool alreadyDefined(float r, float g, float b, unsigned int index) const { assert(index < DXFColor::numberOfColors); const unsigned short R = floatColTointCol(r); const unsigned short G = floatColTointCol(g); const unsigned short B = floatColTointCol(b); Layer * ptr = LayerTable[index]; while(ptr) { if( (ptr->rgb.r == R) && (ptr->rgb.g == G) && (ptr->rgb.b == B) ) { // cout << "already defined" << R << " " << G << " " << B << endl; return true; } ptr = ptr->next; } // cout << "not yet defined" << R << " " << G << " " << B << endl; return false; } void defineLayer(float r, float g, float b, unsigned int index) { assert(index < DXFColor::numberOfColors); Layer * headptr = LayerTable[index]; // prepend new layer to the linked list Layer * newlayer = new Layer(r,g,b,headptr); LayerTable[index] = newlayer; numberOfLayers++; } static const char * getLayerName(unsigned short r,unsigned short g,unsigned short b) { static char stringbuffer[20]; // format: "Cxx-xx-xx" (10 chars) sprintf_s(TARGETWITHLEN(stringbuffer,20),"C%02X-%02X-%02X",r,g,b); return stringbuffer; } static const char * getLayerName(float r, float g, float b) { // rgb is in range 0..1.0f const unsigned short R = floatColTointCol(r); const unsigned short G = floatColTointCol(g); const unsigned short B = floatColTointCol(b); return getLayerName(R,G,B); } }; /* results: (25.12.2001) (v - VoloView ; i - IntelliCAD) p2ed -f dxf_s:-splineasbezier curvetest.ps curve_bz.dxf v ok i ok p2ed -f dxf_s:-splineaspolyline curvetest.ps curve_pl.dxf v ok i ok #p2ed -f dxf_s:-splineasnurb curvetest.ps curve_nu.dxf v no i syntaktisch ja, aber die koordinaten werden falsch interpretiert (y als z) #p2ed -f dxf_s:-splineasbspline curvetest.ps curve_bs.dxf v no i syntaktisch ja, aber die koordinaten werden falsch interpretiert (y als z) #p2ed -f dxf_s:-splineassinglespline curvetest.ps curve_ss.dxf v no i syntaktisch ja, aber die koordinaten werden falsch interpretiert (y als z) #p2ed -f dxf_s:-splineasmultispline curvetest.ps curve_ms.dxf v ok, but a bit strange i same as acad p2ed -f dxf curvetest.ps curve_np.dxf v ok i ok p2ed -f dxf:-polyaslines curvetest.ps curve_nl.dxf v ok i ok */ drvDXF::derivedConstructor(drvDXF): constructBase, splinemode(asbezier), // polyaslines(0), // mm(false), formatis14(true), // !!!! THESE TWO NEED TO BE CONSISTENT // splineprecision(5), // colorsToLayers(false), #ifdef withshortheaders header(dxf14shortheader), trailer(dxf14shorttrailer), #else header_prelayer1(dxf14acadheader_prelayer1), header_prelayer2(dxf14acadheader_prelayer2), header_postlayer(dxf14acadheader_postlayer), trailer(dxf14acadtrailer), #endif layers(new DXFLayers), handleint(255), scalefactor(1.0f), buffer(tempFile.asOutput()) { const bool withcurves = Pdriverdesc && Pdriverdesc->backendSupportsCurveto; if (!withcurves) { formatis14 = false; // if no curves are generated by the frontent, no splines can occur and thus the old header is sufficient header_prelayer1 = dxf9shortheader_prelayer; header_prelayer2 = 0; header_postlayer = dxf9shortheader_postlayer; trailer = dxf9shorttrailer; } if (options->splineasbezier) { splinemode = asbezier; formatis14 = true; if (!withcurves) errf << "Option -splineasbezier ignored - only valid for dxf_c format" << endl; } else if (options->splineaspolyline) { splinemode = aspolyline; formatis14 = true; if (!withcurves) errf << "Option -splineaspolyline ignored - only valid for dxf_c format" << endl; } else if (options->splineasnurb) { splinemode = asnurb; formatis14 = true; if (!withcurves) errf << "Option -splineasmultispline ignored - only valid for dxf_c format" << endl; } else if (options->splineasbspline) { splinemode = asbspline; formatis14 = true; if (!withcurves) errf << "Option -splineasmultispline ignored - only valid for dxf_c format" << endl; } else if (options->splineasmultispline) { splinemode = asmultispline; formatis14 = true; if (!withcurves) errf << "Option -splineasmultispline ignored - only valid for dxf_c format" << endl; } else if (options->splineassinglespline) { splinemode = assinglespline;formatis14 = true; if (!withcurves) errf << "Option -splineassinglespline ignored - only valid for dxf_c format" << endl; } if (options->splineprecision < 2) { errf << "splineprecision argument should be >=2. Set to 2" << endl; options->splineprecision = 2; } outf << header_prelayer1; if (formatis14) { if(options->mm) { outf << "$MEASUREMENT\n" " 70\n" "1\n" // 1 means metrix - 0 english ; } else { outf << "$MEASUREMENT\n" " 70\n" "0\n" // 1 means metrix - 0 english ; } } else { // // unfortunately we cannot write the $MEASUREMENT statement into old style files // otherwise voloview does not accept the file // // so this may lead to "wrong" scaling. The -mm option turns on mm, but the file is // still displayed in inch-mode since that seems to be the default in DXF. // } if (header_prelayer2) outf << header_prelayer2; if (options->mm) { //debug cout << "mm enabled " << endl; scalefactor = 25.4f/72.0f; } else { //debug cout << "inch enabled " << endl; scalefactor = 1.0f/72.0f; } } void drvDXF::writelayerentry(ostream & outs, unsigned int color, const char * layername) { outs << " 0\n" "LAYER\n"; if (formatis14) { writeHandle(outs); outs << "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLayerTableRecord\n"; } outs << " 2\n" << layername << endl; // layername outs << " 70\n" "0\n" // unfrozen " 62\n"; outs << color << endl; // color outs << " 6\n" "CONTINUOUS\n" ; // linestyle } drvDXF::~drvDXF() { // write size of color definition table if (options->colorsToLayers) { outf << layers->numberOfLayers + 4 << endl; // 2 layers for C00-00-00-BLACK and CFF-FF-FF-WHITE and one predefined and one reserve } else { outf << "1" << endl; } if (formatis14) outf << layer0def; else outf << layer0short; if (options->colorsToLayers) { // write the layer definitions writelayerentry(outf,7,"C00-00-00-BLACK"); // both black and white have color 7 ("visible") writelayerentry(outf,7,"CFF-FF-FF-WHITE"); for (unsigned int i = 0; i < DXFColor::numberOfColors; i++) { DXFLayers::Layer * layer = layers->LayerTable[i]; while (layer) { DXFLayers::Layer* pnext = layer->next; if (options->dumplayernames) { cout << "Layer (generated): " << DXFLayers::getLayerName(layer->rgb.r,layer->rgb.g,layer->rgb.b) << endl; } writelayerentry(outf,i,DXFLayers::getLayerName(layer->rgb.r,layer->rgb.g,layer->rgb.b)); layer = pnext; } } DXFLayers::NamedLayer * nl = layers->namedLayers; while (nl) { if (options->dumplayernames) { cout << "Layer (defined in input): " << nl->layerName.value() << endl; } writelayerentry(outf,7,nl->layerName.value()); nl = nl->next; } } outf << header_postlayer; // now we can copy the buffer the output ifstream & inbuffer = tempFile.asInput(); copy_file(inbuffer, outf); outf << trailer; //lint -esym(1740,header) // no need to free header. //lint -esym(1740,trailer) // no need to free trailer. header_prelayer1 = 0; header_prelayer2 = 0; header_postlayer = 0; trailer = 0; delete layers; layers = 0; options=0; } void drvDXF::writeHandle(ostream & outs) { // VoloView needs the handle, intellicad doesn't need it but they don't harm outs << " 5\n" << hex << handleint << dec << endl; handleint++; } void drvDXF::writeLayer(float r, float g, float b, const RSString& colorName) { // // Some notes about layers: // // If layers are not defined in the header, they implicitly get color white. // An object drawn on a specific layer can either get the color by the layer (BYLAYER) // or define its own color (so far BYLAYER is not used by pstoedit) // buffer << " 8\n"; #if 1 buffer << calculateLayerString(r,g,b,colorName) << endl; #else if (options->colorsToLayers) { const float roundinglimit = 0.001f; // map black (0,0,0) to layer 7-black and white (1,1,1) to 7-white if (colorName != "") { cout << colorName << endl; } else if ((r < roundinglimit) && (g < roundinglimit) && (b < roundinglimit) ) { // black buffer << "C00-00-00-BLACK" << endl; } else if ( (r > (1.0f- roundinglimit)) && (g > (1.0f- roundinglimit)) && (b > (1.0f- roundinglimit)) ) { buffer << "CFF-FF-FF-WHITE" << endl; // white } else { const unsigned int dxfcolor = DXFColor::getDXFColor(r,g,b,1); const char * layerString = DXFLayers::getLayerName(r,g,b); if (! (layers->alreadyDefined(r,g,b,dxfcolor))) { layers->defineLayer(r,g,b,dxfcolor); // cout << "defined new layer " << layerString << endl; } buffer << layerString << endl; } } else { buffer << "0\n"; } #endif } RSString drvDXF::calculateLayerString(float r, float g, float b, const RSString& colorName) { // // Some notes about layers: // // If layers are not defined in the header, they implicitly get color white. // An object drawn on a specific layer can either get the color by the layer (BYLAYER) // or define its own color (so far BYLAYER is not used by pstoedit) // if (options->colorsToLayers) { const float roundinglimit = 0.001f; // map black (0,0,0) to layer 7-black and white (1,1,1) to 7-white if (colorName != "") { layers->rememberLayerName(colorName); return colorName ; } else if ((r < roundinglimit) && (g < roundinglimit) && (b < roundinglimit) ) { // black return RSString( "C00-00-00-BLACK"); } else if ( (r > (1.0f- roundinglimit)) && (g > (1.0f- roundinglimit)) && (b > (1.0f- roundinglimit)) ) { return RSString( "CFF-FF-FF-WHITE"); // white } else { const unsigned int dxfcolor = DXFColor::getDXFColor(r,g,b,1); const char * layerString = DXFLayers::getLayerName(r,g,b); if (! (layers->alreadyDefined(r,g,b,dxfcolor))) { layers->defineLayer(r,g,b,dxfcolor); // cout << "defined new layer " << layerString << endl; } return RSString(layerString); } } else { return RSString("0"); } } bool drvDXF::wantedLayer(float r, float g, float b,const RSString& colorName) // layer shall be written { // inspect layerpositivfilter and layerpositivfilter // use colorname if set, else calculate layername from color // then if positivfilter is set, then check if contained in that one -> true // else if negativfilter is set, then check if contained in that one -> false // else -> true static const RSString comma(","); // used as delimiter for string based containment test if (options->layerpositivfilter.value != "" ) { static const RSString compareto = comma + options->layerpositivfilter.value + comma; const RSString layerstring = comma + calculateLayerString(r,g,b,colorName) + comma ; // cout << "L: " << layerstring << " P:" << options->layerpositivfilter << " " << options->layerpositivfilter.value.contains(layerstring) << endl; return compareto.contains(layerstring); } else if (options->layernegativfilter.value != "" ) { const RSString layerstring = comma + calculateLayerString(r,g,b,colorName) + comma; static const RSString compareto = comma + options->layerpositivfilter.value + comma; // cout << "L: " << layerstring << " N:" << options->layernegativfilter << " " << !options->layernegativfilter.value.contains(layerstring) << endl; return !compareto.contains(layerstring); } else return true; } void drvDXF::close_page() { /*buffer << "#Seite beendet.\n";*/ } void drvDXF::open_page() { /*buffer << "#Seite Nr. " << currentPageNumber << "\n";*/ } void drvDXF::show_text(const TextInfo & textinfo) { if (wantedLayer(textinfo.currentR, textinfo.currentG, textinfo.currentB,DXFLayers::normalizeColorName(textinfo.colorName))) { buffer << " 0\n" "TEXT\n"; if (formatis14) { writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(textinfo.currentR, textinfo.currentG, textinfo.currentB,DXFLayers::normalizeColorName(textinfo.colorName)); //" 8\n" "0\n" buffer << "100\n" "AcDbText\n"; } else { writeLayer(textinfo.currentR, textinfo.currentG, textinfo.currentB,DXFLayers::normalizeColorName(textinfo.colorName)); //buffer << " 8\n" "0\n"; } // color if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(textinfo.currentR, textinfo.currentG, textinfo.currentB) << "\n"; buffer << " 10\n" << textinfo.x * scalefactor << "\n"; buffer << " 20\n" << textinfo.y * scalefactor << "\n"; buffer << " 30\n" << 0.0 << "\n"; buffer << " 40\n" << textinfo.currentFontSize * scalefactor << "\n"; buffer << " 1\n" << textinfo.thetext.value() << "\n"; buffer << " 50\n" << textinfo.currentFontAngle << "\n"; if (formatis14) { buffer << "100\n" "AcDbText\n"; } } } void drvDXF::printPoint(const Point & p, unsigned short add) { buffer << " " << add << "\n" << p.x_* scalefactor << "\n"; buffer << " " << 10 + add << "\n" << p.y_* scalefactor << "\n"; buffer << " " << 20 + add << "\n" << "0.0" << "\n"; } void drvDXF::drawVertex(const Point & p, bool withlinewidth, int val70) { if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { buffer << " 0\nVERTEX\n"; // " 8\n0\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); printPoint(p, 10); if (withlinewidth) { const double lineWidth = currentLineWidth()* scalefactor; buffer << " 40\n" << lineWidth << "\n 41\n" << lineWidth << "\n"; } if (val70) // used only for try with spline type polylines (which doesn't work anyway) buffer << " 70\n 16\n"; } } void drvDXF::drawLine(const Point & start_p, const Point & end_p) { if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { buffer << " 0\nLINE\n"; // " 8\n0\n"; if (formatis14) { writeHandle(buffer); //entity buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); //buffer << " 8\n" "0\n" ; buffer << "100\n" "AcDbLine" << endl; } else { writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); } // color if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << '\n'; printPoint(start_p, 10); printPoint(end_p, 11); } } #if 0 0 LINE 5 64 100 AcDbEntity 8 0 100 AcDbLine 10 - 13.272601 20 347.062801 30 0.0 11 89.636603 21 270.615964 31 0.0 #endif #if 0 /* Spline group codes Group codes Description 100 Subclass marker (AcDbSpline) 210 Normal vector (omitted if the spline is nonplanar) DXF: X value; APP: 3D vector 220, 230 DXF: Y and Z values of normal vector 70 Spline flag (bit coded): 1 = Closed spline 2 = Periodic spline 4 = Rational spline 8 = Planar 16 = Linear (planar bit is also set) 71 Degree of the spline curve 72 Number of knots 73 Number of control points 74 Number of fit points (if any) 42 Knot tolerance (default = 0.0000001) 43 Control-point tolerance (default = 0.0000001) 44 Fit tolerance (default = 0.0000000001) 12 Start tangent--may be omitted (in WCS). DXF: X value; APP: 3D point. 22, 32 DXF: Y and Z values of start tangent--may be omitted (in WCS). 13 End tangent--may be omitted (in WCS). DXF: X value; APP: 3D point. 23, 33 DXF: Y and Z values of end tangent--may be omitted (in WCS) 40 Knot value (one entry per knot) 41 Weight (if not 1); with multiple group pairs, are present if all are not 1 10 Control points (in WCS) one entry per control point. DXF: X value; APP: 3D point 20, 30 DXF: Y and Z values of control points (in WCS) (one entry per control point) 11 Fit points (in WCS) one entry per fit point. DXF: X value; APP: 3D point 21, 31 DXF: Y and Z values of fit points (in WCS) (one entry per fit point) */ #endif //NU const unsigned short ClosedSpline = 1 ; //= Closed spline //NU const unsigned short PeriodicSpline = 2 ; //= Periodic spline const unsigned short RationalSpline = 4 ; //= Rational spline //NU const unsigned short PlanarSpline = 8 ; //= Planar //NU const unsigned short LinearSpline = 16 ; //= Linear (planar bit is also set) void drvDXF::writesplinetype(const unsigned short stype = 0) { buffer << " 70\n " << stype << "\n"; /* spline type: */ } void drvDXF::curvetoAsBezier(const basedrawingelement & elem, const Point & currentpoint) { // single spline representation - // each curveto is one SPLINE element // only the 4 points of the curveto are used // if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { buffer << " 0\nSPLINE\n"; writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); //buffer << " 8\n0\n"; /* Layer */ buffer << "100\n" "AcDbSpline\n"; buffer << "210\n0.0\n220\n0.0\n230\n1.0\n"; /* Norm vector */ if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << '\n'; writesplinetype( 0 ); buffer << " 71\n 3\n"; /* degree of curve */ buffer << " 72\n 8\n"; /* no of knots */ buffer << " 73\n" << 4 << "\n"; /* no of control points */ // knot values buffer << " 40\n0.0\n"; buffer << " 40\n0.0\n"; buffer << " 40\n0.0\n"; buffer << " 40\n0.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n1.0\n"; // START_POINT(first).x, START_POINT(first).y); /* 10 control points 11 fit points 40 knot values */ const Point & cp1 = elem.getPoint(0); const Point & cp2 = elem.getPoint(1); const Point & ep = elem.getPoint(2); // control points - same as the bezier points printPoint(currentpoint, 10); printPoint(cp1, 10); printPoint(cp2, 10); printPoint(ep, 10); } } void drvDXF::curvetoAsNurb(const basedrawingelement & elem, const Point & currentpoint) { // single spline representation - // each curveto is one SPLINE element // only the 4 points of the curveto are used // // Here we use the mapping to Nurbs as described in Schneiders Nurbs tutorial // // if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { buffer << " 0\nSPLINE\n"; writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); //buffer << " 8\n0\n"; /* Layer */ buffer << "100\n" "AcDbSpline\n"; buffer << "210\n0.0\n220\n0.0\n230\n1.0\n"; /* Norm vector */ if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << '\n'; writesplinetype( RationalSpline ); buffer << " 71\n 3\n"; /* degree of curve */ buffer << " 72\n 8\n"; /* no of knots */ buffer << " 73\n" << 4 << "\n"; /* no of control points */ // knot values buffer << " 40\n0.0\n"; buffer << " 40\n0.0\n"; buffer << " 40\n0.0\n"; buffer << " 40\n0.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n1.0\n"; // START_POINT(first).x, START_POINT(first).y); /* 10 control points 11 fit points 40 knot values */ const Point & cp1 = elem.getPoint(0); const Point & cp2 = elem.getPoint(1); const Point & ep = elem.getPoint(2); // control points - same as the bezier points printPoint(currentpoint, 10); printPoint(cp1, 10); printPoint(cp2, 10); printPoint(ep, 10); } } void drvDXF::curvetoAsBSpline(const basedrawingelement & elem, const Point & currentpoint) { // single spline representation - // each curveto is one B-SPLINE element // only the 4 points of the curveto are used // // The Bezier points are transformed to the corresponding B-Spline control points. // if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { buffer << " 0\nSPLINE\n"; writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); //buffer << " 8\n0\n"; /* Layer */ buffer << "100\n" "AcDbSpline\n"; buffer << "210\n0.0\n220\n0.0\n230\n1.0\n"; /* Norm vector */ if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << '\n'; writesplinetype(RationalSpline); buffer << " 71\n 3\n"; /* degree of curve */ #define bsplinewithknots #ifdef bsplinewithknots buffer << " 72\n 8\n"; /* no of knots */ #else buffer << " 72\n 0\n"; /* no of knots */ #endif buffer << " 73\n" << 4 << "\n"; /* no of control points */ #ifdef bsplinewithknots // knot values buffer << " 40\n0.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n2.0\n"; buffer << " 40\n3.0\n"; buffer << " 40\n4.0\n"; buffer << " 40\n5.0\n"; buffer << " 40\n6.0\n"; buffer << " 40\n7.0\n"; #endif /* 10 control points 11 fit points 40 knot values */ const Point & bp0 = currentpoint; const Point & bp1 = elem.getPoint(0); const Point & bp2 = elem.getPoint(1); const Point & bp3 = elem.getPoint(2); /* bezier to bspline control point transformation matrix according to mail from Steve Noskow 6 -7 2 0 0 2 -1 0 0 -1 2 0 0 2 -7 6 */ //lint -save -e747 //The conversions from int to float are OK here. const Point sp0 = (bp0* ( 6)) + (bp1* (-7)) + (bp2* ( 2)) ; const Point sp1 = (bp1* ( 2)) + (bp2* (-1)) ; const Point sp2 = (bp1* (-1)) + (bp2* ( 2)) ; const Point sp3 = (bp1* ( 2)) + (bp2* (-7)) + (bp3* ( 6)) ; //lint -restore // b-spline control points printPoint(sp0, 10); printPoint(sp1, 10); printPoint(sp2, 10); printPoint(sp3, 10); } } void drvDXF::curvetoAsOneSpline(const basedrawingelement & elem, const Point & currentpoint) { // single spline representation - // each curveto is one SPLINE element // only the 4 points of the curveto are used // // this doesn's seem to work stable enough. It is unclear what are control points in DXF and // what are fit points. In all viewers I tried, the control points had no effect. // // if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { buffer << " 0\nSPLINE\n"; writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); // << " 8\n0\n"; /* Layer */ buffer << "100\n" "AcDbSpline\n"; buffer << "210\n0.0\n220\n0.0\n230\n1.0\n"; /* Norm vector */ if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << '\n'; writesplinetype(RationalSpline); /* 8: planar; 1 closed; 2 periodic; 16 linear */ buffer << " 71\n 3\n"; /* degree of curve */ #ifdef bsplinewithknots buffer << " 72\n 10\n"; /* no of knots */ // knot values buffer << " 40\n0.0\n"; buffer << " 40\n1.0\n"; buffer << " 40\n2.0\n"; buffer << " 40\n3.0\n"; buffer << " 40\n4.0\n"; buffer << " 40\n5.0\n"; buffer << " 40\n6.0\n"; buffer << " 40\n7.0\n"; buffer << " 40\n8.0\n"; buffer << " 40\n9.0\n"; #else buffer << " 72\n 0\n"; /* no of knots */ #endif // approach with the phantom nodes // (abcd) -> d1=(b-a);d2=(d-c) ; (a-d1),(a),(a+d1==b),(d-d2==c),(d),(d+d2) buffer << " 73\n" << 6 << "\n"; /* no of control points */ // buffer << " 74\n" << 2 << "\n"; /* no of fit points */ // buffer << " 44\n0.0000000001\n"; //, 0.0000000001); /* fit tolerance */ /* 10 control points 11 fit points 40 knot values */ const Point & a = currentpoint; const Point & b = elem.getPoint(0); const Point & c = elem.getPoint(1); const Point & d = elem.getPoint(2); const Point delta1= b + (a * -1.0f); const Point delta2= d + (c * -1.0f); // printPoint(cp1,12) ; // 12 22 32 // start tanget // printPoint(cp2,13) ; // 13 23 33 // end tanget printPoint(a + (delta1 * -1.0f), 10); // 12 22 32 printPoint(a, 10); // 13 23 33 printPoint(b, 10); // 13 23 33 printPoint(c, 10); // 12 22 32 printPoint(d, 10); // 13 23 33 printPoint(d + delta2 , 10); // 13 23 33 } } void drvDXF::curvetoAsMultiSpline(const basedrawingelement & elem, const Point & currentpoint) { if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { // multiple fit points on a single SPLINE const unsigned int fitpoints = options->splineprecision.value ; // 4; buffer << " 0\nSPLINE\n"; writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); // << " 8\n0\n"; /* Layer */ buffer << "100\n" "AcDbSpline\n"; buffer << "210\n0.0\n220\n0.0\n230\n1.0\n"; /* Norm vector */ if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << '\n'; writesplinetype( 0 ); /* 8: planar; 1 closed; 2 periodic; 16 linear */ buffer << " 71\n 3\n"; // , 3); /* degree of curve */ buffer << " 72\n 0\n"; //, 0); /* no of knots */ buffer << " 73\n" << 0 << "\n"; // ????????? , SPLINE_LIST_LENGTH (list)); /* no of control points */ buffer << " 74\n" << fitpoints << "\n"; // , SPLINE_LIST_LENGTH (list)); /* no of fit points */ //wogl buffer << " 42\n0.0000001\n"; // , 0.0000001); /* knot tolerance */ //wogl buffer << " 43\n0.0000001\n"; //, 0.0000001); /* control-point tolerance */ buffer << " 44\n0.0000000001\n"; //, 0.0000000001); /* fit tolerance */ // START_POINT(first).x, START_POINT(first).y); /* 10 control points 11 fit points 40 knot values */ const Point & cp1 = elem.getPoint(0); const Point & cp2 = elem.getPoint(1); const Point & ep = elem.getPoint(2); for (unsigned int s = 0; s < fitpoints; s++) { const float t = 1.0f * s / (fitpoints - 1); const Point pt = PointOnBezier(t, currentpoint, cp1, cp2, ep); printPoint(pt, 11); // 12 22 32 fit points } } } void drvDXF::curvetoAsPolyLine(const basedrawingelement & elem, const Point & currentpoint) { if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { // approximate spline with lines. const unsigned int sections = options->splineprecision.value ; // 20; buffer << " 0\nLWPOLYLINE\n"; writeHandle(buffer); buffer << "100\n" "AcDbEntity\n"; writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); // buffer << " 8\n0\n"; buffer << "100\n" "AcDbPolyline\n"; buffer << " 90\n"; // number of edges buffer << (sections+1) << endl; buffer << " 70\n" " 0\n"; // color if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << "\n"; // the following lines marked with nolw are not needed with the lwpolyline object. // vertex flag (always 1) //nolw buffer << " 66\n 1\n"; // base point // buffer << " 10\n0.0\n 20\n0.0\n 30\n0.0\n"; //nolw printPoint(Point(0.0f,0.0f), 10); const Point & cp1 = elem.getPoint(0); const Point & cp2 = elem.getPoint(1); const Point & ep = elem.getPoint(2); for (unsigned int s = 0; s <= sections; s++) { const float t = 1.0f * s / sections; const Point pt = PointOnBezier(t, currentpoint, cp1, cp2, ep); //nolw drawVertex(pt, false); printPoint(pt,10); } //nolw buffer << " 0\nSEQEND\n 8\n0\n"; } } #if 0 const polysplines = false; // old try using polyline and splines - but doesn't seem to work // Polylines with type spline seem to have as well the approximating lines. // draw them just as polygon through the edge and control points (I know, this is not correct) if (0) { buffer << " 0\nPOLYLINE\n 8\n0\n"; // color if (!colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << "\n"; // vertex flag (always 1) buffer << " 66\n 1\n"; // base point printPoint(Point(0.0f,0.0f) 10)); // buffer << " 10\n0.0\n 20\n0.0\n 30\n0.0\n"; if (polysplines) { // start and end line width buffer << " 40\n" << lineWidth << "\n 41\n" << lineWidth << "\n"; // polytype flag : always open curve buffer << " 70\n 4\n"; // degree 5 means spline of degree 3 buffer << " 75\n 5\n"; } drawVertex(currentPoint, polysplines, polysplines ? 48 : 0); for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); drawVertex(p, polysplines, polysplines ? 16 : 0); currentPoint = p; } buffer << " 0\nSEQEND\n 8\n0\n"; #endif void drvDXF::show_path() { if (Pdriverdesc && Pdriverdesc->backendSupportsCurveto) { Point currentPoint(0.0f, 0.0f); const Point firstPoint = pathElement(0).getPoint(0); for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); currentPoint = p; } break; case lineto:{ const Point & p = elem.getPoint(0); drawLine(currentPoint, p); currentPoint = p; } break; case closepath: drawLine(currentPoint, firstPoint); break; case curveto:{ switch (splinemode) { case aspolyline: curvetoAsPolyLine(elem, currentPoint); break; case assinglespline: curvetoAsOneSpline(elem, currentPoint); break; case asmultispline: curvetoAsMultiSpline(elem, currentPoint); break; case asnurb: curvetoAsNurb(elem, currentPoint); break; case asbspline: curvetoAsBSpline(elem, currentPoint); break; case asbezier: curvetoAsBezier(elem, currentPoint); break; } currentPoint = elem.getPoint(2); } break; default: errf << "\t\tFatal: unexpected case in drvdxf " << endl; abort(); break; } // end switch } // end for } else if (options->polyaslines) { // Curveto not supported // not used, since lines can't have a width // || // it's just a simple line // ((numberOfElementsInPath() == 2) // && (pathElement(0).getType() == moveto) // && (pathElement(1).getType() == lineto)) for (unsigned int t = 1; t < numberOfElementsInPath(); t++) { const Point & p = pathElement(t - 1).getPoint(0); const Point & q = pathElement(t).getPoint(0); drawLine(p, q); } } else { if (wantedLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName()))) { // no curveto and not forced to draw LINEs - use PolyLine/VERTEX then buffer << " 0\nPOLYLINE\n"; // layer writeLayer(currentR(), currentG(), currentB(),DXFLayers::normalizeColorName(currentColorName())); // color if (!options->colorsToLayers) buffer << " 62\n " << DXFColor::getDXFColor(currentR(), currentG(), currentB()) << "\n"; // vertex flag (always 1) buffer << " 66\n 1\n"; // base point printPoint(Point(0.0f,0.0f), 10); // buffer << " 10\n0.0\n 20\n0.0\n 30\n0.0\n"; if (isPolygon()) { buffer << " 70\n 1\n"; } // start and end line width { const float lineWidth = currentLineWidth(); buffer << " 40\n" << lineWidth << "\n 41\n" << lineWidth << "\n"; } for (unsigned int t = 0; t < numberOfElementsInPath(); t++) { const Point & p = pathElement(t).getPoint(0); drawVertex(p, true, 0); } buffer << " 0\nSEQEND\n"" 8\n0\n"; } } } static DriverDescriptionT < drvDXF > D_dxf("dxf", "CAD exchange format","", "dxf", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); static DriverDescriptionT < drvDXF > D_dxf_s("dxf_s", "CAD exchange format with splines","", "dxf", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvdxf.h0000644000175500010010000001267712137224255012467 00000000000000#ifndef __drvDXF_h #define __drvDXF_h /* drvDXF.h : This file is part of pstoedit Interface for new driver backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvDXF : public drvbase { public: derivedConstructor(drvDXF); // (const char * driveroptions_P,ostream & theoutStream ,ostream & theerrStream ); // Constructor ~drvDXF(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor > polyaslines ; OptionT < bool, BoolTrueExtractor > mm ; OptionT < bool, BoolTrueExtractor > colorsToLayers ; OptionT < bool, BoolTrueExtractor > splineaspolyline ; OptionT < bool, BoolTrueExtractor > splineasnurb ; OptionT < bool, BoolTrueExtractor > splineasbspline ; OptionT < bool, BoolTrueExtractor > splineassinglespline ; OptionT < bool, BoolTrueExtractor > splineasmultispline ; OptionT < bool, BoolTrueExtractor > splineasbezier ; OptionT < int, IntValueExtractor > splineprecision ; OptionT < bool, BoolTrueExtractor > dumplayernames ; OptionT < RSString, RSStringValueExtractor > layerpositivfilter; OptionT < RSString, RSStringValueExtractor > layernegativfilter; DriverOptions(): polyaslines(true,"-polyaslines",0,0,"use LINE instead of POLYLINE in DXF",0,false), mm(true,"-mm",0,0,"use mm coordinates instead of points in DXF (mm=pt/72*25.4)",0,false), colorsToLayers(true,"-ctl",0,0,"map colors to layers",0,false), splineaspolyline(true,"-splineaspolyline",0,0,"approximate splines with PolyLines (only for -f dxf_s)",0,false), splineasnurb(true,"-splineasnurb",0,0,"experimental (only for -f dxf_s)",0,false), splineasbspline(true,"-splineasbspline",0,0,"experimental (only for -f dxf_s)",0,false), splineassinglespline(true,"-splineassinglespline",0,0,"experimental (only for -f dxf_s)",0,false), splineasmultispline(true,"-splineasmultispline",0,0,"experimental (only for -f dxf_s)",0,false), splineasbezier(true,"-splineasbezier",0,0,"use Bezier splines in DXF format (only for -f dxf_s)",0,false), splineprecision(true,"-splineprecision","number",0, "number of samples to take from spline curve when doing approximation with -splineaspolyline or -splineasmultispline - should be >=2 (default 5)",0,5 ), dumplayernames(true,"-dumplayernames",0,0,"dump all layer names found to standard output",0,false), layerpositivfilter(true,"-layers","string",0,"layers to be shown (comma separated list of layer names, no space)",0,(const char *)""), layernegativfilter(true,"-layerfilter","string",0,"layers to be hidden (comma separated list of layer names, no space)",0,(const char *)"") { ADD(polyaslines); ADD(mm); ADD(colorsToLayers); ADD(splineaspolyline); ADD(splineasnurb); ADD(splineasbspline); ADD(splineassinglespline); ADD(splineasmultispline); ADD(splineasbezier); ADD(splineprecision); ADD(dumplayernames); ADD(layerpositivfilter); ADD(layernegativfilter); } }*options; private: void drawVertex(const Point & p, bool withlinewidth, int val70 = 0); void drawLine(const Point & start,const Point & end); void curvetoAsOneSpline(const basedrawingelement & elem, const Point & currentpoint); void curvetoAsMultiSpline(const basedrawingelement & elem, const Point & currentpoint); void curvetoAsPolyLine(const basedrawingelement & elem, const Point & currentpoint); void curvetoAsNurb(const basedrawingelement & elem, const Point & currentpoint); void curvetoAsBSpline(const basedrawingelement & elem, const Point & currentpoint); void curvetoAsBezier(const basedrawingelement & elem, const Point & currentpoint); void writeHandle(ostream & outs) ; void writeLayer(float r, float g, float b,const RSString& colorName) ; void writelayerentry(ostream & outf, unsigned int color, const char * layername); bool wantedLayer(float r, float g, float b,const RSString& colorName) ; // layer shall be written RSString calculateLayerString(float r, float g, float b,const RSString& colorName) ; void printPoint(const Point & p, unsigned short add ); void writesplinetype(const unsigned short stype); enum dxfsplinetype {aspolyline, assinglespline, asmultispline, asnurb, asbspline, asbezier} splinemode; // int polyaslines; // dump polygons as lines // bool mm; //wether to use mm instead of points bool formatis14 ; // whether to use acad 14 format // unsigned int splineprecision; // bool colorsToLayers; const char * header_prelayer1; const char * header_prelayer2; const char * header_postlayer; const char * trailer; class DXFLayers * layers; long handleint; double scalefactor; TempFile tempFile; ofstream &buffer; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); NOCOPYANDASSIGN(drvDXF) }; #endif pstoedit-3.62/src/drvfig.cpp0000644000175500010010000006756512137224252013011 00000000000000/* drvFIG.cpp : This file is part of pstoedit Based on the skeleton for the implementation of new backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* FIG 3.1 driver by Ian MacPhedran (Ian_MacPhedran_AT_engr.usask.ca) April 1995 Color support and conversion to use C++ streams done by Wolfgang Glunz Object depth support by Gerhard Kircher March 1996 Curves and image support by Leszek Piotrowicz July 1997 Support for xfig format 3.2 (X-Splines) by Wolfgang Glunz Support for subpaths by Burkhard Plaum Change to level calculation Ian MacPhedran November 2000 Simplify - remove superfluous 3.1 code Ian MacPhedran December 2000 Use quintic interpolated X-Splines Ian MacPhedran December 2000 Fix for font scaling - Thanks to Robert K. Nelson - Ian MacPhedran April 2002 */ #include "drvfig.h" // for sprintf #include I_stdio #include I_string_h #include I_iostream #include I_iomanip static const float PntFig = 1200.0f / 72.0f; static const char *colorstring(float r, float g, float b) { static char buffer[15]; sprintf_s(TARGETWITHLEN(buffer,15), "%s%.2x%.2x%.2x", "#", (unsigned int) (r * 255 + 0.5), (unsigned int) (g * 255 + 0.5), (unsigned int) (b * 255 + 0.5)); return buffer; } static const char *fig_default_colors[] = { "#000000", "#0000ff", "#00ff00", "#00ffff", "#ff0000", "#ff00ff", "#ffff00", "#ffffff", "#000090", "#0000b0", "#0000d0", "#87ceff", "#009000", "#00b000", "#00d000", "#009090", "#00b0b0", "#00d0d0", "#900000", "#b00000", "#d00000", "#900090", "#b000b0", "#d000d0", "#803000", "#a04000", "#c06000", "#ff8080", "#ffa0a0", "#ffc0c0", "#ffe0e0", "#ffd700" }; const int defaults = sizeof(fig_default_colors) / sizeof(char *); static ColorTable colorTable(fig_default_colors, defaults, colorstring); static unsigned int registercolor(float r, float g, float b) { return colorTable.getColorIndex(r, g, b); } static void dumpnewcolors(ostream & theoutStream) { unsigned int current = defaults; const char *colstring = 0; while ((colstring = colorTable.getColorString(current)) != 0) { theoutStream << "0 " << current << " " << colstring << endl; current++; } } drvFIG::derivedConstructor(drvFIG): constructBase, buffer(tempFile.asOutput()), imgcount(1), format(32), //startdepth(999), //use_correct_font_size(false), glob_min_x(0), glob_max_x(0), glob_min_y(0), glob_max_y(0), loc_min_x(0), loc_max_x(0), loc_min_y(0), loc_max_y(0), glo_bbox_flag(0), loc_bbox_flag(0) { // driver specific initializations // float depth_in_inches = 11; // bool show_usage_line = false; #if 0 for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); //lint !e796 !e1776 if (Verbose()) outf << "% " << d_argv[i] << endl; if (strcmp(d_argv[i], "-startdepth") == 0) { i++; if (i >= d_argc) { errf << "-startdepth requires a depth in the range of 0-999" << endl; show_usage_line = true; } else { assert(d_argv && d_argv[i]); //lint !e796 !e1776 startdepth = (int) atoi(d_argv[i]); } // } else if (strcmp(d_argv[i],"-f31") == 0) { // format = 31; } else if (strcmp(d_argv[i], "-depth") == 0) { i++; if (i >= d_argc) { errf << "-depth requires a depth in inches" << endl; show_usage_line = true; } else { assert(d_argv && d_argv[i]); //lint !e796 !e1776 depth_in_inches = (float) atof(d_argv[i]); } } else if (strcmp(d_argv[i], "-metric") == 0) { units = "Metric"; } else if (strcmp(d_argv[i], "-help") == 0) { errf << "-help Show this message" << endl; errf << "-depth # Set the page depth in inches" << endl; errf << "-metric # Set display to use centimeters" << endl; errf << "-startdepth # Set the initial depth (default 999)" << endl; show_usage_line = true; } else { errf << "Unknown fig driver option: " << d_argv[i] << endl; show_usage_line = true; } } if (show_usage_line) { errf << "Usage -f 'fig: [-help] [-depth #] [-startdepth #]'" << endl; } #endif const char *units = (options->metric) ? "Metric" : "Inches"; // Set the papersize const char *paper_size = (options->depth_in_inches <= 11.0 ? "Letter" : "A4"); // set FIG specific values currentDeviceHeight = options->depth_in_inches * 1200.0f ; // We use objectId as depth value. // We need this because editing will reorder objects of equal depth, // which has an undesireable effect if objects overlap. // Depth must be in the range 0..999 (FIG 3.1). // If we have more than 1000 objects this will get negative and // xfig will set negative depth values to zero. // This feature will thus become useless if we have more // than 1000 objects. This is an xfig limitation. objectId = options->startdepth + 1; // +1 because a predecrement is done when used x_offset = 0.0; y_offset = currentDeviceHeight; // output buffer, needed because // color entries must be written at // top of output file, but are known // only after processing the full input // print the header part outf << "#FIG 3.2\nPortrait\nFlush left\n" << units << "\n" << paper_size << "\n100.00\nSingle\n0\n1200 2\n"; } drvFIG::~drvFIG() { dumpnewcolors(outf); // now we can copy the buffer the output ifstream & inbuffer = tempFile.asInput(); copy_file(inbuffer, outf); options=0; } unsigned int drvFIG::nrOfCurvetos() const { unsigned int nr = 0; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); if (elem.getType() == curveto) nr++; } return nr; } void drvFIG::prpoint(ostream & os, const Point & p, bool withspaceatend) const { os << (int) (PntFig * p.x_ + 0.5f) << " " << (int) (y_offset - (PntFig * p.y_) + 0.5f); if (withspaceatend) os << " "; } // static int nd_calls=0; Debug // bounding box void drvFIG::new_depth() { // errf << "Called #" << nd_calls++ << "\n"; Debug if (glo_bbox_flag == 0) { glob_max_y = loc_max_y; glob_min_y = loc_min_y; glob_max_x = loc_max_x; glob_min_x = loc_min_x; glo_bbox_flag = 1; } else { if ((loc_max_y <= glob_min_y) || (loc_min_y >= glob_max_y) || (loc_max_x <= glob_min_x) || (loc_min_x >= glob_max_x)) { // outside global bounds, increase global box if (loc_max_y > glob_max_y) glob_max_y = loc_max_y; if (loc_min_y < glob_min_y) glob_min_y = loc_min_y; if (loc_max_x > glob_max_x) glob_max_x = loc_max_x; if (loc_min_x < glob_min_x) glob_min_x = loc_min_x; } else { // inside global bounds, decrease depth and create new bounds // errf << " Overlap detected\n" // << " Local " << loc_min_x << ", " << loc_min_y // << ", " << loc_max_x << ", " << loc_max_y << "\n" // << "Global " << glob_min_x << ", " << glob_min_y // << ", " << glob_max_x << ", " << glob_max_y << "\n"; Debug glob_max_y = loc_max_y; glob_min_y = loc_min_y; glob_max_x = loc_max_x; glob_min_x = loc_min_x; if (objectId) objectId--; // don't let it get < 0 // errf << " Depth increased " << objectId << "\n"; Debug } } loc_bbox_flag = 0; } void drvFIG::addtobbox(const Point & p) { if (loc_bbox_flag == 0) { loc_max_y = p.y_; loc_min_y = p.y_; loc_max_x = p.x_; loc_min_x = p.x_; loc_bbox_flag = 1; } else { if (loc_max_y < p.y_) loc_max_y = p.y_; if (loc_min_y > p.y_) loc_min_y = p.y_; if (loc_max_x < p.x_) loc_max_x = p.x_; if (loc_min_x > p.x_) loc_min_x = p.x_; } } void drvFIG::print_polyline_coords() { int j = 0; // const Point & p; unsigned int last = numberOfElementsInPath() - 1; for (unsigned int n = 0; n <= last; n++) { const basedrawingelement & elem = pathElement(n); if (j == 0) { buffer << "\t"; } switch (elem.getType()) { case lineto: case moveto: { const Point & p = pathElement(n).getPoint(0); prpoint(buffer, p, (n != last)); } break; case closepath: { const Point & p = pathElement(0).getPoint(0); prpoint(buffer, p, (n != last)); } break; case curveto: default: errf << "\t\tFatal: unexpected case in drvfig " << endl; abort(); break; } j++; if (j == 5) { j = 0; buffer << "\n"; } } if (j != 0) { buffer << "\n"; } } // print edge points void drvFIG::print_spline_coords1() { // IJMP - need curr_point Point P1; int j = 0; unsigned int last = numberOfElementsInPath() - 1; for (unsigned int n = 0; n <= last; n++) { if (j == 0) { buffer << "\t"; } const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: case lineto: { const Point & p = elem.getPoint(0); prpoint(buffer, p, (n != last)); P1 = p; } j++; if (j == 5) { j = 0; buffer << "\n"; } break; case curveto: { // IJMP - change to quintic spline // put all points, middle points will have control value 1 // IJMP = do bezier fit const Point & P2 = elem.getPoint(0); const Point & P3 = elem.getPoint(1); const Point & P4 = elem.getPoint(2); for (int cp = 1; cp <= 5; cp++) { const Point p = PointOnBezier((cp * 0.2f), P1, P2, P3, P4); // p.x_ = bezpnt((cp * 0.2f), P1.x_, P2.x_, P3.x_, P4.x_); // p.y_ = bezpnt((cp * 0.2f), P1.y_, P2.y_, P3.y_, P4.y_); prpoint(buffer, p, !((n == last) && (cp == 5))); j++; if (j == 5) { j = 0; buffer << "\n"; } // if ((j == 0) && (cp != 5) && ( n+1 != (numberOfElementsInPath()))) { buffer << "\t"; } if ((j == 0) && (n != (numberOfElementsInPath()))) { buffer << "\t"; } } P1 = P4; } break; case closepath: { const Point & p = pathElement(0).getPoint(0); P1 = p; prpoint(buffer, p, (n != last)); } j++; if (j == 5) { j = 0; buffer << "\n"; } break; default: errf << "\t\tFatal: unexpected case in drvfig " << endl; abort(); break; } } if (j != 0) { buffer << "\n"; } buffer << "\t"; } // print control points void drvFIG::print_spline_coords2() { int j = 0; Point lastp; int maxj = 8; unsigned int last = numberOfElementsInPath() - 1; for (unsigned int n = 0; n <= last; n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { buffer << " 0"; if (n != last) buffer << " "; j++; if (j == maxj) { j = 0; buffer << "\n"; if ((n + 1) != numberOfElementsInPath()) { buffer << "\t"; } } lastp = elem.getPoint(0); } break; case lineto: { buffer << " 0"; if (n != last) buffer << " "; j++; if (j == maxj) { j = 0; buffer << "\n"; if ((n + 1) != numberOfElementsInPath()) { buffer << "\t"; } } } break; case closepath: { buffer << " 0"; if (n != last) buffer << " "; j++; if (j == maxj) { j = 0; buffer << "\n"; if ((n + 1) != numberOfElementsInPath()) { buffer << "\t"; } } } break; case curveto: { // IJMP - change to quintic spline // put all points, middle points will have control value -1 float kp = 0.0; for (unsigned int i = 0; i < 5; i++) { if (i == 1) { kp = -1.0; //lint !e736 } if (i == 4) { kp = 0.0; } buffer << " " << kp; if (!((n == last) && (i == 4))) buffer << " "; j++; if (j == maxj) { j = 0; buffer << "\n"; if (!((i == 4) && ((n + 1) == numberOfElementsInPath()))) { buffer << "\t"; } } } lastp = elem.getPoint(2); } break; default: errf << "\t\tFatal: unexpected case in drvfig " << endl; abort(); break; } } if (j != 0) { buffer << endl; } } void drvFIG::close_page() { // Well, since FIG doesn't support multipage output, we'll move down // 11 inches and start again. y_offset += currentDeviceHeight; // reset depth counter objectId = options->startdepth + 1; // also changed to 499 } void drvFIG::open_page() { } struct FontTableType { int index; const char * fontname; }; // // FIG 3.1 uses an index for the popular fonts: // // (we cannot make this array local to drvFIG::show_textstring // because some CCs don't support that yet. static const FontTableType FigPSFonts[] = { {0,"Times-Roman"}, {1,"Times-Italic"}, {2,"Times-Bold"}, {3,"Times-BoldItalic"}, {4,"AvantGarde-Book"}, {5,"AvantGarde-BookOblique"}, {6,"AvantGarde-Demi"}, {7,"AvantGarde-DemiOblique"}, {8,"Bookman-Light"}, {9,"Bookman-LightItalic"}, {10,"Bookman-Demi"}, {11,"Bookman-DemiItalic"}, {12,"Courier"}, {13,"Courier-Oblique"}, {14,"Courier-Bold"}, {15,"Courier-BoldOblique"}, {16,"Helvetica"}, {17,"Helvetica-Oblique"}, {18,"Helvetica-Bold"}, {19,"Helvetica-BoldOblique"}, {20,"Helvetica-Narrow"}, {21,"Helvetica-Narrow-Oblique"}, {22,"Helvetica-Narrow-Bold"}, {23,"Helvetica-Narrow-BoldOblique"}, {24,"NewCenturySchlbk-Roman"}, {25,"NewCenturySchlbk-Italic"}, {26,"NewCenturySchlbk-Bold"}, {27,"NewCenturySchlbk-BoldItalic"}, {28,"Palatino-Roman"}, {29,"Palatino-Italic"}, {30,"Palatino-Bold"}, {31,"Palatino-BoldItalic"}, {32,"Symbol"}, {33,"ZapfChancery-MediumItalic"}, {34,"ZapfDingbats"} }; static const size_t MaxPSFntnum = sizeof(FigPSFonts) / sizeof(FontTableType) - 1; /* For font_flags bit 2 = 0 (LaTeX fonts): 0 Default font 1 Roman 2 Bold 3 Italic 4 Sans Serif 5 Typewriter */ static const FontTableType FigLaTeXFonts[] = { {0,"Default font"}, {0,"Default"}, {0,"Defaultfont"}, {1,"Roman"}, {2,"Bold"}, {3,"Italic"}, {4,"Sans Serif"}, {4,"Sans-Serif"}, {4,"SansSerif"}, {4,"Sansserif"}, {5,"Typewriter"} }; static const size_t MaxLaTeXFntnum = sizeof(FigLaTeXFonts) / sizeof(FontTableType) - 1; static int getfigFontnumber(const char *fname,const FontTableType *FigFonts, unsigned int MaxFntNum) { const size_t fntlength = strlen(fname); for ( unsigned int i = 0; i <= MaxFntNum; i++) { if (fntlength == strlen(FigFonts[i].fontname)) { if (strncmp(fname, FigFonts[i].fontname, fntlength) == 0) return FigFonts[i].index; } } return -1; } void drvFIG::show_text(const TextInfo & textinfo) { const float toRadians = 3.14159265359f / 180.0f; /* The font_flags field is defined as follows: Bit Description 0 Rigid text (text doesn't scale when scaling compound objects) 1 Special text (for LaTeX) 2 PostScript font (otherwise LaTeX font is used) 3 Hidden text */ /* Notation for font names: ((LaTeX|PostScript|)(::special)::)FontName Examples: LaTeX::Fontname LaTeX::special::Fontname FontName PostScript::special::Fontname ::special::Fontname (same as Postscript::special::Fontname) */ int fontflags = 4; // fontflags (bit vector) // 4 is 0100 - PostScript int FigFontNum = 0; const char * const specialindex = strstr(textinfo.currentFontName.value(),"::special::"); const bool special = (specialindex != 0); if (!strncmp(textinfo.currentFontName.value(),"LaTeX::",7) ) { // it is a LaTeX Font fontflags = special ? 2 : 0 ; // 0010 or 0000 - LaTeX const char* fontname = special ? (specialindex + 11) : ( textinfo.currentFontName.value() + 7); FigFontNum = getfigFontnumber(fontname,FigLaTeXFonts,MaxLaTeXFntnum); // debug cout << "LaTeX::" << (const char *) (special ? "special" : "normal") << "::"<< fontname << " " <use_correct_font_size) { // formerly xfig used scaled font sizes and not the X11 font sizes localFontSize = (((float)localFontSize * 80.0f) / 72.0f) + 0.5f; } const float FigHeight = PntFig * localFontSize; const float FigLength = FigHeight * strlen(textinfo.thetext.value()); const float PSHeight = localFontSize; const float PSLength = PSHeight * strlen(textinfo.thetext.value()); // Calculate BBox if (textinfo.currentFontAngle == 0) { addtobbox(Point(textinfo.x, textinfo.y)); addtobbox(Point((textinfo.x + PSLength), (textinfo.y + PSHeight))); } else if (textinfo.currentFontAngle == 90) { addtobbox(Point(textinfo.x, textinfo.y)); addtobbox(Point((textinfo.x - PSHeight), (textinfo.y + PSLength))); } else if (textinfo.currentFontAngle == 180) { addtobbox(Point(textinfo.x, textinfo.y)); addtobbox(Point((textinfo.x - PSLength), (textinfo.y - PSHeight))); } else if (textinfo.currentFontAngle == 270) { addtobbox(Point(textinfo.x, textinfo.y)); addtobbox(Point((textinfo.x + PSHeight), (textinfo.y - PSLength))); } else { // To simplify this, a box of width 2*PSLength centered on textinfo.(x,y) used addtobbox(Point((textinfo.x - PSLength), (textinfo.y + PSLength))); addtobbox(Point((textinfo.x + PSLength), (textinfo.y + PSLength))); addtobbox(Point((textinfo.x - PSLength), (textinfo.y - PSLength))); addtobbox(Point((textinfo.x + PSLength), (textinfo.y - PSLength))); } buffer << "# text\n"; new_depth(); buffer << "4 0 "; // 4 means text, 0 left justified buffer << color; if (objectId) objectId--; // don't let it get < 0 buffer << " " << objectId // depth << " -1 " // pen_style - not used << FigFontNum << " " << (int) localFontSize << " " << textinfo.currentFontAngle * toRadians << " " << fontflags << " " << FigHeight << " " << FigLength << " " << (int) (PntFig * textinfo.x + 0.5f) << " " << (int) (y_offset - (PntFig * textinfo.y) + 0.5f) << " " << textinfo.thetext.value() << "\\001\n"; } void drvFIG::bbox_path() { for (unsigned int i = 0; i < numberOfElementsInPath(); i++) { const basedrawingelement & elem = pathElement(i); switch (elem.getType()) { case curveto: { addtobbox(elem.getPoint(0)); addtobbox(elem.getPoint(1)); addtobbox(elem.getPoint(2)); break; } case moveto: case lineto: { addtobbox(elem.getPoint(0)); break; } case closepath: default: { // will get caught later break; } } } new_depth(); } void drvFIG::show_path() { float localLineWidth = currentLineWidth(); localLineWidth *= 80.0f/72.0f; // xfig scales width differently - added in 3.50 - wogl // dont know whether this should be synchronized with -usecorrectfontsize option. /* 3.50: Originally, the resolution of Fig lines was 1/80 inch, and it was thought that the line width of "1" looked too thick, so it was reduced. Therefore, the final width of lines in PostScript/EPS is: Figwidth == 1: 7.5 Figwidth > 1: (Figwidth-1)*15 Regards, Brian Smith in reverse: l < (15+7.5)/2 : f = 1 f = (l /15) + 1 */ const float boundaryforOneCase = (((15.0f + 7.5f)/2.0f) / 15.0f); // 0.75 // if calculated linewidth is (without "+1 correction") > 0.75 // then apply correction by 1 // for the 0.75 case itself it means - map it to 1.75 and from there to 2 // if it is < 0.75, then leave it so and create in fig a 1 ( (int) 0.75+0.5 ) if (Verbose() ) { cerr << "localLineWidth " << localLineWidth << " b " << boundaryforOneCase << endl; } if (localLineWidth > boundaryforOneCase) { localLineWidth += 1.0f; // see above } else { // line width of 0 remain 0 - everything else is at least 1 if ((localLineWidth < 0.0) || ((localLineWidth > 0.0) && (localLineWidth <= 1.0))) { localLineWidth = 1.0; } } unsigned int linestyle = 0; switch (currentLineType()) { case solid: linestyle = 0; break; case dashed: linestyle = 1; break; case dotted: linestyle = 2; break; case dashdot: linestyle = 3; break; case dashdotdot: linestyle = 4; break; } const unsigned int linecap = currentLineCap(); const unsigned int linejoin = currentLineJoin(); // Calculate BBox bbox_path(); const unsigned int curvetos = nrOfCurvetos(); if (curvetos == 0) // polyline { buffer << "# polyline\n"; buffer << "2 1 " << linestyle << " " << (int) (localLineWidth + 0.5f) << " "; const unsigned int color = registercolor(currentR(), currentG(), currentB()); const int fill_or_nofill = (currentShowType() == drvbase::stroke) ? -1 : 20; if (objectId) objectId--; // don't let it get < 0 buffer << color << " " << color << " " << objectId << " 0 " << fill_or_nofill << " " << "4.0" << " " << linejoin << " " << linecap //" 0 0" << " 0 0 0 "; // 4.0 is the gap spec. we could also derive this from the input buffer << (int) (numberOfElementsInPath()) << "\n"; print_polyline_coords(); } else // contains at least one curveto { buffer << "# spline\n"; // 3 2 means "open interpolated spline" buffer << "3 4 " << linestyle << " " << (int) (localLineWidth + 0.5f) << " "; const unsigned int color = registercolor(currentR(), currentG(), currentB()); const int fill_or_nofill = (currentShowType() == drvbase::stroke) ? -1 : 20; if (objectId) objectId--; // don't let it get < 0 buffer << color << " " << color << " " << objectId << " 0 " << fill_or_nofill << " " << "4.0" << //" 0" " " << linecap << " 0 0 "; // 4.0 is the gap spec. we could also derive this from the input // IJMP - change to quintic spline - 5 pnts per spline, not 3 buffer << numberOfElementsInPath() + 5 * curvetos - curvetos << "\n"; print_spline_coords1(); print_spline_coords2(); } } void drvFIG::show_image(const PSImage & imageinfo) { if (outBaseName == "") { errf << "images cannot be handled via standard output. Use an output file " << endl; return; } if (imageinfo.isFileImage) { // use imageinfo.FileName; /* outf << "" << endl; */ Point ll, ur; imageinfo.getBoundingBox(ll, ur); // Calculate BBox addtobbox(ll); addtobbox(ur); Point fig_ur(PntFig * ur.x_, y_offset - PntFig * ll.y_); Point fig_ll(PntFig * ll.x_, y_offset - PntFig * ur.y_); // first output link to an external *.eps file into *.fig file buffer << "# image\n"; new_depth(); buffer << "2 5 0 1 -1 -1 "; if (objectId) objectId--; // don't let it get < 0 buffer << objectId << " 0 -1 0.000 0 0 -1 0 0 5\n"; buffer << "\t0 " << imageinfo.FileName << "\n"; buffer << "\t" << (int) fig_ll.x_ << " " << (int) fig_ll.y_ << " " << (int) fig_ur.x_ << " " << (int) fig_ll.y_ << " " << (int) fig_ur.x_ << " " << (int) fig_ur.y_ << " " << (int) fig_ll.x_ << " " << (int) fig_ur.y_ << " " << (int) fig_ll.x_ << " " << (int) fig_ll.y_; buffer << "\n"; } else { const size_t filenamelen = strlen(outBaseName.value()) + 21; char *EPSoutFileName = new char[filenamelen]; const size_t fullfilenamelen = strlen(outDirName.value()) + strlen(outBaseName.value()) + 21; char *EPSoutFullFileName = new char[fullfilenamelen]; sprintf_s(TARGETWITHLEN(EPSoutFileName,filenamelen), "%s%02d.eps", outBaseName.value(), imgcount++); sprintf_s(TARGETWITHLEN(EPSoutFullFileName,fullfilenamelen), "%s%s", outDirName.value(), EPSoutFileName); ofstream outi(EPSoutFullFileName); if (!outi) { errf << "Could not open file " << EPSoutFullFileName << " for output"; exit(1); } // remember, we have to flip the image from PostScript coord to fig coords Point ll, ur; imageinfo.getBoundingBox(ll, ur); // Calculate BBox addtobbox(ll); addtobbox(ur); Point fig_ur(PntFig * ur.x_, y_offset - PntFig * ll.y_); Point fig_ll(PntFig * ll.x_, y_offset - PntFig * ur.y_); // first output link to an external *.eps file into *.fig file buffer << "# image\n"; new_depth(); buffer << "2 5 0 1 -1 -1 "; if (objectId) objectId--; // don't let it get < 0 buffer << objectId << " 0 -1 0.000 0 0 -1 0 0 5\n"; buffer << "\t0 " << EPSoutFileName << "\n"; buffer << "\t" << (int) fig_ll.x_ << " " << (int) fig_ll.y_ << " " << (int) fig_ur.x_ << " " << (int) fig_ll.y_ << " " << (int) fig_ur.x_ << " " << (int) fig_ur.y_ << " " << (int) fig_ll.x_ << " " << (int) fig_ur.y_ << " " << (int) fig_ll.x_ << " " << (int) fig_ll.y_; buffer << "\n"; imageinfo.writeEPSImage(outi); outi.close(); delete[]EPSoutFullFileName; delete[]EPSoutFileName; } } static const char * const additionalDoku = "The xfig format driver supports special fontnames, which may be produced by using a fontmap file. " "The following types of names are supported : BREAK " "\n\\begin{verbatim}\n" "General notation: \n" "\"Postscript Font Name\" ((LaTeX|PostScript|empty)(::special)::)XFigFontName\n" " \n" "Examples:\n" "\n" "Helvetica LaTeX::SansSerif\n" "Courier LaTeX::special::Typewriter\n" "GillSans \"AvantGarde Demi\"\n" "Albertus PostScript::special::\"New Century Schoolbook Italic\" \n" "Symbol ::special::Symbol (same as Postscript::special::Symbol)\n" "\\end{verbatim}\n" "See also the file examplefigmap.fmp in the misc directory of the pstoedit source distribution for an example font map file for xfig. " "Please note that the Fontname has to be among those supported by xfig. " "See - \\URL{http://www.xfig.org/userman/fig-format.html} for a list of legal font names"; static DriverDescriptionT < drvFIG > D_fig( "fig", ".fig format for xfig", additionalDoku,"fig", false, true, true, true, DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, false, false /*clipping */ ); static DriverDescriptionT < drvFIG > D_xfig("xfig", ".fig format for xfig", "See fig format for more details.","fig", false, true, true, true, DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, false, false /*clipping */ ); static DriverDescriptionT < drvFIG > D_tfig("tfig", ".fig format for xfig", "Test only","fig", false, true, true, true, DriverDescription::png, DriverDescription::normalopen, false, false /*clipping */ ); pstoedit-3.62/src/drvfig.h0000644000175500010010000000561412137224255012444 00000000000000#ifndef __drvFIG_h #define __drvFIG_h /* drvFIG.h : This file is part of pstoedit Interface for new driver backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvFIG : public drvbase { public: derivedConstructor(drvFIG); //(const char * driveroptions_P, ostream & theoutStream, ostream & theerrStream, const char* outPath_P, const char* outName_P); // Constructor ~drvFIG(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < int, IntValueExtractor > startdepth ; OptionT < bool, BoolTrueExtractor > metric ; OptionT < bool, BoolTrueExtractor > use_correct_font_size ; OptionT < int, IntValueExtractor > depth_in_inches ; DriverOptions(): startdepth(true,"-startdepth","number",0,"Set the initial depth (default 999)",0,999), metric(true,"-metric","",0,"Switch to centimeter display (default inches)",0,false), use_correct_font_size(true,"-usecorrectfontsize",0,0,"don't scale fonts for xfig. Use this if you also use this option with xfig",0,false), depth_in_inches(true,"-depth","number",0,"Set the page depth in inches (default 11)",0,11) { ADD(startdepth); ADD(metric); ADD(use_correct_font_size); ADD(depth_in_inches); } }*options; private: int objectId; TempFile tempFile; ofstream &buffer; int imgcount; int format; // either 31 or something else // int startdepth; // Start depth for objectID (range 0 - 999) // bool use_correct_font_size; // if xfig is used in -use_correct_font_size mode as well #include "drvfuncs.h" void show_text(const TextInfo & textInfo); unsigned int nrOfCurvetos() const; void print_polyline_coords(); // void print_spline_coords_noxsplines(int linestyle, float localLineWidth); void prpoint(ostream & os, const Point& p,bool withspaceatend = true) const; void print_spline_coords1(); void print_spline_coords2(); void new_depth(); void addtobbox(const Point& p); void bbox_path(); // Bounding Box float glob_min_x , glob_max_x , glob_min_y , glob_max_y ; float loc_min_x , loc_max_x , loc_min_y , loc_max_y ; int glo_bbox_flag ,loc_bbox_flag ; public: void show_image(const PSImage & imageinfo); }; #endif pstoedit-3.62/src/drvfuncs.h0000644000175500010010000000231712137224255013012 00000000000000/* drvfuncs.h : This file is part of pstoedit This file contains the declarations of the functions, // each driver has to implement Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ private: // yes these are private, library users should use the public interface // provided via drvbase void open_page(); void close_page(); void show_path(); // void show_text(const TextInfo & textInfo); // void show_rectangle(const float llx, const float lly, const float urx, const float ury); pstoedit-3.62/src/drvgcode.cpp0000644000175500010010000001256312137224252013311 00000000000000/* drvgcode.cpp : This file is part of pstoedit simple backend for CNC g code format. Contributed / Copyright 2008 by: Lawrence Glaister VE7IT Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net (for the skeleton and the rest of pstoedit) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvgcode.h" #include I_stdio #include I_string_h #include I_iostream #include #include drvGCODE::derivedConstructor(drvGCODE): constructBase { // driver specific initializations } drvGCODE::~drvGCODE() { options=0; } void drvGCODE::open_page() { //date and time of convertion time_t kz = time(NULL);; struct tm *ozt = localtime(&kz); static char sdate[30]; strftime(sdate, (size_t) 30, "%c", ozt); outf << "( Generated by pstoedit " << version << " from " << inFileName.value() << " at " << sdate << " )\n"; outf << "( gcode output module by Lawrence Glaister VE7IT )\n"; outf << "G20 ( set inches mode )\n"; outf << "G90 ( absolute distance mode )\n"; outf << "G17 ( XY plane )\n"; outf << "G64 P0.003 ( continuous mode with path tolerance )\n"; outf << "#1000 = 0.100 ( safe Z )\n"; outf << "#1001 = 10.0 ( feedrate )\n"; outf << "#1002 = -0.010 ( cutting depth )\n"; outf << "( mirror about X by setting scale factor negative )\n"; outf << "#1003 = 0.0139 ( X points to inches scale factor =1/72 )\n"; outf << "#1004 = 0.0139 ( Y points to inches scale factor =1/72 )\n"; outf << "M3 S15000 ( spindle cw at 15000rpm )\n"; outf << "G4 P2 ( let spindle get to speed )\n"; outf << "M7 ( mist coolant on )\n"; outf << "G01 Z#1000 F#1001\n"; } void drvGCODE::close_page() { outf << "G00 Z#1000 ( safe Z )\n"; outf << "M5 ( spindle off )\n"; outf << "M9 ( coolant off )\n"; outf << "M2 ( end of program )\n"; } void drvGCODE::show_path() { Point currentPoint(0.0f, 0.0f); const Point firstPoint = pathElement(0).getPoint(0); for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << "\nG00 Z#1000\n"; outf << "G00 X[#1003*" << p.x_ << "] Y[#1004*" << p.y_ << "]\n"; outf << "G01 Z#1002\n"; currentPoint = p; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << "G01 X[#1003*" << p.x_ << "] Y[#1004*" << p.y_ << "]\n"; currentPoint = p; } break; case closepath: outf << "G01 X[#1003*" << firstPoint.x_ << "] Y[#1004*" << firstPoint.y_ << "]\n"; break; case curveto:{ const Point & cp1 = elem.getPoint(0); const Point & cp2 = elem.getPoint(1); const Point & ep = elem.getPoint(2); // curve is approximated with a variable number or linear segments. // fitpoints should be somewhere between 5 and 50 for reasonable page size plots // we compute distance between current point and endpoint and use that to help // pick the number of segments to use. const float dist = (float) pythagoras((float)(ep.x_ - currentPoint.x_),(float)(ep.y_ - currentPoint.y_)); unsigned int fitpoints = (unsigned int)(dist / 10.0); if ( fitpoints < 5 ) fitpoints = 5; if ( fitpoints > 50 ) fitpoints = 50; for (unsigned int s = 1; s < fitpoints; s++) { const float t = 1.0f * s / (fitpoints - 1); const Point pt = PointOnBezier(t, currentPoint, cp1, cp2, ep); outf << " G01 X[#1003*" << pt.x_ << "] Y[#1004*" << pt.y_ << "]\n"; } currentPoint = ep; } break; default: errf << "\t\tFatal: unexpected case in drvgcode " << endl; abort(); break; } } } static DriverDescriptionT < drvGCODE > D_gcode("gcode", "emc2 gcode format", "See also: \\URL{http://linuxcnc.org/} ","gcode", false, // if backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // if backend supports curves false, // if backend supports elements with fill and edges false, // if backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvgcode.h0000644000175500010010000000225612137224255012757 00000000000000#ifndef __drvGCODE_H #define __drvGCODE_H /* drvGCODE.h : This file is part of pstoedit Contributed / Copyright 2008 by: Lawrence Glaister VE7IT Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz@pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvGCODE : public drvbase { public: derivedConstructor(drvGCODE); ~drvGCODE(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; private: #include "drvfuncs.h" }; #endif pstoedit-3.62/src/drvgnplt.cpp0000644000175500010010000000524212137224252013350 00000000000000/* drvGNUPLOT.cpp : This file is part of pstoedit simple backend for GNUplot format. Contributed by: Carsten Hammer (chammer_AT_hermes.hrz.uni-bielefeld.de) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net (for the skeleton and the rest of pstoedit) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvgnplt.h" #include I_stdio #include I_string_h #include I_iostream drvGNUPLOT::derivedConstructor(drvGNUPLOT): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): constructBase { // driver specific initializations } drvGNUPLOT::~drvGNUPLOT() { options=0; } void drvGNUPLOT::close_page() { outf << "#Seite beendet.\n"; } void drvGNUPLOT::open_page() { outf << "#Neue Seite\n"; } void drvGNUPLOT::show_path() { outf << "\n#Polyline:\n"; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const Point & p = pathElement(n).getPoint(0); outf << p.x_ << " " << p.y_ << "\n"; } } static DriverDescriptionT < drvGNUPLOT > D_gnuplot("gnuplot", "gnuplot format", "","gnuplot", false, // if backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves false, // if backend supports elements with fill and edges false, // if backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvgnplt.h0000644000175500010010000000251212137224255013015 00000000000000#ifndef __drvGNPLT_H #define __drvGNPLT_H /* drvGNPLT.h : This file is part of pstoedit simple backend for GNUplot format. Contributed by: Carsten Hammer (chammer@hermes.hrz.uni-bielefeld.de) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvGNUPLOT : public drvbase { public: derivedConstructor(drvGNUPLOT); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvGNUPLOT(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; private: #include "drvfuncs.h" }; #endif pstoedit-3.62/src/drvgschem.cpp0000644000175500010010000000577012137224252013500 00000000000000/* drvgschem.cpp : This file is part of pstoedit simple backend for Gschem format. Contributed / Copyright 2004 by: Mark Rages Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net (for the skeleton and the rest of pstoedit) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvgschem.h" #include I_stdio #include I_string_h #include I_iostream drvGSCHEM::derivedConstructor(drvGSCHEM): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): constructBase { // driver specific initializations outf << "v 20040111 1\n"; } drvGSCHEM::~drvGSCHEM() { options=0; } void drvGSCHEM::close_page() { //outf << "#Seite beendet.\n"; } void drvGSCHEM::open_page() { // outf << "#Neue Seite\n"; } const float SCALE = (1000.0f/72.0f); void drvGSCHEM::show_path() { // outf << "\n#Polyline:\n"; for (unsigned int n = 1; n < numberOfElementsInPath(); n++) { const Point & p1 = pathElement(n-1).getPoint(0); const Point & p = pathElement(n).getPoint(0); outf << "L "; outf << (int)(p1.x_*SCALE) << " " << (int)(p1.y_*SCALE) << " " << (int)(p.x_*SCALE) << " " << (int)(p.y_*SCALE) << " 3 0 0 0 -1 -1\n"; } } static DriverDescriptionT < drvGSCHEM > D_gschem("gschem", "gschem format", "See also: \\URL{http://www.geda.seul.org/tools/gschem/} ","gschem", false, // if backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves false, // if backend supports elements with fill and edges false, // if backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvgschem.h0000644000175500010010000000241212137224255013136 00000000000000#ifndef __drvGSCHEM_H #define __drvGSCHEM_H /* drvGSCHEM.h : This file is part of pstoedit Contributed / Copyright 2004 by: Mark Rages Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz@pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvGSCHEM : public drvbase { public: derivedConstructor(drvGSCHEM); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvGSCHEM(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; private: #include "drvfuncs.h" }; #endif pstoedit-3.62/src/drvhpgl.cpp0000644000175500010010000004042212137224252013155 00000000000000/* drvHPGL.cpp : This file is part of pstoedit HPGL / HPGL2 Device driver supporting text commands Copyright (C) 1993 - 2001 Peter Katzmann p.katzmann_AT_thiesen.com Copyright (C) 2001 Peter Kuhlemann kuhlemannp_AT_genrad.com Copyright (C) 2002 - 2003 Peter Kuhlemann peter.kuhlemann_AT_teradyne.com Copyright (C) 2000 - 2013 Glunz (fill support, improved color handling) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Aug 21, 2001: Donald Arseneau (asnd_AT_triumf.ca) adds pen changes when color changes. Changed sections are delimited by: // Start DA hpgl color addition // End DA hpgl color addition for more info about HPGL see: http://lprng.sourceforge.net/DISTRIB/RESOURCES/HPGL_short_summary.html http://www.multicam.com/main/mat/hpgl.htm http://www.piclist.com/techref/language/hpgl.htm http://www.piclist.com/techref/language/hpgl/commands.htm */ #define USESPRINTF 1 #include "drvhpgl.h" #include #include I_stdio //version up to 3.50 static const float HPGLScale = 10.0f; // see comments below in open-page area. static const float HPGLScale = 1016.0f/72.0f; void drvHPGL::rot(double &x, double &y, int angle) { double tmp; switch (angle) { case 90: tmp = x; x = -y; y = tmp; break; case 180: x = -x; y = -y; break; case 270: tmp = x; x = y; y = -tmp; break; default: break; } } drvHPGL::derivedConstructor(drvHPGL): constructBase, // Start DA hpgl color addition prevColor(0), maxPen(0), currentPen(0), penColors(0) // End DA hpgl color addition { // driver specific initializations // and writing of header to output file if (strcmp(Pdriverdesc->symbolicname, "pcl") == 0) { options->hpgl2 = true; } if (options->rot90) rotation = 90; else if (options->rot180) rotation = 180; else if (options->rot270) rotation = 270; else rotation = 0; // if (0) { // const char esc = (char) 27; // outf << esc << ".(;"; // } errf << "Info: This HPGL/PCL driver is not very elaborated - consider using -f plot-hpgl or plot-pcl instead." << endl; // will be written by open_page() outf << "IN;SC;PU;PU;SP1;LT;VS" << (int) HPGLScale << "\n"; // read pen colors from file. if (options->pencolorsfromfile) { if (drvbase::pstoeditDataDir() != "") { // *p = '\0'; RSString test(drvbase::pstoeditDataDir()); test += directoryDelimiter; test += "drvhpgl"; // options.drivername.value; test += ".pencolors"; // errf << "testing for :" << test.value() << endl; if (fileExists(test.value())) { if (Verbose()) { errf << "loading pen colors from " << test.value() << endl; } const unsigned int numberofpens = readPenColors(errf, test.value(),true); penColors = new HPGLColor[numberofpens]; const HPGLColor initvalue = {0.0f,0.0f,0.0f,0}; for (unsigned int p = 0; p < numberofpens; p++) { penColors[p] = initvalue; } maxPen = numberofpens; (void) readPenColors(errf, test.value(),false); if (Verbose() ){ errf << "read " << numberofpens << " colors from file " << test.value() << endl; } } else { errf << "could not read pen colors from file - " << test.value() << " does not exist" << endl; } } else { errf << "could not read pen colors from file - pstoedit Data Directory is unknown" << endl; } } else { penColors = new HPGLColor[options->maxPenColors + 1 + 1]; // 1 offset - 0 is not used // one more for flint ;-) const HPGLColor initvalue = {0.0f,0.0f,0.0f,0}; for (unsigned int p = 0; p <= (unsigned int) options->maxPenColors + 1; p++) { penColors[p] = initvalue; } } } drvHPGL::~drvHPGL() { // driver specific deallocations // and writing of trailer to output file // should be done either here or in close_page outf << "PU;PA0,0;SP;EC;PG1;EC1;OE\n"; // fillinstruction = NIL; delete [] penColors; penColors = NIL; options = NIL; } static unsigned int intColor(float R, float G, float B) { return 256 * (unsigned int) (R * 16) + 16 * (unsigned int) (G * 16) + (unsigned int) (B * 16); } unsigned int drvHPGL::readPenColors(ostream & errstream, const char *filename, bool justcount) { if (!fileExists(filename)) { errstream << "Could not open font map file " << filename << endl; return 0; } ifstream infile(filename); int count = 0; unsigned int penid; char c; while (!infile.eof() ) { infile >> penid; if (!infile) { infile.clear(); infile >> c; // cout << "read char " << c << endl; if (c == '#') { // skip chars till EOL infile.ignore(256,'\n'); } } else { // cout << "read float " << penid << endl; float R,G,B; // simple parsing: when reading first float, we expect 3 additional ones infile >> R >> G >> B ; if (!justcount) { if (penid < maxPen) { penColors[penid].R=R; penColors[penid].G=G; penColors[penid].B=B; penColors[penid].intColor = intColor(R,G,B); } else { errf << "error in pen color file: Pen ID too high - " << penid << endl; } } count++; } } return count; } void drvHPGL::print_coords() { const unsigned int elems = numberOfElementsInPath(); if (elems) { for (unsigned int n = 0; n < elems; n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { const Point & p = elem.getPoint(0); double x = (p.x_ + x_offset) * HPGLScale; double y = (p.y_ + y_offset) * HPGLScale; rot(x, y, rotation); #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "PU%i,%i;", (int) x, (int) y); outf << str; #else outf << "PU" << (int) x << "," << (int) y << ";"; #endif } break; case lineto: { { const Point & p = elem.getPoint(0); double x = (p.x_ + x_offset) * HPGLScale; double y = (p.y_ + y_offset) * HPGLScale; rot(x, y, rotation); #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "PD%i,%i;", (int) x, (int) y); outf << str; #else outf << "PD" << (int) x << "," << (int) y << ";"; #endif } if (isPolygon() && (n == elems)) { const basedrawingelement & elemnull = pathElement(0); const Point & pnull = elemnull.getPoint(0); double x = (pnull.x_ + x_offset) * HPGLScale; double y = (pnull.y_ + y_offset) * HPGLScale; rot(x, y, rotation); #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "PD%i,%i;", (int) x, (int) y); outf << str; #else outf << "PD" << (int) x << "," << (int) y << ";"; #endif } } break; case closepath: { const Point & p = pathElement(0).getPoint(0); double x = (p.x_ + x_offset) * HPGLScale; double y = (p.y_ + y_offset) * HPGLScale; rot(x, y, rotation); #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "PD%i,%i;", (int) x, (int) y); outf << str; #else outf << "PD" << (int) x << "," << (int) y << ";"; #endif } break; case curveto: errf << "\t\tFatal: unexpected case curveto in drvHPGL " << endl; abort(); break; default: errf << "\t\tFatal: unexpected case default in drvHPGL " << endl; abort(); break; } } } } // note: 23.2.2011 - VS doesn't really mean scale but velocity (which I do not know how it impacts scaling) // HPGL graphic units are 1/1016 of an inch // PostScript points are 1/72 of an inch - so there is a factor of 14.11111 // from http://h20000.www2.hp.com/bc/docs/support/SupportManual/bpl13211/bpl13211.pdf Figure 17-7: // PlotterUnits EquivalentValue // 1 plu = 0.025 mm (~ 0.00098 in.) // 40 plu = 1 mm // 1016 plu = 1 in. // 3.39 plu = 1 dot @ 300 dp // http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpl04568 static const unsigned char Ec = 0x1b; void drvHPGL::open_page() { //IN - init //SC - scaling off //PU - pen up //SP1 - select pen 1 //LT - line type - solid line //VS - Speed //version up to 3.50 outf << "IN;SC;PU;PU;SP1;LT;VS" << (int) HPGLScale << "\n"; if (options->hpgl2) { outf << Ec << "E" << Ec << "%0B"; } outf << "IN;SC;PU;SP1;LT;" << "\n"; } void drvHPGL::close_page() { outf << "PU;SP;EC;PG1;EC1;OE\n"; if (options->hpgl2) { outf << Ec << "%0A" << Ec <<"E" ; } } #if 0 void drvHPGL::endtext() { if (merge) { flush_text(savedtextinfo); savedtextinfo.thetext = ""; } } #endif void drvHPGL::SelectPen(float R, float G, float B) { // Start DA hpgl color addition if (options->pencolorsfromfile) { const unsigned int reducedColor = intColor(R,G,B); // errf << " r " << reducedColor << " RGB " << R << G << B << " prev " << prevColor << endl; if (prevColor != reducedColor) { // If color changed, find best match in available colors // use the pen colors as defined in the pen color file // so we need to find the best matching color/pen for the current color double bestquality = 1e+100; // Arbitrary large number // Linear search for a match // 0th element is never used - 0 indicates "new" color unsigned int bestIndex = 0; for (unsigned int i = 1; i < maxPen; i++) { const double quality = (R - penColors[i].R) * (R - penColors[i].R) + (G - penColors[i].G) * (G - penColors[i].G) + (B - penColors[i].B) * (B - penColors[i].B); if (quality < bestquality) { bestquality = quality; bestIndex = i; } } // errf << "After lookup r " << " MP " << maxPen << " "<< reducedColor << " RGB " << R << G << B << " prev " << prevColor << " " << bestquality<< endl; // Select new pen if best match is a different pen prevColor = reducedColor; // to avoid the lookup in probable case that next item is drawn with same color if (currentPen != bestIndex) { currentPen=bestIndex; outf << "PU; \nSP" << currentPen << ";\n"; } } } else if (options->maxPenColors > 0) { /* * The object is to generate pen switching commands when the color * changes. We keep a list of pen colors, which approximate the * desired rgb colors. Choose an existing pen number when the * rgb color approximates that color, and add a new color to the * list when the rgb color is distinctly new. */ const unsigned int reducedColor = intColor(R,G,B); if (prevColor != reducedColor) { // If color changed, see if color has been used before unsigned int npen = 0; if (maxPen > 0) { for (unsigned int j = 1; j <= maxPen; j++) { // 0th element is never used - 0 indicates "new" color if (penColors[j].intColor == reducedColor) { npen = j; } } } // If color is new, add it to list, if room if (npen == 0) { if (maxPen < (unsigned int)options->maxPenColors) { maxPen++; } npen = maxPen; //cout << "npen : " << npen << " maxPenColors" << maxPenColors << endl; penColors[npen].intColor = reducedColor; penColors[npen].R = R; penColors[npen].G = G; penColors[npen].B = B; } // Select new pen prevColor = reducedColor; outf << "PU; \nSP" << npen << ";\n"; } // End DA hpgl color addition } else { // errf << "nothing done for colors - no option selected " << endl; } } void drvHPGL::show_text(const TextInfo & textinfo) { const double pi = 3.1415926535; const double angleofs = rotation * pi / 180; const double dix = 100.0 * cos(textinfo.currentFontAngle * pi / 180.0 + angleofs); const double diy = 100.0 * sin(textinfo.currentFontAngle * pi / 180.0 + angleofs); double x = (textinfo.x + x_offset) * HPGLScale; double y = (textinfo.y + y_offset) * HPGLScale; rot(x, y, rotation); /* drvhpgl.cpp:316: warning: ISO C++ does not support the `%lg' printf format drvhpgl.cpp:316: warning: ISO C++ does not support the `%lg' printf format drvhpgl.cpp:318: warning: ISO C++ does not support the `%lg' printf format drvhpgl.cpp:318: warning: ISO C++ does not support the `%lg' printf format */ SelectPen(textinfo.currentR, textinfo.currentG, textinfo.currentB); #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "DI%g,%g;", dix, diy); outf << str; sprintf_s(TARGETWITHLEN(str,256), "SI%g,%g;", textinfo.currentFontSize / 1000 * HPGLScale, textinfo.currentFontSize / 1000 * HPGLScale); outf << str; sprintf_s(TARGETWITHLEN(str,256), "PU%i,%i;", (int) x, (int) y); outf << str; #else outf << "DI" << dix << "," << diy << ";"; outf << "SI" << textinfo.currentFontSize / 1000 * HPGLScale << "," << textinfo.currentFontSize / 1000 * HPGLScale << ";"; outf << "PU" << (int) x << "," << (int) y << ";"; #endif outf << "LB" << textinfo.thetext.value() << "\003;" << endl; } void drvHPGL::show_path() { if (numberOfElementsInPath()) { SelectPen(currentR(), currentG(), currentB()); switch (currentShowType()) { case drvbase::stroke: break; case drvbase::eofill: // Probably Wrong, but treat eoffil like fill case drvbase::fill: { const Point & p = pathElement(0).getPoint(0); double x = (p.x_ + x_offset) * HPGLScale; double y = (p.y_ + y_offset) * HPGLScale; rot(x, y, rotation); #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "PU%i,%i;", (int) x, (int) y); outf << str; #else outf << "PU" << (int) x << "," << (int) y << ";"; #endif outf << options->fillinstruction.value << ";PM0;"; } break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); break; } if (!options->penplotter) { #if USESPRINTF char str[256]; sprintf_s(TARGETWITHLEN(str,256), "PW%lg;", currentLineWidth()); outf << str; #else outf << "PW" << currentLineWidth() << ";"; #endif } print_coords(); switch (currentShowType()) { // To check which endsequenz we need case drvbase::stroke: break; case drvbase::eofill: // Probably Wrong, but treat eoffil like fill case drvbase::fill: outf << "PM2;FP;EP;"; // EP also draws path break; default: // cannot happen outf << "unexpected ShowType " << (int) currentShowType(); break; } outf << endl; } } static DriverDescriptionT < drvHPGL > D_HPGL("hpgl", "HPGL code", "","hpgl", false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend supports curves false, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // backend support multiple pages false /*clipping */ ); static DriverDescriptionT < drvHPGL > D_PCL("pcl", "PCL code", "","pcl", false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend supports curves false, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // backend support multiple pages false /*clipping */ ); pstoedit-3.62/src/drvhpgl.h0000644000175500010010000001033012137224256012621 00000000000000#ifndef __drvHPGL_h #define __drvHPGL_h /* drvhpgl.h : This file is part of pstoedit Class declaration for hpgl output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993,1994,1995,1996,1997,1998 Peter Katzmann p.katzmann@thiesen.com Copyright (C) 2000 - 2013 Glunz (fill support, improved color handling) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvHPGL : public drvbase { protected: // = PROTECTED DATA public: derivedConstructor(drvHPGL); ~drvHPGL(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor > penplotter ; OptionT < bool, BoolTrueExtractor > pencolorsfromfile ; OptionT < int, IntValueExtractor > maxPenColors; OptionT < RSString, RSStringValueExtractor> fillinstruction; // OptionT < bool, BoolTrueExtractor > useRGBcolors ; OptionT < bool, BoolTrueExtractor > hpgl2 ; OptionT < bool, BoolTrueExtractor > rot90 ; OptionT < bool, BoolTrueExtractor > rot180 ; OptionT < bool, BoolTrueExtractor > rot270 ; // penColors(0), maxPenColors(0) DriverOptions(): penplotter(true,"-penplotter",0, 0, "plotter is pen plotter (i.e. no support for specific line widths)", 0,false), pencolorsfromfile(true,"-pencolorsfromfile",0, 0, "read pen colors from file drvhpgl.pencolors in pstoedit data directory", 0,false), maxPenColors(true,"-pencolors", "number", 0, "maximum number of pen colors to be used by pstoedit (default 0) - " ,0,0), fillinstruction(true,"-filltype", "string", 0, "select fill type e.g. FT 1" ,0,(const char*)"FT1"), /* Fill Type (FT) Command ========================================= This command selects the shading pattern used to fill polygons ( FP ), rectangles ( RA or RR ), wedges ( WG ), or characters ( CF ). The Fill Type command ( FT ), can use solid, shading, parallel lines (hatching), cross hatching, patterned (raster) fill, or PCL user-defined patterns. For more information see the PCL 5 Printer Language Technical Reference Manual. The syntax for this command is as follows: FT fill type,[option1,[option2]]; or FT; */ // known fill types: // FT 1 - solid black // FT 3 - parallel lines FT 3[,delta,angle] // FT 4 - cross hatching FT 4[,delta,angle] // FT 10 - shading FT 10,[percentage] hpgl2 (true,"-hpgl2" ,0, 0, "Use HPGL/2 instead of HPGL/1",0,false), rot90 (true,"-rot90" ,0, 0, "rotate hpgl by 90 degrees",0,false), rot180(true,"-rot180",0, 0, "rotate hpgl by 180 degrees",0,false), rot270(true,"-rot270",0, 0, "rotate hpgl by 270 degrees",0,false) { ADD( penplotter ); ADD( pencolorsfromfile ); ADD( maxPenColors ); ADD( fillinstruction ); ADD( hpgl2 ); ADD( rot90 ); ADD( rot180 ); ADD( rot270 ); } }*options; #include "drvfuncs.h" // void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); private: void print_coords(); unsigned int readPenColors(ostream & errstream, const char *filename, bool justcount); void SelectPen(float R, float G, float B); // Start DA hpgl color addition struct HPGLColor { float R; float G; float B; unsigned int intColor;}; unsigned int prevColor; unsigned int maxPen; unsigned int currentPen; HPGLColor * penColors; // End DA hpgl color addition int rotation; public: static void rot(double & x, double & y, int rotation); NOCOPYANDASSIGN(drvHPGL) }; #endif pstoedit-3.62/src/drvidraw.cpp0000644000175500010010000010115212137224253013330 00000000000000/* drvIDRAW.cpp : This file is part of pstoedit Backend for idraw files Contributed by: Scott Pakin Image Support added by Scott Johnston Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvidraw.h" #include I_fstream #include I_stdio #include I_stdlib #include // Add a point unless it's the same as the previous point // Used by drvIDRAW::print_coords() for convenience #define ADDPOINT(X,Y) do { \ if (!newtotalpoints || \ iscale(X) != iscale(newpointlist[newtotalpoints-1]->x_) || \ iscale(Y) != iscale(newpointlist[newtotalpoints-1]->y_)){ \ newpointlist[newtotalpoints++] = new Point(X,Y); \ assert(newpointlist[newtotalpoints-1] != NIL); } \ } while (0) drvIDRAW::derivedConstructor(drvIDRAW): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): // Constructor constructBase, buffer(tempFile.asOutput()), imgcount(1) { IDRAW_SCALING = 0.799705f ; // Initialize the color table color[0].red = 0; color[0].green = 0; color[0].blue = 0; color[0].name = "Black"; color[1].red = 0.647059; color[1].green = 0.164706; color[1].blue = 0.164706; color[1].name = "Brown"; color[2].red = 1; color[2].green = 0; color[2].blue = 0; color[2].name = "Red"; color[3].red = 1; color[3].green = 0.647059; color[3].blue = 0; color[3].name = "Orange"; color[4].red = 1; color[4].green = 1; color[4].blue = 0; color[4].name = "Yellow"; color[5].red = 0; color[5].green = 1; color[5].blue = 0; color[5].name = "Green"; color[6].red = 0; color[6].green = 0; color[6].blue = 1; color[6].name = "Blue"; color[7].red = 0.74902; color[7].green = 0; color[7].blue = 1; color[7].name = "Indigo"; color[8].red = 0.933333; color[8].green = 0.509804; color[8].blue = 0.933333; color[8].name = "Violet"; color[9].red = 1; color[9].green = 1; color[9].blue = 1; color[9].name = "White"; color[10].red = 0.764706; color[10].green = 0.764706; color[10].blue = 0.764706; color[10].name = "LtGray"; color[11].red = 0.501961; color[11].green = 0.501961; color[11].blue = 0.501961; color[11].name = "DkGray"; // Write idraw PostScript header outf << "%!PS-Adobe-2.0 EPSF-1.2\n" << "%%Creator: idraw\n" << "%%DocumentFonts: Times-Roman Times-Bold Times-Italic\n" << "%%+ Helvetica Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique\n" << "%%+ Courier Courier-Bold Courier-Oblique Courier-BoldOblique\n" << "%%+ Symbol\n" << "%%Pages: 1\n" << "%%BoundingBox: 0 0 612 792\n" // Assume full page << "%%EndComments\n" << "\n" << "%%BeginIdrawPrologue\n" << "/arrowhead {\n" << "0 begin\n" << "transform originalCTM itransform\n" << "/taily exch def\n" << "/tailx exch def\n" << "transform originalCTM itransform\n" << "/tipy exch def\n" << "/tipx exch def\n" << "/dy tipy taily sub def\n" << "/dx tipx tailx sub def\n" << "/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def\n" << "gsave\n" << "originalCTM setmatrix\n" << "tipx tipy translate\n" << "angle rotate\n" << "newpath\n" << "arrowHeight neg arrowWidth 2 div moveto\n" << "0 0 lineto\n" << "arrowHeight neg arrowWidth 2 div neg lineto\n" << "patternNone not {\n" << "originalCTM setmatrix\n" << "/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul\n" << "arrowWidth div def\n" << "/padtail brushWidth 2 div def\n" << "tipx tipy translate\n" << "angle rotate\n" << "padtip 0 translate\n" << "arrowHeight padtip add padtail add arrowHeight div dup scale\n" << "arrowheadpath\n" << "ifill\n" << "} if\n" << "brushNone not {\n" << "originalCTM setmatrix\n" << "tipx tipy translate\n" << "angle rotate\n" << "arrowheadpath\n" << "istroke\n" << "} if\n" << "grestore\n" << "end\n" << "} dup 0 9 dict put def\n" << "\n" << "/arrowheadpath {\n" << "newpath\n" << "arrowHeight neg arrowWidth 2 div moveto\n" << "0 0 lineto\n" << "arrowHeight neg arrowWidth 2 div neg lineto\n" << "} def\n" << "\n" << "/leftarrow {\n" << "0 begin\n" << "y exch get /taily exch def\n" << "x exch get /tailx exch def\n" << "y exch get /tipy exch def\n" << "x exch get /tipx exch def\n" << "brushLeftArrow { tipx tipy tailx taily arrowhead } if\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/rightarrow {\n" << "0 begin\n" << "y exch get /tipy exch def\n" << "x exch get /tipx exch def\n" << "y exch get /taily exch def\n" << "x exch get /tailx exch def\n" << "brushRightArrow { tipx tipy tailx taily arrowhead } if\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "%%EndIdrawPrologue\n" << "\n" << "/arrowHeight 10 def\n" << "/arrowWidth 5 def\n" << "\n" << "/IdrawDict 100 dict def\n" << "IdrawDict begin\n" << "\n" << "/reencodeISO {\n" << "dup dup findfont dup length dict begin\n" << "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n" << "/Encoding ISOLatin1Encoding def\n" << "currentdict end definefont\n" << "} def\n" << "\n" << "/ISOLatin1Encoding [\n" << "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" << "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" << "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" << "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" << "/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n" << "/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n" << "/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n" << "/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n" << "/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n" << "/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n" << "/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n" << "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" << "/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" << "/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve\n" << "/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut\n" << "/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar\n" << "/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n" << "/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n" << "/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\n" << "/guillemotright/onequarter/onehalf/threequarters/questiondown\n" << "/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n" << "/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n" << "/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n" << "/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute\n" << "/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n" << "/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n" << "/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex\n" << "/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n" << "/yacute/thorn/ydieresis\n" << "] def\n" << "/Times-Roman reencodeISO def\n" << "/Times-Bold reencodeISO def\n" << "/Times-Italic reencodeISO def\n" << "/Helvetica reencodeISO def\n" << "/Helvetica-Bold reencodeISO def\n" << "/Helvetica-Oblique reencodeISO def\n" << "/Helvetica-BoldOblique reencodeISO def\n" << "/Courier reencodeISO def\n" << "/Courier-Bold reencodeISO def\n" << "/Courier-Oblique reencodeISO def\n" << "/Courier-BoldOblique reencodeISO def\n" << "/Symbol reencodeISO def\n" << "\n" << "/none null def\n" << "/numGraphicParameters 17 def\n" << "/stringLimit 65535 def\n" << "\n" << "/Begin {\n" << "save\n" << "numGraphicParameters dict begin\n" << "} def\n" << "\n" << "/End {\n" << "end\n" << "restore\n" << "} def\n" << "\n" << "/SetB {\n" << "dup type /nulltype eq {\n" << "pop\n" << "false /brushRightArrow idef\n" << "false /brushLeftArrow idef\n" << "true /brushNone idef\n" << "} {\n" << "/brushDashOffset idef\n" << "/brushDashArray idef\n" << "0 ne /brushRightArrow idef\n" << "0 ne /brushLeftArrow idef\n" << "/brushWidth idef\n" << "false /brushNone idef\n" << "} ifelse\n" << "} def\n" << "\n" << "/SetCFg {\n" << "/fgblue idef\n" << "/fggreen idef\n" << "/fgred idef\n" << "} def\n" << "\n" << "/SetCBg {\n" << "/bgblue idef\n" << "/bggreen idef\n" << "/bgred idef\n" << "} def\n" << "\n" << "/SetF {\n" << "/printSize idef\n" << "/printFont idef\n" << "} def\n" << "\n" << "/SetP {\n" << "dup type /nulltype eq {\n" << "pop true /patternNone idef\n" << "} {\n" << "dup -1 eq {\n" << "/patternGrayLevel idef\n" << "/patternString idef\n" << "} {\n" << "/patternGrayLevel idef\n" << "} ifelse\n" << "false /patternNone idef\n" << "} ifelse\n" << "} def\n" << "\n" << "/BSpl {\n" << "0 begin\n" << "storexyn\n" << "newpath\n" << "n 1 gt {\n" << "0 0 0 0 0 0 1 1 true subspline\n" << "n 2 gt {\n" << "0 0 0 0 1 1 2 2 false subspline\n" << "1 1 n 3 sub {\n" << "/i exch def\n" << "i 1 sub dup i dup i 1 add dup i 2 add dup false subspline\n" << "} for\n" << "n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline\n" << "} if\n" << "n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline\n" << "patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if\n" << "brushNone not { istroke } if\n" << "0 0 1 1 leftarrow\n" << "n 2 sub dup n 1 sub dup rightarrow\n" << "} if\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/Circ {\n" << "newpath\n" << "0 360 arc\n" << "closepath\n" << "patternNone not { ifill } if\n" << "brushNone not { istroke } if\n" << "} def\n" << "\n" << "/CBSpl {\n" << "0 begin\n" << "dup 2 gt {\n" << "storexyn\n" << "newpath\n" << "n 1 sub dup 0 0 1 1 2 2 true subspline\n" << "1 1 n 3 sub {\n" << "/i exch def\n" << "i 1 sub dup i dup i 1 add dup i 2 add dup false subspline\n" << "} for\n" << "n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline\n" << "n 2 sub dup n 1 sub dup 0 0 1 1 false subspline\n" << "patternNone not { ifill } if\n" << "brushNone not { istroke } if\n" << "} {\n" << "Poly\n" << "} ifelse\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/Elli {\n" << "0 begin\n" << "newpath\n" << "4 2 roll\n" << "translate\n" << "scale\n" << "0 0 1 0 360 arc\n" << "closepath\n" << "patternNone not { ifill } if\n" << "brushNone not { istroke } if\n" << "end\n" << "} dup 0 1 dict put def\n" << "\n" << "/Line {\n" << "0 begin\n" << "2 storexyn\n" << "newpath\n" << "x 0 get y 0 get moveto\n" << "x 1 get y 1 get lineto\n" << "brushNone not { istroke } if\n" << "0 0 1 1 leftarrow\n" << "0 0 1 1 rightarrow\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/MLine {\n" << "0 begin\n" << "storexyn\n" << "newpath\n" << "n 1 gt {\n" << "x 0 get y 0 get moveto\n" << "1 1 n 1 sub {\n" << "/i exch def\n" << "x i get y i get lineto\n" << "} for\n" << "patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if\n" << "brushNone not { istroke } if\n" << "0 0 1 1 leftarrow\n" << "n 2 sub dup n 1 sub dup rightarrow\n" << "} if\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/Poly {\n" << "3 1 roll\n" << "newpath\n" << "moveto\n" << "-1 add\n" << "{ lineto } repeat\n" << "closepath\n" << "patternNone not { ifill } if\n" << "brushNone not { istroke } if\n" << "} def\n" << "\n" << "/Rect {\n" << "0 begin\n" << "/t exch def\n" << "/r exch def\n" << "/b exch def\n" << "/l exch def\n" << "newpath\n" << "l b moveto\n" << "l t lineto\n" << "r t lineto\n" << "r b lineto\n" << "closepath\n" << "patternNone not { ifill } if\n" << "brushNone not { istroke } if\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/Text {\n" << "ishow\n" << "} def\n" << "\n" << "/idef {\n" << "dup where { pop pop pop } { exch def } ifelse\n" << "} def\n" << "\n" << "/ifill {\n" << "0 begin\n" << "gsave\n" << "patternGrayLevel -1 ne {\n" << "fgred bgred fgred sub patternGrayLevel mul add\n" << "fggreen bggreen fggreen sub patternGrayLevel mul add\n" << "fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor\n" << "eofill\n" << "} {\n" << "eoclip\n" << "originalCTM setmatrix\n" << "pathbbox /t exch def /r exch def /b exch def /l exch def\n" << "/w r l sub ceiling cvi def\n" << "/h t b sub ceiling cvi def\n" << "/imageByteWidth w 8 div ceiling cvi def\n" << "/imageHeight h def\n" << "bgred bggreen bgblue setrgbcolor\n" << "eofill\n" << "fgred fggreen fgblue setrgbcolor\n" << "w 0 gt h 0 gt and {\n" << "l w add b translate w neg h scale\n" << "w h true [w 0 0 h neg 0 h] { patternproc } imagemask\n" << "} if\n" << "} ifelse\n" << "grestore\n" << "end\n" << "} dup 0 8 dict put def\n" << "\n" << "/istroke {\n" << "gsave\n" << "brushDashOffset -1 eq {\n" << "[] 0 setdash\n" << "1 setgray\n" << "} {\n" << "brushDashArray brushDashOffset setdash\n" << "fgred fggreen fgblue setrgbcolor\n" << "} ifelse\n" << "brushWidth setlinewidth\n" << "originalCTM setmatrix\n" << "stroke\n" << "grestore\n" << "} def\n" << "\n" << "/ishow {\n" << "0 begin\n" << "gsave\n" << "fgred fggreen fgblue setrgbcolor\n" << "/fontDict printFont printSize scalefont dup setfont def\n" << "/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end\n" << "transform exch pop def\n" << "/vertoffset 1 printSize sub descender sub def {\n" << "0 vertoffset moveto show\n" << "/vertoffset vertoffset printSize sub def\n" << "} forall\n" << "grestore\n" << "end\n" << "} dup 0 3 dict put def\n" << "/patternproc {\n" << "0 begin\n" << "/patternByteLength patternString length def\n" << "/patternHeight patternByteLength 8 mul sqrt cvi def\n" << "/patternWidth patternHeight def\n" << "/patternByteWidth patternWidth 8 idiv def\n" << "/imageByteMaxLength imageByteWidth imageHeight mul\n" << "stringLimit patternByteWidth sub min def\n" << "/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv\n" << "patternHeight mul patternHeight max def\n" << "/imageHeight imageHeight imageMaxHeight sub store\n" << "/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def\n" << "0 1 imageMaxHeight 1 sub {\n" << "/y exch def\n" << "/patternRow y patternByteWidth mul patternByteLength mod def\n" << "/patternRowString patternString patternRow patternByteWidth getinterval def\n" << "/imageRow y imageByteWidth mul def\n" << "0 patternByteWidth imageByteWidth 1 sub {\n" << "/x exch def\n" << "imageString imageRow x add patternRowString putinterval\n" << "} for\n" << "} for\n" << "imageString\n" << "end\n" << "} dup 0 12 dict put def\n" << "\n" << "/min {\n" << "dup 3 2 roll dup 4 3 roll lt { exch } if pop\n" << "} def\n" << "\n" << "/max {\n" << "dup 3 2 roll dup 4 3 roll gt { exch } if pop\n" << "} def\n" << "\n" << "/midpoint {\n" << "0 begin\n" << "/y1 exch def\n" << "/x1 exch def\n" << "/y0 exch def\n" << "/x0 exch def\n" << "x0 x1 add 2 div\n" << "y0 y1 add 2 div\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/thirdpoint {\n" << "0 begin\n" << "/y1 exch def\n" << "/x1 exch def\n" << "/y0 exch def\n" << "/x0 exch def\n" << "x0 2 mul x1 add 3 div\n" << "y0 2 mul y1 add 3 div\n" << "end\n" << "} dup 0 4 dict put def\n" << "\n" << "/subspline {\n" << "0 begin\n" << "/movetoNeeded exch def\n" << "y exch get /y3 exch def\n" << "x exch get /x3 exch def\n" << "y exch get /y2 exch def\n" << "x exch get /x2 exch def\n" << "y exch get /y1 exch def\n" << "x exch get /x1 exch def\n" << "y exch get /y0 exch def\n" << "x exch get /x0 exch def\n" << "x1 y1 x2 y2 thirdpoint\n" << "/p1y exch def\n" << "/p1x exch def\n" << "x2 y2 x1 y1 thirdpoint\n" << "/p2y exch def\n" << "/p2x exch def\n" << "x1 y1 x0 y0 thirdpoint\n" << "p1x p1y midpoint\n" << "/p0y exch def\n" << "/p0x exch def\n" << "x2 y2 x3 y3 thirdpoint\n" << "p2x p2y midpoint\n" << "/p3y exch def\n" << "/p3x exch def\n" << "movetoNeeded { p0x p0y moveto } if\n" << "p1x p1y p2x p2y p3x p3y curveto\n" << "end\n" << "} dup 0 17 dict put def\n" << "\n" << "/storexyn {\n" << "/n exch def\n" << "/y n array def\n" << "/x n array def\n" << "n 1 sub -1 0 {\n" << "/i exch def\n" << "y i 3 2 roll put\n" << "x i 3 2 roll put\n" << "} for\n" << "} def\n" << "\n" << "/SSten {\n" << "fgred fggreen fgblue setrgbcolor\n" << "dup true exch 1 0 0 -1 0 6 -1 roll matrix astore\n" << "} def\n" << "\n" << "/FSten {\n" << "dup 3 -1 roll dup 4 1 roll exch\n" << "newpath\n" << "0 0 moveto\n" << "dup 0 exch lineto\n" << "exch dup 3 1 roll exch lineto\n" << "0 lineto\n" << "closepath\n" << "bgred bggreen bgblue setrgbcolor\n" << "eofill\n" << "SSten\n" << "} def\n" << "\n" << "/Rast {\n" << "exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore\n" << "} def\n" << "\n" << "%%EndProlog\n" << "\n" << "%I Idraw 12 Grid 8 8 \n" << "\n" << "%%Page: 1 1\n" << "\n" << "Begin\n" << "%I b u\n" << "%I cfg u\n" << "%I cbg u\n" << "%I f u\n" << "%I p u\n" << "%I t\n" << "[ 0.834861 0 0 0.834861 0 0 ] concat\n" << "/originalCTM matrix currentmatrix def\n" << "\n"; } drvIDRAW::~drvIDRAW() { // Write idraw PostScript trailer outf << "End %I eop\n\n"; outf << "showpage\n\n"; outf << "%%Trailer\n\n"; outf << "end\n"; options=0; } // Return the name of closest matching color const char *drvIDRAW::rgb2name(float red, float green, float blue) const { const char *name = 0; double bestquality = 1e+100; // Arbitrary large number // Linear search for a match for (int i = 0; i < IDRAW_NUMCOLORS; i++) { double quality = (red - color[i].red) * (red - color[i].red) + (green - color[i].green) * (green - color[i].green) + (blue - color[i].blue) * (blue - color[i].blue); if (quality < bestquality) { bestquality = quality; name = color[i].name; } } return name; } // Output a standard idraw object header void drvIDRAW::print_header(const char *objtype) { // Object type outf << "Begin %I " << objtype << endl; // Special case for text if (!strcmp(objtype, "Text")) { // Foreground color outf << "%I cfg " << rgb2name(currentR(), currentG(), currentB()) << endl; outf << currentR() << ' ' << currentG() << ' ' << currentB() << " SetCFg\n"; return; } // Dash pattern outf << "%I b "; double dash[4]; int dashpieces = sscanf_s(dashPattern(), "[ %lf %lf %lf %lf", &dash[0], &dash[1], &dash[2], &dash[3]); if (dashpieces) { int i; unsigned short dashbits = 0; for (i = 0; i < 4; i++) { unsigned int numbits = iscale((float)dash[i % dashpieces]); unsigned int j; for (j = 0; j < numbits; j++) dashbits = dashbits << 1 | (~i & 1); } outf << dashbits << endl; outf << iscale(currentLineWidth()) << " 0 0 ["; for (i = 0; i < dashpieces - 1; i++) outf << iscale((float)dash[i]) << ' '; outf << iscale((float)dash[i]) << "] "; } else { outf << 65535 << endl; outf << iscale(currentLineWidth()) << " 0 0 [] "; } outf << "0 SetB" << endl; // Hard-code an offset of 0 into the pattern // Foreground color outf << "%I cfg " << rgb2name(currentR(), currentG(), currentB()) << endl; outf << currentR() << ' ' << currentG() << ' ' << currentB() << " SetCFg\n"; // Background color outf << "%I cbg " << rgb2name(currentR(), currentG(), currentB()) << endl; outf << currentR() << ' ' << currentG() << ' ' << currentB() << " SetCBg\n"; // Pattern if (currentShowType() == drvbase::stroke) outf << "none SetP %I p n" << endl; else { outf << "%I p" << endl; outf << "0 SetP" << endl; } // Transposition matrix outf << "%I t" << endl; outf << "[ 1 -0 -0 1 0 0 ] concat" << endl; // No translation/rotation } void drvIDRAW::print_coords() { unsigned int pathelts = numberOfElementsInPath(); bool closed; // True if shape is closed bool curved; // True if shape is curved const Point *firstpoint; // First and last points in shape const Point *lastpoint; unsigned int totalpoints; // Total number of points in shape const Point dummypoint(-123.456f, -789.101112f); // Used to help eliminate duplicates unsigned int i, j; // First, try to figure out what type of shape we have closed = false; curved = false; for (i = 0; i < pathelts; i++) { if (pathElement(i).getType() == curveto) curved = true; else if (pathElement(i).getType() == closepath) closed = true; } const Point **pointlist = new const Point *[pathelts * 3]; // List of points // Allocate a conservative amount assert(pointlist != NIL); firstpoint = NIL; lastpoint = &dummypoint; totalpoints = 0; for (i = 0; i < pathelts; i++) { const basedrawingelement & pelt = pathElement(i); if ((pelt.getType() == moveto || pelt.getType() == lineto) && !(pelt.getPoint(0) == *lastpoint)) lastpoint = pointlist[totalpoints++] = &pelt.getPoint(0); else if (pelt.getType() == curveto) for (j = 0; j < 3; j++) lastpoint = pointlist[totalpoints++] = &pelt.getPoint(j); } if (totalpoints) { firstpoint = pointlist[0]; if (firstpoint->x_ == lastpoint->x_ && firstpoint->y_ == lastpoint->y_) closed = true; // Find points on the curve for curved lines if (curved) { const unsigned int pt_per_cp = 5; // PostScript points per control point const unsigned int min_innerpoints = 2; // Minimum # of points to add unsigned int innerpoints; // Number of points to add unsigned int newtotalpoints = 0; // Number of points in curve // ASSUMPTION: Curve is moveto+curveto+curveto+curveto+... // List of points on curve const Point **newpointlist = new const Point *[pathelts * 3000 / pt_per_cp]; // Allocate a conservative amount assert(newpointlist != NIL); for (i = 0; i < totalpoints - 3; i += 3) { const float x0 = pointlist[i]->x_; const float y0 = pointlist[i]->y_; const float x1 = pointlist[i + 1]->x_; const float y1 = pointlist[i + 1]->y_; const float x2 = pointlist[i + 2]->x_; const float y2 = pointlist[i + 2]->y_; const float x3 = pointlist[i + 3]->x_; const float y3 = pointlist[i + 3]->y_; const float cx = (x1 - x0) * 3; const float cy = (y1 - y0) * 3; const float bx = (x2 - x1) * 3 - cx; const float by = (y2 - y1) * 3 - cy; const float ax = x3 - x0 - cx - bx; const float ay = y3 - y0 - cy - by; // Longer lines get more control points innerpoints =(unsigned int) ( pythagoras((y1 - y0),(x1 - x0) ) + pythagoras((y2 - y1),(x2 - x1) ) + pythagoras((y3 - y2),(x3 - x2) ) ) / pt_per_cp; if (innerpoints < min_innerpoints) innerpoints = min_innerpoints; // Add points to the list ADDPOINT(x0, y0); for (j = 1; j <= innerpoints; j++) { const float t = (float) j / (float) innerpoints; const float newx = (((ax * t) + bx) * t + cx) * t + x0; const float newy = (((ay * t) + by) * t + cy) * t + y0; ADDPOINT(newx, newy); } ADDPOINT(x3, y3); } delete[]pointlist; pointlist = newpointlist; totalpoints = newtotalpoints; } // Straight lines, not closed if (!closed && !curved) { if (totalpoints == 2) { // Special case for single line print_header("Line"); outf << "%I" << endl; outf << iscale(firstpoint->x_) << ' ' << iscale(firstpoint->y_) << ' '; outf << iscale(lastpoint->x_) << ' ' << iscale(lastpoint->y_) << ' '; outf << "Line" << endl; outf << "%I 1" << endl; outf << "End" << endl << endl; } else { // Otherwise, output a multiline print_header("MLine"); // (Should have a special case for Rect) outf << "%I " << totalpoints << endl; for (i = 0; i < totalpoints; i++) { outf << iscale(pointlist[i]->x_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } outf << totalpoints << " MLine" << endl; outf << "%I 1" << endl; outf << "End" << endl << endl; } } // Straight lines, closed */ if (closed && !curved) { unsigned int numpoints; numpoints = totalpoints == 1 ? 1 : totalpoints - 1; print_header("Poly"); // Output a polygon outf << "%I " << numpoints << endl; for (i = 0; i < numpoints; i++) { outf << iscale(pointlist[i]->x_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } outf << numpoints << " Poly" << endl; outf << "End" << endl << endl; } // Curved lines, not closed if (!closed && curved) { print_header("BSpl"); // Output a B-spline outf << "%I " << totalpoints << endl; for (i = 0; i < totalpoints; i++) { outf << iscale(pointlist[i]->x_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } outf << totalpoints << " BSpl" << endl; outf << "%I 1" << endl; outf << "End" << endl << endl; } // Curved lines, closed if (closed && curved) { unsigned int numpoints; numpoints = totalpoints == 1 ? 1 : totalpoints - 1; print_header("CBSpl"); // Output a closed B-spline outf << "%I " << numpoints << endl; for (i = 0; i < numpoints; i++) { outf << iscale(pointlist[i]->x_) << ' '; outf << iscale(pointlist[i]->y_) << endl; } outf << numpoints << " CBSpl" << endl; outf << "End" << endl << endl; } if (curved) { // // in this case we have created the pointlist newly with Points on the heap // if (pointlist) for (unsigned int pindex = 0; pindex < totalpoints; pindex++) { //cout << "pindex / totalpoints " << pindex << " " << totalpoints << " " << pointlist[pindex]->x_ << " " << pointlist[pindex]->y_ << " " << pointlist[pindex]<< endl; #if defined (_MSC_VER) && (_MSC_VER < 1100) // MSVC < 6 needs cast here delete (Point *) (pointlist[pindex]); #else delete (pointlist[pindex]); #endif } } } delete[]pointlist; } // idraw doesn't support more than one page of graphics void drvIDRAW::open_page() { } // idraw doesn't support more than one page of graphics void drvIDRAW::close_page() { } // Convert a PostScript font name to an XLFD font name const char *drvIDRAW::psfont2xlfd(const char *psfont) { // Times Roman family if (!strcmp(psfont, "Times-Roman")) return "-*-times-medium-r-*-*-"; if (!strcmp(psfont, "Times-Bold")) return "-*-times-bold-r-*-*-"; if (!strcmp(psfont, "Times-Italic")) return "-*-times-medium-i-*-*-"; if (!strcmp(psfont, "Times-BoldItalic")) return "-*-times-bold-i-*-*-"; // Helvetica family if (!strcmp(psfont, "Helvetica")) return "-*-helvetica-medium-r-*-*-"; if (!strcmp(psfont, "Helvetica-Bold")) return "-*-helvetica-bold-r-*-*-"; if (!strcmp(psfont, "Helvetica-Oblique")) return "-*-helvetica-medium-o-*-*-"; if (!strcmp(psfont, "Helvetica-BoldOblique")) return "-*-helvetica-bold-o-*-*-"; // Courier family if (!strcmp(psfont, "Courier")) return "-*-courier-medium-r-*-*-"; if (!strcmp(psfont, "Courier-Bold")) return "-*-courier-bold-r-*-*-"; if (!strcmp(psfont, "Courier-Oblique")) return "-*-courier-medium-o-*-*-"; if (!strcmp(psfont, "Courier-BoldOblique")) return "-*-courier-bold-o-*-*-"; // Symbol family if (!strcmp(psfont, "Symbol")) return "-*-symbol-medium-r-*-*-"; // None of the above -- assume Times Roman is close enough return "-*-times-medium-r-*-*-"; } void drvIDRAW::show_text(const TextInfo & textinfo) { // Output the text header print_header("Text"); // Output the name of the font to use on screen outf << "%I f " << psfont2xlfd(textinfo.currentFontName.value()); outf << iscale(textinfo.currentFontSize); outf << "-*-*-*-*-*-*-*" << endl; // Output the name of the font to print outf << textinfo.currentFontName.value() << ' '; outf << iscale(textinfo.currentFontSize); outf << " SetF" << endl; // Output the next part of the text setup boilerplate outf << "%I t" << endl; const float toRadians = 3.14159265359f / 180.0f; const float angle = textinfo.currentFontAngle * toRadians; const float xoffset = textinfo.currentFontSize * (float) -sin(angle); const float yoffset = textinfo.currentFontSize * (float) cos(angle); outf << "[ " << cos(angle) << ' ' << sin(angle) << ' '; outf << -sin(angle) << ' ' << cos(angle) << ' '; outf << (unsigned int) (0.5 + xoffset + textinfo.x / IDRAW_SCALING) << ' '; outf << (unsigned int) (0.5 + yoffset + textinfo.y / IDRAW_SCALING); outf << " ] concat" << endl; outf << "%I" << endl; outf << "[" << endl; // Output the string, escaping parentheses with backslashes outf << '('; for (const char *c = textinfo.thetext.value(); *c; c++) switch (*c) { case '(': outf << "\\("; break; case ')': outf << "\\)"; break; default: outf << *c; break; } outf << ')' << endl; outf << "] Text" << endl; outf << "End" << endl << endl; } // Show the current path (i.e. shape) void drvIDRAW::show_path() { print_coords(); } void drvIDRAW::show_image(const PSImage & imageinfo) { if (outBaseName == "") { errf << "images cannot be handled via standard output. Use an output file " << endl; return; } imageinfo.writeIdrawImage(outf, 1.0f / IDRAW_SCALING); } static DriverDescriptionT < drvIDRAW > D_idraw("idraw", "Interviews draw format (EPS)", "", "idraw", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // if backend supports curves, else 0 true, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvidraw.h0000644000175500010010000000416212137224256013003 00000000000000#ifndef __drvIDRAW_h #define __drvIDRAW_h /* drvidraw.h : This file is part of pstoedit Backend for idraw files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" enum {IDRAW_NUMCOLORS=12}; class drvIDRAW : public drvbase { public: derivedConstructor(drvIDRAW); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvIDRAW(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; void show_image(const PSImage & imageinfo); private: void print_coords(); static const char *psfont2xlfd(const char *); // Map PS --> XLFD font name float IDRAW_SCALING; const char *rgb2name(float, float, float) const ;// Map RGB --> color name void print_header(const char *); // Output idraw header struct { // Map of RGB to color name double red, green, blue; const char *name; } color[IDRAW_NUMCOLORS]; // Scale a PostScript value to an idraw value inline unsigned int iscale(float invalue) const { return (unsigned int) (invalue/IDRAW_SCALING + 0.5); } private: // int objectId; TempFile tempFile; ofstream &buffer; int imgcount; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); }; #endif pstoedit-3.62/src/drvjava.cpp0000644000175500010010000002044112137224253013144 00000000000000/* drvJAVA.cpp : This file is part of pstoedit backend to generate a Java(TM) applet Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvjava.h" #include I_fstream #include I_stdio #include I_stdlib //lint -esym(754,JavaFontDesc::javaname) // not used so far //lint -esym(754,JavaFontDesc::javastyle) // not used so far struct JavaFontDesc { const char *psname; const char *javaname; const char *javastyle; }; static const JavaFontDesc JavaFonts[] = { // predefined Fonts {"Courier", "Courier", "Font.PLAIN"}, {"Courier-Bold", "Courier", "Font.BOLD"}, {"Courier-Oblique", "Courier", "Font.ITALIC"}, {"Courier-BoldOblique", "Courier", "Font.BOLD + Font.ITALIC"}, {"Helvetica", "Helvetica", "Font.PLAIN"}, {"Helvetica-Bold", "Helvetica", "Font.BOLD"}, {"Helvetica-Oblique", "Helvetica", "Font.ITALIC"}, {"Helvetica-BoldOblique", "Helvetica", "Font.BOLD + Font.ITALIC"}, {"Times-Roman", "TimesRoman", "Font.PLAIN"}, {"Times-Bold", "TimesRoman", "Font.BOLD"}, {"Times-Italic", "TimesRoman", "Font.ITALIC"}, {"Times-BoldItalic", "TimesRoman", "Font.BOLD + Font.ITALIC"}, {"ZapfDingbats", "ZapfDingbats", "Font.PLAIN"}, {0, 0, 0} }; const unsigned int numberOfFonts = sizeof(JavaFonts) / (sizeof(JavaFontDesc)) - 1; static int getFontNumber(const char *const fontname) { const size_t fntlength = strlen(fontname); for (unsigned int i = 0; i < numberOfFonts; i++) { const size_t JavaFntLengh = strlen(JavaFonts[i].psname); if (fntlength == JavaFntLengh) { if (strncmp(fontname, JavaFonts[i].psname, fntlength) == 0) { return i; } } } return 0; // return Courier if not found } drvJAVA::derivedConstructor(drvJAVA): constructBase { #if 0 if (d_argc > 0) { assert(d_argv && d_argv[0]); jClassName = d_argv[0]; } #endif // driver specific initializations // and writing of header to output file outf << "import java.applet.*;" << endl; outf << "import java.awt.*;" << endl; outf << "public class " << options->jClassName.value << " extends PsPages" << endl; outf << "{" << endl; // outf << " public void init()" << endl; // outf << " {" << endl; // outf << " setBackground( Color.white );" << endl; // outf << " }" << endl; } drvJAVA::~drvJAVA() { // driver specific deallocations // and writing of trailer to output file outf << " public " << options->jClassName.value << "(){" << endl; outf << " pages = new PageDescription[" << currentPageNumber << "];" << endl; for (unsigned int i = 0; i < currentPageNumber; i++) { outf << " setupPage_" << i + 1 << "();" << endl; } outf << " }" << endl; outf << " public int numberOfPages()" << endl; outf << " {" << endl; outf << " return " << currentPageNumber << ';' << endl; outf << " }" << endl; outf << "}" << endl; options=0; } void drvJAVA::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << "\tp.addPoint("; outf << (int) (p.x_ + x_offset) << "," << (int) (currentDeviceHeight - p.y_ + y_offset) << ");"; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << "\tp.addPoint("; outf << (int) (p.x_ + x_offset) << "," << (int) (currentDeviceHeight - p.y_ + y_offset) << ");"; } break; case closepath: // outf << "\t\tclosepath "; break; case curveto:{ errf << "\t\tFatal: unexpected case in drvjava " << endl; abort(); } break; default: errf << "\t\tFatal: unexpected case in drvjava " << endl; abort(); break; } outf << endl; } } void drvJAVA::open_page() { outf << "//Opening page: " << currentPageNumber << endl; outf << " public void setupPage_" << currentPageNumber << "()" << endl; outf << " {" << endl; outf << " PageDescription currentpage = new PageDescription();" << endl; outf << " PSPolygonObject p = null;" << endl; outf << " PSLinesObject l = null;" << endl; } void drvJAVA::close_page() { outf << "//Closing page: " << (currentPageNumber) << endl; outf << " pages[" << currentPageNumber - 1 << "] = currentpage;" << endl; outf << " }" << endl; } void drvJAVA::show_text(const TextInfo & textinfo) { unsigned int javaFontNumber = getFontNumber(textinfo.currentFontName.value()); outf << "\tcurrentpage.theObjects.addElement( new PSTextObject(" << endl; outf << "\t\t" << currentR() << "F," << currentG() << "F," << currentB() << "F," << endl; outf << "\t\t\""; // << textinfo.thetext for (const char *p = textinfo.thetext.value(); (*p) != 0; p++) { if ((*p) == '"') { outf << '\\' << *p; } else if ((*p) == '\\') { outf << '\\' << *p; } else if ((*p) == (char) 13) { // ^M outf << ' '; } else { outf << *p; } } outf << "\"," << (int) (textinfo.x + x_offset) << "," << (int) (currentDeviceHeight - textinfo.y + y_offset) << ',' << endl; #ifdef PASSFONTNAME const char *javaFname = JavaFonts[javaFontNumber].javaname; const char *javaFstyle = JavaFonts[javaFontNumber].javastyle; outf << "\t\t\"" << javaFname << "\"," << javaFstyle #else outf << "\t\t" << javaFontNumber; #endif outf << ',' << (int) (textinfo.currentFontSize + 0.5) << " )\n\t);" << endl; } void drvJAVA::show_path() { outf << "\t// Path # " << currentNr() << endl; // if fill then use a polygon // else use line-segments. switch (currentShowType()) { case drvbase::stroke:{ outf << "\tl = new PSLinesObject(" << endl; outf << "\t\t" << currentR() << "F," << currentG() << "F," << currentB() << "F);" << endl; for (unsigned int t = 0; t < numberOfElementsInPath(); t++) { const Point & p = pathElement(t).getPoint(0); outf << "\tl.addPoint("; outf << (int) (p.x_ + x_offset) << "," << (int) (currentDeviceHeight - p.y_ + y_offset) << ");\n "; } outf << "\tcurrentpage.theObjects.addElement(l);" << endl; } break; case drvbase::fill: case drvbase::eofill:{ outf << "\tp = new PSPolygonObject("; outf << currentR() << "F," << currentG() << "F," << currentB() << "F);" << endl; print_coords(); if (!isPolygon()) { // make closed polygon anyway const basedrawingelement & elem = pathElement(0); const Point & p = elem.getPoint(0); outf << "\tp.addPoint("; outf << (int) (p.x_ + x_offset) << "," << (int) (currentDeviceHeight - p.y_ + y_offset) << ");\n "; } outf << "\tcurrentpage.theObjects.addElement(p);" << endl; } break; default: // cannot happen outf << "unexpected ShowType " << (int) currentShowType(); break; } // outf << "\tcurrentLineWidth: " << currentLineWidth() << endl; } static DriverDescriptionT < drvJAVA > D_java("java1", "java 1 applet source code", "","java", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvjava.h0000644000175500010010000000277112137224256012622 00000000000000#ifndef __drvJAVA_h #define __drvJAVA_h /* drvsampl.h : This file is part of pstoedit Class declaration for a sample output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvJAVA : public drvbase { public: derivedConstructor(drvJAVA); ~drvJAVA(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < RSString, RSStringValueExtractor> jClassName; DriverOptions(): jClassName(true,"java class name","string",0,"name of java class to generate",0,(const char *)"PSJava") { ADD(jClassName); } }*options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: void print_coords(); // const char * jClassName; }; #endif pstoedit-3.62/src/drvjava2.cpp0000644000175500010010000003252212137224253013231 00000000000000/* drvJAVA2.cpp : This file is part of pstoedit backend to generate a Java(TM) 2 applet -- test version Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Copyright (C) 2000 TapirSoft Gisbert & Harald Selke GbR, gisbert_AT_tapirsoft.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvjava2.h" #include I_fstream #include I_stdio #include I_stdlib #include // for fabs and sqrt #include //lint -esym(754,JavaFontDescriptor::javaname) // not used so far //lint -esym(754,JavaFontDescriptor::javastyle) // not used so far struct JavaFontDescriptor { const char *psname; const char *javaname; const char *javastyle; }; static const JavaFontDescriptor JavaFonts[] = { // predefined Fonts {"Courier", "Courier", "Font.PLAIN"}, {"Courier-Bold", "Courier", "Font.BOLD"}, {"Courier-Oblique", "Courier", "Font.ITALIC"}, {"Courier-BoldOblique", "Courier", "Font.BOLD + Font.ITALIC"}, {"Helvetica", "Helvetica", "Font.PLAIN"}, {"Helvetica-Bold", "Helvetica", "Font.BOLD"}, {"Helvetica-Oblique", "Helvetica", "Font.ITALIC"}, {"Helvetica-BoldOblique", "Helvetica", "Font.BOLD + Font.ITALIC"}, {"Times-Roman", "TimesRoman", "Font.PLAIN"}, {"Times-Bold", "TimesRoman", "Font.BOLD"}, {"Times-Italic", "TimesRoman", "Font.ITALIC"}, {"Times-BoldItalic", "TimesRoman", "Font.BOLD + Font.ITALIC"}, {"ZapfDingbats", "ZapfDingbats", "Font.PLAIN"}, {0, 0, 0} }; const unsigned int numberOfFonts = sizeof(JavaFonts) / (sizeof(JavaFontDescriptor)) - 1; static const unsigned int limitNumberOfElements = 1000; static int getFontNumber(const char *const fontname) { const size_t fntlength = strlen(fontname); for (unsigned int i = 0; i < numberOfFonts; i++) { const size_t JavaFntLengh = strlen(JavaFonts[i].psname); if (fntlength == JavaFntLengh) { if (strncmp(fontname, JavaFonts[i].psname, fntlength) == 0) { return i; } } } return 0; // return Courier if not found } drvJAVA2::derivedConstructor(drvJAVA2): constructBase, subPageNumber(0), numberOfElements(0), numberOfImages(0) { #if 0 if (d_argc > 0) { assert(d_argv && d_argv[0]); jClassName = d_argv[0]; } #endif // driver specific initializations // and writing of header to output file outf << "// Source of " << options->jClassName.value << " produced by pstoedit, driver for Java 2" << endl; outf << "import java.awt.Color;" << endl; outf << "import java.awt.geom.*;" << endl; outf << endl; outf << "public class " << options->jClassName.value << " extends PSDrawing {" << endl; outf << endl; outf << " PageDescription currentPage = null;" << endl; outf << " PSPathObject currentPath = null;" << endl; outf << endl; } drvJAVA2::~drvJAVA2() { // driver specific deallocations // and writing of trailer to output file outf << " public void init() {" << endl; for (unsigned int i = 0; i < currentPageNumber; i++) { outf << " setupPage_" << i + 1 << "();" << endl; } outf << " super.init();" << endl; outf << " }" << endl; outf << "}" << endl; options=0; } void drvJAVA2::open_page() { outf << " // Opening page: " << currentPageNumber << endl; outf << " public void setupPage_" << currentPageNumber << "() {" << endl; outf << " currentPage = new PageDescription();" << endl; numberOfElements = 0; subPageNumber = 0; } void drvJAVA2::close_page() { outf << " // Closing page: " << (currentPageNumber) << endl; outf << " pspages.add(currentPage);" << endl; outf << " }" << endl; outf << endl; } void drvJAVA2::continue_page() { subPageNumber++; outf << " // Page to be continued: " << currentPageNumber << endl; outf << " continuePage_" << currentPageNumber << "_" << subPageNumber << "();" << endl; outf << " }" << endl; outf << endl; outf << " // Continuing page: " << currentPageNumber << endl; outf << " void continuePage_" << currentPageNumber << "_" << subPageNumber << "() {" << endl; numberOfElements = 0; } void drvJAVA2::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { if (numberOfElements > limitNumberOfElements) continue_page(); const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << " currentPath.moveTo(" << (p.x_ + x_offset) << "f, " << (currentDeviceHeight - p.y_ + y_offset) << "f);"; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << " currentPath.lineTo(" << (p.x_ + x_offset) << "f, " << (currentDeviceHeight - p.y_ + y_offset) << "f);"; } break; case closepath: outf << " currentPath.closePath();"; break; case curveto:{ outf << " currentPath.curveTo("; outf << (elem.getPoint(0).x_ + x_offset) << "f, " << (currentDeviceHeight - elem.getPoint(0).y_ + y_offset) << "f, "; outf << (elem.getPoint(1).x_ + x_offset) << "f, " << (currentDeviceHeight - elem.getPoint(1).y_ + y_offset) << "f, "; outf << (elem.getPoint(2).x_ + x_offset) << "f, " << (currentDeviceHeight - elem.getPoint(2).y_ + y_offset) << "f);"; } break; default: errf << "\t\tFatal: unexpected case for elem.getType() in drvjava2" << endl; abort(); break; } outf << endl; numberOfElements++; } } void drvJAVA2::show_text(const TextInfo & textinfo) { if (numberOfElements > limitNumberOfElements) continue_page(); unsigned int javaFontNumber = getFontNumber(textinfo.currentFontName.value()); outf << " currentPage.add(new PSTextObject(new Color("; outf << currentR() << "f, " << currentG() << "f, " << currentB() << "f)," << endl; outf << " \""; for (const char *p = textinfo.thetext.value(); (*p) != 0; p++) { if ((*p) == '"') { outf << '\\' << *p; } else if ((*p) == '\\') { outf << '\\' << *p; } else if ((*p) == (char) 13) { // ^M outf << ' '; } else { outf << *p; } } outf << "\"," << endl; outf << " " << (textinfo.x + x_offset) << "f, " << (currentDeviceHeight - textinfo.y + y_offset) << "f"; #ifdef PASSFONTNAME const char *javaFname = JavaFonts[javaFontNumber].javaname; const char *javaFstyle = JavaFonts[javaFontNumber].javastyle; outf << ", \"" << javaFname << "\", " << javaFstyle; #else outf << ", " << javaFontNumber; #endif const float *CTM = getCurrentFontMatrix(); if ((fabs(pythagoras(CTM[0], CTM[1] ) - textinfo.currentFontSize) < 1e-5) && (fabs(pythagoras(CTM[2] ,CTM[3] ) - textinfo.currentFontSize) < 1e-5) && (CTM[0] * CTM[3] - CTM[1] * CTM[2] >= 0)) { outf << ", " << textinfo.currentFontSize << "f"; if (textinfo.currentFontAngle) { outf << ", " << textinfo.currentFontAngle << "f"; } } else { outf << ", new AffineTransform(" << CTM[0] << "f, " << (-CTM[1]) << "f, "; outf << (-CTM[2]) << "f, " << CTM[3] << "f, 0f, 0f)"; } outf << "));" << endl; numberOfElements++; } static void show_dashPattern(ostream & outf, const char *dashPatternString) { const char *p = dashPatternString; int state = 0; outf << " new float[] {"; while ((*p) && (isspace(*p) || (*p == '['))) p++; while (*p) { if (isspace(*p)) { if (state == 2) state = 1; } else { if (*p == ']') { state = 3; } else { if (state == 1) outf << "f, "; if (state == 3) outf << "f}, "; outf << *p; state = 2; } } p++; } outf << "f"; } void drvJAVA2::show_path() { outf << " // Path # " << currentNr() << endl; outf << " currentPath = new PSPathObject(new Color("; outf << currentR() << "f, " << currentG() << "f, " << currentB() << "f), "; outf << currentLineWidth() << "f"; if ((currentLineCap() != 0) || (currentLineJoin() != 0) || (currentShowType() != 0) || (currentLineType() != solid)) { outf << ", " << currentLineCap() << ", " << currentLineJoin() << ", " << currentMiterLimit() << "f, "; switch (currentShowType()) { case drvbase::stroke: outf << "0"; break; case drvbase::fill: outf << "1"; break; case drvbase::eofill: outf << "2"; break; default: errf << "\t\tFatal: unexpected case for currentShowType() in drvjava2" << endl; // cannot happen abort(); } if (currentLineType() != solid) { outf << "," << endl; show_dashPattern(outf, dashPattern()); } } if (isPolygon()) { outf << ", true"; } outf << ");" << endl; numberOfElements++; print_coords(); outf << " currentPage.add(currentPath);" << endl; numberOfElements++; } void drvJAVA2::show_rectangle(const float llx, const float lly, const float urx, const float ury) { if (numberOfElements > limitNumberOfElements) continue_page(); outf << " // Path # " << currentNr() << endl; outf << " currentPage.add(new PSPathObject(new Color("; outf << currentR() << "f, " << currentG() << "f, " << currentB() << "f), "; outf << currentLineWidth() << "f"; if ((currentLineJoin() != 0) || (currentShowType() != 0)) { outf << ", " << currentLineJoin(); switch (currentShowType()) { case drvbase::stroke: outf << ", 0"; break; case drvbase::fill: outf << ", 1"; break; case drvbase::eofill: outf << ", 2"; break; default: errf << "\t\tFatal: unexpected case for currentShowType() in drvjava2" << endl; // cannot happen abort(); } } if (currentLineType() != solid) { outf << "," << endl; show_dashPattern(outf, dashPattern()); } outf << ", new Rectangle2D.Float(" << (llx + x_offset) << "f, " << (currentDeviceHeight - ury + y_offset) << "f"; outf << ", " << (urx - llx) << "f, " << (ury - lly) << "f)));" << endl; numberOfElements++; } void drvJAVA2::show_image(const PSImage & imageinfo) { if (outBaseName == "") { errf << "images cannot be handled via standard output. Use an output file" << endl; return; } // write image data to separate file const size_t sizefilename = strlen(outBaseName.value()) + 21; char *imgOutFileName = new char[sizefilename]; const size_t sizefullfilename = strlen(outDirName.value()) + strlen(outBaseName.value()) + 21; char *imgOutFullFileName = new char[sizefullfilename]; sprintf_s(TARGETWITHLEN(imgOutFileName,sizefilename), "%s_%d.img", outBaseName.value(), numberOfImages); sprintf_s(TARGETWITHLEN(imgOutFullFileName,sizefullfilename), "%s%s", outDirName.value(), imgOutFileName); outf << " currentPage.add(new PSImageObject(" << imageinfo. width << ", " << imageinfo.height << ", "; outf << imageinfo.bits << ", " << imageinfo.ncomp << ", "; switch (imageinfo.type) { case colorimage: outf << "0, "; break; case normalimage: outf << "1, "; break; case imagemask: outf << "2, "; break; default: errf << "\t\tFatal: unexpected case for imageinfo.type in drvjava2" << endl; // cannot happen abort(); } outf << (imageinfo.polarity ? "true" : "false") << "," << endl; outf << " new AffineTransform("; outf << (imageinfo.normalizedImageCurrentMatrix[0]) << "f, "; outf << (-imageinfo.normalizedImageCurrentMatrix[1]) << "f, "; outf << (imageinfo.normalizedImageCurrentMatrix[2]) << "f, "; outf << (-imageinfo.normalizedImageCurrentMatrix[3]) << "f, "; outf << (imageinfo.normalizedImageCurrentMatrix[4]) << "f, "; outf << (currentDeviceHeight - imageinfo.normalizedImageCurrentMatrix[5]) << "f), " << endl; outf << " \"" << imgOutFileName << "\"));" << endl; FILE *outFile; if ((outFile = fopen(imgOutFileName, "wb")) == 0L) { errf << "ERROR: cannot open image file " << imgOutFileName << endl; delete[]imgOutFileName; delete[]imgOutFullFileName; return; } if (fwrite(imageinfo.data, 1, imageinfo.nextfreedataitem, outFile) != imageinfo.nextfreedataitem) { fclose(outFile); errf << "ERROR: cannot write image data to " << imgOutFileName << endl; delete[]imgOutFileName; delete[]imgOutFullFileName; return; } fclose(outFile); delete[]imgOutFullFileName; delete[]imgOutFileName; numberOfImages++; numberOfElements++; } static DriverDescriptionT < drvJAVA2 > D_java2("java2", "java 2 source code", "","java2", true, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves false, // backend does not support elements with both fill and edges true, // backend supports text DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, true, // format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvjava2.h0000644000175500010010000000355112137224256012701 00000000000000#ifndef __drvJAVA2_h #define __drvJAVA2_h /* drvjava2.h : This file is part of pstoedit Class declaration for a Java2 output driver -- test version Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Copyright (C) 2000 TapirSoft Gisbert & Harald Selke GbR, gisbert@tapirsoft.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvJAVA2 : public drvbase { public: derivedConstructor(drvJAVA2); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvJAVA2(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < RSString, RSStringValueExtractor> jClassName; DriverOptions(): jClassName(true,"java class name","string",0,"name of java class to generate",0,(const char *)"PSJava") { ADD(jClassName); } }*options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); void show_rectangle(const float llx, const float lly, const float urx, const float ury); virtual void show_image(const PSImage & imageinfo); private: void print_coords(); void continue_page(); unsigned int subPageNumber; unsigned int numberOfElements; unsigned int numberOfImages; }; #endif pstoedit-3.62/src/drvkillu.cpp0000644000175500010010000001514412137224253013347 00000000000000/* drvkillu.cpp : This file is part of pstoedit Implementation of Kontour output driver. Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Copyright (C) 1998,1999 Kai-Uwe Sattler, kus_AT_iti.cs.uni-magdeburg.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvkillu.h" #include I_fstream #include I_stdio #include I_stdlib #include drvKontour::derivedConstructor(drvKontour):constructBase { // driver specific initializations // and writing of header to output file // // // outf << "\n" << "\n"; outf << "\n" << "\n" << "\n"; } drvKontour::~drvKontour() { // driver specific deallocations // and writing of trailer to output file outf << "\n"; options=0; } void drvKontour::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << "\n"; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << "\n"; } break; case closepath: break; case curveto:{ for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); outf << "\n"; } } break; default: errf << "\t\tFatal: unexpected case in drvKontour " << endl; abort(); break; } } } void drvKontour::open_page() { } void drvKontour::close_page() { } void drvKontour::show_text(const TextInfo & textinfo) { static const float toRad = 3.14159265359f / 180.0f; const double angle = (360.0 - textinfo.currentFontAngle) * toRad; const double cosa = cos(angle); const double sina = sin(angle); outf << "\n"; outf << "\n"; const char *c = textinfo.thetext.value(); while (*c != '\0') { if (*c == '<') outf << "<"; else if (*c == '&') outf << "&"; else if (*c == '>') outf << ">"; else outf << *c; c++; } outf << "\n"; } void drvKontour::show_path() { if (isPolygon()) outf << "\n"; print_coords(); if (isPolygon()) outf << "\n"; else outf << "\n"; } void drvKontour::show_rectangle(const float llx, const float lly, const float urx, const float ury) { outf << "" << endl; } int drvKontour::cvtColor(float c) { return int ((c * 255.0) + 0.5); } static DriverDescriptionT < drvKontour > D_Kontour("kil", ".kil format for Kontour", "","kil", false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend supports curves false, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvkillu.h0000644000175500010010000000267512137224256013024 00000000000000#ifndef __drvKontour_h #define __drvKontour_h /* drvsampl.h : This file is part of pstoedit Class declaration for a Kontour output driver. Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Copyright (C) 1998 Kai-Uwe Sattler, kus@iti.cs.uni-magdeburg.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvKontour : public drvbase { public: derivedConstructor(drvKontour); ~drvKontour (); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; private: static int cvtColor (float c); #include "drvfuncs.h" void show_text(const TextInfo & textInfo); void show_rectangle(const float llx, const float lly, const float urx, const float ury); private: void print_coords(); }; #endif pstoedit-3.62/src/drvlatex2e.cpp0000644000175500010010000003274112137224253013575 00000000000000/* drvLATEX2E.cpp : This file is part of pstoedit Backend for Latex2E files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, , Scott Pakin, This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvlatex2e.h" //#ifdef HAVESTL //#include I_fstream //#include I_stdio //#include I_stdlib // Constructor drvLATEX2E::derivedConstructor(drvLATEX2E):constructBase, buffer(tempFile.asOutput()), prevR(0.0f), prevG(0.0f), prevB(0.0f), thicklines(false), prevfontname(""), prevfontsize(0.0f) { #if 0 for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); if (!strcmp(d_argv[i], "-integers")) integersonly = true; } #endif } // Destructor drvLATEX2E::~drvLATEX2E() { options=0; } struct Point2e { Point2e(const Point& p_, bool integersonly_p) : p(p_),integersonly(integersonly_p) {} Point p; bool integersonly; }; // Output a point. // NOTE: This is a top-level function, not a member of drvLATEX2E. static ostream & operator << (ostream & os, const Point2e & pt) { if (pt.integersonly) { os << '(' << long (pt.p.x_ + 0.5) << ',' << long (pt.p.y_ + 0.5) << ')'; } else { os << '(' << pt.p.x_ << ',' << pt.p.y_ << ')'; } return os; } // Convert the coordinates on a path to LaTeX2e. void drvLATEX2E::print_coords() { Point *firstpoint = NIL; // Where "closepath" takes us back to Point pointlist[3]; // Other points we care about //old ostrstream outputline; // Current line of LaTeX2e to output buffer.setf(ios::fixed, ios::floatfield); // TeX can't deal with scientific notation. for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { // Store a new current point. case moveto: currentpoint = elem.getPoint(0); scalepoint(currentpoint); updatebbox(currentpoint); if (!firstpoint) { firstpoint = new Point(currentpoint.x_, currentpoint.y_); assert(firstpoint); } break; /* * Draw a line. If the line is vertical or horizontal (the easy * cases), then use the picture-mode "\line" command. Otherwise, * don't bother calculating slopes and GCDs and all the other crud * that \line requires. Instead, take the easy way out and use a * \qbezier command. */ case lineto: case closepath: if (elem.getType() == lineto) { pointlist[0] = elem.getPoint(0); scalepoint(pointlist[0]); updatebbox(pointlist[0]); } else { assert(firstpoint); pointlist[0] = *firstpoint; delete firstpoint; firstpoint = NIL; } if (pointlist[0].x_ == currentpoint.x_) { // Vertical line if (pointlist[0].y_ == currentpoint.y_) // (and not a point) break; const float p_distance = (float) fabs(pointlist[0].y_ - currentpoint.y_); buffer << " \\put" << Point2e(currentpoint,options->integersonly) << "{\\line(0," << (pointlist[0].y_ > currentpoint.y_ ? 1 : -1) << "){"; if (options->integersonly) { buffer << long (p_distance + 0.5) << "}}"; } else { buffer << p_distance << "}}"; } } else if (pointlist[0].y_ == currentpoint.y_) { // Horizontal line const float p_distance = (float) fabs(pointlist[0].x_ - currentpoint.x_); buffer << " \\put" << Point2e(currentpoint,options->integersonly) << "{\\line(" << (pointlist[0].x_ > currentpoint.x_ ? 1 : -1) << ",0){"; if (options->integersonly) { buffer << long (p_distance + 0.5) << "}}"; } else { buffer << p_distance << "}}"; } } else // Diagonal line -- use a Bezier buffer << " \\qbezier" << Point2e(currentpoint,options->integersonly) << Point2e(pointlist[0],options->integersonly) << Point2e(pointlist[0],options->integersonly); buffer << endl; currentpoint = pointlist[0]; break; /* * Draw a Bezier curve. This is trickier than in most pstoedit * backends because LaTeX2e uses quadratic Beziers, while PostScript * (and hence, pstoedit) use cubic Beziers. Fortunately, it's * possible to convert from one to the other (more or less), and * that's what we do. */ case curveto:{ for (unsigned int cp = 0; cp < 3; cp++) { pointlist[cp] = elem.getPoint(cp); scalepoint(pointlist[cp]); updatebbox(pointlist[cp]); } float midx = ((3 * pointlist[0].x_ - currentpoint.x_) / 2 + (3 * pointlist[1].x_ - pointlist[2].x_) / 2) / 2; float midy = ((3 * pointlist[0].y_ - currentpoint.y_) / 2 + (3 * pointlist[1].y_ - pointlist[2].y_) / 2) / 2; Point midpoint(midx, midy); buffer << " \\qbezier" << Point2e(currentpoint,options->integersonly) << Point2e(midpoint,options->integersonly) << Point2e(pointlist[2],options->integersonly) << endl; currentpoint = pointlist[2]; } break; // We got a bad path element. default: errf << "\t\tFatal: unexpected case in drvlatex2e " << endl; abort(); break; } } // Finish up the path. //old buffer << ends; //old outputQ.push (outputline.str()); if (firstpoint) delete firstpoint; } // Start of page (really: figure) -- initialize bounding box and "previous" // versions of things. void drvLATEX2E::open_page() { currentpoint.x_ = 0; currentpoint.y_ = 0; boundingbox[0].x_ = boundingbox[0].y_ = 1e+10; //lint !e736 boundingbox[1].x_ = boundingbox[1].y_ = -1e+10; //lint !e736 prevR = prevG = prevB = 0.0; thicklines = false; prevfontname = ""; prevfontsize = -1.0; //lint !e736 } // End of page (really: figure) -- output a bounding box and the entire // contents of the output queue. void drvLATEX2E::close_page() { // Specify the picture's width and height and, optionally, the origin. Point boxsize(boundingbox[1].x_ - boundingbox[0].x_, boundingbox[1].y_ - boundingbox[0].y_); outf << "\\begin{picture}" << Point2e(boxsize,options->integersonly); if (boundingbox[0].x_ || boundingbox[0].y_) outf << Point2e(boundingbox[0],options->integersonly); outf << endl; #if 0 // old // Output everything in the queue. while (!outputQ.empty()) { outf << outputQ.front(); outputQ.pop(); } #endif // now we can copy the buffer the output ifstream & inbuffer = tempFile.asInput(); copy_file(inbuffer, outf); (void) tempFile.asOutput(); // Close the picture environment. outf << "\\end{picture}" << endl; } /* * Output a piece of text. We rely on pstoedit's font-mapping routine to * convert the name directly to parameters to \usefont. */ void drvLATEX2E::show_text(const TextInfo & textinfo) { //old ostrstream outputline; // Current line of LaTeX2e to output buffer.setf(ios::fixed, ios::floatfield); // TeX can't deal with scientific notation. // Set the font and font size if (and only if) it's changed. string fontname(textinfo.currentFontName.value()); if (fontname[0] != '{' && fontname != prevfontname) { errf << "Font \"" << fontname << "\" is not of the form \"{encoding}{family}{series}{shape}\".\n" << "(You may need to use the -fontmap option to point pstoedit to latex2e.fmp.)" << endl; prevfontname = fontname; } else if (fontname != prevfontname) { buffer << " \\usefont" << fontname << endl; prevfontname = fontname; } float fontsize = textinfo.currentFontSize * 72.27f / 72.0f; if (fontsize != prevfontsize) { buffer << " \\fontsize{"; if (options->integersonly) { long longsize = long (fontsize + 0.5); buffer << longsize << "\\unitlength}{" << longsize; } else buffer << fontsize << "\\unitlength}{" << fontsize; buffer << "\\unitlength}\\selectfont" << endl; prevfontsize = fontsize; } // Set the color if (and only if) it's changed. // NOTE: Color requires the "color" package. if (textinfo.currentR != prevR || textinfo.currentG != prevG || textinfo.currentB != prevB) { prevR = textinfo.currentR; prevG = textinfo.currentG; prevB = textinfo.currentB; buffer << " \\color[rgb]{" << prevR << ',' << prevG << ',' << prevB << '}' << endl; } // Scale the starting point and update the bounding box. Point textpoint(textinfo.x, textinfo.y); scalepoint(textpoint); updatebbox(textpoint); // Output the text string, optionally rotated. // NOTE: Rotation requires the "rotation" package. buffer << " \\put" << Point2e(textpoint,options->integersonly) << '{'; if (textinfo.currentFontAngle) { if (options->integersonly) { buffer << "\\turnbox{" << long (textinfo.currentFontAngle + 0.5) << "}{"; } else { buffer << "\\turnbox{" << textinfo.currentFontAngle << "}{"; } } const char * cp = textinfo.thetext.value(); //buffer << textinfo.thetext.value() // characters to be handled specially // // % -> \% // # -> \# // { -> \{ // } -> \} // _ -> \_ // & -> \& // $ -> \$ // Tritt auch manchmal mit veränderter Bedeutung als $$ auf: --> \$\$ // // \ -> \textbackslash // ^ -> \textasciicircum // ~ -> \textasciitilde // // Zusätzlich machen folgende Zeichen oft Probleme: // // " -> \textquotedblright // ?`-> \textquestiondown // !`-> \textexclamdown // while (cp && *cp) { if ((*cp == '%') || (*cp == '#') || (*cp == '{') || (*cp == '}') || (*cp == '$') || (*cp == '_') || (*cp == '&') ) buffer << '\\' << *cp ; // needs to be escaped else if (*cp == '\\') buffer << "\\textbackslash "; else if (*cp == '^') buffer << "\\textasciicircum "; else if (*cp == '~') buffer << "\\textasciitilde "; else if (*cp == '"') buffer << "\\textquotedblright "; // else if (*cp == '\\') buffer << "\\textbackslash"; // else if (*cp == '\\') buffer << "\\textbackslash"; else buffer << *cp; cp++; } buffer << '}'; if (textinfo.currentFontAngle) buffer << '}'; // Scale the ending point and update the bounding box. currentpoint.x_ = textinfo.x_end; currentpoint.y_ = textinfo.y_end; scalepoint(currentpoint); updatebbox(currentpoint); // Finish up the text message. buffer << endl; // old << ends; //old outputQ.push (outputline.str()); } /* * Convert a path to LaTeX2e picture format. LaTeX2e's picture mode has no * way to fill a region, so we ignore fills. It can't do line caps, so we * ignore those. Dashes would be a pain to implement (given that we're * using \qbezier), so we ignore dash patterns. Line widths are either * "thick" or "thin"; we separate the two at 1pt. Finally, colors are * supported by all the common backends with the color package, so we can * deal with that. */ void drvLATEX2E::show_path() { // Set the line width as best we can. if (currentLineWidth() >= 1.0) { if (!thicklines) { buffer << (" \\thicklines\n"); thicklines = true; } } else if (thicklines) { buffer << (" \\thinlines\n"); thicklines = false; } // Set the color if (and only if) it's changed. if (currentR() != prevR || currentG() != prevG || currentB() != prevB) { //old ostrstream outputline; buffer.setf(ios::fixed, ios::floatfield); // TeX can't deal with scientific notation. prevR = currentR(); prevG = currentG(); prevB = currentB(); buffer << " \\color[rgb]{" << prevR << ',' << prevG << ',' << prevB << '}' << endl; // old << ends; //old buffer << (outputline.str()); } // Output the path. print_coords(); } // Draw a rectangle with \framebox. void drvLATEX2E::show_rectangle(const float llx, const float lly, const float urx, const float ury) { //old ostrstream outputline; buffer.setf(ios::fixed, ios::floatfield); // TeX can't deal with scientific notation. Point ll(llx, lly); Point ur(urx, ury); scalepoint(ll); updatebbox(ll); scalepoint(ur); updatebbox(ur); Point framesize(ur.x_ - ll.x_, ur.y_ - ll.y_); buffer << " \\put" << Point2e(ll,options->integersonly) << "{\\framebox" << Point2e(framesize,options->integersonly) << "{}}" << endl; // old << ends; //old outputQ.push (outputline.str()); } #if 0 // LaTeX2e's picture mode doesn't support images, so do nothing. void drvLATEX2E::show_image(const Image & ) { } #endif // Describe the LaTeX2e backend's capabilities. static DriverDescriptionT < drvLATEX2E > D_latex2e("latex2e", "LaTeX2e picture format", "","tex", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves false, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false // no clipping ); //#endif // HAVESTL pstoedit-3.62/src/drvlatex2e.h0000644000175500010010000000633112137224256013241 00000000000000#ifndef __drvLATEX2E_h #define __drvLATEX2E_h /* drvlatex2e.h : This file is part of pstoedit Class declaration for a LaTeX2e output driver Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ //#ifdef HAVESTL #include "drvbase.h" #ifdef HAVESTL #include // C++ string class // STL no longer needed, use FontMapper from miscutil.h //#include // C++ STL set class //#include // Needed for allocator class //#include #else typedef RSString string; #endif #include I_iostream USESTD #include I_streamb #include #include I_string_h class drvLATEX2E : public drvbase { public: derivedConstructor(drvLATEX2E); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvLATEX2E(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor> integersonly; DriverOptions(): integersonly(true,"-integers","",0,"round all coordinates to the nearest integer",0,false) { ADD(integersonly); } }*options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); //not supported yet virtual void show_image(const Image & imageinfo); private: void print_coords(); // typedef queue STRQUEUE; // STRQUEUE outputQ; TempFile tempFile; ofstream &buffer; // Queue for buffering our output until we know our bounding box // Bounding box for the current picture Point boundingbox[2]; // Expand the bounding box if a given point is outside it. inline void updatebbox (const Point & newpoint) { if (newpoint.x_ < boundingbox[0].x_) boundingbox[0].x_ = newpoint.x_; if (newpoint.y_ < boundingbox[0].y_) boundingbox[0].y_ = newpoint.y_; if (newpoint.x_ > boundingbox[1].x_) boundingbox[1].x_ = newpoint.x_; if (newpoint.y_ > boundingbox[1].y_) boundingbox[1].y_ = newpoint.y_; } // Convert from PostScript points to TeX points ("bp"-->"pt" in TeX // terminology). static inline void scalepoint (Point & somepoint) { const float adjustment = 72.27f / 72.0f; somepoint.x_ *= adjustment; somepoint.y_ *= adjustment; } // Previous position, color, line thickness, and font Point currentpoint; float prevR, prevG, prevB; bool thicklines; string prevfontname; float prevfontsize; }; //#endif // HAVE STL #endif pstoedit-3.62/src/drvlplot.cpp0000644000175500010010000012635312137224253013366 00000000000000/* drvplot.cpp : This file is part of pstoedit Backend for GNU metafile format and all other output formats produced by the GNU libplot/libplotter vector graphics library (GNU libplot/libplotter is the 2D vector graphics C/C++ library in the GNU Plotting Utilities (`plotutils') package. `libplot' and `libplotter' provide C and C++ bindings, respectively. See http://www.gnu.org/software/plotutils/plotutils.html . The GNU `plot' program, which is part of the package, can translate GNU metafiles to other formats.) When compiling, define "-DHAVE_LIBPLOTTER" if you will be linking with libplotter. Otherwise, this driver will produce its own GNU metafiles, and it will not be able to produce any of the other output formats that libplot/libplotter can produce. This driver supports three formats: "gmfa" (ascii [i.e., portable] GNU metafile), "gmfb" (binary GNU metafile), and "plot". "plot" is supported only if you link with libplotter. By default, the "plot" format is the same as "gmfb", but by using the "type" and the (global)"pagesize" options, you may request any of the other output types that libplot/libplotter can produce. For example, pstoedit -f "plot:-plotformat X" will pop up an X window, and pstoedit -f "plot:-plotformat fig" will produce Fig output. The supported output formats are: "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", or "meta" (the default). Here "pnm" means PPM/PGM/PBM, "cgm" means the new WebCGM vector graphics format [see http://www.cgmopen.org ], "ai" means Adobe Illustrator, "pcl" means PCL5, "hpgl" means HP-GL/2, and "tek" means Tektronix 4014 format. Tektronix 4014 format can be displayed on an xterm window that is in Tektronix mode; `xterm -t' will invoke such an xterm. The "ps" output type is not ordinary Postscript: it can also be edited with the idraw drawing editor. "meta" is the default output type; it means a binary metafile, i.e., the same as the "gmfb" format. The "plot" format supports the global "pagesize" option, which tells the driver the size of the PS page that it is rendering. (The default is "letter", i.e., 8.5in by 11in.) For example, pstoedit -f "plot:-plotformat X" -pagesize letter pstoedit -f "plot:-plotformat ps" -pagesize legal > output.ps pstoedit -f "plot:-plotformat fig" -pagesize a4 > output.fig The supported page sizes are: a, b, c, d, e, a4, a3, a2, a1, a0, b5, legal, ledger For most output types, the "pagesize" option affects not only the interpretation of the input PS file, but also the sort of output file that is produced. In the example immediately above, the output.fig file will be created on an A4-sized output page. If you view output.fig with the xfig drawing editor, you will see this. No matter what output format is chosen, you may move the image on the output page by doing the following. (1) Instead of using pstoedit's command-line `pagesize' option, specify the page size by setting the environment variable PAGESIZE. (2) Include the desired viewport offset in PAGESIZE. For example, you could set PAGESIZE to "a4,yoffset=1cm" or "a3,xoffset=-5mm,yoffset=2cm". Also in the "plot" format, you may specify any of libplot/libplotter's parameters on the command line. For example, pstoedit -f "plot:-plotformat X BITMAPSIZE 400x200 BG_COLOR yellow" -pagesize a4 will pop up an X window of size 400x200, with a yellow background. BITMAPSIZE is also supported if the output type is "pnm" or "gif", and BG_COLOR if the output type is "pnm", "gif", or "cgm". For the "pnm" output type (i.e. PPM/PGM/PBM, whichever is most appropriate), setting the PNM_PORTABLE parameter to "yes" will yield an ascii (human-readable) output file. Similarly, "plot:type meta META_PORTABLE yes", or just "plot:META_PORTABLE yes", will yield human-readable "gmfa" format. Most of the other supported libplot/libplotter parameters are not used very often. You may specify "CGM_MAX_VERSION 1" to obtain a version 1 WebCGM file, rather than version 3 (which is the default). You may also specify "CGM_ENCODING clear_text" to obtain a human-readable CGM file, rather than binary (which is the default). You should specify "PCL_BEZIERS no" if you are preparing a PCL5 file to be printed on an old LaserJet III. Unlike more recent LaserJets, the LaserJet III did not support the drawing of Bezier curves in firmware. As implemented, the PCL5 output type is mostly for black-and-white or grayscale drawings. Colored PCL5 drawings do not print well on most monochrome printers that understand PCL5 format (e.g., monochrome LaserJets). But if you have a color LaserJet or other high-end color printer that understands PCL5 format, you should be able to print colored PCL5 drawings, as well. If you are producing colored PCL5 output to send to such a printer, you may find it useful to specify "PCL_ASSIGN_COLORS yes". That will give improved color fidelity, by allowing colors to be assigned internally to `logical pens', instead of producing colors by half-toning from a fixed palette of pens. The "gif" output type is actually pseudo-GIF. It uses run-length encoding, and does not transgress the Unisys patent on LZW encoding. If you are producing the "gif" output type, you can specify the parameter "TRANSPARENT_COLOR white" to make all white pixels transparent. "INTERLACE yes" will cause the output file to be an interlaced pseudo-GIF. If a specified libplot/libplotter parameter is not relevant to the requested output type, it is ignored. NOTE: If you link with libplotter, it is recommended that you use a version of libplotter which is at least as recent as the one that is part of the plotutils-2.3 package. If you have the version that was part of plotutils-2.2, you may link with it, provided that you also specify "-DOLD_LIBPLOTTER" when compiling. But that is not recommended, because not everything will not work properly. (Output files of the "fig" and "pcl" types will not be properly centered on the page, and the "gmfb" format will be broken.) NOTE: If your version of libplotter has no X Window System support, you should specify "-DNO_LIBPLOTTER_X_SUPPORT" when compiling. Written by Robert S. Maier and Wolfgang Glunz . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvlplot.h" #include I_fstream #include I_stdio #include I_stdlib // #include "papersizes.h" // not yet done - remove of local page size related code and replace it with the one from papersizes.h #ifdef OLD_LIBPLOTTER #define NO_LIBPLOTTER_CGM_SUPPORT #endif // new: define X missing for all systems - this make the whole lib much smaller and reduces the // prerequesites #define X_DISPLAY_MISSING #define NO_LIBPLOTTER_X_SUPPORT #if ! (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined (NetBSD) ) && ( ! (defined(_AIX)) ) // just under Unix we have X11 support // AIX is treated as Unix - except here #define X_DISPLAY_MISSING #define NO_LIBPLOTTER_X_SUPPORT // also the following two plotters are not available in libplot outside Unix // since the plotter needs some X11 functions as well #define NO_LIBPLOTTER_GIF_SUPPORT #define NO_LIBPLOTTER_PNM_SUPPORT #endif #ifdef HAVE_LIBPLOTTER #ifdef OLD_LIBPLOTTER // plotutils-2.2 #define Point PlotPoint #define _INC_IOSTREAM // to avoid a further inclusion (problem with STL) #include #undef Point #else #define _INC_IOSTREAM // plotutils-2.3 and more recent #include #endif #endif // create shortcuts to the libplotter drivers (see commmet at the bottom) #define WITHSHORTCUTS // Default page type. This is the page for which, by default, we assume // that the PS file was generated. The user may override this with the // pagesize option, e.g. by specifying // // -f "gmfa" -pagesize b // or // -f "plot" -pagesize a3 // // on the command line. #define DEFAULT_PAGE_TYPE PAGE_ANSI_A // page types that libplot/libplotter recognizes enum page_types { PAGE_ANSI_A, PAGE_ANSI_B, PAGE_ANSI_C, PAGE_ANSI_D, PAGE_ANSI_E, PAGE_ISO_A4, PAGE_ISO_A3, PAGE_ISO_A2, PAGE_ISO_A1, PAGE_ISO_A0, PAGE_JIS_B5, PAGE_LEGAL, PAGE_LEDGER }; struct page_size { int type; // one of the above const char *name; // name (a string) const char *alias; // an alternative name (a string) double width, height; // width, height in inches double viewport_size; // size of libplotter's square viewport, in inches }; // libplot page size database; should be listed in the same order as the // preceding page types. The size of the libplot viewport, which is a // square region on the page, is listed for each. In plotutils-2.3, all // Plotter types for which the PAGESIZE parameter is meaningful have the // default viewport positioned at the center of the page, except one. // // HPGLPlotters are the exception. They use the same page sizes and // viewport sizes, but by default, the lower left corner of the viewport is // positioned close to the lower left corner of the page, because an HP-GL // device may have either portrait or landscape orientation (there is no // programmatic way of selecting it). You may shift the viewport by // specifying a suitably modified PAGESIZE environment variable; see above. static struct page_size known_page_sizes[] = { {PAGE_ANSI_A, "a", "letter", 8.5, 11.0, 8.0}, {PAGE_ANSI_B, "b", "tabloid", 11.0, 17.0, 10.0}, {PAGE_ANSI_C, "c", 0, 17.0, 22.0, 16.0}, {PAGE_ANSI_D, "d", 0, 22.0, 34.0, 20.0}, {PAGE_ANSI_E, "e", 0, 34.0, 44.0, 32.0}, {PAGE_ISO_A4, "a4", 0, 8.27, 11.69, 7.8}, {PAGE_ISO_A3, "a3", 0, 11.69, 16.54, 10.7}, {PAGE_ISO_A2, "a2", 0, 16.54, 23.39, 15.6}, {PAGE_ISO_A1, "a1", 0, 23.39, 33.11, 22.4}, {PAGE_ISO_A0, "a0", 0, 33.11, 46.81, 32.2}, {PAGE_JIS_B5, "b5", 0, 7.17, 10.12, 6.67}, {PAGE_LEGAL, "legal", 0, 8.5, 14.0, 8.0}, // an unofficial US size {PAGE_LEDGER, "ledger", 0, 17.0, 11.0, 10.0} // rotated ANSI B (an unofficial US size) }; const unsigned short NUM_LIBPLOT_PAGE_SIZES = (sizeof(known_page_sizes) / sizeof(page_size)); // 13 #ifndef HAVE_LIBPLOTTER // we aren't linking with libplotter, so declare a fake Plotter class class Plotter { private: // disallow copying and assignment Plotter(const Plotter & oldplotter); Plotter & operator = (const Plotter & oldplotter); // streams (only the outstream and errstream are used) istream *instream; ostream *outstream; ostream *errstream; bool meta_portable_output; // portable metafile output format? bool opened; public: Plotter(istream & in, ostream & out, ostream & err); // ctor static int parampl(const char *parameter, void *value); static bool static_meta_portable_output; // current class value // declare only the Plotter methods we may need int capmod(const char *s); int closepl(void); int endpath(void); int erase(void); int fbezier3(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3); int fbox(double x0, double y0, double x1, double y1); int fconcat(double m0, double m1, double m2, double m3, double m4, double m5); int fcont(double x, double y); int fillcolor(int red, int green, int blue); int fillmod(const char *s); int filltype(int level); int fline(double x0, double y0, double x1, double y1); int flinedash(int n, const double *dashes, double offset); int flinewidth(double size); int fmove(double x, double y); int fontname(const char *s); int fspace(double x0, double y0, double x1, double y1); int joinmod(const char *s); int label(const char *s); int linemod(const char *s); int openpl(void); int pencolor(int red, int green, int blue); int restorestate(void); int savestate(void); double ffontsize(double size); private: // inline functions for low-level output inline void emit_byte(int c); inline void emit_float(double x); inline void emit_integer(int x); inline void emit_string(const char *s); inline void emit_terminator(void); // define op codes for graphics operations (only the ones we'll need) enum op_codes { O_BEZIER3 = 'y', O_BOX = 'B', O_CAPMOD = 'K', O_CLOSEPL = 'x', O_CONT = 'n', O_ENDPATH = 'E', O_ERASE = 'e', O_FBEZIER3 = ',', O_FBOX = '3', O_FCONCAT = '\\', O_FCONT = ')', O_FFONTSIZE = '7', O_FILLCOLOR = 'D', O_FILLMOD = 'g', O_FILLTYPE = 'L', O_FLINE = '8', O_FLINEDASH = 'w', O_FLINEWIDTH = '0', O_FMOVE = '$', O_FONTNAME = 'F', O_FONTSIZE = 'S', O_FSPACE = '*', O_JOINMOD = 'J', O_LABEL = 't', O_LINE = 'l', O_LINEDASH = 'd', O_LINEMOD = 'f', O_LINEWIDTH = 'W', O_MOVE = 'm', O_OPENPL = 'o', O_PENCOLOR = '-', O_RESTORESTATE = 'O', O_SAVESTATE = 'U', O_SPACE = 's' }; }; // if we aren't using libplotter, `MetaPlotter' is the same as `Plotter' typedef Plotter MetaPlotter; // define the fake Plotter (i.e. MetaPlotter) class // a helper function (libplot only allows printable ISO characters in labels) #define GOOD_ISO(c) (((c >= 0x20) && (c <= 0x7E)) || ((c >= 0xA0) && (c <= 0xFF))) bool clean_iso_string(unsigned char *s) { bool was_clean = true; unsigned char *t; for (t = s; *s; s++) { if (GOOD_ISO(*s)) { *t = *s; t++; } else was_clean = false; } *t = (unsigned char) '\0'; return was_clean; } // ctor Plotter::Plotter(istream & in, ostream & out, ostream & err) { instream = ∈ outstream = &out; errstream = &err; // take instance value from current static (class) value meta_portable_output = static_meta_portable_output; opened = false; } // a fake parampl function, which can set only the META_PORTABLE parameter int Plotter::parampl(const char *parameter, void *value) { if (strcmp(parameter, "META_PORTABLE") == 0) { if (strcmp((char *) value, "yes") == 0) static_meta_portable_output = true; else static_meta_portable_output = false; } return 0; } // a static variable in the fake Plotter class (automatically initialized // to `false'); copied into a Plotter when it's instantiated bool Plotter::static_meta_portable_output; // low-level output routines inline void Plotter::emit_integer(int x) { if (meta_portable_output) (*outstream) << ' ' << x; else outstream->write((char *) &x, sizeof(int)); } inline void Plotter::emit_float(double x) { if (meta_portable_output) (*outstream) << ' ' << x; else { float f = (float) x; outstream->write((char *) &f, sizeof(float)); } } inline void Plotter::emit_byte(int c) { outstream->put((unsigned char) c); } inline void Plotter::emit_string(const char *s) { bool has_newline; char *t = NIL; // keep compiler happy char *nl; const char *u; // null pointer handled specially if (s == 0) s = "(null)"; if (strchr(s, '\n')) // we don't grok multiline arg strings { has_newline = true; t = (char *) malloc(strlen(s) + 1); if (!t) { (*errstream) << "ERROR: Can't allocate memory" << endl; return; } strcpy_s(t,strlen(s), s); nl = strchr(t, '\n'); assert(nl); // should be OK because also a newline was in s *nl = '\0'; u = t; } else { has_newline = false; u = s; } (*outstream) << u << '\n'; if (has_newline) free(t); } inline void Plotter::emit_terminator() { if (meta_portable_output) (*outstream) << '\n'; } // fake public methods int Plotter::capmod(const char *s) { emit_byte((int) O_CAPMOD); emit_string(s); return 0; } int Plotter::closepl() { emit_byte((int) O_CLOSEPL); emit_terminator(); return 0; } int Plotter::endpath() { emit_byte((int) O_ENDPATH); emit_terminator(); return 0; } int Plotter::erase() { emit_byte((int) O_ERASE); emit_terminator(); return 0; } int Plotter::fbezier3(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3) { emit_byte(meta_portable_output ? (int) O_BEZIER3 : (int) O_FBEZIER3); emit_float(x0); emit_float(y0); emit_float(x1); emit_float(y1); emit_float(x2); emit_float(y2); emit_float(x3); emit_float(y3); emit_terminator(); return 0; } int Plotter::fbox(double x0, double y0, double x1, double y1) { emit_byte(meta_portable_output ? (int) O_BOX : (int) O_FBOX); emit_float(x0); emit_float(y0); emit_float(x1); emit_float(y1); emit_terminator(); return 0; } int Plotter::fconcat(double m0, double m1, double m2, double m3, double m4, double m5) { emit_byte((int) O_FCONCAT); emit_float(m0); emit_float(m1); emit_float(m2); emit_float(m3); emit_float(m4); emit_float(m5); emit_terminator(); return 0; } int Plotter::fcont(double x, double y) { emit_byte(meta_portable_output ? (int) O_CONT : (int) O_FCONT); emit_float(x); emit_float(y); emit_terminator(); return 0; } double Plotter::ffontsize(double size) { emit_byte(meta_portable_output ? (int) O_FONTSIZE : (int) O_FFONTSIZE); emit_float(size); emit_terminator(); return size; } int Plotter::fillcolor(int red, int green, int blue) { emit_byte((int) O_FILLCOLOR); emit_integer(red); emit_integer(green); emit_integer(blue); emit_terminator(); return 0; } int Plotter::fillmod(const char *s) { emit_byte((int) O_FILLMOD); emit_string(s); return 0; } int Plotter::filltype(int level) { emit_byte((int) O_FILLTYPE); emit_integer(level); emit_terminator(); return 0; } int Plotter::fline(double x0, double y0, double x1, double y1) { emit_byte(meta_portable_output ? (int) O_LINE : (int) O_FLINE); emit_float(x0); emit_float(y0); emit_float(x1); emit_float(y1); emit_terminator(); return 0; } int Plotter::flinedash(int n, const double *dashes, double offset) { int i; // sanity checks if (n < 0 || (n > 0 && dashes == 0)) return -1; for (i = 0; i < n; i++) if (dashes[i] < 0.0) return -1; emit_byte(meta_portable_output ? (int) O_LINEDASH : (int) O_LINEDASH); emit_integer(n); for (i = 0; i < n; i++) emit_float(dashes[i]); emit_float(offset); emit_terminator(); return 0; } int Plotter::flinewidth(double new_line_width) { emit_byte(meta_portable_output ? (int) O_LINEWIDTH : (int) O_FLINEWIDTH); emit_float(new_line_width); emit_terminator(); return 0; } int Plotter::fmove(double x, double y) { emit_byte(meta_portable_output ? (int) O_MOVE : (int) O_FMOVE); emit_float(x); emit_float(y); emit_terminator(); return 0; } int Plotter::fontname(const char *s) { emit_byte((int) O_FONTNAME); emit_string(s); return 0; // return 0, not current font size } int Plotter::fspace(double x0, double y0, double x1, double y1) { emit_byte(meta_portable_output ? (int) O_SPACE : (int) O_FSPACE); emit_float(x0); emit_float(y0); emit_float(x1); emit_float(y1); emit_terminator(); return 0; } int Plotter::joinmod(const char *s) { emit_byte((int) O_JOINMOD); emit_string(s); return 0; } int Plotter::label(const char *s) { char *t; bool was_clean; // copy since we may alter the string t = (char *) malloc(strlen(s) + 1); if (!t) { (*errstream) << "ERROR: Can't allocate memory" << endl; return 0; } strcpy_s(t,strlen(s), s); was_clean = clean_iso_string((unsigned char *) t); if (!was_clean) (*errstream) << "libplot: ignoring control character (e.g. CR or LF) in label" << endl; emit_byte((int) O_LABEL); emit_string(t); free(t); return 0; } int Plotter::linemod(const char *s) { emit_byte((int) O_LINEMOD); emit_string(s); return 0; } int Plotter::openpl() { bool not_previously_opened = ((opened == false) ? true : false); //lint !e731 if (not_previously_opened) // emit metafile header { (*outstream) << "#PLOT"; // magic string // format type 1 = GNU binary, type 2 = GNU portable if (meta_portable_output) (*outstream) << " 2\n"; else (*outstream) << " 1\n"; } emit_byte((int) O_OPENPL); emit_terminator(); opened = true; return 0; } int Plotter::pencolor(int red, int green, int blue) { emit_byte((int) O_PENCOLOR); emit_integer(red); emit_integer(green); emit_integer(blue); emit_terminator(); return 0; } int Plotter::restorestate() { emit_byte((int) O_RESTORESTATE); emit_terminator(); return 0; } int Plotter::savestate() { emit_byte((int) O_SAVESTATE); emit_terminator(); return 0; } #endif // not HAVE_LIBPLOTTER #ifdef HAVE_LIBPLOTTER #ifdef OLD_LIBPLOTTER // define a sink for libplotter warning messages, because in plotutils-2.2, // libplotter had an unfortunate tendency to write error messages to the // output stream rather than the error stream! int dummy_warning_handler(const char *) { return 0; } #endif #endif // driver specific initializations drvplot::derivedConstructor(drvplot):constructBase { // const char *type = "meta"; // default - now in options in .h file bool portable_metafile = false; // binary is not portable - ascii is if (strcmp(Pdriverdesc->symbolicname, "gmfa") == 0) { const char t[] = "yes"; (void)Plotter::parampl("META_PORTABLE", (void *) t); portable_metafile = true; // won't need to reopen outf in binary mode } // defaults (will try to determine page type from pagesize option) page_type = (int) DEFAULT_PAGE_TYPE; physical_page = false; // calculate pagesize based on global -pagesize option. { const RSString & pagesize = getPageSize(); if (pagesize != "") { bool matched = false; unsigned int j; for (j = 0; j < NUM_LIBPLOT_PAGE_SIZES; j++) if (strcmp(pagesize.value(), known_page_sizes[j].name) == 0 || (known_page_sizes[j].alias && strcmp(pagesize.value(), known_page_sizes[j].alias) == 0)) { matched = true; break; } if (matched) // set PAGESIZE parameter (it will be meaningful to the // Plotter only if its output format is one for which // pages are `physical') { page_type = j; const char *s = known_page_sizes[page_type].name; const size_t len = strlen(s) ; char *t = new char[len + 1]; if (!t) { errf << "ERROR: Can't allocate memory " << endl; ctorOK = false; return; } strcpy_s(t,len+1, s); (void)Plotter::parampl("PAGESIZE", (void *) t); delete [] t; } else errf << "unknown page size" << endl; } } #if 0 if (strcmp(d_argv[i], "page-size") == 0) { #ifdef OLDPAGESIZE bla bla bla; if ((i + 1) < d_argc) { bool matched = false; unsigned int j; for (j = 0; j < NUM_LIBPLOT_PAGE_SIZES; j++) if (strcmp(d_argv[i + 1], known_page_sizes[j].name) == 0 || (known_page_sizes[j].alias && strcmp(d_argv[i + 1], known_page_sizes[j].alias) == 0)) { matched = true; break; } if (matched) // set PAGESIZE parameter (it will be meaningful to the // Plotter only if its output format is one for which // pages are `physical') { page_type = j; const char *s = known_page_sizes[page_type].name; char *t = (char *) malloc(strlen(s) + 1); if (!t) { errf << "ERROR: Can't allocate memory " << endl; ctorOK = false; return; } strcpy(t, s); Plotter::parampl("PAGESIZE", (void *) t); free(t); } else errf << "unknown page size" << endl; i++; i++; } else { errf << "too few arguments for page-size option" << endl; i++; } #else errf << "Please use global -pagesize option instead driver specific -page-size option" << endl; #endif } for (unsigned int i = 0; i < d_argc;) { assert(d_argv && d_argv[i]); if (strcmp(Pdriverdesc->symbolicname, "plot") == 0) { if ((i + 1) < d_argc) { if (strcmp(d_argv[i], "type") == 0) type = d_argv[i + 1]; else { if (strcmp(d_argv[i], "META_PORTABLE") == 0 && strcmp(d_argv[i + 1], "yes") == 0) portable_metafile = true; // set Plotter parameter Plotter::parampl(d_argv[i], d_argv[i + 1]); } i++; i++; } else { errf << "too few parameters for libplot option" << endl; i++; } } else { errf << "unknown option " << d_argv[i] << endl; i++; } } #endif // parse remaining args if (d_argc) { const unsigned int remaining = DOptions_ptr->parseoptions(errf,d_argc,d_argv); if (Verbose()) { errf << "remaining options " << remaining << endl; } const char * * remaining_argv = DOptions_ptr->unhandledOptions; for (unsigned int i = 0; (i+1) < remaining; i++) { // -1 because we also use argv[i+1] if (strcmp(remaining_argv[i], "META_PORTABLE") == 0 && strcmp(remaining_argv[i + 1], "yes") == 0) portable_metafile = true; // set Plotter parameter if (Verbose()) { errf << "adding Plotter parameter " << remaining_argv[i] << ":" << remaining_argv[i + 1] << endl; } (void)Plotter::parampl(remaining_argv[i], (void*)remaining_argv[i + 1]); i++; } } #ifdef HAVE_LIBPLOTTER #ifdef OLD_LIBPLOTTER // turn off all warning messages, to work around the plotutils-2.2 // libplotter warning message bug (see above) libplotter_warning_handler = dummy_warning_handler; #endif #endif // now create the Plotter; if we're not linked with libplotter then we // instantiate the fake Plotter class instead #ifdef HAVE_LIBPLOTTER if ((strcmp(Pdriverdesc->symbolicname, "plot") == 0) #ifdef WITHSHORTCUTS || (strncmp(Pdriverdesc->symbolicname, "plot-", 5) == 0) #endif ) { #ifdef WITHSHORTCUTS if (strncmp(Pdriverdesc->symbolicname, "plot-", 5) == 0) { options->type.value = Pdriverdesc->symbolicname + 5; // cout << "type : " << type << endl; } #endif if (false) { } #ifndef NO_LIBPLOTTER_PNM_SUPPORT else if (options->type.value == "pnm") { plotter = new PNMPlotter(cin, outf, errf); } #endif #ifndef NO_LIBPLOTTER_GIF_SUPPORT else if (options->type.value == "gif") { ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new GIFPlotter(cin, outf, errf); } #endif #ifndef NO_LIBPLOTTER_CGM_SUPPORT else if (options->type.value == "cgm") { ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new CGMPlotter(cin, outf, errf); physical_page = false; } #endif else if (options->type.value == "ai") { plotter = new AIPlotter(cin, outf, errf); physical_page = true; #if defined(PL_LIBPLOT_VER) && (PL_LIBPLOT_VER > 400) } else if (options->type.value == "svg") { plotter = new SVGPlotter(cin, outf, errf); physical_page = true; #endif } else if (options->type.value == "ps") { plotter = new PSPlotter(cin, outf, errf); physical_page = true; } else if (options->type.value == "fig") { plotter = new FigPlotter(cin, outf, errf); physical_page = true; } else if (options->type.value == "pcl") { ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new PCLPlotter(cin, outf, errf); physical_page = true; } else if (options->type.value == "hpgl") { ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new HPGLPlotter(cin, outf, errf); physical_page = false; // unknown viewport position on page } else if (options->type.value == "tek") { ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new TekPlotter(cin, outf, errf); } #ifndef NO_LIBPLOTTER_X_SUPPORT else if (options->type.value == "X") { plotter = new XPlotter(cin, outf, errf); } #endif else if (options->type.value == "meta") { if (portable_metafile == false) ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new MetaPlotter(cin, outf, errf); } else // unknown type; use metafile default { errf << "unknown libplot output type, using GNU metafile" << endl; if (portable_metafile == false) ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new MetaPlotter(cin, outf, errf); } } else #endif // HAVE_LIBPLOTTER // Default case: instantiate the MetaPlotter class. If we're not // linked with libplotter (so that "gmfa" and "gmfb" are our only // formats) then this is always done, and the MetaPlotter class that is // instantiated is really our fake Plotter class. { if (portable_metafile == false) //lint !e731 ctorOK &= close_output_file_and_reopen_in_binary_mode(); plotter = new MetaPlotter(cin, outf, errf); } } drvplot::~drvplot() { // delete Plotter (either a genuine one from libplotter, or a fake one) delete plotter; options=0; } // print a path via a sequence of fline(), fcont(), fbezier3() operations, // terminating with a final endpath() void drvplot::print_coords() { Point lastpoint(0, 0); const Point & firstpoint = pathElement(0).getPoint(0); bool currently_at_lastpoint = false; bool last_was_endpath = false; // since libplot/libplotter doesn't (yet) support sub-paths, // all paths that we draw will be of the form // moveto {lineto,curveto}+ {closepath} // where {}+ means one or more repetitions, and {} means optional. for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { const Point & p = elem.getPoint(0); lastpoint = p; currently_at_lastpoint = false; last_was_endpath = false; } break; case lineto: { const Point & p = elem.getPoint(0); if (currently_at_lastpoint) (void)plotter->fcont(p.x_ + x_offset, p.y_ + y_offset); else (void)plotter->fline(lastpoint.x_ + x_offset, lastpoint.y_ + y_offset, p.x_ + x_offset, p.y_ + y_offset); lastpoint = p; currently_at_lastpoint = true; last_was_endpath = false; } break; case curveto: { const Point & p1 = lastpoint; const Point & p2 = elem.getPoint(0); const Point & p3 = elem.getPoint(1); const Point & p4 = elem.getPoint(2); (void)plotter->fbezier3(p1.x_ + x_offset, p1.y_ + y_offset, p2.x_ + x_offset, p2.y_ + y_offset, p3.x_ + x_offset, p3.y_ + y_offset, p4.x_ + x_offset, p4.y_ + y_offset); lastpoint = p4; currently_at_lastpoint = true; last_was_endpath = false; } break; case closepath: if (currently_at_lastpoint) /* have drawn at least one segment */ { (void)plotter->fcont(firstpoint.x_ + x_offset, firstpoint.y_ + y_offset); (void)plotter->endpath(); currently_at_lastpoint = true; last_was_endpath = true; } break; default: errf << "\t\tFatal: unexpected case in drvlplot " << endl; abort(); break; } } if (last_was_endpath == false) (void)plotter->endpath(); } void drvplot::open_page() { const double POINTS_PER_INCH = 72.0; // height and width of a page of the specified type, in points; also size // of the square viewport that libplot places on such a page double height = POINTS_PER_INCH * (double) known_page_sizes[page_type].height; double width = POINTS_PER_INCH * (double) known_page_sizes[page_type].width; (void)plotter->openpl(); if (physical_page) // output viewport is a square region of known size, centered on an // output page of known size; so scale the input PS page so that it // extends beyond the viewport, in such a way that it covers the entire // output page { double viewport_size = POINTS_PER_INCH * (double) known_page_sizes[page_type].viewport_size; (void)plotter->fspace(0.5 * (width - viewport_size), 0.5 * (height - viewport_size), 0.5 * (width + viewport_size), 0.5 * (height + viewport_size)); } else // output viewport is non-physical, of an unknown size, or in an // unknown location; so scale the input PS page so that its largest // dimension fits neatly within the viewport { if (height > width) (void)plotter->fspace(-0.5 * (height - width), 0.0, 0.5 * (height + width), height); else (void)plotter->fspace(0.0, -0.5 * (width - height), width, 0.5 * (width + height)); } // erase the output device (some Plotters need this because they have // `persistent' graphics) (void)plotter->erase(); } void drvplot::close_page() { (void)plotter->closepl(); } // convert to libplot's 16-bit representation for R, G, B intensities static inline int plotcolor(const float f) { return (int) (65535 * f); } void drvplot::show_text(const TextInfo & textinfo) { if (strlen(textinfo.thetext.value()) > 0) { (void)plotter->ffontsize(textinfo.currentFontSize); (void)plotter->fontname(textinfo.currentFontName.value()); (void)plotter->pencolor(plotcolor(textinfo.currentR), plotcolor(textinfo.currentG), plotcolor(textinfo.currentB)); const float *matrix = getCurrentFontMatrix(); double sinv; if (textinfo.currentFontSize != 0.0) sinv = 1.0 / textinfo.currentFontSize; else sinv = 0.0; (void)plotter->savestate(); (void)plotter->fconcat(sinv * (double) matrix[0], sinv * (double) matrix[1], sinv * (double) matrix[2], sinv * (double) matrix[3], textinfo.x + x_offset, textinfo.y + y_offset); (void)plotter->fmove(0.0, 0.0); (void)plotter->label(textinfo.thetext.value()); (void)plotter->restorestate(); } } // set libplot's cap style, join style, line style void drvplot::set_line_style() { // set cap style and join style (void)plotter->capmod(currentLineCap() == 0 ? "butt" : currentLineCap() == 1 ? "round" : currentLineCap() == 2 ? "projecting" : "butt"); (void)plotter->joinmod(currentLineJoin() == 0 ? "miter" : currentLineJoin() == 1 ? "round" : currentLineJoin() == 2 ? "bevel" : "miter"); // set old-fashioned line style const char *linestyle; switch (currentLineType()) { case solid: default: linestyle = "solid"; break; case dashed: linestyle = "longdashed"; break; case dashdot: linestyle = "dotdashed"; break; case dotted: linestyle = "dotted"; break; case dashdotdot: linestyle = "dotdotdashed"; break; } (void)plotter->linemod(linestyle); // set dashing pattern, which most types of Plotter understand DashPattern dash_pattern(dashPattern()); double *numbers = new double[dash_pattern.nrOfEntries]; for (int i = 0; i < dash_pattern.nrOfEntries; i++) numbers[i] = (double) dash_pattern.numbers[i]; (void)plotter->flinedash(dash_pattern.nrOfEntries, numbers, (double) dash_pattern.offset); delete[]numbers; } // Set libplot's filling-and-edging style. May set the line width to zero // to turn off edging. In libplot, a 0-width line is as narrow a line as // can be drawn. void drvplot::set_filling_and_edging_style() { switch (currentShowType()) { case drvbase::stroke: (void)plotter->flinewidth(currentLineWidth()); (void)plotter->pencolor(plotcolor(currentR()), plotcolor(currentG()), plotcolor(currentB())); (void)plotter->filltype(0); // no filling break; case drvbase::fill: if (pathWasMerged()) { (void)plotter->flinewidth(currentLineWidth()); (void)plotter->pencolor(plotcolor(edgeR()), plotcolor(edgeG()), plotcolor(edgeB())); (void)plotter->fillcolor(plotcolor(fillR()), plotcolor(fillG()), plotcolor(fillB())); } else { (void)plotter->flinewidth(0.0); // little or no edging (void)plotter->pencolor(plotcolor(currentR()), plotcolor(currentG()), plotcolor(currentB())); (void)plotter->fillcolor(plotcolor(currentR()), plotcolor(currentG()), plotcolor(currentB())); } (void)plotter->filltype(1); (void)plotter->fillmod("winding"); break; case drvbase::eofill: if (pathWasMerged()) { (void)plotter->flinewidth(currentLineWidth()); (void)plotter->pencolor(plotcolor(edgeR()), plotcolor(edgeG()), plotcolor(edgeB())); (void)plotter->fillcolor(plotcolor(fillR()), plotcolor(fillG()), plotcolor(fillB())); } else { (void)plotter->flinewidth(0.0); // little or no edging (void)plotter->pencolor(plotcolor(currentR()), plotcolor(currentG()), plotcolor(currentB())); (void)plotter->fillcolor(plotcolor(currentR()), plotcolor(currentG()), plotcolor(currentB())); } (void)plotter->filltype(1); (void)plotter->fillmod("even-odd"); break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); break; } } void drvplot::show_path() { set_line_style(); set_filling_and_edging_style(); print_coords(); } void drvplot::show_rectangle(const float llx, const float lly, const float urx, const float ury) { set_line_style(); set_filling_and_edging_style(); (void)plotter->fbox(llx, lly, urx, ury); } void drvplot::show_image(const PSImage &) { // not implemented } static DriverDescriptionT < drvplot > D_plot_meta_a("gmfa", "ASCII GNU metafile ", "", "meta", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, true, // format supports multiple pages in one file false /*clipping */ ); static DriverDescriptionT < drvplot > D_plot_meta_b("gmfb", "binary GNU metafile ", "", "meta", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::binaryopen, true, // format supports multiple pages in one file false /*clipping */ ); #ifdef HAVE_LIBPLOTTER static DriverDescriptionT < drvplot > D_plot("plot", "GNU libplot output types, e.g. plot:-plotformat X", "", "plot", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #ifdef WITHSHORTCUTS // create shortcuts to the libplot drivers. So instead of -f "plot:type xxx" // one can say -f plot-xxx. #ifndef NO_LIBPLOTTER_PNM_SUPPORT static DriverDescriptionT < drvplot > D_plotpnm("plot-pnm", "pnm via GNU libplot", "", "pnm", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #endif //#ifndef NO_LIBPLOTTER_GIF_SUPPORT // else if (strcmp (type, "gif") == 0) //#endif #ifndef NO_LIBPLOTTER_CGM_SUPPORT static DriverDescriptionT < drvplot > D_plotcgm("plot-cgm", "cgm via GNU libplot", "", "cgm", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #endif static DriverDescriptionT < drvplot > D_plotai("plot-ai", "ai via GNU libplot","", "ai", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #if defined(PL_LIBPLOT_VER) && (PL_LIBPLOT_VER > 400) static DriverDescriptionT < drvplot > D_plotsvg("plot-svg", "svg via GNU libplot", "", "svg", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #endif static DriverDescriptionT < drvplot > D_plotps("plot-ps", "ps via GNU libplot", "", "ps", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); static DriverDescriptionT < drvplot > D_plotfig("plot-fig", "fig via GNU libplot", "", "fig", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); static DriverDescriptionT < drvplot > D_plotpcl("plot-pcl", "pcl via GNU libplot", "", "pcl", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); static DriverDescriptionT < drvplot > D_plothpgl("plot-hpgl", "hpgl via GNU libplot", "", "hpgl", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); static DriverDescriptionT < drvplot > D_plottek("plot-tek", "tek via GNU libplot","", "tek", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #ifndef NO_LIBPLOTTER_X_SUPPORT static DriverDescriptionT < drvplot > D_plotX("plot-X", "X via GNU libplot", "", "X", false, // backend does not support subpaths true, // backend supports curves true, // backend supports filled elements with edges true, // backend supports text DriverDescription::noimage, DriverDescription::normalopen, // may close, reopen as binary true, // format supports multiple pages in one file false /*clipping */ ); #endif #endif // WITHSHORTCUTS #endif // HAVE_LIBPLOTTER pstoedit-3.62/src/drvlplot.h0000644000175500010010000000413112137224256013023 00000000000000#ifndef __drvplot_h #define __drvplot_h /* drvplot.h : This file is part of pstoedit Backend for GNU metafile format and all other output formats produced by the GNU libplot/libplotter vector graphics library For documentation, see drvplot.cpp. Written by Robert S. Maier and Wolfgang Glunz . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvplot : public drvbase { public: derivedConstructor (drvplot); // ctor ~drvplot(); // dtor class DriverOptions : public ProgramOptions { public: OptionT < RSString, RSStringValueExtractor> type; DriverOptions(): ProgramOptions(true), // expect unhandled options type(true,"-plotformat","string",0,"plotutil format to generate",0,(const char *)"meta") // pagesize(true,"-pagesize","string",0,"page size, e.g. a4",0,) { ADD(type); } }*options; #include "drvfuncs.h" virtual void show_image (const PSImage& imageinfo); void show_text(const TextInfo & textInfo); void show_rectangle(const float llx, const float lly, const float urx, const float ury); private: void print_coords(); class Plotter *plotter; // either declared in plotter.h, or faked bool physical_page; // can map PS onto a page of specified size? int page_type; // if so, one of PAGE_{ANSI_A,ISO_A4...} void set_line_style (void); void set_filling_and_edging_style (void); NOCOPYANDASSIGN(drvplot) }; #endif pstoedit-3.62/src/drvlwo.cpp0000644000175500010010000001267612137224253013037 00000000000000/* drvlwo.cpp - Driver to output LightWave 3D Objects (LWO) - written by Glenn M. Lewis - 6/18/96 http://www.gmlewis.com/> Based on... drvSAMPL.cpp : This file is part of pstoedit Skeleton for the implementation of new backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvlwo.h" #include I_fstream #include I_stdio #include I_stdlib struct LWO_POLY { public: LWO_POLY(): next(0), r(0), g(0), b(0), num(0L), x(0), y(0) {} ~LWO_POLY() { delete[]x; x = 0; delete[]y; y = 0; next=0; } LWO_POLY *next; unsigned char r, g, b; unsigned long num; // Number of vertices in poly float *x; float *y; NOCOPYANDASSIGN(LWO_POLY) }; drvLWO::derivedConstructor(drvLWO): constructBase { // driver specific initializations // and writing of header to output file total_vertices = 0; polys = 0; total_polys = 0; // float scale; // float x_offset; // float y_offset; } drvLWO::~drvLWO() { // driver specific deallocations // and writing of trailer to output file outf << "FORM"; unsigned long total_bytes = 12L; // LWOBPNTS+size total_bytes += (12L * total_vertices); // PNTS section... total_bytes += 8L; // POLS+size total_bytes += (4L * total_polys + 2L * total_vertices); // POLS section... out_ulong(outf, total_bytes); // Total file size (-8) outf << "LWOBPNTS"; out_ulong(outf, 12L * total_vertices); // Output vertices... if (total_vertices > 65536) { errf << "ERROR! Generated more than 65536 vertices!!! Abort."; return; } LWO_POLY *p ; for (p = polys; p; p = p->next) { for (unsigned long n = 0; n < p->num; n++) { out_float(outf, p->x[n]); out_float(outf, p->y[n]); out_float(outf, 0.0); } } // Now, output polygons... outf << "POLS"; out_ulong(outf, 4L * total_polys + 2L * total_vertices); unsigned long count = 0; for (p = polys; p; p = p->next) { out_ushort(outf, p->num); for (unsigned long n = 0; n < p->num; n++) out_ushort(outf, count + n); count += p->num; out_ushort(outf, 0); // which surface } // cleanup memory LWO_POLY *pnext; for (p = polys; p; p = pnext) { pnext = p->next; delete p; } polys=0; options=0; } void drvLWO::print_coords() { LWO_POLY *p = new LWO_POLY; p->r = (unsigned char) (255.0 * currentR()); p->g = (unsigned char) (255.0 * currentG()); p->b = (unsigned char) (255.0 * currentB()); p->num = 0; // intial value; // p->num = numberOfElementsInPath(); p->x = new float[numberOfElementsInPath()]; // allocate a conservative amount p->y = new float[numberOfElementsInPath()]; // allocate a conservative amount p->next = polys; polys = p; total_polys++; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & pe = elem.getPoint(0); // outf << "\t\tmoveto "; p->x[p->num] = pe.x_ + x_offset; p->y[p->num] = pe.y_ + y_offset; p->num++; } break; case lineto:{ const Point & pe = elem.getPoint(0); // outf << "\t\tlineto "; p->x[p->num] = pe.x_ + x_offset; p->y[p->num] = pe.y_ + y_offset; p->num++; } break; case closepath: // Not supported // outf << "\t\tclosepath "; break; case curveto:{ // Not supported } break; default: errf << "\t\tFatal: unexpected case in drvpdf " << endl; abort(); break; } // outf << endl; } total_vertices += p->num; // outf << "]" << endl; } void drvLWO::open_page() { // outf << "Opening page: " << currentPageNumber << endl; } void drvLWO::close_page() { // outf << "Closing page: " << (currentPageNumber) << endl; } void drvLWO::show_path() { print_coords(); } static DriverDescriptionT < drvLWO > D_lwo("lwo", "LightWave 3D Object Format", "","lwo", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges false, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::binaryopen, false, // backend supports multiple pages false /*clipping */ ); pstoedit-3.62/src/drvlwo.h0000644000175500010010000000422012137224256012471 00000000000000#ifndef __drvLWO_h #define __drvLWO_h /* drvlwo.h - header for LightWave 3D Object (LWO) polygon driver - written by Glenn M. Lewis - 6/18/96 http://www.gmlewis.com/> Based on... drvsampl.h : This file is part of pstoedit Class declaration for a sample output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvLWO : public drvbase { public: derivedConstructor(drvLWO); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvLWO(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" private: void print_coords(); unsigned long total_vertices; unsigned long total_polys; struct LWO_POLY *polys; static void out_ulong(ostream &outs, unsigned long val) { outs.put((char)((val>>24L)&0x00FFL)); outs.put((char)((val>>16L)&0x00FFL)); outs.put((char)((val>> 8L)&0x00FFL)); outs.put((char)((val )&0x00FFL)); } static void out_ushort(ostream &outs, unsigned long val) { outs.put((char)((val>> 8L)&0x00FFL)); outs.put((char)((val )&0x00FFL)); } static void out_float(ostream &outs, float val) { union { float f; unsigned long u; } num; num.f = val; out_ulong(outs, num.u); } }; #endif pstoedit-3.62/src/drvmagick++.cpp0000644000175500010010000003042112137224253013603 00000000000000/* drvMAGICK.cpp : This file is part of pstoedit driver for Magick++ API. Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" // needs for linking : CORE_RL_Magick++_.lib CORE_RL_magick_.lib #if defined(HAVESTL) && defined(HAVE_MAGIC) // Magick++ can only be compiled with STL #include "drvmagick++.h" #include I_fstream #include I_stdio #include I_stdlib //#include "version.h" static const bool withdummycontext = false; // #define onedrawlist 1 #ifdef onedrawlist static std::list < Magick::Drawable > drawList; #endif //test typedef std::list MyStringList; drvMAGICK::derivedConstructor(drvMAGICK): constructBase, imgcount(0), imageptr(NIL) { // driver specific initializations // and writing of header to output file // outf << "MAGICK header \n"; // float scale; // float x_offset; // float y_offset; //test MyStringList xxx("asdasda"); //test xxx.push_back("asdsda"); try { InitializeMagick(0); imageptr = new Image(Geometry(600, 800), Color("white")); if (withdummycontext) imageptr->draw(DrawablePushGraphicContext()); #ifdef onedrawlist drawList.push_back(DrawablePushGraphicContext()); drawList.push_back(DrawableViewbox(0, 0, 640, 800)); #else imageptr->draw(DrawableViewbox(0, 0, 640, 800)); #endif // Display the result imageptr->display(); // image.write("result.mvg"); // image.write("result.jpg"); } catch (Exception & error_) { cout << "Caught exception: " << error_.what() << endl; ctorOK = false; //return 1; } } drvMAGICK::~drvMAGICK() { try { if (withdummycontext) imageptr->draw(DrawablePopGraphicContext()); #ifdef onedrawlist drawList.push_back(DrawablePopGraphicContext()); // Draw everything using completed drawing list imageptr->draw(drawList); #endif // imageptr->write("result.mvg"); #if 0 // write a jpeg version for debug purposes cout << "writing result.jpg" << endl; imageptr->write("result.jpg"); #endif if (Verbose()) cout << "writing " << outFileName.value() << endl; imageptr->write(outFileName.value()); } catch (const Exception & error_) { cout << "Caught exception: " << error_.what() << endl; } delete imageptr; imageptr = NIL; } void drvMAGICK::create_vpath(VPathList &vpath) { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); const Magick::Coordinate coord(p.x_ + x_offset, currentDeviceHeight - p.y_ + y_offset); vpath.push_back(PathMovetoAbs(coord)); } break; case lineto:{ const Point & p = elem.getPoint(0); const Magick::Coordinate coord(p.x_ + x_offset, currentDeviceHeight - p.y_ + y_offset); vpath.push_back(PathLinetoAbs(coord)); } break; case closepath: vpath.push_back(PathClosePath()); break; case curveto:{ const Point & p0 = elem.getPoint(0); const Point & p1 = elem.getPoint(1); const Point & p2 = elem.getPoint(2); vpath. push_back(PathCurvetoAbs (PathCurvetoArgs (p0.x_ + x_offset, currentDeviceHeight - p0.y_ + y_offset, p1.x_ + x_offset, currentDeviceHeight - p1.y_ + y_offset, p2.x_ + x_offset, currentDeviceHeight - p2.y_ + y_offset))); } break; default: errf << "\t\tFatal: unexpected case in drvMAGICK " << endl; abort(); break; } } } void drvMAGICK::open_page() { // outf << "Opening page: " << currentPageNumber << endl; } void drvMAGICK::close_page() { // outf << "Closing page: " << (currentPageNumber) << endl; } void drvMAGICK::show_text(const TextInfo & textinfo) { try { DrawableList drawList; drawList.push_back(DrawablePushGraphicContext()); drawList.push_back(DrawableFont(textinfo.currentFontName.value(), AnyStyle, 400, AnyStretch)); // drawList.push_back( DrawableText(100,100,"test") ); drawList.push_back(DrawablePointSize(textinfo.currentFontSize)); drawList.push_back(DrawableFillColor (ColorRGB(textinfo.currentR, textinfo.currentG, textinfo.currentB))); drawList.push_back(DrawableStrokeColor(Color())); // unset color #if 1 /* I assume that the map works the same way as Postscript. ImageMagick follows the SVG matrix scheme as described at http://www.w3.org/TR/SVG/coords.html. The ordering is scaleX,rotationX,rotationY,scaleY,translationX,translationY 0 1 2 3 4 5 Locations 0 & 3 are scaling for x,y; 1 & 2 are rotation for x,y; 4 & 5 are translation. */ const float *CTM = getCurrentFontMatrix(); const float fontsize = textinfo.currentFontSize; const double sx_ = CTM[0] / fontsize; const double rx_ = -CTM[1] / fontsize; const double ry_ = -CTM[2] / fontsize; const double sy_ = CTM[3] / fontsize; const double tx_ = CTM[4] + x_offset; const double ty_ = currentDeviceHeight - CTM[5] + y_offset; drawList.push_back(DrawableAffine(sx_, sy_, rx_, ry_, tx_, ty_)); #else // drawList.push_back( DrawableAngle(textinfo.currentFontAngle/6.29) ); drawList. push_back(DrawableTranslation (textinfo.x + x_offset, currentDeviceHeight - textinfo.y + y_offset)); drawList.push_back(DrawableRotation(360.0 - textinfo.currentFontAngle)); #endif drawList.push_back(DrawableText(0, 0, textinfo.thetext.value())); drawList.push_back(DrawablePopGraphicContext()); imageptr->draw(drawList); } catch (const Exception & error_) { cout << "Caught exception: " << error_.what() << endl; } } void drvMAGICK::show_path() { static const Color NoColor; // Bob says that a default color means no-fill/no-stroke // Construct drawing list #ifndef onedrawlist std::list < Magick::Drawable > drawList; #endif VPathList vpath; create_vpath(vpath); // outf << "Path # " << currentNr(); // if (isPolygon()) // outf << " (polygon): " << endl; // else // outf << " (polyline): " << endl; // outf << "\tcurrentShowType: "; #ifndef onedrawlist drawList.push_back(DrawablePushGraphicContext()); #endif switch (currentShowType()) { case drvbase::stroke: //outf << "stroked"; drawList.push_back(DrawableStrokeColor(ColorRGB(edgeR(), edgeG(), edgeB()))); drawList.push_back(DrawableStrokeWidth(currentLineWidth())); // Stroke width drawList.push_back(DrawableFillColor(NoColor)); // image.fillColor(""); break; case drvbase::fill: // outf << "filled"; drawList.push_back(DrawableStrokeColor(NoColor)); drawList.push_back(DrawableFillRule(NonZeroRule)); drawList.push_back(DrawableFillColor(ColorRGB(fillR(), fillG(), fillB()))); // Fill color break; case drvbase::eofill: // outf << "eofilled"; drawList.push_back(DrawableStrokeColor(NoColor)); drawList.push_back(DrawableFillRule(EvenOddRule)); drawList.push_back(DrawableFillColor(ColorRGB(fillR(), fillG(), fillB()))); // Fill color break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); break; } { // dash handling DashPattern dp(dashPattern()); const float *const d_numbers = dp.numbers; // const int nr_of_entries = dp.nrOfEntries; double *dasharray = new double[dp.nrOfEntries + 1]; for (int i = 0; i < dp.nrOfEntries; i++) { dasharray[i] = d_numbers[i]; } dasharray[dp.nrOfEntries] = 0; // mark last element drawList.push_back(DrawableDashArray(dasharray)); // pulls a copy, so we are the owner of dasharray //?? DrawableDashOffset delete[]dasharray; } const unsigned int join = currentLineJoin(); // 0 miter; 1 round; 2 bevel const LineJoin linejoin = (join == 0) ? MiterJoin : (join == 1) ? RoundJoin : (join == 2) ? BevelJoin : UndefinedJoin; drawList.push_back(DrawableStrokeLineJoin(linejoin)); // const float miter = currentMiterLimit(); const unsigned int cap = currentLineCap(); // 0 butt; 1 round; 2 square const LineCap linecap = (cap == 0) ? ButtCap : (cap == 1) ? RoundCap : (cap == 2) ? SquareCap : UndefinedCap; drawList.push_back(DrawableStrokeLineCap(linecap)); drawList.push_back(DrawablePath(vpath)); #ifndef onedrawlist drawList.push_back(DrawablePopGraphicContext()); // Draw everything using completed drawing list imageptr->draw(drawList); #endif } #if 0 void drvMAGICK::show_rectangle(const float llx, const float lly, const float urx, const float ury) { outf << "Rectangle ( " << llx << "," << lly << ") (" << urx << "," << ury << ") equivalent to:" << endl; // just do show_path for a first guess show_path(); } #endif void drvMAGICK::show_image(const PSImage & imageinfo) { if (imageinfo.isFileImage) { try { DrawableList drawList; const double sx = imageinfo.normalizedImageCurrentMatrix[0]; const double rx = -imageinfo.normalizedImageCurrentMatrix[1]; const double ry = imageinfo.normalizedImageCurrentMatrix[2]; const double sy = -imageinfo.normalizedImageCurrentMatrix[3]; const double x = 0; const double y = 0; const double tx = imageinfo.normalizedImageCurrentMatrix[4] + x_offset; const double ty = currentDeviceHeight - imageinfo.normalizedImageCurrentMatrix[5] + y_offset; const double width = imageinfo.width; const double height = imageinfo.height; cout << " sx " << sx << " sy " << sy << " rx " << rx << " ry " << ry << " tx " << tx << " ty " << ty << " w " << width << " h " << height << endl; const string filename = imageinfo.FileName.value(); cout << "drawing subimage from " << filename << endl; drawList.push_back(DrawablePushGraphicContext()); drawList.push_back(DrawableAffine(sx, sy, rx, ry, tx, ty)); Image pngimage(filename); // cout << "rows " << pngimage.rows() << " columns " << pngimage.columns() << endl; // drawList.push_back( DrawableCompositeImage(0,0,width, height, filename) ); if ((pngimage.rows() > 0) && (pngimage.columns() > 0)) { DrawableCompositeImage theimage(x, y, width, height, pngimage); theimage.magick("png"); drawList.push_back(theimage); } else { errf << "reading image from " << filename << " failed " << endl; } drawList.push_back(DrawablePopGraphicContext()); imageptr->draw(drawList); } catch (const Exception & error_) { errf << "Caught exception: " << error_.what() << endl; } } else { errf << "Only PNG file based image are supported" << endl; } } static DriverDescriptionT < drvMAGICK > D_magick("magick", "MAGICK driver", "This driver uses the C++ API of ImageMagick or GraphicsMagick to finally produce different output " "formats. The output format is determined automatically by Image/GraphicsMagick based on the suffix " "of the output filename. So an output file test.png will force the creation of an image in PNG format.", "...", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::png,// support for PNG file images DriverDescription::noopen, false, // if format supports multiple pages in one file true /*clipping */ ); #else // NO SUPPORT FOR MAGIC WITHOUT STL #pragma NO_SUPPORT_FOR_MAGIC_WITHOUT_STL_AND_IMAGEMAGICK_HEADERS #endif pstoedit-3.62/src/drvmagick++.h0000644000175500010010000000332712137224256013260 00000000000000#ifndef __drvMAGICK_h #define __drvMAGICK_h /* drvMAGICK.h : This file is part of pstoedit Class declaration for a MAGICK++ output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ // wogltest #define _IOSFWD_ #include "drvbase.h" #ifdef _WIN32 // Magic++ needs WIN32 #ifndef WIN32 #define WIN32 #endif #endif #include using namespace std; using namespace Magick; class drvMAGICK : public drvbase { public: derivedConstructor(drvMAGICK); ~drvMAGICK(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" // void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); public: virtual void show_image(const PSImage & imageinfo); private: void create_vpath(VPathList & vpath); int imgcount; Image * imageptr; //Magick::Image meant here }; #endif pstoedit-3.62/src/drvmma.cpp0000644000175500010010000002064412137224253013002 00000000000000/* drvMMA.cpp : This file is part of pstoedit Backend for Mathematica Graphics Contributed by: Manfred Thole $Id: drvmma.cpp,v 1.5 2003/03/15 16:25:46 manfred Exp $ Based on drvSAMPL.cpp Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net, Manfred Thole, manfred_AT_thole.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Not implemented: - eofill - driver option '-eofillfills' (fill/don't fill) - images Usage within Mathematica: gr = Get["myfile.m"] Show /@ gr Use the following example rule for font scaling: grScaled = gr /. Rule[FontSize, a_] :> Rule[FontSize, a/2.] */ #include "drvmma.h" #include I_fstream #include I_stdio #include I_stdlib drvMMA::derivedConstructor(drvMMA): constructBase, mmaDashing(solid), mmaThickness(0.0), mmaR(0.0), mmaG(0.0), mmaB(0.0), buffer(tempFile.asOutput()) { // bool show_usage_line = false; // Driver options #if 0 for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); //lint !e796 !e1776 if (Verbose()) outf << "% " << d_argv[i] << endl; if (strcmp(d_argv[i], "-eofillfills") == 0) { eofillFills = true; } else if (strcmp(d_argv[i], "-help") == 0) { errf << "-help # Show this message" << endl; errf << "-eofillfills # Filling is used for eofill (default is not to fill)" << endl; show_usage_line = true; } else { errf << "Unknown mma driver option: " << d_argv[i] << endl; show_usage_line = true; } } if (show_usage_line) { errf << "Usage -f 'mma: [-help] [-eofillfills]'" << endl; } #endif // MMA has a different scientific notation (void) buffer.setf(ios::fixed, ios::floatfield); (void) outf.setf(ios::fixed, ios::floatfield); outf << "{\n"; } // Destructor // We are closing List here drvMMA::~drvMMA() { outf << "Sequence[]\n}\n"; // Dummy! options=0; } // Output a point. // NOTE: This is a top-level function, not a member of drvMMA. static ostream & operator << (ostream & os, Point & pt) { os << "{" << pt.x_ << ", " << pt.y_ << "}"; return os; } // Draw a (closed) path void drvMMA::draw_path(bool close, Point firstpoint, bool filled) { ifstream & inbuffer = tempFile.asInput(); if (filled) { RGBColor(fillR(), fillG(), fillB()); outf << "Polygon[{"; copy_file(inbuffer, outf); (void) inbuffer.seekg(0); outf << "}],\n"; } RGBColor(currentR(), currentG(), currentB()); outf << "Line[{"; copy_file(inbuffer, outf); if (close) { outf << ", " << firstpoint; } outf << "}],\n"; // tempFile.asOutput(); } void drvMMA::print_coords() { Point firstpoint; // Where "closepath" takes us back to Point tmppoint; // Temporary Point bool datapres = false; // Is data in the buffer? bool filled = false; // Must we fill it? switch (currentShowType()) { case drvbase::stroke: filled = false; break; case drvbase::fill: filled = true; break; case drvbase::eofill: // It is nearly impossible to do eofill in MMA filled = options->eofillFills.value; break; default: break; } for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: if (datapres) { draw_path(false, firstpoint, filled); } firstpoint = elem.getPoint(0); (void) tempFile.asOutput(); // Reset tmpfile datapres = false; buffer << firstpoint; break; case lineto: datapres = true; tmppoint = elem.getPoint(0); buffer << ", " << tmppoint; break; case closepath: if (datapres) { draw_path(true, firstpoint, filled); datapres = false; } break; // We got a bad path element. case curveto: default: errf << "\t\tFatal: unexpected case in drvmma " << endl; abort(); break; } } // Paste out data if (datapres) { draw_path(false, firstpoint, filled); } } void drvMMA::open_page() { outf << "Graphics[{\n"; // Initialize with impossible values to force setting these values // in show_path, show_text, ... mmaDashing = linetype(-1); mmaThickness = -1.0; //lint !e736 mmaR = mmaG = mmaB = -1.0; //lint !e736 } void drvMMA::close_page() { outf << "Sequence[]},\n"; // Dummy! outf << "AspectRatio -> Automatic, PlotRange -> All],\n"; } // Compute direction & offset: // angle = Exp[I*\[Pi]*angle/180.]; // dir = {Re[angle], Im[angle]}; // offset *= angle; void drvMMA::show_text(const TextInfo & textinfo) { double dirRe, dirIm; double offRe = -1.0; double offIm = -0.6; dirRe = cos(0.0174533 * textinfo.currentFontAngle); // Pi/180 dirIm = sin(0.0174533 * textinfo.currentFontAngle); // Pi/180 offRe = offRe * dirRe - offIm * dirIm; offIm = offRe * dirIm + offIm * dirRe; RGBColor(textinfo.currentR, textinfo.currentG, textinfo.currentB); outf << "Text[\""; // Escape special characters for (const char *c = textinfo.thetext.value(); *c; c++) { switch (*c) { case '"': case '\\': outf << '\\'; //lint -fallthrough default: ; } outf << *c; } outf << "\", "; outf << "{" << textinfo.x << ", " << textinfo.y << "}, "; outf << "{" << offRe << ", " << offIm << "}, "; outf << "{" << dirRe << ", " << dirIm << "}, \n"; outf << "TextStyle -> {"; // FontFamily->"Times", FontSlant->"Italic", FontWeight->"Bold", // FontSize->12 if (!strncmp(textinfo.currentFontName.value(), "Times", 5)) { outf << "FontFamily -> \"Times\", "; } else if (!strncmp(textinfo.currentFontName.value(), "Helvetica", 9)) { outf << "FontFamily -> \"Helvetica\", "; } else if (!strncmp(textinfo.currentFontName.value(), "Courier", 7)) { outf << "FontFamily -> \"Courier\", "; } if (strstr(textinfo.currentFontName.value(), "Italic")) { outf << "FontSlant -> \"Italic\", "; } else if (strstr(textinfo.currentFontName.value(), "Oblique")) { outf << "FontSlant -> \"Oblique\", "; } if (!strcmp(textinfo.currentFontWeight.value(), "Bold")) { outf << "FontWeight -> \"Bold\", "; } outf << "FontSize -> " << textinfo.currentFontSize; outf << "}],\n"; } void drvMMA::show_path() { if (mmaDashing != currentLineType()) { mmaDashing = currentLineType(); switch (mmaDashing) { case solid: outf << "AbsoluteDashing[{}],\n"; break; case dashed: outf << "AbsoluteDashing[{10, 5}],\n"; break; case dashdot: outf << "AbsoluteDashing[{10, 5, 1, 5}],\n"; break; case dotted: outf << "AbsoluteDashing[{1,5}],\n"; break; case dashdotdot: outf << "AbsoluteDashing[{10, 5, 1, 5, 1, 5}],\n"; break; } } if (mmaThickness != currentLineWidth()) { mmaThickness = currentLineWidth(); outf << "AbsoluteThickness[" << mmaThickness << "],\n"; } print_coords(); } void drvMMA::RGBColor(float R, float G, float B) { if ((mmaR != R) || (mmaG != G) || (mmaB != B)) { mmaR = R; mmaG = G; mmaB = B; outf << "RGBColor[" << R << ", " << G << ", " << B << "],\n"; } } static DriverDescriptionT < drvMMA > D_mma("mma", "Mathematica Graphics", "","m", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvmma.h0000644000175500010010000000362212137224256012447 00000000000000#ifndef __drvMMA_h #define __drvMMA_h /* drvmma.h : This file is part of pstoedit Call declaration for Mathematica Graphics driver Contributed by: Manfred Thole $Id: drvmma.h,v 1.4 2003/03/15 16:25:47 manfred Exp $ Based on drvsampl.h Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Manfred Thole, manfred@thole.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #include class drvMMA : public drvbase { public: derivedConstructor(drvMMA); ~drvMMA(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor> eofillFills; DriverOptions() : eofillFills(true,"-eofillfills","",0,"Filling is used for eofill (default is not to fill)",0,false) { ADD(eofillFills); } }*options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: void print_coords(); void RGBColor(float R, float G, float B); void draw_path(bool close, Point firstpoint, bool fill); // eofill approximation // Graphics attributes linetype mmaDashing; float mmaThickness; float mmaR, mmaG, mmaB; // temp file for buffering a subpath TempFile tempFile; ofstream &buffer; }; #endif pstoedit-3.62/src/drvmpost.cpp0000644000175500010010000003215012137224253013365 00000000000000/* drvMPOST.cpp : This file is part of pstoedit Backend for MetaPost files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_geocities.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef _MSC_VER // #define _POSIX_ // for MSVC and limits.h #endif #include "drvmpost.h" // #include I_fstream #include I_stdio #include I_stdlib #include // Need definition of FLT_MAX #include // FLT_MAX on MSVC #include // PATH_MAX for MSVC #include // Need definition of ispunct() #if !(defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) #define LINE_MAX 2048 // for MSVC #endif static const string emptystring(""); // Constructor -- Initialize variables and take other per-document actions drvMPOST::derivedConstructor(drvMPOST): constructBase, // Initialize member variables prevFontName(""), prevR(0.0f), prevG(0.0f), prevB(0.0f), // Black prevFontAngle(FLT_MAX), prevFontSize(-1.0), prevLineWidth(0.0f), prevLineCap(1), // Round line caps prevLineJoin(1), // Round joins prevDashPattern(""), // Solid lines fillmode(false) { // Prevent the use of scientific notation, which MetaPost // doesn't understand. For now, we hardwire the precision to // 6 digits after the decimal point. outf.setf(ios::fixed); outf.precision(6); // Output copyright information outf << "% Converted from PostScript(TM) to MetaPost by pstoedit\n" << "% MetaPost backend contributed by Scott Pakin \n" << "% pstoedit is Copyright (C) 1993 - 2013 Wolfgang Glunz" << " \n\n"; /* * Output some useful assignments and macro defintions * * Thanks to S.J.Henriksen for the showtext * macro */ outf << "% Generate structured PostScript\n" << "prologues := 1;\n" << "\n" << "% Display a given string with its *baseline* at a given location\n" << "% and with a given rotation angle\n" << "vardef showtext(expr origin)(expr angle)(expr string) =\n" << " draw string infont defaultfont scaled defaultscale\n" << " rotated angle shifted origin;\n" << "enddef;\n" << endl; } // Destructor -- Tell MetaPost to end the file drvMPOST::~drvMPOST() { outf << "end" << endl; options=0; } // Output a path void drvMPOST::print_coords() { bool withinpath = false; // true=already started plotting points unsigned int pointsOnLine = 0; // Number of points on the current output line if (fillmode) { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: case lineto: { const Point & p = elem.getPoint(0); if (withinpath) outf << "--"; else outf << "fill "; outf << '(' << (p.x_ + x_offset) << ',' << (p.y_ + y_offset) << ')'; withinpath = true; pointsOnLine++; } break; case closepath: if (prevDashPattern == emptystring) outf << "--cycle;" << endl; else outf << "--cycle " << prevDashPattern << ';' << endl; withinpath = false; pointsOnLine = 0; break; case curveto: { if (!withinpath) { cerr << "curveto without a moveto; ignoring" << endl; break; } const Point & p0 = elem.getPoint(0); outf << "..controls (" << (p0.x_ + x_offset) << ',' << (p0.y_ + y_offset) << ") and ("; const Point & pt1 = elem.getPoint(1); outf << (pt1.x_ + x_offset) << ',' << (pt1.y_ + y_offset) << ")..("; const Point & pt2 = elem.getPoint(2); outf << (pt2.x_ + x_offset) << ',' << (pt2.y_ + y_offset) << ')'; pointsOnLine += 3; withinpath = true; } break; default: errf << "\t\tFatal: unexpected path element in drvmpost" << endl; abort(); break; } if (pointsOnLine >= 3) { outf << "\n\t"; pointsOnLine = 0; } } if (withinpath) { // Finish the final path if (prevDashPattern == emptystring) outf << "--cycle;" << endl; else outf << "--cycle " << prevDashPattern << ';' << endl; } } else { // Stroking, not filling for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { if (withinpath) outf << prevDashPattern << ';' << endl; outf << "draw "; const Point & p = elem.getPoint(0); outf << '(' << (p.x_ + x_offset) << ',' << (p.y_ + y_offset) << ')'; withinpath = true; pointsOnLine = 1; // Contrast with the case where fillmode is set } break; case lineto: { const Point & p = elem.getPoint(0); if (withinpath) { outf << "--"; } else { cerr << "lineto without a moveto; ignoring" << endl; break; } outf << '(' << (p.x_ + x_offset) << ',' << (p.y_ + y_offset) << ')'; withinpath = true; pointsOnLine++; } break; case closepath: if (prevDashPattern == emptystring ) { outf << "--cycle;" << endl; } else { outf << "--cycle " << prevDashPattern << ';' << endl; } withinpath = false; pointsOnLine = 0; break; case curveto: { if (!withinpath) { cerr << "curveto without a moveto; ignoring" << endl; break; } const Point & p0 = elem.getPoint(0); outf << "..controls (" << (p0.x_ + x_offset) << ',' << (p0.y_ + y_offset) << ") and ("; const Point & pt1 = elem.getPoint(1); outf << (pt1.x_ + x_offset) << ',' << (pt1.y_ + y_offset) << ")..("; const Point & pt2 = elem.getPoint(2); outf << (pt2.x_ + x_offset) << ',' << (pt2.y_ + y_offset) << ')'; pointsOnLine += 3; withinpath = true; } break; default: errf << "\t\tFatal: unexpected path element in drvmpost" << endl; abort(); break; } if (pointsOnLine >= 3 && n + 1 < numberOfElementsInPath() && pathElement(n + 1).getType() != moveto) { outf << "\n\t"; pointsOnLine = 0; } } if (withinpath) { // Finish the final path outf << prevDashPattern << ';' << endl; } } } // Each page will produce a different figure void drvMPOST::open_page() { outf << "beginfig(" << currentPageNumber << ");" << endl; } void drvMPOST::close_page() { outf << "endfig;" << endl; } // Output a text string void drvMPOST::show_text(const TextInfo & textinfo) { static bool texshortchar = false; // 0=ASCII; 1=TeX character set // Change fonts string thisFontName(textinfo.currentFontName.value()); if (thisFontName == emptystring ) { // If we're this brain-damaged, we must be a TeX font thisFontName = textinfo.currentFontFullName.value(); if (!texshortchar) { outf << "shortchar := char(24);" << endl; // Cedilla in TeX land texshortchar = true; } if (Verbose() && thisFontName != prevFontName) errf << "nameless font (" << thisFontName << "?) -- " << "assuming TeX character set" << endl; } else if (texshortchar) { outf << "shortchar := \"_\";" << endl; texshortchar = false; } if (thisFontName != prevFontName) { outf << "defaultfont := \"" << thisFontName << "\";" << endl; prevFontName = thisFontName; } // Change colors if (textinfo.currentR != prevR || textinfo.currentG != prevG || textinfo.currentB != prevB) { outf << "drawoptions (withcolor (" << textinfo.currentR << ',' << textinfo. currentG << ',' << textinfo.currentB << "));" << endl; prevR = textinfo.currentR; prevG = textinfo.currentG; prevB = textinfo.currentB; } // Change font size if (textinfo.currentFontSize != prevFontSize) { if (textinfo.currentFontSize > 0) { outf << "defaultscale := " << textinfo.currentFontSize << "/fontsize defaultfont;" << endl; prevFontSize = textinfo.currentFontSize; } else { if (Verbose()) errf << "warning: font size of " << textinfo. currentFontSize << "pt encountered; ignoring" << endl; outf << "%defaultscale := " << textinfo. currentFontSize << "/fontsize defaultfont;" << endl; } } // Change rotation if (textinfo.currentFontAngle != prevFontAngle) prevFontAngle = textinfo.currentFontAngle; // Output the text using macros defined in the constructor outf << "showtext ((" << textinfo.x << ',' << textinfo.y << "), " << prevFontAngle << ", \""; for (const char *c = textinfo.thetext.value(); *c; c++) if (*c == '"') outf << "\" & char(34) & \""; else outf << (*c); outf << "\");" << endl; } // Output a path void drvMPOST::show_path() { // Change colors if (currentR() != prevR || currentG() != prevG || currentB() != prevB) { prevR = currentR(); prevG = currentG(); prevB = currentB(); outf << "drawoptions (withcolor (" << prevR << ',' << prevG << ',' << prevB << "));" << endl; } // Change line width if (currentLineWidth() != prevLineWidth) { prevLineWidth = currentLineWidth(); outf << "pickup pencircle scaled " << prevLineWidth << "bp;" << endl; } // Change line cap if (currentLineCap() != prevLineCap) { prevLineCap = currentLineCap(); switch (prevLineCap) { case 0: outf << "linecap := butt;" << endl; break; case 1: outf << "linecap := rounded;" << endl; break; case 2: outf << "linecap := squared;" << endl; break; default: errf << "\t\tFatal: Unknown linecap \"" << prevLineCap << '"' << endl; abort(); break; } } // Change line join if (currentLineJoin() != prevLineJoin) { prevLineJoin = currentLineJoin(); switch (prevLineJoin) { case 0: outf << "linejoin := mitered;" << endl; break; case 1: outf << "linejoin := rounded;" << endl; break; case 2: outf << "linejoin := beveled;" << endl; break; default: errf << "\t\tFatal: Unknown linejoin \"" << prevLineJoin << '"' << endl; abort(); break; } } // Change dash pattern const char *currentDashPattern = dashPattern(); // Current dash pattern string unsigned long lengthOn, lengthOff; // Fraction on vs. off float dashOffset; // Offset into dash pattern if (sscanf_s(currentDashPattern, "[ ] %f", &dashOffset) == 1) prevDashPattern = ""; else { char temptext[100]; if (sscanf_s(currentDashPattern, "[%lu] %f", &lengthOn, &dashOffset) == 2) { if (dashOffset) sprintf_s(TARGETWITHLEN(temptext,100), " dashed evenly scaled %lubp shifted -%fbp", lengthOn, dashOffset); else sprintf_s(TARGETWITHLEN(temptext,100), " dashed evenly scaled %lubp", lengthOn); prevDashPattern = temptext; } else if (sscanf_s (currentDashPattern, "[%lu %lu] %f", &lengthOn, &lengthOff, &dashOffset) == 3) { if (dashOffset) sprintf_s(TARGETWITHLEN(temptext,100), " dashed dashpattern(on %lubp off %lubp) shifted (-%f,0)", lengthOn, lengthOff, dashOffset); else sprintf_s(TARGETWITHLEN(temptext,100), " dashed dashpattern(on %lubp off %lubp)", lengthOn, lengthOff); prevDashPattern = temptext; } else { if (Verbose()) cerr << "Dash pattern \"" << currentDashPattern << "\" is too complex;\n" << "using a generic pattern instead" << endl; prevDashPattern = " dashed evenly"; } } // Determine the fill mode if (Verbose() && currentShowType() == drvbase::eofill) errf << "MetaPost does not support eofill; using fill instead" << endl; fillmode = (currentShowType() == drvbase::eofill || currentShowType() == drvbase::fill); if (!fillmode && currentShowType() != drvbase::stroke) { errf << "\t\tFatal: unexpected show type " << (int) currentShowType() << " in drvmpost" << endl; abort(); } // Draw the path print_coords(); } static DriverDescriptionT < drvMPOST > D_mpost("mpost", "MetaPost Format", "","mp", true, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvmpost.h0000644000175500010010000000356512137224256013045 00000000000000#ifndef __drvMPOST_h #define __drvMPOST_h /* drvmpost.h : This file is part of pstoedit Backend for MetaPost files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #ifdef HAVESTL #include // C++ string class // STL no longer needed, use FontMapper from miscutil.h //#include // C++ STL set class //#include // Needed for allocator class //#include #else typedef RSString string; #endif class drvMPOST : public drvbase { public: derivedConstructor(drvMPOST); ~drvMPOST(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: void print_coords(); // Previous values of graphics state variables string prevFontName; float prevR, prevG, prevB; float prevFontAngle; float prevFontSize; float prevLineWidth; unsigned int prevLineCap; unsigned int prevLineJoin; string prevDashPattern; // Set to true if we're filling, false if we're stroking bool fillmode; }; #endif pstoedit-3.62/src/drvnoi.cpp0000644000175500010010000002574112137224253013020 00000000000000/* drvnoi.cpp noixml driver implementation of pstoedit driver methods This driver uses functions from Nemetschek Object Interface to create an XML file, readable by Nemetschek Allplan software. It uses a dynamically loaded proxy dll, pstoed_noi.dll, to call the NOI methods that draw the objects to a dummy Allplan database, and to store them to an xml file. There in the proxy dll, the bezier curves are represented as polylines, or, if they are recognized as circle arcs - as circle arcs. See "NOIXML driver for PSTOEDIT.txt" for full details. Programmer: Valentin Naumov, Nemetschek OOD, Sofia, vnaoumov_AT_nemetschek.bg Contacts: Stefan Konz, Nemetschek Technology GmbH, Munich, skonz_AT_nemetschek.de Copyright (C) 2005 : Valentin Naumov This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvnoi.h" // function prototypes typedef bool (* LPFN_BOOL_VOID)(); typedef bool (* LPFN_BOOL_PSTR)(const char *); typedef bool (* LPFN_BOOL_PSTR_INT)(const char *, int); typedef bool (* LPFN_BOOL_4DBL)(double, double, double, double); typedef bool (* LPFN_BOOL_8DBL)(double, double, double, double, double, double, double, double); #ifndef _WINDEF_ // this already defined in windef.h under Windows typedef unsigned char BYTE; #endif typedef bool (* LPFN_VOID_3BYTE)(BYTE, BYTE, BYTE); typedef bool (* LPFN_BOOL_DBL_UNS)(double [][2], unsigned); typedef bool (* LPFN_BOOL_PSTR_5DBL)(const char *, double, double, double, double, double); typedef bool (* LPFN_BOOL_2PSTR_2DBL)(const char *, const char *, double, double); typedef bool (* LPFN_BOOL_4DBL_PSTR)(double, double, double, double, const char *); typedef bool (* LPFN_BOOL_FLT_UNS_PSTR)(float, unsigned, const char *); static LPFN_BOOL_PSTR NoiWriteXML; static LPFN_BOOL_PSTR_INT NoiSetOptions; static LPFN_VOID_3BYTE NoiSetCurrentColor; static LPFN_VOID_3BYTE NoiSetFillColor; static LPFN_BOOL_4DBL NoiDrawLine; static LPFN_BOOL_8DBL NoiDrawCurve; static LPFN_BOOL_DBL_UNS NoiDrawFill; static LPFN_BOOL_DBL_UNS NoiDrawPolyline; static LPFN_BOOL_PSTR_5DBL NoiDrawText; static LPFN_BOOL_2PSTR_2DBL NoiSetFont; static LPFN_BOOL_4DBL_PSTR NoiDrawImage; static LPFN_BOOL_VOID NoiEndPolyline; static LPFN_BOOL_FLT_UNS_PSTR NoiSetLineParams; // This array stores pointers to functions from dynamically loaded proxy dll static void **DllFunc[] = {(void**)&NoiWriteXML, (void**)&NoiSetCurrentColor, (void**)&NoiSetFillColor, (void**)&NoiDrawLine, (void**)&NoiDrawCurve, (void**)&NoiDrawFill, (void**)&NoiDrawText, (void**)&NoiSetFont, (void**)&NoiDrawImage, (void**)&NoiEndPolyline, (void**)&NoiSetLineParams, (void**)&NoiSetOptions, (void**)&NoiDrawPolyline}; // Function names static const char *DllFuncName[] = {"NoiWriteXML", "NoiSetCurrentColor", "NoiSetFillColor", "NoiDrawLine", "NoiDrawCurve", "NoiDrawFill", "NoiDrawText", "NoiSetFont", "NoiDrawImage", "NoiEndPolyline", "NoiSetLineParams", "NoiSetOptions", "NoiDrawPolyline"}; static unsigned short DLLFUNCNUM = (sizeof(DllFunc)/sizeof(void*)); // driver constructor // looks for resource file and bezier split level parameters drvNOI::derivedConstructor(drvNOI): constructBase, imgcount(0) { if (!outFileName.value()) { errf << endl << "Please provide output file name" << endl << endl; exit(0); } setdefaultFontName(DEFAULT_FONT_NAME); LoadNOIProxy(); if (!NoiSetOptions) { ctorOK= false; return; } #if 0 BezierSplitLevel = DEFAULT_BEZIER_SPLIT_LEVEL; ResourceFile = NULL; for (unsigned int i = 0; i < d_argc; i++) { if (strcmp(d_argv[i], RESOURCE_FILE_OPTION) == 0) ResourceFile = d_argv[i + 1]; if (strcmp(d_argv[i], BEZIER_SPLIT_LEVEL_OPTION) == 0) BezierSplitLevel = atoi(d_argv[i + 1]); } #endif (void)NoiSetOptions(options->ResourceFile.value.value(), options->BezierSplitLevel); } // destructor - write the xml file and unload the dll drvNOI::~drvNOI() { if (hProxyDLL.valid() && outFileName.value()) (void)NoiWriteXML(outFileName.value()); hProxyDLL.close(); options=0; } // load the proxy dll and get all the function pointers // abort the execution, if a function is not found void drvNOI::LoadNOIProxy() { hProxyDLL.open(NOI_XML_Proxy_DLL); if (hProxyDLL.valid()) { for (unsigned int i = 0; i < DLLFUNCNUM; i++) { *DllFunc[i] = (void *) hProxyDLL.getSymbol( DllFuncName[i]); if (!*DllFunc[i]) { errf << endl << DllFuncName[i] << " function not found in " << NOI_XML_Proxy_DLL << ".dll" << endl; abort(); } } } } // add point coordinates to a double array; increment the point number static void AddPoint(double points[][2], const Point& p, unsigned &npoints) { points[npoints][0] = p.x_; points[npoints][1] = p.y_; npoints++; } // draw_polyline: // PDF polylines may contain sequence of lines and bezier curves // Allplan polylines are composed of straight lines only // // Accumulate all the points from sequential straight line segments // If a curve starts - first draw the polyline, then draw the bezier curve void drvNOI::draw_polyline() { Point p0, pc; Point pf(x_offset, y_offset); double (*points)[2] = new double[numberOfElementsInPath()][2]; unsigned npoints = 0; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement &elem = pathElement(n); switch (elem.getType()) { case moveto: (void)NoiDrawPolyline(points, npoints); npoints = 0; p0 = elem.getPoint(0) + pf; pc = p0; AddPoint(points, pc, npoints); break; case lineto: { Point p = elem.getPoint(0) + pf; pc = p; AddPoint(points, pc, npoints); } break; case closepath: AddPoint(points, p0, npoints); (void)NoiDrawPolyline(points, npoints); npoints = 0; AddPoint(points, p0, npoints); break; case curveto: { (void)NoiDrawPolyline(points, npoints); npoints = 0; Point p[3]; p[0] = elem.getPoint(0) + pf; p[1] = elem.getPoint(1) + pf; p[2] = elem.getPoint(2) + pf; (void)NoiDrawCurve(pc.x_, pc.y_, p[0].x_, p[0].y_, p[1].x_, p[1].y_, p[2].x_, p[2].y_); pc = p[2]; AddPoint(points, pc, npoints); } break; } } (void)NoiDrawPolyline(points, npoints); (void)NoiEndPolyline(); delete []points; } // draw_polygon - very similar to draw_polyline, but represents the filled objects // with straight-line borders as Allplan Filling objects void drvNOI::draw_polygon() { double (*points)[2] = new double[numberOfElementsInPath()][2]; unsigned npoints = 0; Point p0, pc; bool isFillObject = (currentShowType() == fill); Point pf(x_offset, y_offset); for (unsigned n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement &elem = pathElement(n); switch (elem.getType()) { case moveto: (void)NoiDrawPolyline(points, npoints); npoints = 0; p0 = elem.getPoint(0) + pf; pc = p0; AddPoint(points, pc, npoints); break; case lineto: { Point p = elem.getPoint(0) + pf; pc = p; AddPoint(points, pc, npoints); } break; case closepath: AddPoint(points, p0, npoints); if (!isFillObject) { (void)NoiDrawPolyline(points, npoints); npoints = 0; AddPoint(points, p0, npoints); } pc = p0; break; case curveto: { isFillObject = false; (void)NoiDrawPolyline(points, npoints); npoints = 0; Point p[3]; p[0] = elem.getPoint(0) + pf; p[1] = elem.getPoint(1) + pf; p[2] = elem.getPoint(2) + pf; (void)NoiDrawCurve(pc.x_, pc.y_, p[0].x_, p[0].y_, p[1].x_, p[1].y_, p[2].x_, p[2].y_); pc = p[2]; AddPoint(points, pc, npoints); break; } } } isFillObject = isFillObject && (pc == p0); if (isFillObject) (void)NoiDrawFill(points, npoints); else (void)NoiDrawPolyline(points, npoints); (void)NoiEndPolyline(); delete []points; } void drvNOI::show_path() { (void)NoiSetLineParams(currentLineWidth(), currentLineCap(), dashPattern()); (void)NoiSetCurrentColor((BYTE)(255 * currentR()), (BYTE)(255 * currentG()), (BYTE)(255 * currentB())); (void)NoiSetFillColor((BYTE)(255 * fillR()), (BYTE)(255 * fillG()), (BYTE)(255 * fillB())); if (isPolygon()) draw_polygon(); else draw_polyline(); // switch (currentShowType()) //{ //case drvbase::stroke: //case drvbase::fill: //case drvbase::eofill: //} // edgeR() // edgeG() // edgeB() } // rectangles are drawn as 4 lines void drvNOI::show_rectangle(const float llx, const float lly, const float urx, const float ury) { (void)NoiSetLineParams(currentLineWidth(), currentLineCap(), dashPattern()); (void)NoiSetCurrentColor((BYTE)(255 * currentR()), (BYTE)(255 * currentG()), (BYTE)(255 * currentB())); (void)NoiSetFillColor((BYTE)(255 * fillR()), (BYTE)(255 * fillG()), (BYTE)(255 * fillB())); (void)NoiDrawLine(llx + x_offset, lly + y_offset, urx + x_offset, lly + y_offset); (void)NoiDrawLine(urx + x_offset, lly + y_offset, urx + x_offset, ury + y_offset); (void)NoiDrawLine(urx + x_offset, ury + y_offset, llx + x_offset, ury + y_offset); (void)NoiDrawLine(llx + x_offset, ury + y_offset, llx + x_offset, lly + y_offset); } // text objects void drvNOI::show_text(const TextInfo &textinfo) { Point pf(x_offset, y_offset); (void)NoiSetCurrentColor((BYTE)(255 * textinfo.currentR), (BYTE)(255 * textinfo.currentG), (BYTE)(255 * textinfo.currentB)); (void)NoiSetFont(textinfo.currentFontName.value(), textinfo.currentFontFullName.value(), atof(textinfo.currentFontWeight.value()), textinfo.currentFontSize); (void)NoiDrawText(textinfo.thetext.value(), textinfo.x + pf.x_, textinfo.y + pf.y_, textinfo.x_end - textinfo.x + pf.x_, textinfo.y_end - textinfo.y + pf.y_, textinfo.currentFontAngle); } // image objects void drvNOI::show_image(const PSImage &imageinfo) { assert(imageinfo.isFileImage); Point p1, p2; imageinfo.getBoundingBox(p1, p2); Point pf(x_offset, y_offset); p1 += pf; p2 += pf; (void)NoiDrawImage(p1.x_, p1.y_, p2.x_, p2.y_, imageinfo.FileName.value()); } // paging support - each new page is placed on the right void drvNOI::open_page() { if (currentPageNumber > 1) x_offset += currentDeviceWidth; } void drvNOI::close_page() { } // driver description, no clipping support static DriverDescriptionT D_noi(DRIVER_NAME, DRIVER_DESCR, DRIVER_LONG_DESCR, FILE_SUFFIX, true, true, true, true, DriverDescription::png, DriverDescription::normalopen, true, false); pstoedit-3.62/src/drvnoi.h0000644000175500010010000000520712137224256012463 00000000000000/* drvnoi.h noixml driver interface Programmer: Valentin Naumov, Nemetschek OOD, Sofia, vnaoumov_AT_nemetschek.bg Contacts: Stefan Konz, Nemetschek Technology GmbH, Munich, skonz_AT_nemetschek.de Copyright (C) 2005 : Valentin Naumov This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef __drvNOI_h #define __drvNOI_h #include "drvbase.h" #include #define NOI_XML_Proxy_DLL "pstoed_noi" #define RESOURCE_FILE_OPTION "-r" #define RESOURCE_FILE_DESCR "Allplan resource file" #define BEZIER_SPLIT_LEVEL_OPTION "-bsl" #define DEFAULT_BEZIER_SPLIT_LEVEL 3 #define BEZIER_SPLIT_LEVEL_DESCR "Bezier Split Level (default 3)" #define DRIVER_NAME "noixml" #define DRIVER_DESCR "Nemetschek NOI XML format" #define DRIVER_LONG_DESCR "Nemetschek Object Interface XML format" #define FILE_SUFFIX "xml" #define DEFAULT_FONT_NAME "Arial" class drvNOI: public drvbase { public: derivedConstructor(drvNOI); ~drvNOI(); class DriverOptions: public ProgramOptions { public: OptionT ResourceFile; OptionT BezierSplitLevel; DriverOptions(): ResourceFile(true, RESOURCE_FILE_OPTION, "string", 0, RESOURCE_FILE_DESCR, 0, (const char*) ""), BezierSplitLevel(true, BEZIER_SPLIT_LEVEL_OPTION, "number", 0, BEZIER_SPLIT_LEVEL_DESCR, 0, DEFAULT_BEZIER_SPLIT_LEVEL) { ADD (ResourceFile); ADD (BezierSplitLevel); } } *options; void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo &textInfo); virtual void show_image(const PSImage &imageinfo); // void translate(Point &p, float x, float y); private: int imgcount; DynLoader hProxyDLL; // Handle to DLL void LoadNOIProxy(); void draw_polyline(); void draw_polygon(); // const char * ResourceFile; // int BezierSplitLevel; // declare other private methods using include - pstoedit style #include "drvfuncs.h" }; #endif // __drvNOI_h pstoedit-3.62/src/drvpcb1.cpp0000644000175500010010000003114512137224253013053 00000000000000/* drvPCB1.cpp : Hans-Jürgen Jahn (Version 1.0 10.08.02) this code is derived from drvSAMPL.cpp, see text below Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net (for the skeleton and the rest of pstoedit) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvpcb1.h" #include I_fstream #include I_stdio #include I_stdlib //output unit is mil // const double pcb_scale = 1000.0/72.0; drvPCB1::derivedConstructor(drvPCB1): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): // Constructor constructBase { pcberrf.open("pcberror.dat"); if (pcberrf.fail()) { cout << "could not open pcberror.dat"; exit(1); } // driver specific initializations // and writing of header to output file pcberrf << "Sample header \n"; // no longer supported - scale ; scale=pcb_scale; // float x_offset; // float y_offset; const char* env = getenv("pcbdrv_drill"); drill_data=false; drill_fixed=true; drill_diameter=0.0f; if (env!=NULL) { if (0!=strcmp(env,"no")) { drill_data=true; char* tail; drill_diameter=(float)strtod(env,&tail); if (env!=tail) drill_fixed=true; else drill_fixed=false; } } } drvPCB1::~drvPCB1() { // driver specific deallocations // and writing of trailer to output file pcberrf << "Sample trailer \n"; pcberrf.close(); options=0; } void drvPCB1::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { const Point & p = elem.getPoint(0); pcberrf << "\t\tmoveto "; pcberrf << p.x_ + x_offset << " " << /* currentDeviceHeight - */ p.y_ + y_offset << " " ; } break; case lineto: { const Point & p = elem.getPoint(0); pcberrf << "\t\tlineto "; pcberrf << p.x_ + x_offset << " " << /* currentDeviceHeight - */ p.y_ + y_offset << " " ; } break; case closepath: pcberrf << "\t\tclosepath "; break; case curveto:{ pcberrf << "\t\tcurveto " ; for (unsigned int cp = 0 ; cp < 3; cp++ ) { const Point & p = elem.getPoint(cp); pcberrf << (p.x_ + x_offset) << " " << /* currentDeviceHeight - */ (p.y_ + y_offset) << " " ; } } break; default: errf << "\t\tFatal: unexpected case in drvsample " << endl; abort(); break; } pcberrf << endl; } } void drvPCB1::open_page() { pcberrf << "Opening page: " << currentPageNumber << endl; } void drvPCB1::close_page() { pcberrf << "Closing page: " << (currentPageNumber) << endl; } void drvPCB1::show_text(const TextInfo & textinfo) { pcberrf << "Text String : " << textinfo.thetext.value() << endl; pcberrf << '\t' << "X " << textinfo.x << " Y " << textinfo.y << endl; pcberrf << '\t' << "X_END " << textinfo.x_end << " Y_END " << textinfo.y_end << endl; pcberrf << '\t' << "currentFontName: " << textinfo.currentFontName.value() << endl; pcberrf << '\t' << "is_non_standard_font: " << textinfo.is_non_standard_font << endl; pcberrf << '\t' << "currentFontFamilyName: " << textinfo.currentFontFamilyName.value() << endl; pcberrf << '\t' << "currentFontFullName: " << textinfo.currentFontFullName.value() << endl; pcberrf << '\t' << "currentFontWeight: " << textinfo.currentFontWeight.value() << endl; pcberrf << '\t' << "currentFontSize: " << textinfo.currentFontSize << endl; pcberrf << '\t' << "currentFontAngle: " << textinfo.currentFontAngle << endl; pcberrf << '\t' << "currentR: " << textinfo.currentR << endl; pcberrf << '\t' << "currentG: " << textinfo.currentG << endl; pcberrf << '\t' << "currentB: " << textinfo.currentB << endl; const float * CTM = getCurrentFontMatrix(); pcberrf << '\t' << "currentFontMatrix: ["; for (int i = 0; i < 6; i++) { pcberrf << " " << CTM[i] ; } pcberrf << ']' << endl; } void drvPCB1::show_path() { //test for every supported type if (lineOut()) return; if (filledRectangleOut()) return; if (filledCircleOut()) return; //if the current path is not supported, write it to "pcberror.dat" pcberrf << "Path # " << currentNr() ; if (isPolygon()) pcberrf << " (polygon): " << endl; else pcberrf << " (polyline): " << endl; pcberrf << "\tcurrentShowType: "; switch (currentShowType() ) { case drvbase::stroke : pcberrf << "stroked"; break; case drvbase::fill : pcberrf << "filled"; break; case drvbase::eofill : pcberrf << "eofilled"; break; default: // cannot happen pcberrf << "unexpected ShowType " << (int) currentShowType() ; break; } pcberrf << endl; pcberrf << "\tcurrentLineWidth: " << currentLineWidth() << endl; pcberrf << "\tcurrentR: " << currentR() << endl; pcberrf << "\tcurrentG: " << currentG() << endl; pcberrf << "\tcurrentB: " << currentB() << endl; pcberrf << "\tedgeR: " << edgeR() << endl; pcberrf << "\tedgeG: " << edgeG() << endl; pcberrf << "\tedgeB: " << edgeB() << endl; pcberrf << "\tfillR: " << fillR() << endl; pcberrf << "\tfillG: " << fillG() << endl; pcberrf << "\tfillB: " << fillB() << endl; pcberrf << "\tcurrentLineCap: " << currentLineCap() << endl; pcberrf << "\tdashPattern: " << dashPattern() << endl; pcberrf << "\tPath Elements 0 to " << numberOfElementsInPath()-1 << endl; print_coords(); } /* void drvPCB1::show_rectangle(const float llx, const float lly, const float urx, const float ury) { // pcberrf << "Rectangle ( " << llx << "," << lly << ") (" << urx << "," << ury << ") equivalent to:" << endl; // just do show_path for a first guess show_path(); } */ //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// /* The following functions have all the same general structure: 1. test if the current path is of the right type, if not return false (This tests are not complete, they are only sufficient to distinguish between all supported types) 2. write the result of the conversion to "outf" and return true */ //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// struct Lpoint { long x; long y; }; static Lpoint toLpoint(const Point& p) { Lpoint lp; lp.x=long(p.x_); lp.y=long(p.y_); return lp; } static bool isEqual(long a, long b, long tol) { if (abs ((int)(a-b)) <= tol) return true; else return false; } bool drvPCB1::lineOut() { //a line has no hole if (drill_data) return false; //test if: // linewidth == 0 -> write "L" (line e.g. board outline) // linewidth > 0 -> write "F" (filled line) // Showtype == stroke // first item "moveto", followed by at least one "lineto" char id; long width= long(currentLineWidth()); if ( width==0 ) id='L'; else id='F'; if ( currentShowType()!=drvbase::stroke ) return false; int nreip=numberOfElementsInPath(); if (nreip<2) return false; if ( pathElement(0).getType()!=moveto ) return false; int i; for (i=1; i D_pcb("pcbi","engrave data - insulate/PCB format", "See \\URL{http://home.vr-web.de/\\Tilde hans-juergen-jahn/software/devpcb.html} for more details.", "dat", false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves true, // backend supports elements which are filled and have edges false, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvpcb1.h0000644000175500010010000000333712137224256012525 00000000000000#ifndef __drvPCB1_h #define __drvPCB1_h /* drvPCB1.cpp : Hans-Jürgen Jahn (Version 1.0 10.08.02) implements output device for the conversion of a PCB layout in Postscript to engraving data. this code is derived from drvSAMPL.cpp, see text below drvsampl.h : This file is part of pstoedit Class declaration for a sample output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993,1994,1995,1996,1997,1998 Wolfgang Glunz, wglunz35_AT_geocities.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvPCB1 : public drvbase { public: derivedConstructor(drvPCB1); ~drvPCB1(); // Destructor class DriverOptions : public ProgramOptions { } *options; #include "drvfuncs.h" void print_coords(); // void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textinfo); private: ofstream pcberrf; bool drill_data, drill_fixed; float drill_diameter; bool lineOut(); bool filledRectangleOut(); bool filledCircleOut(); }; #endif pstoedit-3.62/src/drvpcb2.cpp0000644000175500010010000002640612137224253013060 00000000000000/* drvpcb2.cpp : This file is part of pstoedit simple backend for Pcb format. Contributed / Copyright 2004 by: Mark Rages Contributed / Copyright 2008 by: Stanislav Brabec sbrabec_AT_suse.cz Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net (for the skeleton and the rest of pstoedit) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvpcb2.h" #include I_stdio #include I_string_h #include I_iostream #include #include const double SCALE = (double)100000.0/(double)72.0; /* millimeter in mils/100. More exactly 3937.007874016, but pcb seems to use: */ /* 3937.00775 */ const double MM100 = (double)100000.0/(double)25.4; #define sqr(a) ((a)*(a)) int drvPCB2::pcbScale_x(const Point & p) const { return (int)((double)p.x_ * SCALE + (double)options->tshiftx * unit + (double)0.5); } int drvPCB2::pcbScale_y(const Point & p) const { // return (int)((double)500000.0 - (double)p.y_ * SCALE + (double)options->tshifty * unit + (double)0.5); // patched 7/2011 XXX p.y_ appears to be off by one, why??? return (int)((double)currentDeviceHeight * SCALE - ((double)(p.y_) + (double)1.0) * SCALE + (double)options->tshifty * unit + (double)0.5); } int drvPCB2::pcbScale(const double & f) { return (int)((double)f * SCALE + (double)0.5); } int drvPCB2::_grid_snap (int value, double grid_p) { return (int)((int)(((double)value + grid_p / 2) / grid_p) * grid_p + (double)0.5); } int drvPCB2::grid_snap(int value, bool success) const { if ((options->grid != 0.0) && success) { /* pixel-exact snap to pcb grid: */ return _grid_snap (value, grid); } else { return value; } } void drvPCB2::try_grid_snap(int value, bool & success) const { if (options->grid != 0.0) { int value_snap; value_snap = _grid_snap(value, grid); if (abs (value_snap - value) > grid * options->snapdist) { success = false; } } } drvPCB2::derivedConstructor(drvPCB2): constructBase { unit = (options->mm ? MM100 : 100.0); grid = (double)(options->grid) * unit; } void drvPCB2::gen_preamble(){ const int width = pcbScale(currentDeviceWidth); const int height = pcbScale(currentDeviceHeight); outf << "PCB[\"\" " << width << " " << height << "]\n\n"; // outf << "PCB[\"\" 600000 500000]\n\n"; if (options->grid != 0.0) { outf << "Grid["; outf << fixed << setprecision(6) << grid; outf << " 0 0 1]\n\n"; } else { outf << "Grid[1000.000000 0 0 0]\n\n"; } } static void gen_layer(ostream & outf, C_ostrstream & layer, const char * layer_def, const bool & force) { if (layer.tellp() || force) { outf << "Layer(" << layer_def << "\")\n(\n" << layer.str() << ")\n"; #ifdef USE_NEWSTRSTREAM layer.str(""); #endif } } drvPCB2::~drvPCB2() { gen_preamble (); if (options->stdnames) { gen_layer (outf, layer_polygons, "1 \"component", false); gen_layer (outf, layer_pads, "2 \"solder", false); gen_layer (outf, layer_polygons_nogrid, "3 \"GND", false); gen_layer (outf, layer_pads_nogrid, "5 \"signal1", false); gen_layer (outf, layer_boundaries_nogrid, "9 \"silk", false); gen_layer (outf, layer_boundaries, "10 \"silk", true); } else { gen_layer (outf, layer_polygons, "1 \"poly", false); gen_layer (outf, layer_polygons_nogrid, "2 \"poly.nogrid", false); gen_layer (outf, layer_pads, "3 \"pads", false); gen_layer (outf, layer_pads_nogrid, "4 \"pads.nogrid", false); gen_layer (outf, layer_boundaries, "5 \"bound", false); gen_layer (outf, layer_boundaries_nogrid, "6 \"bound.nogrid", false); /* generate empty silk, otherwise bounds are interpreted as silk */ outf << "Layer(10 \"silk\")\n(\n" << ")\n"; } options=0; } void drvPCB2::close_page() { } void drvPCB2::open_page() { } void drvPCB2::show_path() { bool round_success; ostream *layer, *layer_nogrid; if (options->forcepoly || isPolygon()) { switch (currentShowType()) { case drvbase::fill: case drvbase::eofill: unsigned int numberofvalidelements; /* FIXME: How polygon with <3 vertices happen? */ if (numberOfElementsInPath() < 3) return; { const Point & p0 = pathElement(0).getPoint(0); numberofvalidelements = numberOfElementsInPath(); if (pathElement(numberofvalidelements-1).getType() == closepath ) numberofvalidelements--; // closepath can be ignored const Point & pl = pathElement(numberofvalidelements-1).getPoint(0); /* Polygons are closed automatically. Skip last element for already closed polygons. */ if (p0.x_ == pl.x_ && p0.y_ == pl.y_) numberofvalidelements--; } /* If snap to grid fails for any of points draw into layer_polygons_nogrid layer */ round_success = true; {for (unsigned int n = 0; n < numberofvalidelements; n++) { try_grid_snap (pcbScale_x(pathElement(n).getPoint(0)), round_success); try_grid_snap (pcbScale_y(pathElement(n).getPoint(0)), round_success); }} if (round_success) layer = &layer_polygons; else layer = &layer_polygons_nogrid; /* Put polygons in grid into component layer. They may be PCB copper areas. */ *layer << "\tPolygon(\"clearpoly\")\n" << "\t(\n"; {for (unsigned int n = 0; n < numberofvalidelements; n++) { const Point & p = pathElement(n).getPoint(0); int x = grid_snap (pcbScale_x(p), round_success), y = grid_snap (pcbScale_y(p), round_success); *layer << "\t\t[" << x << " " << y << "]\n"; }} *layer << "\t)\n"; /* Rectangles can be also soldering pads. Create pads of proper size as duplicates. User has to remove the unwanted instance. (Well, any tetragon is converted to pad)? */ if (numberofvalidelements == 4) { Point try1_p1, try1_p2, try2_p1, try2_p2, pad_p1, pad_p2, pad_p1_corr, pad_p2_corr; double lensq, widsq, try1_lensq, try2_lensq; /* Try1: line in direcion of vertices 0->1 */ try1_p1.x_ = (pathElement(1).getPoint(0).x_ + pathElement(2).getPoint(0).x_) / 2; try1_p2.x_ = (pathElement(3).getPoint(0).x_ + pathElement(0).getPoint(0).x_) / 2; try1_p1.y_ = (pathElement(1).getPoint(0).y_ + pathElement(2).getPoint(0).y_) / 2; try1_p2.y_ = (pathElement(3).getPoint(0).y_ + pathElement(0).getPoint(0).y_) / 2; try1_lensq = sqr(try1_p1.x_ - try1_p2.x_) + sqr(try1_p1.y_ - try1_p2.y_); /* Try1: line in direcion of vertices 1->2 */ try2_p1.x_ = (pathElement(0).getPoint(0).x_ + pathElement(1).getPoint(0).x_) / 2; try2_p2.x_ = (pathElement(2).getPoint(0).x_ + pathElement(3).getPoint(0).x_) / 2; try2_p1.y_ = (pathElement(0).getPoint(0).y_ + pathElement(1).getPoint(0).y_) / 2; try2_p2.y_ = (pathElement(2).getPoint(0).y_ + pathElement(3).getPoint(0).y_) / 2; try2_lensq = sqr(try2_p1.x_ - try2_p2.x_) + sqr(try2_p1.y_ - try2_p2.y_); /* Use the longer line from these two */ /* FIXME: what to do for square */ if (try1_lensq > try2_lensq) { pad_p1.x_ = try1_p1.x_; pad_p2.x_ = try1_p2.x_; pad_p1.y_ = try1_p1.y_; pad_p2.y_ = try1_p2.y_; lensq = try1_lensq; widsq = try2_lensq; } else { pad_p1.x_ = try2_p1.x_; pad_p2.x_ = try2_p2.x_; pad_p1.y_ = try2_p1.y_; pad_p2.y_ = try2_p2.y_; lensq = try2_lensq; widsq = try1_lensq; } /* pcb adds line width to lenght. Subtract it. */ const double lwidth = sqrt(widsq); const double lratio = sqrt(widsq/lensq/4); pad_p1_corr.x_ = (float)(pad_p1.x_ - lratio*(pad_p1.x_-pad_p2.x_)); pad_p2_corr.x_ = (float)(pad_p2.x_ + lratio*(pad_p1.x_-pad_p2.x_)); pad_p1_corr.y_ = (float)(pad_p1.y_ - lratio*(pad_p1.y_-pad_p2.y_)); pad_p2_corr.y_ = (float)(pad_p2.y_ + lratio*(pad_p1.y_-pad_p2.y_)); round_success = true; try_grid_snap (pcbScale_x(pad_p1_corr), round_success); try_grid_snap (pcbScale_y(pad_p1_corr), round_success); try_grid_snap (pcbScale_x(pad_p2_corr), round_success); try_grid_snap (pcbScale_y(pad_p2_corr), round_success); try_grid_snap (pcbScale(lwidth), round_success); if (round_success) layer = &layer_pads; else layer = &layer_pads_nogrid; *layer << "\tLine[" << grid_snap (pcbScale_x(pad_p1_corr), round_success) << " " << grid_snap (pcbScale_y(pad_p1_corr), round_success) << " " << grid_snap (pcbScale_x(pad_p2_corr), round_success) << " " << grid_snap (pcbScale_y(pad_p2_corr), round_success) << " " << grid_snap (pcbScale(lwidth), round_success) << " 200 \"clearline\"]\n"; } break; case drvbase::stroke: /* Put lines with polygon inside to silk layer, as they cannot be component lines. */ layer = &layer_boundaries; layer_nogrid = &layer_boundaries_nogrid; goto polyline; break; } } else { /* Put lines that are not associated with polygon into component layer. They are probably PCB traces. */ layer = &layer_polygons; layer_nogrid = &layer_polygons_nogrid; polyline: round_success = true; {for (unsigned int n = 1; n < numberOfElementsInPath(); n++) { try_grid_snap (pcbScale_x(pathElement(n).getPoint(0)), round_success); try_grid_snap (pcbScale_y(pathElement(n).getPoint(0)), round_success); }} if (!round_success) layer = layer_nogrid; {for (unsigned int n = 1; n < numberOfElementsInPath(); n++) { const Point & p1 = pathElement(n-1).getPoint(0); const Point & p = pathElement(n).getPoint(0); *layer << "\tLine[" << grid_snap (pcbScale_x(p1), round_success) << " " << grid_snap (pcbScale_y(p1), round_success) << " " << grid_snap (pcbScale_x(p), round_success) << " " << grid_snap (pcbScale_y(p), round_success) << " " << grid_snap (pcbScale(currentLineWidth()), round_success) << " 2000 0x00000020]\n"; }} } } static DriverDescriptionT < drvPCB2 > D_pcb("pcb", "pcb format", "See also: \\URL{http://pcb.sourceforge.net} and \\URL{http://www.penguin.cz/\\Tilde utx/pstoedit-pcb/} ","pcb", false, // if backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves false, // if backend supports elements with fill and edges false, // if backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvpcb2.h0000644000175500010010000000563112137224256012525 00000000000000#ifndef __drvPCB2_H #define __drvPCB2_H /* drvPCB2.h : This file is part of pstoedit Contributed / Copyright 2004 by: Mark Rages Contributed / Copyright 2008 by: Stanislav Brabec sbrabec_AT_suse.cz Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #include I_strstream class drvPCB2 : public drvbase { public: derivedConstructor(drvPCB2); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvPCB2(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < double, DoubleValueExtractor > grid; OptionT < double, DoubleValueExtractor > snapdist; OptionT < double, DoubleValueExtractor > tshiftx; OptionT < double, DoubleValueExtractor > tshifty; OptionT < bool, BoolTrueExtractor > mm; OptionT < bool, BoolTrueExtractor > stdnames; OptionT < bool, BoolTrueExtractor > forcepoly; DriverOptions(): grid(true,"-grid",0,0,"attempt to snap relevant output to grid (mils) and put failed objects to a different layer",0,0), snapdist(true,"-snapdist",0,0,"grid snap distance ratio (0 < snapdist <= 0.5, default 0.1)",0,0.1), tshiftx(true,"-tshiftx",0,0,"additional x shift measured in target units (mils)",0,0), tshifty(true,"-tshifty",0,0,"additional y shift measured in target units (mils)",0,0), mm(true,"-mm",0,0,"Switch to metric units (mm)",0,false), stdnames(true,"-stdnames",0,0,"use standard layer names instead of descriptive names",0,false), forcepoly(true,"-forcepoly",0,0,"force all objects to be interpreted as polygons",0,false) { ADD(grid); ADD(snapdist); ADD(tshiftx); ADD(tshifty); ADD(grid); ADD(mm); ADD(stdnames); ADD(forcepoly); } }*options; #include "drvfuncs.h" private: int pcbScale_x(const Point & p) const; int pcbScale_y(const Point & p) const; static int pcbScale(const double & f) ; void try_grid_snap(int value, bool & success) const; static int _grid_snap (int value, double grid) ; int grid_snap(int value, bool success) const; void gen_preamble(); C_ostrstream layer_polygons, layer_polygons_nogrid; C_ostrstream layer_pads, layer_pads_nogrid; C_ostrstream layer_boundaries_nogrid, layer_boundaries; double unit, grid; }; #endif pstoedit-3.62/src/drvpcbfill.cpp0000644000175500010010000000610212137224253013634 00000000000000/* drvpcbfill.cpp : This file is part of pstoedit simple backend for Pcbfill format. Contributed / Copyright 2004 by: Mark Rages Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net (for the skeleton and the rest of pstoedit) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvpcbfill.h" #include I_stdio #include I_string_h #include I_iostream drvPCBFILL::derivedConstructor(drvPCBFILL): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): constructBase { // driver specific initializations outf << "PCB[\"\" 600000 500000]\n\n"; outf << "Grid[2000.00000000 0 0 0]\n\n"; outf << "Layer(10 \"silk\")\n(\n"; } drvPCBFILL::~drvPCBFILL() { outf << ")\n"; options=0; } void drvPCBFILL::close_page() { //outf << "#Seite beendet.\n"; } void drvPCBFILL::open_page() { // outf << "#Neue Seite\n"; } const float SCALE = (100000.0f/72.0f); void drvPCBFILL::show_path() { // outf << "\n#Polyline:\n"; outf << "\tPolygon(0x00000010)\n\t(\n\t\t"; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { if (pathElement(n).getType() != closepath) { const Point & p = pathElement(n).getPoint(0); outf << "[" << (int)(p.x_*SCALE) << " " << (int)(500000-p.y_*SCALE) << "] "; } } outf << "\n\t)\n"; } static DriverDescriptionT < drvPCBFILL > D_pcbfill("pcbfill", "pcb format with fills", "See also: \\URL{http://pcb.sourceforge.net} ","pcbfill", false, // if backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves false, // if backend supports elements with fill and edges false, // if backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvpcbfill.h0000644000175500010010000000242512137224256013310 00000000000000#ifndef __drvPCBFILL_H #define __drvPCBFILL_H /* drvPCBFILL.h : This file is part of pstoedit Contributed / Copyright 2004 by: Mark Rages Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvPCBFILL : public drvbase { public: derivedConstructor(drvPCBFILL); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvPCBFILL(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; private: #include "drvfuncs.h" }; #endif pstoedit-3.62/src/drvpdf.cpp0000644000175500010010000005153412137224253013003 00000000000000/* drvPDF.cpp : This file is part of pstoedit Backend for PDF(TM) format Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* The PDF format and the corresponding operators are copyrighted by Adobe Systems, Inc. */ #include "drvpdf.h" #include I_iostream #include I_iomanip #include I_fstream #include I_fstream #include I_stdio #include I_stdlib #include // for sin and cos #include USESTD static float rnd(const float f, const float roundnumber) { const float roundup = (f < 0.0f) ? -0.5f : 0.5f; return ((long int) ((f * roundnumber) + roundup)) / roundnumber; } static inline float RND3(const float f) { return rnd(f, 1000.0f); } static const char *PDFFonts[] = { // predefined Fonts (see page 64 PDF Ref. Manual ) "Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique", "Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique", "Symbol", "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", "ZapfDingbats", 0 }; const unsigned int numberOfFonts = sizeof(PDFFonts) / (sizeof(char *)) - 1; const char *const *drvPDF::knownFontNames() const { return PDFFonts; } unsigned int drvPDF::newobject() { currentobject++; if (currentobject >= maxobjects) { errf << "Sorry, too many objects in this file" << endl; exit(1); } startPosition[currentobject] = outf.tellp(); outf << currentobject << " 0 obj" << endl; return currentobject; } void drvPDF::endobject() { outf << "endobj" << endl; } template inline T Max(T a, T b) { return (a > b ? a : b); } template inline T Min(T a, T b) { return (a < b ? a : b); } void drvPDF::adjustbbox(float x, float y) { bb_llx = Min((int) x, bb_llx); bb_lly = Min((int) y, bb_lly); bb_urx = Max((int) x, bb_urx); bb_ury = Max((int) y, bb_ury); } // the following two functions avoid unneccessary ET BT sequences void drvPDF::starttext() { if (!inTextMode) { buffer << "BT" << endl; inTextMode = true; } } void drvPDF::endtext() { if (inTextMode) { buffer << "ET" << endl; inTextMode = false; } } static streampos newlinebytes = 1; // how many bytes are a newline (1 or 2) static const char *const stdEncoding = "Standard"; const int largeint = 32000; drvPDF::derivedConstructor(drvPDF): constructBase, currentobject(0), pagenr(0), inTextMode(false), encodingName(stdEncoding), buffer(tempFile.asOutput()), bb_llx(largeint), bb_lly(largeint), bb_urx(-largeint), bb_ury(-largeint) { if (&outf == &cout) { // Due to tell not working correctly on cout errf << "Sorry, PDF cannot be written to standard output. Use a file instead\n"; exit(1); } const char *const header = "%PDF-1.1"; outf << header << endl; #ifdef HAVESTL //to avoid message "3 overloads have similar conversion" newlinebytes = (long) outf.tellp() - (long) strlen(header); #else newlinebytes = (long) outf.tellp() - (long) strlen(header); #endif if (Verbose()) outf << "% Driver options:" << endl; for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); if (Verbose()) outf << "% " << d_argv[i] << endl; if (strcmp(d_argv[i], "-e") == 0) { encodingName = d_argv[i + 1]; } } errf << "Info: This PDF driver is not very elaborated - consider using -f gs:pdfwrite instead." << endl; } drvPDF::~drvPDF() { // print trailer endtext(); // close text if open unsigned int outlines = newobject(); outf << "<<" << endl; outf << "/Type /Outlines" << endl; outf << "/Count 0" << endl; outf << ">>" << endl; endobject(); unsigned int encoding = newobject(); // write the diffs between pdf-encoding and WinAnsiEncoding outf << "<<" << endl; outf << "/Type /Encoding" << endl; #ifdef basedonwinansi // For some reasons this does not work. // I haven't seen a working example using the /BaseEncoding feature outf << "/BaseEncoding /WinAnsiEncoding" << endl; outf << "%/Differences [" << endl; outf << "% 24 /breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring/tilde" << endl; outf << "%127 /.notdef 129 /dagger/daggerdbl/ellipsis/emdash/endash/florin/fraction" << endl; outf << "%/guilsinglleft/guilsinglright/minus/perthousand/quotedblbase/quotedblleft" << endl; outf << "%/quotedblright/quoteleft/quoteright/quotesinglbase/trademark/fi/fl/Lslash" << endl; outf << "%/OE/Scaron/Ydieresis/Zcaron/dotlessi/lslash/scaron/zcaron/.notdef/.notdef/.notdef" << endl; outf << "%]" << endl; #endif // The following part (diffs between standard encoding and pdf encoding) // was generated by a small PostScript program run through gs outf << "/Differences [" << endl; outf << "24 /breve" << endl; outf << "25 /caron" << endl; outf << "26 /circumflex" << endl; outf << "27 /dotaccent" << endl; outf << "28 /hungarumlaut" << endl; outf << "29 /ogonek" << endl; outf << "30 /ring" << endl; outf << "31 /tilde" << endl; outf << "39 /quotesingle" << endl; outf << "96 /grave" << endl; outf << "128 /bullet" << endl; outf << "129 /dagger" << endl; outf << "130 /daggerdbl" << endl; outf << "131 /ellipsis" << endl; outf << "132 /emdash" << endl; outf << "133 /endash" << endl; outf << "134 /florin" << endl; outf << "135 /fraction" << endl; outf << "136 /guilsinglleft" << endl; outf << "137 /guilsinglright" << endl; outf << "138 /minus" << endl; outf << "139 /perthousand" << endl; outf << "140 /quotedblbase" << endl; outf << "141 /quotedblleft" << endl; outf << "142 /quotedblright" << endl; outf << "143 /quoteleft" << endl; outf << "144 /quoteright" << endl; outf << "145 /quotesinglbase" << endl; outf << "146 /trademark" << endl; outf << "147 /fi" << endl; outf << "148 /fl" << endl; outf << "149 /Lslash" << endl; outf << "150 /OE" << endl; outf << "151 /Scaron" << endl; outf << "152 /Ydieresis" << endl; outf << "153 /Zcaron" << endl; outf << "154 /dotlessi" << endl; outf << "155 /lslash" << endl; outf << "156 /oe" << endl; outf << "157 /scaron" << endl; outf << "158 /zcaron" << endl; outf << "164 /currency" << endl; outf << "166 /brokenbar" << endl; outf << "168 /dieresis" << endl; outf << "169 /copyright" << endl; outf << "170 /ordfeminine" << endl; outf << "172 /logicalnot" << endl; outf << "174 /registered" << endl; outf << "175 /macron" << endl; outf << "176 /degree" << endl; outf << "177 /plusminus" << endl; outf << "178 /twosuperior" << endl; outf << "179 /threesuperior" << endl; outf << "180 /acute" << endl; outf << "181 /mu" << endl; outf << "183 /periodcentered" << endl; outf << "184 /cedilla" << endl; outf << "185 /onesuperior" << endl; outf << "186 /ordmasculine" << endl; outf << "188 /onequarter" << endl; outf << "189 /onehalf" << endl; outf << "190 /threequarters" << endl; outf << "192 /Agrave" << endl; outf << "193 /Aacute" << endl; outf << "194 /Acircumflex" << endl; outf << "195 /Atilde" << endl; outf << "196 /Adieresis" << endl; outf << "197 /Aring" << endl; outf << "198 /AE" << endl; outf << "199 /Ccedilla" << endl; outf << "200 /Egrave" << endl; outf << "201 /Eacute" << endl; outf << "202 /Ecircumflex" << endl; outf << "203 /Edieresis" << endl; outf << "204 /Igrave" << endl; outf << "205 /Iacute" << endl; outf << "206 /Icircumflex" << endl; outf << "207 /Idieresis" << endl; outf << "208 /Eth" << endl; outf << "209 /Ntilde" << endl; outf << "210 /Ograve" << endl; outf << "211 /Oacute" << endl; outf << "212 /Ocircumflex" << endl; outf << "213 /Otilde" << endl; outf << "214 /Odieresis" << endl; outf << "215 /multiply" << endl; outf << "216 /Oslash" << endl; outf << "217 /Ugrave" << endl; outf << "218 /Uacute" << endl; outf << "219 /Ucircumflex" << endl; outf << "220 /Udieresis" << endl; outf << "221 /Yacute" << endl; outf << "222 /Thorn" << endl; outf << "223 /germandbls" << endl; outf << "224 /agrave" << endl; outf << "225 /aacute" << endl; outf << "226 /acircumflex" << endl; outf << "227 /atilde" << endl; outf << "228 /adieresis" << endl; outf << "229 /aring" << endl; outf << "230 /ae" << endl; outf << "231 /ccedilla" << endl; outf << "232 /egrave" << endl; outf << "233 /eacute" << endl; outf << "234 /ecircumflex" << endl; outf << "235 /edieresis" << endl; outf << "236 /igrave" << endl; outf << "237 /iacute" << endl; outf << "238 /icircumflex" << endl; outf << "239 /idieresis" << endl; outf << "240 /eth" << endl; outf << "241 /ntilde" << endl; outf << "242 /ograve" << endl; outf << "243 /oacute" << endl; outf << "244 /ocircumflex" << endl; outf << "245 /otilde" << endl; outf << "246 /odieresis" << endl; outf << "247 /divide" << endl; outf << "248 /oslash" << endl; outf << "249 /ugrave" << endl; outf << "250 /uacute" << endl; outf << "251 /ucircumflex" << endl; outf << "252 /udieresis" << endl; outf << "253 /yacute" << endl; outf << "254 /thorn" << endl; outf << "255 /ydieresis" << endl; outf << "]" << endl; outf << ">>" << endl; endobject(); unsigned int firstFontObject = currentobject + 1; // Now define all the 14 standard fonts for (unsigned int f = 0; f < numberOfFonts; f++) { unsigned int font = newobject(); unused(&font); outf << "<<" << endl; outf << "/Type /Font" << endl; outf << "/Subtype /Type1" << endl; outf << "/Name /F" << f << endl; outf << "/BaseFont /" << PDFFonts[f] << endl; if ((f == 8) || (f == 13)) { // the special fonts symbol and ZapfDingbats // commented out based on a suggestion from Derek Noonburg // outf << "/Encoding /" << encodingName << "Encoding" << endl; } else { outf << "/Encoding " << encoding << " 0 R" << endl; } outf << ">>" << endl; endobject(); } unsigned int catalog = newobject(); unsigned int pages = currentobject + 2; // will be next after resources; outf << "<<" << endl; outf << "/Type /Catalog" << endl; outf << "/Pages " << pages << " 0 R" << endl; outf << "/Outlines " << outlines << " 0 R" << endl; outf << ">>" << endl; endobject(); unsigned int nrOfPages = pagenr; const unsigned int resources = newobject(); outf << "<<" << endl; outf << "/ProcSet [ /PDF /Text ]" << endl; outf << "/Font <<" << endl; for (unsigned int f2 = 0; f2 < numberOfFonts; f2++) { outf << "/F" << f2 << " " << f2 + firstFontObject << " 0 R" << endl; } outf << ">>" << endl; // closing /Font outf << ">>" << endl; // closing /Resources dictionary endobject(); pages = newobject(); outf << "<<" << endl; outf << "/Type /Pages" << endl; outf << "/Count " << nrOfPages << endl; outf << "/Kids [ "; for (unsigned int i = 1; i <= nrOfPages; i++) { outf << i + pages << " 0 R "; } outf << " ] " << endl; outf << "/MediaBox [0 0 " << (int) (currentDeviceWidth + 0.5) << ' ' << (int) (currentDeviceHeight + 0.5) << "]" << endl; #if 0 const int width = bb_urx - bb_llx; const int height = bb_ury - bb_lly; // heuristically increase shown area by 20% in each direction outf << "/MediaBox [" << bb_llx - 0.2 * width << ' ' << bb_lly - 0.2 * height << ' ' << bb_urx + 0.2 * width << ' ' << bb_ury + 0.2 * height << " ]" << endl; #endif outf << "/Resources "; outf << resources << " 0 R" << endl; outf << ">>" << endl; endobject(); // Now write the Page parts for each page for (unsigned int j = 1; j <= nrOfPages; j++) { unsigned int pageobject = newobject(); unused(&pageobject); outf << "<<" << endl; outf << "/Type /Page" << endl; outf << "/Parent " << pages << " 0 R" << endl; outf << "/Contents " << j << " 0 R" << endl; outf << "/Resources " << resources << " 0 R" << endl; outf << ">>" << endl; endobject(); } unsigned int infoobject = newobject(); outf << "<<" << endl; time_t t = time(0); struct tm *localt = localtime(&t); outf << "/CreationDate (D:" << setw(4) << localt->tm_year + 1900 << setw(2) << setfill('0') << localt->tm_mon + 1 << setw(2) << setfill('0') << localt->tm_mday << setw(2) << setfill('0') << localt->tm_hour << setw(2) << setfill('0') << localt->tm_min << setw(2) << setfill('0') << localt->tm_sec << ")" << endl; outf << "/Producer (pstoedit by wglunz35_AT_pstoedit.net)" << endl; outf << ">>" << endl; endobject(); streampos xrefbegin = outf.tellp(); outf << "xref" << endl; outf << "0 " << currentobject + 1 << endl; outf << "0000000000 65535 f"; if ((long) newlinebytes == 1L) { outf << " "; } outf << endl; for (unsigned int x = 1; x <= currentobject; x++) { outf.width(10); outf.fill('0'); outf << startPosition[x] << " 00000 n"; if ((long) newlinebytes == 1L) { outf << " "; } outf << endl; } outf << "trailer" << endl; outf << "<<" << endl; outf << "/Size " << currentobject + 1 << endl; outf << "/Info " << infoobject << " 0 R" << endl; outf << "/Root " << catalog << " 0 R" << endl; outf << ">>" << endl; outf << "startxref" << endl; outf << xrefbegin << endl; outf << "%%EOF" << endl; options=0; encodingName=0; } void drvPDF::print_coords() { // buffer.precision(3); // buffer.setf(ios::fixed); // buffer.width(0); // to force minimal width // buffer.unsetf(ios::showpoint); for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); adjustbbox(p.x_ + x_offset, p.y_ + y_offset); buffer << RND3(p.x_ + x_offset) << " " << RND3(p.y_ + y_offset) << " "; buffer << "m " << endl; } break; case lineto:{ const Point & p = elem.getPoint(0); adjustbbox(p.x_ + x_offset, p.y_ + y_offset); buffer << RND3(p.x_ + x_offset) << " " << RND3(p.y_ + y_offset) << " "; buffer << "l " << endl; } break; case closepath: buffer << "h " << endl; break; case curveto:{ for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); adjustbbox(p.x_ + x_offset, p.y_ + y_offset); buffer << RND3(p.x_ + x_offset) << " " << RND3(p.y_ + y_offset) << " "; } buffer << "c " << endl; } break; default: errf << "Fatal: unexpected case in drvpdf " << endl; abort(); break; } } } void drvPDF::open_page() { endtext(); // close text if open unsigned int currentpage = newobject(); unused(¤tpage); pagenr++; // provide a temp stream (void)tempFile.asOutput(); } void drvPDF::close_page() { endtext(); // close text if open streampos endpos = buffer.tellp(); outf << "<<" << endl; outf << "/Length " << endpos << endl; outf << ">>" << endl; outf << "stream" << endl; ifstream & instream = tempFile.asInput(); copy_file(instream, outf); // int ret = 0; // while ( (ret = instream.get()) != EOF ) { // outf << (char) ret ; // } outf << "endstream" << endl; endobject(); } static int getFontNumber(const char *const fontname) { const size_t fntlength = strlen(fontname); for (unsigned int i = 0; i < numberOfFonts; i++) { const size_t pdfFntLengh = strlen(PDFFonts[i]); if (fntlength == pdfFntLengh) { if (strncmp(fontname, PDFFonts[i], fntlength) == 0) { return i; } } } return -1; } static int getSubStringFontNumber(const char *const fontname) { // searches for a font name which is the longest substring of the current font name int index = -1; size_t longest = 0; const size_t fntlength = strlen(fontname); for (unsigned int i = 0; i < numberOfFonts; i++) { const size_t pdfFntLength = strlen(PDFFonts[i]); if (fntlength >= pdfFntLength) { if (strncmp(fontname, PDFFonts[i], pdfFntLength) == 0) { if (pdfFntLength > longest) { longest = pdfFntLength; index = (int) i; } } } } return index; } void drvPDF::show_text(const TextInfo & textinfo) { const float toRadians = 3.14159265359f / 180.0f; const float angleInRadians = textinfo.currentFontAngle * toRadians; int PDFFontNum = getFontNumber(textinfo.currentFontName.value()); if (PDFFontNum == -1) { PDFFontNum = getSubStringFontNumber(textinfo.currentFontName.value()); if (PDFFontNum == -1) { PDFFontNum = getSubStringFontNumber(defaultFontName); if (PDFFontNum == -1) { errf << "Warning, unsupported font " << textinfo. currentFontName.value() << ", using Courier instead" << endl; PDFFontNum = 0; // Courier } else { errf << "Warning, unsupported font " << textinfo. currentFontName.value() << ", using " << defaultFontName << " instead" << endl; } } else { errf << "Warning, unsupported font " << textinfo. currentFontName.value() << ", using " << PDFFonts[PDFFontNum] << " instead" << endl; } } starttext(); // define TFALWAYSONE // note TFALWAYSONE does not work correctly with awidthshow. See showex.ps #ifdef TFALWAYSONE const float Sx = textinfo.currentFontSize; const float Sy = textinfo.currentFontSize; buffer << "/F" << PDFFontNum << ' ' << 1 << " Tf" << endl; // use size 1 and scale via Tm #else // previously we used currentFontSize for SX and SY // and fontsize 1 in Tm, now we use the fontsize in tm and set // sx and sy to 1 const float Sx = 1.0f; const float Sy = 1.0f; buffer << "/F" << PDFFontNum << ' ' << textinfo.currentFontSize << " Tf" << endl; #endif const float cosphi = (float) cos(angleInRadians); const float sinphi = (float) sin(angleInRadians); // OK, we could get the real transformation matrix from the interpreter, // but this approximation should do it in most cases. // buffer.precision(3); // buffer.setf(ios::fixed); // buffer.width(0); // to force minimal width // buffer.unsetf(ios::showpoint); adjustbbox(textinfo.x + x_offset, textinfo.y + y_offset); buffer << RND3(Sx * cosphi) << " " << RND3(Sx * sinphi) << " " << RND3(-Sy * sinphi) << " " << RND3(Sy * cosphi) << " " << RND3(textinfo.x + x_offset) << " " << RND3(textinfo.y + y_offset) << " Tm" << endl; buffer << RND3(textinfo.currentR) << " " << RND3(textinfo. currentG) << " " << RND3(textinfo.currentB) << " rg" << endl; #ifdef TFALWAYSONE buffer << RND3(textinfo.cx / textinfo.currentFontSize) << ' ' << RND3(textinfo.ax / textinfo.currentFontSize) << ' '; #else buffer << RND3(textinfo.cx) << ' ' << RND3(textinfo.ax) << ' '; #endif buffer << "("; const char *start_of_text = textinfo.thetext.value(); while (*start_of_text) { if ((*start_of_text == '(') || (*start_of_text == ')') || (*start_of_text == '\\')) { buffer << '\\'; } buffer << *start_of_text; start_of_text++; } buffer << ") \"" << endl; // buffer << ") Tj" << endl; // endtext(); // not done here to avoid ET BT, done on demand } void drvPDF::show_path() { // add_to_page(); // is done in drvbase !! endtext(); // close text if open const char *setrgbcolor = 0; const char *drawingop = 0; switch (currentShowType()) { case drvbase::stroke: // it's a stroke drawingop = "S"; setrgbcolor = "RG"; break; case drvbase::fill: drawingop = "f"; setrgbcolor = "rg"; break; case drvbase::eofill: drawingop = "f*"; setrgbcolor = "rg"; break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType() << endl; exit(1); break; } // buffer.precision(3); // buffer.setf(ios::fixed); // buffer.width(0); // to force minimal width // buffer.unsetf(ios::showpoint); if (Verbose()) { buffer << "% path " << currentNr() << endl; } buffer << RND3(currentR()) << " " << RND3(currentG()) << " " << RND3(currentB()) << " " << setrgbcolor << endl; buffer << currentLineWidth() << " w" << endl; buffer << currentLineCap() << " J" << endl; buffer << currentLineJoin() << " j" << endl; buffer << dashPattern() << " d" << endl; print_coords(); buffer << drawingop << endl; } static DriverDescriptionT < drvPDF > D_pdf("pdf", "Adobe's Portable Document Format", "","pdf", true, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. 1, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvpdf.h0000644000175500010010000000320012137224256012436 00000000000000#ifndef __drvPDF_H #define __drvPDF_H /* drvPDF.h : This file is part of pstoedit Backend for PDF format Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" const unsigned int maxobjects = 1000; class drvPDF : public drvbase { public: derivedConstructor(drvPDF); ~drvPDF(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; virtual const char * const * knownFontNames() const ; private: unsigned int newobject(); void endobject(); void starttext(); void endtext(); void adjustbbox(float x, float y); streampos startPosition[maxobjects]; unsigned int currentobject; unsigned int pagenr; bool inTextMode; const char * encodingName; TempFile tempFile; ofstream &buffer; int bb_llx,bb_lly,bb_urx,bb_ury; #include "drvfuncs.h" private: void print_coords(); void show_text(const TextInfo & textInfo); }; #endif pstoedit-3.62/src/drvpic.cpp0000644000175500010010000002624112137224253013002 00000000000000/* drvPIC.cpp : This file is part of pstoedit Driver for PIC troff/groff drawing format NOTE: primitve version, only supports lines and text Copyright (C) 1999 Egil Kvaleberg, egil_AT_kvaleberg.no This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvpic.h" #include I_fstream #include I_stdio #include I_stdlib const float PIC_SCALE = 72.0f; /* convert from points to inches */ #define USE_SPLINE 0 /* BUG: must implement */ /* * fonts supported by groff * NOTE: could have been made dynamic */ static const struct fx { const char *f_name; const char *f_groff; } fontxlate[] = { { "Times-Roman", "TR"}, { "Times-Italic", "TI"}, { "Times-Bold", "TB"}, { "Times-BoldItalic", "TBI"}, { "AvantGarde-Book", "AR"}, { "AvantGarde-BookOblique", "AI"}, { "AvantGarde-Demi", "AB"}, { "AvantGarde-DemiOblique", "ABI"}, { "Bookman-Light", "BMR"}, { "Bookman-LightItalic", "BMI"}, { "Bookman-Demi", "BMB"}, { "Bookman-DemiItalic", "BMBI"}, { "Courier", "CR"}, { "Courier-Oblique", "CI"}, { "Courier-Bold", "CB"}, { "Courier-BoldOblique", "CBI"}, { "Helvetica", "HR"}, { "Helvetica-Oblique", "HI"}, { "Helvetica-Bold", "HB"}, { "Helvetica-BoldOblique", "HBI"}, { "Helvetica-Narrow", "HNR"}, { "Helvetica-Narrow-Oblique", "HNI"}, { "Helvetica-Narrow-Bold", "HNB"}, { "Helvetica-Narrow-BoldOblique", "HNBI"}, { "NewCenturySchlbk-Roman", "NR"}, { "NewCenturySchlbk-Italic", "NI"}, { "NewCenturySchlbk-Bold", "NB"}, { "NewCenturySchlbk-BoldItalic", "NBI"}, { "Palatino-Roman", "PR"}, { "Palatino-Italic", "PI"}, { "Palatino-Bold", "PB"}, { "Palatino-BoldItalic", "PBI"}, { "Symbol", /* (Greek) */ "S"}, { "Symbol-Slanted", "SS"}, { "ZapfChancery-MediumItalic", "ZCMI"}, { "ZapfDingbats", "ZD"}, { "ZapfDingbats-Reverse", "ZDR"}, { 0, 0} }; /* * */ drvPIC::derivedConstructor(drvPIC):constructBase // troff_mode(0), landscape(0), keep_font(0), text_as_text(0), debug(0) { // driver specific initializations // and writing of header to output file outf << ".\\\" PIC generated by pstoedit\n"; withinPS = 0; pageheight = 10.5; /* BUG: silly default */ largest_y = 0.0; #if 0 if (d_argc > 0) { if (Verbose()) errf << ".\\\" Driver options:" << endl; for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); if (Verbose()) errf << ".\\\" " << d_argv[i] << endl; if (strcmp(d_argv[i], "-groff") == 0) { troff_mode = 0; } else if (strcmp(d_argv[i], "-troff") == 0) { troff_mode = 1; } else if (strcmp(d_argv[i], "-landscape") == 0) { landscape = 1; } else if (strcmp(d_argv[i], "-portrait") == 0) { landscape = 0; } else if (strcmp(d_argv[i], "-keep") == 0) { keep_font = 1; } else if (strcmp(d_argv[i], "-text") == 0) { text_as_text = 1; } else if (strcmp(d_argv[i], "-debug") == 0) { debug = 1; } else { errf << "Unrecognized pic option: " << d_argv[i] << endl; } } } #endif // float scale; } drvPIC::~drvPIC() { // driver specific deallocations // and writing of trailer to output file outf << ".\\\" PIC end\n"; options=0; } float drvPIC::x_coord(float x, float y) const { if (options->landscape) return (y + y_offset) / PIC_SCALE; else return (x + x_offset) / PIC_SCALE; } float drvPIC::y_coord(float x, float y) const { if (options->landscape) return pageheight - (x + x_offset) / PIC_SCALE; else return (y + y_offset) / PIC_SCALE; } void drvPIC::print_coords() { float move_x = 0.0; float move_y = 0.0; float y; int within_line = 0; ps_begin(); if (options->debug) { outf << ".\\\" xoffs,yoffs,height: " << x_offset << "," << y_offset << "," << currentDeviceHeight << endl; } for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); if (within_line) outf << endl; y = y_coord(p.x_, p.y_); outf << "line from " << x_coord(p.x_, p.y_) << "," << y; move_x = p.x_; move_y = p.y_; if (y > largest_y) largest_y = y; within_line = 1; } break; case lineto:{ const Point & p = elem.getPoint(0); if (!within_line) { errf << "line from no starting point" << endl; } y = y_coord(p.x_, p.y_); outf << " to " << x_coord(p.x_, p.y_) << "," << y; if (y > largest_y) largest_y = y; within_line = 1; } break; #if USE_SPLINE case curveto:{ /* BUG: outf << "spline from "; */ for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); y = y_coord(p.x_, p.y_); outf << " to " << x_xoord(p.x_, p.y_) << "," << y; if (y > largest_y) largest_y = y; } within_line = 1; } break; #endif case closepath: // do this "manually"... outf << " to " << x_coord(move_x, move_y) << "," << y_coord(move_x, move_y); break; default: errf << "\tFatal: unexpected case in drvpic " << endl; abort(); break; } } if (within_line) outf << endl; } void drvPIC::ps_begin() { if (!withinPS) { outf << ".PS\n"; outf << ".ps 11\n"; withinPS = 1; largest_y = 0.0; } } void drvPIC::ps_end() { if (withinPS) { outf << ".PE\n"; withinPS = 0; } } void drvPIC::open_page() { outf << ".\\\" Page: " << currentPageNumber << endl; } void drvPIC::close_page() { ps_end(); } void drvPIC::show_text(const TextInfo & textinfo) { const char *fontname = textinfo.currentFontName.value(); const char *fontweight = textinfo.currentFontWeight.value(); int pointsize = (textinfo.currentFontSize < 2.0) ? 0 : (int) (textinfo.currentFontSize + 1.8); // BUG: point size is strange... const char *tfont = 0; const float x = x_coord(textinfo.x, textinfo.y); const float y = y_coord(textinfo.x, textinfo.y); // const unsigned int fontstringlen=80; RSString selected_font; // Could / should these be class members (wogl? ? ?) // Further, this is used before set !! static bool font_selected = false; static int is_text = 0; // ... /* translate font to groff/troff style */ if (!options->troff_mode) { for (const struct fx * fp = fontxlate; fp->f_name; ++fp) { if (strcmp(fontname, fp->f_name) == 0) { tfont = fp->f_groff; break; } } } if (options->keepFont && !tfont) { tfont = fontname; } if (!tfont) { if (strcmp(fontweight, "Bold") == 0) { tfont = "B"; } else { /* "Regular" */ tfont = "R"; } } /* this is veeery ad-hoc: make assumption about text mode */ if (options->textAsText) { if (!withinPS) { /* we assume drawing does not start with text */ is_text = 1; } else if (y > largest_y) { /* forwards beyond drawing: suspect text mode */ is_text = 1; } else { /* continue in drawing */ is_text = 0; } } if (is_text) { static int selected_size = 0; // ... ps_end(); if (!font_selected) { outf << ".ft " << tfont << endl; selected_font = tfont; font_selected = true; } else if ( tfont != selected_font) { outf << ".ft " << tfont << endl; selected_font = tfont; } if (pointsize && selected_size != pointsize) { outf << ".ps " << pointsize << endl; selected_size = pointsize; } for (const char *p = textinfo.thetext.value(); *p; ++p) { switch (*p) { case '\\': outf << "\\\\"; break; case '`': case '.': if (p == textinfo.thetext.value()) { outf << "\\&"; } /* drop through */ //lint -fallthrough default: outf << *p; break; } } outf << endl; } else { ps_begin(); if (options->debug) { outf << endl; outf << ".\\\" currentFontName: " << textinfo.currentFontName.value() << endl; outf << ".\\\" currentFontFamilyName: " << textinfo. currentFontFamilyName.value() << endl; outf << ".\\\" currentFontFullName: " << textinfo.currentFontFullName.value() << endl; outf << ".\\\" currentFontSize: " << textinfo.currentFontSize << endl; outf << ".\\\" currentFontWeight: " << textinfo.currentFontWeight.value() << endl; outf << ".\\\" currentFontAngle: " << textinfo.currentFontAngle << endl; outf << ".\\\" currentRGB: " << textinfo. currentR << "," << textinfo.currentG << "," << textinfo.currentB << endl; } outf << '"'; if (pointsize) outf << "\\s" << pointsize; outf << "\\f"; // groff/troff style font name if (strlen(tfont) > 1) outf << '[' << tfont << ']'; else outf << tfont; // string itself for (const char *p = textinfo.thetext.value(); *p; ++p) { switch (*p) { case '"': outf << "\\\""; break; case '\\': outf << "\\\\"; break; default: outf << *p; break; } } outf << "\\fP" // restore font << '"' << " at " << x << "," << y << " ljust" << endl; } } void drvPIC::show_path() { // BUG: if (options->debug) { outf << endl << ".\\\" Path # " << currentNr(); if (isPolygon()) outf << " (polygon): " << endl; else outf << " (polyline): " << endl; outf << ".\\\" currentShowType: "; switch (currentShowType()) { case drvbase::stroke: outf << "stroked"; break; case drvbase::fill: outf << "filled"; // BUG: implement... */ break; case drvbase::eofill: outf << "eofilled"; // BUG: implement... */ break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); break; } outf << endl; outf << ".\\\" currentLineWidth: " << currentLineWidth() << endl; outf << ".\\\" currentRGB: " << currentR() << "," << currentG() << "," << currentB() << endl; outf << ".\\\" currentLineCap: " << currentLineCap() << endl; outf << ".\\\" dashPattern: " << dashPattern() << endl; } print_coords(); } static DriverDescriptionT < drvPIC > D_PIC("pic", "PIC format for troff et.al.","", "pic", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. USE_SPLINE, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file (wogl? ? ?) false /*clipping */ ); pstoedit-3.62/src/drvpic.h0000644000175500010010000000510612137224256012447 00000000000000#ifndef __drvPIC_h #define __drvPIC_h /* drvpic.h : This file is part of pstoedit Class declaration for PIC output driver Copyright (C) 1999 Egil Kvaleberg, egil@kvaleberg.no This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvPIC : public drvbase { public: derivedConstructor(drvPIC); ~drvPIC(); // Destructor class DriverOptions : public ProgramOptions { public: // OptionT < bool, BoolTrueExtractor > groff; OptionT < bool, BoolTrueExtractor > troff_mode; OptionT < bool, BoolTrueExtractor > landscape; OptionT < bool, BoolTrueExtractor > portrait; OptionT < bool, BoolTrueExtractor > keepFont; OptionT < bool, BoolTrueExtractor > textAsText; OptionT < bool, BoolTrueExtractor > debug; DriverOptions() : // groff(true,"-groff","",0,"groff mode",0,false), troff_mode(true,"-troff","",0,"troff mode (default is groff)",0,false), landscape(true,"-landscape","",0,"landscape output",0,false), portrait(true,"-portrait","",0,"portrait output",0,false), keepFont(true,"-keepfont","",0,"print unrecognized literally",0,false), textAsText(true,"-text","",0,"try not to make pictures from running text",0,false), debug(true,"-debug","",0,"enable debug output",0,false) { // ADD(groff); ADD(troff_mode); ADD(landscape); ADD(portrait); ADD(keepFont); ADD(textAsText); ADD(debug); } } *options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: void print_coords(); float x_coord(float x, float y) const ; float y_coord(float x, float y) const ; void ps_begin(); void ps_end(); /* int troff_mode; // troff, as opposed to groff int landscape; // original is in landscape mode int keep_font; // print unrecognized literally int text_as_text; // try not to make pictures from running text int debug; // obvious... */ float largest_y; float pageheight; int withinPS; }; #endif pstoedit-3.62/src/drvpptx.cpp0000644000175500010010000021012412137224253013215 00000000000000/* drvPPTX.cpp : This file is part of pstoedit Backend for Office Open XML files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef _MSC_VER // avoid this warning // this macro needs to be define before all the includes // warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. #define _CRT_SECURE_NO_WARNINGS 1 #endif #include "drvpptx.h" #include I_fstream #include I_stdio #include I_stdlib #include I_iomanip #include #include #include #ifdef _MSC_VER // MS VC++ Windows // _USE_MATH_DEFINES needed on Windows to enable the define M_PI #define _USE_MATH_DEFINES #define srandom srand #define random rand #include // work-around - missing on WIndows. long lroundf(float f) { return (long)(floor(f +0.5f)); } #else #include #endif #include // when linking against static library - otherwise it means declspec(dllextern) #define ZIP_EXTERN extern #include #ifdef _MSC_VER // MS VC++ Windows // handle this warning: // 'xxxx': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _xxxx. See online help for details. #define getpid _getpid #define strdup _strdup #define unlink _unlink #endif // #include "version.h" /* The following are some things to know about the Office Open XML (OOXML) DrawingML format (a.k.a. PowerPoint or pptx) that should help understand the code in this file: - A pptx file is really a zip archive that contains a bunch of XML files (plus embedded-image files). - These XML files are cross-linked to each other via "relationships" (indirections through ID-to-filename mappings). - Describing graphics -- or anything else -- requires lots of XML verbosity and a substantial amount of boilerplate text. - The DrawingML coordinate system places the origin in the upper-left corner, in contrast to PostScript, which puts it in the lower-left corner. - The main unit of measurement is the English Metric Unit (EMU), of which there are exactly 914,400 per inch, 360,000 per centimeter, and 12,700 per PostScript point. Note that all of those are integers; DrawingML works exclusively with integers. As an example, a distance of 10cm (approximately 3.9" or 283 pt.) is written as "3600000" in OOXML. - Angles are specified in 60,000ths of a degree. Positive numbers represent clockwise rotations, and negative numbers represent counterclockwise rotations. For example a 30-degree clockwise rotation is written as "1800000" in OOXML. - Percentages are expressed in 1000ths and with no trailing "%" character. For example, 75% is written as "75000" in OOXML. - Positions are specified as a distance from the upper-left corner of the object's bounding box. - Coordinates within a shape are specified with the origin in the upper-left corner of their bounding box. - Scaling is performed relative to the upper-left corner of the object's bounding box. That is, the upper-left corner is invariant with respect to scaling. - Rotation is performed relative to the center of the object's bounding box. - The order of object transformations is (1) translate the upper-left corner, (2) scale from the upper-left corner, (3) flip horizontally/vertically around the image's center, (4) rotate around the image's center. - Although DrawingML supports horizontal and vertical flipping for text, PowerPoint flips only the shape in which the text is embedded. (This box is always an invisible rectangle in the case of drvpptx-generated DrawingML.) The text itself is in fact *rotated*, not flipped. Specifically, horizontally flipped text negates the sign of the rotation angle, and vertically flipped text subtracts the rotation angle from 180 degrees. For example, if a piece of text is rotated clockwise by 30 degrees (angle="1800000"), flipping it horizontally (flipH="1") is equivalent to rotating it instead by -30 degrees; flipping it vertically (flipV="1") is equivalent to rotating it instead by 150 degrees. - Coordinates are always specified in an unrotated coordinate space. - DrawingML supports a fairly large subset of the PostScript that pstoedit understands. Omissions include winding-number fills (only even-odd fills are supported), dash patterns with nonzero offsets, arbitrarily transformed (e.g., skewed) text and images, and vertical text kerning produced by PostScript's awidthshow. I believe that vertical kerning can probably be faked using sub- and superscripts, but that's probably not worth the effort. Office Open XML has been ratified as an Ecma International standard (ECMA-376). See http://www.ecma-international.org/publications/standards/Ecma-376.htm for the complete specification. Note that Microsoft PowerPoint is not always consistent with the ECMA-376 specification and that not all of the information listed above appears in the specification. */ const char * const drvPPTX::xml_rels = "\n" "\n" " \n" "\n"; const char * const drvPPTX::xml_slideLayout1_xml = "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"; const char * const drvPPTX::xml_slideLayout1_xml_rels = "\n" "\n" " \n" "\n"; const char * const drvPPTX::xml_slideMaster1_xml = "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"; const char * const drvPPTX::xml_slideMaster1_xml_rels = "\n" "\n" " \n" " \n" "\n"; const char * const drvPPTX::xml_theme1_xml = "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"; drvPPTX::derivedConstructor(drvPPTX): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): // Constructor constructBase, outzip(NIL) { // Parse our command-line options. if (options->colortype == "original") color_type = C_ORIGINAL; else if (options->colortype == "theme") color_type = C_THEME; else if (options->colortype == "theme-pure") color_type = C_THEME_PURE; else { errorMessage("ERROR: -colors must be either \"original\", \"theme\", or \"theme-pure\""); abort(); } if (options->fonttype == "windows") font_type = F_WINDOWS; else if (options->fonttype == "native") font_type = F_NATIVE; else if (options->fonttype == "theme") font_type = F_THEME; else { errorMessage("ERROR: -fonts must be one of \"windows\", \"native\", or \"theme\""); abort(); } if (options->embeddedfonts != "") { // Loop over each EOT filename. stringstream embed_stream(RSString(options->embeddedfonts).value()); string efile; while (getline(embed_stream, efile, ',')) { // Ensure the file exists, then add it to the list. const char * const efile_cstr = efile.c_str(); if (!fileExists(efile_cstr)) { errorMessage((RSString("ERROR: Cannot open file ") + efile_cstr).value()); abort(); } eotlist.insert(efile); } } // Map PostScript core font names to their Windows + PANOSE replacements. if (font_type == F_WINDOWS) { ps2win.insert("Courier", "Courier New,Courier New,02070309020205020404"); ps2win.insert("Courier-Bold", "Courier New Bold,Courier New,02070609020205020404"); ps2win.insert("Courier-BoldOblique", "Courier New Bold Italic,Courier New,02070609020205090404"); ps2win.insert("Courier-Oblique", "Courier New Italic,Courier New,02070409020205090404"); ps2win.insert("Helvetica", "Arial,Arial,020b0604020202020204"); ps2win.insert("Helvetica-Bold", "Arial Bold,Arial,020b0704020202020204"); ps2win.insert("Helvetica-BoldOblique", "Arial Bold Italic,Arial,020b0704020202090204"); ps2win.insert("Helvetica-Oblique", "Arial Italic,Arial,020b0604020202090204"); ps2win.insert("Times-Bold", "Times New Roman Bold,Times New Roman,02020803070505020304"); ps2win.insert("Times-BoldItalic", "Times New Roman Bold Italic,Times New Roman,02020703060505090304"); ps2win.insert("Times-Italic", "Times New Roman Italic,Times New Roman,02020503050405090304"); ps2win.insert("Times-Roman", "Times New Roman,Times New Roman,02020603050405020304"); } // Output all floating-point numbers as integers. slidef << fixed << setprecision(0); // Seed the random-number generator. srandom((unsigned int) time(NULL)*getpid()); // Create a zip archive for holding PresentationML data. create_pptx(); // Specify the slide dimensions (must match ppt/presentation.xml's // tag). slideBBox.ll = Point(0, 0); slideBBox.ur = Point(10080625/12700.0, 7559675/12700.0); // Number IDs from 1 and images from 0. next_id = 1; total_images = 0; page_images = 0; } drvPPTX::~drvPPTX() { // Embed fonts in the PPTX file if asked to do so. if (!eotlist.empty()) { unsigned int fontNum = 1; for (set::iterator iter = eotlist.begin(); iter != eotlist.end(); ++iter) { const char * const eotFileName = iter->c_str(); struct zip_source *font_file = zip_source_file(outzip, eotFileName, 0, -1); if (font_file == NULL) { errorMessage((RSString("ERROR: Failed to embed font file ") + eotFileName + " (" + zip_strerror(outzip) + ")").value()); abort(); } ostringstream full_eot_filename; full_eot_filename << "ppt/fonts/font" << fontNum << ".fntdata"; if (zip_add(outzip, full_eot_filename.str().c_str(), font_file) == -1) { errorMessage((RSString("ERROR: Failed to embed font file ") + eotFileName + " as " + full_eot_filename.str().c_str() + " (" + zip_strerror(outzip) + ")").value()); abort(); } fontNum++; } } // Create the presentation file. ostringstream xml_presentation_xml; xml_presentation_xml << "\n" "\n" : " embedTrueTypeFonts=\"1\">\n"); xml_presentation_xml << " \n" " \n" " \n" " \n"; for (unsigned int p = 0; p < totalNumberOfPages(); p++) xml_presentation_xml << " \n"; xml_presentation_xml << " \n" " \n" " \n"; if (!eotlist.empty()) { unsigned int rId = totalNumberOfPages() + 3; xml_presentation_xml << " \n"; for (set::iterator iter = eotlist.begin(); iter != eotlist.end(); ++iter) { // Get information about the font. TextInfo * textinfo = eot2texinfo(*iter); RSString typeface; RSString panose; bool isBold; bool isItalic; unsigned char pitchFamily; get_font_props(*textinfo, &typeface, &panose, &isBold, &isItalic, &pitchFamily); // Describe the font to be embedded. xml_presentation_xml << " \n" << " \n"; switch (int(isBold)*2 + int(isItalic)) { case 0: xml_presentation_xml << " \n"; break; case 1: xml_presentation_xml << " \n"; break; case 2: xml_presentation_xml << " \n"; break; case 3: xml_presentation_xml << " \n"; break; default: errf << "\t\tERROR: unexpected case in drvpptx " << endl; abort(); break; } xml_presentation_xml << " \n"; rId++; } xml_presentation_xml << " \n"; } xml_presentation_xml << "\n"; create_pptx_file("ppt/presentation.xml", xml_presentation_xml.str().c_str()); // Create the presentation relationships file. ostringstream xml_presentation_xml_rels; xml_presentation_xml_rels << "\n" "\n" " \n" " \n"; for (unsigned int p = 0; p < totalNumberOfPages(); p++) xml_presentation_xml_rels << " \n"; if (!eotlist.empty()) { unsigned int fontNum = 1; unsigned int rId = totalNumberOfPages() + 3; for (set::iterator iter = eotlist.begin(); iter != eotlist.end(); ++iter) { xml_presentation_xml_rels << " \n"; fontNum++; rId++; } } xml_presentation_xml_rels << "\n"; create_pptx_file("ppt/_rels/presentation.xml.rels", xml_presentation_xml_rels.str().c_str()); // Create the content-types file. ostringstream xml_content_types; xml_content_types << "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n"; for (unsigned int p = 0; p < totalNumberOfPages(); p++) xml_content_types << " \n" << " \n"; if (total_images > 0) xml_content_types << " \n"; if (!eotlist.empty()) xml_content_types << " \n"; xml_content_types << "\n"; create_pptx_file("[Content_Types].xml", xml_content_types.str().c_str()); // Write the PPTX file to disk. if (zip_close(outzip) == -1) { errorMessage((RSString("ERROR: Failed to generate ") + outFileName + " (" + zip_strerror(outzip) + ")").value()); abort(); } } // Create a file in a PPTX package from given contents. void drvPPTX::create_pptx_file(const char * relname, const char * contents) { // Convert the file contents into a data source. struct zip_source * file_source = zip_source_buffer(outzip, strdup(contents), strlen(contents), 1); if (file_source == NULL) { errorMessage((RSString("ERROR: Failed to create data for ") + relname + " (" + zip_strerror(outzip) + ")").value()); abort(); } // Add the data source to the PPTX file. if (zip_add(outzip, relname, file_source) == -1) { errorMessage((RSString("ERROR: Failed to insert ") + relname + " into " + outFileName + " (" + zip_strerror(outzip) + ")").value()); abort(); } } // Create a PPTX file from scratch and add some of the boilerplate. void drvPPTX::create_pptx() { // Create a PPTX file for writing. unlink(outFileName.value()); int ziperr; outzip = zip_open(outFileName.value(), ZIP_CREATE, &ziperr); if (outzip == NULL) { char reason[101]; zip_error_to_str(reason, 100, ziperr, errno); errorMessage((RSString("ERROR: Failed to create ") + outFileName + " (" + reason + ")").value()); abort(); } RSString comment = RSString("Created by pstoedit's pptx driver from PostScript input ") + inFileName; zip_set_archive_comment(outzip, comment.value(), (zip_uint16_t)comment.length()); // Insert boilerplate files into the PPTX archive. create_pptx_file("_rels/.rels", xml_rels); create_pptx_file("ppt/slideLayouts/slideLayout1.xml", xml_slideLayout1_xml); create_pptx_file("ppt/slideLayouts/_rels/slideLayout1.xml.rels", xml_slideLayout1_xml_rels); create_pptx_file("ppt/slideMasters/slideMaster1.xml", xml_slideMaster1_xml); create_pptx_file("ppt/slideMasters/_rels/slideMaster1.xml.rels", xml_slideMaster1_xml_rels); create_pptx_file("ppt/theme/theme1.xml", xml_theme1_xml); } void drvPPTX::print_coords(const BBox & pathBBox) { // Output a list of coordinates in the shape's coordinate system. long int xshift_emu = -xtrans(pathBBox.ll.x_); long int yshift_emu = -ytrans(pathBBox.ur.y_); for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { const Point & p = elem.getPoint(0); slidef << " \n" << " \n" << " \n"; } break; case lineto: { const Point & p = elem.getPoint(0); slidef << " \n" << " \n" << " \n"; } break; case curveto: { slidef << " \n"; for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); slidef << " \n"; } slidef << " \n"; } break; case closepath: slidef << " \n"; break; default: errf << "\t\tERROR: unexpected case in drvpptx " << endl; abort(); break; } } } void drvPPTX::open_page() { // Determine how much to offset the current page to center its // graphics within the slide. BBox pageBBox = getCurrentBBox(); center_offset.x_ = (slideBBox.ur.x_ - slideBBox.ll.x_ - (pageBBox.ur.x_ - pageBBox.ll.x_)) / 2.0f; center_offset.y_ = (slideBBox.ur.y_ - slideBBox.ll.y_ - (pageBBox.ur.y_ - pageBBox.ll.y_)) / 2.0f; // Output OOXML header boilerplate. slidef << "\n" << "\n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; // Reset the image count. page_images = 0; } void drvPPTX::close_page() { // Output OOXML trailer boilerplate. slidef << " \n" << " \n" << "\n"; // Add the current slide to the PPTX file. const char * const slideContents_c = strdup(slidef.str().c_str()); struct zip_source * slideContents = zip_source_buffer(outzip, slideContents_c, strlen(slideContents_c), 1); ostringstream slideFileName; slideFileName << "ppt/slides/slide" << currentPageNumber << ".xml"; const char * const slideFileName_c = strdup(slideFileName.str().c_str()); // libzip seems to store a pointer to this. if (zip_add(outzip, slideFileName_c, slideContents) == -1) { errorMessage((RSString("ERROR: Failed to store ") + slideFileName_c + " in " + outFileName + " (" + zip_strerror(outzip) + ")").value()); abort(); } // Clear the slide contents in preparation for the next page. slidef.str(""); slidef.clear(); // Create a relationships file for the current slide. ostringstream slideRelName; slideRelName << "ppt/slides/_rels/slide" << currentPageNumber << ".xml.rels"; ostringstream slideRelContents; slideRelContents << "\n" "\n" " \n"; for (unsigned int i = 0; i < page_images; i++) slideRelContents << " \n"; slideRelContents << "\n"; create_pptx_file(slideRelName.str().c_str(), slideRelContents.str().c_str()); } unsigned char drvPPTX::panose2pitch (const unsigned int * panose_vals) { // Convert a PANOSE characterization to an OOXML pitch family. unsigned char pitchFamily = 0; switch (panose_vals[0]) { case 3: // "Latin script" pitchFamily = 0x40; // "Script" break; case 4: // "Latin decorative" pitchFamily = 0x50; // "Decorative" break; default: // "Latin text" or other pitchFamily = (panose_vals[1] >= 11 && panose_vals[1] <= 13 ? 0x20 : 0x10); // "Swiss" or "Roman" break; } pitchFamily |= (panose_vals[3] == 9 ? 0x01 : 0x02); // "Fixed" or "Variable" return pitchFamily; } void drvPPTX::get_font_props(const TextInfo & textinfo, RSString * typeface, RSString * panose, bool * isBold, bool * isItalic, unsigned char * pitchFamily) { // Replace PostScript core fonts with Windows fonts. RSString currentFontName(textinfo.currentFontName); if (font_type == F_WINDOWS) { const RSString * winFont = ps2win.getValue(currentFontName); if (winFont != NULL) currentFontName = *winFont; } // Determine properties of the given font. unsigned int panose_vals[10]; if (currentFontName.contains(',')) { // Split the font name at commas into ,,. stringstream fontname_stream(currentFontName.value()); string fullname; string familyname; string panose_str; if (getline(fontname_stream, fullname, ',') && getline(fontname_stream, familyname, ',') && getline(fontname_stream, panose_str, ',') && sscanf(panose_str.c_str(), "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", &panose_vals[0], &panose_vals[1], &panose_vals[2], &panose_vals[3], &panose_vals[4], &panose_vals[5], &panose_vals[6], &panose_vals[7], &panose_vals[8], &panose_vals[9]) == 10) { // Compute everything from the given PANOSE categorization. typeface->copy(familyname.c_str()); panose->copy(panose_str.c_str()); *isBold = panose_vals[2] >= 7; // "Demi" and up *isItalic = panose_vals[7] >= 9; // "Oblique" letterform *pitchFamily = panose2pitch(panose_vals); return; } } // If we're here, then either the user didn't specify a font map // that includes PANOSE data or the current font was not found in // the map. Do the best we can heuristically. *typeface = textinfo.currentFontFamilyName; if (*typeface == "Courier" || *typeface == "unknown" || typeface->length() < currentFontName.length()) *typeface = currentFontName; for (int i = 0; i < 10; i++) panose_vals[i] = 0; if (currentFontName.contains("Sans") || textinfo.currentFontFullName.contains("Sans")) { panose_vals[0] = 2; // "Latin text" panose_vals[1] = 11; // "Normal sans" } else { if (currentFontName.contains("Script") || textinfo.currentFontFullName.contains("Script") || currentFontName.contains("Hand") || textinfo.currentFontFullName.contains("Hand")) panose_vals[0] = 3; // "Latin script" else { panose_vals[0] = 2; // "Latin text" panose_vals[1] = 2; // "Cove" } } if (currentFontName.contains("Bold") || textinfo.currentFontFullName.contains("Bold")) { *isBold = true; panose_vals[2] = 8; // "Bold" } else { *isBold = false; panose_vals[2] = 5; // "Book" } if (currentFontName.contains("Italic") || textinfo.currentFontFullName.contains("Italic") || currentFontName.contains("Oblique") || textinfo.currentFontFullName.contains("Oblique")) { *isItalic = true; panose_vals[9] = 9; // "Contact/oblique" } else { *isItalic = false; panose_vals[9] = 2; // "Contact/normal" } if (currentFontName.contains("Mono") || textinfo.currentFontFullName.contains("Mono")) panose_vals[4] = 9; // "Monospaced" else panose_vals[4] = 3; // "Modern" char panose_str[21]; sprintf(panose_str, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", panose_vals[0], panose_vals[1], panose_vals[2], panose_vals[3], panose_vals[4], panose_vals[5], panose_vals[6], panose_vals[7], panose_vals[8], panose_vals[9]); panose->copy(panose_str); *pitchFamily = panose2pitch(panose_vals); } // Fabricate a TextInfo structure from an EOT file header. drvbase::TextInfo * drvPPTX::eot2texinfo(string eotfilename) { TextInfo * textinfo = new TextInfo(); unsigned char panose_vals[10]; unsigned char charvals[4]; // Parse the EOT header. ifstream eotfile(eotfilename.c_str()); eotfile.ignore(4+4+4+4); // Size, font data size, version, flags eotfile.read((char *)panose_vals, 10); // PANOSE values eotfile.ignore(1+1+4); // Character set, italic, weight eotfile.read((char *)charvals, 2); // Embedding restrictions short fstype = charvals[1]<<8 | charvals[0]; eotfile.read((char *)charvals, 2); // Magic number unsigned short magicnum = charvals[1]<<8 | charvals[0]; if (magicnum != 0x504c) { errorMessage((RSString("ERROR: ") + eotfilename.c_str() + " is not a valid Embedded OpenType (EOT) font file").value()); abort(); } eotfile.ignore(4+4+4+4+4+4); // Unicode ranges 1-4 and code page ranges 1-2 eotfile.ignore(4+4+4+4+4+2); // Checksum adjustment, reserved 1-4, padding eotfile.read((char *)charvals, 2); // Family-name length unsigned short namesize = charvals[1]<<8 | charvals[0]; char *familyname = new char[namesize]; eotfile.read(familyname, namesize); // Family name for (unsigned short i = 0; i < namesize/2; i++) // Cheesy conversion from Unicode to ASCII familyname[i] = familyname[i*2]; textinfo->currentFontFamilyName = RSString(familyname, namesize/2); delete[] familyname; eotfile.ignore(2); // Padding eotfile.read((char *)charvals, 2); // Style-name length namesize = charvals[1]<<8 | charvals[0]; eotfile.ignore(namesize); // Style name eotfile.ignore(2); // Padding eotfile.read((char *)charvals, 2); // Version-name length namesize = charvals[1]<<8 | charvals[0]; eotfile.ignore(namesize); // Version name eotfile.ignore(2); // Padding eotfile.read((char *)charvals, 2); // Full-name length namesize = charvals[1]<<8 | charvals[0]; char *fullname = new char[namesize]; eotfile.read(fullname, namesize); // Full name for (unsigned short i = 0; i < namesize/2; i++) // Cheesy conversion from Unicode to ASCII fullname[i] = fullname[i*2]; textinfo->currentFontFullName = RSString(fullname, namesize/2); delete[] fullname; eotfile.close(); // Warn the user if the font has embedding restrictions. if (fstype == 0x0002) errf << "WARNING: Font " << textinfo->currentFontFullName << " (" << eotfilename << ") indicates that it must not be modified," << " embedded, or exchanged in any manner without first obtaining" << " permission from the legal owner. Do not embed this font" << " unless you have obtained such permission.\n"; // Concatenate the PANOSE data to the font name so get_font_props() // can extract and process it. char panose_str[22]; sprintf(panose_str, ",%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", panose_vals[0], panose_vals[1], panose_vals[2], panose_vals[3], panose_vals[4], panose_vals[5], panose_vals[6], panose_vals[7], panose_vals[8], panose_vals[9]); textinfo->currentFontName = textinfo->currentFontFullName + ',' + textinfo->currentFontFamilyName + panose_str; return textinfo; } // Given two 2-D vectors (represented as Points), return the angle // from the first to the second. // http://stackoverflow.com/questions/5188561/signed-angle-between-two-3d-vectors-with-same-origin-within-the-same-plane-reci // was useful here. float drvPPTX::angle_between(Point first, Point second) { // Normalize each vector. float scale = pythagoras(first.x_, first.y_); first.x_ /= scale; first.y_ /= scale; scale = pythagoras(second.x_, second.y_); second.x_ /= scale; second.y_ /= scale; // Determine the direction of the rotation. float direction = first.x_*second.y_ - first.y_*second.x_; // Determine the rotation itself. float angle = acos(first.x_*second.x_ + first.y_*second.y_) * 180.0f/(float)M_PI; if (direction < 0) angle = -angle; return angle; } // Given a six-element PostScript transformation matrix, determine the // components of the transformation it represents. void drvPPTX::parse_xform_matrix(const float * origMatrix, bool * mirrored, float * xscale, float * yscale, float * rotation, float * xtrans, float * ytrans) { // Return the translation then remove it from the matrix. float matrix[6]; for (int i = 0; i < 6; i++) matrix[i] = origMatrix[i]; *xtrans = matrix[4]; *ytrans = matrix[5]; matrix[4] = 0.0f; matrix[5] = 0.0f; // Determine whether the transformation includes mirroring. Point xunit(1.0f, 0.0f); Point xunit_xform = xunit.transform(matrix); Point yunit(0.0f, 1.0f); Point yunit_xform = yunit.transform(matrix); float rot90 = angle_between(xunit_xform, yunit_xform); *mirrored = rot90 < 0; // Compute the rotation angle. *rotation = angle_between(xunit, xunit_xform); if (*mirrored) *rotation = fmodf(*rotation + 180.0f, 360.0f); // Compute the scaling. *xscale = pythagoras(xunit_xform.x_, xunit_xform.y_); *yscale = pythagoras(yunit_xform.x_, yunit_xform.y_); } void drvPPTX::show_text(const TextInfo & textinfo) { // Output the non-visual shape properties. slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; next_id++; // Compute the unrotated text width and height. float text_width = // Unrotated width pythagoras(textinfo.x_end - textinfo.x, textinfo.y_end - textinfo.y); float text_height = textinfo.currentFontSize; // Unrotated height // Determine if the text is flipped horizontally. We don't test for // vertical flipping because this is isomorphic to a horizontal flip // plus a rotation. bool flipH; float xscale, yscale, angle, xtrans, ytrans; parse_xform_matrix(textinfo.FontMatrix, &flipH, &xscale, &yscale, &angle, &xtrans, &ytrans); if (flipH) angle = -angle; // Compute the upper-left corner of the rotated text. Point text_pivot(textinfo.x, textinfo.y); // Unrotated lower left Point text_ul(textinfo.x, textinfo.y + text_height); // Unrotated upper left Point text_c = text_pivot + Point(text_width/2.0f, text_height/2.0f); // Unrotated center if (flipH) { text_ul.x_ -= text_width; text_c.x_ -= text_width; } // Rotate the upper-left corner and center around the original // lower-left corner, then unrotate the upper-left corner around the // new center. Point text_ul_rot = rotate_pt_around(text_ul, angle, text_pivot); Point text_c_rot = rotate_pt_around(text_c, angle, text_pivot); Point text_ofs = rotate_pt_around(text_ul_rot, -angle, text_c_rot); // Output the visual shape properties. slidef << " \n"; slidef << " \n"; slidef << " \n"; slidef << " \n" << " \n" << " \n" << " \n"; // Get information about the current font. RSString typeface; RSString panose; bool isBold; bool isItalic; unsigned char pitchFamily; get_font_props(textinfo, &typeface, &panose, &isBold, &isItalic, &pitchFamily); // Output the text itself. slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; print_color(16, textinfo.currentR, textinfo.currentG, textinfo.currentB); switch (font_type) { case F_WINDOWS: case F_NATIVE: slidef << " \n"; break; case F_THEME: // Use the theme's default font. break; default: errorMessage("ERROR: Unknown font type"); abort(); break; } slidef << " \n" << " "; static bool warned_invalid_char = false; // true=already issued an invalid-character warning for (size_t c = 0; c < textinfo.thetext.length(); c++) { unsigned char onechar = textinfo.thetext[c]; if (onechar < 32 || (onechar >= 128 && onechar < 192)) { if (!warned_invalid_char) errf << "Warning: Character " << (unsigned int)onechar << " is not allowed in OOXML text; ignoring\n"; warned_invalid_char = true; } else switch (onechar) { case '<': slidef << "<"; break; case '>': slidef << ">"; break; case '&': slidef << "&"; break; default: if (onechar < 128) slidef << onechar; else slidef << char(0xC0 | (onechar>>6)) << char(0x80 | (onechar&0x3F)); break; } } slidef << "\n" << " \n" << " \n"; print_color(14, textinfo.currentR, textinfo.currentG, textinfo.currentB); slidef << " \n" << " \n" << " \n" << " \n"; } long int drvPPTX::bp2emu (float bp) { return lroundf(bp * 12700.0f); } const char * drvPPTX::pt2emu(float x_bp, float y_bp, long int xshift_emu, long int yshift_emu, RSString x_name, RSString y_name, bool scaleOnly) const { // Convert a PostScript (x, y) coordinate (in big points with its // origin in the lower left) to an XML string (in EMUs with its // origin in the upper left). If scaleOnly is true, then scale the // units without translating the coordinates (useful for widths and // heights). Note that the result will get overwritten on the // subsequent call. static char emuString[100]; // Should be more than enough in practice if (scaleOnly) sprintf(emuString, "%s=\"%ld\" %s=\"%ld\"", x_name.value(), bp2emu(x_bp), y_name.value(), bp2emu(y_bp)); else sprintf(emuString, "%s=\"%ld\" %s=\"%ld\"", x_name.value(), xtrans(x_bp) + xshift_emu, y_name.value(), ytrans(y_bp) + yshift_emu); return emuString; } // Compute the centroid of a polygon. Note that we might not have // been given a polygon, but we'll at least return *something*. Point drvPPTX::pathCentroid() { // We start by finding a cycle of knots. unsigned int numElts = numberOfElementsInPath(); Point * allKnots = new Point[numElts + 1]; unsigned int numKnots = 0; unsigned int movetos = 0; for (unsigned int n = 0; n < numElts; n++) { const basedrawingelement & elem = pathElement(n); if (elem.getType() == moveto) movetos++; if (elem.getNrOfPoints() == 0) continue; allKnots[numKnots++] = elem.getPoint(elem.getNrOfPoints() - 1); } if (allKnots[numKnots - 1] == allKnots[0]) numKnots--; else allKnots[numKnots] = allKnots[0]; // Otherwise, we compute the area bounded by the knots. float area = 0.0f; for (unsigned int n = 0; n < numKnots; n++) area += allKnots[n].x_*allKnots[n+1].y_ - allKnots[n+1].x_*allKnots[n].y_; area /= 2.0f; // If we were given a disjoint path or the area is zero, simply // average all of the knot coordinates and return that. if (movetos > 1 || area == 0.0f) { Point centroid; for (unsigned int n = 0; n < numKnots; n++) centroid += allKnots[n]; centroid.x_ /= numKnots; centroid.y_ /= numKnots; delete[] allKnots; return centroid; } // Finally, we compute the centroid of the polygon. Point p; for (unsigned int n = 0; n < numKnots; n++) { float partial = allKnots[n].x_*allKnots[n+1].y_ - allKnots[n+1].x_*allKnots[n].y_; p.x_ += (allKnots[n].x_ + allKnots[n+1].x_)*partial; p.y_ += (allKnots[n].y_ + allKnots[n+1].y_)*partial; } p.x_ /= area*6.0f; p.y_ /= area*6.0f; delete[] allKnots; return p; } // Rotate point PT by ANGLE degrees around point PIVOT. Point drvPPTX::rotate_pt_around (const Point & pt, float angle, const Point & pivot) { Point shiftedPt = pt; shiftedPt.x_ -= pivot.x_; // Shift the pivot to the origin. shiftedPt.y_ -= pivot.y_; float angle_rad = angle * (float)M_PI / 180.0f; Point rotatedPt(shiftedPt.x_*cosf(angle_rad) - shiftedPt.y_*sinf(angle_rad), // Rotate the shifted point. shiftedPt.x_*sinf(angle_rad) + shiftedPt.y_*cosf(angle_rad)); return rotatedPt + pivot; // Shift back to the original pivot. } void drvPPTX::print_connections(const BBox & pathBBox) { // Output shape connection sites (knots and centroid). Point centroid = pathCentroid(); long int xshift_emu = -xtrans(pathBBox.ll.x_); long int yshift_emu = -ytrans(pathBBox.ur.y_); slidef << " \n" << " \n" << " \n" << " \n"; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); if (elem.getNrOfPoints() == 0) continue; const Point & p = elem.getPoint(elem.getNrOfPoints() - 1); float angle = atan2f(centroid.y_ - p.y_, p.x_ - centroid.x_); slidef << " \n" << " \n" << " \n"; } slidef << " \n"; } void drvPPTX::print_color(int baseIndent, float redF, float greenF, float blueF) { // Output an OOXML solid color. string indentStr = string(baseIndent, ' '); unsigned int red = (unsigned int)lroundf(redF * 255); unsigned int green = (unsigned int)lroundf(greenF * 255); unsigned int blue = (unsigned int)lroundf(blueF * 255); unsigned int rgb = blue + 256*(green + 256*red); slidef << indentStr << "\n"; switch (color_type) { case C_ORIGINAL: // With -colors=original, output the color exactly as specified. slidef << indentStr << " \n"; break; case C_THEME: case C_THEME_PURE: // With -colors=theme, randomly select a theme color. if (rgb == 0) // Black -> dark 1 slidef << indentStr << " \n"; else if (rgb == 0xffffff) // White -> light 1 slidef << indentStr << " \n"; else { // Randomly select a theme color, but remember it for next time. const ThemeColor * colorInfo = rgb2theme.getValue(rgb); if (colorInfo == NULL) { // This is the first time we've seen this RGB color. static const char *colorList[] = { "dk2", "lt2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6" }; ThemeColor * newColorInfo = new ThemeColor; newColorInfo->name = colorList[random() % (sizeof(colorList)/sizeof(colorList[0]))]; if (color_type == C_THEME) { // Randomly alter the luminosity with the constraint that // light colors map to light colors and dark colors map to // dark colors. float origLum = sqrtf(0.241f*redF*redF + 0.691f*greenF*greenF + 0.068f*blueF*blueF); if (origLum >= 0.5) newColorInfo->lum = 50000 + random()%40000; // Map to [50%, 90%]. else newColorInfo->lum = 30000 + random()%20000; // Map to [30%, 50%]. } rgb2theme.insert(rgb, *newColorInfo); colorInfo = newColorInfo; } // Output the, possibly altered, theme color. if (colorInfo->lum == ~0U) slidef << indentStr << " name << "\"/>\n"; else { slidef << indentStr << " name << "\">\n" << indentStr << " lum << "\"/>\n" << indentStr << " \n"; } } break; default: errorMessage("ERROR: Unexpected color type"); abort(); break; } slidef << indentStr << "\n"; } void drvPPTX::print_join() { // Output the current line join in OOXML format. switch (currentLineJoin()) { case 0: slidef << " \n"; break; case 1: slidef << " \n"; break; case 2: slidef << " \n"; break; default: errorMessage("ERROR: unknown linejoin"); abort(); break; } } void drvPPTX::print_dash() { // Parse a PostScript dash pattern. istringstream dashStr(dashPattern()); float *pattern = new float[2*string(dashPattern()).length()]; // Very generous allocation but expected to be short size_t patternLen = 0; // Number of floats in the above string oneToken; dashStr >> oneToken; // "[" while (dashStr) { // Read floats until we reach the "]". Ignore that and anything // that follows it. dashStr >> pattern[patternLen]; if (dashStr.fail()) break; patternLen++; } // Output an OOXML custom dash. if (patternLen > 0) { // Repeat odd patterns to make them even. size_t p; if (patternLen % 2 == 1) { for (p = 0; p < patternLen; p++) pattern[p + patternLen] = pattern[p]; patternLen *= 2; } // Output {dash, space} pairs. float lineWidth = currentLineWidth(); slidef << " \n"; for (p = 0; p < patternLen; p += 2) slidef << " \n"; slidef << " \n"; } delete[] pattern; } void drvPPTX::show_path() { // Output the non-visible shape properties. slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; next_id++; // Compute the path's bounding box. This might not be perfectly // tight due to the way we process curves, but that's not a show // stopper. BBox pathBBox; pathBBox.ll.x_ = FLT_MAX; pathBBox.ll.y_ = FLT_MAX; pathBBox.ur.x_ = -FLT_MAX; pathBBox.ur.y_ = -FLT_MAX; Point prevPoint; for (unsigned int e = 0; e < numberOfElementsInPath(); e++) { // Non-curves are handled by considering each knot in the // bounding-box calcuation. const basedrawingelement & elem = pathElement(e); unsigned int numPoints = elem.getNrOfPoints(); if (elem.getType() != curveto) for (unsigned int p = 0; p < numPoints; p++) { Point thisPt = elem.getPoint(p); pathBBox.ll.x_ = min(pathBBox.ll.x_, thisPt.x_); pathBBox.ll.y_ = min(pathBBox.ll.y_, thisPt.y_); pathBBox.ur.x_ = max(pathBBox.ur.x_, thisPt.x_); pathBBox.ur.y_ = max(pathBBox.ur.y_, thisPt.y_); } // Rather than attempt to compute the true bounding box of a // curve, we simply sample a large number of evenly spaced points // along the curve for our bounding-box calcuation. This is a lot // easier and probably works in virtually all cases. if (elem.getType() == curveto) { const float numSamples = 100.0f; for (float t = 0.0f; t <= 1.0f; t += 1.0f/numSamples) { Point bPoint = PointOnBezier(t, prevPoint, elem.getPoint(0), elem.getPoint(1), elem.getPoint(2)); pathBBox.ll.x_ = min(pathBBox.ll.x_, bPoint.x_); pathBBox.ll.y_ = min(pathBBox.ll.y_, bPoint.y_); pathBBox.ur.x_ = max(pathBBox.ur.x_, bPoint.x_); pathBBox.ur.y_ = max(pathBBox.ur.y_, bPoint.y_); } } // Keep track of the current point. if (numPoints > 0) prevPoint = elem.getPoint(numPoints - 1); } // Output the 2-D transform for the graphic frame (i.e., the shape's // offset and size). slidef << " \n" << " \n"; slidef << " \n"; slidef << " \n" << " \n"; // For the user's convenience, make each knot a connection site, and // specify that any text the user adds should fill the shape's bounding box. slidef << " \n"; print_connections(pathBBox); slidef << " \n"; // Define the coordinate system for the shape within its frame. slidef << " \n" << " \n"; // Output all of the shape's lines and curves. print_coords(pathBBox); slidef << " \n" << " \n" << " \n"; // Output a stroke and/or fill. if (pathWasMerged() || currentShowType() == drvbase::fill || currentShowType() == drvbase::eofill) // Filled region print_color(10, fillR(), fillG(), fillB()); if (pathWasMerged() || currentShowType() == drvbase::stroke) { // Stroked line slidef << " \n"; print_color(12, edgeR(), edgeG(), edgeB()); print_dash(); print_join(); slidef << " \n"; } // Indicate that if the shape is to be contain a text box, then the // text box should be middle-centered within the shape, and the text // itself should be centered horizontally within the text box. slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; } void drvPPTX::show_rectangle(const float llx, const float lly, const float urx, const float ury) { // We could probably generate a rectangle preset if we felt like it. unused(&llx); unused(&lly); unused(&urx); unused(&ury); // avoid the compiler warning show_path(); } void drvPPTX::show_image(const PSImage & imageinfo) { // One might think that imageinfo.imageMatrix, which the PostScript // Language Reference Manual suggests using to map the unit square // to the bounds of the source image, would be useful here. // However, experiments suggest that // imageinfo.normalizedImageCurrentMatrix in fact provides all the // information we need to place an image on a slide. const float * ctm = imageinfo.normalizedImageCurrentMatrix; // Determine the image's orientation, scale, rotation, and position // on the slide. // http://stackoverflow.com/questions/4361242/extract-rotation-scale-values-from-2d-transformation-matrix // and // http://math.stackexchange.com/questions/13150/extracting-rotation-scale-values-from-2d-transformation-matrix // were helpful here. bool flipH = ctm[0] < 0; bool flipV = ctm[3] > 0; // Reversed sense because we're already flipping the coordinate system float xscale = pythagoras(ctm[0], ctm[2]); float yscale = pythagoras(ctm[1], ctm[3]); float angle = atan2f(ctm[2], ctm[0]) * (float)(180.0f/M_PI); if (flipH) angle = 180.0f - angle; if (flipV) angle = -angle; long int angle_int = lroundf(-60000.0f*angle); // DrawingML rotates the image *after* the location for the image's // upper-left corner is specified. Hence, we determine the image's // unrotated upper-left corner by applying the CTM to the image's // center and taking an offset from that. Point center_orig(imageinfo.width/2.0f, imageinfo.height/2.0f); Point center_xform = center_orig.transform(ctm); Point ofs = center_xform + Point(-xscale*imageinfo.width/2.0f, yscale*imageinfo.height/2.0f); // Place the image on the slide. total_images++; page_images++; slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; next_id++; slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; slidef << " \n" << " \n" << " \n"; slidef << " \n" << " \n" << " \n" << " \n" << " \n" << " \n"; // Embed the image in the PPTX file. struct zip_source *img_file = zip_source_file(outzip, imageinfo.FileName.value(), 0, -1); if (img_file == NULL) { errorMessage((RSString("ERROR: Failed to embed image file ") + imageinfo.FileName + " (" + zip_strerror(outzip) + ")").value()); abort(); } ostringstream img_filename; img_filename << "ppt/media/image" << total_images << ".png"; if (zip_add(outzip, img_filename.str().c_str(), img_file) == -1) { errorMessage((RSString("ERROR: Failed to embed image file ") + imageinfo.FileName + " as " + img_filename.str().c_str() + " (" + zip_strerror(outzip) + ")").value()); abort(); } } static DriverDescriptionT < drvPPTX > D_pptx("pptx", "PresentationML (PowerPoint) format", "This is the format used internally by Microsoft PowerPoint. LibreOffice can also read/write PowerPoint files albeit with some lack of functionality.", "pptx", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::png, // support for PNG images DriverDescription::noopen, // we create the output file ourself true, // if format supports multiple pages in one file false // clipping ); pstoedit-3.62/src/drvpptx.h0000644000175500010010000001530212137224256012666 00000000000000#ifndef __drvPPTX_h #define __drvPPTX_h /* drvooxml.h : This file is part of pstoedit Backend for Office Open XML files Contributed by: Scott Pakin Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #include I_strstream #include class drvPPTX : public drvbase { public: derivedConstructor(drvPPTX); ~drvPPTX(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < RSString, RSStringValueExtractor > colortype; OptionT < RSString, RSStringValueExtractor > fonttype; OptionT < RSString, RSStringValueExtractor > embeddedfonts; DriverOptions(): colortype(true, "-colors", "string", 0, "\"original\" to retain original colors (default), \"theme\" to convert randomly to theme colors, or \"theme-lum\" also to vary luminance", NULL, "original"), fonttype(true, "-fonts", "string", 0, "use \"windows\" fonts (default), \"native\" fonts, or convert to the \"theme\" font", NULL, "windows"), embeddedfonts(true, "-embed", "string", 0, "embed fonts, specified as a comma-separated list of EOT-format font files", NULL, "") { ADD(colortype); ADD(fonttype); ADD(embeddedfonts); } }*options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); public: virtual void show_image(const PSImage & imageinfo); private: struct zip * outzip; // pptx file to generate (zip format) ostringstream slidef; // Contents of current slide BBox slideBBox; // Bounding box (all slides) Point center_offset; // Translation needed to center the current slide unsigned long next_id; // Next ID number for naming objects unsigned long page_images; // Number of images on the current page unsigned long total_images; // Number of images in the entire document set eotlist; // Set of EOT files to embed // OOXML requires a *lot* of boilerplate text. static const char * const xml_rels; static const char * const xml_slideLayout1_xml; static const char * const xml_slideLayout1_xml_rels; static const char * const xml_slideMaster1_xml; static const char * const xml_slideMaster1_xml_rels; static const char * const xml_theme1_xml; void create_pptx_file(const char * relname, const char * contents); void create_pptx(); void print_coords(const BBox & pathBBox); Point pathCentroid(); static Point rotate_pt_around (const Point & pt, float angle, const Point & pivot) ; static float angle_between(Point first, Point second); static void parse_xform_matrix(const float * origMatrix, bool * mirrored, float * xscale, float * yscale, float * rotation, float * xtrans, float * ytrans); void print_connections(const BBox & pathBBox); void print_color(int baseIndent, float redF, float greenF, float blueF); void print_join(); void print_dash(); enum {C_ORIGINAL, C_THEME, C_THEME_PURE} color_type; enum {F_WINDOWS, F_NATIVE, F_THEME} font_type; const char * pt2emu(float x_bp, float y_bp, long int xshift_emu=0, long int yshift_emu=0, RSString x_name="x", RSString y_name="y", bool scaleOnly=false) const; static long int bp2emu (float bp); // implemented in cpp file because it used lroundf which is not visible from h file long int xtrans (float x_bp) const { // Convert an x coordinate from PostScript to OOXML. To do // this we shift the page to the origin, center it on the // slide, and scale it from PostScript points to OOXML EMUs. BBox pageBBox = getCurrentBBox(); return bp2emu(x_bp - pageBBox.ll.x_ + center_offset.x_); } long int ytrans (float y_bp) const { // Convert a y coordinate from PostScript to OOXML. To do // this we shift the page to the origin, center it on the // slide, flip it upside down, and scale it from PostScript // points to OOXML EMUs. BBox pageBBox = getCurrentBBox(); float pageHeight = pageBBox.ur.y_ - pageBBox.ll.y_; return bp2emu(pageHeight - (y_bp - pageBBox.ll.y_) + center_offset.y_); } static unsigned char panose2pitch (const unsigned int * panose_vals); void get_font_props(const TextInfo & textinfo, RSString * typeface, RSString * panose, bool * isBold, bool * isItalic, unsigned char * pitchFamily); TextInfo * eot2texinfo(string eotfilename); // Describe a theme color and modifications to it. class ThemeColor { public: string name; // Color name unsigned int lum; // New luminance (thousandths of a %) ThemeColor(string tName="unknown", unsigned int tLum=~0U) { name = tName; lum = tLum; } }; // Map an RGB value to a theme color. typedef KeyValuePair RGB2Theme; #ifndef BUGGYGPP Mapper rgb2theme; #else Mapper rgb2theme; #endif // Map a PostScript core font to a Windows name + PANOSE characterization. #ifndef BUGGYGPP Mapper ps2win; #else Mapper ps2win; #endif }; #endif pstoedit-3.62/src/drvrib.cpp0000644000175500010010000000770612137224253013010 00000000000000/* drvrib.cpp - Driver to output RenderMan RIB polygons - written by Glenn M. Lewis - 6/18/96 http://www.gmlewis.com/> Based on... drvSAMPL.cpp : This file is part of pstoedit Skeleton for the implementation of new backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvrib.h" #include I_fstream #include I_stdio #include I_stdlib drvRIB::derivedConstructor(drvRIB): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): // Constructor constructBase { // driver specific initializations // and writing of header to output file outf << "##RenderMan RIB-Structure 1.0" << endl; outf << "version 3.03" << endl; outf << "AttributeBegin" << endl; } drvRIB::~drvRIB() { // driver specific deallocations // and writing of trailer to output file outf << "AttributeEnd" << endl; options=0; } void drvRIB::print_coords() { outf << "PointsGeneralPolygons[1]" << endl; outf << "[" << numberOfElementsInPath() << "]" << endl << "["; for (unsigned int i = 0; i < numberOfElementsInPath(); i++) { outf << i << " "; } outf << "]" << endl << "\"P\" ["; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); // outf << "\t\tmoveto "; outf << p.x_ + x_offset << " " << p.y_ + y_offset << " 0 "; } break; case lineto:{ const Point & p = elem.getPoint(0); // outf << "\t\tlineto "; outf << p.x_ + x_offset << " " << p.y_ + y_offset << " 0 "; } break; case closepath: // Not supported // outf << "\t\tclosepath "; break; case curveto:{ // Not supported } break; default: errf << "\t\tFatal: unexpected case in drvpdf " << endl; abort(); break; } outf << endl; } outf << "]" << endl; } void drvRIB::open_page() { // outf << "Opening page: " << currentPageNumber << endl; } void drvRIB::close_page() { // outf << "Closing page: " << (currentPageNumber) << endl; } void drvRIB::show_path() { outf << "Color " << currentR() << " " << currentG() << " " << currentB() << endl; print_coords(); } static DriverDescriptionT < drvRIB > D_rib("rib", "RenderMan Interface Bytestream", "","rib", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges false, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvrib.h0000644000175500010010000000262612137224256012454 00000000000000#ifndef __drvRIB_h #define __drvRIB_h /* drvrib.h - header for RenderMan RIB polygon driver - written by Glenn M. Lewis - 6/18/96 http://www.gmlewis.com/> Based on... drvsampl.h : This file is part of pstoedit Class declaration for a sample output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvRIB : public drvbase { public: derivedConstructor(drvRIB); ~drvRIB(); class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" private: void print_coords(); }; #endif pstoedit-3.62/src/drvrpl.cpp0000644000175500010010000000712512137224253013024 00000000000000/* drvrpl.cpp - Driver to output Real3D RPL polygons - written by Glenn M. Lewis - 6/18/96 http://www.gmlewis.com/> Based on... drvSAMPL.cpp : This file is part of pstoedit Skeleton for the implementation of new backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvrpl.h" #include I_fstream #include I_stdio #include I_stdlib drvRPL::derivedConstructor(drvRPL): constructBase { // driver specific initializations // and writing of header to output file } drvRPL::~drvRPL() { // driver specific deallocations // and writing of trailer to output file options=0; } void drvRPL::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << p.x_ + x_offset << " 0 " << p.y_ + y_offset << endl; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << p.x_ + x_offset << " 0 " << p.y_ + y_offset << endl; } break; case closepath: // Not supported break; case curveto:{ // Not supported } break; default: errf << "\t\tFatal: unexpected case in drvpdf " << endl; abort(); break; } } outf << "0 1 0 ( dvect )" << endl; outf << numberOfElementsInPath() << " ( count )" << endl; outf << currentR() << " " << currentG() << " " << currentB() << " ( RGBA )" << endl; outf << "\"polygon\" ( name )" << endl; outf << "0 ( flags )" << endl; outf << "\"CEND\"" << endl; outf << "C_POLYGON DROP" << endl << endl; } void drvRPL::open_page() { // outf << "Opening page: " << currentPageNumber << endl; } void drvRPL::close_page() { // outf << "Closing page: " << (currentPageNumber) << endl; } void drvRPL::show_path() { print_coords(); } static DriverDescriptionT < drvRPL > D_rpl("rpl", "Real3D Programming Language Format","", "rpl", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges false, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvrpl.h0000644000175500010010000000300312137224257012464 00000000000000#ifndef __drvRPL_h #define __drvRPL_h /* drvrpl.h - header for Real3D RPL polygon driver - written by Glenn M. Lewis - 6/18/96 http://www.gmlewis.com/> Based on... drvsampl.h : This file is part of pstoedit Class declaration for a sample output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvRPL : public drvbase { public: derivedConstructor(drvRPL); // (const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvRPL(); // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" private: void print_coords(); }; #endif pstoedit-3.62/src/drvsampl.cpp0000644000175500010010000002167712137224254013354 00000000000000/* drvSAMPL.cpp : This file is part of pstoedit Skeleton for the implementation of new backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvsampl.h" #include I_fstream #include I_stdio #include I_stdlib // #include "version.h" drvSAMPL::derivedConstructor(drvSAMPL): //(const char * driveroptions_p,ostream & theoutStream,ostream & theerrStream): // Constructor constructBase, imgcount(0) { // driver specific initializations // and writing of header to output file outf << "Sample header \n"; // float scale; // float x_offset; // float y_offset; } drvSAMPL::~drvSAMPL() { // driver specific deallocations // and writing of trailer to output file outf << "Sample trailer \n"; options=0; } void drvSAMPL::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); outf << "\t\tmoveto "; outf << p.x_ + x_offset << " " << /* currentDeviceHeight - */ p.y_ + y_offset << " "; } break; case lineto:{ const Point & p = elem.getPoint(0); outf << "\t\tlineto "; outf << p.x_ + x_offset << " " << /* currentDeviceHeight - */ p.y_ + y_offset << " "; } break; case closepath: outf << "\t\tclosepath "; break; case curveto:{ outf << "\t\tcurveto "; for (unsigned int cp = 0; cp < 3; cp++) { const Point & p = elem.getPoint(cp); outf << (p.x_ + x_offset) << " " << /* currentDeviceHeight - */ (p.y_ + y_offset) << " "; } } break; default: errf << "\t\tFatal: unexpected case in drvsample " << endl; abort(); break; } outf << endl; } } void drvSAMPL::open_page() { outf << "Opening page: " << currentPageNumber << endl; } void drvSAMPL::close_page() { outf << "Closing page: " << (currentPageNumber) << endl; } void drvSAMPL::show_text(const TextInfo & textinfo) { outf << "Text String : " << textinfo.thetext.value() << endl; outf << '\t' << "X " << textinfo.x << " Y " << textinfo.y << endl; outf << '\t' << "X_END " << textinfo.x_end << " Y_END " << textinfo.y_end << endl; outf << '\t' << "currentFontName: " << textinfo.currentFontName.value() << endl; outf << '\t' << "is_non_standard_font: " << textinfo.is_non_standard_font << endl; outf << '\t' << "currentFontFamilyName: " << textinfo.currentFontFamilyName.value() << endl; outf << '\t' << "currentFontFullName: " << textinfo.currentFontFullName.value() << endl; outf << '\t' << "currentFontWeight: " << textinfo.currentFontWeight.value() << endl; outf << '\t' << "currentFontSize: " << textinfo.currentFontSize << endl; outf << '\t' << "currentFontAngle: " << textinfo.currentFontAngle << endl; outf << '\t' << "glyphnames: " << textinfo.glyphnames << endl; outf << '\t' << "currentR: " << textinfo.currentR << endl; outf << '\t' << "currentG: " << textinfo.currentG << endl; outf << '\t' << "currentB: " << textinfo.currentB << endl; const float *CTM = getCurrentFontMatrix(); outf << '\t' << "currentFontMatrix: ["; for (int i = 0; i < 6; i++) { outf << " " << CTM[i]; } outf << ']' << endl; } void drvSAMPL::show_path() { outf << "Path # " << currentNr(); if (isPolygon()) outf << " (polygon): " << endl; else outf << " (polyline): " << endl; outf << "\tcurrentShowType: "; switch (currentShowType()) { case drvbase::stroke: outf << "stroked"; break; case drvbase::fill: outf << "filled"; break; case drvbase::eofill: outf << "eofilled"; break; default: // cannot happen outf << "unexpected ShowType " << (int) currentShowType(); break; } outf << endl; outf << "\tcurrentLineWidth: " << currentLineWidth() << endl; outf << "\tcurrentR: " << currentR() << endl; outf << "\tcurrentG: " << currentG() << endl; outf << "\tcurrentB: " << currentB() << endl; outf << "\tedgeR: " << edgeR() << endl; outf << "\tedgeG: " << edgeG() << endl; outf << "\tedgeB: " << edgeB() << endl; outf << "\tfillR: " << fillR() << endl; outf << "\tfillG: " << fillG() << endl; outf << "\tfillB: " << fillB() << endl; outf << "\tcurrentLineCap: " << currentLineCap() << endl; outf << "\tdashPattern: " << dashPattern() << endl; outf << "\tPath Elements 0 to " << numberOfElementsInPath() - 1 << endl; print_coords(); } void drvSAMPL::show_rectangle(const float llx, const float lly, const float urx, const float ury) { outf << "Rectangle ( " << llx << "," << lly << ") (" << urx << "," << ury << ") equivalent to:" << endl; // just do show_path for a first guess show_path(); } void drvSAMPL::show_image(const PSImage & imageinfo) { if (outBaseName == "") { errf << "images cannot be handled via standard output. Use an output file" << endl; return; } if (imageinfo.isFileImage) { outf << "" << endl; } else { assert (0 && "should not happen since drivers supports PNG file images"); #if 0 char *PNGoutFullFileName = new char[strlen(outDirName) + strlen(outBaseName) + 21]; sprintf(PNGoutFullFileName, "%s%s%02d.png", outDirName, outBaseName, imgcount++); outf << PNGoutFullFileName << endl; // cout << outBaseName << endl; // cout << outDirName << endl; char *title = new char[strlen(inFileName.value()) + 100]; sprintf(title, "raster image number %d from input file %s", imgcount, inFileName.value()); char generator[100]; sprintf(generator, "pstoedit version: %s", version); imageinfo.writePNGImage(PNGoutFullFileName, inFileName.value(), title, generator); delete[]title; delete[]PNGoutFullFileName; outf << "Image:\n"; outf << "\ttype: "; switch (imageinfo.type) { case colorimage: outf << " colorimage\n"; break; case normalimage: outf << " normalimage\n"; break; case imagemask: outf << " imagemask\n"; break; default: break; } outf << "\theight: " << imageinfo.height << endl; outf << "\twidth: " << imageinfo.width << endl; outf << "\tbits/component: " << imageinfo.bits << endl; outf << "\tnumber of color components: " << imageinfo.ncomp << endl; outf << "\timageMatrix: "; { for (unsigned int i = 0; i < 6; i++) { outf << imageinfo.imageMatrix[i] << ' '; } } outf << endl; outf << "\tnormalizedImageCurrentMatrix: "; { for (unsigned int i = 0; i < 6; i++) { outf << imageinfo.normalizedImageCurrentMatrix[i] << ' '; } } outf << endl; outf << "\tpolarity: " << imageinfo.polarity << endl; { for (unsigned int i = 0; i < imageinfo.nextfreedataitem; i++) { if (!(i % 8)) outf << "\n\t " << i << ":\t"; outf << (int) imageinfo.data[i] << ' '; } } outf << endl; #endif } } static DriverDescriptionT < drvSAMPL > D_sampl("sample", "sample driver: if you don't want to see this, uncomment the corresponding line in makefile and make again", "this is a long description for the sample driver","sam", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. true, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::png, // support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file true /*clipping */ ); pstoedit-3.62/src/drvsampl.h0000644000175500010010000000315612137224257013014 00000000000000#ifndef __drvSAMPL_h #define __drvSAMPL_h /* drvsampl.h : This file is part of pstoedit Class declaration for a sample output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvSAMPL : public drvbase { public: derivedConstructor(drvSAMPL); ~drvSAMPL(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < int, IntValueExtractor >sampleoption; DriverOptions(): sampleoption(true,"-sampleoption","integer",0,"just an example",0,99) { ADD(sampleoption); } }*options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); public: virtual void show_image(const PSImage & imageinfo); private: void print_coords(); int imgcount; }; #endif pstoedit-3.62/src/drvsk.cpp0000644000175500010010000002211312137224254012637 00000000000000/* drvSK.cpp */ /* Copyright (C) 1999 by Bernhard Herzog This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #include #include I_stdlib #include #include I_iomanip #include I_strstream #include "drvsk.h" #include "base64writer.h" #ifndef PI #define PI 3.14159265358979323846264338327 #endif drvSK::derivedConstructor(drvSK) : constructBase, id(0) { outf << "##Sketch 1 0\n"; outf << "document()\n"; outf << "layer('Layer 1',1,1,0,0)\n"; outf << "guess_cont()\n"; } drvSK::~drvSK() { options=0; } void drvSK::print_coords() { int first_subpath = 1; Point start; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto: { if (!first_subpath) { outf << "bn()\n"; } first_subpath = 0; start = elem.getPoint(0); outf << "bs(" << start.x_ << "," << start.y_ << ",0)\n"; } break; case lineto: { const Point & p = elem.getPoint(0); outf << "bs(" << p.x_ << "," << p.y_ << ",0)\n"; } break; case closepath: { outf << "bs(" << start.x_ << "," << start.y_ << ",0)\n"; outf << "bC()\n"; } break; case curveto: { const Point & p1 = elem.getPoint(0); const Point & p2 = elem.getPoint(1); const Point & p3 = elem.getPoint(2); outf << "bc(" << p1.x_ << "," << p1.y_ << "," << p2.x_ << "," << p2.y_ << "," << p3.x_ << "," << p3.y_ << ",0)\n"; } break; default: cerr << "\t\tFatal: unexpected case in drvsk\n"; abort(); break; } } } // ignore open_page and close_page since sketch supports only a single // page // XXX multiple pages could be faked by putting each page on its own layer. void drvSK::open_page() { } void drvSK::close_page() { } static void save_solid_fill(ostream & outf, float r, float g, float b) { outf << "fp((" << r << "," << g << "," << b << "))\n"; } static void save_line(ostream & outf, float r, float g, float b, float width, int cap, int join, const char *dash_pattern_string) { DashPattern dash_pattern(dash_pattern_string); outf << "lp((" << r << "," << g << "," << b << "))\n"; if (width > 0) outf << "lw(" << width << ")\n"; if (cap != 0) outf << "lc(" << cap + 1 << ")\n"; if (join != 0) outf << "lj(" << join << ")\n"; if (dash_pattern.nrOfEntries > 0) { if (width <= 0) width = 1.0; int num = dash_pattern.nrOfEntries; num = num * (num % 2 + 1); outf << "ld((" << dash_pattern.numbers[0] / width; for (int i = 1; i < num; i++) { outf << "," << dash_pattern.numbers[i] / width; } outf << "))\n"; } } static void save_string(ostream & outf, size_t len, const char *str) { outf << '"'; while (len-->0) { int c = *str++ & 0xFF; if (c >= 0 && c <= 127 && isprint(c)) { if (c == '"') outf << '\\'; outf << char (c); } else { outf << '\\' << oct << setw(3) << setfill('0') << c; } } outf << '"'; } void drvSK::show_text(const TextInfo & info) { save_solid_fill(outf, fillR(), fillG(), fillB()); outf << "Fn(\"" << info.currentFontName.value() << "\")\n"; outf << "Fs(" << info.currentFontSize << ")\n"; outf << "txt("; save_string(outf, info.thetext.length(), info.thetext.value()); outf << ",("; if (info.currentFontAngle) { double angle = info.currentFontAngle * PI / 180.0; double c = cos(angle); double s = sin(angle); outf << c << "," << s << "," << -s << "," << c << ","; } outf << info.x << ", " << info.y << "))\n"; } void drvSK::show_path() { switch (currentShowType()) { case drvbase::stroke: save_line(outf, currentR(), currentG(), currentB(), currentLineWidth(), currentLineCap(), currentLineJoin(), dashPattern()); outf << "fe()\n"; break; case drvbase::fill: //cerr << "fill treated as eofill" << endl; // fall through into next case... case drvbase::eofill: save_solid_fill(outf, fillR(), fillG(), fillB()); //cerr << "currentLineWidth =" << currentLineWidth() << endl; if (pathWasMerged()) { save_line(outf, edgeR(), edgeG(), edgeB(), currentLineWidth(), currentLineCap(), currentLineJoin(), dashPattern()); //outf << "#merged\n"; } else outf << "le()\n"; break; default: // cannot happen cerr << "unexpected ShowType " << (int) currentShowType() << '\n'; break; } outf << "b()\n"; print_coords(); } #if 0 void drvSK::show_rectangle(const float llx, const float lly, const float urx, const float ury) { // according to Vladimir Eltsov this is incomplete: // // For a long time pstoedit is shipped with incomplete implementation of rectangles in the // removes rectangle support from drvsk (so that the default path // representation is used), which I have found to produce much more useful // conversion. // outf << "r(" << urx - llx << ",0,0," << ury - lly << "," << llx << "," << lly << ")\n"; } #endif bool drvSK::pathsCanBeMerged(const PathInfo & path1, const PathInfo & path2) const { const PathInfo *first; const PathInfo *last; if (path1.nr < path2.nr) { first = &path1; last = &path2; } else { first = &path2; last = &path1; } if ((first->currentShowType == fill || first->currentShowType == eofill) && last->currentShowType == stroke && first->numberOfElementsInPath == last->numberOfElementsInPath) { for (unsigned int i = 0; i < last->numberOfElementsInPath; i++) { const basedrawingelement *bd1 = first->path[i]; const basedrawingelement *bd2 = last->path[i]; if (!(*bd1 == *bd2)) return false; } // cerr << "Merge: first " << first->nr // << (first->currentShowType == stroke ? " stroke" : " fill") // << ", last " << last->nr // << (last->currentShowType == stroke ? " stroke" : " fill") // << endl; return true; } else { return false; } } void drvSK::show_image(const PSImage & imageinfo) { if (imageinfo.ncomp > 3) { cerr << "image with " << imageinfo.ncomp << " components not supported\n"; return; } C_ostrstream ppm; switch (imageinfo.type) { case colorimage: if (imageinfo.ncomp != 3 || imageinfo.bits != 8) { cerr << "color images must have 8 bits/component " "and 3 components\n"; cerr << "(image has " << imageinfo.ncomp << " with " << imageinfo.bits << " bits/component)\n"; return; } ppm << "P6\n"; break; case normalimage: if (imageinfo.bits != 8) { cerr << "gray images must have 8 bits/component "; cerr << "(image has " << imageinfo.bits << " bits/component)\n"; return; } ppm << "P5\n"; break; case imagemask: ppm << "P4\n"; break; default: return; } ppm << imageinfo.width << " " << imageinfo.height << '\n'; if (imageinfo.type != imagemask) { // bug according to Jeff Dairiki ppm << imageinfo.bits << '\n'; ppm << ((1 << imageinfo.bits) -1) << '\n'; } int imageid = getid(); outf << "bm(" << imageid << ")\n"; { Base64Writer base64writer(outf); #ifdef USE_NEWSTRSTREAM string temp = ppm.str(); // basic_string, std::allocator > temp = ppm.str(); const unsigned char * ppmdata = (const unsigned char*) temp.data(); (void)base64writer.write_base64( ppmdata, temp.size()); #else (void)base64writer.write_base64( (unsigned char *) ppm.str(), ppm.pcount()); ppm.rdbuf()->freeze(0); #endif int bytes_left = imageinfo.nextfreedataitem; unsigned char *data = imageinfo.data; while (bytes_left) { int written = base64writer.write_base64(data, bytes_left); data += written; bytes_left -= written; } // now done in dtor -- base64writer.close_base64(); } outf << "-\n"; outf << "im(("; outf << imageinfo.normalizedImageCurrentMatrix[0] << ","; outf << imageinfo.normalizedImageCurrentMatrix[1] << ","; outf << -imageinfo.normalizedImageCurrentMatrix[2] << ","; outf << -imageinfo.normalizedImageCurrentMatrix[3] << ","; outf << (imageinfo.normalizedImageCurrentMatrix[2] * imageinfo.height + imageinfo.normalizedImageCurrentMatrix[4]) << ","; outf << (imageinfo.normalizedImageCurrentMatrix[3] * imageinfo.height + imageinfo.normalizedImageCurrentMatrix[5]); outf << ")," << imageid << ")\n"; } static DriverDescriptionT < drvSK > D_sampl("sk", "Sketch Format","", "sk", true, // backend supports subpaths true, // backend supports curves true, // backend supports elements which are filled and stroked true, // backend supports text DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, false, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvsk.h0000644000175500010010000000260612137224257012314 00000000000000#ifndef __drvSK_h #define __drvSK_h /* drvsk.h */ /* Copyright (C) 1999 by Bernhard Herzog This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvSK : public drvbase { public: derivedConstructor(drvSK); ~drvSK(); class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; #include "drvfuncs.h" // void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); virtual void show_image(const PSImage & imageinfo); protected: virtual bool pathsCanBeMerged(const PathInfo &, const PathInfo &) const; private: void print_coords(); int id; int getid() { return id++; } }; #endif pstoedit-3.62/src/drvsvm.cpp0000644000175500010010000010021012137224254013022 00000000000000/* drvsvm.cpp : This file is part of pstoedit Backend for OpenOffice metafile (SVM - StarView metafile) Copyright (C) 2005 Thorsten Behrens (tbehrens at acm.org) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvsvm.h" #include "svm_actions.h" #include I_string_h #include I_fstream #include I_stdio #include I_stdlib #include #include #include /* TODO section: * * Check the following example files again: * - largetextspace.ps * - colrtest.ps * - images * - bounding box */ /* Most of the information necessary to read/write SVM files is * available only by reading the code - for the parts used here, this * is vcl/inc/metaact.hxx, vcl/inc/font.hxx, vcl/inc/vclenum.hxx and * the corresponding source files in vcl/source/gdi. The actual * reading/writing of SVMs resides in vcl/source/gdi/gdimtf.cxx (all * files relative to the OpenOffice.org source tree, of course). */ namespace { // const char description[] = "generated by SVM backend of pstoedit\0input\0\0"; template< typename T > void writePod(ostream& outf, const T value) { outf.write( const_cast( reinterpret_cast(&value)), sizeof(value) ); } #ifdef _BIG_ENDIAN // taken from OpenOffice.org, sal/inc/osl/endian.h (LGPLed) # define MAKEWORD(bl, bh) ((drvSVM::uInt16)((bl) & 0xFF) | (((drvSVM::uInt16)(bh) & 0xFF) << 8)) # define LOBYTE(w) ((drvSVM::uInt8)((drvSVM::uInt16)(w) & 0xFF)) # define HIBYTE(w) ((drvSVM::uInt8)(((drvSVM::uInt16)(w) >> 8) & 0xFF)) # define MAKEDWORD(wl, wh) ((drvSVM::uInt32)((wl) & 0xFFFF) | (((drvSVM::uInt32)(wh) & 0xFFFF) << 16)) # define LOWORD(d) ((drvSVM::uInt16)((drvSVM::uInt32)(d) & 0xFFFF)) # define HIWORD(d) ((drvSVM::uInt16)(((drvSVM::uInt32)(d) >> 16) & 0xFFFF)) # define SWAPWORD(w) MAKEWORD(HIBYTE(w),LOBYTE(w)) // have to override >8 bit writes, since SVM is little-endian - // note further that we _don't_ need to override the signed types, // too - integral promotion does happen for normal method lookup // (compared to choosing a template specialization) void writePod(ostream& outf, drvSVM::uInt16 value) { value = SWAPWORD(value); outf.write( const_cast( reinterpret_cast(&value)), sizeof(drvSVM::uInt16) ); } void writePod(ostream& outf, drvSVM::uInt32 value) { value = MAKEDWORD(SWAPWORD(HIWORD(value)), SWAPWORD(LOWORD(value))); outf.write( const_cast( reinterpret_cast(&value)), sizeof(drvSVM::uInt32) ); } #endif static void fakeVersionCompat(ostream& outf, drvSVM::uInt16 versionId, drvSVM::uInt32 len) { writePod(outf, versionId); writePod(outf, len); } } drvSVM::derivedConstructor(drvSVM) : constructBase, headerPos(0), actionCount(0), isDriverOk(close_output_file_and_reopen_in_binary_mode()) { // setup driver base class const char *const defaultfontname = "System"; setCurrentFontName(defaultfontname, false /* is standard font */ ); x_offset = 0.0; y_offset = currentDeviceHeight; // need to mirror in y // write SVM file header // --------------------- outf << "VCLMTF"; fakeVersionCompat(outf, 1, 0x31); // stream compress mode writePod(outf, (uInt32)0); headerPos = outf.tellp(); // pref mapmode (place holder, gets written again in destructor) fakeVersionCompat(outf, 1, 0x1b); writePod(outf, (uInt16)0); // map unit: 100th mm writePod(outf, (Int32)0); // origin x writePod(outf, (Int32)0); // origin y writePod(outf, (Int32)1); // scale x numerator writePod(outf, (Int32)1); // scale x denominator writePod(outf, (Int32)1); // scale y numerator writePod(outf, (Int32)1); // scale y denominator writePod(outf, (uInt8)0); // 'simple' mapmode flag // pref size writePod(outf, (Int32)0); // prefsize x writePod(outf, (Int32)0); // prefsize y // action count writePod(outf, (uInt32)0); // set PostScript-compatible text alignment writePod(outf, (uInt16)META_TEXTALIGN_ACTION); fakeVersionCompat(outf, 1, 0); writePod(outf, (uInt16)1); // alignment: baseline ++actionCount; } drvSVM::~drvSVM() { const BBox& psBBox( getCurrentBBox() ); // write out pref mapmode (can only do that now reliably, as // during construction, input might not have been fully parsed) outf.seekp(headerPos); if (Verbose()) errf << "calculated Bounding Box: " << l_transX(psBBox.ll.x_) << " " << l_transY(psBBox.ur.y_) << " " << l_transX(psBBox.ur.x_) << " " << l_transY(psBBox.ll.y_) << endl; // pref mapmode fakeVersionCompat(outf, 1, 0x1b); writePod(outf, (uInt16)0); // map unit: 100th mm writePod(outf, (Int32)l_transX(psBBox.ll.x_)); // origin x writePod(outf, (Int32)l_transY(psBBox.ur.y_)); // origin y // convert between pt and 100th mm (factor 35.14598) writePod(outf, (Int32)3514598); // scale x numerator writePod(outf, (Int32)100000); // scale x denominator writePod(outf, (Int32)3514598); // scale y numerator writePod(outf, (Int32)100000); // scale y denominator writePod(outf, (uInt8)0); // clear 'simple' mapmode flag // pref size writePod(outf, (Int32)abs( l_transX(psBBox.ll.x_) - l_transX(psBBox.ur.x_)) + 1 ); // prefsize x writePod(outf, (Int32)abs( l_transY(psBBox.ll.y_) - l_transY(psBBox.ur.y_)) + 1 ); // prefsize y // action count writePod(outf, (uInt32)actionCount); } void drvSVM::setAttrs( LineColorAction eLineAction, FillColorAction eFillAction ) { // write MetaLineColorAction writePod(outf, (uInt16)META_LINECOLOR_ACTION); fakeVersionCompat(outf, 1, 0); writePod(outf, (uInt8)(edgeB()*255 + .5)); writePod(outf, (uInt8)(edgeG()*255 + .5)); writePod(outf, (uInt8)(edgeR()*255 + .5)); writePod(outf,(uInt8)0); // dummy switch( eLineAction ) { case lineColor: // switch on line color writePod(outf, (uInt8)1); break; case noLineColor: // switch off line color writePod(outf, (uInt8)0); break; default: assert (0 && "Unknown line color action"); break; } ++actionCount; // write MetaFillColorAction writePod(outf, (uInt16)META_FILLCOLOR_ACTION); fakeVersionCompat(outf, 1, 0); writePod(outf, (uInt8)(fillB()*255 + .5)); writePod(outf, (uInt8)(fillG()*255 + .5)); writePod(outf, (uInt8)(fillR()*255 + .5)); writePod(outf,(uInt8)0); // dummy switch( eFillAction ) { case fillColor: // switch on fill color writePod(outf, (uInt8)1); break; case noFillColor: // switch off fill color writePod(outf, (uInt8)0); break; default: assert (0 && "Unknown fill color action"); break; } ++actionCount; } void drvSVM::ClipPath(cliptype /* clipmode*/) { } void drvSVM::Save() { } void drvSVM::Restore() { } void drvSVM::close_page() { // NOOP in drvsvm } void drvSVM::open_page() { // NOOP in drvsvm } void drvSVM::write_path( VectorOfVectorOfPoints const& polyPolygon, VectorOfVectorOfFlags const& polyPolygonFlags ) { // write MetaPolyPolygonAction writePod(outf, (uInt16)META_POLYPOLYGON_ACTION); fakeVersionCompat(outf, 2, 0); const std::size_t numPolies( polyPolygon.size() ); // write polyPolygon.size() empty polygons writePod(outf, (uInt16)numPolies); {for( std::size_t i=0; i( const_cast( &polyPolygon[i][0] )), sizeof(IntPoint)*polyPolygon[i].size() ); writePod(outf, (uInt8)1); // flag: have flag array outf.write( reinterpret_cast( const_cast( &polyPolygonFlags[i][0] )), sizeof(uInt8)*polyPolygonFlags[i].size() ); }} ++actionCount; } void drvSVM::write_polyline( VectorOfVectorOfPoints const& polyPolygon, VectorOfVectorOfFlags const& polyPolygonFlags ) { const std::size_t numPolies( polyPolygon.size() ); for( std::size_t currPoly=0; currPoly( const_cast( &polyPolygon[currPoly][0] )), sizeof(IntPoint)*polyPolygon[currPoly].size() ); writePod(outf, (uInt8)1); // flag: have flag array outf.write( reinterpret_cast( const_cast( &polyPolygonFlags[currPoly][0] )), sizeof(uInt8)*polyPolygonFlags[currPoly].size() ); ++actionCount; } } void drvSVM::show_path() { // create poly-polygon from path info // ---------------------------------- VectorOfVectorOfPoints polyPolygon; VectorOfPoints currPolygon; VectorOfVectorOfFlags polyPolygonFlags; VectorOfFlags currPolygonFlags; const unsigned int numElems(numberOfElementsInPath()); for(unsigned int n=0; n 0 ); switch (currentShowType()) { case drvbase::stroke: { setAttrs( lineColor, noFillColor ); if (need_line_info) { write_polyline( polyPolygon, polyPolygonFlags ); } else { write_path( polyPolygon, polyPolygonFlags ); } } break; case drvbase::fill: case drvbase::eofill: { if (pathWasMerged()) { setAttrs( lineColor, fillColor ); write_path( polyPolygon, polyPolygonFlags ); if (need_line_info) write_polyline( polyPolygon, polyPolygonFlags ); } else { setAttrs( noLineColor, fillColor ); write_path( polyPolygon, polyPolygonFlags ); } } break; default: assert (0 && "Unknown path show type"); break; } } void drvSVM::show_text(const TextInfo& textinfo) { if (fontchanged()) { static const char* symbolName = "symbol"; // TODO(F2): evaluate textinfo.FontMatrix, and emulate // advancements. Or: abort with error, and require user to // re-run with '-pti' given (see largetextspace.ps example). // write out MetaFontAction (selecting the new font into VCL // OutputDevice) const Int16 fontHeight = (short int) (textinfo.currentFontSize + .5); const Int16 fontAngle = (short int) (10 * textinfo.currentFontAngle + .5); Int16 fontWidth = 0; uInt16 fontWeigth = 0; // default: don't care uInt16 fontItalic = 0; // default: no italics uInt16 charSet = 0; // default: don't know charset const char* fontName = NULL; if (strstr(textinfo.currentFontWeight.value(), "Regular")) fontWeigth = 4; // semi light weight if (strstr(textinfo.currentFontWeight.value(), "Normal")) fontWeigth = 5; // normal weight if (strstr(textinfo.currentFontWeight.value(), "Medium")) fontWeigth = 6; // medium weight if (options->emulateNarrowFonts) { if (strstr(textinfo.currentFontWeight.value(), "Thin") || strstr(textinfo.currentFontName.value(), "Thin") || strstr(textinfo.currentFontFullName.value(), "Thin")) { fontWidth = fontHeight / 3; // narrow font emulation (trial and error value for Arial font) } if (strstr(textinfo.currentFontWeight.value(), "Extralight") || strstr(textinfo.currentFontName.value(), "Extralight") || strstr(textinfo.currentFontFullName.value(), "Extralight")) { fontWidth = fontHeight / 4; // narrow font emulation (trial and error value for Arial font) } if (strstr(textinfo.currentFontWeight.value(), "Ultralight") || strstr(textinfo.currentFontName.value(), "Ultralight") || strstr(textinfo.currentFontFullName.value(), "Ultralight")) { fontWidth = fontHeight / 4; // narrow font emulation (trial and error value for Arial font) } if (strstr(textinfo.currentFontWeight.value(), "Light") || strstr(textinfo.currentFontName.value(), "Light") || strstr(textinfo.currentFontFullName.value(), "Light") || strstr(textinfo.currentFontWeight.value(), "Condensed") || strstr(textinfo.currentFontName.value(), "Condensed") || strstr(textinfo.currentFontFullName.value(), "Condensed")) { fontWidth = fontHeight / 3; // narrow font emulation (trial and error value for Arial font) } } else { if (strstr(textinfo.currentFontWeight.value(), "Thin")) fontWeigth = 1; // thin if (strstr(textinfo.currentFontWeight.value(), "Extralight")) fontWeigth = 1; // thin if (strstr(textinfo.currentFontWeight.value(), "Ultralight")) fontWeigth = 2; // ultra light if (strstr(textinfo.currentFontWeight.value(), "Light") || strstr(textinfo.currentFontWeight.value(), "Condensed")) fontWeigth = 3; // light } if (strstr(textinfo.currentFontWeight.value(), "Semibold") || strstr(textinfo.currentFontName.value(), "Semibold") || strstr(textinfo.currentFontFullName.value(), "Semibold")) fontWeigth = 7; // semibold if (strstr(textinfo.currentFontWeight.value(), "Demibold") || strstr(textinfo.currentFontName.value(), "Demibold") || strstr(textinfo.currentFontFullName.value(), "Demibold")) fontWeigth = 7; // semibold if (strstr(textinfo.currentFontWeight.value(), "Bold") || strstr(textinfo.currentFontName.value(), "Bold") || strstr(textinfo.currentFontFullName.value(), "Bold")) fontWeigth = 8; // bold if (strstr(textinfo.currentFontWeight.value(), "Extrabold") || strstr(textinfo.currentFontName.value(), "Extrabold") || strstr(textinfo.currentFontFullName.value(), "Extrabold")) fontWeigth = 8; // bold if (strstr(textinfo.currentFontWeight.value(), "Ultrabold") || strstr(textinfo.currentFontName.value(), "Ultrabold") || strstr(textinfo.currentFontFullName.value(), "Ultrabold")) fontWeigth = 9; // ultrabold if (strstr(textinfo.currentFontWeight.value(), "Heavy") || strstr(textinfo.currentFontName.value(), "Heavy") || strstr(textinfo.currentFontFullName.value(), "Heavy")) fontWeigth = 9; // ultrabold if (strstr(textinfo.currentFontWeight.value(), "Black") || strstr(textinfo.currentFontName.value(), "Black") || strstr(textinfo.currentFontFullName.value(), "Black")) fontWeigth = 10; // black if ((strstr(textinfo.currentFontName.value(), "Italic") != NIL) || (strstr(textinfo.currentFontFullName.value(), "Italic") != NIL)) fontItalic = 2; // normal italics if ((strstr(textinfo.currentFontName.value(), "Oblique") != NIL) || (strstr(textinfo.currentFontFullName.value(), "Oblique") != NIL)) fontItalic = 1; // oblique italics if ((strstr(textinfo.currentFontFullName.value(), "Symbol") != NIL) || (strstr(textinfo.currentFontFullName.value(), "symbol") != NIL)) { charSet = 10; // symbol charset fontName = symbolName; } else { charSet = 11; // ASCII-US charset fontName = textinfo.currentFontName.value(); } // write MetaFontAction writePod(outf, (uInt16)META_FONT_ACTION); fakeVersionCompat(outf, 1, 0); // serialize Font fakeVersionCompat(outf, 2, 0); // font name const size_t stringLen = fontName != NULL ? strlen(fontName) : 0; writePod(outf, (uInt16)stringLen); outf.write(fontName,stringLen); // font style writePod(outf, (uInt16)0); // font size writePod(outf, (Int32)fontWidth); writePod(outf, (Int32)(-fontHeight)); // charset writePod(outf, (uInt16)charSet); // TODO(F3): font family writePod(outf, (uInt16)0); // font pitch writePod(outf, (uInt16)0); // font weight writePod(outf, (uInt16)fontWeigth); // font underline writePod(outf, (uInt16)0); // font strikeout writePod(outf, (uInt16)0); // font italic writePod(outf, (uInt16)fontItalic); // text language writePod(outf, (uInt16)0); // width type writePod(outf, (uInt16)0); // font orientation writePod(outf, (uInt16)fontAngle); // word line writePod(outf, (uInt8)0); // TODO(F3): detect outline mode writePod(outf, (uInt8)0); // shadow writePod(outf, (uInt8)0); // kerning writePod(outf, (uInt8)0); // relief mode writePod(outf, (uInt8)0); // CJK language writePod(outf, (uInt16)0); // vertical writing mode writePod(outf, (uInt8)0); // emphasis marks (esp. for CJK languages) writePod(outf, (uInt16)0); ++actionCount; } // write MetaTextColorAction writePod(outf, (uInt16)META_TEXTCOLOR_ACTION); fakeVersionCompat(outf, 1, 0); writePod(outf, (uInt8)(textinfo.currentB*255 + .5)); writePod(outf, (uInt8)(textinfo.currentG*255 + .5)); writePod(outf, (uInt8)(textinfo.currentR*255 + .5)); writePod(outf,(uInt8)0); // dummy ++actionCount; // write text if( textinfo.thetext.value() ) { writePod(outf, (uInt16)META_TEXT_ACTION); fakeVersionCompat(outf, 1, 0); writePod(outf, (uInt32)l_transX(textinfo.x)); writePod(outf, (uInt32)l_transY(textinfo.y)); const size_t textLen = strlen(textinfo.thetext.value()); writePod(outf, (uInt16)textLen); outf.write(textinfo.thetext.value(), textLen); writePod(outf, (uInt16)0); writePod(outf, (uInt16)textLen); // TODO(F1): SVM is Unicode-capable, yank version compat above // to 2 and write out UTF-16 string here ++actionCount; } } void drvSVM::show_image(const PSImage& image) { // first retrieve bounding box Point lowerLeft, upperRight; image.getBoundingBox(lowerLeft, upperRight); const Int32 width = abs(l_transX(upperRight.x_) - l_transX(lowerLeft.x_)); const Int32 height = abs(l_transY(upperRight.y_) - l_transY(lowerLeft.y_)); // calc long-padded size of scanline const long int scanlineLen = ((width * 3) + 3) & ~3L; const long int maskScanlineLen = ((((width + 7) & ~7L) >> 3L) + 3) & ~3L; // now lets get some mem unsigned char* const output = new unsigned char[scanlineLen * height]; unsigned char* const outputMask = new unsigned char[maskScanlineLen * height]; // setup inverse transformation matrix const float matrixScale(image.normalizedImageCurrentMatrix[0] * image.normalizedImageCurrentMatrix[3] - image.normalizedImageCurrentMatrix[2] * image.normalizedImageCurrentMatrix[1]); const float inverseMatrix[] = { image.normalizedImageCurrentMatrix[3] / matrixScale, -image.normalizedImageCurrentMatrix[1] / matrixScale, -image.normalizedImageCurrentMatrix[2] / matrixScale, image.normalizedImageCurrentMatrix[0] / matrixScale, (image.normalizedImageCurrentMatrix[2] * image.normalizedImageCurrentMatrix[5] - image.normalizedImageCurrentMatrix[4] * image.normalizedImageCurrentMatrix[3]) / matrixScale, (image.normalizedImageCurrentMatrix[4] * image.normalizedImageCurrentMatrix[1] - image.normalizedImageCurrentMatrix[0] * image.normalizedImageCurrentMatrix[5]) / matrixScale }; if (Verbose()) errf << "Image matrix: " << "0: " << image.normalizedImageCurrentMatrix[0] << " " << "1: " << image.normalizedImageCurrentMatrix[1] << " " << "2: " << image.normalizedImageCurrentMatrix[2] << " " << "3: " << image.normalizedImageCurrentMatrix[3] << " " << "4: " << image.normalizedImageCurrentMatrix[4] << " " << "5: " << image.normalizedImageCurrentMatrix[5] << " " << endl; // TODO(F2): interpolate // TODO(P3): avoid transformation _at all_ if scale and transform suffices // TODO(P3): avoid mask for the obvious cases // now transform image for (long int y=0; y < height; y++) { unsigned char* currOutput = &output[scanlineLen * y]; unsigned char* currMaskOutput = &outputMask[maskScanlineLen * y] - 1; for (long int x=0; x < width; x++) { // now transform from device coordinate space to image space const Point& currPoint( Point(x + lowerLeft.x_, y + lowerLeft.y_).transform(inverseMatrix) ); // round to integers const long int sourceX = (long int) (currPoint.x_ + .5); const long int sourceY = (long int) (currPoint.y_ + .5); // is the pixel within source bitmap bounds? if (sourceX >= 0L && (unsigned long) sourceX < image.width && sourceY >= 0L && (unsigned long) sourceY < image.height) { // okay, fetch source pixel value into // RGB triplet unsigned char r(255), g(255), b(255), c, m, y, k; // how many components? switch (image.ncomp) { case 1: r = g = b = image.getComponent(sourceX, sourceY, 0); break; case 3: r = image.getComponent(sourceX, sourceY, 0); g = image.getComponent(sourceX, sourceY, 1); b = image.getComponent(sourceX, sourceY, 2); break; case 4: c = image.getComponent(sourceX, sourceY, 0); m = image.getComponent(sourceX, sourceY, 1); y = image.getComponent(sourceX, sourceY, 2); k = image.getComponent(sourceX, sourceY, 3); // account for key c += k; m += k; y += k; // convert color r = 255 - c; g = 255 - m; b = 255 - y; break; default: assert (0 && "Unexpected bitmap format"); break; } // set color triple *currOutput++ = b; *currOutput++ = g; *currOutput++ = r; if( (x & 7L) == 0 ) ++currMaskOutput; // set mask to opaque *currMaskOutput &= ~(1L << (7L - (x & 7L))); } else { // pixel outside source bitmap bounds - set to // white/transparent *currOutput++ = 255; *currOutput++ = 255; *currOutput++ = 255; if( (x & 7L) == 0 ) ++currMaskOutput; // set mask to transparent *currMaskOutput |= 1L << (7L - (x & 7L)); } } } // write BitmapEx action writePod(outf, (uInt16)META_BMPEXSCALE_ACTION); fakeVersionCompat(outf, 1, 0); // write bitmap // ------------ // file header writePod(outf, (uInt16)0x4D42); writePod(outf, (uInt32)(14 + 40 + scanlineLen*height)); writePod(outf, (uInt16)0); writePod(outf, (uInt16)0); writePod(outf, (uInt32)14 + 40); // info header writePod(outf, (uInt32)40); writePod(outf, (uInt32)width); writePod(outf, (uInt32)height); writePod(outf, (uInt16)1); writePod(outf, (uInt16)24); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); // actual bitmap data outf.write( (char*)output, scanlineLen*height ); // magics writePod(outf, (uInt32)0x25091962); writePod(outf, (uInt32)0xACB20201); writePod(outf, (uInt8)2); // bitmap with mask flag // write mask bitmap // ----------------- // file header writePod(outf, (uInt16)0x4D42); writePod(outf, (uInt32)(14 + 40 + 8 + maskScanlineLen*height)); writePod(outf, (uInt16)0); writePod(outf, (uInt16)0); writePod(outf, (uInt32)14 + 40 + 8); // info header writePod(outf, (uInt32)40); writePod(outf, (uInt32)width); writePod(outf, (uInt32)height); writePod(outf, (uInt16)1); writePod(outf, (uInt16)1); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)0); writePod(outf, (uInt32)2); writePod(outf, (uInt32)2); // bitmap palette: black and white writePod(outf, (uInt32)0); writePod(outf, (uInt32)0x00FFFFFF); // actual bitmap data outf.write( (char*)outputMask, maskScanlineLen*height ); // output position writePod(outf, (Int32)l_transX(lowerLeft.x_)); writePod(outf, (Int32)l_transY(upperRight.y_)); // output scale writePod(outf, (Int32)width); writePod(outf, (Int32)height); ++actionCount; delete[] output; delete[] outputMask; } static DriverDescriptionT < drvSVM > D_svm("svm", "StarView/OpenOffice.org metafile", "StarView/OpenOffice.org metafile, readable from OpenOffice.org 1.0/StarOffice 6.0 and above.", "svm", true, // backend supports subpathes true, // backend does support curves true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::memoryeps, // no support for PNG file images DriverDescription::normalopen, // we open output file ourselves false, // if format supports multiple pages in one file (DEFINETELY not) true // clipping ); pstoedit-3.62/src/drvsvm.h0000644000175500010010000000650512137224257012506 00000000000000#ifndef __drvsvm_h__ #define __drvsvm_h__ /* drvsvm.h : This file is part of pstoedit Class declaration for the SVM (StarView metafile) output driver. The implementation can be found in drvsvm.cpp Copyright (C) 2005 Thorsten Behrens (tbehrens at acm.org) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #include "genericints.h" #include #include class drvSVM : public drvbase { public: // lifetime derivedConstructor(drvSVM); // macrofied Constructor ~drvSVM(); class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor> mapToArial; OptionT < bool, BoolTrueExtractor> emulateNarrowFonts; DriverOptions() : mapToArial(true,"-m",0,0,"map to Arial",0,false), emulateNarrowFonts(true,"-nf",0,0,"emulate narrow fonts",0,false) { ADD(mapToArial); ADD(emulateNarrowFonts); } } * options; // overriding virtual base class methods // ------------------------------------- virtual void ClipPath(cliptype clipmode); virtual void Save(); virtual void Restore(); virtual void show_image(const PSImage & imageinfo); virtual bool driverOK() const { return isDriverOk; } typedef GenericInts::Int<32>::signedtype Int32; typedef GenericInts::Int<32>::unsignedtype uInt32; typedef GenericInts::Int<16>::signedtype Int16; typedef GenericInts::Int<16>::unsignedtype uInt16; typedef GenericInts::Int< 8>::signedtype Int8; typedef GenericInts::Int< 8>::unsignedtype uInt8; // include _essential_ overrides (also adds a 'private' declaration) // ----------------------------------------------------------------- #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: typedef std::pair IntPoint; typedef std::vector VectorOfPoints; typedef std::vector VectorOfVectorOfPoints; typedef std::vector VectorOfFlags; typedef std::vector VectorOfVectorOfFlags; enum LineColorAction { lineColor, noLineColor }; enum FillColorAction { fillColor, noFillColor }; void setAttrs( LineColorAction eLineAction, FillColorAction eFillAction ); void write_path( VectorOfVectorOfPoints const& polyPolygon, VectorOfVectorOfFlags const& polyPolygonFlags ); void write_polyline( VectorOfVectorOfPoints const& polyPolygon, VectorOfVectorOfFlags const& polyPolygonFlags ); // private data of drvsvm // ---------------------- std::ostream::pos_type headerPos; long int actionCount; bool isDriverOk; }; #endif /* #ifndef __drvsvm_h__ */ pstoedit-3.62/src/drvswf.cpp0000644000175500010010000005073612137224254013035 00000000000000/* drvSWF.cpp : This file is part of pstoedit Skeleton for the implementation of new backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef HAVE_LIBMING #include "drvswf.h" #include I_fstream #include I_stdio #include I_stdlib #include //static bool trace = false; //static bool cubic = false; #include "mingpp.h" /* Use png library */ #define USE_PNG 1 // #include "ming_config.h" #if defined(_WIN32) extern "C" { double rint(double arg) { return ((long) arg); // just as a quick workaround // libswf needs this - since on Windows, there is no rint in math.h }} #endif // USE_PNG is defined in ming/config.h #if defined (HAVE_LIBMINGUTIL) && !( defined(USE_PNG) && USE_PNG ) // only use this if libming doesn't support png2dbl itself (available from version 0.3 on) #define main MAIN // strdup is not visible is -ansi is turned on #define strdup cppstrdup #include "util/png2dbl.c" static void png2dbl(const char *pngfile, const char *dblfile) { struct pngdata png; png = readPNG(fopen(pngfile, "rb")); FILE *f = fopen(dblfile, "wb"); writeDBL(f, png); fclose(f); } #endif const bool withcurves = true; // curves are still quite broken in SWF drvSWF::derivedConstructor(drvSWF): constructBase, imgcount(0), swfscale(1.0f) { #if 0 if (d_argc > 0) { for (unsigned int i = 0; i < d_argc; i++) { if (strcmp(d_argv[i], "-trace") == 0) { trace = true; } else if (strcmp(d_argv[i], "-cubic") == 0) { cubic = true; } else { errf << "Unrecognized svg option: " << d_argv[i] << endl; } } } #endif (void) Ming_init(); Ming_setCubicThreshold(100); // default of 10000 is too coarse movie = new SWFMovie(); movie->setRate(12.0f); movie->setDimension(swfscale * 700, swfscale * 1700); // formerly 20 movie->setNumberOfFrames(1); if (options->trace) { printf("%s", "#include \n" "void testit(SWFMovie * movie,int pathlimit) {\n"); #if 0 "(void) Ming_init();\n" "movie = new SWFMovie();\n" "movie->setRate(12.0f);\n" "movie->setDimension(swfscale * 700, swfscale * 1700);\n" "movie->setNumberOfFrames(1);\n"; #endif } } drvSWF::~drvSWF() { const int length = movie->save(outFileName.value()); delete movie; if (options->trace) printf("}\n"); printf("// %i bytes written to %s\n", length, outFileName.value()); } // *INDENT-OFF* #if 0 *INDENT - OFF * This version adds the drawCubic function for drawing cubic bezier curves, and a number of assorted bug fixes.And probably plenty more bugs. $s->drawCurve(bx, by, cx, cy, dx, dy); $s->drawCubic(bx, by, cx, cy, dx, dy); both do the same thing:draw a cubic bezier from the current pen position, using the three given points as control points. To control how "tight" the approximation is, use the Ming_setCubicThreshold(num); function. This gives the amount of error in approximation that each subdivision of the curve needs in order to stop recursing.The default is 20000 - if your curves are too sloppy, lower the number. #endif // *INDENT-ON* void drvSWF::print_coords() { #if 0 if (numberOfElementsInPath() > 255) { errf << "ignoring path with " << numberOfElementsInPath() << " elements " << endl; return; } #endif if (numberOfElementsInPath() < 2) return; SWFShape *s = new SWFShape; if (options->trace) { static int pathid = 0; printf("if ( %d < pathlimit) {\n" "SWFShape * s = new SWFShape;\n", pathid++); //printf("t->addString( \"path#%d\",NULL);\n", pathid); //printf("SWFDisplayItem * dt = movie->add(t); dt->move( 200,%d);\n", pathid); } switch (currentShowType()) { case drvbase::stroke: break; case drvbase::fill: { SWFFill *swffill = s->addSolidFill((byte) (255 * fillR()), (byte) (255 * fillG()), (byte) (255 * fillB())); s->setRightFill(swffill); if (options->trace) { printf("SWFFill *swffill = s->addSolidFill(%d,%d,%d); \n", (int) (255 * fillR()), (int) (255 * fillG()), (int) (255 * fillB())); printf("s->setRightFill(swffill);\n"); } break; } case drvbase::eofill: { SWFFill *swffill = s->addSolidFill((byte) (255 * fillR()), (byte) (255 * fillG()), (byte) (255 * fillB())); s->setRightFill(swffill); if (options->trace) { printf("SWFFill *swffill = s->addSolidFill(%d,%d,%d); \n", (int) (255 * fillR()), (int) (255 * fillG()), (int) (255 * fillB())); printf("s->setRightFill(swffill);\n"); } break; } default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); break; } // libming supports only byte wise width int linewidth = (int) (swfscale * currentLineWidth()); if ( linewidth > 255 ) { errf << "Warning: linewidth greater than 255 is not supported by libming" << endl; linewidth = 255; } s->setLine( (byte) linewidth, (byte) (255 * edgeR()), (byte) (255 * edgeG()), (byte) (255 * edgeB()) ); if (options->trace) { printf("s->setLine(%d, %d,%d,%d); \n", (int) (swfscale * currentLineWidth()), (byte) (255 * edgeR()), (byte) (255 * edgeG()), (byte) (255 * edgeB())); } Point currentpoint(-9999.0f, -9999.0f); Point firstpoint(-9999.0f, -9999.0f); bool firstfound = false; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); if (!firstfound) { firstfound = true; firstpoint = p; } s->movePenTo(swfx(p), swfy(p)); if (options->trace) { printf("s->movePenTo(%d,%d);\n", (int) swfx(p), (int) swfy(p)); } currentpoint = p; } break; case lineto:{ const Point & p = elem.getPoint(0); if (!firstfound) { firstfound = true; firstpoint = p; } if (p == currentpoint) { if (Verbose()) errf << "ignoring zero length lineto " << endl; } else { s->drawLineTo(swfx(p), swfy(p)); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) swfx(p), (int) swfy(p)); } currentpoint = p; } } break; case closepath: #if 1 if (firstfound) { if (!(currentpoint == firstpoint)) { const coordtype x = swfx(firstpoint); const coordtype y = swfy(firstpoint); s->drawLineTo(x, y); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) x, (int) y); } currentpoint = firstpoint; } } else { errf << "closepath found without first point" << endl; } #endif break; case curveto:{ if (withcurves) { const Point & b = elem.getPoint(0); if (!firstfound) { firstfound = true; firstpoint = b; } const Point & c = elem.getPoint(1); const Point & d = elem.getPoint(2); const coordtype cpx = swfx(currentpoint); const coordtype cpy = swfy(currentpoint); const coordtype bx = swfx(b); const coordtype by = swfy(b); const coordtype cx = swfx(c); const coordtype cy = swfy(c); const coordtype dx = swfx(d); const coordtype dy = swfy(d); if (currentpoint == b) { if (Verbose()) errf << "converting strange PS-curveto cp = b to simple curveto" << endl; s->drawCurveTo(cx, cy, dx, dy); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) cx, (int) cy, (int) dx, (int) dy); } currentpoint = d; } else if (c == d) { if (Verbose()) errf << "converting strange PS-curveto c = d to simple curveto" << endl; s->drawCurveTo(bx, by, dx, dy); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) bx, (int) by, (int) dx, (int) dy); } } else if ((cpy == by) && (by == cy) && (cy == dy)) { if (Verbose()) errf << "converting curve to line (all same y)" << endl; s->drawLineTo(dx, dy); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) dx, (int) dy); } } else if ((cpx == bx) && (bx == cx) && (cx == dx)) { if (Verbose()) errf << "converting curve to line (all same x)" << endl; s->drawLineTo(dx, dy); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) dx, (int) dy); } } else { if (options->cubic) { if (options->trace) { printf("s->drawCubic(%d,%d,%d,%d,%d,%d);\n", (int) bx, (int) by, (int) cx, (int) cy, (int) dx, (int) dy); fflush(stdout); } s->drawCubicTo(bx, by, cx, cy, dx, dy); } else { const bool approx = true; if (approx) { const unsigned int fitpoints = 10; const Point & cp1 = elem.getPoint(0); const Point & cp2 = elem.getPoint(1); const Point & ep = elem.getPoint(2); for (unsigned int sf = 0; sf < fitpoints; sf++) { const float t = 1.0f * sf / (fitpoints - 1); const Point & p_at_t = PointOnBezier(t, currentpoint, cp1, cp2, ep); const coordtype dx1 = swfx(p_at_t); const coordtype dy1 = swfy(p_at_t); s->drawLineTo(dx1, dy1); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) dx1, (int) dy1); } } } else { // // see http://www.timotheegroleau.com/Flash/articles/cubic_bezier_in_flash.htm for a detailled discussion // #if 0 // very basic approx - use intersection point of the cubic bezier tangents as control point // for the quadratic bezier /* if x1 == x2; xs = x1; if x3 == x4; xs = x3; ys - y1 y2 - y1 ------ = ------- = m1 xs - x1 x2 - x1 ys - y3 y4 - y3 ------ = ------- = m2 xs - x3 x4 - x3 ys = y1 + m1 * (xs - x1) = y3 + m2 * (xs - x3) xs = (( y1 - m1*x1) - (y3 - m2*x3))/ ( m2 - m1) ys = y1 + m1 * (xs - x1) */ if (bx != cpx) { const coordtype m1 = (by - cpy) / (bx - cpx ); if (dx != cx) { const coordtype m2 = (dy - cy) / (dx - cx ); if (m1 != m2) { const coordtype xs = (( cpy - m1*cpx) - (cy - m2*cx))/(m2 - m1 ); const coordtype ys = cpy + m1 * (xs - cpx); s->drawCurveTo(xs, ys, dx, dy); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) xs, (int) ys, (int) dx, (int) dy); } } else { cout << "strange bezier with parallel control lines" << endl; } } else { // dx == cx ; vertical second control line and first is not vertical const coordtype xs = dx; // intersection is also on same coordinate const coordtype ys = cpy + m1 * (xs - cpx); s->drawCurveTo(xs, ys, dx, dy); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) xs, (int) ys, (int) dx, (int) dy); } } } else { // bx != cpx ; first control line is vertical if (dx != cx) { // second is not vertical const coordtype xs = bx ; const coordtype m2 = (dy - cy) / (dx - cx ); const coordtype ys = cy + m2 * (xs - cx); s->drawCurveTo(xs, ys, dx, dy); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) xs, (int) ys, (int) dx, (int) dy); } } else { cout << "strange bezier with parallel vertical control lines" << endl; } } #endif #if 1 // simple midpoint approach - use mid between the two ctrl points as new anchor point const coordtype ax = (bx + cx )/2.0f; const coordtype ay = (by + cy )/2.0f; s->drawCurveTo(bx, by, ax, ay); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) bx, (int) by, (int) ax, (int) ay); } s->drawCurveTo(cx, cy, dx, dy); if (options->trace) { printf("s->drawCurveTo(%d,%d,%d,%d);\n", (int) cx, (int) cy, (int) dx, (int) dy); } #endif /* s->drawLineTo(bx, by); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) bx, (int) by); } s->drawLineTo(cx, cy); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) cx, (int) cy); } s->drawLineTo(dx, dy); if (options->trace) { printf("s->drawLineTo(%d,%d);\n", (int) dx, (int) dy); } */ } } } currentpoint = d; } else { errf << "\t\tFatal: unexpected case in drvSWF " << endl; abort(); } } break; default: errf << "\t\tFatal: unexpected case in drvSWF " << endl; abort(); break; } } s->end(); SWFDisplayItem *d = movie->add(s); d->move(0.0f, 0.0f); if (options->trace) printf("s->end();\n" "SWFDisplayItem * d = movie->add(s);\n" "d->move(0, 0); }\n"); // delete s; // delete d; // no longer needed in libming version > 0.4.0.beta6 } void drvSWF::open_page() { // outf << "Opening page: " << currentPageNumber << endl; } void drvSWF::close_page() { // outf << "Closing page: " << (currentPageNumber) << endl; } void drvSWF::show_text(const TextInfo & textinfo) { RSString fonthome(drvbase::pstoeditDataDir()); if (drvbase::pstoeditDataDir() != "") { fonthome += directoryDelimiter; fonthome += "swffonts"; fonthome += directoryDelimiter; } RSString fontfilename = fonthome; fontfilename += textinfo.currentFontName.value(); fontfilename += ".fdb"; const char *const fontname = textinfo.currentFontName.value(); if (fileExists(fontfilename.value())) { if (Verbose()) { errf << "loading font from from " << fontfilename.value() << endl; } } else { RSString defaultfontname = fonthome; defaultfontname += "default.fdb"; if (fileExists(defaultfontname.value())) { if (Verbose()) errf << "no fdb file found for font " << fontname << ". Using " << defaultfontname.value() << " instead" << endl; fontfilename = defaultfontname; } else { errf << "no fdb file found for font " << fontname << " and no " << defaultfontname << " either - text ignored." << endl; return; } } // if the fontnames ends with .fdb, then the file is read, otherwise browser fonts are used. //as long as SWF is not const correct SWFFont *f = new SWFFont(fontfilename.value()); SWFFont *f = new SWFFont(const_cast(fontfilename.value())); if ((f == NULL) || (f->font == NULL)) { errf << "Loading font " << fontfilename.value() << " failed !" << endl; return; } SWFText *t = new SWFText; t->setFont(f); // t->moveTo(20 *(textinfo.x + x_offset), 20*(currentDeviceHeight - textinfo.y + y_offset)); t->setHeight(textinfo.currentFontSize * swfscale); // t->setColor(0xff, 0xff, 0); t->setColor((unsigned char) (255.0 * textinfo.currentR), (unsigned char) (255.0 * textinfo.currentG), (unsigned char) (255.0 * textinfo.currentB), 0xff); t->addString(textinfo.thetext.value(), NULL); // t->setSpacing( 0.5); /* t->setXY( -1, 480); t->setHeight( 480); t->setSpacing( 1.0); t->addString( ( char*) "blargghghgghghgh", NULL); */ SWFDisplayItem *d = movie->add(t); #if 0 const Point p(textinfo.x, textinfo.y); d->move(swfx(p), swfy(p)); d->rotate(textinfo.currentFontAngle); #else const float *CTM = getCurrentFontMatrix(); const float fontsize = textinfo.currentFontSize; float ma = CTM[0] / fontsize; float mb = -CTM[1] / fontsize; float mc = -CTM[2] / fontsize; float md = CTM[3] / fontsize; const Point p(CTM[4], CTM[5]); float mx = swfx(p); float my = swfy(p); d->move(0.0f, 0.0f); SWFDisplayItem_setMatrix(d->item, ma, mb, mc, md, mx, my); #endif // delete d; // no longer needed in libming version > 0.4.0.beta6 // delete f; // causes memory problems otherwise - at the cost of leaks - Hmmm // delete t; } void drvSWF::show_path() { //static int pathid = 0; //if ( (pathid >= 0)&&(pathid++ < 5) ) { print_coords(); } } #if defined(HAVE_LIBMINGUTIL) || ( defined(USE_PNG) && USE_PNG ) void drvSWF::show_image(const PSImage & imageinfo) { if (outBaseName == "") { errf << "images cannot be handled via standard output. Use an output file" << endl; return; } if (imageinfo.isFileImage) { // use imageinfo.FileName; #if 0 outf << "" << endl; #endif #if (defined(USE_PNG) && USE_PNG) // from 0.3 on ming may support png directly SWFBitmap *bm = new SWFBitmap(imageinfo.FileName.value()); #else unsigned int len = strlen(imageinfo.FileName.value()); char *outfile = cppstrdup(imageinfo.FileName.value()); outfile[len - 3] = 'd'; outfile[len - 2] = 'b'; outfile[len - 1] = 'l'; png2dbl(imageinfo.FileName.value(), outfile); SWFBitmap *bm = new SWFBitmap(outfile); delete [] outfile; #endif (void) remove(imageinfo.FileName.value()); SWFShape *s = new SWFShape; SWFFill *swffill = s->addBitmapFill(bm, SWFFILL_TILED_BITMAP); s->setRightFill(swffill); const float h = (float) bm->getHeight(); const float w = (float) bm->getWidth(); s->movePen(0.0f, 0.0f); s->drawLine(w, 0.0f); s->drawLine(0.0f, h); s->drawLine(-w, 0.0f); s->drawLine(0.0f, -h); /// cout << " h:" << bm->getHeight() << " w:" << bm->getWidth() << endl; // SWFDisplayItem *d = movie->add(bm); s->end(); SWFDisplayItem *d = movie->add(s); const float *CTM = imageinfo.normalizedImageCurrentMatrix; float ma = CTM[0]; float mb = -CTM[1]; float mc = CTM[2]; float md = -CTM[3]; const Point p(CTM[4], CTM[5]); float mx = swfx(p); float my = swfy(p); #if 1 d->move(0.0f, 0.0f); SWFDisplayItem_setMatrix(d->item, ma, mb, mc, md, mx, my); // d->item->flags |= ITEM_DISPLACED; // d->item->flags |= ITEM_TRANSFORMED; #else const Point p(CTM[4], CTM[5]); d->move(swfx(p), swfy(p)); // d->rotate(30); d->scale(ma, -md); #endif } else { errf << "unhandled case for image " << endl; } } #else // // If neither USE_PNG is defined in ming_config.h nor we have access to util/png2dbl.c we cannot support images // void drvSWF::show_image(const PSImage & /* imageinfo */ ) { errf << "no support for bitmaps - need to have access to util/png2dbl.c at compile time or at least ming version 0.3 which direct support of png (USE_PNG in ming/config.h)" << endl; } #endif static DriverDescriptionT < drvSWF > D_SWF("swf", // "SWF driver: ", // "", "swf", // false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. withcurves, // backend supports curves true, // backend supports elements which are filled and have edges true, // backend supports text #if defined(HAVE_LIBMINGUTIL) || (defined(USE_PNG) && USE_PNG ) DriverDescription::png, // backend supports Images #else DriverDescription::noimage, // no support for Images #endif DriverDescription::noopen, // we open output file ourselves true, // if format supports multiple pages in one file false /*clipping */ ); #endif pstoedit-3.62/src/drvswf.h0000644000175500010010000000363412137224257012500 00000000000000#ifndef __drvSWF_h #define __drvSWF_h /* drvSWF.h : This file is part of pstoedit Class declaration for a SWF output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvSWF : public drvbase { public: derivedConstructor(drvSWF); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvSWF(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor > cubic; OptionT < bool, BoolTrueExtractor > trace; DriverOptions(): cubic(true,"-cubic",0,0,"cubic ???",0,false), trace(true,"-trace",0,0,"trace ???",0,false) { ADD(cubic); ADD(trace); } }*options; virtual void show_image(const PSImage & imageinfo); #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: void print_coords(); int imgcount; float swfscale; class SWFMovie * movie; typedef float coordtype ; coordtype swfx(const Point & p) const { return swfscale * (p.x_ + x_offset); } coordtype swfy(const Point & p) const { return swfscale * (currentDeviceHeight + y_offset - p.y_ ); } }; #endif pstoedit-3.62/src/drvtext.cpp0000644000175500010010000001637012137224254013216 00000000000000/* drvTEXT.cpp : This file is part of pstoedit Skeleton for the implementation of text based backends for example this could be extended towards an HTML backend. Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvtext.h" #include I_fstream #include I_stdio #include I_stdlib // sizes in terms of lines and characters drvTEXT::derivedConstructor(drvTEXT): constructBase, charpage(0) // , dumptextpieces(false), pageheight(200), pagewidth(120) { // driver specific initializations #if 0 for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); if (Verbose()) errf << "% " << d_argv[i] << endl; if (strcmp(d_argv[i], "-dump") == 0) { dumptextpieces = true; } else if (strcmp(d_argv[i], "-height") == 0) { pageheight = atoi(d_argv[i + 1]); i++; } else if (strcmp(d_argv[i], "-width") == 0) { pagewidth = atoi(d_argv[i + 1]); i++; } } #endif if (!options->dumptextpieces) { #if 0 charpage = new char[options->pageheight * options->pagewidth]; for (unsigned int ii = 0; ii < options->pageheight; ii++) { //charpage[i] = new char[options->pagewidth]; for (unsigned int j = 0; j < options->pageheight; j++) (charpage[ii])[j] = ' '; } #else charpage = new char *[options->pageheight]; for (unsigned int ii = 0; ii < (unsigned int) options->pageheight; ii++) { charpage[ii] = new char[options->pagewidth]; for (unsigned int j = 0; j < (unsigned int) options->pagewidth; j++) (charpage[ii])[j] = ' '; } #endif } // and writing of header to output file // outf << "Sample header \n"; // float scale; // float x_offset; // float y_offset; } drvTEXT::~drvTEXT() { // driver specific deallocations // and writing of trailer to output file if (options->dumptextpieces) { outf << "Sample trailer \n"; } if (charpage) { for (unsigned int i = 0; i < (unsigned int) options->pageheight; i++) { delete[]charpage[i]; charpage[i] = 0; } delete[]charpage; charpage = 0; } options=0; } void drvTEXT::open_page() { if (options->dumptextpieces) outf << "Opening page: " << currentPageNumber << endl; } void drvTEXT::close_page() { if (options->dumptextpieces) { outf << "Closing page: " << (currentPageNumber) << endl; size_t nroflines = page.size(); for (unsigned int i = 0; i < nroflines; i++) { Line *lineptr = page[i]; size_t nrofpieces = lineptr->textpieces.size(); outf << "***********************************************" << endl; for (unsigned int j = 0; j < nrofpieces; j++) { const TextInfo & textinfo = lineptr->textpieces[j]; outf << "Text String : " << textinfo.thetext.value() << endl; outf << '\t' << "X " << textinfo.x << " Y " << textinfo.y << endl; outf << '\t' << "X_END " << textinfo.x_end << " Y_END " << textinfo.y_end << endl; outf << '\t' << "currentFontName: " << textinfo.currentFontName.value() << endl; outf << '\t' << "is_non_standard_font: " << textinfo.is_non_standard_font << endl; outf << '\t' << "currentFontFamilyName: " << textinfo. currentFontFamilyName.value() << endl; outf << '\t' << "currentFontFullName: " << textinfo.currentFontFullName. value() << endl; outf << '\t' << "currentFontWeight: " << textinfo.currentFontWeight.value() << endl; outf << '\t' << "currentFontSize: " << textinfo.currentFontSize << endl; outf << '\t' << "currentFontAngle: " << textinfo.currentFontAngle << endl; outf << '\t' << "currentR: " << textinfo.currentR << endl; outf << '\t' << "currentG: " << textinfo.currentG << endl; outf << '\t' << "currentB: " << textinfo.currentB << endl; } } for (unsigned int ii = 0; ii < nroflines; ii++) { Line *lineptr = page[ii]; delete lineptr; } page.clear(); } else { assert(charpage); for (unsigned int i = 0; i < (unsigned int) options->pageheight; i++) { for (unsigned int j = 0; j < (unsigned int) options->pagewidth; j++) { outf << (charpage[i])[j]; (charpage[i])[j] = ' '; } outf << endl; } } } void drvTEXT::show_text(const TextInfo & textinfo) { if (options->dumptextpieces) { // check which line this piece of text fits in. // size_t nroflines = page.size(); bool inserted = false; for (unsigned int i = 0; i < nroflines; i++) { if ((textinfo.y <= page[i]->y_max) && (textinfo.y >= page[i]->y_min)) { page[i]->textpieces.insert(textinfo); inserted = true; break; } } if (!inserted) { Line *newline = new Line; //lint -esym(429,newline) // newline is not freed here, but inserted into the list page.insert(newline); newline->y_max = textinfo.y + 0.1f * textinfo.currentFontSize; newline->y_min = textinfo.y - 0.1f * textinfo.currentFontSize; newline->textpieces.insert(textinfo); } } else { assert(charpage); int x = (int) (options->pagewidth * (textinfo.x / 700.0f)); int y = (int) (options->pageheight * ((currentDeviceHeight + y_offset - textinfo.y) / 800.0f)); if ((x >= 0) && (y >= 0) && (x < options->pagewidth) && (y < options->pageheight)) { if (((charpage[y])[x] != ' ')) { cerr << "character " << (charpage[y])[x] << " overwritten with " << textinfo. thetext. value()[0] << " at " << x << " " << y << " - Hint increase -width and/or -height" << endl; } (charpage[y])[x] = textinfo.thetext.value()[0]; } else { cerr << "seems to be off-page: " << textinfo.thetext.value()[0] << endl; cerr << x << " " << y << " " << textinfo.x << " " << textinfo.y << endl; } } } void drvTEXT::show_path() { } void drvTEXT::show_image(const PSImage & imageinfo) { unused(&imageinfo); } static DriverDescriptionT < drvTEXT > D_text("text", "text in different forms ", "","txt", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 false, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvtext.h0000644000175500010010000000507212137224257012663 00000000000000#ifndef __drvTEXT_h #define __drvTEXT_h /* drvtext.h : This file is part of pstoedit Class declaration for a text oriented output driver Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" #include "ordlist.h" class drvTEXT : public drvbase { public: derivedConstructor(drvTEXT); // (const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ); // Constructor ~drvTEXT(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < int, IntValueExtractor >pageheight; OptionT < int, IntValueExtractor >pagewidth; OptionT < bool, BoolTrueExtractor> dumptextpieces; DriverOptions() : pageheight(true,"-height", "number",0, "page height in terms of characters",0,200), pagewidth(true,"-width", "number",0, "page width in terms of characters",0,150), dumptextpieces(true,"-dump", 0, 0,"dump text pieces",0,false) { ADD(pageheight); ADD(pagewidth); ADD(dumptextpieces); } }*options; class XSorter { public: static bool compare (const drvbase::TextInfo & t1, const drvbase::TextInfo & t2) { return t1.x > t2.x; } }; class Line { public: typedef ordlist TextInfoList; TextInfoList textpieces; float y_max; // the y-interval of text assigned to this line float y_min; // }; class YSorter { public: static bool compare (const Line * l1, const Line * l2) { return l1->y_max < l2->y_max; } }; typedef ordlist LinePtrList; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); virtual void show_image(const PSImage & imageinfo); LinePtrList page; char ** charpage; // for text page output #if 0 bool dumptextpieces; // sizes in terms of lines and characters unsigned int pageheight ; unsigned int pagewidth ; #endif NOCOPYANDASSIGN(drvTEXT) }; #endif pstoedit-3.62/src/drvtgif.cpp0000644000175500010010000003163012137224254013157 00000000000000/* drvTGIF.cpp : This file is part of pstoedit Backend for TGIF Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvtgif.h" #include "version.h" #include I_fstream #include I_stdio #include I_stdlib // for sin and cos #include static const char *colorstring(float r, float g, float b) { static char buffer[10]; sprintf_s(TARGETWITHLEN(buffer,10), "%s%.2x%.2x%.2x", "#", (unsigned int) (r * 255), (unsigned int) (g * 255), (unsigned int) (b * 255)); return buffer; } const float tgifscale = 128.0f / 72.0f; drvTGIF::derivedConstructor(drvTGIF): constructBase, buffer(tempFile.asOutput()), objectId(1) { // magnification(theMagnification) // set tgif specific values //no longer scale = tgifscale * scale; /* tgif internal scale factor */ //no more it will be overwritten by makeedit.l // currentDeviceHeight = 792.0f * tgifscale; x_offset = 0.0f; /* set to fit to tgif page */ y_offset = 89.61f; /* " */ // cannot write any header part, since we need the total number of pages // in the header if (Verbose()) errf << "% Driver options:" << endl; #if 0 for (unsigned int i = 0; i < d_argc; i++) { assert(d_argv && d_argv[i]); if (Verbose()) errf << "% " << d_argv[i] << endl; if (strcmp(d_argv[i], "-ta") == 0) { textAsAttribute = true; } } #endif } drvTGIF::~drvTGIF() { outf << "% TGIF" << endl; outf << "state(0,33," << 100 // (int) ((scale / tgifscale )* 100) << ",0,0,1,16,1,9,1,1,0,0,1,0,1,0,'Courier',0,17,0,0,1,5,0,0,1,1,0,16,1,0,1," << currentPageNumber << ",1,0,1056,1497,0,0,2880)." << endl; outf << "unit(\"1 pixel/pixel\")." << endl; outf << "generated_by(\"pstoedit\",0,\"" << version << "\")." << endl; // now we can copy the buffer the output ifstream & inbuffer = tempFile.asInput(); copy_file(inbuffer, outf); options=0; } void drvTGIF::print_coords() { for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case lineto: case moveto:{ const Point & p = pathElement(n).getPoint(0); buffer << p.x_*tgifscale + x_offset; buffer << "," << currentDeviceHeight* tgifscale - p.y_*tgifscale + y_offset; if (n != numberOfElementsInPath() - 1) { // it is not the last point, so add a , buffer << ','; } if ((!((n + 1) % 8)) && ((n + 1) != numberOfElementsInPath())) { buffer << "\n\t"; } } break; case closepath:{ const Point & p = pathElement(0).getPoint(0); buffer << p.x_*tgifscale + x_offset; buffer << "," << currentDeviceHeight* tgifscale - p.y_*tgifscale + y_offset; if (n != numberOfElementsInPath() - 1) { // it is not the last point, so add a , buffer << ','; } if ((!((n + 1) % 8)) && ((n + 1) != numberOfElementsInPath())) { buffer << "\n\t"; } } break; case curveto: default: errf << "\t\tFatal: unexpected case in drvtgif " << endl; abort(); break; } } } void drvTGIF::close_page() { } void drvTGIF::open_page() { buffer << "page(" << currentPageNumber << ",\"\",1).\n"; } static const int Fill = 1; static const int noFill = 0; void drvTGIF::show_text(const TextInfo & textinfo) { if (options->textAsAttribute) { // buffer << "box('magenta',150,50,250,100,0,1,1,22,0,0,0,0,0,'1',[\n" buffer << "box('" << colorstring(textinfo.currentR, textinfo.currentG, textinfo.currentB) << "'"; buffer << "," << (textinfo.x*tgifscale) + x_offset; // llx buffer << "," << currentDeviceHeight* tgifscale - (textinfo.y_end*tgifscale) + y_offset - textinfo.currentFontSize*tgifscale; // lly buffer << "," << textinfo.x_end*tgifscale + x_offset; //urx buffer << "," << currentDeviceHeight* tgifscale - textinfo.y*tgifscale + y_offset; //ury const int fillpat = noFill; buffer << "," << fillpat << "," << 1 // currentLineWidth() << "," << Fill << "," << objectId++ << ",0,0,0,0,0,'1',[\n" << "attr(\"href=\", \""; const char *cp = textinfo.thetext.value(); while (*cp) { if ((*cp == '"') || (*cp == '\\')) { buffer << '\\'; } buffer << *cp; cp++; } buffer << "\", 1, 1, 0,\n"; } buffer << "text('" << colorstring(textinfo.currentR, textinfo.currentG, textinfo.currentB) << "'"; buffer << "," << textinfo.x*tgifscale + x_offset; #ifdef OLDTGIF // for version 3 buffer << "," << currentDeviceHeight* tgifscale - textinfo.y + y_offset - textinfo.currentFontSize; // TGIF's origin of text is at the top line, pstoedit's at the bottom #else buffer << "," << currentDeviceHeight* tgifscale - textinfo.y*tgifscale + y_offset - textinfo.currentFontSize*tgifscale; #endif buffer << ",'" << textinfo.currentFontName.value() << "'"; const bool boldfont = (strstr(textinfo.currentFontName.value(), "Bold") != NIL); const bool italicfont = ((strstr(textinfo.currentFontName.value(), "Italic") != NIL) || (strstr(textinfo.currentFontName.value(), "Oblique") != NIL)); int fonttype = 0; if (boldfont) { if (italicfont) fonttype = 3; else fonttype = 1; } else { if (italicfont) fonttype = 2; else fonttype = 0; } const float fontSize = textinfo.currentFontSize * tgifscale ; buffer << "," << fonttype << "," << (int) (fontSize + 0.5) << ",1,0,0,1,70," << fontSize << "," << objectId++ << ",0,14,3,0,0,0,0,0,0,0,0,0,0,\"\",0,"; #ifdef OLDTGIF const bool rotated = true; // wogl textinfo.currentFontAngle != 0.0; if (rotated) { buffer << "1,0,[" << endl; } else { buffer << "0,0,[" << endl; } if (rotated) { #else bool transformed = false; if (fontSize != 0.0) { const float *CTM = getCurrentFontMatrix(); if (fabs(CTM[0]*tgifscale - fontSize) < (1.0e-5) && fabs(CTM[1]) < (1.0e-5) && fabs(CTM[2]) < (1.0e-5) && fabs(CTM[3]*tgifscale - fontSize) < (1.0e-5)) { // no rotation and no shear transformed = false; } else { transformed = true; } } if (transformed) { buffer << "1,0,[" << endl; } else { buffer << "0,0,[" << endl; } if (transformed) { #endif //#define TGIFDEBUG #ifdef TGIFDEBUG const float toRadians = 3.14159265359f / 180.0f; const float angleInRadians = textinfo.currentFontAngle * toRadians; const float cosphi = (float) cos(angleInRadians); const float sinphi = (float) sin(angleInRadians); // const float Sx = textinfo.currentFontSize; // const float Sy = textinfo.currentFontSize; #endif // const int len = strlen(textinfo.thetext.value()); // if we use the tx of CTM buffer << '\t'<< 0.0 ; // if we use the ty of CTM buffer << "," << 0.0 ; buffer << '\t' << textinfo.x*tgifscale + x_offset; buffer << "," << currentDeviceHeight* tgifscale - textinfo.y*tgifscale + y_offset; // the obbox stuff #ifdef OLDTGIF buffer << "," << textinfo.x + x_offset; buffer << "," << currentDeviceHeight* tgifscale - textinfo.y + y_offset; buffer << "," << textinfo.x + x_offset + len * textinfo.currentFontSize; buffer << "," << currentDeviceHeight* tgifscale - textinfo.y + textinfo.currentFontSize + y_offset; #else // starting with tgif 3.0 pl 7. an all 0 bounding box causes tgif to recalculate it buffer << "," << 0; buffer << "," << 0; buffer << "," << 0; buffer << "," << 0; #endif const float *CTM = getCurrentFontMatrix(); #ifdef TGIFDEBUG for (int i = 0; i < 6; i++) { buffer << " CTM [" << i << "] = " << CTM[i] << endl; } const float SX = pythagoras(CTM[0] , CTM[1] ); const float SY = pythagoras(CTM[2] , CTM[3] ); buffer << " SX " << SX << endl; buffer << " SY " << SY << endl; #endif // the CTM stuff buffer << "," << (CTM[0] / textinfo.currentFontSize) * 1000; buffer << "," << (-1.0 * CTM[1] / textinfo.currentFontSize) * 1000; buffer << "," << (-1.0 * CTM[2] / textinfo.currentFontSize) * 1000; buffer << "," << (CTM[3] / textinfo.currentFontSize) * 1000; #ifdef TGIFDEBUG buffer << "," << cosphi * 1000; buffer << "," << -sinphi * 1000; buffer << "," << sinphi * 1000; buffer << "," << cosphi * 1000; #endif // buffer << "," << (CTM[4] +x_offset ) * 1; // buffer << "," << (currentDeviceHeight* tgifscale - CTM[5] +y_offset ) * 1; buffer << "," << 0; // no translate buffer << "," << 0; // no translate // the bbox stuff #ifdef OLDTGIF buffer << "," << textinfo.x + x_offset; buffer << "," << currentDeviceHeight* tgifscale - textinfo.y*tgifscale + y_offset; buffer << "," << textinfo.x + x_offset + len * textinfo.currentFontSize; buffer << "," << currentDeviceHeight* tgifscale - textinfo.y + y_offset + textinfo.currentFontSize + y_offset; #else // starting with tgif 3.0 pl 7. an all 0 bounding box causes tgif to recalculate it buffer << "," << 0; buffer << "," << 0; buffer << "," << 0; buffer << "," << 0; #endif buffer << "],[" << endl; } buffer << "\t\""; const char *cp = textinfo.thetext.value(); while (*cp) { if ((*cp == '"') || (*cp == '\\')) { buffer << '\\'; } buffer << *cp; cp++; } if (options->textAsAttribute) { buffer << "\"]))\n]).\n"; } else { buffer << "\"]).\n"; } } void drvTGIF::show_path() { // buffer << "# Path " << currentNr() << " " << numberOfElementsInPath() << endl; const int fillpat = (currentShowType() == drvbase::stroke) ? noFill : Fill; if (isPolygon()) { buffer << "polygon('" << colorstring(currentR(), currentG(), currentB()) << "'," << numberOfElementsInPath() << ",[" << endl << "\t"; print_coords(); buffer << "]," << fillpat << "," << currentLineWidth()* tgifscale << "," << Fill << ",0," << objectId++ << ",0,0,0,0,0,'"; // << ",0,0,0,0,0,'1"; // bug fix /* I think the 1 at the end has to be deleted. << ",0,0,0,0,0,'"; This error resulted for polygons in lines that where too wide. This was however not visible in tgif, because (i think) tgif doesn't allow lines to be wider than 7. It became visible after printing in tgif to postscript or eps. */ buffer << (int) (currentLineWidth()* tgifscale + 0.5); buffer << "',\n \""; for (unsigned int i = 0; i < numberOfElementsInPath(); i = i + 4) { if ((i > 0) && ((i) % 256) == 0) { buffer << "\n "; } buffer << '0'; } buffer << "\",[" << endl << "])." << endl; } else { buffer << "poly('" << colorstring(currentR(), currentG(), currentB()) << "'," << numberOfElementsInPath() << ",[" << endl << "\t"; print_coords(); buffer << "],0," << currentLineWidth()* tgifscale << "," << Fill << "," << objectId++ << ",0," << fillpat << ",0,0,0,3,0,0,0,'"; buffer << (int) (currentLineWidth()* tgifscale + 0.5); buffer << "','8','3',\n \""; for (unsigned int i = 0; i < numberOfElementsInPath(); i = i + 4) { if ((i > 0) && ((i) % 256) == 0) { buffer << "\n "; } buffer << '0'; } buffer << "\",[" << endl << "])." << endl; } } void drvTGIF::show_rectangle(const float llx, const float lly, const float urx, const float ury) { buffer << "box('" << colorstring(currentR(), currentG(), currentB()) << "'"; buffer << "," << llx*tgifscale + x_offset; buffer << "," << currentDeviceHeight* tgifscale - lly*tgifscale + y_offset; buffer << "," << urx*tgifscale + x_offset; buffer << "," << currentDeviceHeight* tgifscale - ury*tgifscale + y_offset; const int fillpat = (currentShowType() == drvbase::stroke) ? noFill : Fill; buffer << "," << fillpat << "," << currentLineWidth()*tgifscale << "," << Fill << "," << objectId++ << ",0,0,0,0,0,'1',[" << endl << "])." << endl; } static DriverDescriptionT < drvTGIF > D_tgif("tgif", "Tgif .obj format", "","obj", false, // if backend supports subpathes, else 0 // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to 0 each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // if backend supports curves, else 0 true, // if backend supports elements with fill and edges true, // if backend supports text, else 0 DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvtgif.h0000644000175500010010000000325212137224257012626 00000000000000#ifndef __drvTGIF_h #define __drvTGIF_h /* drvTGIF.h : This file is part of pstoedit Interface for new driver backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvTGIF : public drvbase { public: derivedConstructor(drvTGIF); //(const char * driveroptions_P,ostream & theoutStream,ostream & theerrStream ,float theMagnification); // Constructor ~drvTGIF(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor> textAsAttribute; // show text a HREF attribute DriverOptions() : textAsAttribute(true,"-ta",0,0,"text as attribute",0,false) { ADD(textAsAttribute); } } * options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); private: void print_coords(); TempFile tempFile; ofstream &buffer; int objectId; }; #endif pstoedit-3.62/src/drvtk.cpp0000644000175500010010000005103712137224254012647 00000000000000/* drvtk.cpp - Driver to output Tcl/Tk canvas - written by Christopher Jay Cox (cjcox_AT_acm.org) - 9/22/97 last updated: 8/09/00 http://www.ntlug.org/~ccox/impress/ Based on... drvsample.cpp : Backend for TK Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvtk.h" #include I_iostream //#include I_stdio #include I_string_h // for sin and cos #include #include "papersizes.h" static const char *colorstring(float r, float g, float b) { static char buffer[10]; sprintf_s(TARGETWITHLEN(buffer,10), "%s%.2x%.2x%.2x", "#", (int) (r * 255), (int) (g * 255), (int) (b * 255)); return buffer; } void drvTK::outputEscapedText(const char *str) { const char *i; for (i = str; *i; i++) { switch (*i) { case '{': case '}': case '"': case '$': case '[': case ']': case '\\': buffer << '\\'; break; default: break; } buffer << *i; } } drvTK::derivedConstructor(drvTK): constructBase, buffer(tempFile.asOutput()), objectId(1),paperinfo(0) { // const RSString & l_pagesize = getPageSize(); // set tk specific values x_offset = 0.0; /* set to fit to tk page */ y_offset = 0.0; /* " */ const RSString pagesize = getPageSize(); paperinfo = getPaperInfo(pagesize.value()); // cout << "Paper Info for " << pagesize << " is " << (void*) paperinfo << endl; if (!paperinfo) { paperinfo = getPaperInfo("Letter"); } //default canvasCreate(); } void drvTK::canvasCreate() { if (!options->noImPress) { outf << "#!/bin/sh" << endl << "# restart trick \\" << endl << "exec wish \"$0\" \"$@\"" << endl << "if {![info exists Global(CurrentCanvas)]} {" << endl << " proc originObject { name } {" << endl << " global Global" << endl << " set bb [$Global(CurrentCanvas) bbox $name]" << endl << " set x [lindex $bb 0]" << endl << " set y [lindex $bb 1]" << endl << " if {$x > 0} {" << endl << " set nx -$x" << endl << " } else {" << endl << " set nx [expr abs($x)]" << endl << " }" << endl << " if {$y > 0} {" << endl << " set ny -$y" << endl << " } else {" << endl << " set ny [expr abs($y)]" << endl << " }" << endl << " $Global(CurrentCanvas) move $name $nx $ny" << endl << " }" << endl << " proc scaleObject {name ratio width height} {" << endl << " global Global" << endl << " set bb [eval $Global(CurrentCanvas) bbox $name]" << endl << " if {\"$bb\" != \"\"} {" << endl << " set x [lindex $bb 2]" << endl << " set y [lindex $bb 3]" << endl << " if {$ratio == \"variable\"} {" << endl << " set scalex [expr ($width + 0.0) / $x]" << endl << " set scaley [expr ($height + 0.0) / $y]" << endl << " if {$scalex > $scaley} {" << endl << " set scale $scaley" << endl << " } else {" << endl << " set scale $scalex" << endl << " }" << endl << " } elseif {$ratio != \"\"} {" << endl << " set scalex $ratio" << endl << " set scaley $ratio" << endl << " set scale $ratio" << endl << " } else {" << endl << " set scalex [expr ($width + 0.0) / $x]" << endl << " set scaley [expr ($height + 0.0) / $y]" << endl << " if {$scalex > $scaley} {" << endl << " set scalex $scaley" << endl << " set scale $scaley" << endl << " } else {" << endl << " set scaley $scalex" << endl << " set scale $scalex" << endl << " }" << endl << " }" << endl << " $Global(CurrentCanvas) scale $name 0 0 $scalex $scaley" << endl << " foreach i [$Global(CurrentCanvas) find withtag $name] {" << endl << " set type [$Global(CurrentCanvas) type $i]" << endl << " if {\"$type\" == \"text\"} {" << endl << " if {$Global(FontScale)} {" << endl << " set fn [$Global(CurrentCanvas) itemcget $i -font]" << endl << " regexp \\" << endl << " {([-][^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-)([^-]*)(-.*)}\\" << endl << " $fn dummy d1 size d2;" << endl << " if {\"$dummy\" != \"\"} {" << endl << " set nsize [expr round($size * $scale)]" << endl << " if {$nsize < 20} {" << endl << " set nsize 20" << endl << " }" << endl << " $Global(CurrentCanvas) itemconfigure $i \\" << endl << " -font ${d1}${nsize}${d2}" << endl << " set fnn [$Global(CurrentCanvas) itemcget $i -font]" << endl << " regexp \\" << endl << " {([-][^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-)([^-]*)(-.*)}\\" << endl << " $fnn dummy d1 nsize d2;" << endl << " if { ($scale < 1 && $nsize < $size ) || \\" << endl << " ($scale > 1 && $nsize > $size) } {" << endl << " $Global(CurrentCanvas) itemconfigure $i \\" << endl << " -width [expr [$Global(CurrentCanvas) itemcget $i \\" << endl << " -width] * $scale]" << endl << " } else {" << endl << " $Global(CurrentCanvas) itemconfigure $i \\" << endl << " -font $fn" << endl << " }" << endl << " }" << endl << " }" << endl << " } else {" << endl << " catch {$Global(CurrentCanvas) itemconfigure $i \\" << endl << " -width [expr [$Global(CurrentCanvas) itemcget $i -width] \\" << endl << " * $scale]}" << endl << " }" << endl << " }" << endl << " return $scale" << endl << " }" << endl << " return 1.0" << endl << " }" << endl << " proc nextPage {} {" << endl << " global Global" << endl << " set Global(CurrentPageId) [expr $Global(CurrentPageId) + 1]" << endl << " if {![winfo exists .can.c$Global(CurrentPageId)]} {" << endl << " if {$Global(Circulate)} {" << endl << " set Global(CurrentPageId) 1 " << endl << " } else {" << endl << " set Global(CurrentPageId) [expr $Global(CurrentPageId) - 1]" << endl << " }" << endl << " }" << endl << " newCanvas .can c$Global(CurrentPageId)" << endl << " update idletasks" << endl << " }" << endl << " proc prevPage {} {" << endl << " global Global" << endl << " " << endl << " if {$Global(CurrentPageId) > 1} {" << endl << " set Global(CurrentPageId) [expr $Global(CurrentPageId) - 1]" << endl << " newCanvas .can c$Global(CurrentPageId)" << endl << " update idletasks" << endl << " }" << endl << " }" << endl << " proc newCanvas { cf name } {" << endl << " global Global" << endl << " if {[winfo exists $Global(CurrentCanvas)]} {" << endl << " pack forget $Global(CurrentCanvas)" << endl << " }" << endl << " .can.ezoom configure -textvariable Global(ViewScale_$Global(CurrentPageId))" << endl << " .can.lzoom configure -command {set Global(LockScale) $Global(ViewScale_$Global(CurrentPageId));newCanvas .can c$Global(CurrentPageId)}" << endl << " set Global(CurrentCanvas) $cf.$name" << endl << " if {[winfo exists $Global(CurrentCanvas)]} {" << endl << " pack $Global(CurrentCanvas) -in $cf.top -side left -fill both \\" << endl << " -expand true" << endl << " update idletasks" << endl << " if {$Global(Fit) && !$Global(LockZoom)} {" << endl << " set newzoom [scaleObject all \"\" \\" << endl << " [winfo width $Global(CurrentCanvas)] \\" << endl << " [winfo height $Global(CurrentCanvas)]]" << endl << " set Global(ViewScale_$Global(CurrentPageId)) \\" << endl << " [expr double($newzoom) * \\" << endl << " $Global(LastScale_$Global(CurrentPageId))]" << endl << " } else {" << endl << " if {$Global(LockZoom)} {" << endl << " set Global(ViewScale_$Global(CurrentPageId)) \\" << endl << " $Global(LockScale)" << endl << " }" << endl << " scaleObject all \\" << endl << " [expr double($Global(ViewScale_$Global(CurrentPageId))) / \\" << endl << " double($Global(LastScale_$Global(CurrentPageId)))] {} {}" << endl << " }" << endl << " set Global(LastScale_$Global(CurrentPageId)) \\" << endl << " $Global(ViewScale_$Global(CurrentPageId))" << endl << " } else {" << endl << " set Global(LastScale_$Global(CurrentPageId)) 100.0" << endl << " set Global(ViewScale_$Global(CurrentPageId)) 100.0" << endl << " if {$Global(LockZoom)} {" << endl << " set Global(ViewScale_$Global(CurrentPageId)) \\" << endl << " $Global(LockScale)" << endl << " }" << endl << " canvas $Global(CurrentCanvas) -bg $Global(SlideBG) \\" << endl << " -scrollregion \"0i 0i 50i 50i\" \\" << endl << " -xscrollcommand \"$cf.scrollx set\" \\" << endl << " -yscrollcommand \"$cf.scrolly set\"" << endl << " bind $Global(CurrentCanvas) <2> {%W scan mark %x %y}" << endl << " bind $Global(CurrentCanvas) {%W scan dragto %x %y}" << endl << " bind . {nextPage}" << endl << " bind . {prevPage}" << endl << " pack $Global(CurrentCanvas) -in $cf.top -side left -fill both \\" << endl << " -expand true" << endl << " }" << endl << " }" << endl << " set Global(ThisFile) \"Plugin\"" << endl << " catch {set Global(ThisFile) \"$argv0\"}" << endl << " set Global(FontScale) 1" << endl << " set Global(Circulate) 0" << endl << " set Global(Fit) 0" << endl << " set Global(PointsInch) [winfo fpixels . 1i]" << endl << " if {[info exists embed_args]} {" << endl << " set Global(Plugin) 1" << endl << " } else {" << endl << " set Global(Plugin) 0" << endl << " }" << endl << " frame .can" << endl << " frame .can.top" << endl << " frame .can.bottom" << endl << " frame .can.buttons" << endl << " button .can.origin -text Origin -command \\" << endl << " {originObject all;newCanvas .can c$Global(CurrentPageId)}" << endl << " checkbutton .can.lzoom -text \"Lock Zoom\" -variable Global(LockZoom)" << endl << " entry .can.ezoom -width 5 -bg #FF00FF00FF00" << endl << " checkbutton .can.fit -text Fit -variable Global(Fit) -command {newCanvas .can c$Global(CurrentPageId)}" << endl << " checkbutton .can.circ -text Circulate -variable Global(Circulate)" << endl << " button .can.next -text Next -command {nextPage}" << endl << " button .can.prev -text Prev -command {prevPage}" << endl << " button .can.dismiss -text Dismiss -command \"exit\"" << endl << " scrollbar .can.scrolly -bd 2 -width 15 \\" << endl << " -command {$Global(CurrentCanvas) yview}" << endl << " scrollbar .can.scrollx -orient h -bd 2 -width 15 \\" << endl << " -command {$Global(CurrentCanvas) xview}" << endl << " frame .can.corner -height 15 -width 15 -bd 2" << endl << " pack .can.scrolly -in .can.top -anchor se -side right -fill y" << endl << " pack .can.scrollx -in .can.bottom -anchor se -side left -expand true -fill x" << endl << " pack .can.corner -in .can.bottom -anchor ne -in .can.bottom \\" << endl << " -side right -fill both" << endl << " pack .can.prev .can.next .can.origin .can.ezoom .can.lzoom .can.fit .can.circ -side left \\" << endl << " -in .can.buttons" << endl << " pack .can.top -side top -in .can -expand true -fill both" << endl << " pack .can.bottom -side top -in .can -anchor sw -fill x" << endl << " pack .can.buttons -side top -in .can -anchor sw -fill x" << endl << " pack .can -fill both -expand true" << endl << " bind .can.ezoom {" << endl << " newCanvas .can c$Global(CurrentPageId)" << endl << " }" << endl << "}" << endl << "if {[info exists Global(EmbedPage)]} {" << endl << " if {!$Global(EmbedPage)} {" << endl << " set Global(CurrentPageId) 0" << endl << " set Global(CurrentCanvas) \"\"" << endl << " } elseif {[info exists Global(CurrentPageId)]} {" << endl << " set Global(CurrentPageId) [expr $Global(CurrentPageId) - 1]" << endl << " }" << endl << "} else {" << endl << " set Global(CurrentPageId) 0" << endl << " set Global(CurrentCanvas) \"\"" << endl << "}" << endl << "set Global(LoadPageId) [expr $Global(CurrentPageId) + 1]" << endl << "set Global(DocPointsInch) 72.0" << endl << "set Global(SlideBG) #FF00FF00FF00" << endl << "set Global(Circulate) 1" << endl << "set Global(SlideScale) 0" << endl; } } drvTK::~drvTK() { // now we can copy the buffer the output if (!options->noImPress) { buffer << "set Global(CurrentPageId) $Global(LoadPageId)" << endl << "newCanvas .can c$Global(CurrentPageId)" << endl; } ifstream & inbuffer = tempFile.asInput(); copy_file(inbuffer, outf); options=0; paperinfo=0; } void drvTK::print_coords() { float pc_x; float pc_y; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const Point & p = pathElement(n).getPoint(0); pc_x = (p.x_ + x_offset) ; pc_y = (currentDeviceHeight - p.y_ + y_offset) ; buffer << pc_x; buffer << ' ' << pc_y; if (n != numberOfElementsInPath() - 1) { // it is not the last point buffer << ' '; } if ((!((n + 1) % 8)) && ((n + 1) != numberOfElementsInPath())) { buffer << "\\" << endl; } } } void drvTK::close_page() { if (!options->noImPress) { buffer << "scaleObject all [expr $Global(PointsInch)/$Global(DocPointsInch) * 1.0] {} {}" << endl; } } void drvTK::open_page() { if (!options->noImPress) { buffer << " set Global(CurrentPageId) [expr $Global(CurrentPageId) + 1]" << endl; const char * const unit = paperinfo->preferredunit == p_mm ? "c" : "i"; const double unitfactor = paperinfo->preferredunit == p_mm ? 0.1f : 1.0f; // need to write in cm not in mm const double pwidth = paperinfo->preferredunit == p_mm ? paperinfo->mmw*unitfactor : paperinfo->inw; const double pheight = paperinfo->preferredunit == p_mm ? paperinfo->mmh*unitfactor : paperinfo->inh; if (options->swapHW) { buffer << " set Global(PageHeight) " << pwidth << unit << endl << " set Global(PageWidth) " << pheight << unit << endl ; } else { buffer << " set Global(PageHeight) " << pheight << unit << endl << " set Global(PageWidth) " << pwidth << unit << endl ; } buffer << " set Global(Landscape) 0" << endl << " newCanvas .can c$Global(CurrentPageId)" << endl; } } void drvTK::show_text(const TextInfo & textinfo) { int condensedfont = (strstr(textinfo.currentFontName.value(), "Condensed") != NIL); int narrowfont = (strstr(textinfo.currentFontName.value(), "Narrow") != NIL); int boldfont = (strstr(textinfo.currentFontName.value(), "Bold") != NIL); int italicfont = ((strstr(textinfo.currentFontName.value(), "Italic") != NIL) || (strstr(textinfo.currentFontName.value(), "Oblique") != NIL)); char* tempfontname = cppstrdup(textinfo.currentFontName.value()) ; // char tempfontname[1024]; char fonttype = 'r'; char *i; int actualFontSize; i = strchr(tempfontname, '-'); if (i != NIL) { *i = '\0'; } if (italicfont) fonttype = 'i'; actualFontSize = int ((textinfo.currentFontSize / .95) * 10); buffer << "set i [$Global(CurrentCanvas) create text " << textinfo.x + x_offset << " " << (currentDeviceHeight - textinfo.y + y_offset + actualFontSize / 7.2); buffer << " -text \""; outputEscapedText(textinfo.thetext.value()); buffer << endl << "\""; buffer << " -font {-*-" << tempfontname << "-"; if (boldfont) buffer << "bold"; else buffer << "medium"; buffer << "-" << fonttype; if (narrowfont) buffer << "-narrow--*-"; else if (condensedfont) buffer << "-condensed--*-"; else buffer << "-*--*-"; buffer << actualFontSize << "-72-72-*-*-*-*" << "}" << " -anchor sw" << " -fill " << colorstring(currentR(), currentG(), currentB()) << " -tags \"" << options->tagNames << "\" ]" << endl; if (strcmp(options->tagNames.value.value(), "") && !(options->noImPress)) { buffer << "set Group($Global(CurrentCanvas),$i) \"" << options->tagNames << "\"" << endl; } delete [] tempfontname; } static const int Fill = 1; static const int noFill = 0; void drvTK::show_path() { const int fillpat = (currentShowType() == drvbase::stroke) ? noFill : Fill; if (isPolygon()) { buffer << "set i [$Global(CurrentCanvas) create polygon "; print_coords(); if (fillpat == 1) { buffer << " -fill \"" << colorstring(currentR(), currentG(), currentB()) << "\""; } else { buffer << " -fill \"\""; } buffer << " -outline \"" << colorstring(currentR(), currentG(), currentB()) << "\"" << " -width " << (currentLineWidth()? currentLineWidth() : 1) << "p" << " -tags \"" << options->tagNames << "\" ]" << endl; } else { if (fillpat == 1) { buffer << "set i [$Global(CurrentCanvas) create polygon "; print_coords(); buffer << " -fill \"" << colorstring(currentR(), currentG(), currentB()) << "\""; buffer << " -outline \"" << colorstring(currentR(), currentG(), currentB()) << "\"" << " -width " << (currentLineWidth()? currentLineWidth() : 1) << "p" << " -tags \"" << options->tagNames << "\" ]" << endl; } else { buffer << "set i [$Global(CurrentCanvas) create line "; print_coords(); buffer << " -fill \"" << colorstring(currentR(), currentG(), currentB()) << "\"" << " -width " << (currentLineWidth()? currentLineWidth() : 1) << "p" << " -tags \"" << options->tagNames << "\" ]" << endl; } } if (strcmp(options->tagNames.value.value(), "") && !(options->noImPress)) { buffer << "set Group($Global(CurrentCanvas),$i) \"" << options->tagNames << "\"" << endl; } } static DriverDescriptionT < drvTK > D_tk("tk", "tk and/or tk applet source code", "","tk", false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend supports curves false, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::noimage, // no support for PNG file images DriverDescription::normalopen, true, // backend support multiple pages false /*clipping */ ); pstoedit-3.62/src/drvtk.h0000644000175500010010000000366412137224257012322 00000000000000#ifndef __drvTK_h #define __drvTK_h /* drvtk.h - Header file for driver to output Tcl/Tk canvas - written by Christopher Jay Cox (cjcox@acm.org) - 9/22/97 updated on 7/17/00 http://www.ntlug.org/~ccox/impress/ Based on... drvsample.h Interface for new driver backends Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvTK : public drvbase { public: derivedConstructor(drvTK); ~drvTK(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor> swapHW; OptionT < bool, BoolTrueExtractor> noImPress; OptionT < RSString, RSStringValueExtractor> tagNames; DriverOptions() : swapHW(true,"-R",0,0,"swap HW",0,false), noImPress(true,"-I",0,0,"no impress",0,false), tagNames(true,"-n","string",0,"tagnames",0,"") { ADD(swapHW); ADD(noImPress); ADD(tagNames); }; } * options; #include "drvfuncs.h" void show_text(const TextInfo & textInfo); private: void print_coords(); TempFile tempFile; ofstream &buffer; int objectId; const struct PaperInfo * paperinfo; void canvasCreate(); void outputEscapedText(const char* string); }; #endif pstoedit-3.62/src/drvvtk.cpp0000644000175500010010000001240412137224254013030 00000000000000/* drvVTK.cpp : This file is part of pstoedit Backend for VTK files, e.g. for ParaView - http://www.paraview.org/ Copyright (C) 2008 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvvtk.h" #include I_fstream #include I_stdio #include I_stdlib drvVTK::derivedConstructor(drvVTK): constructBase, pointsCount(0), lineCount(0), linepoints(0), pointStream(pointFile.asOutput()), polyStream(polyFile.asOutput() ) , colorStream(colorFile.asOutput() ) { // driver specific initializations // and writing of header to output file outf << "# vtk DataFile Version 2.0" << endl; outf << "created by pstoedit " << endl; outf << "ASCII" << endl; outf << "DATASET POLYDATA" << endl; } drvVTK::~drvVTK() { // now we can copy the points the output outf << "POINTS " << pointsCount << " float" << endl; ifstream & inbuffer_p = pointFile.asInput(); copy_file(inbuffer_p, outf); outf << "LINES " << lineCount << " " << linepoints + lineCount << endl; // now we can copy the polylines the output ifstream & inbuffer_l = polyFile.asInput(); copy_file(inbuffer_l, outf); outf << endl; outf << "CELL_DATA " << lineCount << endl; outf << "COLOR_SCALARS colors " << 4 << endl; // to see the correct colors, uncheck the "map scalars" in the Display tab of ParaView // now we can copy the polylines the output ifstream & inbuffer_c = colorFile.asInput(); copy_file(inbuffer_c, outf); options=0; } int drvVTK::add_point(const Point & p) { pointStream << p.x_ + x_offset << " " << p.y_ + y_offset << " " << 0.0f << endl; pointsCount++; return pointsCount; } int drvVTK::add_line(int s, int e, float r, float g, float b) { polyStream << "2 " << s-1 << " " << e-1 << endl; colorStream << r << " " << g << " " << b << " 0.5" << endl; lineCount++; return lineCount; } // Version with multi-segment lines void drvVTK::print_coords() { int bp = 0; colorStream << fillR() << " " << fillG() << " " << fillB() << " 0.5" << endl; polyStream << numberOfElementsInPath() << " " ; linepoints += numberOfElementsInPath(); lineCount++; for (unsigned int n = 0; n < numberOfElementsInPath(); n++) { const basedrawingelement & elem = pathElement(n); switch (elem.getType()) { case moveto:{ const Point & p = elem.getPoint(0); const int m = add_point(p); polyStream << m-1 << " "; bp = m; } break; case lineto:{ const Point & p = elem.getPoint(0); const int l = add_point(p); polyStream << l-1 << " "; } break; case closepath: polyStream << bp-1 << " "; break; case curveto:{ errf << "\t\tFatal: unexpected case in drvVTK - curveto " << endl; } break; default: errf << "\t\tFatal: unexpected case in drvVTK : default" << endl; abort(); break; } } polyStream << endl; } void drvVTK::open_page() { // outf << "# Opening page: " << currentPageNumber << endl; } void drvVTK::close_page() { // outf << "# Closing page: " << (currentPageNumber) << endl; } void drvVTK::show_text(const TextInfo & /* textinfo*/ ) { errf << "\t\tFatal: unexpected case in drvVTK - show_text " << endl; // should not happen - text is not supported } void drvVTK::show_path() { print_coords(); } void drvVTK::show_rectangle(const float llx, const float lly, const float urx, const float ury) { // just do show_path for a first guess show_path(); } void drvVTK::show_image(const PSImage & imageinfo) { errf << "\t\tFatal: unexpected case in drvVTK - show_image " << endl; } static DriverDescriptionT < drvVTK > D_VTK("vtk", "VTK driver: if you don't want to see this, uncomment the corresponding line in makefile and make again", "this is a long description for the VTKe driver","vtk", false, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend supports curves false, // backend supports elements which are filled and have edges false, // backend supports text DriverDescription::noimage, // support for PNG file images DriverDescription::normalopen, true, // if format supports multiple pages in one file false /*clipping */ ); pstoedit-3.62/src/drvvtk.h0000644000175500010010000000355412137224257012506 00000000000000#ifndef __drvVTK_h #define __drvVTK_h /* drvVTK.h : This file is part of pstoedit Class declaration for a VTK output driver with no additional attributes and methods (minimal interface) Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class drvVTK : public drvbase { public: derivedConstructor(drvVTK); ~drvVTK(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < int, IntValueExtractor >VTKeoption; DriverOptions(): VTKeoption(true,"-VTKeoption","integer",0,"just an example",0,99) { ADD(VTKeoption); } }*options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); public: virtual void show_image(const PSImage & imageinfo); private: void print_coords(); int add_point(const Point & p); int add_line(int s, int e, float r, float g, float b); int pointsCount; int lineCount; int linepoints; TempFile pointFile; ofstream &pointStream; TempFile polyFile; ofstream &polyStream; TempFile colorFile; ofstream &colorStream; }; #endif pstoedit-3.62/src/drvwmf.cpp0000644000175500010010000012661012137224254013022 00000000000000/* drvwmf.cpp : This file is part of pstoedit Backend for Windows Meta File (WMF/EMF) Copyright (C) 1996,1997 Jens Weber, rz47b7_AT_PostAG.DE Copyright (C) 1998 Thorsten Behrens and Bjoern Petersen Copyright (C) 1998 - 2013 Wolfgang Glunz Copyright (C) 2000 Thorsten Behrens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvwmf.h" #include I_string_h #include I_fstream #include I_stdio #include I_stdlib #include #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #if defined(_BIG_ENDIAN) WORD LittleEndian_Word(WORD w) { union { WORD data; BYTE b[2]; } u1, u2; u1.data = w; u2.b[0] = u1.b[1]; u2.b[1] = u1.b[0]; return u2.data; } DWORD32 LittleEndian_Dword32(DWORD32 dw) { union { DWORD32 data; BYTE b[4]; } u1, u2; u1.data = dw; u2.b[0] = u1.b[3]; u2.b[1] = u1.b[2]; u2.b[2] = u1.b[1]; u2.b[3] = u1.b[0]; return u2.data; } #else WORD LittleEndian_Word(WORD w) { return w; } DWORD32 LittleEndian_Dword32(DWORD32 dw) { return dw; } #endif /* defined(_BIG_ENDIAN) */ // // recognized options for WMF/EMF driver: // ====================================== // // m : maps all fonts in the document to Arial (should be available on every Windows installation) // n : emulate narrow fonts by shrinking fonts horizontally (sometimes does not look that good, but // it's the only chance, when requested font weight is not available. And this is quite common // for off-the-shelf Windows installations) // b : DON'T draw two white border pixel (upper left and lower right corner). They are normally // drawn to keep content always within bounding box (is sometimes clipped otherwise, i.e. Windows // doesn't respect pen thickness or rotated text extents). // This could be done more smarter for EMF, have to figure out... // l : prune lineends from text output (lineends are mapped to '#' in isolatin1) // // NOTE: old option 'e' (to generate enhanced metafile) removed, use driver emf instead! // old option 'p' (to generate palette) removed, wasn't documented and therefore not used, // and seems pretty unnecessary nowadays... // // NOTE: there's now experimental image support for WMF. Current deficiencies: as the WMF/EMF format // cannot account for transparencies, the whole bounding box of an image is white. this // might cause trouble if the image is rotated/sheared, because that enlarges the bounding // beyond the actual image. // // windows structure for standard metafile // placeable header (aka Aldus Metafile) const DWORD32 PLACEABLEKEY = 0x9AC6CDD7L; const short PLACEABLESIZE = 22; // see also http://premium.microsoft.com/msdn/library/techart/html/emfdcode.htm // regarding alignment (Wo Gl) #pragma pack(2) struct PLACEABLEHEADER { DWORD32 key; WORD hmf; WORD left; WORD top; WORD right; WORD bottom; WORD inch; DWORD32 reserved; WORD checksum; }; #pragma pack() static const char description[] = "generated by WMF/EMF backend of pstoedit\0input\0\0"; //lint !e840 //usage of nul char in string inline float drvWMF::scale() const { const float scalef = 20.0f; if (options->OpenOfficeMode) return 1.0f; else return scalef; } inline long drvWMF::transx(float x) const { if (options->OpenOfficeMode) return l_transX(x); else return (long)(scale() * (x)); } inline long drvWMF::transy(float y) const { if (options->OpenOfficeMode) return l_transY(y); else return (long)(scale() * (currentDeviceHeight - y)); } void drvWMF::initMetaDC(HDC hdc){ #ifdef OLDCODE // temporary - testing // set bounding box // SetWindowOrgEx(hdc, minX, minY, NIL); SetWindowOrgEx(hdc, minX, maxY, NIL); // SetViewportOrgEx(hdc, 0, 0, NIL); SetWindowExtEx(hdc, maxX - minX, maxY - minY, NIL); SetViewportExtEx(hdc, maxX - minX, maxY - minY, NIL); // SetViewportExtEx(hdc, // (long)((float)(maxX - minX) * (float)GetDeviceCaps(desktopDC,HORZRES) / // (float)GetDeviceCaps(desktopDC,HORZSIZE) + .5), // (long)((float)(maxY - minY) * (float)GetDeviceCaps(desktopDC,VERTRES) / // (float)GetDeviceCaps(desktopDC,VERTSIZE) + .5), NIL); #else // set reasonable mapping mode (don't want distortion) //SetMapMode(hdc, MM_ISOTROPIC); SetMapMode(hdc, MM_ANISOTROPIC); if (!options->OpenOfficeMode) { if (1){ const int result = SetMapMode(hdc, MM_ANISOTROPIC); assert(result != 0); } SIZE oldWinExt; { const BOOL result = SetWindowExtEx(hdc, 1440, 1440, &oldWinExt); // const BOOL result = SetWindowExtEx(pd->hdcEMF,144,144,&oldWinExt); assert(result != 0); } SIZE oldViewPortExt; { const int result = SetViewportExtEx(hdc, GetDeviceCaps(metaDC, LOGPIXELSX), GetDeviceCaps(metaDC, LOGPIXELSY), &oldViewPortExt); assert(result != 0); } } #endif } drvWMF::derivedConstructor(drvWMF): constructBase, oldColoredPen(NIL), oldColoredBrush(NIL), enhanced(false), outFile(0L) { // do some consistency checking if (! ( (sizeof(PLACEABLEHEADER) == PLACEABLESIZE) || (sizeof(PLACEABLEHEADER) == (PLACEABLESIZE+2)) ) ) { errf << "WARNING: structure size mismatch. Please contact author. Expecting :" << PLACEABLESIZE << " found " << sizeof(PLACEABLEHEADER) << endl; errf << "sizeof(WORD) = " << sizeof(WORD) << endl; // MSVC: 2 errf << "sizeof(DWORD32) = " << sizeof(DWORD32) << endl; // MSVC: 4 errf << "sizeof(RECT) = " << sizeof(RECT) << endl; // MSVC: 16 errf << "sizeof(HANDLE) = " << sizeof(HANDLE) << endl; // MSVC: 4 ctorOK = false; return; // now the write below writes PLACEABLESIZE and no longer sizeof(PLACEABLEHEADER) // this should be independent then of the packing // the 2 bytes saved are those at the end of the struct } // desktopDC = GetDC(GetDesktopWindow()); if (options->OpenOfficeMode) { desktopDC = GetDC(GetDesktopWindow()); } else { desktopDC = NIL; } // which output format? if (strcmp(Pdriverdesc->symbolicname, "emf") == 0) { enhanced = true; } if (enhanced) { #if 1 const BBox & psBBox = getCurrentBBox(); minX = transx(psBBox.ll.x_); minY = transy(psBBox.ur.y_); maxX = transx(psBBox.ur.x_); maxY = transy(psBBox.ll.y_); // const RECT bbox = { minX, minY, maxX, maxY }; if (Verbose()) errf << "calculated Bounding Box: " << minX << " " << minY << " " << maxX << " " << maxY << endl; // cout << "PostScript Bounding Box: " << psBBox.ll.x_ << " " << psBBox.ll.y_ << " " << psBBox.ur.x_ << " " << psBBox.ur.y_ << endl; #endif // // enhanced-Metafile (memory based) for W95/98 or NT // if -nb is set, then narrowbox = false , -nb means no bounding box if (options->winbb) { if (Verbose()) errf << " Windows will calculate BB " << endl; metaDC = CreateEnhMetaFile(desktopDC, NIL, NIL, NIL); } else { // under non Windows systems we cannot use PlayEnhMetafile if (Verbose()) errf << " not creating with bounding box " << endl; // metaDC = CreateEnhMetaFile(desktopDC, outFileName.value(), &bbox , description); metaDC = CreateEnhMetaFile(desktopDC, outFileName.value(), NIL, description); } if (!metaDC) { errf << "ERROR: could not create enhanced metafile" << endl; ctorOK = false; return; } initMetaDC(metaDC); } else { // take temp file for standard WMF, to prepend placeable header tempName = full_qualified_tempnam("wmftemp"); // standard metafile for Win16 metaDC = CreateMetaFile(tempName.value()); if (!metaDC) { errf << "ERROR: could not open temporary metafile: " << tempName << endl; ctorOK = false; return; } if ((outFile = fopen(outFileName.value(), "wb")) == 0L) { errf << "ERROR: cannot open final metafile " << outFileName << endl; ctorOK = false; return; } } y_offset = 0; x_offset = 0; // in maxY and maxX are the highest values of the drawing maxY = 0; maxX = 0; maxStatus = 0; // 0, until first value set in maxY and maxX // in minX und minY are the lowest values of the drawing minX = 0; minY = 0; minStatus = 0; // 0, until first value set in minX and minY // setup pen for drawing functions const POINT PenWidth = { 0, 0 }; penData.lopnStyle = PS_SOLID; // solid pen penData.lopnWidth = PenWidth; // width of pen penData.lopnColor = RGB(0, 0, 0); // color of pen: black coloredPen = 0L; // setup brush for drawing functions brushData.lbStyle = BS_SOLID; // solid brush brushData.lbColor = RGB(0, 0, 0); // color of brush (black) brushData.lbHatch = 0L; // no pattern coloredBrush = 0L; // set default font if (options->mapToArial) { const char *const defaultfontname = "Arial"; setCurrentFontName(defaultfontname, false /* is standard font */ ); } else { const char *const defaultfontname = "System"; setCurrentFontName(defaultfontname, false /* is standard font */ ); } myFont = 0L; oldFont = 0L; // set reasonable text drawing mode SetBkMode(metaDC, TRANSPARENT); // set Postscript-like text alignment SetTextAlign(metaDC, TA_BASELINE); } static void writeErrorCause(const char * mess) { #ifdef _WIN32 DWORD ec = GetLastError(); LPVOID lpMsgBuf; (void)FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, ec, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); cerr << "Error Code for " << mess << " ec: " << ec << " " << (char*) lpMsgBuf << endl; LocalFree( lpMsgBuf ); #endif } drvWMF::~drvWMF() { const BBox & psBBox = getCurrentBBox(); minX = transx(psBBox.ll.x_); minY = transy(psBBox.ur.y_); maxX = transx(psBBox.ur.x_); maxY = transy(psBBox.ll.y_); if (Verbose()) errf << "original PostScript Bounding Box : " << psBBox.ll.x_ << " " << psBBox.ll.y_ << " " << psBBox.ur.x_ << " " << psBBox.ur.y_ << endl; if (Verbose()) errf << "transformed PostScript Bounding Box: " << minX << " " << minY << " " << maxX << " " << maxY << endl; // is the output within signed integer boundaries? if (minX < -20000 || minX > 20000 || minY < -20000 || minY > 20000 || maxX < -20000 || maxX > 20000 || maxY < -20000 || maxY > 20000) { // issue warning, coordinate overflow possible ! errf << "Possible coordinate overflow, reduce scale! " << endl; errf << " Origin: " << minX << " , " << minY << endl; errf << " Size: " << maxX - minX << " , " << maxY - minY << endl; } // set dummy pixel, if not EMF // if( !enhanced && drawBoundingBox ) if (options->drawBoundingBox) { // standard metafile does not care much about user space. // so we have to draw two white dummy points at the pic's boundaries if (Verbose()) { // in verbose mode use a non with pixel SetPixel(metaDC, minX, minY, RGB(0, 120, 0)); SetPixel(metaDC, maxX, maxY, RGB(0, 120, 120)); } else { SetPixel(metaDC, minX, minY, RGB(255, 255, 255)); SetPixel(metaDC, maxX, maxY, RGB(255, 255, 255)); } } // free any allocated objects if (coloredPen) { SelectObject(metaDC, oldColoredPen); DeleteObject(coloredPen); } if (coloredBrush) { SelectObject(metaDC, oldColoredBrush); DeleteObject(coloredBrush); } if (myFont) { SelectObject(metaDC, oldFont); DeleteObject(myFont); myFont = 0L; } // close and destroy metafile if (enhanced) { // close memory-based metafile (we're done drawing) HENHMETAFILE hMeta = CloseEnhMetaFile(metaDC); #if 0 // query bounding informations ENHMETAHEADER enhHeader; GetEnhMetaFileHeader(hMeta, sizeof(ENHMETAHEADER), &enhHeader); // // under construction. should somehow be possible to abandon dummy pixel drawing for // EMF, by setting bounding box and friends appropriately // errf << "bbox: " << minX << " " << minY << " " << maxX << " " << maxY << endl; const RECT dimension = { 0, 0, enhHeader.rclFrame.right - enhHeader.rclFrame.left, enhHeader.rclFrame.bottom - enhHeader.rclFrame.top }; const RECT dimension = { 0, 0, (long) (((float) (maxX - minX) * (float) GetDeviceCaps(desktopDC, HORZRES) / (float) GetDeviceCaps(desktopDC, HORZSIZE)) * 10.0 + .5), (long) (((float) (maxY - minY) * (float) GetDeviceCaps(desktopDC, VERTRES) / (float) GetDeviceCaps(desktopDC, VERTSIZE)) * 10.0 + .5) }; #endif // create our final metafile (metaDC is reused) // need to have two metafiles, because we know the output dimension just now if (options->winbb) { // const RECT bbox = { minX, minY, maxX, maxY }; if (Verbose()) cout << "creating final metafile" << endl; // cout << "creating with bounding box 2: " << minX << "," << minY<< "," << maxX<< "," << maxY << endl; // don't need a BB here - Windows will calculate it by itself (that is the whole purpose of the later replay) metaDC = CreateEnhMetaFile(desktopDC, outFileName.value(), NIL, description); initMetaDC(metaDC); } if (metaDC) { if (options->winbb) { const RECT bbox = { minX, minY, maxX, maxY }; // const RECT bbox = {minX, minY, maxX-minX, maxY-minY}; // const RECT bbox = {minX, maxY, maxX-minX, maxY-minY}; // const RECT bbox = {minX, maxY, maxX+2*minX, -minY-maxY}; // replay recorded metafile (hMeta -> metaDC) if (Verbose()) errf << "Info: replaying hMeta to metaDC with bounding box : " << minX << "," << minY<< "," << maxX<< "," << maxY << endl; if (!PlayEnhMetaFile(metaDC, hMeta, &bbox)) { writeErrorCause("PlayEnhMetaFile"); errf << "ERROR: cannot replay created metafile" << endl; } else { if (Verbose()) errf << "Info: replayed metafile" << endl; } } // close and commit metafile (void)DeleteEnhMetaFile(CloseEnhMetaFile(metaDC)); } else { errf << "ERROR: could not open metafile for replay: " << outFileName << endl; } (void)DeleteEnhMetaFile(hMeta); } else { (void)DeleteMetaFile(CloseMetaFile(metaDC)); // add placeable header to standard metafile PLACEABLEHEADER pHd; FILE *inFile; WORD checksum; if ((inFile = fopen(tempName.value(), "rb")) != 0L) { if (outFile != 0L) { // setup header pHd.key = LittleEndian_Dword32(PLACEABLEKEY); pHd.hmf = LittleEndian_Word(0); pHd.left = LittleEndian_Word((WORD) minX); pHd.top = LittleEndian_Word((WORD) minY); pHd.right = LittleEndian_Word((WORD) maxX); pHd.bottom = LittleEndian_Word((WORD) maxY); pHd.inch = LittleEndian_Word(12); pHd.reserved = LittleEndian_Dword32(0); // calculate checksum checksum = 0; WORD *checksumField = (WORD *) & pHd; for (unsigned int i = 0; i < 10; i++) checksum ^= checksumField[i]; pHd.checksum = LittleEndian_Word(checksum); // write header if (fwrite(&pHd, PLACEABLESIZE , 1, outFile) != 1) { errf << "Can't write final metafile" << endl; } // append metafile data do { const int BUFSIZE = 1024; char buf[BUFSIZE]; size_t read = fread(buf, 1, BUFSIZE, inFile); if (read > 0) { if (fwrite(buf, 1, read, outFile) != read) { errf << "Can't write final metafile" << endl; } } } while (!feof(inFile)); fclose(outFile); } fclose(inFile); } (void)remove(tempName.value()); // cout << "tmp name " << tempName.value() << endl; } // delete desktop DC (might need it above) ReleaseDC(GetDesktopWindow(), desktopDC); desktopDC=0; options=0; metaDC=0; } // the attributes for pens and brushes are set here. // new Pen/Brush is selected into the DC void drvWMF::setDrawAttr() { // specify in RGB values penData.lopnColor = RGB((BYTE) (edgeR() * 255 + .5), (BYTE) (edgeG() * 255 + .5), (BYTE) (edgeB() * 255 + .5)); brushData.lbColor = RGB((BYTE) (fillR() * 255 + .5), (BYTE) (fillG() * 255 + .5), (BYTE) (fillB() * 255 + .5)); switch (currentLineType()) { case dashed: penData.lopnStyle = PS_DASH; break; case dotted: penData.lopnStyle = PS_DOT; break; case dashdot: penData.lopnStyle = PS_DASHDOT; break; case dashdotdot: penData.lopnStyle = PS_DASHDOTDOT; break; case solid: penData.lopnStyle = PS_SOLID; break; } const POINT PenWidth = { (int) (currentLineWidth() + .5), 0 }; // rounded int penData.lopnWidth = PenWidth; if (coloredPen) { SelectObject(metaDC, oldColoredPen); DeleteObject(coloredPen); coloredPen = 0L; } coloredPen = CreatePenIndirect(&penData); if (!coloredPen) { errf << "ERROR: setDrawAttr: could not create pen !" << endl; } else { oldColoredPen = (HPEN) SelectObject(metaDC, coloredPen); } if (coloredBrush) { SelectObject(metaDC, oldColoredBrush); DeleteObject(coloredBrush); coloredBrush = 0L; } coloredBrush = CreateBrushIndirect(&brushData); if (!coloredBrush) { errf << "ERROR: setDrawAttr: could not create brush !" << endl; } else { oldColoredBrush = (HBRUSH) SelectObject(metaDC, coloredBrush); } } int drvWMF::fetchFont(const TextInfo & textinfo, short int textHeight, short int textAngle) { LOGFONT theFontRec; theFontRec.lfHeight = -textHeight ; theFontRec.lfWidth = 0; // optimal fit theFontRec.lfEscapement = textAngle; theFontRec.lfOrientation = textAngle; theFontRec.lfWeight = FW_DONTCARE; // default: don't care if (strstr(textinfo.currentFontWeight.value(), "Regular")) theFontRec.lfWeight = FW_NORMAL; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Medium")) theFontRec.lfWeight = FW_NORMAL; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Normal")) theFontRec.lfWeight = FW_NORMAL; if (options->emulateNarrowFonts) { if (strstr(textinfo.currentFontWeight.value(), "Thin") || strstr(textinfo.currentFontName.value(), "Thin") || strstr(textinfo.currentFontFullName.value(), "Thin")) { theFontRec.lfWidth = textHeight / 3; // narrow font emulation (trial and error value for Arial font) } if (strstr(textinfo.currentFontWeight.value(), "Extralight") || strstr(textinfo.currentFontName.value(), "Extralight") || strstr(textinfo.currentFontFullName.value(), "Extralight")) { theFontRec.lfWidth = textHeight / 4; // narrow font emulation (trial and error value for Arial font) } if (strstr(textinfo.currentFontWeight.value(), "Ultralight") || strstr(textinfo.currentFontName.value(), "Ultralight") || strstr(textinfo.currentFontFullName.value(), "Ultralight")) { theFontRec.lfWidth = textHeight / 4; // narrow font emulation (trial and error value for Arial font) } if (strstr(textinfo.currentFontWeight.value(), "Light") || strstr(textinfo.currentFontName.value(), "Light") || strstr(textinfo.currentFontFullName.value(), "Light") || strstr(textinfo.currentFontWeight.value(), "Condensed") || strstr(textinfo.currentFontName.value(), "Condensed") || strstr(textinfo.currentFontFullName.value(), "Condensed")) { theFontRec.lfWidth = textHeight / 3; // narrow font emulation (trial and error value for Arial font) } } if (strstr(textinfo.currentFontWeight.value(), "Semibold") || strstr(textinfo.currentFontName.value(), "Semibold") || strstr(textinfo.currentFontFullName.value(), "Semibold")) theFontRec.lfWeight = FW_BOLD; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Demibold") || strstr(textinfo.currentFontName.value(), "Demibold") || strstr(textinfo.currentFontFullName.value(), "Demibold")) theFontRec.lfWeight = FW_BOLD; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Bold") || strstr(textinfo.currentFontName.value(), "Bold") || strstr(textinfo.currentFontFullName.value(), "Bold")) theFontRec.lfWeight = FW_BOLD; if (strstr(textinfo.currentFontWeight.value(), "Extrabold") || strstr(textinfo.currentFontName.value(), "Extrabold") || strstr(textinfo.currentFontFullName.value(), "Extrabold")) theFontRec.lfWeight = FW_BOLD; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Ultrabold") || strstr(textinfo.currentFontName.value(), "Ultrabold") || strstr(textinfo.currentFontFullName.value(), "Ultrabold")) theFontRec.lfWeight = FW_BOLD; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Heavy") || strstr(textinfo.currentFontName.value(), "Heavy") || strstr(textinfo.currentFontFullName.value(), "Heavy")) theFontRec.lfWeight = FW_BOLD; // other values don't work if (strstr(textinfo.currentFontWeight.value(), "Black") || strstr(textinfo.currentFontName.value(), "Black") || strstr(textinfo.currentFontFullName.value(), "Black")) theFontRec.lfWeight = FW_BOLD; // other values don't work if ((strstr(textinfo.currentFontName.value(), "Italic") != NIL) || (strstr(textinfo.currentFontName.value(), "Oblique") != NIL) || (strstr(textinfo.currentFontFullName.value(), "Italic") != NIL) || (strstr(textinfo.currentFontFullName.value(), "Oblique") != NIL)) { theFontRec.lfItalic = TRUE; } else { theFontRec.lfItalic = 0; } theFontRec.lfUnderline = 0; theFontRec.lfStrikeOut = 0; theFontRec.lfOutPrecision = OUT_DEFAULT_PRECIS; theFontRec.lfClipPrecision = CLIP_DEFAULT_PRECIS; theFontRec.lfQuality = PROOF_QUALITY; theFontRec.lfPitchAndFamily = VARIABLE_PITCH | FF_DONTCARE; // let every font be possible if ((strstr(textinfo.currentFontFullName.value(), "Symbol") != NIL) || (strstr(textinfo.currentFontFullName.value(), "symbol") != NIL)) { theFontRec.lfCharSet = SYMBOL_CHARSET; strcpy_s(theFontRec.lfFaceName, LF_FACESIZE, "symbol"); } else if ((strstr(textinfo.currentFontFamilyName.value(), "Computer Modern") != NIL) ) { // special handling for TeX Fonts - fix supplied by James F. O'Brien (job at cs.berkeley.edu) theFontRec.lfWeight = FW_NORMAL; theFontRec.lfItalic = 0; theFontRec.lfUnderline = 0; theFontRec.lfCharSet = ANSI_CHARSET; strcpy_s(theFontRec.lfFaceName,LF_FACESIZE, textinfo.currentFontName.value()); } else { theFontRec.lfCharSet = ANSI_CHARSET; if (options->mapToArial) strcpy_s(theFontRec.lfFaceName,LF_FACESIZE, "Arial"); else /* formerly we used currentFontFamilyName but FontName seems to be better */ strcpy_s(theFontRec.lfFaceName,LF_FACESIZE, textinfo.currentFontName.value()); } if (myFont) { SelectObject(metaDC, oldFont); DeleteObject(myFont); myFont = 0L; } myFont = CreateFontIndirect(&theFontRec); if (!myFont) { errf << "ERROR: fetchFont: could not create font !" << endl; } else { oldFont = (HFONT) SelectObject(metaDC, myFont); } return 0; } // fill point array and draw void drvWMF::drawPoly(POINT * aptlPoints, int *aptlNumPts, polyType type) { POINT lastStart = { 0, 0 }; bool lastWasMoveTo = false; bool lastWasClosePath = false; unsigned int numOfPolies = 0; unsigned int numOfPts = 0; unsigned int p = 0; const unsigned int numOfElements = numberOfElementsInPath(); for (unsigned int n = 0; n < numOfElements && p < 2 * numberOfElementsInPath() && numOfPolies < 2 * numOfElements; n++) { const basedrawingelement & elem = pathElement(n); if (elem.getType() != closepath) { aptlPoints[p].x = transx(elem.getPoint(0).x_); aptlPoints[p].y = transy(elem.getPoint(0).y_); } else { aptlPoints[p].x = transx(0); aptlPoints[p].y = transy(0); } if (elem.getType() == moveto || elem.getType() == lineto || elem.getType() == curveto) { const long lineWidth = (int) (currentLineWidth() + .5); // rounded int // set drawing sizes if (minStatus) { if (aptlPoints[p].x - lineWidth < minX) minX = aptlPoints[p].x - lineWidth; if (aptlPoints[p].y - lineWidth < minY) minY = aptlPoints[p].y - lineWidth; } else { minX = aptlPoints[p].x - lineWidth; minY = aptlPoints[p].y - lineWidth; minStatus = 1; } if (maxStatus) { if (aptlPoints[p].x + lineWidth > maxX) maxX = aptlPoints[p].x + lineWidth; if (aptlPoints[p].y + lineWidth > maxY) maxY = aptlPoints[p].y + lineWidth; } else { maxX = aptlPoints[p].x + lineWidth; maxY = aptlPoints[p].y + lineWidth; maxStatus = 1; } } switch (elem.getType()) { case moveto: if (type == TYPE_LINES) { if (!MoveToEx(metaDC, aptlPoints[p].x, aptlPoints[p].y, NIL)) { errf << "ERROR: MoveTo: " << aptlPoints[p].x << "," << aptlPoints[p].y << endl; } } else { // ignore every path that is no area! if (numOfPts > 2) { // if path not closed -> do it manually! if (lastWasClosePath == FALSE) { if (p >= 2 * numberOfElementsInPath()) { errf << "ERROR: MoveTo: Out of array mem!" << endl; } // move this point one ahead aptlPoints[p + 1] = aptlPoints[p]; // insert line to startpoint aptlPoints[p] = lastStart; p++; numOfPts++; } // store number of points for old subpath aptlNumPts[numOfPolies] = numOfPts; // one polygon more (for PolyPolygon) numOfPolies++; } else if (numOfPts == 2) { // we have a line here, so draw it! if (!MoveToEx(metaDC, aptlPoints[p - 2].x, aptlPoints[p - 2].y, NIL)) { errf << "ERROR: MoveTo: " << aptlPoints[p - 2]. x << "," << aptlPoints[p - 2].y << endl; } if (!LineTo(metaDC, aptlPoints[p - 1].x, aptlPoints[p - 1].y)) { errf << "ERROR: LineTo: " << aptlPoints[p - 1]. x << "," << aptlPoints[p - 1].y << endl; } } // all lower numbers do not represent a line/polygon. Ignore them // start this subpath newly numOfPts = 0; // set flag to remove lone moveto's lastWasMoveTo = true; // clear flag to connect filled segments lastWasClosePath = true; } // save last starting position in case we've to close path lastStart = aptlPoints[p]; break; case curveto: case lineto: if (type == TYPE_LINES) { if (!LineTo(metaDC, aptlPoints[p].x, aptlPoints[p].y)) { errf << "ERROR: LineTo: " << aptlPoints[p].x << "," << aptlPoints[p].y << endl; } } else { // clear flag to remove lone moveto's lastWasMoveTo = false; // clear flag to connect filled segments lastWasClosePath = false; // do nothing, point is already in array } break; case closepath: if (type == TYPE_LINES) { // close the thingy if (!LineTo(metaDC, lastStart.x, lastStart.y)) { errf << "ERROR: LineTo: " << lastStart.x << "," << lastStart.y << endl; } } else { // clear flag to remove lone moveto's lastWasMoveTo = false; // set flag to connect filled segments lastWasClosePath = true; // insert line to startpoint // (overwrite current point - closepath did not inserted points) aptlPoints[p] = lastStart; } break; default: errf << "\t\tFatal: unexpected case in drvwmf (line " << __LINE__ << ")" << endl; abort(); break; } // next free point p++; // next point in subpath numOfPts++; } if (type != TYPE_LINES) { // remove last moveTo, as it's lonely if (lastWasMoveTo != FALSE) numOfPts--; // ignore every path that is no area! if (numOfPts > 2) { // if path not closed -> do it manually! if (lastWasClosePath == FALSE) { if (p >= 2 * numberOfElementsInPath()) { errf << "ERROR: MoveTo: Out of array mem!" << endl; } // move this point one ahead aptlPoints[p + 1] = aptlPoints[p]; // insert line to startpoint aptlPoints[p] = lastStart; p++; numOfPts++; } // store number of points for old subpath aptlNumPts[numOfPolies] = numOfPts; // one polygon more (for PolyPolygon), as either we closed it above, // or closepath did it and started no new numOfPolies++; } else if (numOfPts == 2) { // we have a line here, so draw it! if (!MoveToEx(metaDC, aptlPoints[p - 2].x, aptlPoints[p - 2].y, NIL)) { errf << "ERROR: MoveTo: " << aptlPoints[p - 2].x << "," << aptlPoints[p - 2].y << endl; } if (!LineTo(metaDC, aptlPoints[p - 1].x, aptlPoints[p - 1].y)) { errf << "ERROR: LineTo: " << aptlPoints[p - 1].x << "," << aptlPoints[p - 1].y << endl; } } // all lower numbers do not represent a line/polygon. Ignore them // anything to do? if (numOfPolies > 0) { if (!SetPolyFillMode(metaDC, (currentShowType() == fill) ? WINDING : ALTERNATE)) { errf << "ERROR: could not set fill mode" << endl; } if (!PolyPolygon(metaDC, aptlPoints, aptlNumPts, numOfPolies)) { DWORD ec = GetLastError(); errf << "ERROR: Polygon could not be drawn: (" << ec << ")" << endl; errf << "Number of Points: " << p << endl; for (unsigned int i = 0; i < p; i++) { errf << aptlPoints[i].x << "," << aptlPoints[i].y << endl; } } } } } void drvWMF::close_page() { // no function in drvwmf } void drvWMF::open_page() { // no function in drvwmf } void drvWMF::show_path() { // get us twice the number of elements in path, // as maybe every subpath is closed and consists of ONE point! POINT *aptlPoints = new POINT[2 * numberOfElementsInPath()]; if (aptlPoints == 0) { errf << "ERROR: Cannot allocate memory for point-array" << endl; return; } // get us twice the number of elements in path, // as maybe every subpath is closed and consists of ONE point! int *aptlNumPts = new int[2 * numberOfElementsInPath()]; if (aptlNumPts == 0) { errf << "ERROR: Cannot allocate memory for pointNum-array" << endl; delete [] aptlPoints; return; } // update pen/brush setDrawAttr(); // determine type: fill or line switch (currentShowType()) { case drvbase::stroke: // draw lines drawPoly(aptlPoints, aptlNumPts, TYPE_LINES); break; case drvbase::fill: case drvbase::eofill: // draw filled polygon drawPoly(aptlPoints, aptlNumPts, TYPE_FILL); break; default: // cannot happen errf << "unexpected ShowType " << (int) currentShowType(); break; } delete[]aptlPoints; delete[]aptlNumPts; } void drvWMF::show_text(const TextInfo & textinfo) { // set text color SetTextColor(metaDC, RGB((BYTE) (textinfo.currentR * 255 + .5), (BYTE) (textinfo.currentG * 255 + .5), (BYTE) (textinfo.currentB * 255 + .5))); const short int textHeight = (short int) (textinfo.currentFontSize*scale() + .5) ; // rounded int const short int textAngle = (short int) (10 * textinfo.currentFontAngle + .5); // Windows needs 10th of degree // any need to change font handle? if (fontchanged()) (void)fetchFont(textinfo, textHeight, textAngle); const long x1 = transx(textinfo.x); const long y1 = transy(textinfo.y); const long x2 = transx(textinfo.x_end); const long y2 = transy(textinfo.y_end); if (Verbose()) cout << "placing text : " << textinfo.thetext << " at " << textinfo.x << "," << textinfo.y<< " in EMF coords: " << x1 << "," << y1 << endl; // calculate bounding box // // NOTE: cannot do that exactly (with ascent and descent height), // because DC queries are not permitted for metafile DCs. // const int xOff = abs((int) (sin(textinfo.currentFontAngle * M_PI / 180) * textHeight + .5)); const int yOff = abs((int) (cos(textinfo.currentFontAngle * M_PI / 180) * textHeight + .5)); const int xMin = (int) min(x1 - xOff, x2 - xOff); const int xMax = (int) max(x1 + xOff, x2 + xOff); const int yMin = (int) min(y1 - yOff, y2 - yOff); const int yMax = (int) max(y1 + yOff, y2 + yOff); if (minStatus) { if (xMin < minX) minX = xMin; if (yMin < minY) minY = yMin; } else { minX = xMin; minY = yMin; minStatus = 1; } if (maxStatus) { if (xMax > maxX) maxX = xMax; if (yMax > maxY) maxY = yMax; } else { maxX = xMax; maxY = yMax; maxStatus = 1; } size_t textLen = strlen(textinfo.thetext.value()); if (options->pruneLineEnds) { /* check for '#' at lineend */ if (textLen > 0 && textinfo.thetext.value()[textLen - 1] == '#') { /* write one character less */ textLen--; } } #if defined(_WIN32) (void)TextOut(metaDC, x1, y1, textinfo.thetext.value(), textLen); // TextOut(metaDC, 10, 10, "hello",4); #else if (options->notforWindows) { // the user is aware of generating non-portable output TextOut(metaDC, x1, y1, textinfo.thetext.value(), textLen); } else { // we are not running Windows - so we need an emulation - see note below const long textdistance = (long) pythagoras((double)(x1-x2), (double)(y1-y2)); const int letterspace = (textLen > 1) ? (textdistance / (textLen-1)) : 0 ; // if there is just one char in the text, then the inter letter spacing is 0 anyway int * pxDistance = new int[textLen]; for (unsigned int letter = 0; letter < textLen; letter++) { pxDistance[letter] = letterspace; } const UINT fuOptions = 0; ExtTextOut (metaDC, x1, y1, fuOptions, 0, textinfo.thetext.value(), textLen, pxDistance); delete [] pxDistance; static bool warningwritten = false; if (textLen > 1 && !warningwritten) { warningwritten = true; errf << "Warning: Inter letter spacing is approximated by pstoedit because of problems in libemf. Use -pta option if results are not OK." << endl; } } #endif #if 0 ExtTextOut (hdc, xStart, yStart, iOptions, &rect, pString, iCount, pxDistance) ; The fifth argument is a pointer to a rectangle structure. This is either a clipping rectangle, (if iOptions is set to ETO_CLIPPED, or a background rectangle to be filled with the current background color, if iOptions is set to ETO_OPAQUE. You can specify both options or neither. The last argument is an array of integers that specify the spacing between consecutive characters in the string. This allows a program to tighten or loosen intercharacter spacing, which is sometimes required for justifying a single word of text in a narrow column. The argument can be set to NULL for default character spacing. Note by Glunz: Even if the spacing argument can be set to NULL according to the description above, this creates a problem when libemf is used. Libemf passes this NULL to the generated EMF file which then causes the file to be no longer usable under newer versions of Windows. It seems so that the Windows-API calculates this inter letter spacing automatically before writing the record to the EMF file. But this needs access to font information which is not easily done in libemf. Hence one work around is to assume a fixed width font and approximate the inter letter spacing by dividing the distance (P_end - P_start) by the number of characters in the string. #endif } void drvWMF::show_rectangle(const float llx, const float lly, const float urx, const float ury) { if (1) { show_path(); } else { // this code is disabled - see note below. // needs to be fixed. RECT localRect; // update pen/brush setDrawAttr(); localRect.left = transx(llx); localRect.top = transy(lly); localRect.right = transx(urx); localRect.bottom = transy(ury); // calculate bounding box // const int xMin = (int) min(localRect.left, localRect.right); const int xMax = (int) max(localRect.left, localRect.right); const int yMin = (int) min(localRect.top, localRect.bottom); const int yMax = (int) max(localRect.top, localRect.bottom); if (minStatus) { if (xMin < minX) minX = xMin; if (yMin < minY) minY = yMin; } else { minX = xMin; minY = yMin; minStatus = 1; } if (maxStatus) { if (xMax > maxX) maxX = xMax; if (yMax > maxY) maxY = yMax; } else { maxX = xMax; maxY = yMax; maxStatus = 1; } if (0 && currentShowType() == drvbase::stroke) { // wogl - this code is disabled. I don't know why this was this way. // one cannot use a RECT as Point * and a polyline needs 4 points to make a RECT. // strange .... (void)Polyline(metaDC, (POINT *) & localRect, 2); // but also using a Rectangle isn't correct. } else { (void)Rectangle(metaDC, transx(llx), transy(lly), transx(urx), transy(ury)); } } } void drvWMF::show_image(const PSImage & image) { // first retrieve bounding box Point lowerLeft, upperRight; image.getBoundingBox(lowerLeft, upperRight); // not only bounding box must account for scale, // but also transformation matrix! // scale bounding box lowerLeft.x_ *= getScale(); lowerLeft.y_ *= getScale(); upperRight.x_ *= getScale(); upperRight.y_ *= getScale(); const long width = abs(i_transX(upperRight.x_) - i_transX(lowerLeft.x_)); const long height = abs(i_transY(upperRight.y_) - i_transY(lowerLeft.y_)); if (Verbose()) { errf << "image.Width:" << image.width << " image.Height: " << image.height << endl; errf << "Width:" << width << " Height: " << height << endl; } // calculate bounding box // const int xMin = (int) min(transx(upperRight.x_), transx(lowerLeft.x_)); const int xMax = (int) max(transx(upperRight.x_), transx(lowerLeft.x_)); const int yMin = (int) min(transy(upperRight.y_), transy(lowerLeft.y_)); const int yMax = (int) max(transy(upperRight.y_), transy(lowerLeft.y_)); if (minStatus) { if (xMin < minX) minX = xMin; if (yMin < minY) minY = yMin; } else { minX = xMin; minY = yMin; minStatus = 1; } if (maxStatus) { if (xMax > maxX) maxX = xMax; if (yMax > maxY) maxY = yMax; } else { maxX = xMax; maxY = yMax; maxStatus = 1; } // calc long-padded size of scanline const long scanlineLen = ((width * 3) + 3) & ~3L; // now lets get some mem unsigned char *const output = new unsigned char[scanlineLen * height]; for (long i = 0; i < scanlineLen * height; i++) output[i] = 255; // default is background (white) if (!output) { errf << "ERROR: Cannot allocate memory for image" << endl; return; } // setup inverse transformation matrix (scaled, too!) const float matrixScale(image.normalizedImageCurrentMatrix[0] * image.normalizedImageCurrentMatrix[3] - image.normalizedImageCurrentMatrix[2] * image.normalizedImageCurrentMatrix[1]); const float inverseMatrix[] = { image.normalizedImageCurrentMatrix[3] / matrixScale / getScale(), -image.normalizedImageCurrentMatrix[1] / matrixScale / getScale(), -image.normalizedImageCurrentMatrix[2] / matrixScale / getScale(), image.normalizedImageCurrentMatrix[0] / matrixScale / getScale(), (image.normalizedImageCurrentMatrix[2] * image.normalizedImageCurrentMatrix[5] - image.normalizedImageCurrentMatrix[4] * image.normalizedImageCurrentMatrix[3]) / matrixScale, (image.normalizedImageCurrentMatrix[4] * image.normalizedImageCurrentMatrix[1] - image.normalizedImageCurrentMatrix[0] * image.normalizedImageCurrentMatrix[5]) / matrixScale }; // now transform image for (long y = 0; y < height; y++) { // buffer current output scanline (saves us some multiplications) unsigned char *const currOutput = &output[scanlineLen * y]; for (long x = 0; x < width; x++) { // now transform from device coordinate space to image space // apply transformation const Point currPoint = Point(x + lowerLeft.x_, y + lowerLeft.y_).transform(inverseMatrix); // round to integers const long sourceX = (long) (currPoint.x_ + .5); const long sourceY = (long) (currPoint.y_ + .5); // is the pixel out of bounds? If yes, no further processing necessary if (sourceX >= 0L && (unsigned long) sourceX < image.width && sourceY >= 0L && (unsigned long) sourceY < image.height) { // okay, fetch source pixel value into // RGB triplet unsigned char r(255), g(255), b(255), C, M, Y, K; // how many components? switch (image.ncomp) { case 1: r = g = b = image.getComponent(sourceX, sourceY, 0); break; case 3: r = image.getComponent(sourceX, sourceY, 0); g = image.getComponent(sourceX, sourceY, 1); b = image.getComponent(sourceX, sourceY, 2); break; case 4: C = image.getComponent(sourceX, sourceY, 0); M = image.getComponent(sourceX, sourceY, 1); Y = image.getComponent(sourceX, sourceY, 2); K = image.getComponent(sourceX, sourceY, 3); // account for key C += K; M += K; Y += K; // convert color r = 255 - C; g = 255 - M; b = 255 - Y; break; default: errf << "\t\tFatal: unexpected case in drvwmf (line " << __LINE__ << ")" << endl; delete [] output; // to make FlexeLint happier abort(); return; } // set color triple currOutput[3 * x] = b; currOutput[3 * x + 1] = g; currOutput[3 * x + 2] = r; } } } // draw Windows DI bitmap BITMAPINFO bmi; /* setup BITMAPINFO */ bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biWidth = width; bmi.bmiHeader.biHeight = height; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 24; // always truecolor output bmi.bmiHeader.biClrUsed = 0; bmi.bmiHeader.biCompression = BI_RGB; bmi.bmiHeader.biSizeImage = 0; /* size not important */ bmi.bmiHeader.biXPelsPerMeter = 0; /* size not important */ bmi.bmiHeader.biYPelsPerMeter = 0; /* size not important */ bmi.bmiHeader.biClrImportant = 0; if (!SetDIBitsToDevice(metaDC, transx(lowerLeft.x_), transy(upperRight.y_), width, height, 0, 0, 0, height, output, &bmi, DIB_RGB_COLORS)) { errf << "ERROR: Cannot draw bitmap" << endl; } delete[]output; } #if defined(_WIN32) // // Wmf works only under Windows since the libemf has only a broken emulation of wmf. // Under libemf, a createMetaFile effectively creates an enhMetaFile but that confuses almost all // programs which expect to read an WMF with an aldus placeable header // static DriverDescriptionT < drvWMF > D_wmf("wmf", "Windows metafile", "","wmf", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend does not support curves (at least for WMF - have to take least common denominator here) true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::memoryeps, // no support for PNG file images DriverDescription::noopen, // we open output file ourselves false, // if format supports multiple pages in one file (DEFINETELY not) false /*clipping */ ); #endif static DriverDescriptionT < drvWMF > D_emf("emf", "Enhanced Windows metafile", "","emf", true, // backend supports subpathes // if subpathes are supported, the backend must deal with // sequences of the following form // moveto (start of subpath) // lineto (a line segment) // lineto // moveto (start of a new subpath) // lineto (a line segment) // lineto // // If this argument is set to false each subpath is drawn // individually which might not necessarily represent // the original drawing. false, // backend does not support curves (not yet) true, // backend supports elements which are filled and have edges true, // backend supports text DriverDescription::memoryeps, // no support for PNG file images DriverDescription::noopen, // we open output file ourselves false, // if format supports multiple pages in one file (DEFINETELY not) false /*clipping */ ); pstoedit-3.62/src/drvwmf.h0000644000175500010010000001076712137224257012477 00000000000000#ifndef __drvwmf_h__ #define __drvwmf_h__ /* drvwmf.h : This file is part of pstoedit Class declaration for the WMF output driver. The implementation can be found in drvwmf.cpp Copyright (C) 1998 Thorsten Behrens and Bjoern Petersen Copyright (C) 2000 Thorsten Behrens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef _WIN32 #include #undef min // is declared inline in drvbase... (sigh) #undef max #else // use Allen Barnett's libemf #ifdef OLDLIBEMF #include #else #include #endif #endif #include "drvbase.h" class drvWMF : public drvbase { public: derivedConstructor(drvWMF); // Constructor ~drvWMF(); // Destructor class DriverOptions : public ProgramOptions { public: OptionT < bool, BoolTrueExtractor> mapToArial; OptionT < bool, BoolTrueExtractor> emulateNarrowFonts; OptionT < bool, BoolTrueExtractor> drawBoundingBox; OptionT < bool, BoolTrueExtractor> pruneLineEnds; OptionT < bool, BoolTrueExtractor> notforWindows; OptionT < bool, BoolTrueExtractor> winbb; OptionT < bool, BoolTrueExtractor> OpenOfficeMode ; DriverOptions() : mapToArial(true,"-m",0,0,"map to Arial",0,false), emulateNarrowFonts(true,"-nf",0,0,"emulate narrow fonts",0,false), drawBoundingBox(true,"-drawbb",0,0,"draw bounding box",0,false), pruneLineEnds(true,"-p",0,0,"prune line ends",0,false), notforWindows(true,"-nfw",0,0,"not for Windows (meaningful under *nix only)", "Newer versions of Windows (2000, XP, Vista) will not accept WMF/EMF files generated when this option is set and the input contains Text. " "But if this option is not set, then the WMF/EMF driver will estimate interletter spacing of text using " "a very coarse heuristic. This may result in ugly looking output. On the other hand, OpenOffice " "can still read EMF/WMF files where pstoedit delegates the calculation of the inter letter spacing " "to the program reading the WMF/EMF file. So if the generated WMF/EMF file shall never be processed " "under Windows, use this option. If WMF/EMF files with high precision text need to be generated under *nix " "the only option is to use the -pta option of pstoedit. However that causes every text to be split into single characters " "which makes the text hard to edit afterwards. Hence the -nfw options provides a sort of compromise between " "portability and nice to edit but still nice looking text. Again - this option has no meaning when pstoedit " "is executed under Windows anyway. In that case the output is portable " "but nevertheless not split and still looks fine.", false), winbb(true,"-winbb",0,0,"let the Windows API calculate the Bounding Box (Windows only)",0,false), OpenOfficeMode(true,"-OO", 0, 0, "generate OpenOffice compatible EMF file",0,false) { ADD(mapToArial); ADD(emulateNarrowFonts); ADD(drawBoundingBox); ADD(pruneLineEnds); ADD(notforWindows); ADD(winbb); ADD(OpenOfficeMode); } } * options; #include "drvfuncs.h" void show_rectangle(const float llx, const float lly, const float urx, const float ury); void show_text(const TextInfo & textInfo); virtual void show_image(const PSImage & imageinfo); private: enum polyType {TYPE_FILL,TYPE_LINES}; void drawPoly (POINT*, int*, polyType type); void setDrawAttr (); int fetchFont (const TextInfo & textinfo, short int, short int); float scale() const; long transx(float x) const; long transy(float x) const; void initMetaDC(HDC hdc); // This contains all private data of drvwmf. HDC metaDC; HDC desktopDC; LOGPEN penData; HPEN coloredPen; HPEN oldColoredPen; LOGBRUSH brushData; HBRUSH coloredBrush; HBRUSH oldColoredBrush; HFONT myFont; HFONT oldFont; long maxX, maxY; long minX, minY; long maxStatus, minStatus; bool enhanced; RSString tempName; FILE* outFile; }; #endif /* #ifndef __drvwmf_h__ */ pstoedit-3.62/src/dxfacad.h0000644000175500010010000004163712137224257012564 00000000000000static const char dxf14acadheader_prelayer1 [] = " 0\n" "SECTION\n" " 2\n" "HEADER\n" " 9\n" "$ACADVER\n" " 1\n" "AC1014\n" " 9\n" "$EXTMIN\n" " 10\n" "70.16401489310567\n" " 20\n" "112.369642808922\n" " 30\n" "0.0\n" " 9\n" "$EXTMAX\n" " 10\n" "277.0834797641999\n" " 20\n" "227.1366601424358\n" " 30\n" "0.0\n" " 9\n" "$HANDSEED\n" " 5\n" "56\n" " 9\n"; // in between here comes the MEASUREMENT entry - but that depends on the command line options (-mm) static const char dxf14acadheader_prelayer2 [] = " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "TABLES\n" " 0\n" "TABLE\n" " 2\n" "VPORT\n" " 5\n" "8\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 4\n" " 0\n" "VPORT\n" " 5\n" "2E\n" "330\n" "8\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbViewportTableRecord\n" " 2\n" "*ACTIVE\n" " 70\n" " 0\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 11\n" "1.0\n" " 21\n" "1.0\n" " 12\n" "209.9999999999999\n" " 22\n" "148.4999999999999\n" " 13\n" "0.0\n" " 23\n" "0.0\n" " 14\n" "10.0\n" " 24\n" "10.0\n" " 15\n" "10.0\n" " 25\n" "10.0\n" " 16\n" "0.0\n" " 26\n" "0.0\n" " 36\n" "1.0\n" " 17\n" "0.0\n" " 27\n" "0.0\n" " 37\n" "0.0\n" " 40\n" "340.9950045922664\n" " 41\n" "1.239944521497919\n" " 42\n" "50.0\n" " 43\n" "0.0\n" " 44\n" "0.0\n" " 50\n" "0.0\n" " 51\n" "0.0\n" " 71\n" " 0\n" " 72\n" " 100\n" " 73\n" " 1\n" " 74\n" " 3\n" " 75\n" " 0\n" " 76\n" " 0\n" " 77\n" " 0\n" " 78\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "LTYPE\n" " 5\n" "5\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "LTYPE\n" " 5\n" "14\n" "330\n" "5\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLinetypeTableRecord\n" " 2\n" "BYBLOCK\n" " 70\n" " 0\n" " 3\n" "\n" " 72\n" " 65\n" " 73\n" " 0\n" " 40\n" "0.0\n" " 0\n" "LTYPE\n" " 5\n" "15\n" "330\n" "5\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLinetypeTableRecord\n" " 2\n" "BYLAYER\n" " 70\n" " 0\n" " 3\n" "\n" " 72\n" " 65\n" " 73\n" " 0\n" " 40\n" "0.0\n" " 0\n" "LTYPE\n" " 5\n" "16\n" "330\n" "5\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLinetypeTableRecord\n" " 2\n" "CONTINUOUS\n" " 70\n" " 0\n" " 3\n" "Solid line\n" " 72\n" " 65\n" " 73\n" " 0\n" " 40\n" "0.0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "LAYER\n" " 5\n" "2\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" ; // " 5000\n" // number of layers static const char layer0def[] = // begin layer "0" " 0\n" "LAYER\n" " 5\n" "10\n" "330\n" "2\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLayerTableRecord\n" " 2\n" "0\n" " 70\n" " 0\n" " 62\n" " 7\n" " 6\n" "CONTINUOUS\n"; static const char dummy[] = "1001\n" "URBANX\n" "1000\n" "VER\n" "1000\n" "3.1\n" "1000\n" "DRAWN\n" "1000\n" "m\n" "1000\n" "GRSEE\n"; // end layer 0 #if 0 ----------- 0 LAYER 5 2E 100 AcDbSymbolTableRecord 100 AcDbLayerTableRecord 2 NEWLAYER1 // layername 70 0 // unfrozen 62 1 // color 6 CONTINUOUS // linestyle ------------ #endif static const char dxf14acadheader_postlayer [] = " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "STYLE\n" " 5\n" "3\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "STYLE\n" " 5\n" "11\n" "330\n" "3\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbTextStyleTableRecord\n" " 2\n" "STANDARD\n" " 70\n" " 0\n" " 40\n" "0.0\n" " 41\n" "1.0\n" " 50\n" "0.0\n" " 71\n" " 0\n" " 42\n" "2.5\n" " 3\n" "txt\n" " 4\n" "\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "VIEW\n" " 5\n" "6\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "UCS\n" " 5\n" "7\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "APPID\n" " 5\n" "9\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 2\n" " 0\n" "APPID\n" " 5\n" "12\n" "330\n" "9\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbRegAppTableRecord\n" " 2\n" "ACAD\n" " 70\n" " 0\n" " 0\n" "APPID\n" " 5\n" "2B\n" "330\n" "9\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbRegAppTableRecord\n" " 2\n" "URBANX\n" " 70\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "DIMSTYLE\n" " 5\n" "A\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "DIMSTYLE\n" "105\n" "27\n" "330\n" "A\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbDimStyleTableRecord\n" " 2\n" "ISO-25\n" " 70\n" " 0\n" " 3\n" "\n" " 4\n" "\n" " 5\n" "\n" " 6\n" "\n" " 7\n" "\n" " 40\n" "1.0\n" " 41\n" "2.5\n" " 42\n" "0.625\n" " 43\n" "3.75\n" " 44\n" "1.25\n" " 45\n" "0.0\n" " 46\n" "0.0\n" " 47\n" "0.0\n" " 48\n" "0.0\n" "140\n" "2.5\n" "141\n" "2.5\n" "142\n" "0.0\n" "143\n" "0.03937007874016\n" "144\n" "1.0\n" "145\n" "0.0\n" "146\n" "1.0\n" "147\n" "0.625\n" " 71\n" " 0\n" " 72\n" " 0\n" " 73\n" " 0\n" " 74\n" " 0\n" " 75\n" " 0\n" " 76\n" " 0\n" " 77\n" " 1\n" " 78\n" " 8\n" "170\n" " 0\n" "171\n" " 3\n" "172\n" " 1\n" "173\n" " 0\n" "174\n" " 0\n" "175\n" " 0\n" "176\n" " 0\n" "177\n" " 0\n" "178\n" " 0\n" "270\n" " 2\n" "271\n" " 2\n" "272\n" " 2\n" "273\n" " 2\n" "274\n" " 3\n" "340\n" "11\n" "275\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" "282\n" " 0\n" "283\n" " 0\n" "284\n" " 8\n" "285\n" " 0\n" "286\n" " 0\n" "287\n" " 3\n" "288\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "BLOCK_RECORD\n" " 5\n" "1\n" "330\n" "0\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "BLOCK_RECORD\n" " 5\n" "1F\n" "102\n" "{ACAD_XDICTIONARY\n" "360\n" "52\n" "102\n" "}\n" "330\n" "1\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbBlockTableRecord\n" " 2\n" "*MODEL_SPACE\n" " 0\n" "BLOCK_RECORD\n" " 5\n" "1B\n" "102\n" "{ACAD_XDICTIONARY\n" "360\n" "50\n" "102\n" "}\n" "330\n" "1\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbBlockTableRecord\n" " 2\n" "*PAPER_SPACE\n" " 0\n" "ENDTAB\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "BLOCKS\n" " 0\n" "BLOCK\n" " 5\n" "20\n" "330\n" "1F\n" "100\n" "AcDbEntity\n" " 8\n" "0\n" "100\n" "AcDbBlockBegin\n" " 2\n" "*MODEL_SPACE\n" " 70\n" " 0\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 3\n" "*MODEL_SPACE\n" " 1\n" "\n" " 0\n" "ENDBLK\n" " 5\n" "21\n" "330\n" "1F\n" "100\n" "AcDbEntity\n" " 8\n" "0\n" "100\n" "AcDbBlockEnd\n" " 0\n" "BLOCK\n" " 5\n" "1C\n" "330\n" "1B\n" "100\n" "AcDbEntity\n" " 67\n" " 1\n" " 8\n" "0\n" "100\n" "AcDbBlockBegin\n" " 2\n" "*PAPER_SPACE\n" " 1\n" "\n" " 0\n" "ENDBLK\n" " 5\n" "1D\n" "330\n" "1B\n" "100\n" "AcDbEntity\n" " 67\n" " 1\n" " 8\n" "0\n" "100\n" "AcDbBlockEnd\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "ENTITIES\n"; static const char dxf14acadspline [] = " 0\n" "SPLINE\n" " 5\n" "2D\n" "330\n" "1F\n" "100\n" "AcDbEntity\n" " 8\n" "0\n" "100\n" "AcDbSpline\n" "210\n" "0.0\n" "220\n" "0.0\n" "230\n" "1.0\n" " 70\n" " 8\n" " 71\n" " 3\n" " 72\n" " 10\n" " 73\n" " 6\n" " 74\n" " 4\n" " 42\n" "0.0000000001\n" " 43\n" "0.0000000001\n" " 44\n" "0.0000000001\n" " 12\n" "0.9600201760045486\n" " 22\n" "0.2799308158531239\n" " 32\n" "0.0\n" " 13\n" "0.635206988684598\n" " 23\n" "0.7723419459839307\n" " 33\n" "0.0\n" " 40\n" "0.0\n" " 40\n" "0.0\n" " 40\n" "0.0\n" " 40\n" "0.0\n" " 40\n" "85.71498544287253\n" " 40\n" "177.5696755707102\n" " 40\n" "259.0922699980426\n" " 40\n" "259.0922699980426\n" " 40\n" "259.0922699980426\n" " 40\n" "259.0922699980426\n" " 10\n" "70.16401489310567\n" " 20\n" "112.369642808922\n" " 30\n" "0.0\n" " 10\n" "97.5933866968036\n" " 20\n" "120.367731410876\n" " 30\n" "0.0\n" " 10\n" "112.3732360579726\n" " 20\n" "213.1518597804941\n" " 30\n" "0.0\n" " 10\n" "224.8599410796318\n" " 20\n" "142.7027151961756\n" " 30\n" "0.0\n" " 10\n" "259.8222391922194\n" " 20\n" "206.1488870685476\n" " 30\n" "0.0\n" " 10\n" "277.0834797641999\n" " 20\n" "227.1366601424358\n" " 30\n" "0.0\n" " 11\n" "70.16401489310567\n" " 21\n" "112.369642808922\n" " 31\n" "0.0\n" " 11\n" "126.3818602886212\n" " 21\n" "177.0736812343384\n" " 31\n" "0.0\n" " 11\n" "218.0311208411052\n" " 21\n" "170.9338816721384\n" " 31\n" "0.0\n" " 11\n" "277.0834797641999\n" " 21\n" "227.1366601424358\n" " 31\n" "0.0\n"; static const char dxf14acadtrailer [] = " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "OBJECTS\n" " 0\n" "DICTIONARY\n" " 5\n" "C\n" "330\n" "0\n" "100\n" "AcDbDictionary\n" " 3\n" "ACAD_GROUP\n" "350\n" "D\n" " 3\n" "ACAD_LAYOUT\n" "350\n" "1A\n" " 3\n" "ACAD_MLINESTYLE\n" "350\n" "17\n" " 3\n" "ACAD_PLOTSETTINGS\n" "350\n" "19\n" " 3\n" "ACAD_PLOTSTYLENAME\n" "350\n" "E\n" " 3\n" "ACDBHEADERROUNDTRIPXREC\n" "350\n" "2F\n" " 0\n" "DICTIONARY\n" " 5\n" "52\n" "330\n" "1F\n" "100\n" "AcDbDictionary\n" "280\n" " 1\n" " 3\n" "ACAD_LAYOUTSELFREF\n" "360\n" "53\n" " 0\n" "DICTIONARY\n" " 5\n" "50\n" "330\n" "1B\n" "100\n" "AcDbDictionary\n" "280\n" " 1\n" " 3\n" "ACAD_LAYOUTSELFREF\n" "360\n" "51\n" " 0\n" "DICTIONARY\n" " 5\n" "D\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "330\n" "C\n" "100\n" "AcDbDictionary\n" " 0\n" "DICTIONARY\n" " 5\n" "1A\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "330\n" "C\n" "100\n" "AcDbDictionary\n" " 0\n" "DICTIONARY\n" " 5\n" "17\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "330\n" "C\n" "100\n" "AcDbDictionary\n" " 3\n" "STANDARD\n" "350\n" "18\n" " 0\n" "DICTIONARY\n" " 5\n" "19\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "330\n" "C\n" "100\n" "AcDbDictionary\n" " 0\n" "ACDBDICTIONARYWDFLT\n" " 5\n" "E\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "330\n" "C\n" "100\n" "AcDbDictionary\n" "281\n" " 1\n" " 3\n" "Normal\n" "350\n" "F\n" "100\n" "AcDbDictionaryWithDefault\n" "340\n" "F\n" " 0\n" "DICTIONARY\n" " 5\n" "2F\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "330\n" "C\n" "100\n" "AcDbDictionary\n" " 3\n" "CEPSNTYPE\n" "350\n" "39\n" " 3\n" "DIMSTYLEDATA\n" "350\n" "3D\n" " 3\n" "FINGERPRINTGUID\n" "350\n" "3A\n" " 3\n" "HYPERLINKBASE\n" "350\n" "32\n" " 3\n" "INSUNITS\n" "350\n" "38\n" " 3\n" "LAYOUTDICT\n" "350\n" "34\n" " 3\n" "LWETCUNION\n" "350\n" "37\n" " 3\n" "PLOTSETDICT\n" "350\n" "35\n" " 3\n" "PLOTSTYLNAMDICT\n" "350\n" "36\n" " 3\n" "PSVPSCALE\n" "350\n" "3C\n" " 3\n" "PUCSBASE\n" "350\n" "40\n" " 3\n" "PUCSORGBACK\n" "350\n" "46\n" " 3\n" "PUCSORGBOTTOM\n" "350\n" "42\n" " 3\n" "PUCSORGFRONT\n" "350\n" "45\n" " 3\n" "PUCSORGLEFT\n" "350\n" "43\n" " 3\n" "PUCSORGRIGHT\n" "350\n" "44\n" " 3\n" "PUCSORGTOP\n" "350\n" "41\n" " 3\n" "PUCSORTHOREF\n" "350\n" "3E\n" " 3\n" "PUCSORTHOVIEW\n" "350\n" "3F\n" " 3\n" "STYLESHEET\n" "350\n" "33\n" " 3\n" "TSTACKALIGN\n" "350\n" "30\n" " 3\n" "TSTACKSIZE\n" "350\n" "31\n" " 3\n" "UCSBASE\n" "350\n" "49\n" " 3\n" "UCSORGBACK\n" "350\n" "4F\n" " 3\n" "UCSORGBOTTOM\n" "350\n" "4B\n" " 3\n" "UCSORGFRONT\n" "350\n" "4E\n" " 3\n" "UCSORGLEFT\n" "350\n" "4C\n" " 3\n" "UCSORGRIGHT\n" "350\n" "4D\n" " 3\n" "UCSORGTOP\n" "350\n" "4A\n" " 3\n" "UCSORTHOREF\n" "350\n" "47\n" " 3\n" "UCSORTHOVIEW\n" "350\n" "48\n" " 3\n" "VERSIONGUID\n" "350\n" "3B\n" " 0\n" "XRECORD\n" " 5\n" "53\n" "102\n" "{ACAD_REACTORS\n" "330\n" "52\n" "102\n" "}\n" "330\n" "52\n" "100\n" "AcDbXrecord\n" "340\n" "1F\n" " 0\n" "XRECORD\n" " 5\n" "51\n" "102\n" "{ACAD_REACTORS\n" "330\n" "50\n" "102\n" "}\n" "330\n" "50\n" "100\n" "AcDbXrecord\n" "340\n" "1B\n" " 0\n" "MLINESTYLE\n" " 5\n" "18\n" "102\n" "{ACAD_REACTORS\n" "330\n" "17\n" "102\n" "}\n" "330\n" "17\n" "100\n" "AcDbMlineStyle\n" " 2\n" "STANDARD\n" " 70\n" " 0\n" " 3\n" "\n" " 62\n" " 256\n" " 51\n" "90.0\n" " 52\n" "90.0\n" " 71\n" " 2\n" " 49\n" "0.5\n" " 62\n" " 256\n" " 6\n" "BYLAYER\n" " 49\n" "-0.5\n" " 62\n" " 256\n" " 6\n" "BYLAYER\n" " 0\n" "ACDBPLACEHOLDER\n" " 5\n" "F\n" "102\n" "{ACAD_REACTORS\n" "330\n" "E\n" "102\n" "}\n" "330\n" "E\n" "100\n" "AcDbPlaceHolder\n" "280\n" " 0\n" " 0\n" "XRECORD\n" " 5\n" "39\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 90\n" " 0\n" " 0\n" "XRECORD\n" " 5\n" "3D\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "1000\n" "DSTYLE\n" "1002\n" "{\n" "1070\n" " 278\n" " 70\n" " 44\n" "1002\n" "}\n" " 0\n" "XRECORD\n" " 5\n" "3A\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 1\n" "{705446A6-11D0-4548-8F8C-A97DCA50327D}\n" " 0\n" "XRECORD\n" " 5\n" "32\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 1\n" "\n" " 0\n" "XRECORD\n" " 5\n" "38\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 90\n" " 4\n" " 0\n" "XRECORD\n" " 5\n" "34\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "1A\n" " 0\n" "XRECORD\n" " 5\n" "37\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 90\n" " 10781\n" " 0\n" "XRECORD\n" " 5\n" "35\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "19\n" " 0\n" "XRECORD\n" " 5\n" "36\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "E\n" " 0\n" "XRECORD\n" " 5\n" "3C\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 40\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "40\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "0\n" " 0\n" "XRECORD\n" " 5\n" "46\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "42\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "45\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "43\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "44\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "41\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "3E\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "0\n" " 0\n" "XRECORD\n" " 5\n" "3F\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 70\n" " 0\n" " 0\n" "XRECORD\n" " 5\n" "33\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 1\n" "\n" " 0\n" "XRECORD\n" " 5\n" "30\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 90\n" " 1\n" " 0\n" "XRECORD\n" " 5\n" "31\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 90\n" " 70\n" " 0\n" "XRECORD\n" " 5\n" "49\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "0\n" " 0\n" "XRECORD\n" " 5\n" "4F\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "4B\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "4E\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "4C\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "4D\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "4A\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 0\n" "XRECORD\n" " 5\n" "47\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" "340\n" "0\n" " 0\n" "XRECORD\n" " 5\n" "48\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 70\n" " 0\n" " 0\n" "XRECORD\n" " 5\n" "3B\n" "102\n" "{ACAD_REACTORS\n" "330\n" "2F\n" "102\n" "}\n" "330\n" "2F\n" "100\n" "AcDbXrecord\n" " 1\n" "{33328E3A-B6B8-4979-86B7-D70DEC2867C2}\n" " 0\n" "ENDSEC\n" " 0\n" "EOF\n"; pstoedit-3.62/src/dxficad.h0000644000175500010010000004240312137224257012564 00000000000000// this header was taken from a DXF file produced by IntelliCad static const char dxf14icadheader [] = " 0\n" "SECTION\n" " 2\n" "HEADER\n" " 9\n" "$ACADVER\n" " 1\n" "AC1014\n" " 9\n" "$ACADMAINTVER\n" " 70\n" " 0\n" " 9\n" "$DWGCODEPAGE\n" " 3\n" "ANSI_1252\n" " 9\n" "$INSBASE\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$EXTMIN\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$EXTMAX\n" " 10\n" "1000.0\n" " 20\n" "1000.0\n" " 30\n" "0.0\n" " 9\n" "$LIMMIN\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 9\n" "$LIMMAX\n" " 10\n" "12.0\n" " 20\n" "9.0\n" " 9\n" "$ORTHOMODE\n" " 70\n" " 0\n" " 9\n" "$REGENMODE\n" " 70\n" " 1\n" " 9\n" "$FILLMODE\n" " 70\n" " 1\n" " 9\n" "$QTEXTMODE\n" " 70\n" " 0\n" " 9\n" "$MIRRTEXT\n" " 70\n" " 1\n" " 9\n" "$DRAGMODE\n" " 70\n" " 2\n" " 9\n" "$LTSCALE\n" " 40\n" "1.0\n" " 9\n" "$OSMODE\n" " 70\n" " 0\n" " 9\n" "$ATTMODE\n" " 70\n" " 1\n" " 9\n" "$TEXTSIZE\n" " 40\n" "0.2\n" " 9\n" "$TRACEWID\n" " 40\n" "0.05\n" " 9\n" "$TEXTSTYLE\n" " 7\n" "STANDARD\n" " 9\n" "$CLAYER\n" " 8\n" "0\n" " 9\n" "$CELTYPE\n" " 6\n" "BYLAYER\n" " 9\n" "$CECOLOR\n" " 62\n" " 256\n" " 9\n" "$CELTSCALE\n" " 40\n" "1.0\n" " 9\n" "$DELOBJ\n" " 70\n" " 1\n" " 9\n" "$DISPSILH\n" " 70\n" " 0\n" " 9\n" "$DIMSCALE\n" " 40\n" "1.0\n" " 9\n" "$DIMASZ\n" " 40\n" "0.18\n" " 9\n" "$DIMEXO\n" " 40\n" "0.0625\n" " 9\n" "$DIMDLI\n" " 40\n" "0.38\n" " 9\n" "$DIMRND\n" " 40\n" "0.0\n" " 9\n" "$DIMDLE\n" " 40\n" "0.0\n" " 9\n" "$DIMEXE\n" " 40\n" "0.18\n" " 9\n" "$DIMTP\n" " 40\n" "0.0\n" " 9\n" "$DIMTM\n" " 40\n" "0.0\n" " 9\n" "$DIMTXT\n" " 40\n" "0.18\n" " 9\n" "$DIMCEN\n" " 40\n" "0.09\n" " 9\n" "$DIMTSZ\n" " 40\n" "0.0\n" " 9\n" "$DIMTOL\n" " 70\n" " 0\n" " 9\n" "$DIMLIM\n" " 70\n" " 0\n" " 9\n" "$DIMTIH\n" " 70\n" " 1\n" " 9\n" "$DIMTOH\n" " 70\n" " 1\n" " 9\n" "$DIMSE1\n" " 70\n" " 0\n" " 9\n" "$DIMSE2\n" " 70\n" " 0\n" " 9\n" "$DIMTAD\n" " 70\n" " 0\n" " 9\n" "$DIMZIN\n" " 70\n" " 0\n" " 9\n" "$DIMBLK\n" " 1\n" "\n" " 9\n" "$DIMASO\n" " 70\n" " 1\n" " 9\n" "$DIMSHO\n" " 70\n" " 1\n" " 9\n" "$DIMPOST\n" " 1\n" "\n" " 9\n" "$DIMAPOST\n" " 1\n" "\n" " 9\n" "$DIMALT\n" " 70\n" " 0\n" " 9\n" "$DIMALTD\n" " 70\n" " 2\n" " 9\n" "$DIMALTF\n" " 40\n" "25.4\n" " 9\n" "$DIMLFAC\n" " 40\n" "1.0\n" " 9\n" "$DIMTOFL\n" " 70\n" " 0\n" " 9\n" "$DIMTVP\n" " 40\n" "0.0\n" " 9\n" "$DIMTIX\n" " 70\n" " 0\n" " 9\n" "$DIMSOXD\n" " 70\n" " 0\n" " 9\n" "$DIMSAH\n" " 70\n" " 0\n" " 9\n" "$DIMBLK1\n" " 1\n" "\n" " 9\n" "$DIMBLK2\n" " 1\n" "\n" " 9\n" "$DIMSTYLE\n" " 2\n" "STANDARD\n" " 9\n" "$DIMCLRD\n" " 70\n" " 0\n" " 9\n" "$DIMCLRE\n" " 70\n" " 0\n" " 9\n" "$DIMCLRT\n" " 70\n" " 0\n" " 9\n" "$DIMTFAC\n" " 40\n" "1.0\n" " 9\n" "$DIMGAP\n" " 40\n" "0.09\n" " 9\n" "$DIMJUST\n" " 70\n" " 0\n" " 9\n" "$DIMSD1\n" " 70\n" " 0\n" " 9\n" "$DIMSD2\n" " 70\n" " 0\n" " 9\n" "$DIMTOLJ\n" " 70\n" " 1\n" " 9\n" "$DIMTZIN\n" " 70\n" " 0\n" " 9\n" "$DIMALTZ\n" " 70\n" " 0\n" " 9\n" "$DIMALTTZ\n" " 70\n" " 0\n" " 9\n" "$DIMFIT\n" " 70\n" " 3\n" " 9\n" "$DIMUPT\n" " 70\n" " 0\n" " 9\n" "$DIMUNIT\n" " 70\n" " 2\n" " 9\n" "$DIMDEC\n" " 70\n" " 4\n" " 9\n" "$DIMTDEC\n" " 70\n" " 4\n" " 9\n" "$DIMALTU\n" " 70\n" " 2\n" " 9\n" "$DIMALTTD\n" " 70\n" " 2\n" " 9\n" "$DIMTXSTY\n" " 7\n" "STANDARD\n" " 9\n" "$DIMAUNIT\n" " 70\n" " 0\n" " 9\n" "$LUNITS\n" " 70\n" " 2\n" " 9\n" "$LUPREC\n" " 70\n" " 4\n" " 9\n" "$SKETCHINC\n" " 40\n" "0.1\n" " 9\n" "$FILLETRAD\n" " 40\n" "0.5\n" " 9\n" "$AUNITS\n" " 70\n" " 0\n" " 9\n" "$AUPREC\n" " 70\n" " 0\n" " 9\n" "$MENU\n" " 1\n" ".\n" " 9\n" "$ELEVATION\n" " 40\n" "0.0\n" " 9\n" "$PELEVATION\n" " 40\n" "0.0\n" " 9\n" "$THICKNESS\n" " 40\n" "0.0\n" " 9\n" "$LIMCHECK\n" " 70\n" " 0\n" " 9\n" "$BLIPMODE\n" " 70\n" " 0\n" " 9\n" "$CHAMFERA\n" " 40\n" "0.5\n" " 9\n" "$CHAMFERB\n" " 40\n" "0.5\n" " 9\n" "$CHAMFERC\n" " 40\n" "1.0\n" " 9\n" "$CHAMFERD\n" " 40\n" "0.0\n" " 9\n" "$SKPOLY\n" " 70\n" " 0\n" " 9\n" "$TDCREATE\n" " 40\n" "2452170.920590255\n" " 9\n" "$TDUPDATE\n" " 40\n" "2452170.938553229\n" " 9\n" "$TDINDWG\n" " 40\n" "0.0191310185\n" " 9\n" "$TDUSRTIMER\n" " 40\n" "0.0191194444\n" " 9\n" "$USRTIMER\n" " 70\n" " 1\n" " 9\n" "$ANGBASE\n" " 50\n" "0.0\n" " 9\n" "$ANGDIR\n" " 70\n" " 0\n" " 9\n" "$PDMODE\n" " 70\n" " 0\n" " 9\n" "$PDSIZE\n" " 40\n" "0.0\n" " 9\n" "$PLINEWID\n" " 40\n" "0.0\n" " 9\n" "$COORDS\n" " 70\n" " 1\n" " 9\n" "$SPLFRAME\n" " 70\n" " 0\n" " 9\n" "$SPLINETYPE\n" " 70\n" " 6\n" " 9\n" "$SPLINESEGS\n" " 70\n" " 8\n" " 9\n" "$ATTDIA\n" " 70\n" " 0\n" " 9\n" "$ATTREQ\n" " 70\n" " 1\n" " 9\n" "$HANDLING\n" " 70\n" " 1\n" " 9\n" "$HANDSEED\n" " 5\n" "5C\n" " 9\n" "$SURFTAB1\n" " 70\n" " 6\n" " 9\n" "$SURFTAB2\n" " 70\n" " 6\n" " 9\n" "$SURFTYPE\n" " 70\n" " 6\n" " 9\n" "$SURFU\n" " 70\n" " 6\n" " 9\n" "$SURFV\n" " 70\n" " 6\n" " 9\n" "$UCSNAME\n" " 2\n" "\n" " 9\n" "$UCSORG\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$UCSXDIR\n" " 10\n" "1.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$UCSYDIR\n" " 10\n" "0.0\n" " 20\n" "1.0\n" " 30\n" "0.0\n" " 9\n" "$PUCSNAME\n" " 2\n" "\n" " 9\n" "$PUCSORG\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$PUCSXDIR\n" " 10\n" "1.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$PUCSYDIR\n" " 10\n" "0.0\n" " 20\n" "1.0\n" " 30\n" "0.0\n" " 9\n" "$USERI1\n" " 70\n" " 0\n" " 9\n" "$USERI2\n" " 70\n" " 0\n" " 9\n" "$USERI3\n" " 70\n" " 0\n" " 9\n" "$USERI4\n" " 70\n" " 0\n" " 9\n" "$USERI5\n" " 70\n" " 0\n" " 9\n" "$USERR1\n" " 40\n" "0.0\n" " 9\n" "$USERR2\n" " 40\n" "0.0\n" " 9\n" "$USERR3\n" " 40\n" "0.0\n" " 9\n" "$USERR4\n" " 40\n" "0.0\n" " 9\n" "$USERR5\n" " 40\n" "0.0\n" " 9\n" "$WORLDVIEW\n" " 70\n" " 1\n" " 9\n" "$SHADEDGE\n" " 70\n" " 3\n" " 9\n" "$SHADEDIF\n" " 70\n" " 70\n" " 9\n" "$TILEMODE\n" " 70\n" " 1\n" " 9\n" "$MAXACTVP\n" " 70\n" " 48\n" " 9\n" "$PINSBASE\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 9\n" "$PLIMCHECK\n" " 70\n" " 0\n" " 9\n" "$PEXTMIN\n" " 10\n" "1.000000E+20\n" " 20\n" "1.000000E+20\n" " 30\n" "1.000000E+20\n" " 9\n" "$PEXTMAX\n" " 10\n" "-1.000000E+20\n" " 20\n" "-1.000000E+20\n" " 30\n" "-1.000000E+20\n" " 9\n" "$PLIMMIN\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 9\n" "$PLIMMAX\n" " 10\n" "12.0\n" " 20\n" "9.0\n" " 9\n" "$UNITMODE\n" " 70\n" " 0\n" " 9\n" "$VISRETAIN\n" " 70\n" " 1\n" " 9\n" "$PLINEGEN\n" " 70\n" " 0\n" " 9\n" "$PSLTSCALE\n" " 70\n" " 1\n" " 9\n" "$TREEDEPTH\n" " 70\n" " 3020\n" " 9\n" "$PICKSTYLE\n" " 70\n" " 1\n" " 9\n" "$CMLSTYLE\n" " 2\n" "Standard\n" " 9\n" "$CMLJUST\n" " 70\n" " 0\n" " 9\n" "$CMLSCALE\n" " 40\n" "1.0\n" " 9\n" "$PROXYGRAPHICS\n" " 70\n" " 1\n" " 9\n" "$MEASUREMENT\n" " 70\n" " 0\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "CLASSES\n" " 0\n" "CLASS\n" " 1\n" "LWPOLYLINE\n" " 2\n" "AcDbPolyline\n" " 3\n" "\"AutoCAD\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "CLASS\n" " 1\n" "IMAGE\n" " 2\n" "AcDbRasterImage\n" " 3\n" "ISM\n" " 90\n" " 127\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "CLASS\n" " 1\n" "OLE2FRAME\n" " 2\n" "AcDbOle2Frame\n" " 3\n" "\"\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "CLASS\n" " 1\n" "HATCH\n" " 2\n" "AcDbHatch\n" " 3\n" "\"ACAD_SEDONA\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "CLASS\n" " 1\n" "DICTIONARYVAR\n" " 2\n" "AcDbDictionaryVar\n" " 3\n" "\"AutoCAD\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "RASTERVARIABLES\n" " 2\n" "AcDbRasterVariables\n" " 3\n" "ISM\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "IMAGEDEF\n" " 2\n" "AcDbRasterImageDef\n" " 3\n" "ISM\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "IMAGEDEF_REACTOR\n" " 2\n" "AcDbRasterImageDefReactor\n" " 3\n" "ISM\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "IDBUFFER\n" " 2\n" "AcDbIdBuffer\n" " 3\n" "\"Acad\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "SPATIAL_FILTER\n" " 2\n" "AcDbSpatialFilter\n" " 3\n" "\"Acad\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "XRECORD\n" " 2\n" "AcDbXrecord\n" " 3\n" "\"\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "SORTENTSTABLE\n" " 2\n" "AcDbSortentsTable\n" " 3\n" "\"AutoCAD\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "LAYER_INDEX\n" " 2\n" "AcDbLayerIndex\n" " 3\n" "\"Acad\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "SPATIAL_INDEX\n" " 2\n" "AcDbSpatialIndex\n" " 3\n" "\"Acad\"\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "OBJECT_PTR\n" " 2\n" "CAseDLPNTableRecord\n" " 3\n" "\"ASE-LPNTableRecord\"\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "LAYOUT\n" " 2\n" "AcDbLayout\n" " 3\n" "\"AutoCAD 2000\"\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "PLOTSETTINGS\n" " 2\n" "AcDbPlotSettings\n" " 3\n" "\"AutoCAD 2000\"\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "ACDBDICTIONARYWDFLT\n" " 2\n" "AcDbDictionaryWithDefault\n" " 3\n" "\"AutoCAD 2000\"\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "ACDBPLACEHOLDER\n" " 2\n" "AcDbPlaceHolder\n" " 3\n" "\"AutoCAD 2000\"\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "VBA_PROJECT\n" " 2\n" "AcDbVbaProject\n" " 3\n" "\"acadvba\"\n" " 90\n" " 1\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "WIPEOUT\n" " 2\n" "AcDbWipeout\n" " 3\n" "WipeOut|AutoCAD Express Tool|expresstools@autodesk.com\n" " 90\n" " 127\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "CLASS\n" " 1\n" "WIPEOUTVARIABLES\n" " 2\n" "AcDbWipeoutVariables\n" " 3\n" "WipeOut|AutoCAD Express Tool|expresstools@autodesk.com\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" " 0\n" "CLASS\n" " 1\n" "RTEXT\n" " 2\n" "RText\n" " 3\n" "RText|AutoCAD Express Tool|expresstools@autodesk.com\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "CLASS\n" " 1\n" "ARCALIGNEDTEXT\n" " 2\n" "AcDbArcAlignedText\n" " 3\n" "ATEXT|AutoCAD Express Tool|expresstools@autodesk.com\n" " 90\n" " 0\n" "280\n" " 0\n" "281\n" " 1\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "TABLES\n" " 0\n" "TABLE\n" " 2\n" "VPORT\n" " 5\n" "8\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "VPORT\n" " 5\n" "25\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbViewportTableRecord\n" " 2\n" "*ACTIVE\n" " 70\n" " 64\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 11\n" "1.0\n" " 21\n" "1.0\n" " 12\n" "7.585394\n" " 22\n" "4.5\n" " 13\n" "0.0\n" " 23\n" "0.0\n" " 14\n" "0.5\n" " 24\n" "0.5\n" " 15\n" "0.5\n" " 25\n" "0.5\n" " 16\n" "0.0\n" " 26\n" "0.0\n" " 36\n" "1.0\n" " 17\n" "0.0\n" " 27\n" "0.0\n" " 37\n" "0.0\n" " 40\n" "9.18\n" " 41\n" "1.997783\n" " 42\n" "50.0\n" " 43\n" "0.0\n" " 44\n" "0.0\n" " 50\n" "0.0\n" " 51\n" "0.0\n" " 71\n" " 0\n" " 72\n" " 100\n" " 73\n" " 1\n" " 74\n" " 0\n" " 75\n" " 0\n" " 76\n" " 0\n" " 77\n" " 0\n" " 78\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "LTYPE\n" " 5\n" "5\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 3\n" " 0\n" "LTYPE\n" " 5\n" "12\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLinetypeTableRecord\n" " 2\n" "BYBLOCK\n" " 70\n" " 64\n" " 3\n" "\n" " 72\n" " 65\n" " 73\n" " 0\n" " 40\n" "0.0\n" " 0\n" "LTYPE\n" " 5\n" "13\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLinetypeTableRecord\n" " 2\n" "BYLAYER\n" " 70\n" " 64\n" " 3\n" "\n" " 72\n" " 65\n" " 73\n" " 0\n" " 40\n" "0.0\n" " 0\n" "LTYPE\n" " 5\n" "14\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLinetypeTableRecord\n" " 2\n" "CONTINUOUS\n" " 70\n" " 64\n" " 3\n" "Solid line\n" " 72\n" " 65\n" " 73\n" " 0\n" " 40\n" "0.0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "LAYER\n" " 5\n" "2\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "LAYER\n" " 5\n" "E\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbLayerTableRecord\n" " 2\n" "0\n" " 70\n" " 64\n" " 62\n" " 7\n" " 6\n" "CONTINUOUS\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "STYLE\n" " 5\n" "3\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "STYLE\n" " 5\n" "F\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbTextStyleTableRecord\n" " 2\n" "STANDARD\n" " 70\n" " 64\n" " 40\n" "0.0\n" " 41\n" "1.0\n" " 50\n" "0.0\n" " 71\n" " 0\n" " 42\n" "0.2\n" " 3\n" "txt.shx\n" " 4\n" "\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "VIEW\n" " 5\n" "6\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "UCS\n" " 5\n" "7\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 0\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "APPID\n" " 5\n" "9\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "APPID\n" " 5\n" "10\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbRegAppTableRecord\n" " 2\n" "ACAD\n" " 70\n" " 64\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "DIMSTYLE\n" " 5\n" "A\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 1\n" " 0\n" "DIMSTYLE\n" "105\n" "1D\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbDimStyleTableRecord\n" " 2\n" "STANDARD\n" " 70\n" " 64\n" " 3\n" "\n" " 4\n" "\n" " 5\n" "\n" " 6\n" "\n" " 7\n" "\n" " 40\n" "1.0\n" " 41\n" "0.18\n" " 42\n" "0.0625\n" " 43\n" "0.38\n" " 44\n" "0.18\n" " 45\n" "0.0\n" " 46\n" "0.0\n" " 47\n" "0.0\n" " 48\n" "0.0\n" " 71\n" " 0\n" " 72\n" " 0\n" " 73\n" " 1\n" " 74\n" " 1\n" " 75\n" " 0\n" " 76\n" " 0\n" " 77\n" " 0\n" " 78\n" " 0\n" "140\n" "0.18\n" "141\n" "0.09\n" "142\n" "0.0\n" "143\n" "25.4\n" "144\n" "1.0\n" "145\n" "0.0\n" "146\n" "1.0\n" "147\n" "0.09\n" "170\n" " 0\n" "171\n" " 2\n" "172\n" " 0\n" "173\n" " 0\n" "174\n" " 0\n" "175\n" " 0\n" "176\n" " 0\n" "177\n" " 0\n" "178\n" " 0\n" "270\n" " 2\n" "271\n" " 4\n" "272\n" " 4\n" "273\n" " 2\n" "274\n" " 2\n" "275\n" " 0\n" "280\n" " 0\n" "281\n" " 0\n" "282\n" " 0\n" "283\n" " 1\n" "284\n" " 0\n" "285\n" " 0\n" "286\n" " 0\n" "287\n" " 3\n" "288\n" " 0\n" "340\n" "F\n" " 0\n" "ENDTAB\n" " 0\n" "TABLE\n" " 2\n" "BLOCK_RECORD\n" " 5\n" "1\n" "100\n" "AcDbSymbolTable\n" " 70\n" " 0\n" " 0\n" "BLOCK_RECORD\n" " 5\n" "18\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbBlockTableRecord\n" " 2\n" "*MODEL_SPACE\n" " 0\n" "BLOCK_RECORD\n" " 5\n" "15\n" "100\n" "AcDbSymbolTableRecord\n" "100\n" "AcDbBlockTableRecord\n" " 2\n" "*PAPER_SPACE\n" " 0\n" "ENDTAB\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "BLOCKS\n" " 0\n" "BLOCK\n" " 5\n" "19\n" "100\n" "AcDbEntity\n" " 8\n" "0\n" "100\n" "AcDbBlockBegin\n" " 2\n" "*MODEL_SPACE\n" " 70\n" " 0\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 3\n" "*MODEL_SPACE\n" " 1\n" "\n" " 0\n" "ENDBLK\n" " 5\n" "1A\n" "100\n" "AcDbEntity\n" " 8\n" "0\n" "100\n" "AcDbBlockEnd\n" " 0\n" "BLOCK\n" " 5\n" "16\n" "100\n" "AcDbEntity\n" " 67\n" " 1\n" " 8\n" "0\n" "100\n" "AcDbBlockBegin\n" " 2\n" "*PAPER_SPACE\n" " 70\n" " 0\n" " 10\n" "0.0\n" " 20\n" "0.0\n" " 30\n" "0.0\n" " 3\n" "*PAPER_SPACE\n" " 1\n" "\n" " 0\n" "ENDBLK\n" " 5\n" "17\n" "100\n" "AcDbEntity\n" " 67\n" " 1\n" " 8\n" "0\n" "100\n" "AcDbBlockEnd\n" " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "ENTITIES\n"; static const char dxf14icadspline [] = " 0\n" "SPLINE\n" " 5\n" "5B\n" "100\n" "AcDbEntity\n" " 8\n" "0\n" "100\n" "AcDbSpline\n" "210\n" "0.0\n" "220\n" "0.0\n" "230\n" "1.0\n" " 70\n" " 8\n" " 71\n" " 3\n" " 72\n" " 0\n" " 73\n" " 0\n" " 74\n" " 2\n" " 44\n" "0.4\n" " 12\n" "0.428497060606123\n" " 22\n" "9.9897443919913852\n" " 32\n" "0.0\n" " 13\n" "0.6987395238751687\n" " 23\n" "0.7153761792055299\n" " 33\n" "0.0\n" " 11\n" "10.0\n" " 21\n" "4.0\n" " 31\n" "0.0\n" " 11\n" "15.0\n" " 21\n" "5.0\n" " 31\n" "0.0\n"; static const char dxf14icadtrailer[] = " 0\n" "ENDSEC\n" " 0\n" "SECTION\n" " 2\n" "OBJECTS\n" " 0\n" "DICTIONARY\n" " 5\n" "C\n" "100\n" "AcDbDictionary\n" " 3\n" "ACAD_GROUP\n" "350\n" "D\n" " 3\n" "ACAD_MLINESTYLE\n" "350\n" "1B\n" " 0\n" "DICTIONARY\n" " 5\n" "D\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "100\n" "AcDbDictionary\n" " 0\n" "DICTIONARY\n" " 5\n" "1B\n" "102\n" "{ACAD_REACTORS\n" "330\n" "C\n" "102\n" "}\n" "100\n" "AcDbDictionary\n" " 3\n" "STANDARD\n" "350\n" "1C\n" " 0\n" "MLINESTYLE\n" " 5\n" "1C\n" "102\n" "{ACAD_REACTORS\n" "330\n" "1B\n" "102\n" "}\n" "100\n" "AcDbMlineStyle\n" " 2\n" "STANDARD\n" " 70\n" " 0\n" " 3\n" "\n" " 62\n" " 256\n" " 51\n" "90.0\n" " 52\n" "90.0\n" " 71\n" " 2\n" " 49\n" "0.5\n" " 62\n" " 256\n" " 6\n" "BYLAYER\n" " 49\n" "-0.5\n" " 62\n" " 256\n" " 6\n" "BYLAYER\n" " 0\n" "ENDSEC\n" " 0\n" "EOF\n"; pstoedit-3.62/src/dynload.cpp0000644000175500010010000003616612137224254013155 00000000000000/* dynload.h : This file is part of pstoedit declarations for dynamic loading of drivers Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #include I_iostream // we need __linux__ instead of just linux since the latter is not defined when -ansi is used. #if defined(__sparc) || defined(__linux) || defined(__linux__) || defined(__CYGWIN32__) || defined(__FreeBSD__) || defined(_WIN32) || defined(__OS2__) || defined(_AIX) || (defined (HAVE_DLFCN_H) && (HAVE_DLFCN_H==1 ) ) #define HAVESHAREDLIBS #endif #ifdef HAVESHAREDLIBS #ifndef LEANDYNLOAD #include "drvbase.h" #endif #include "dynload.h" #include I_stdio #include I_stdlib #include I_string_h // for DriverDescription types. #if defined(__hpux) && defined (__GNUG__) typedef void (*initfunctype) (); #endif #if defined(__linux) || defined(__linux__) || defined(__CYGWIN32__) || defined(__FreeBSD__) || defined(__hpux) || defined(_AIX) || (defined (HAVE_DLFCN_H) && (HAVE_DLFCN_H==1 ) ) #include #elif defined(__sparc) #if defined(__SVR4) #include #else // prototypes under SunOS 4.1.x are not compatible with C++ extern "C" { void *dlopen(const char *pathname, int mode); DynLoader::fptr dlsym(void *handle, const char *name); char *dlerror(void); int dlclose(void *handle); } #define RTLD_LAZY 1 #endif #elif defined(__OS2__) #include #include #elif defined(_WIN32) #include #define WINLOADLIB LoadLibrary #define WINFREELIB FreeLibrary // static const char * const libsuffix = ".dll"; static char *dlerror() { LPVOID lpMsgBuf; // LPVOID lpDisplayBuf; DWORD dw = GetLastError(); (void)FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); return (char*)lpMsgBuf; } #else #error "system unsupported so far" #endif DynLoader::DynLoader(const char *libname_P, ostream & errstream_p, int verbose_p):libname(0), handle(0), errstream(errstream_p),verbose(verbose_p) { if (libname_P) { const size_t size = strlen(libname_P) + 1; libname = new char[size]; strcpy_s(libname, size, libname_P); if (verbose) errstream << "creating Dynloader for " << libname << endl; open(libname); } } void DynLoader::open(const char *libname_P) { if (handle) { errstream << "error: DynLoader has already opened a library" << endl; exit(1); } const size_t size = strlen(libname_P) + 1; char *fulllibname = new char[size]; strcpy_s(fulllibname, size, libname_P); // not needed strcat(fulllibname_P,libsuffix); #if defined(__linux) || defined(__linux__) || defined(__CYGWIN32__) || defined(__FreeBSD__) || defined(__hpux) || defined(__sparc) || defined(__OS2__) || defined(_AIX) || (defined (HAVE_DLFCN_H) && (HAVE_DLFCN_H==1 ) ) int loadmode = RTLD_LAZY; // RTLD_NOW handle = dlopen(fulllibname, loadmode); #elif defined(_WIN32) if (sizeof(void*) != sizeof(HMODULE)) { errstream << "type of handle in dynload.cpp seems to be wrong" << endl; return; } handle = WINLOADLIB(fulllibname); #else #error "system unsupported so far" #endif if (handle == 0) { errstream << "Problem during opening " << fulllibname << ":" << dlerror() << endl; delete[]fulllibname; return; } { if (verbose) errstream << "loading dynamic library " << fulllibname << " completed successfully" << endl; #if defined(__hpux) && defined (__GNUG__) // in HPUX g++ this is called "_GLOBAL__DI" - on other systems it may be something like "_init" // under HP-UX automatic initialization of dlopened shared libs doesn't work - at least not when compiled with g++ initfunctype fptr = (initfunctype) dlsym(handle, "_GLOBAL__DI"); if (fptr) { if (verbose) errstream << "Found an init function for the library, so execute it " << endl; fptr(); } #endif } delete[]fulllibname; } void DynLoader::close() { if (handle) { if (libname && verbose) errstream << "closing dynamic library " << libname << endl; #if defined(__linux) || defined(__linux__) || defined(__CYGWIN32__) || defined(__FreeBSD__) || defined(__hpux) || defined(__sparc) || defined(__OS2__) || defined(_AIX) || (defined (HAVE_DLFCN_H) && (HAVE_DLFCN_H==1 ) ) #if defined(__linux) || defined(__linux__) || defined(__GNU__) // normally we should call dlclose here. But there is a very strange problem in Linux // whenever a plugin.so indirectly loads libpthread (e.g. libdrvmagick++ does it because libMagick++ does it // the call to dlclose crashes with a seg fault // Also gdb cannot debug anymore if libpthread is not loaded already by main program. // another workaround would be to link -lpthread also to pstoedit main program but that is also not nice // so simpler solution is to avoid the dlclose under Linux if (libname && verbose) errstream << "not really closing dynamic library because of pthread problem under Linux - contact author for details or check dynload.cpp from pstoedit source code " << libname << endl; // dlclose(handle); #else if (libname && verbose) errstream << "closing dynamic library " << libname << endl; dlclose(handle); #endif #elif defined(_WIN32) (void) WINFREELIB((HINSTANCE) handle); #else #error "system unsupported so far" #endif handle = 0; } } DynLoader::~DynLoader() { close(); if (libname && verbose) errstream << "destroying Dynloader for " << libname << endl; delete[]libname; libname=0; handle=0; } int DynLoader::knownSymbol(const char *name) const { return (getSymbol(name, 0) != 0); } DynLoader::fptr DynLoader::getSymbol(const char *name, int check) const { // // see http://www.trilithium.com/johan/2004/12/problem-with-dlsym/ for a nice discussion // about the cast problem // #if defined(__linux) || defined(__linux__) || defined(__CYGWIN32__) || defined(__FreeBSD__) || defined(__hpux) || defined(__sparc) || defined(__OS2__) || defined(_AIX) || (defined (HAVE_DLFCN_H) && (HAVE_DLFCN_H==1 ) ) DynLoader::fptr rfptr = (DynLoader::fptr) dlsym(handle, name); //lint !e611 //: Suspicious cast #elif defined(_WIN32) DynLoader::fptr rfptr = (DynLoader::fptr) GetProcAddress((HINSTANCE) handle, name); //lint !e611 //: Suspicious cast #else #error "system unsupported so far" #endif if ((rfptr == 0) && check) { errstream << "error during getSymbol for " << name << ":" << dlerror() << endl; } return rfptr; } #ifndef LEANDYNLOAD // LEANDYNLOAD means just the DynLoader class // now the stuff handling search for plugins and loading //lint -sem(PluginVector::add, custodial(1)) // OK, I could take a vector but that is not supported with all compilers yet. class PluginVector { public: enum { maxPlugins = 100 }; PluginVector():curindex(0u) { for (unsigned int i = 0; i < maxPlugins; i++) pluginPtr[i] = 0; } ~PluginVector() { for (unsigned int i = 0; i < maxPlugins; i++) { delete pluginPtr[i]; pluginPtr[i] = 0; } } void add(DynLoader * newelem) { pluginPtr[curindex] = newelem; curindex++; } DynLoader *pluginPtr[maxPlugins]; unsigned int curindex; NOCOPYANDASSIGN(PluginVector) }; static PluginVector LoadedPlugins; static void loadaPlugin(const char *filename, ostream & errstream, bool verbose) { if (verbose && filename) errstream << "loading plugin: " << filename << endl; DriverDescription::currentfilename = filename; DynLoader *dynloader = new DynLoader(filename, errstream, verbose); if (!dynloader->valid()) { delete dynloader; errstream << "Problem during opening of pstoedit driver plugin: " << filename << ". This is no problem as long the driver in this library is not needed. Possibly you need to install further libraries and/or extend the LD_LIBRARY_PATH (*nix) or PATH (Windows) environment variables." << endl; return; } else { #if defined (__APPLE__) // on MacOS it seems necessary to at least do a dlsym to an existing symbol // to get the global ctors beeing called void (*fp) () = ((void (*)()) dynloader->getSymbol("initlibrary")); if (fp) { if (verbose) { errstream << "getSymbol(\"initlibrary\") succeeded." << endl; } } else { errstream << "getSymbol(\"initlibrary\") failed." << endl; } #endif } LoadedPlugins.add(dynloader); // this seems to be obsolete. but not with .dll's // globalRp->explainformats(errstream); if (dynloader->knownSymbol("getglobalRp")) { getglobalRpFuncPtr dyngetglobalRpFunc = (getglobalRpFuncPtr) dynloader->getSymbol("getglobalRp"); if (dyngetglobalRpFunc == 0) { errstream << "could not find getglobalRp " << endl; return; } DescriptionRegister *dynglobalRp = dyngetglobalRpFunc(); if (dynglobalRp == 0) { errstream << " didn't find any registered Drivers " << endl; } else if (dynglobalRp != getglobalRp()) { // globalRp->explainformats(errstream); getglobalRp()->mergeRegister(errstream, *dynglobalRp, filename); } } else { // didn't fint getglobalRp // so assume that the plug-in does not have // it's own copy of globalRp but uses the // one from the caller } // globalRp->explainformats(errstream); } // for directory search #if (defined (HAVE_DLFCN_H) && (HAVE_DLFCN_H==1 ) ) #include #define DIR_VERSION 1 #elif (defined (HAVE_SYS_NDIR_H) && (HAVE_SYS_NDIR_H==1 ) ) #include #define DIR_VERSION 2 #elif (defined (HAVE_SYS_DIR_H) && (HAVE_SYS_DIR_H==1 ) ) #include #define DIR_VERSION 3 #elif (defined (HAVE_NDIR_H) && (HAVE_NDIR_H==1 ) ) #include #define DIR_VERSION 4 #else // // last chance #if defined(__linux) || defined(__linux__) || defined(__CYGWIN32__) || defined(__FreeBSD__) || defined(__hpux) || defined(__sparc) || defined(__OS2__) || defined(_AIX) #include #define DIR_VERSION 5 #else // if not even direct.h is available we leave DIR_VERSION unset and later skip to Windows #endif #endif #ifdef DIR_VERSION // this is for all *nix like systems void loadPlugInDrivers(const char *pluginDir, ostream & errstream, bool verbose) { if (pluginDir) { DIR *dirp; struct dirent *direntp; #if defined(__OS2__) || defined(__CYGWIN32__) const char *const suffix = ".dll"; #elif defined (__APPLE__) const char *const suffix = ".so"; // ".dylib"; // Note: the suffix depends on the way the plugin libraries are built via libtool. // If the -module flag is set, then the output is a .so library, // if no -module is given, then the output is a .dylib library. // We use the .so since we use the -module option, since that is needed for other // systems such as cygwin. #elif defined (__hpux) const char *const suffix = ".sl"; #else const char *const suffix = ".so"; #endif if (verbose && pluginDir) errstream << "loading plugins from " << pluginDir << " using suffix: " << suffix << endl; dirp = opendir(pluginDir); if (!dirp) { if (verbose && pluginDir) errstream << "opendir failed on: " << pluginDir << endl; return; } while ((direntp = readdir(dirp)) != NIL) { // cout << direntp->d_name << endl; unsigned int flen = strlen(direntp->d_name); char *expectedpositionofsuffix = direntp->d_name + flen - strlen(suffix); // if ( local filename starts with drv or plugins and ends with .so) #if defined (__CYGWIN32__) const char *const libprefix = "cygp2edrv"; #else const char *const libprefix = "libp2edrv"; #endif if (((strstr(direntp->d_name, libprefix) == direntp->d_name) || (strstr(direntp->d_name, "plugin") == direntp->d_name) ) && (strstr(expectedpositionofsuffix, suffix) == expectedpositionofsuffix)) { char *fullname = new char[strlen(pluginDir) + flen + 2]; strcpy(fullname, pluginDir); strcat(fullname, "/"); strcat(fullname, direntp->d_name); // cout << direntp->d_name << " " << fullname << endl; loadaPlugin(fullname, errstream, verbose); delete[]fullname; } } // while closedir(dirp); } else { errstream << "Could not load plugins - parameter pluginDir is null " << endl; return; } } #elif defined(_WIN32) void loadPlugInDrivers(const char *pluginDir, ostream & errstream, bool verbose) { if (pluginDir != 0) { char szExePath[1000]; szExePath[0] = '\0'; (void) P_GetPathToMyself("pstoedit", szExePath, sizeof(szExePath)); WIN32_FIND_DATA finddata; const char pattern[] = "/*.dll"; const size_t size = strlen(pluginDir) + strlen(pattern) + 1; char *searchpattern = new char[size]; strcpy_s(searchpattern, size, pluginDir); strcat_s(searchpattern, size, pattern); HANDLE findHandle = FindFirstFile(searchpattern, &finddata); if (findHandle == INVALID_HANDLE_VALUE) { if (verbose) errstream << "Could not open plug-in directory (" << pluginDir << " or didn't find any plugin there" << endl; } else { BOOL more = true; while (more) { // check for suffix beeing really .dll because FindFirstFile also matches // files such as e.g. .dllx const size_t len = strlen(finddata.cFileName); // -4 means go back the length of ".dll" if (STRICMP(&finddata.cFileName[len - 4], ".dll") == 0) { // cout << &finddata.cFileName[len -4 ] << endl; const size_t size_2 = strlen(pluginDir) + len + 3; char *fullname = new char[size_2]; strcpy_s(fullname, size_2, pluginDir); strcat_s(fullname, size_2, "\\"); strcat_s(fullname, size_2, finddata.cFileName); // errstream << "szExePath " << szExePath << endl; if ((STRICMP(fullname, szExePath) != 0) && (STRICMP(finddata.cFileName, "pstoedit.dll") != 0)) { // avoid loading dll itself again // errstream << "loading " << fullname << endl; loadaPlugin(fullname, errstream, verbose); } else { // errstream << "ignoring myself " << finddata.cFileName << endl; } delete[]fullname; } more = FindNextFile(findHandle, &finddata); } (void) FindClose(findHandle); } delete[]searchpattern; } else { errstream << "Could not load plugins - parameter pluginDir is null " << endl; return; } } #else #error "system unsupported so far (directory reading)" #endif #endif // LEAN #else // no shared libs #ifdef HAVESTL #include using namespace std; #else class ostream; #endif void loadPlugInDrivers(const char *pluginDir, ostream & errstream, bool verbose) { if (verbose) { errstream << "dummy version of loadPlugInDrivers called since you system doesn't seem to support loading libraries at runtime - If you think that this is not correct, contact the author of this program (wglunz35_AT_pstoedit.net) " << endl; } } // just a dummy Version #endif pstoedit-3.62/src/dynload.h0000644000175500010010000000352212137224257012613 00000000000000/* dynload.h : This file is part of pstoedit declarations for dynamic loading of drivers Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #include I_ostream #include I_istream #include I_iostream class DLLEXPORT DynLoader { public: typedef void (*fptr)(); // any signature possible, but is has to be a function pointer. // the new standard does not allow to mix normal and function pointers. DynLoader(const char * libname_P = 0, std::ostream & errstream_p = std::cerr, int verbose_p = 0); ~DynLoader(); void open(const char * libname); void close(); fptr getSymbol(const char * name, int check = 1) const; int knownSymbol(const char * name) const; int valid() const { return handle != 0; } const void * gethandle() const { return handle; } private: char * libname; void* handle; std::ostream & errstream; int verbose; NOCOPYANDASSIGN(DynLoader) }; #ifdef HAVESTL #include using namespace std; #else class ostream; #endif #ifndef LEANDYNLOAD // lean - just the dlopen/dlclose stuff void loadPlugInDrivers(const char * pluginDir,ostream& errstream,bool verbose); #endif pstoedit-3.62/src/emflib.cpp0000644000175500010010000000030512137224254012743 00000000000000#ifndef HAVE_CONFIG_H #define HAVE_CONFIG_H #endif #include "cppcomp.h" #include I_iostream USESTD #ifdef VERSION #undef VERSION #endif #ifdef PACKAGE #undef PACKAGE #endif #include "libemf.cpp" pstoedit-3.62/src/genericints.h0000644000175500010010000000320712137224257013473 00000000000000 namespace GenericInts { enum TypeMapperTypeEnum { char_t, short_t, int_t, long_t, uchar_t, ushort_t, uint_t, ulong_t, notavailable_t }; //need a macro here because C++ does not allow a function call to be used as template instantiation parameter #define SizeToTypeMapper_gettype(size) (\ (size)==8*sizeof(signed char) ? GenericInts::char_t: \ (size)==8*sizeof(signed short)? GenericInts::short_t: \ (size)==8*sizeof(signed int) ? GenericInts::int_t: \ (size)==8*sizeof(signed long) ? GenericInts::long_t: \ GenericInts::notavailable_t ) template struct TypeMapper; // // the following template specialisations map from the type enum to the concrete type // template<> struct TypeMapper { typedef signed char type;}; template<> struct TypeMapper { typedef signed short type;}; template<> struct TypeMapper { typedef signed int type;}; template<> struct TypeMapper { typedef signed long type;}; template<> struct TypeMapper { typedef unsigned char type;}; template<> struct TypeMapper { typedef unsigned short type;}; template<> struct TypeMapper { typedef unsigned int type;}; template<> struct TypeMapper { typedef unsigned long type;}; template struct Int { typedef typename TypeMapper< SizeToTypeMapper_gettype(size) >::type signedtype; typedef typename TypeMapper< (GenericInts::TypeMapperTypeEnum) (SizeToTypeMapper_gettype(size) + (GenericInts::uchar_t - GenericInts::char_t)) >::type unsignedtype; }; } pstoedit-3.62/src/initlibrary.cpp0000644000175500010010000000004712137224254014040 00000000000000extern "C" { void initlibrary() { } } pstoedit-3.62/src/lexyy.cpp0000744000175500010010000042615412137232300012665 00000000000000 #line 3 "F:\\pstoedit\\devbase\\src\\lexyy.cpp" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 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 */ 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 75 #define YY_END_OF_BUFFER 76 /* 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[979] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 60, 60, 60, 60, 60, 60, 60, 1, 60, 60, 60, 60, 60, 74, 74, 74, 1, 74, 74, 74, 74, 74, 74, 60, 60, 1, 74, 6, 4, 6, 1, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 67, 0, 62, 0, 61, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 52, 0, 0, 0, 49, 0, 0, 0, 0, 45, 0, 0, 0, 23, 0, 0, 36, 39, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 51, 0, 0, 0, 0, 39, 0, 0, 0, 33, 0, 31, 0, 0, 0, 38, 0, 0, 0, 14, 0, 0, 0, 0, 0, 21, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 53, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 11, 0, 0, 26, 0, 0, 10, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 44, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 55, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 5, 1, 1, 6, 7, 1, 1, 1, 8, 9, 1, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 11, 1, 1, 1, 1, 1, 1, 12, 13, 14, 15, 16, 17, 18, 12, 12, 12, 12, 12, 19, 20, 12, 21, 12, 12, 22, 12, 12, 12, 23, 12, 12, 12, 24, 1, 25, 1, 1, 1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 12, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 1, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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[53] = { 0, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1 } ; static yyconst flex_int16_t yy_base[996] = { 0, 0, 41, 80, 119, 6, 12, 1715, 1697, 15, 25, 1695, 1684, 1687, 22, 3277, 33, 160, 34, 48, 50, 57, 67, 49, 74, 75, 105, 3277, 1680, 3, 86, 25, 1642, 1634, 1612, 1605, 1590, 103, 21, 89, 97, 3277, 3277, 104, 112, 3277, 1620, 99, 132, 136, 137, 141, 147, 148, 154, 165, 3277, 167, 173, 186, 196, 198, 205, 210, 175, 200, 177, 212, 219, 226, 214, 237, 243, 247, 253, 254, 255, 259, 261, 1614, 262, 265, 29, 1573, 248, 1573, 1558, 1550, 1548, 1574, 126, 211, 248, 143, 1568, 273, 280, 281, 286, 295, 301, 303, 342, 310, 316, 324, 329, 336, 344, 334, 351, 353, 364, 366, 305, 322, 371, 372, 379, 380, 384, 391, 396, 398, 400, 437, 402, 1523, 1520, 1505, 1512, 1513, 1503, 1505, 1494, 1477, 1497, 409, 385, 250, 1464, 413, 422, 427, 431, 311, 447, 452, 459, 464, 466, 479, 507, 418, 481, 486, 488, 495, 497, 512, 514, 524, 535, 537, 529, 420, 429, 501, 541, 518, 545, 552, 556, 563, 564, 438, 569, 574, 570, 575, 576, 580, 581, 586, 599, 1468, 1464, 1459, 1452, 603, 1439, 1438, 1441, 1469, 587, 588, 163, 1405, 590, 591, 609, 611, 621, 628, 635, 637, 642, 644, 651, 658, 664, 672, 677, 679, 684, 689, 691, 706, 696, 708, 713, 714, 715, 629, 662, 721, 652, 725, 727, 729, 741, 742, 748, 743, 750, 752, 756, 758, 762, 764, 766, 773, 3277, 1403, 1391, 1390, 1392, 776, 3277, 1378, 1366, 1371, 1391, 338, 777, 203, 1348, 779, 783, 789, 790, 799, 809, 811, 817, 825, 827, 836, 843, 845, 853, 858, 863, 865, 870, 877, 888, 890, 895, 900, 801, 818, 871, 851, 901, 906, 910, 908, 914, 918, 916, 922, 924, 928, 936, 938, 948, 949, 955, 956, 1355, 1340, 796, 963, 967, 972, 977, 247, 703, 509, 83, 1346, 978, 979, 987, 980, 988, 993, 1000, 1008, 1018, 3277, 1036, 1023, 1028, 1038, 1043, 1045, 1054, 1059, 1061, 1067, 1073, 1082, 1089, 1091, 1096, 1102, 994, 1001, 1029, 1104, 1077, 1106, 1108, 1114, 1083, 1135, 1047, 1146, 1115, 1139, 1148, 1152, 1126, 1153, 1159, 1158, 1320, 1122, 1167, 3277, 1170, 3277, 1175, 3277, 1179, 3277, 1182, 3277, 1320, 1299, 837, 1174, 600, 1156, 243, 1301, 1185, 1191, 1207, 3277, 1216, 1224, 1198, 1226, 1231, 1236, 1241, 1246, 1283, 1248, 1253, 1260, 1270, 1275, 1290, 1304, 1306, 1292, 1312, 1317, 1324, 1254, 1326, 1330, 1332, 1261, 1284, 1336, 1277, 1346, 1353, 3277, 1366, 1347, 1375, 3277, 1381, 1354, 1338, 1367, 1382, 1387, 1358, 1389, 1393, 1395, 1408, 1296, 1401, 3277, 1288, 1267, 819, 1255, 1250, 1236, 1241, 1232, 1221, 192, 1214, 1213, 1402, 261, 1207, 1410, 1412, 1430, 3277, 1436, 1416, 1438, 1444, 1450, 1456, 1458, 1465, 1463, 1471, 1477, 1483, 1488, 1498, 1503, 1505, 1511, 1516, 1518, 1523, 1524, 1530, 1509, 1532, 1448, 1537, 1541, 1549, 1558, 3277, 1565, 1551, 1418, 1566, 1570, 1571, 1572, 1580, 1579, 1578, 1584, 1591, 3277, 1597, 1617, 1198, 1207, 1202, 1180, 1178, 1187, 1163, 1170, 1154, 1135, 1122, 1121, 1122, 618, 294, 1113, 1598, 1607, 1620, 1626, 1628, 1640, 1646, 3277, 1669, 1648, 1654, 1660, 1662, 1671, 1677, 3277, 1714, 1687, 1692, 1694, 1702, 1721, 1723, 1707, 1732, 1715, 1745, 1752, 1652, 1756, 1700, 1757, 1758, 1762, 1768, 1769, 1774, 1775, 1787, 1779, 1780, 1789, 1793, 1634, 1803, 3277, 1111, 1806, 724, 1089, 1105, 1817, 1088, 1069, 1053, 1040, 1029, 1034, 990, 853, 694, 1011, 1632, 1826, 1834, 3277, 1840, 1846, 1852, 1819, 1858, 1860, 1865, 1871, 3277, 1894, 1873, 1881, 1795, 1886, 1899, 1901, 3277, 1912, 1917, 1924, 1931, 1936, 1941, 1943, 1903, 1918, 1809, 1875, 1925, 1827, 1949, 1957, 3277, 1964, 1965, 1971, 1972, 1979, 3277, 1985, 1994, 1986, 1987, 2001, 1995, 2007, 2013, 3277, 987, 2020, 1013, 2023, 3277, 977, 969, 959, 920, 928, 906, 914, 995, 938, 896, 2025, 2032, 3277, 2038, 2040, 2046, 3277, 2080, 2048, 2054, 2056, 2062, 2068, 2070, 2085, 2101, 2091, 2103, 2108, 2114, 2124, 2129, 2130, 2135, 2136, 2141, 2072, 2148, 3277, 2154, 2142, 2160, 3277, 2180, 2186, 2192, 3277, 2198, 2204, 2166, 2210, 3277, 2217, 2089, 2223, 3277, 900, 2226, 3277, 0, 886, 878, 2229, 2232, 869, 862, 2235, 882, 3277, 828, 2161, 2240, 2242, 2247, 2249, 2255, 3277, 2286, 2261, 2263, 2269, 2271, 2277, 2288, 2294, 2308, 3277, 2317, 2324, 2292, 2330, 2309, 2167, 2174, 2331, 2336, 2342, 3277, 2348, 2366, 3277, 2372, 2378, 2385, 805, 0, 2391, 811, 2394, 3277, 2397, 3277, 783, 766, 2400, 3277, 777, 2279, 2403, 3277, 2414, 2355, 2405, 2420, 2432, 3277, 2456, 2422, 3277, 2438, 2443, 2445, 2458, 2464, 2473, 2479, 2481, 2357, 2489, 3277, 2499, 2300, 2407, 2465, 2379, 2436, 2503, 2514, 3277, 2523, 2529, 3277, 2537, 742, 2452, 3277, 695, 677, 653, 685, 2516, 2578, 2505, 2548, 3277, 2620, 2531, 2550, 2555, 2560, 2565, 2570, 2572, 2580, 2507, 2582, 2515, 2584, 2592, 2599, 2608, 646, 635, 640, 2629, 651, 2621, 2637, 2642, 2647, 2649, 2661, 2663, 2668, 2675, 2685, 2695, 2669, 2705, 2686, 2598, 2622, 2676, 2677, 617, 590, 594, 2720, 3277, 593, 2696, 2712, 2749, 2729, 2723, 2734, 2736, 2742, 2757, 2772, 3277, 2778, 2787, 3277, 2793, 2724, 2799, 3277, 2805, 2651, 2780, 2653, 2743, 2811, 528, 514, 557, 490, 2812, 2819, 2821, 2828, 2830, 2835, 2837, 2843, 3277, 2855, 2862, 3277, 2868, 2845, 2870, 2878, 2884, 2890, 3277, 2897, 483, 2903, 473, 473, 2912, 2918, 2938, 2905, 2920, 2925, 2926, 2932, 3277, 2962, 2969, 3277, 2976, 2956, 2982, 3277, 458, 448, 2986, 3277, 2992, 2999, 3277, 3034, 2949, 2940, 3008, 2750, 3005, 3014, 3277, 446, 432, 3018, 3020, 3025, 3026, 425, 409, 3040, 3277, 3059, 3042, 3065, 3027, 380, 3277, 3072, 3077, 2942, 404, 3079, 3084, 3048, 366, 3089, 3091, 2993, 337, 3102, 3104, 3093, 293, 3109, 3119, 3128, 282, 3134, 3140, 3277, 3146, 207, 3148, 192, 3153, 167, 135, 127, 88, 84, 81, 53, 3161, 3164, 3277, 3277, 3196, 3201, 3206, 3211, 3216, 3221, 3226, 3231, 3236, 3239, 3244, 3246, 3251, 3256, 3261, 3266, 3271 } ; static yyconst flex_int16_t yy_def[996] = { 0, 979, 979, 980, 980, 981, 981, 980, 980, 982, 982, 983, 983, 978, 984, 978, 984, 985, 986, 984, 984, 984, 984, 984, 984, 984, 984, 978, 987, 978, 978, 978, 978, 978, 978, 978, 978, 988, 978, 978, 987, 978, 978, 978, 978, 978, 978, 984, 984, 984, 984, 984, 984, 984, 984, 985, 978, 989, 985, 985, 985, 985, 985, 985, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 987, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 988, 988, 988, 987, 978, 984, 984, 984, 984, 984, 985, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 988, 988, 987, 978, 984, 984, 984, 984, 984, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 986, 986, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 988, 988, 987, 978, 984, 984, 984, 984, 984, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 986, 986, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 988, 988, 987, 978, 984, 984, 984, 984, 984, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 986, 986, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 978, 978, 978, 978, 988, 990, 987, 978, 984, 984, 984, 984, 984, 985, 989, 989, 989, 978, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 985, 986, 986, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 988, 978, 990, 990, 987, 978, 984, 984, 984, 978, 984, 984, 984, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 985, 986, 986, 986, 986, 986, 984, 984, 984, 984, 984, 978, 984, 984, 984, 978, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 978, 988, 978, 978, 978, 978, 978, 978, 978, 978, 978, 990, 987, 978, 984, 984, 984, 978, 984, 984, 985, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 985, 985, 985, 985, 985, 985, 985, 986, 986, 986, 986, 986, 984, 984, 984, 984, 978, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 984, 978, 978, 978, 988, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 990, 987, 978, 984, 984, 984, 985, 989, 989, 989, 978, 989, 989, 989, 989, 989, 989, 989, 978, 989, 989, 985, 985, 991, 985, 985, 985, 985, 986, 986, 986, 986, 986, 986, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 978, 978, 978, 978, 990, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 990, 987, 978, 984, 984, 984, 978, 984, 985, 985, 989, 989, 989, 989, 989, 978, 989, 989, 989, 989, 985, 985, 991, 978, 991, 991, 991, 985, 985, 985, 985, 986, 986, 986, 986, 984, 984, 984, 984, 978, 984, 984, 984, 984, 984, 978, 984, 984, 984, 984, 984, 984, 978, 978, 978, 373, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 990, 992, 978, 984, 984, 978, 984, 989, 989, 978, 989, 989, 989, 989, 989, 989, 985, 985, 991, 991, 985, 985, 985, 985, 986, 986, 986, 986, 984, 984, 984, 978, 984, 984, 984, 978, 984, 984, 984, 978, 984, 984, 984, 984, 978, 984, 984, 978, 978, 978, 978, 978, 993, 978, 978, 978, 978, 978, 978, 978, 992, 978, 978, 984, 989, 989, 989, 989, 989, 978, 989, 989, 994, 985, 991, 991, 985, 985, 985, 978, 985, 985, 986, 986, 986, 986, 984, 984, 984, 984, 978, 984, 984, 978, 984, 984, 984, 978, 993, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 984, 989, 978, 989, 989, 989, 989, 989, 978, 989, 994, 978, 994, 994, 985, 991, 991, 985, 985, 985, 986, 986, 978, 986, 986, 986, 986, 984, 984, 984, 984, 978, 984, 984, 978, 984, 978, 978, 978, 978, 978, 978, 978, 984, 989, 989, 989, 978, 989, 994, 994, 985, 991, 991, 985, 985, 985, 986, 986, 986, 986, 984, 984, 984, 978, 978, 978, 978, 978, 984, 989, 989, 994, 994, 985, 991, 991, 985, 985, 985, 986, 986, 986, 986, 984, 984, 984, 978, 978, 978, 978, 978, 978, 984, 989, 989, 994, 994, 985, 991, 991, 985, 985, 978, 985, 985, 978, 985, 986, 986, 978, 986, 986, 986, 984, 984, 984, 978, 978, 978, 978, 984, 989, 989, 994, 994, 985, 991, 991, 978, 991, 985, 978, 985, 986, 986, 986, 984, 984, 978, 984, 978, 978, 978, 978, 984, 989, 989, 994, 994, 991, 986, 986, 978, 986, 984, 978, 984, 995, 978, 978, 978, 978, 984, 978, 984, 989, 978, 989, 994, 994, 991, 986, 995, 995, 978, 978, 978, 994, 994, 991, 986, 978, 978, 994, 978, 994, 994, 991, 986, 978, 978, 994, 991, 986, 978, 994, 991, 986, 978, 994, 991, 986, 978, 994, 991, 986, 978, 994, 991, 986, 978, 994, 986, 978, 986, 978, 994, 978, 994, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 0, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978 } ; static yyconst flex_int16_t yy_nxt[3330] = { 0, 978, 978, 15, 16, 17, 18, 19, 20, 21, 21, 37, 80, 80, 38, 39, 39, 37, 42, 978, 38, 39, 39, 43, 44, 44, 48, 22, 42, 49, 80, 80, 23, 43, 44, 44, 978, 48, 65, 24, 49, 66, 25, 26, 15, 16, 17, 18, 19, 20, 21, 21, 67, 48, 48, 49, 49, 49, 50, 68, 68, 48, 82, 127, 49, 69, 69, 69, 22, 128, 83, 48, 51, 23, 49, 52, 53, 54, 48, 48, 24, 49, 49, 25, 26, 28, 56, 69, 29, 30, 30, 71, 72, 70, 81, 81, 81, 81, 81, 81, 56, 975, 93, 48, 73, 74, 49, 89, 31, 48, 32, 33, 49, 80, 80, 974, 81, 34, 35, 81, 81, 81, 81, 36, 28, 376, 973, 29, 30, 30, 978, 75, 972, 76, 91, 77, 48, 92, 78, 49, 67, 95, 81, 49, 49, 48, 56, 31, 49, 32, 33, 48, 48, 971, 49, 49, 34, 35, 48, 139, 92, 49, 36, 56, 57, 58, 56, 59, 56, 100, 56, 102, 59, 970, 103, 53, 56, 100, 98, 65, 59, 116, 66, 60, 66, 96, 108, 97, 61, 56, 109, 62, 255, 59, 63, 104, 99, 105, 106, 56, 100, 56, 100, 59, 65, 59, 56, 66, 56, 100, 107, 969, 59, 56, 100, 978, 48, 59, 48, 49, 505, 49, 110, 48, 310, 114, 49, 69, 69, 69, 48, 968, 506, 49, 69, 69, 69, 966, 111, 112, 117, 48, 118, 115, 49, 137, 56, 48, 113, 69, 49, 48, 978, 56, 49, 53, 69, 48, 48, 48, 49, 49, 49, 48, 56, 48, 49, 119, 49, 120, 81, 81, 81, 81, 81, 81, 130, 48, 370, 131, 49, 124, 92, 445, 48, 48, 138, 49, 49, 196, 48, 371, 81, 49, 121, 81, 122, 56, 510, 48, 123, 126, 49, 125, 56, 100, 56, 102, 59, 164, 103, 141, 66, 56, 152, 48, 53, 103, 49, 56, 102, 145, 142, 103, 964, 143, 65, 56, 102, 66, 144, 103, 56, 102, 572, 959, 103, 56, 100, 56, 102, 59, 978, 103, 146, 56, 102, 56, 100, 103, 202, 59, 165, 153, 56, 100, 56, 100, 59, 147, 59, 148, 159, 155, 154, 149, 156, 56, 100, 56, 100, 59, 308, 59, 158, 65, 48, 146, 66, 49, 157, 150, 955, 48, 48, 151, 49, 49, 48, 978, 161, 49, 163, 160, 951, 48, 114, 166, 49, 167, 48, 162, 48, 49, 48, 49, 48, 49, 947, 49, 943, 195, 168, 978, 115, 170, 939, 48, 169, 92, 49, 56, 102, 171, 65, 103, 48, 66, 175, 49, 172, 48, 173, 65, 49, 48, 66, 176, 49, 198, 174, 48, 232, 92, 49, 49, 194, 138, 199, 183, 56, 100, 210, 200, 59, 56, 102, 938, 177, 103, 201, 931, 56, 102, 222, 178, 103, 56, 102, 56, 102, 103, 930, 103, 179, 180, 223, 203, 204, 181, 182, 206, 56, 102, 56, 102, 103, 925, 103, 56, 102, 56, 102, 103, 207, 103, 924, 205, 56, 102, 56, 100, 103, 910, 59, 65, 208, 909, 66, 156, 56, 102, 211, 906, 103, 56, 100, 56, 100, 59, 373, 59, 48, 212, 147, 49, 148, 56, 100, 215, 149, 59, 213, 65, 892, 209, 66, 214, 56, 100, 56, 100, 59, 375, 59, 65, 150, 224, 66, 48, 151, 225, 49, 217, 114, 221, 48, 226, 216, 49, 48, 891, 890, 49, 218, 219, 889, 48, 48, 220, 49, 49, 115, 48, 48, 227, 49, 49, 48, 48, 48, 49, 49, 49, 48, 48, 229, 49, 49, 230, 48, 978, 978, 49, 48, 48, 228, 49, 49, 233, 234, 241, 242, 241, 231, 247, 248, 247, 235, 236, 237, 373, 238, 48, 239, 48, 49, 253, 49, 868, 254, 92, 92, 867, 866, 48, 257, 240, 49, 373, 258, 56, 100, 65, 375, 59, 66, 260, 56, 102, 56, 102, 103, 865, 103, 56, 102, 56, 102, 103, 571, 103, 375, 259, 56, 102, 285, 840, 103, 49, 265, 56, 102, 282, 261, 103, 65, 56, 102, 66, 837, 103, 262, 263, 264, 56, 102, 836, 266, 103, 56, 102, 56, 102, 103, 835, 103, 56, 102, 816, 267, 103, 56, 100, 56, 100, 59, 56, 59, 56, 100, 283, 815, 59, 268, 269, 270, 978, 272, 56, 100, 56, 100, 59, 271, 59, 56, 100, 65, 65, 59, 66, 66, 274, 273, 65, 639, 814, 66, 48, 275, 48, 49, 288, 49, 626, 49, 92, 277, 813, 276, 372, 278, 279, 281, 48, 48, 48, 49, 49, 49, 284, 48, 291, 48, 49, 48, 49, 375, 49, 48, 280, 48, 49, 286, 49, 48, 287, 48, 49, 48, 49, 812, 49, 292, 241, 242, 241, 247, 248, 247, 978, 293, 48, 290, 289, 49, 48, 790, 297, 49, 53, 299, 48, 48, 295, 49, 49, 360, 361, 360, 294, 296, 48, 298, 65, 49, 309, 66, 312, 789, 92, 56, 100, 56, 102, 59, 788, 103, 314, 56, 102, 65, 978, 103, 66, 313, 320, 321, 322, 56, 102, 103, 315, 103, 338, 316, 787, 317, 56, 102, 978, 784, 103, 339, 318, 56, 102, 56, 102, 103, 498, 103, 92, 319, 341, 56, 102, 66, 323, 103, 56, 102, 434, 373, 103, 56, 102, 56, 102, 103, 92, 103, 56, 100, 65, 747, 59, 66, 324, 56, 332, 325, 638, 59, 699, 326, 375, 328, 329, 327, 56, 100, 56, 100, 59, 744, 59, 56, 100, 340, 330, 59, 56, 100, 65, 743, 59, 66, 331, 48, 336, 48, 49, 48, 49, 738, 49, 48, 346, 48, 49, 48, 49, 334, 49, 48, 333, 48, 49, 737, 49, 48, 335, 735, 49, 700, 343, 337, 344, 48, 699, 48, 49, 342, 49, 348, 697, 696, 53, 345, 347, 48, 48, 695, 49, 49, 53, 351, 48, 48, 694, 49, 49, 350, 362, 363, 362, 353, 364, 365, 364, 352, 349, 366, 367, 366, 355, 354, 368, 369, 368, 48, 48, 48, 49, 49, 49, 357, 380, 381, 382, 48, 693, 49, 49, 56, 100, 65, 692, 59, 66, 356, 56, 102, 65, 373, 103, 66, 378, 691, 56, 102, 383, 384, 103, 379, 690, 687, 385, 320, 321, 322, 403, 640, 103, 56, 102, 387, 375, 103, 56, 102, 65, 637, 103, 66, 386, 320, 321, 322, 56, 390, 103, 404, 103, 56, 102, 56, 102, 103, 415, 103, 147, 49, 148, 388, 56, 102, 149, 636, 103, 56, 102, 56, 102, 103, 635, 103, 391, 56, 100, 389, 405, 59, 150, 56, 100, 634, 151, 59, 65, 392, 393, 66, 56, 100, 48, 396, 59, 49, 395, 56, 100, 56, 100, 59, 633, 59, 56, 100, 632, 394, 59, 397, 56, 100, 407, 65, 59, 48, 66, 48, 49, 398, 49, 146, 400, 48, 48, 631, 49, 49, 401, 430, 431, 430, 399, 402, 114, 48, 628, 627, 49, 411, 406, 409, 412, 413, 414, 408, 623, 49, 48, 410, 573, 49, 115, 416, 417, 418, 570, 48, 49, 419, 49, 48, 48, 569, 49, 49, 420, 48, 48, 568, 49, 49, 373, 425, 360, 361, 360, 362, 363, 362, 567, 421, 364, 365, 364, 422, 366, 367, 366, 368, 369, 368, 423, 428, 48, 375, 566, 49, 426, 444, 48, 565, 564, 49, 424, 427, 435, 48, 436, 437, 49, 978, 438, 439, 380, 381, 382, 440, 441, 49, 442, 563, 448, 380, 381, 382, 443, 562, 49, 561, 447, 449, 450, 451, 56, 100, 49, 560, 59, 56, 102, 92, 559, 103, 56, 102, 558, 452, 103, 56, 102, 511, 508, 103, 56, 102, 56, 102, 103, 507, 103, 56, 102, 65, 53, 103, 66, 455, 56, 102, 65, 504, 103, 66, 453, 503, 502, 457, 56, 102, 501, 500, 103, 56, 102, 454, 478, 103, 460, 49, 456, 56, 102, 48, 499, 103, 49, 459, 56, 100, 56, 100, 59, 471, 59, 147, 461, 148, 462, 463, 475, 149, 56, 100, 56, 100, 59, 497, 59, 458, 56, 100, 466, 467, 59, 56, 100, 150, 476, 59, 496, 151, 56, 100, 495, 65, 59, 464, 66, 65, 446, 65, 66, 465, 66, 48, 433, 48, 49, 468, 49, 432, 469, 479, 480, 481, 48, 482, 49, 49, 412, 413, 414, 48, 472, 49, 49, 48, 473, 429, 49, 474, 470, 412, 413, 414, 48, 484, 49, 49, 377, 477, 416, 417, 418, 359, 358, 49, 416, 417, 418, 48, 311, 49, 49, 53, 48, 488, 48, 49, 307, 49, 48, 483, 48, 49, 306, 49, 430, 431, 430, 305, 485, 486, 53, 492, 493, 494, 373, 48, 49, 48, 49, 304, 49, 48, 491, 547, 49, 53, 49, 489, 487, 509, 303, 490, 302, 449, 450, 451, 301, 375, 49, 449, 450, 451, 56, 100, 49, 300, 59, 514, 56, 102, 512, 256, 103, 65, 56, 102, 66, 513, 103, 518, 519, 520, 56, 102, 103, 516, 103, 56, 102, 56, 102, 103, 515, 103, 252, 56, 102, 542, 251, 103, 53, 56, 102, 250, 249, 103, 526, 527, 528, 517, 246, 103, 56, 102, 245, 244, 103, 523, 521, 243, 522, 524, 56, 100, 525, 197, 59, 56, 100, 56, 532, 59, 193, 59, 65, 56, 100, 66, 192, 59, 56, 100, 56, 100, 59, 191, 59, 56, 100, 65, 529, 59, 66, 538, 450, 539, 190, 65, 66, 530, 66, 189, 48, 531, 533, 49, 48, 534, 188, 49, 187, 535, 186, 540, 48, 545, 48, 49, 537, 49, 536, 479, 480, 481, 185, 184, 49, 543, 479, 480, 481, 48, 541, 49, 49, 48, 48, 48, 49, 49, 49, 544, 140, 48, 48, 48, 49, 49, 49, 48, 136, 135, 49, 53, 492, 493, 494, 134, 133, 49, 492, 493, 494, 48, 546, 49, 49, 551, 549, 53, 552, 132, 48, 550, 553, 49, 129, 548, 56, 554, 556, 557, 556, 576, 577, 578, 94, 555, 49, 579, 527, 580, 56, 102, 59, 88, 103, 641, 575, 48, 49, 53, 49, 574, 56, 102, 87, 86, 103, 518, 519, 520, 56, 102, 103, 581, 103, 65, 56, 102, 66, 622, 103, 585, 586, 587, 56, 102, 103, 85, 103, 582, 518, 519, 520, 56, 102, 103, 583, 103, 526, 527, 528, 84, 56, 103, 603, 147, 978, 148, 46, 56, 102, 149, 584, 103, 56, 100, 56, 100, 59, 46, 59, 40, 588, 65, 594, 595, 66, 150, 596, 56, 100, 151, 590, 59, 589, 526, 527, 528, 65, 40, 103, 66, 592, 56, 100, 56, 100, 59, 591, 59, 147, 978, 148, 599, 56, 100, 149, 978, 59, 605, 600, 978, 601, 978, 597, 978, 538, 450, 539, 978, 598, 66, 150, 538, 450, 539, 151, 602, 66, 65, 48, 48, 66, 49, 49, 48, 978, 978, 49, 609, 610, 611, 48, 978, 49, 49, 114, 48, 48, 978, 49, 49, 48, 48, 604, 49, 49, 606, 615, 616, 617, 978, 48, 49, 115, 49, 48, 56, 102, 49, 607, 103, 978, 613, 556, 557, 556, 624, 625, 624, 978, 612, 65, 608, 614, 66, 978, 618, 629, 630, 629, 56, 102, 619, 978, 103, 620, 642, 643, 644, 48, 978, 49, 49, 621, 576, 577, 578, 653, 664, 49, 576, 577, 578, 978, 978, 49, 579, 527, 580, 978, 978, 59, 579, 527, 580, 645, 978, 59, 646, 647, 648, 56, 102, 103, 978, 103, 56, 102, 978, 667, 103, 585, 586, 587, 56, 102, 103, 65, 103, 978, 66, 53, 56, 102, 649, 978, 103, 56, 100, 978, 978, 59, 650, 146, 585, 586, 587, 651, 978, 103, 56, 100, 594, 595, 59, 65, 596, 978, 66, 147, 665, 148, 652, 594, 595, 149, 978, 596, 594, 656, 65, 978, 596, 66, 654, 594, 595, 48, 655, 596, 49, 150, 56, 100, 662, 151, 59, 56, 100, 978, 658, 59, 56, 100, 56, 100, 59, 978, 59, 668, 669, 670, 657, 597, 49, 978, 663, 609, 610, 611, 978, 659, 49, 666, 609, 610, 611, 48, 661, 49, 49, 672, 673, 674, 48, 978, 49, 49, 660, 615, 616, 617, 978, 978, 49, 615, 616, 617, 48, 48, 49, 49, 49, 671, 676, 677, 678, 48, 978, 49, 49, 681, 682, 683, 978, 53, 49, 685, 686, 685, 978, 978, 675, 624, 625, 624, 978, 679, 978, 680, 688, 689, 688, 629, 630, 629, 53, 48, 978, 978, 49, 684, 642, 643, 644, 978, 978, 49, 642, 643, 644, 56, 102, 49, 978, 103, 646, 647, 648, 56, 102, 103, 978, 103, 978, 56, 102, 56, 102, 103, 978, 103, 706, 707, 708, 978, 701, 103, 702, 56, 102, 56, 100, 103, 48, 59, 978, 49, 978, 53, 646, 647, 648, 704, 978, 103, 56, 100, 703, 978, 59, 48, 594, 595, 49, 147, 596, 148, 705, 709, 710, 149, 594, 595, 56, 100, 596, 978, 59, 56, 100, 978, 725, 59, 716, 717, 718, 150, 978, 59, 978, 151, 978, 711, 978, 56, 100, 712, 714, 59, 734, 65, 65, 713, 66, 66, 715, 65, 65, 978, 66, 66, 597, 48, 48, 978, 49, 49, 668, 669, 670, 978, 719, 49, 668, 669, 670, 978, 978, 49, 672, 673, 674, 48, 978, 49, 49, 720, 48, 65, 978, 49, 66, 722, 723, 721, 48, 978, 724, 49, 672, 673, 674, 978, 726, 49, 727, 728, 729, 748, 978, 49, 676, 677, 678, 53, 978, 49, 676, 677, 678, 978, 978, 49, 730, 731, 732, 774, 733, 49, 681, 682, 683, 978, 978, 49, 775, 681, 682, 683, 978, 53, 49, 685, 686, 685, 688, 689, 688, 739, 740, 739, 741, 742, 741, 745, 746, 745, 978, 53, 749, 750, 751, 56, 102, 103, 978, 103, 56, 102, 56, 102, 103, 978, 103, 706, 707, 708, 53, 978, 103, 755, 756, 757, 759, 760, 103, 978, 761, 752, 56, 100, 594, 595, 59, 978, 596, 978, 594, 595, 754, 48, 596, 978, 49, 753, 706, 707, 708, 56, 100, 103, 978, 59, 65, 56, 100, 66, 978, 59, 978, 147, 65, 148, 764, 66, 762, 149, 716, 717, 718, 65, 978, 59, 66, 763, 765, 716, 717, 718, 978, 791, 59, 150, 766, 56, 100, 151, 806, 59, 769, 770, 771, 48, 978, 66, 49, 768, 48, 978, 978, 49, 727, 728, 729, 978, 773, 49, 727, 728, 729, 978, 978, 49, 767, 776, 56, 792, 146, 65, 103, 772, 66, 201, 978, 777, 730, 731, 732, 978, 978, 49, 730, 731, 732, 978, 978, 49, 778, 779, 780, 809, 978, 49, 49, 781, 782, 783, 805, 53, 49, 785, 786, 785, 739, 740, 739, 741, 742, 741, 745, 746, 745, 749, 750, 751, 56, 102, 103, 65, 103, 978, 66, 53, 749, 750, 751, 978, 978, 103, 794, 795, 796, 759, 760, 103, 978, 761, 978, 147, 978, 148, 755, 756, 757, 149, 978, 103, 48, 759, 760, 49, 793, 761, 759, 798, 56, 100, 761, 807, 59, 150, 785, 786, 785, 151, 755, 756, 757, 594, 595, 103, 978, 596, 978, 594, 595, 65, 810, 596, 66, 147, 978, 148, 56, 100, 978, 149, 59, 797, 56, 100, 56, 100, 59, 978, 59, 799, 801, 769, 770, 771, 978, 150, 66, 800, 978, 151, 978, 769, 770, 771, 808, 802, 66, 48, 56, 102, 49, 65, 103, 803, 66, 804, 778, 779, 780, 830, 48, 49, 66, 49, 114, 778, 779, 780, 978, 978, 49, 781, 782, 783, 759, 760, 49, 828, 761, 781, 782, 783, 115, 811, 49, 201, 978, 817, 978, 819, 794, 795, 796, 759, 760, 103, 978, 761, 56, 822, 978, 820, 59, 594, 823, 978, 53, 596, 594, 595, 978, 978, 596, 56, 100, 56, 100, 59, 821, 59, 53, 56, 102, 56, 100, 103, 65, 59, 65, 66, 978, 66, 978, 797, 978, 147, 48, 148, 978, 49, 978, 149, 65, 48, 825, 66, 49, 978, 824, 818, 831, 826, 48, 978, 978, 49, 832, 150, 978, 827, 978, 151, 794, 795, 796, 48, 862, 103, 49, 49, 829, 838, 839, 838, 978, 53, 861, 147, 833, 148, 56, 102, 978, 149, 103, 56, 843, 834, 978, 103, 759, 760, 759, 760, 761, 883, 761, 48, 66, 150, 49, 841, 978, 151, 56, 100, 594, 595, 59, 978, 596, 594, 595, 65, 978, 596, 66, 842, 56, 100, 48, 48, 59, 49, 49, 846, 978, 850, 851, 852, 65, 844, 59, 66, 847, 845, 53, 853, 854, 855, 48, 848, 59, 49, 146, 978, 597, 857, 858, 859, 860, 114, 66, 978, 849, 56, 102, 856, 978, 103, 863, 864, 838, 839, 838, 978, 759, 760, 65, 115, 761, 66, 759, 760, 978, 869, 761, 56, 874, 594, 595, 59, 978, 596, 876, 877, 878, 48, 978, 596, 49, 870, 56, 102, 65, 978, 103, 66, 872, 879, 880, 881, 873, 978, 59, 978, 147, 978, 148, 978, 875, 882, 149, 871, 850, 851, 852, 978, 978, 59, 850, 851, 852, 929, 65, 59, 885, 66, 150, 853, 854, 855, 151, 978, 59, 853, 854, 855, 978, 978, 59, 857, 858, 859, 978, 978, 66, 857, 858, 859, 884, 978, 66, 886, 887, 888, 48, 978, 49, 49, 978, 146, 56, 102, 56, 895, 103, 978, 103, 978, 114, 759, 760, 759, 897, 761, 146, 761, 56, 100, 594, 595, 59, 978, 596, 876, 877, 878, 115, 65, 596, 978, 66, 978, 896, 978, 893, 876, 877, 878, 978, 978, 596, 894, 879, 880, 881, 978, 978, 59, 879, 880, 881, 978, 65, 59, 898, 66, 146, 899, 900, 901, 902, 978, 978, 66, 903, 904, 905, 978, 978, 49, 886, 887, 888, 114, 978, 49, 597, 886, 887, 888, 978, 978, 49, 907, 908, 907, 759, 760, 978, 146, 761, 115, 911, 912, 913, 978, 978, 49, 914, 915, 916, 759, 760, 103, 978, 761, 594, 595, 65, 978, 596, 66, 900, 901, 902, 978, 978, 66, 53, 56, 102, 759, 760, 103, 65, 761, 917, 66, 978, 918, 759, 760, 919, 147, 761, 148, 922, 923, 922, 149, 978, 797, 900, 901, 902, 978, 978, 66, 920, 903, 904, 905, 927, 978, 49, 150, 903, 904, 905, 151, 926, 49, 907, 908, 907, 114, 911, 912, 913, 946, 978, 49, 911, 912, 913, 65, 978, 49, 66, 914, 915, 916, 978, 115, 103, 922, 923, 922, 978, 594, 595, 978, 978, 596, 922, 923, 922, 53, 932, 933, 934, 759, 760, 761, 954, 761, 594, 595, 65, 65, 596, 66, 66, 53, 914, 915, 916, 928, 978, 103, 932, 933, 934, 759, 760, 761, 978, 761, 978, 147, 65, 148, 978, 66, 978, 149, 937, 935, 978, 932, 933, 934, 942, 936, 761, 978, 594, 595, 978, 940, 596, 150, 978, 759, 760, 151, 978, 761, 594, 595, 759, 760, 596, 978, 761, 594, 949, 950, 978, 596, 759, 760, 594, 595, 761, 65, 596, 978, 66, 978, 797, 944, 941, 759, 760, 594, 957, 761, 978, 596, 759, 960, 978, 953, 761, 978, 978, 948, 978, 945, 594, 595, 978, 978, 596, 978, 952, 978, 961, 962, 963, 978, 597, 66, 958, 759, 760, 978, 978, 761, 961, 962, 963, 978, 956, 66, 961, 962, 963, 759, 967, 66, 978, 761, 759, 760, 965, 978, 761, 978, 597, 976, 977, 976, 976, 977, 976, 978, 978, 114, 978, 978, 978, 978, 978, 797, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 115, 978, 978, 978, 978, 978, 978, 797, 14, 14, 14, 14, 14, 27, 27, 27, 27, 27, 15, 15, 15, 15, 15, 41, 41, 41, 41, 41, 45, 45, 45, 45, 45, 47, 978, 47, 47, 47, 55, 55, 55, 55, 55, 64, 978, 64, 64, 64, 79, 79, 79, 79, 79, 90, 978, 90, 101, 101, 101, 101, 101, 374, 374, 593, 593, 593, 593, 593, 698, 698, 698, 698, 698, 736, 978, 736, 736, 736, 758, 758, 758, 758, 758, 921, 921, 921, 921, 921, 13, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978 } ; static yyconst flex_int16_t yy_chk[3330] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 29, 29, 5, 5, 5, 6, 9, 0, 6, 6, 6, 9, 9, 9, 14, 1, 10, 14, 38, 38, 1, 10, 10, 10, 0, 16, 18, 1, 16, 18, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 19, 23, 20, 19, 23, 20, 16, 20, 20, 21, 31, 82, 21, 21, 21, 21, 2, 82, 31, 22, 16, 2, 22, 16, 16, 16, 24, 25, 2, 24, 25, 2, 2, 3, 310, 21, 3, 3, 3, 23, 23, 22, 30, 30, 30, 39, 39, 39, 40, 974, 40, 47, 24, 25, 47, 37, 3, 26, 3, 3, 26, 43, 43, 973, 30, 3, 3, 39, 44, 44, 44, 3, 4, 310, 972, 4, 4, 4, 90, 26, 971, 26, 37, 26, 48, 37, 26, 48, 49, 50, 44, 49, 50, 51, 93, 4, 51, 4, 4, 52, 53, 970, 52, 53, 4, 4, 54, 93, 90, 54, 4, 17, 17, 17, 196, 17, 55, 55, 57, 57, 55, 969, 57, 48, 58, 58, 53, 64, 58, 66, 64, 17, 66, 51, 58, 52, 17, 59, 59, 17, 196, 59, 17, 57, 54, 57, 57, 60, 60, 61, 61, 60, 65, 61, 255, 65, 62, 62, 57, 968, 62, 63, 63, 91, 67, 63, 70, 67, 441, 70, 60, 68, 255, 65, 68, 68, 68, 68, 69, 966, 441, 69, 69, 69, 69, 964, 61, 62, 67, 71, 70, 65, 71, 91, 376, 72, 63, 68, 72, 73, 92, 139, 73, 67, 69, 74, 75, 76, 74, 75, 76, 77, 445, 78, 77, 71, 78, 72, 80, 80, 80, 81, 81, 81, 84, 95, 307, 84, 95, 76, 92, 376, 96, 97, 92, 96, 97, 139, 98, 307, 80, 98, 73, 81, 74, 510, 445, 99, 75, 78, 99, 77, 100, 100, 101, 101, 100, 114, 101, 95, 114, 103, 103, 145, 95, 103, 145, 104, 104, 99, 96, 104, 959, 97, 115, 105, 105, 115, 98, 105, 106, 106, 510, 955, 106, 109, 109, 107, 107, 109, 253, 107, 100, 102, 102, 108, 108, 102, 145, 108, 115, 104, 110, 110, 111, 111, 110, 102, 111, 102, 109, 106, 105, 102, 107, 112, 112, 113, 113, 112, 253, 113, 108, 116, 117, 109, 116, 117, 107, 102, 951, 118, 119, 102, 118, 119, 120, 138, 111, 120, 113, 110, 947, 121, 116, 116, 121, 116, 122, 112, 123, 122, 124, 123, 126, 124, 943, 126, 938, 138, 116, 137, 116, 118, 931, 141, 117, 138, 141, 153, 153, 119, 165, 153, 142, 165, 123, 142, 120, 143, 121, 166, 143, 144, 166, 124, 144, 141, 122, 125, 175, 137, 125, 175, 137, 137, 142, 126, 146, 146, 153, 143, 146, 147, 147, 930, 125, 147, 144, 925, 148, 148, 165, 125, 148, 149, 149, 150, 150, 149, 924, 150, 125, 125, 166, 146, 147, 125, 125, 148, 151, 151, 154, 154, 151, 910, 154, 155, 155, 156, 156, 155, 149, 156, 909, 147, 157, 157, 158, 158, 157, 892, 158, 167, 150, 891, 167, 151, 152, 152, 154, 889, 152, 159, 159, 160, 160, 159, 309, 160, 169, 155, 152, 169, 152, 161, 161, 158, 152, 161, 156, 164, 868, 152, 164, 157, 162, 162, 163, 163, 162, 309, 163, 168, 152, 167, 168, 170, 152, 168, 170, 160, 164, 164, 171, 169, 159, 171, 172, 867, 866, 172, 161, 162, 865, 173, 174, 163, 173, 174, 164, 176, 178, 170, 176, 178, 177, 179, 180, 177, 179, 180, 181, 182, 172, 181, 182, 173, 183, 194, 195, 183, 198, 199, 171, 198, 199, 176, 177, 184, 184, 184, 174, 189, 189, 189, 178, 179, 180, 374, 181, 200, 182, 201, 200, 194, 201, 840, 195, 194, 195, 837, 836, 202, 198, 183, 202, 509, 199, 203, 203, 223, 374, 203, 223, 201, 204, 204, 205, 205, 204, 835, 205, 206, 206, 207, 207, 206, 509, 207, 509, 200, 208, 208, 226, 816, 208, 226, 206, 209, 209, 223, 202, 209, 224, 210, 210, 224, 814, 210, 203, 204, 205, 211, 211, 813, 207, 211, 212, 212, 213, 213, 212, 812, 213, 214, 214, 790, 208, 214, 215, 215, 216, 216, 215, 572, 216, 218, 218, 224, 789, 218, 209, 210, 211, 308, 213, 217, 217, 219, 219, 217, 212, 219, 220, 220, 221, 222, 220, 221, 222, 215, 214, 225, 572, 788, 225, 227, 216, 228, 227, 229, 228, 560, 229, 308, 218, 787, 217, 308, 219, 220, 222, 230, 231, 233, 230, 231, 233, 225, 232, 232, 234, 232, 235, 234, 560, 235, 236, 221, 237, 236, 227, 237, 238, 228, 239, 238, 240, 239, 784, 240, 233, 241, 241, 241, 247, 247, 247, 254, 234, 257, 231, 230, 257, 258, 747, 238, 258, 232, 240, 259, 260, 236, 259, 260, 302, 302, 302, 235, 237, 261, 239, 280, 261, 254, 280, 257, 744, 254, 262, 262, 263, 263, 262, 743, 263, 259, 264, 264, 281, 434, 264, 281, 258, 265, 265, 265, 266, 266, 265, 260, 266, 280, 261, 738, 262, 267, 267, 372, 735, 267, 281, 263, 268, 268, 269, 269, 268, 434, 269, 434, 264, 283, 270, 270, 283, 266, 270, 271, 271, 372, 571, 271, 272, 272, 273, 273, 272, 372, 273, 274, 274, 282, 700, 274, 282, 267, 275, 275, 268, 571, 275, 698, 269, 571, 271, 272, 270, 276, 276, 277, 277, 276, 696, 277, 278, 278, 282, 273, 278, 279, 279, 284, 695, 279, 284, 274, 285, 279, 287, 285, 286, 287, 692, 286, 288, 288, 290, 288, 289, 290, 277, 289, 291, 276, 292, 291, 691, 292, 293, 278, 687, 293, 640, 285, 279, 286, 294, 639, 295, 294, 284, 295, 290, 637, 636, 285, 287, 289, 296, 297, 635, 296, 297, 288, 293, 298, 299, 634, 298, 299, 292, 303, 303, 303, 295, 304, 304, 304, 294, 291, 305, 305, 305, 297, 296, 306, 306, 306, 312, 313, 315, 312, 313, 315, 299, 314, 314, 314, 316, 633, 314, 316, 317, 317, 338, 632, 317, 338, 298, 318, 318, 339, 638, 318, 339, 312, 631, 319, 319, 315, 316, 319, 313, 628, 626, 317, 320, 320, 320, 338, 573, 320, 323, 323, 319, 638, 323, 324, 324, 340, 570, 324, 340, 318, 322, 322, 322, 325, 325, 322, 339, 325, 326, 326, 327, 327, 326, 348, 327, 322, 348, 322, 323, 328, 328, 322, 569, 328, 329, 329, 330, 330, 329, 568, 330, 326, 331, 331, 324, 340, 331, 322, 332, 332, 567, 322, 332, 342, 327, 328, 342, 333, 333, 346, 331, 333, 346, 330, 334, 334, 335, 335, 334, 566, 335, 336, 336, 565, 329, 336, 332, 337, 337, 342, 341, 337, 343, 341, 344, 343, 333, 344, 332, 335, 345, 350, 564, 345, 350, 336, 359, 359, 359, 334, 337, 341, 354, 562, 561, 354, 346, 341, 344, 347, 347, 347, 343, 558, 347, 351, 345, 511, 351, 341, 349, 349, 349, 508, 352, 349, 350, 352, 353, 355, 507, 353, 355, 351, 357, 356, 506, 357, 356, 375, 354, 360, 360, 360, 362, 362, 362, 505, 352, 364, 364, 364, 353, 366, 366, 366, 368, 368, 368, 353, 357, 378, 375, 504, 378, 355, 375, 379, 503, 502, 379, 353, 356, 373, 384, 373, 373, 384, 498, 373, 373, 380, 380, 380, 373, 373, 380, 373, 501, 379, 382, 382, 382, 373, 500, 382, 499, 378, 383, 383, 383, 385, 385, 383, 498, 385, 386, 386, 498, 497, 386, 387, 387, 496, 384, 387, 388, 388, 446, 443, 388, 389, 389, 391, 391, 389, 442, 391, 392, 392, 403, 382, 392, 403, 387, 393, 393, 407, 440, 393, 407, 385, 439, 438, 389, 394, 394, 437, 436, 394, 395, 395, 386, 410, 395, 392, 410, 388, 390, 390, 408, 435, 390, 408, 391, 396, 396, 399, 399, 396, 403, 399, 390, 393, 390, 394, 395, 407, 390, 397, 397, 398, 398, 397, 433, 398, 390, 400, 400, 398, 399, 400, 401, 401, 390, 408, 401, 432, 390, 402, 402, 429, 404, 402, 396, 404, 405, 377, 406, 405, 397, 406, 409, 371, 420, 409, 400, 420, 370, 401, 411, 411, 411, 415, 415, 411, 415, 412, 412, 412, 419, 404, 412, 419, 424, 405, 358, 424, 406, 402, 414, 414, 414, 421, 420, 414, 421, 311, 409, 416, 416, 416, 301, 300, 416, 418, 418, 418, 422, 256, 418, 422, 415, 423, 424, 425, 423, 252, 425, 426, 419, 427, 426, 251, 427, 430, 430, 430, 250, 421, 422, 414, 428, 428, 428, 444, 447, 428, 448, 447, 249, 448, 452, 427, 483, 452, 418, 483, 425, 423, 444, 246, 426, 245, 449, 449, 449, 244, 444, 449, 451, 451, 451, 453, 453, 451, 243, 453, 452, 454, 454, 447, 197, 454, 475, 455, 455, 475, 448, 455, 456, 456, 456, 457, 457, 456, 454, 457, 459, 459, 458, 458, 459, 453, 458, 193, 460, 460, 475, 192, 460, 451, 461, 461, 191, 190, 461, 462, 462, 462, 455, 188, 462, 463, 463, 187, 186, 463, 459, 457, 185, 458, 460, 464, 464, 461, 140, 464, 465, 465, 466, 466, 465, 136, 466, 473, 467, 467, 473, 135, 467, 468, 468, 469, 469, 468, 134, 469, 470, 470, 471, 463, 470, 471, 472, 472, 472, 133, 474, 472, 464, 474, 132, 476, 465, 467, 476, 477, 468, 131, 477, 130, 469, 129, 473, 478, 478, 482, 478, 471, 482, 470, 479, 479, 479, 128, 127, 479, 476, 481, 481, 481, 484, 474, 481, 484, 485, 486, 487, 485, 486, 487, 477, 94, 490, 489, 488, 490, 489, 488, 491, 89, 88, 491, 478, 492, 492, 492, 87, 86, 492, 494, 494, 494, 512, 482, 494, 512, 487, 485, 481, 488, 85, 513, 486, 489, 513, 83, 484, 79, 490, 495, 495, 495, 514, 514, 514, 46, 491, 514, 515, 515, 515, 516, 516, 515, 36, 516, 574, 513, 555, 574, 494, 555, 512, 517, 517, 35, 34, 517, 518, 518, 518, 521, 521, 518, 516, 521, 540, 522, 522, 540, 555, 522, 523, 523, 523, 524, 524, 523, 33, 524, 517, 520, 520, 520, 525, 525, 520, 521, 525, 526, 526, 526, 32, 28, 526, 540, 520, 13, 520, 12, 529, 529, 520, 522, 529, 530, 530, 531, 531, 530, 11, 531, 8, 524, 542, 532, 532, 542, 520, 532, 535, 535, 520, 529, 535, 525, 528, 528, 528, 537, 7, 528, 537, 531, 533, 533, 534, 534, 533, 530, 534, 528, 0, 528, 534, 536, 536, 528, 0, 536, 542, 535, 0, 536, 0, 532, 0, 538, 538, 538, 0, 533, 538, 528, 539, 539, 539, 528, 537, 539, 541, 543, 544, 541, 543, 544, 545, 0, 0, 545, 546, 546, 546, 547, 0, 546, 547, 539, 548, 549, 0, 548, 549, 551, 552, 541, 551, 552, 543, 550, 550, 550, 0, 553, 550, 539, 553, 554, 590, 590, 554, 544, 590, 0, 548, 556, 556, 556, 559, 559, 559, 0, 547, 604, 545, 549, 604, 0, 551, 563, 563, 563, 581, 581, 552, 0, 581, 553, 575, 575, 575, 607, 0, 575, 607, 554, 576, 576, 576, 590, 604, 576, 578, 578, 578, 0, 0, 578, 579, 579, 579, 0, 0, 579, 580, 580, 580, 581, 0, 580, 582, 582, 582, 583, 583, 582, 0, 583, 584, 584, 0, 607, 584, 585, 585, 585, 588, 588, 585, 605, 588, 0, 605, 578, 589, 589, 583, 0, 589, 591, 591, 0, 0, 591, 584, 580, 587, 587, 587, 588, 0, 587, 592, 592, 593, 593, 592, 602, 593, 0, 602, 587, 605, 587, 589, 595, 595, 587, 0, 595, 596, 596, 603, 0, 596, 603, 591, 597, 597, 606, 592, 597, 606, 587, 598, 598, 602, 587, 598, 599, 599, 0, 598, 599, 600, 600, 601, 601, 600, 0, 601, 608, 608, 608, 597, 595, 608, 0, 603, 609, 609, 609, 0, 599, 609, 606, 611, 611, 611, 612, 601, 611, 612, 613, 613, 613, 614, 0, 613, 614, 600, 615, 615, 615, 0, 0, 615, 617, 617, 617, 619, 620, 617, 619, 620, 612, 618, 618, 618, 622, 0, 618, 622, 621, 621, 621, 0, 611, 621, 623, 623, 623, 0, 0, 614, 624, 624, 624, 0, 619, 0, 620, 627, 627, 627, 629, 629, 629, 617, 641, 0, 0, 641, 622, 642, 642, 642, 0, 0, 642, 644, 644, 644, 645, 645, 644, 0, 645, 646, 646, 646, 649, 649, 646, 0, 649, 0, 650, 650, 651, 651, 650, 0, 651, 652, 652, 652, 0, 641, 652, 645, 653, 653, 654, 654, 653, 667, 654, 0, 667, 0, 644, 648, 648, 648, 650, 0, 648, 655, 655, 649, 0, 655, 684, 657, 657, 684, 648, 657, 648, 651, 653, 654, 648, 656, 656, 658, 658, 656, 0, 658, 659, 659, 0, 667, 659, 660, 660, 660, 648, 0, 660, 0, 648, 0, 655, 0, 661, 661, 656, 658, 661, 684, 662, 663, 657, 662, 663, 659, 664, 665, 0, 664, 665, 656, 666, 671, 0, 666, 671, 668, 668, 668, 0, 661, 668, 670, 670, 670, 0, 0, 670, 672, 672, 672, 701, 0, 672, 701, 662, 680, 723, 0, 680, 723, 664, 665, 663, 724, 0, 666, 724, 674, 674, 674, 0, 671, 674, 675, 675, 675, 701, 0, 675, 676, 676, 676, 670, 0, 676, 678, 678, 678, 0, 0, 678, 679, 679, 679, 723, 680, 679, 681, 681, 681, 0, 0, 681, 724, 683, 683, 683, 0, 674, 683, 685, 685, 685, 688, 688, 688, 693, 693, 693, 694, 694, 694, 697, 697, 697, 0, 678, 702, 702, 702, 703, 703, 702, 0, 703, 704, 704, 705, 705, 704, 0, 705, 706, 706, 706, 683, 0, 706, 709, 709, 709, 710, 710, 709, 0, 710, 703, 711, 711, 712, 712, 711, 0, 712, 0, 713, 713, 705, 748, 713, 0, 748, 704, 708, 708, 708, 714, 714, 708, 0, 714, 720, 715, 715, 720, 0, 715, 0, 708, 772, 708, 713, 772, 711, 708, 716, 716, 716, 722, 0, 716, 722, 712, 714, 718, 718, 718, 0, 748, 718, 708, 715, 719, 719, 708, 772, 719, 721, 721, 721, 725, 0, 721, 725, 720, 726, 0, 0, 726, 727, 727, 727, 0, 722, 727, 729, 729, 729, 0, 0, 729, 719, 725, 752, 752, 718, 768, 752, 721, 768, 726, 0, 726, 730, 730, 730, 0, 0, 730, 732, 732, 732, 0, 0, 732, 733, 733, 733, 775, 0, 733, 775, 734, 734, 734, 768, 729, 734, 737, 737, 737, 739, 739, 739, 741, 741, 741, 745, 745, 745, 749, 749, 749, 753, 753, 749, 773, 753, 0, 773, 732, 751, 751, 751, 0, 0, 751, 754, 754, 754, 758, 758, 754, 0, 758, 0, 751, 0, 751, 755, 755, 755, 751, 0, 755, 776, 760, 760, 776, 753, 760, 761, 761, 762, 762, 761, 773, 762, 751, 785, 785, 785, 751, 757, 757, 757, 763, 763, 757, 0, 763, 0, 764, 764, 774, 776, 764, 774, 757, 0, 757, 765, 765, 0, 757, 765, 760, 766, 766, 767, 767, 766, 0, 767, 762, 764, 769, 769, 769, 0, 757, 769, 763, 0, 757, 0, 771, 771, 771, 774, 765, 771, 777, 793, 793, 777, 805, 793, 766, 805, 767, 778, 778, 778, 807, 791, 778, 807, 791, 771, 780, 780, 780, 0, 0, 780, 781, 781, 781, 797, 797, 781, 805, 797, 783, 783, 783, 771, 777, 783, 791, 0, 791, 0, 793, 794, 794, 794, 798, 798, 794, 0, 798, 799, 799, 0, 797, 799, 800, 800, 0, 780, 800, 801, 801, 0, 0, 801, 802, 802, 803, 803, 802, 798, 803, 783, 792, 792, 804, 804, 792, 806, 804, 808, 806, 0, 808, 0, 798, 0, 792, 809, 792, 0, 809, 0, 792, 831, 810, 802, 831, 810, 0, 801, 792, 808, 803, 811, 0, 0, 811, 809, 792, 0, 804, 0, 792, 796, 796, 796, 817, 832, 796, 817, 832, 806, 815, 815, 815, 0, 809, 831, 796, 810, 796, 818, 818, 0, 796, 818, 819, 819, 811, 0, 819, 820, 820, 821, 821, 820, 860, 821, 862, 860, 796, 862, 817, 0, 796, 822, 822, 823, 823, 822, 0, 823, 824, 824, 828, 0, 824, 828, 818, 825, 825, 833, 834, 825, 833, 834, 822, 0, 826, 826, 826, 830, 820, 826, 830, 823, 821, 862, 827, 827, 827, 841, 824, 827, 841, 822, 0, 823, 829, 829, 829, 830, 830, 829, 0, 825, 842, 842, 828, 0, 842, 833, 834, 838, 838, 838, 0, 845, 845, 856, 830, 845, 856, 844, 844, 0, 841, 844, 846, 846, 847, 847, 846, 0, 847, 848, 848, 848, 863, 0, 848, 863, 842, 843, 843, 920, 0, 843, 920, 844, 849, 849, 849, 845, 0, 849, 0, 843, 0, 843, 0, 847, 856, 843, 843, 850, 850, 850, 0, 0, 850, 852, 852, 852, 920, 861, 852, 863, 861, 843, 853, 853, 853, 843, 0, 853, 855, 855, 855, 0, 0, 855, 857, 857, 857, 0, 0, 857, 859, 859, 859, 861, 0, 859, 864, 864, 864, 869, 0, 864, 869, 0, 852, 870, 870, 871, 871, 870, 0, 871, 0, 859, 872, 872, 873, 873, 872, 855, 873, 874, 874, 875, 875, 874, 0, 875, 876, 876, 876, 859, 882, 876, 0, 882, 0, 872, 0, 869, 878, 878, 878, 0, 0, 878, 870, 879, 879, 879, 0, 0, 879, 881, 881, 881, 0, 883, 881, 875, 883, 874, 882, 884, 884, 884, 0, 0, 884, 885, 885, 885, 0, 0, 885, 886, 886, 886, 883, 0, 886, 878, 888, 888, 888, 0, 0, 888, 890, 890, 890, 896, 896, 0, 881, 896, 883, 893, 893, 893, 0, 0, 893, 894, 894, 894, 897, 897, 894, 0, 897, 898, 898, 899, 0, 898, 899, 900, 900, 900, 0, 0, 900, 888, 895, 895, 918, 918, 895, 942, 918, 896, 942, 0, 897, 917, 917, 898, 895, 917, 895, 906, 906, 906, 895, 0, 897, 902, 902, 902, 0, 0, 902, 899, 903, 903, 903, 918, 0, 903, 895, 905, 905, 905, 895, 917, 905, 907, 907, 907, 902, 911, 911, 911, 942, 0, 911, 913, 913, 913, 950, 0, 913, 950, 914, 914, 914, 0, 902, 914, 921, 921, 921, 0, 919, 919, 0, 0, 919, 922, 922, 922, 905, 926, 926, 926, 927, 927, 926, 950, 927, 928, 928, 929, 937, 928, 929, 937, 913, 916, 916, 916, 919, 0, 916, 932, 932, 932, 935, 935, 932, 0, 935, 0, 916, 946, 916, 0, 946, 0, 916, 929, 927, 0, 934, 934, 934, 937, 928, 934, 0, 936, 936, 0, 935, 936, 916, 0, 940, 940, 916, 0, 940, 941, 941, 944, 944, 941, 0, 944, 945, 945, 946, 0, 945, 948, 948, 949, 949, 948, 954, 949, 0, 954, 0, 934, 940, 936, 952, 952, 953, 953, 952, 0, 953, 956, 956, 0, 949, 956, 0, 0, 944, 0, 941, 957, 957, 0, 0, 957, 0, 948, 0, 958, 958, 958, 0, 949, 958, 954, 960, 960, 0, 0, 960, 961, 961, 961, 0, 952, 961, 963, 963, 963, 965, 965, 963, 0, 965, 967, 967, 960, 0, 967, 0, 957, 975, 975, 975, 976, 976, 976, 0, 0, 963, 0, 0, 0, 0, 0, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 963, 0, 0, 0, 0, 0, 0, 967, 979, 979, 979, 979, 979, 980, 980, 980, 980, 980, 981, 981, 981, 981, 981, 982, 982, 982, 982, 982, 983, 983, 983, 983, 983, 984, 0, 984, 984, 984, 985, 985, 985, 985, 985, 986, 0, 986, 986, 986, 987, 987, 987, 987, 987, 988, 0, 988, 989, 989, 989, 989, 989, 990, 990, 991, 991, 991, 991, 991, 992, 992, 992, 992, 992, 993, 0, 993, 993, 993, 994, 994, 994, 994, 994, 995, 995, 995, 995, 995, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978 } ; 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; #define YY_NO_UNISTD_H 1 //debug static int DC = 0; /* makeedit.l : This file is part of pstoedit Simple parser to parse the intermediate flat PostScript and call the backend output routines. Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ // define YY_NO_UNISTD_H // define YY_NEVER_INTERACTIVE 1 // to avoid usage of isatty #include "cppcomp.h" #include I_iostream #include I_fstream #include I_string_h #include USESTD #include "psfront.h" #include "miscutil.h" static float origx, origy; static char *start_of_text; static char *end_of_text; static float number; #define YY_SKIP_YYWRAP static int yywrap() { return 1;} static int secondlineno = 0; static void checkforlinefeed(const char * currenttext) { while(currenttext && (*currenttext)) { if (*currenttext == '\n') secondlineno++; currenttext++;} } #define YY_USER_ACTION checkforlinefeed(yytext); static void cleanyytext() { // replaces \r or \n from the end with \0 char * beg = yytext; char * cp = &yytext[strlen(yytext)-1]; while (cp != beg && ((*cp == '\n') || (*cp == '\r'))) { *cp = '\0'; cp--; } } static inline int toInt(const float f) { return (f > 0.0f) ? (int)(f+0.5f) : (int)(f-0.5f); } static inline float minf(float f1, float f2) { return (f1 #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 #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 fwrite( yytext, yyleng, 1, yyout ) #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 = '*'; \ int 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 \ 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; 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_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 >= 979 ) 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_current_state != 978 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_find_action: 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 { // not in READPROLOG !! // Work around for Linux libg++ bug number = (float) atof(yytext); // Original // istrstream s(yytext); // s >> number; // cout << "adding number : " << number << " " << yytext << endl; addNumber(number ); } YY_BREAK case 2: YY_RULE_SETUP {} YY_BREAK case 3: YY_RULE_SETUP { BEGIN(READBBOXNUMBERS); } YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP { lineNumber++; const float ury = popUnScaled(); const float urx = popUnScaled(); bboxes_ptr[currentPageNumber].ur = Point(urx,ury); const float lly = popUnScaled(); const float llx = popUnScaled(); bboxes_ptr[currentPageNumber].ll = Point(llx,lly); // cerr << llx << " " << lly << " " << urx << " " << ury << endl; currentPageNumber++; BEGIN(READBBOX); } YY_BREAK case 5: /* rule 5 can match eol */ YY_RULE_SETUP { if (yytext[0] == '\n') lineNumber++; } YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP { if (yytext[0] == '\n') lineNumber++; // cout << " " << yytext << endl; } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP { lineNumber++; const int flattened = toInt(popUnScaled()); const int textastext = toInt(popUnScaled()); if (!driverDesc->backendSupportsText && textastext) { errf << "Warning: this preprocessed input file contains text but the selected backend does NOT support this - Hint: use -dt option for preprocessing" << endl; } if (!driverDesc->backendSupportsCurveto && !flattened) { errf << "Warning: this preprocessed input file possibly contains curves but the selected backend does NOT support this. Curves will be converted to a set of straight lines." << endl; // return(1); } constraintsChecked=true; } YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints backend->showpage(); currentPageNumber++; if (currentPageNumber <= drvbase::totalNumberOfPages()) { if ( splitpages ) { if(outfilename) { const RSString newFileName = getOutputFileNameFromPageNumber(outfilename, backend->globaloptions.pagenumberformat, currentPageNumber); if (newFileName == RSString(outfilename) ) { errf << "Warning: no %d or %PAGENUMBER% found in name of output file and page feed found in input and either the selected format does not support multiple pages or the -split option was specified.\nPlease insert a %PAGENUMBER% or %d in the name of the output file if you want to split pages into different files. And potentially use the -pagenumberformat option" << endl; // we cannot close the output file in this case otherwise // we would overwrite the previous results } else { delete backend; backend = 0; // ofstream * outputFilePtr = (ofstream *) &outFile; // not needed here since done in main program convertBackSlashes(nameOfOutputFile); if (driverDesc->backendFileOpenType != DriverDescription::noopen ){ outputFilePtr->close(); if (driverDesc->backendFileOpenType == DriverDescription::binaryopen ) { // old if (defined(unix) || defined() || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) && !defined(DJGPP) #if defined(PSTOEDIT_UNIXLIKE) // binary is not available on UNIX, only on PC outputFilePtr->open(newFileName.value(),ios::out); #else // use redundant ios::out because of bug in djgpp outputFilePtr->open(newFileName.value(),ios::out | ios::binary); #endif // errf << "opened " << newFileName.value() << " for binary output" << endl; } else { outputFilePtr->open(newFileName.value()); // errf << "opened " << newFileName.value() << " for output" << endl; } if (outFile.fail() ) { errf << "Could not open file " << newFileName.value() << " for output" << endl; return 1; } // fail } // backend opens file by itself backend = driverDesc->CreateBackend(driveroptions,*outputFilePtr,errf,infilename,newFileName.value(),globaloptions); if (!backend->driverOK()) { errf << "Creation of driver for new page failed " << endl; return (1); } backend->currentPageNumber = currentPageNumber - 1; // backend will add one again in open_page } // file name contains %d } else { errf << "Cannot split pages if output is standard output" << endl; return(1); } // outfilename } // splitpages } else { // ignore any showpage for pages greater than totalNumberOfPages if (backend->verbose) errf << "page " << currentPageNumber << " is greater than expected maximum number of pages " << drvbase::totalNumberOfPages() << endl; return 0; // normal return code; } } YY_BREAK case 9: /* rule 9 can match eol */ YY_RULE_SETUP { lineNumber++; if (backend->numberOfElementsInPath() != 0) { errf << "Error, path number " << pathnumber << " was not cleared correctly" << endl; } pathnumber++; BEGIN(READPATH); backend->setIsPolygon(false); backend->setPathNumber(pathnumber); } YY_BREAK case 10: YY_RULE_SETUP { /* old version: /Helvetica findfont 14 scalefont setfont */ /* (Helvetica) cvn findfont [ 3.0 8.31384 -5.19615 4.8 106.699 455.692 ] makefont setfont */ /* new version because sometimes the new name contains a % */ if (!non_standard_font) { // in the case of a non standard font, the setCurrentFontName was // done during handling of nonstandard font start_of_text = strchr (yytext,(int)'(') + 1 ; end_of_text = strrchr (yytext,(int)')') ; if (end_of_text) *end_of_text = (char) 0; backend->setCurrentFontName(start_of_text,0); } non_standard_font = 0; // reset } YY_BREAK case 11: /* rule 11 can match eol */ YY_RULE_SETUP { lineNumber++; //may lead to a lot of messages : if (backend->verbose) errorMessage(yytext); // wogl; } YY_BREAK case 12: /* rule 12 can match eol */ YY_RULE_SETUP { lineNumber++; BEGIN(READPROLOG); } YY_BREAK case 13: /* rule 13 can match eol */ YY_RULE_SETUP { lineNumber++; BEGIN(INITIAL); } YY_BREAK case 14: /* rule 14 can match eol */ YY_RULE_SETUP { lineNumber++; /* fprintf(stderr,"%s\n",yytext); */ start_of_text = yytext+2; end_of_text = strrchr (yytext,(int)' ') ; if (end_of_text) *end_of_text = (char) 0; backend->setCurrentFontFamilyName(start_of_text); } YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP { lineNumber++; /* fprintf(stderr,"%s\n",yytext); */ start_of_text = yytext+2; end_of_text = strrchr (yytext,(int)' ') ; if (end_of_text) *end_of_text = (char) 0; backend->setCurrentFontFullName(start_of_text); } YY_BREAK case 16: /* rule 16 can match eol */ YY_RULE_SETUP { lineNumber++; /* fprintf(stderr,"%s\n",yytext); */ start_of_text = yytext+2; end_of_text = strrchr (yytext,(int)' ') ; if (end_of_text) *end_of_text = (char) 0; backend->setCurrentFontWeight(start_of_text); } YY_BREAK case 17: /* rule 17 can match eol */ YY_RULE_SETUP { lineNumber++; /* % Times-Roman Times-Roman@0 nonstandard font */ /* % Bla Bla nonstandard font */ /* if it is not derived from a standard font */ start_of_text = yytext+2; end_of_text = strchr (start_of_text,(int)' ') ; if (end_of_text) { *end_of_text = (char) 0; char* start_of_secondname = end_of_text + 1; char* end_of_secondname = strchr (start_of_secondname,(int)' ') ; if (end_of_secondname) { *end_of_secondname = (char) 0; non_standard_font = 1; // this avoids a further setting of CurrentFontName if (strcmp(start_of_text,start_of_secondname) == 0 ) { // both names are equal, so it's not a derived font backend->setCurrentFontName(start_of_text,1); } else { // it's a derived font, so use the base name backend->setCurrentFontName(start_of_text,0); } } else { errf << "pstoedit: internal error - font statement did not follow expected syntax" << endl; } } else { errf << "pstoedit: internal error - font statement did not follow expected syntax" << endl; } } YY_BREAK case 18: /* rule 18 can match eol */ YY_RULE_SETUP { lineNumber++; backend->beginClipPath(); } YY_BREAK case 19: /* rule 19 can match eol */ YY_RULE_SETUP { lineNumber++; backend->setCurrentShowType(drvbase::eofill); } YY_BREAK case 20: /* rule 20 can match eol */ YY_RULE_SETUP { lineNumber++; backend->setCurrentShowType(drvbase::fill); } YY_BREAK case 21: /* rule 21 can match eol */ YY_RULE_SETUP { lineNumber++; backend->setCurrentShowType(drvbase::stroke); } YY_BREAK case 22: /* rule 22 can match eol */ YY_RULE_SETUP { lineNumber++; errf << yytext; } YY_BREAK case 23: /* rule 23 can match eol */ YY_RULE_SETUP { lineNumber++; addNumber(0.0f ); // pseudo false } YY_BREAK case 24: /* rule 24 can match eol */ YY_RULE_SETUP { lineNumber++; addNumber(1.0f ); // pseudo true } YY_BREAK case 25: YY_RULE_SETUP { // begin of some Data Comment, just ignore the marker } YY_BREAK case 26: /* rule 26 can match eol */ YY_RULE_SETUP { /* sequence: ../tests/image/colorimage.ps.ps:%colorimage:begin ../tests/image/colorimage.ps.ps:%colorimage:ncomp ../tests/image/colorimage.ps.ps:%colorimage:multi ../tests/image/colorimage.ps.ps:%colorimage:imagematrix ../tests/image/colorimage.ps.ps:%colorimage:normalized image currentmatrix ../tests/image/colorimage.ps.ps:%colorimage:bits ../tests/image/colorimage.ps.ps:%colorimage:height ../tests/image/colorimage.ps.ps:%colorimage:width ../tests/image/colorimage.ps.ps:%colorimage:data ../tests/image/colorimage.ps.ps:%colorimage:end ../tests/image/hw.ps.ps:%image:begin ../tests/image/hw.ps.ps:%image:imagematrix ../tests/image/hw.ps.ps:%image:normalized image currentmatrix ../tests/image/hw.ps.ps:%image:bits ../tests/image/hw.ps.ps:%image:height ../tests/image/hw.ps.ps:%image:width ../tests/image/hw.ps.ps:%image:data ../tests/image/hw.ps.ps:%image:data ../tests/image/hw.ps.ps:%image:end ../tests/image/hwuse.eps.ps:%imagemask:begin ../tests/image/hwuse.eps.ps:%imagemask:imagematrix ../tests/image/hwuse.eps.ps:%imagemask:normalized image currentmatrix ../tests/image/hwuse.eps.ps:%imagemask:polarity ../tests/image/hwuse.eps.ps:%imagemask:height ../tests/image/hwuse.eps.ps:%imagemask:width ../tests/image/hwuse.eps.ps:%imagemask:data ../tests/image/hwuse.eps.ps:%imagemask:data ../tests/image/hwuse.eps.ps:%imagemask:end %begin dealing with image from dict %fileimage:begin % DC 640 0 0 -480 0 480 %fileimage:imagematrix %fileimage:filename but.dump_1.png % DC 640 %fileimage:width % DC 480 %fileimage:height %fileimage:end grestore %} %end dealing with image from dict */ if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.isFileImage = false ; backend->imageInfo.type = colorimage; // ncomp will be written later // bits will be written later backend->imageInfo.polarity = true; BEGIN(READIMAGE); } YY_BREAK case 27: /* rule 27 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.isFileImage = true ; backend->imageInfo.type = normalimage; backend->imageInfo.ncomp = 1; // bits will be written later backend->imageInfo.polarity = true; BEGIN(READIMAGE); } YY_BREAK case 28: /* rule 28 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.isFileImage = false ; backend->imageInfo.type = normalimage; backend->imageInfo.ncomp = 1; // bits will be written later backend->imageInfo.polarity = true; BEGIN(READIMAGE); } YY_BREAK case 29: /* rule 29 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.isFileImage = false ; backend->imageInfo.type = imagemask; backend->imageInfo.ncomp = 1; // polarity will be written later backend->imageInfo.bits = 1; BEGIN(READIMAGE); } YY_BREAK case 30: /* rule 30 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } // replace newline with eos cleanyytext(); // yytext[strlen(yytext)-1] = '\0'; //cout << "filename: {" << yytext << "}" << endl; backend->imageInfo.FileName = yytext+strlen("%fileimage:filename")+1; } YY_BREAK case 31: /* rule 31 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.ncomp = (short) toInt(popUnScaled()); } YY_BREAK case 32: /* rule 32 can match eol */ YY_RULE_SETUP { // only set for imagemask lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.polarity = toInt(popUnScaled()) > 0.5 ; // convert from float to bool } YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } (void)pop(); // not used so far } YY_BREAK case 34: /* rule 34 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } for (unsigned int i = 0; i < 6 ; i++ ) { backend->imageInfo.imageMatrix[5-i] = popUnScaled(); } } YY_BREAK case 35: /* rule 35 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } for (unsigned int i = 0; i < 6 ; i++ ) { backend->imageInfo.normalizedImageCurrentMatrix[5-i] = popUnScaled(); } } YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP { // only set for normalimage and colorimage lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.bits = (short) toInt(popUnScaled()); } YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.height = toInt(popUnScaled()); } YY_BREAK case 38: /* rule 38 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->imageInfo.width = toInt(popUnScaled()); } YY_BREAK case 39: YY_RULE_SETUP { CHECKconstraints if (debuglexer) { cerr << "handling " << yytext ; pstack(); } //cerr << "handling DC " << DC++ << endl; //cerr << "handling " << yytext ; //cerr << "strlen " << strlen(yytext) << endl ; unsigned int size = backend->imageInfo.height * ((backend->imageInfo.ncomp * backend->imageInfo.width * backend->imageInfo.bits + 7 ) / 8); if (backend->imageInfo.data == 0) { // cerr << " allocating " << size << " for image data " << endl; backend->imageInfo.data = new unsigned char[size]; if (backend->imageInfo.data==0) { cerr << "out of memory for image data" << endl; return(1); } backend->imageInfo.nextfreedataitem = 0; // init // for (unsigned int i = 0 ; i < size; i++) { // backend->imageInfo.data[i] = 0; // } } cleanyytext(); const char * cp = yytext; // search for ' ' while (cp && (*cp != ' ')) cp++; // now cp points to blank cp++; //cerr << "effective length " << strlen(cp) << endl; do { const char chigh = *cp; const unsigned int high = hextoint(*cp); // cout << "scanned1 " << (int) *cp << endl; cp++; if (*cp == '\0') { cerr << "data format error (not a hex number) in line " << lineNumber << " " << secondlineno << endl; return(1); } const char clow = *cp; const unsigned int low = hextoint(*cp); // cout << "scanned2 " << (int) *cp << endl; cp++; if ( backend->imageInfo.nextfreedataitem < size ) { backend->imageInfo.data[backend->imageInfo.nextfreedataitem] = (unsigned char) (high * 16 + low); // cerr << backend->imageInfo.nextfreedataitem << ":" << chigh<< clow << endl; backend->imageInfo.nextfreedataitem++; } else { cerr << "too many data in line " << lineNumber << " size is " << size << " : ignoring " << (cp-2) << "|" << chigh << clow << endl; break; } } while (cp && (*cp != '\0')); } YY_BREAK case 40: /* rule 40 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) { cerr << "handling " << yytext ; pstack(); } backend->dumpImage(); BEGIN(INITIAL); } YY_BREAK case 41: /* rule 41 can match eol */ YY_RULE_SETUP { lineNumber++; if (debuglexer) cerr << "comment ignored " << yytext; } YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP { lineNumber++; // setCurrentFontSize(number ); float matrix[6]; matrix[5] = pop(); matrix[4] = pop(); matrix[3] = pop(); // sy * cos(phi) matrix[2] = pop(); // sy * -sin(phi) matrix[1] = pop(); // sx * sin(phi) matrix[0] = pop(); // sx * cos(phi) backend->setCurrentFontMatrix(matrix); const float fsizex = (float) pythagoras(matrix[0] , matrix[1]); const float fsizey = (float) pythagoras(matrix[2] , matrix[3]); const float todegrees = 180.0f / 3.14159265358979323846f ; float phix = (matrix[0] != 0.0f) ? (todegrees * (float) atan(matrix[1] / matrix[0]) ) : (matrix[1] > 0 ? 90.0f : -90.0f ); // float phiy = todegrees * atan(-1.0 * matrix[2] / matrix[3]); if (matrix[0] < 0.0f ) phix = 180 + phix; // if cos (phi) < 0 than add 180 // if (matrix[3] < 0.0f ) phiy = 180 + phiy; if (phix < 0.0f ) phix = 360 + phix; // if (phiy < 0.0f ) phiy = 360 + phiy; // for (int i = 0; i < 6; i++ ) cout << "matrix [" << i << "] " << matrix[i] << " "; // cout << fsizex << " " << fsizey << " " << endl; // cout << phix << " " << phiy << " " << endl; backend->setCurrentFontSize((fsizex + fsizey)/2.0f); backend->setCurrentFontAngle(phix); } YY_BREAK case 43: /* rule 43 can match eol */ YY_RULE_SETUP { //obsolete lineNumber++; // setCurrentFontSize(number ); backend->setCurrentFontSize(pop()); // pop(); } YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP { lineNumber++; start_of_text = strchr (yytext,(int)'(') + 1 ; end_of_text = strrchr (yytext,(int)')') ; if (end_of_text) *end_of_text = (char) 0; backend->setColorName(start_of_text); } YY_BREAK case 45: /* rule 45 can match eol */ YY_RULE_SETUP { lineNumber++; const float B = popUnScaled(); const float G = popUnScaled(); const float R = popUnScaled(); /* printf("%s %f %f %f\n","setting RGB to ",R,G,B); */ backend->setRGB(R,G,B); } YY_BREAK case 46: /* rule 46 can match eol */ YY_RULE_SETUP { lineNumber++; const float K = popUnScaled(); const float Y = popUnScaled(); const float M = popUnScaled(); const float C = popUnScaled(); const unsigned int colormodel = 3; // http://www.efg2.com/Lab/Library/Color/AndComputers.htm switch (colormodel) { case 1: { const float R = 1.0f - minf(1.0f,C+K); // according to PLRM page 307 const float G = 1.0f - minf(1.0f,M+K); const float B = 1.0f - minf(1.0f,Y+K); // printf("%s %f %f %f\n","setting RGB to ",R,G,B); backend->setRGB(R,G,B); } break; case 2: { /* alternative formula http://research.microsoft.com/~hollasch/cgindex/color/cmyk.html http://www.ghostscript.com/pipermail/gs-cvs/2002-November/002588.html http://www.paris-pc-gis.com/MI_Enviro/Colors/color_models.htm R = (1.0 - C) * (1.0 - K), etc. */ const float R = (1.0f - C)*(1.0f - K); const float G = (1.0f - M)*(1.0f - K); const float B = (1.0f - Y)*(1.0f - K); // printf("%s %f %f %f\n","setting RGB to ",R,G,B); backend->setRGB(R,G,B); } break; case 3: { /* http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html RGB -> CMYK | CMYK -> RGB Black=minimum(1-Red,1-Green,1-Blue) | Red=1-minimum(1,Cyan*(1-Black)+Black) Cyan=(1-Red-Black)/(1-Black) | Green=1-minimum(1,Magenta*(1-Black)+Black) Magenta=(1-Green-Black)/(1-Black) | Blue=1-minimum(1,Yellow*(1-Black)+Black) Yellow=(1-Blue-Black)/(1-Black) | */ const float R = 1.0f - minf(1.0f,C*(1-K)+K); const float G = 1.0f - minf(1.0f,M*(1-K)+K); const float B = 1.0f - minf(1.0f,Y*(1-K)+K); // printf("%s %f %f %f\n","setting RGB to ",R,G,B); backend->setRGB(R,G,B); } break; default: break; } } YY_BREAK case 47: /* rule 47 can match eol */ YY_RULE_SETUP { lineNumber++; cleanyytext(); yytext[strlen(yytext) - 8] = '\0'; // strip of trailing setdash backend->setDash(yytext+1); // don't copy leading space } YY_BREAK case 48: /* rule 48 can match eol */ YY_RULE_SETUP { lineNumber++; backend->setCurrentMiterLimit(number); (void) pop(); } YY_BREAK case 49: /* rule 49 can match eol */ YY_RULE_SETUP { lineNumber++; backend->setCurrentLineJoin((int) (number +0.5)); (void) pop(); } YY_BREAK case 50: /* rule 50 can match eol */ YY_RULE_SETUP { lineNumber++; backend->setCurrentLineCap((int) (number +0.5)); (void) pop(); } YY_BREAK case 51: /* rule 51 can match eol */ YY_RULE_SETUP { lineNumber++; float width = pop(); if (width < (float) backend->globaloptions.minlinewidth) { width = (float) backend->globaloptions.minlinewidth; } backend->setCurrentLineWidth(width); // setCurrentLineWidth(number ); // pop(); } YY_BREAK case 52: /* rule 52 can match eol */ YY_RULE_SETUP { lineNumber++; float height = pop(); if (height < 1.0 ) { height = 792 * backend->getScale() ; } backend->setCurrentDeviceHeight(height); float width = pop(); if (width < 1.0 ) { width = 612 * backend->getScale() ; } backend->setCurrentDeviceWidth(width); if (backend->verbose) errf << "handling setPageSize (w,h)(" << width << "," << height << ")"<< endl; } YY_BREAK case 53: /* rule 53 can match eol */ YY_RULE_SETUP { lineNumber++; const bool mappedtoisolatin1 = pop() > 0.5; // float to bool const float y_end = pop(); const float x_end = pop(); const float ay = pop(); const float ax = pop(); const int Char = (int) (popUnScaled() +0.5); const float cy = pop(); const float cx = pop(); backend->setMappedtoisolatin1(mappedtoisolatin1); backend->setCurrentWidthParams(ax,ay,Char,cx,cy,x_end,y_end); } YY_BREAK case 54: /* rule 54 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints start_of_text = strchr (yytext,(int)'(') + 1 ; end_of_text = strrchr (yytext,(int)')') ; if (end_of_text) *end_of_text = (char) 0; const float y = pop(); /* just the last moveto (0 0 in case of makefont) */ const float x = pop(); /* just the last moveto (0 0 in case of makefont) */ /* backend->dumpText(start_of_text,x,y); */ backend->pushHEXText(start_of_text,x + backend->getCurrentFontMatrix()[4],y + backend->getCurrentFontMatrix()[5]); } YY_BREAK case 55: /* rule 55 can match eol */ YY_RULE_SETUP { lineNumber++; // (68656c6c6f20776f726c64) [ /h /e /l /l /o /space /w /o /r /l /d ] awidthshowhexwithglyphs CHECKconstraints start_of_text = strchr (yytext,(int)'(') + 1 ; end_of_text = strrchr (yytext,(int)')') ; char * start_of_glyphs = strchr(yytext,(int)'[') + 2; char * end_of_glyphs = strrchr(yytext,(int)']'); if (end_of_glyphs) *(end_of_glyphs-1) = (char) 0; if (end_of_text) *end_of_text = (char) 0; //cout << "text :" << start_of_text << " glyphs : " << start_of_glyphs << endl; const float y = pop(); /* just the last moveto (0 0 in case of makefont) */ const float x = pop(); /* just the last moveto (0 0 in case of makefont) */ /* backend->dumpText(start_of_text,x,y); */ backend->pushHEXText(start_of_text,x + backend->getCurrentFontMatrix()[4],y + backend->getCurrentFontMatrix()[5], start_of_glyphs); } YY_BREAK case 56: /* rule 56 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints start_of_text = strchr (yytext,(int)'(') + 1 ; end_of_text = strrchr (yytext,(int)')') ; if (end_of_text) *end_of_text = (char) 0; const float y = pop(); /* just the last moveto (0 0 in case of makefont) */ const float x = pop(); /* just the last moveto (0 0 in case of makefont) */ /* backend->dumpText(start_of_text,x,y); */ backend->pushText(strlen(start_of_text),start_of_text,x + backend->getCurrentFontMatrix()[4],y + backend->getCurrentFontMatrix()[5]); /* old - zeropatch backend->pushText(start_of_text,x + backend->getCurrentFontMatrix()[4],y + backend->getCurrentFontMatrix()[5]); */ } YY_BREAK case 57: /* rule 57 can match eol */ YY_RULE_SETUP { // obsolete lineNumber++; backend->setCurrentFontAngle(number); (void) pop(); } YY_BREAK case 58: /* rule 58 can match eol */ YY_RULE_SETUP { //obsolete lineNumber++; /* Because this is in the preamble, only pop this has put something on the stack. */ if (nextFreeNumber >= 2) { (void)pop(); (void)pop(); } } YY_BREAK case 59: /* rule 59 can match eol */ YY_RULE_SETUP { //obsolete lineNumber++; /* Because this is in the preamble, only pop this has put something on the stack. */ if (nextFreeNumber >= 2) { (void)pop(); (void)pop(); } } YY_BREAK case 60: /* rule 60 can match eol */ YY_RULE_SETUP { if (yytext[0] == '\n') lineNumber++; /* cout << "ignored '" << yytext << "'"; */ /* ignore any other stuff */ } YY_BREAK case 61: /* rule 61 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints // save coordinates for possible closepath origy = pop(); origx = pop(); if (backend->numberOfElementsInPath() > 1) { // this is an intermediate moveto // if backend supports subpaths add it // else dump last path and start a new one if (backend->globaloptions.simulateSubPaths || backend->Pdriverdesc->backendSupportsSubPathes) { // Point p(origx,origy); backend->addtopath(new Moveto(origx,origy)); } else { // dumppath backend->dumpPath(); // start new path // Point p(origx,origy); backend->setIsPolygon(false); backend->addtopath(new Moveto(origx,origy)); } } else { // it is a starting moveto // Point p(origx,origy); backend->addtopath(new Moveto(origx,origy)); } currentpoint = Point(origx,origy); } YY_BREAK case 62: /* rule 62 can match eol */ YY_RULE_SETUP { lineNumber++; float y = pop(); float x = pop(); // Point p(x,y); backend->addtopath(new Lineto(x,y)); currentpoint = Point(x,y); Point op(origx,origy); backend->setIsPolygon(currentpoint == op); // dynamically track potential polygons } YY_BREAK case 63: /* rule 63 can match eol */ YY_RULE_SETUP { lineNumber++; Point p[3]; for (unsigned int i = 3; i > 0; i--) { // !!! i = 2 to i>= 0 does not work for unsigned float y = pop(); float x = pop(); p[i-1] = Point(x,y); } if (backend->Pdriverdesc->backendSupportsCurveto) { backend->addtopath(new Curveto(p)); // pass p as array } else { const unsigned int sections = 10; const Point & cp1 = p[0]; const Point & cp2 = p[1]; const Point & ep = p[2]; for (unsigned int s = 0; s <= sections; s++) { const float t = 1.0f * s / sections; const Point pt = PointOnBezier(t, currentpoint, cp1, cp2, ep); backend->addtopath(new Lineto(pt.x_,pt.y_)); } // errf << "illegal input received. curveto not expected by this backend\n"; // return(1); } currentpoint = Point(p[2].x_,p[2].y_); Point op(origx,origy); backend->setIsPolygon(currentpoint == op); // dynamically track potential polygons } YY_BREAK case 64: /* rule 64 can match eol */ YY_RULE_SETUP { lineNumber++; Point startPoint(origx,origy); const basedrawingelement & lastelem = backend->pathElement(backend->numberOfElementsInPath() -1 ); // check for last == first. Then no additional // lineto is needed. and isPolygon can be set to true if ( (lastelem.getType() == lineto) && (lastelem.getPoint(0) == startPoint) ) { // remove last lineto - // a closepath is sometimes nicer than a lineto (see closevsline.ps) if (backend->verbose) errf << "removing obsolete lineto " << endl; backend->removeFromElementFromPath(); // no need to close the path, it's already closed } /* else */ { if (backend->globaloptions.simulateSubPaths || backend->Pdriverdesc->backendSupportsSubPathes) { backend->addtopath(new Closepath()); } else { backend->addtopath(new Lineto(origx,origy)); // pass p as array } } backend->setIsPolygon(true); /* show is done by next stroke, fill or moveto */ currentpoint = startPoint; } YY_BREAK case 65: /* rule 65 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints BEGIN(INITIAL); backend->dumpPath(); }; YY_BREAK case 66: /* rule 66 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints BEGIN(INITIAL); backend->dumpPath(); }; YY_BREAK case 67: /* rule 67 can match eol */ YY_RULE_SETUP { lineNumber++; CHECKconstraints BEGIN(INITIAL); backend->dumpPath(); }; YY_BREAK case 68: /* rule 68 can match eol */ YY_RULE_SETUP { lineNumber++; backend->Save(); }; YY_BREAK case 69: /* rule 69 can match eol */ YY_RULE_SETUP { lineNumber++; backend->Save(); }; YY_BREAK case 70: /* rule 70 can match eol */ YY_RULE_SETUP { lineNumber++; backend->Restore(); }; YY_BREAK case 71: /* rule 71 can match eol */ YY_RULE_SETUP { lineNumber++; backend->Restore(); }; YY_BREAK case 72: /* rule 72 can match eol */ YY_RULE_SETUP { lineNumber++; backend->endClipPath(drvbase::clip); BEGIN(INITIAL); }; YY_BREAK case 73: /* rule 73 can match eol */ YY_RULE_SETUP { lineNumber++; backend->endClipPath(drvbase::eoclip); BEGIN(INITIAL); }; YY_BREAK case 74: /* rule 74 can match eol */ YY_RULE_SETUP { if (yytext[0] == '\n') lineNumber++; } YY_BREAK case 75: YY_RULE_SETUP ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(READPATH): case YY_STATE_EOF(READIMAGE): case YY_STATE_EOF(READPROLOG): case YY_STATE_EOF(READBBOXNUMBERS): case YY_STATE_EOF(READBBOX): 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_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); 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); 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 >= 979 ) 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 >= 979 ) 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 == 978); return yy_is_jam ? 0 : yy_current_state; } #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); 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 ); } /* 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 = 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" void PSFrontEnd::yylexcleanup() { // if (yy_state_buf) yy_flex_free(yy_state_buf); #if 1 FILE * yyinsave = yyin; // because yy_init_globals (called by destroy) resets it to 0 yylex_destroy(); yyin = yyinsave; // need to retain this because fclose is called outside (could/should be changed in future) #else yy_delete_buffer(yy_current_buffer ); // reset the global initialized statics to their initial value // so the lexer can be called again. yy_c_buf_p = (char *) 0; yy_init = 1; /* whether we need to initialize */ yy_start = 0; /* start state number */ #endif } unsigned int PSFrontEnd::readBBoxes(BBox * bboxes) { bblexmode = true; currentPageNumber = 0; nextFreeNumber=0; lineNumber = 1; secondlineno = 1; bboxes_ptr = bboxes; yy_init = 1; FILE * yyinsave = yyin; // because yy_init_globals resets it to 0 yy_init_globals(); yyin = yyinsave; BEGIN(READBBOX); (void) yylex(); yylexcleanup(); return currentPageNumber; } void PSFrontEnd::run(bool mergelines) { bblexmode = false; currentPageNumber = 1; nextFreeNumber=0; yy_init = 1; lineNumber = 1; secondlineno = 1; FILE * yyinsave = yyin; // because yy_init_globals resets it to 0 yy_init_globals(); yyin= yyinsave; BEGIN(INITIAL); backend->startup(mergelines); if (!yylex()) { // yylex returns 0 on normal EOF // 1 in case of errors backend->finalize(); } delete backend; backend = 0; } void PSFrontEnd::addNumber(float a_number) { // printf("Adding %f\n",number); if (nextFreeNumber < maxPoints) { // cout << "adding number : " << a_number << endl; numbers[nextFreeNumber++] = a_number; // nextFreeNumber always points to the next free number } else { errf << "Too many numbers on stack. Please increase maxPoints in drvbase.h \n"; exit(1); } } PSFrontEnd::PSFrontEnd(ostream& outfile_p, ostream & errstream, PsToEditOptions & globaloptions_p, const char * infilename_p, const char * outfilename_p, const DriverDescription * driverDesc_p, const char * driveroptions_p, const bool splitpages_p, drvbase * backend_p) : outFile(outfile_p), errf(errstream), infilename(infilename_p), outfilename(outfilename_p), globaloptions(globaloptions_p), driverDesc(driverDesc_p), driveroptions(driveroptions_p), splitpages(splitpages_p), backend(backend_p), currentPageNumber(1), lineNumber(1), numbers((float*) 0), nextFreeNumber(0), pathnumber(0), non_standard_font(false), constraintsChecked(false), bblexmode(false), bboxes_ptr(0) { numbers = new float[maxPoints]; // The number stack if ((numbers == 0)){ errf << "new failed in PSFrontEnd::PSFrontEnd " << endl; exit(1); } } PSFrontEnd::~PSFrontEnd() { #ifdef __INSURE__ errf << "Deleting PSFrontEnd object and thus the numbers as well" << endl; #endif delete [] numbers; numbers = 0; yylexcleanup(); infilename=0; outfilename=0; driverDesc=0; driveroptions=0; backend=0; bboxes_ptr=0; } float PSFrontEnd::pop() { if (nextFreeNumber > 0) { nextFreeNumber--; return numbers[nextFreeNumber] * backend->getScale(); // the value we just pushed } else { errf << "Fatal error in PSFrontEnd::pop : nextFreeNumber would get < 0" << endl; assert(false); //exit(1); } return 0.0f; // never reached, just to make compiler quiet } float PSFrontEnd::popUnScaled() { if (nextFreeNumber > 0) { nextFreeNumber--; return numbers[nextFreeNumber]; // the value we just pushed } else { errf << "Fatal error in PSFrontEnd::popUnScaled : nextFreeNumber would get < 0" << endl; assert(false); //exit(1); } return 0.0f; // never reached, just to make compiler quiet } void PSFrontEnd::pstack() const { for (unsigned int i = 0 ; i < nextFreeNumber ; i++ ) { cerr << "[" << i << "] " << numbers[i] << " " << numbers[i]* backend->getScale() << endl; } } pstoedit-3.62/src/Makefile.am0000744000175500010010000001070512117152272013041 00000000000000EXTRA_DIST=pstoedit.ph makefile.txt if HAVE_PLUGINSRC # LIBPLUGINS_ENTRY=libp2edrvplugins.la endif if HAVE_LIBPLOTTER LIBPLOTTER_ENTRY=libp2edrvlplot.la endif if HAVE_LIBMING LIBMING_ENTRY=libp2edrvswf.la endif if HAVE_LIBZIP LIBPPTX_ENTRY=libp2edrvpptx.la endif if HAVE_LIBMAGICK LIBMAGICK_ENTRY=libp2edrvmagick++.la endif if HAVE_LIBEMF LIBEMF_ENTRY=libp2edrvwmf.la endif AM_CPPFLAGS= \ ${LIBPLOTTER_CFLAGS} \ ${LIBMING_CFLAGS} \ ${MKSTEMP_CFLAGS} \ ${LIBMAGICK_CFLAGS} \ ${LIBEMF_CFLAGS} \ ${LIBPNG_CFLAGS} \ -DDEFAULTGS=$(GS) \ -DPSTOEDITDATADIR="\"$(pkgdatadir)\"" \ -DPSTOEDITLIBDIR="\"$(pkglibdir)\"" \ ${SPECIAL_CXXFLAGS} lib_LTLIBRARIES=libpstoedit.la bin_PROGRAMS=pstoedit pkglib_LTLIBRARIES=libp2edrvstd.la \ ${LIBPLUGINS_ENTRY} \ ${LIBPLOTTER_ENTRY} \ ${LIBMING_ENTRY} \ ${LIBPPTX_ENTRY} \ ${LIBMAGICK_ENTRY} \ ${LIBEMF_ENTRY} OLD_pkglibdir = $(libdir)/$(PACKAGE)$(PACKAGE_VERSION) pkglibdir = $(libdir)/$(PACKAGE) sample_drivers_src=drvsampl.cpp drvsampl.h specific_drivers_src= \ drvgnplt.cpp drvgnplt.h \ drvtgif.cpp drvtgif.h \ drvfig.cpp drvfig.h \ drvidraw.cpp drvidraw.h libp2edrvstd_la_SOURCES= \ initlibrary.cpp \ drvgcode.cpp drvgcode.h \ drvcairo.cpp drvcairo.h \ drvlwo.cpp drvlwo.h \ drvrib.cpp drvrib.h \ drvrpl.cpp drvrpl.h \ drvdxf.cpp drvdxf.h \ dxfacad.h dxficad.h \ drvjava.cpp drvjava.h \ drvjava2.cpp drvjava2.h \ drvpdf.cpp drvpdf.h \ drvkillu.cpp drvkillu.h \ drvtext.cpp drvtext.h \ drvsk.cpp drvsk.h \ drvmpost.cpp drvmpost.h \ drvasy.cpp drvasy.h \ drvmma.cpp drvmma.h \ drvlatex2e.cpp drvlatex2e.h \ drvnoi.cpp drvnoi.h \ drvpic.cpp drvpic.h \ drvhpgl.cpp drvhpgl.h \ drvpcb1.cpp drvpcb1.h \ drvpcb2.cpp drvpcb2.h \ drvpcbfill.cpp drvpcbfill.h \ drvgschem.cpp drvgschem.h \ drvcfdg.cpp drvcfdg.h \ drvtk.cpp drvtk.h \ drvvtk.cpp drvvtk.h \ drvsvm.cpp drvsvm.h svm_actions.h \ $(specific_drivers_src) \ $(sample_drivers_src) libp2edrvstd_la_LIBADD=libpstoedit.la libp2edrvstd_la_LDFLAGS=-no-undefined -module #libp2edrvplugins_la_SOURCES=drvmif.cpp drvcgm.cpp drvrtf.cpp drvwwmf.cpp #libp2edrvplugins_la_LIBADD= #libp2edrvplugins_la_LDFLAGS= #libp2edrvplugins_la_CFLAGS=-I../Check/ -I../othersrc/cdlib libp2edrvlplot_la_SOURCES=drvlplot.cpp drvlplot.h initlibrary.cpp libp2edrvlplot_la_LIBADD=$(LIBPLOTTER_LDFLAGS) libpstoedit.la libp2edrvlplot_la_LDFLAGS=-no-undefined -module libp2edrvpptx_la_SOURCES=drvpptx.cpp drvpptx.h initlibrary.cpp libp2edrvpptx_la_LIBADD=$(LIBPPTX_LDFLAGS) libpstoedit.la libp2edrvpptx_la_LDFLAGS=-no-undefined -module libp2edrvswf_la_SOURCES=drvswf.cpp drvswf.h initlibrary.cpp libp2edrvswf_la_LIBADD=$(LIBMING_LDFLAGS) libpstoedit.la libp2edrvswf_la_LDFLAGS=-no-undefined -module # note the __ stand for ++ - automake treats all no alphanums chars as _ libp2edrvmagick___la_SOURCES=drvmagick++.cpp drvmagick++.h initlibrary.cpp libp2edrvmagick___la_LIBADD=${LIBMAGICK_LDFLAGS} libpstoedit.la libp2edrvmagick___la_LDFLAGS=-no-undefined -module # moved to configure.ac because needed only for g++ libp2edrvmagick___la_CPPFLAGS=$(LIBMAGICK_CFLAGS) $(AM_CPPFLAGS) -Wno-long-long if USE_EMFBYSOURCE libp2edrvwmf_la_SOURCES=emflib.cpp drvwmf.cpp drvwmf.h initlibrary.cpp libp2edrvwmf_la_LIBADD=libpstoedit.la libp2edrvwmf_la_LDFLAGS=-no-undefined -module else libp2edrvwmf_la_SOURCES=drvwmf.cpp drvwmf.h initlibrary.cpp libp2edrvwmf_la_LIBADD=$(LIBEMF_LDFLAGS) libpstoedit.la libp2edrvwmf_la_LDFLAGS=-no-undefined -module endif libpstoedit_la_SOURCES = \ dynload.cpp dynload.h \ callgs.cpp \ lexyy.cpp \ miscutil.cpp \ cbstream.cpp cbstream.h \ psimage.cpp \ drvbase.cpp \ base64writer.cpp \ poptions.cpp \ subpath.cpp subpath.h \ pstoedit.cpp \ psfront.h \ genericints.h \ version.h libpstoedit_la_LIBADD = ${CXX_STD_LIB} ${CXX_RUNTIME_LIB} -ldl -lm libpstoedit_la_LDFLAGS = -no-undefined pstoedit_SOURCES = cmdmain.cpp pstoedit_LDADD = libpstoedit.la ${LIBLD_LDFLAGS} pstoedit_LDFLAGS = -no-undefined pkginclude_HEADERS = \ pstoedit.h \ pstoedll.h \ pstoeditoutputlib.h \ pstoeditoptions.h \ cppcomp.h \ drvbase.h \ drvfuncs.h \ miscutil.h \ genericints.h \ base64writer.h \ poptions.h \ papersizes.h \ ordlist.h \ psimage.h pstoedit-3.62/src/Makefile.in0000644000175500010010000010357212137264204013057 00000000000000# Makefile.in generated by automake 1.10.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = pstoedit$(EXEEXT) subdir = src DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/pstoedit_config.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = pstoedit_config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" \ "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgincludedir)" libLTLIBRARIES_INSTALL = $(INSTALL) pkglibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) $(pkglib_LTLIBRARIES) am__DEPENDENCIES_1 = libp2edrvlplot_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libpstoedit.la am_libp2edrvlplot_la_OBJECTS = drvlplot.lo initlibrary.lo libp2edrvlplot_la_OBJECTS = $(am_libp2edrvlplot_la_OBJECTS) libp2edrvlplot_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libp2edrvlplot_la_LDFLAGS) $(LDFLAGS) -o $@ @HAVE_LIBPLOTTER_TRUE@am_libp2edrvlplot_la_rpath = -rpath $(pkglibdir) libp2edrvmagick___la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libpstoedit.la am_libp2edrvmagick___la_OBJECTS = drvmagick++.lo initlibrary.lo libp2edrvmagick___la_OBJECTS = $(am_libp2edrvmagick___la_OBJECTS) libp2edrvmagick___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libp2edrvmagick___la_LDFLAGS) $(LDFLAGS) -o $@ @HAVE_LIBMAGICK_TRUE@am_libp2edrvmagick___la_rpath = -rpath \ @HAVE_LIBMAGICK_TRUE@ $(pkglibdir) libp2edrvpptx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libpstoedit.la am_libp2edrvpptx_la_OBJECTS = drvpptx.lo initlibrary.lo libp2edrvpptx_la_OBJECTS = $(am_libp2edrvpptx_la_OBJECTS) libp2edrvpptx_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libp2edrvpptx_la_LDFLAGS) $(LDFLAGS) -o $@ @HAVE_LIBZIP_TRUE@am_libp2edrvpptx_la_rpath = -rpath $(pkglibdir) libp2edrvstd_la_DEPENDENCIES = libpstoedit.la am__objects_1 = drvgnplt.lo drvtgif.lo drvfig.lo drvidraw.lo am__objects_2 = drvsampl.lo am_libp2edrvstd_la_OBJECTS = initlibrary.lo drvgcode.lo drvcairo.lo \ drvlwo.lo drvrib.lo drvrpl.lo drvdxf.lo drvjava.lo drvjava2.lo \ drvpdf.lo drvkillu.lo drvtext.lo drvsk.lo drvmpost.lo \ drvasy.lo drvmma.lo drvlatex2e.lo drvnoi.lo drvpic.lo \ drvhpgl.lo drvpcb1.lo drvpcb2.lo drvpcbfill.lo drvgschem.lo \ drvcfdg.lo drvtk.lo drvvtk.lo drvsvm.lo $(am__objects_1) \ $(am__objects_2) libp2edrvstd_la_OBJECTS = $(am_libp2edrvstd_la_OBJECTS) libp2edrvstd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libp2edrvstd_la_LDFLAGS) $(LDFLAGS) -o $@ libp2edrvswf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libpstoedit.la am_libp2edrvswf_la_OBJECTS = drvswf.lo initlibrary.lo libp2edrvswf_la_OBJECTS = $(am_libp2edrvswf_la_OBJECTS) libp2edrvswf_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libp2edrvswf_la_LDFLAGS) $(LDFLAGS) -o $@ @HAVE_LIBMING_TRUE@am_libp2edrvswf_la_rpath = -rpath $(pkglibdir) @USE_EMFBYSOURCE_FALSE@libp2edrvwmf_la_DEPENDENCIES = \ @USE_EMFBYSOURCE_FALSE@ $(am__DEPENDENCIES_1) libpstoedit.la @USE_EMFBYSOURCE_TRUE@libp2edrvwmf_la_DEPENDENCIES = libpstoedit.la am__libp2edrvwmf_la_SOURCES_DIST = drvwmf.cpp drvwmf.h initlibrary.cpp \ emflib.cpp @USE_EMFBYSOURCE_FALSE@am_libp2edrvwmf_la_OBJECTS = drvwmf.lo \ @USE_EMFBYSOURCE_FALSE@ initlibrary.lo @USE_EMFBYSOURCE_TRUE@am_libp2edrvwmf_la_OBJECTS = emflib.lo drvwmf.lo \ @USE_EMFBYSOURCE_TRUE@ initlibrary.lo libp2edrvwmf_la_OBJECTS = $(am_libp2edrvwmf_la_OBJECTS) libp2edrvwmf_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libp2edrvwmf_la_LDFLAGS) $(LDFLAGS) -o $@ @HAVE_LIBEMF_TRUE@am_libp2edrvwmf_la_rpath = -rpath $(pkglibdir) libpstoedit_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_libpstoedit_la_OBJECTS = dynload.lo callgs.lo lexyy.lo miscutil.lo \ cbstream.lo psimage.lo drvbase.lo base64writer.lo poptions.lo \ subpath.lo pstoedit.lo libpstoedit_la_OBJECTS = $(am_libpstoedit_la_OBJECTS) libpstoedit_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libpstoedit_la_LDFLAGS) $(LDFLAGS) -o $@ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_pstoedit_OBJECTS = cmdmain.$(OBJEXT) pstoedit_OBJECTS = $(am_pstoedit_OBJECTS) pstoedit_DEPENDENCIES = libpstoedit.la $(am__DEPENDENCIES_1) pstoedit_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(pstoedit_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) SOURCES = $(libp2edrvlplot_la_SOURCES) $(libp2edrvmagick___la_SOURCES) \ $(libp2edrvpptx_la_SOURCES) $(libp2edrvstd_la_SOURCES) \ $(libp2edrvswf_la_SOURCES) $(libp2edrvwmf_la_SOURCES) \ $(libpstoedit_la_SOURCES) $(pstoedit_SOURCES) DIST_SOURCES = $(libp2edrvlplot_la_SOURCES) \ $(libp2edrvmagick___la_SOURCES) $(libp2edrvpptx_la_SOURCES) \ $(libp2edrvstd_la_SOURCES) $(libp2edrvswf_la_SOURCES) \ $(am__libp2edrvwmf_la_SOURCES_DIST) $(libpstoedit_la_SOURCES) \ $(pstoedit_SOURCES) pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibdir = $(libdir)/$(PACKAGE) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXX_RUNTIME_LIB = @CXX_RUNTIME_LIB@ CXX_STD_LIB = @CXX_STD_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GS = @GS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDLIBS = @LDLIBS@ LIBEMF_CFLAGS = @LIBEMF_CFLAGS@ LIBEMF_LDFLAGS = @LIBEMF_LDFLAGS@ LIBLD_LDFLAGS = @LIBLD_LDFLAGS@ LIBMAGICK_CFLAGS = @LIBMAGICK_CFLAGS@ LIBMAGICK_LDFLAGS = @LIBMAGICK_LDFLAGS@ LIBMAGICK_LIBS = @LIBMAGICK_LIBS@ LIBMING_CFLAGS = @LIBMING_CFLAGS@ LIBMING_LDFLAGS = @LIBMING_LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBPLOTTER_CFLAGS = @LIBPLOTTER_CFLAGS@ LIBPLOTTER_LDFLAGS = @LIBPLOTTER_LDFLAGS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LDFLAGS = @LIBPNG_LDFLAGS@ LIBPPTX_CFLAGS = @LIBPPTX_CFLAGS@ LIBPPTX_LDFLAGS = @LIBPPTX_LDFLAGS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LINK = @LINK@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CONFIG = @MAGICK_CONFIG@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKSTEMP_CFLAGS = @MKSTEMP_CFLAGS@ 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@ SPECIAL_CXXFLAGS = @SPECIAL_CXXFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = pstoedit.ph makefile.txt # LIBPLUGINS_ENTRY=libp2edrvplugins.la @HAVE_LIBPLOTTER_TRUE@LIBPLOTTER_ENTRY = libp2edrvlplot.la @HAVE_LIBMING_TRUE@LIBMING_ENTRY = libp2edrvswf.la @HAVE_LIBZIP_TRUE@LIBPPTX_ENTRY = libp2edrvpptx.la @HAVE_LIBMAGICK_TRUE@LIBMAGICK_ENTRY = libp2edrvmagick++.la @HAVE_LIBEMF_TRUE@LIBEMF_ENTRY = libp2edrvwmf.la AM_CPPFLAGS = \ ${LIBPLOTTER_CFLAGS} \ ${LIBMING_CFLAGS} \ ${MKSTEMP_CFLAGS} \ ${LIBMAGICK_CFLAGS} \ ${LIBEMF_CFLAGS} \ ${LIBPNG_CFLAGS} \ -DDEFAULTGS=$(GS) \ -DPSTOEDITDATADIR="\"$(pkgdatadir)\"" \ -DPSTOEDITLIBDIR="\"$(pkglibdir)\"" \ ${SPECIAL_CXXFLAGS} lib_LTLIBRARIES = libpstoedit.la pkglib_LTLIBRARIES = libp2edrvstd.la \ ${LIBPLUGINS_ENTRY} \ ${LIBPLOTTER_ENTRY} \ ${LIBMING_ENTRY} \ ${LIBPPTX_ENTRY} \ ${LIBMAGICK_ENTRY} \ ${LIBEMF_ENTRY} OLD_pkglibdir = $(libdir)/$(PACKAGE)$(PACKAGE_VERSION) sample_drivers_src = drvsampl.cpp drvsampl.h specific_drivers_src = \ drvgnplt.cpp drvgnplt.h \ drvtgif.cpp drvtgif.h \ drvfig.cpp drvfig.h \ drvidraw.cpp drvidraw.h libp2edrvstd_la_SOURCES = \ initlibrary.cpp \ drvgcode.cpp drvgcode.h \ drvcairo.cpp drvcairo.h \ drvlwo.cpp drvlwo.h \ drvrib.cpp drvrib.h \ drvrpl.cpp drvrpl.h \ drvdxf.cpp drvdxf.h \ dxfacad.h dxficad.h \ drvjava.cpp drvjava.h \ drvjava2.cpp drvjava2.h \ drvpdf.cpp drvpdf.h \ drvkillu.cpp drvkillu.h \ drvtext.cpp drvtext.h \ drvsk.cpp drvsk.h \ drvmpost.cpp drvmpost.h \ drvasy.cpp drvasy.h \ drvmma.cpp drvmma.h \ drvlatex2e.cpp drvlatex2e.h \ drvnoi.cpp drvnoi.h \ drvpic.cpp drvpic.h \ drvhpgl.cpp drvhpgl.h \ drvpcb1.cpp drvpcb1.h \ drvpcb2.cpp drvpcb2.h \ drvpcbfill.cpp drvpcbfill.h \ drvgschem.cpp drvgschem.h \ drvcfdg.cpp drvcfdg.h \ drvtk.cpp drvtk.h \ drvvtk.cpp drvvtk.h \ drvsvm.cpp drvsvm.h svm_actions.h \ $(specific_drivers_src) \ $(sample_drivers_src) libp2edrvstd_la_LIBADD = libpstoedit.la libp2edrvstd_la_LDFLAGS = -no-undefined -module #libp2edrvplugins_la_SOURCES=drvmif.cpp drvcgm.cpp drvrtf.cpp drvwwmf.cpp #libp2edrvplugins_la_LIBADD= #libp2edrvplugins_la_LDFLAGS= #libp2edrvplugins_la_CFLAGS=-I../Check/ -I../othersrc/cdlib libp2edrvlplot_la_SOURCES = drvlplot.cpp drvlplot.h initlibrary.cpp libp2edrvlplot_la_LIBADD = $(LIBPLOTTER_LDFLAGS) libpstoedit.la libp2edrvlplot_la_LDFLAGS = -no-undefined -module libp2edrvpptx_la_SOURCES = drvpptx.cpp drvpptx.h initlibrary.cpp libp2edrvpptx_la_LIBADD = $(LIBPPTX_LDFLAGS) libpstoedit.la libp2edrvpptx_la_LDFLAGS = -no-undefined -module libp2edrvswf_la_SOURCES = drvswf.cpp drvswf.h initlibrary.cpp libp2edrvswf_la_LIBADD = $(LIBMING_LDFLAGS) libpstoedit.la libp2edrvswf_la_LDFLAGS = -no-undefined -module # note the __ stand for ++ - automake treats all no alphanums chars as _ libp2edrvmagick___la_SOURCES = drvmagick++.cpp drvmagick++.h initlibrary.cpp libp2edrvmagick___la_LIBADD = ${LIBMAGICK_LDFLAGS} libpstoedit.la libp2edrvmagick___la_LDFLAGS = -no-undefined -module @USE_EMFBYSOURCE_FALSE@libp2edrvwmf_la_SOURCES = drvwmf.cpp drvwmf.h initlibrary.cpp # moved to configure.ac because needed only for g++ libp2edrvmagick___la_CPPFLAGS=$(LIBMAGICK_CFLAGS) $(AM_CPPFLAGS) -Wno-long-long @USE_EMFBYSOURCE_TRUE@libp2edrvwmf_la_SOURCES = emflib.cpp drvwmf.cpp drvwmf.h initlibrary.cpp @USE_EMFBYSOURCE_FALSE@libp2edrvwmf_la_LIBADD = $(LIBEMF_LDFLAGS) libpstoedit.la @USE_EMFBYSOURCE_TRUE@libp2edrvwmf_la_LIBADD = libpstoedit.la @USE_EMFBYSOURCE_FALSE@libp2edrvwmf_la_LDFLAGS = -no-undefined -module @USE_EMFBYSOURCE_TRUE@libp2edrvwmf_la_LDFLAGS = -no-undefined -module libpstoedit_la_SOURCES = \ dynload.cpp dynload.h \ callgs.cpp \ lexyy.cpp \ miscutil.cpp \ cbstream.cpp cbstream.h \ psimage.cpp \ drvbase.cpp \ base64writer.cpp \ poptions.cpp \ subpath.cpp subpath.h \ pstoedit.cpp \ psfront.h \ genericints.h \ version.h libpstoedit_la_LIBADD = ${CXX_STD_LIB} ${CXX_RUNTIME_LIB} -ldl -lm libpstoedit_la_LDFLAGS = -no-undefined pstoedit_SOURCES = cmdmain.cpp pstoedit_LDADD = libpstoedit.la ${LIBLD_LDFLAGS} pstoedit_LDFLAGS = -no-undefined pkginclude_HEADERS = \ pstoedit.h \ pstoedll.h \ pstoeditoutputlib.h \ pstoeditoptions.h \ cppcomp.h \ drvbase.h \ drvfuncs.h \ miscutil.h \ genericints.h \ base64writer.h \ poptions.h \ papersizes.h \ ordlist.h \ psimage.h all: pstoedit_config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu 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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh pstoedit_config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/pstoedit_config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/pstoedit_config.h $(srcdir)/pstoedit_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f pstoedit_config.h stamp-h1 install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ else :; fi; \ done uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libp2edrvlplot.la: $(libp2edrvlplot_la_OBJECTS) $(libp2edrvlplot_la_DEPENDENCIES) $(libp2edrvlplot_la_LINK) $(am_libp2edrvlplot_la_rpath) $(libp2edrvlplot_la_OBJECTS) $(libp2edrvlplot_la_LIBADD) $(LIBS) libp2edrvmagick++.la: $(libp2edrvmagick___la_OBJECTS) $(libp2edrvmagick___la_DEPENDENCIES) $(libp2edrvmagick___la_LINK) $(am_libp2edrvmagick___la_rpath) $(libp2edrvmagick___la_OBJECTS) $(libp2edrvmagick___la_LIBADD) $(LIBS) libp2edrvpptx.la: $(libp2edrvpptx_la_OBJECTS) $(libp2edrvpptx_la_DEPENDENCIES) $(libp2edrvpptx_la_LINK) $(am_libp2edrvpptx_la_rpath) $(libp2edrvpptx_la_OBJECTS) $(libp2edrvpptx_la_LIBADD) $(LIBS) libp2edrvstd.la: $(libp2edrvstd_la_OBJECTS) $(libp2edrvstd_la_DEPENDENCIES) $(libp2edrvstd_la_LINK) -rpath $(pkglibdir) $(libp2edrvstd_la_OBJECTS) $(libp2edrvstd_la_LIBADD) $(LIBS) libp2edrvswf.la: $(libp2edrvswf_la_OBJECTS) $(libp2edrvswf_la_DEPENDENCIES) $(libp2edrvswf_la_LINK) $(am_libp2edrvswf_la_rpath) $(libp2edrvswf_la_OBJECTS) $(libp2edrvswf_la_LIBADD) $(LIBS) libp2edrvwmf.la: $(libp2edrvwmf_la_OBJECTS) $(libp2edrvwmf_la_DEPENDENCIES) $(libp2edrvwmf_la_LINK) $(am_libp2edrvwmf_la_rpath) $(libp2edrvwmf_la_OBJECTS) $(libp2edrvwmf_la_LIBADD) $(LIBS) libpstoedit.la: $(libpstoedit_la_OBJECTS) $(libpstoedit_la_DEPENDENCIES) $(libpstoedit_la_LINK) -rpath $(libdir) $(libpstoedit_la_OBJECTS) $(libpstoedit_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done pstoedit$(EXEEXT): $(pstoedit_OBJECTS) $(pstoedit_DEPENDENCIES) @rm -f pstoedit$(EXEEXT) $(pstoedit_LINK) $(pstoedit_OBJECTS) $(pstoedit_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64writer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cbstream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmdmain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvasy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvbase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvcairo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvcfdg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvdxf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvfig.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvgcode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvgnplt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvgschem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvhpgl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvidraw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvjava.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvjava2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvkillu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvlatex2e.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvlplot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvlwo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvmagick++.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvmma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvmpost.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvnoi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvpcb1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvpcb2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvpcbfill.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvpdf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvpic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvpptx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvrib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvrpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvsampl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvsk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvsvm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvswf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvtext.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvtgif.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvtk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvvtk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drvwmf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emflib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initlibrary.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lexyy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/miscutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poptions.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psimage.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pstoedit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subpath.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" @list='$(pkginclude_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) pstoedit_config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) pstoedit_config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) pstoedit_config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) pstoedit_config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) \ pstoedit_config.h install-binPROGRAMS: install-libLTLIBRARIES installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(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-pkgincludeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-libLTLIBRARIES \ install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \ uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libLTLIBRARIES clean-libtool \ clean-pkglibLTLIBRARIES ctags 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-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-pkgincludeHEADERS \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-libLTLIBRARIES \ uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES # 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: pstoedit-3.62/src/makefile.txt0000774000175500000000000003055107660755402013340 00000000000000# Makefile for pstoedit. prefix=/usr/local # will install pstoedit in $prefix/bin and # fontmap files in $prefix/lib # MANEXT=1 MANDIR=$(prefix)/man/man$(MANEXT) AWK=gawk #AWK=awk # uncommment one of the following CCC lines for Un*x like systems # For users of GNU g++ GNUGPPFLAGS=-DBUGGYGPP -ansi -pedantic -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wstrict-prototypes #CCC=g++ -O2 $(GNUGPPFLAGS) # For debugging #CCC=g++ -g $(GNUGPPFLAGS) # For users of DJGPP #CCC=gxx -DBUGGYGPP # For Sun's SparcCompiler or any C++ Compiler called via CC #CCC=CC +w # SparcCompiler with source browsing option and debug support # CCC=CC-4.2 -xsb +w -g # For CenterLine (You may need to change clCC to CC) #CCC=clCC +w -ptv # if you want to test pstoedit using insure (www.parasoft.com) #CCC=insure CC +w #CCC=insure g++ -g $(GNUGPPFLAGS) # rest of flags for Un*x systems LINK=$(CCC) $(LDFLAGS) CCFLAGS=-DDEFAULTGS=gs $(CXXFLAGS) # with shared libs LDFLAGS=-lm -ldl (Solaris, Linux, ???) #LDLIBS= $(LOCALLIBS) -lm -ldl # without shared libs use LDFLAGS=-lm #LDLIBS=-lm INSTALL_DATA=cp INSTALL_DIR=install -d -m755 # or: mkdir -p OBJEXT=o EXEEXT= OUTPUT=-o pstoedit SPECIFICDRIVERS= drvtgif.$(OBJEXT) drvfig.$(OBJEXT) drvidraw.$(OBJEXT) drvgnplt.$(OBJEXT) MAIN=cmdmain target=pstoedit # uncomment the next lines if you have the libplotter (GNU plotutils) #LOCALDRIVERS = #LOCALDEFINES = -DHAVE_LIBPLOTTER -DOLD_LIBPLOTTER -I/path/to/plotter.h # use -DOLD_LIBPLOTTER for libplot older than 2.3 #LOCALLIBS = -lplotter ############################################################# # uncomment for Cygwin / Win32 # WARNING: -ansi compiler option does not work (for CygWin B20)! GNUGPPFLAGS=-DBUGGYGPP -pedantic -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wstrict-prototypes # For the release #CCC=g++ -O2 $(GNUGPPFLAGS) # For debugging CCC=g++ -g $(GNUGPPFLAGS) CCFLAGS=-DDEFAULTGS=gswin32 OBJEXT=o EXEEXT=.exe OUTPUT=-o pstoedit.exe SPECIFICDRIVERS=drvwmf.$(OBJEXT) MAIN=cmdmain target=pstoedit.exe LOCALDEFINES=-DHAVESTL -I. -I../othersrc/gsdllinc LDLIBS=-luser32 -lgdi32 LINK=g++ ############################################################# ## IRIX 5.3 #CCC=CC -O2 -mips2 -Olimit 2400 #LDLIBS=-lm ## IRIX 6.2 #CCC=CC -mips3 -n32 -O2 -OPT:fold_arith_limit=2500 -DINTERNALBOOL #LDLIBS=-lm ############################################################# ## For RiscOS users using g++ #CCC=g++ #CCFLAGS=-Wall -Dunix -Ilibgpp: -Ilibstdc: -Ilibio: #LDLIBS=-rescan libgpp:o.libg++ libstdc:o.libstdc++ libio:o.libiostrea gcc:o.libgcc Unix:o.UnixLib #LINK=link ############################################################# # For AIX xlC users #CCC=xlC #CCFLAGS=-D__unix__ -g -+ -I/usr/lpp/xlC/src/nihC/aixinclude #LINK=$(CCC) ############################################################# ## For DEC OSF/1 with its native cxx # #> Ferner muss drvbase.cc mit der cxx compiler-option -define_templates #> compiliert werden; fuer alle anderen cc-Files kann der Compiler im #> makefile mit (wilms@astro.uni-tuebingen.de) #> #CCC=cxx -w #CCFLAGS=-DDEFAULTGS=gs -define_templates #LINK=$(CCC) ############################################################# # uncomment for Win32 / Borland C++ #CCC=f:\sw2\bc5\bin\bcc32 /If:\sw2\bc5\include /I../othersrc/gsdllinc /I. #CCC=bcc32 /I../othersrc/gsdllinc /I. ## add -v to CCFLAGS for debugging #CCFLAGS= -DINTERNALBOOL -P -DDEFAULTGS=gswin32 -I.;../cd1.3 #LDLIBS= owlwf.lib bidsf.lib import32.lib cw32.lib #OBJEXT=obj #EXEEXT=.exe #OUTPUT=-epstoedit #SPECIFICDRIVERS=drvwmf.$(OBJEXT) #MAIN=cmdmain #target=pstoedit.exe ############################################################# # uncomment for DOS / Turbo C++ #CCC=tcc #CCFLAGS=-P -I. -ml -DDEFAULTGS=gs386 #OBJEXT=obj #EXEEXT=.exe #OUTPUT=-epstoedit #SPECIFICDRIVERS= #MAIN=cmdmain #target=pstoedit.exe ############################################################# # uncomment for Win32 / Visual C++ # # This builds a pstoedit.exe with all drivers linked in. # So far the Makefile does not support building the # pstoedit.dll and the separate pstoedit which just calls # the pstoedit.dll # #CCC=cl ## /Ze is used in version 4.2 to enable language extensions like bool ## unfortunately this does not work as expected ## so we have to #define bool,false and true #CCFLAGS= /Zi /MLd /W3 /I../othersrc/gsdllinc /I. -Dbool=BOOL -Dfalse=FALSE -Dtrue=TRUE -DDEFAULTGS=gswin32 # for version 5.0 and 6.0 (which support bool) #CCFLAGS= /I../othersrc/gsdllinc /Zi /MLd /W3 /I. -DINTERNALBOOL -DDEFAULTGS=gswin32 #FORCECPPFLAGS=/Tp #LDLIBS= user32.lib gdi32.lib advapi32.lib #OBJEXT=obj #EXEEXT=.exe #OUTPUT=/Fepstoedit #SPECIFICDRIVERS=drvwmf.$(OBJEXT) #MAIN=cmdmain #target=pstoedit.exe ############################################################# # uncomment for OS2 using VisualAge C++ #CCC=icc # # Tdp forces C++ # # Gm+ enables threads # # Ti activates debug mode #CCFLAGS= -I. /Tdp /Gm+ -DDEFAULTGS=gsos2 #OBJEXT=obj #EXEEXT=.exe #OUTPUT=-Fepstoedit #DEFFILE=pstoedit.def #SPECIFICDRIVERS=drvmet.obj #MAIN=cmdmain #target=pstoedit.exe ############################################################# # uncomment for OS2 using gcc #CCC=gcc #CCFLAGS=-Zexe -Zmt -D__OS2__='' -DDEFAULTGS=gsos2 #OBJEXT=o #EXEEXT= #OUTPUT=-o pstoedit #LDLIBS=-Zexe -Zmt -lstdcpp #DEFFILE=pstoedit.def #SPECIFICDRIVERS=drvmet.o #MAIN=cmdmain #target=pstoedit ############################################################# # For developers only: # Uncomment the following lines (LEXSOURCE= and PSHEADER=) if you have # pstoedit.pro and makeedit.l and need to make some changes in these files. #LEXSOURCE=lexyy.cpp # This is some sort ot hack. If LEXSOURCE is not defined, the make rule below # only relates to dummy.cpp, which is not used by the main target. #PSHEADER=pstoedit.ph # same comment applies to PSHEADER variable ############################################################# default : $(target) # No changes should be necessary below this line .SUFFIXES: .cpp .obj .o .chk .cpp.o: $(CCC) -c $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) $< .cpp.obj: $(CCC) /c $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) $< # $(CCC) /c $(LOCALDEFINES) $(CCFLAGS) $&.cpp # Standard Drivers (for all systems) STANDARDDRIVERS=\ drvlwo.$(OBJEXT) \ drvrib.$(OBJEXT) \ drvrpl.$(OBJEXT) \ drvdxf.$(OBJEXT) \ drvjava.$(OBJEXT) \ drvjava2.$(OBJEXT) \ drvlplot.$(OBJEXT) \ drvpdf.$(OBJEXT) \ drvkillu.$(OBJEXT) \ drvsk.$(OBJEXT) \ drvmpost.$(OBJEXT) \ drvlatex2e.$(OBJEXT) \ drvpic.$(OBJEXT) \ drvhpgl.$(OBJEXT) \ drvtk.$(OBJEXT) # Comment out the next line if you don't want the sample driver to be included SAMPLEDRIVER=drvsampl.$(OBJEXT) DRIVERS=$(STANDARDDRIVERS) $(LOCALDRIVERS) $(SAMPLEDRIVER) $(SPECIFICDRIVERS) OBJECTS=dynload.$(OBJEXT) callgs.$(OBJEXT) $(MAIN).$(OBJEXT) pstoedit.$(OBJEXT) lexyy.$(OBJEXT) miscutil.$(OBJEXT) cbstream.$(OBJEXT) psimage.$(OBJEXT) drvbase.$(OBJEXT) subpath.$(OBJEXT) $(DRIVERS) # this does not work with GNU make #OBJECTS:sh =ls drv*.c | sed 's/\.c/\.$(OBJEXT)/' #OBJECTS += lexyy.$(OBJEXT) TESTDRIVER=drvpdf libdemo : libusagedemo.$(OBJEXT) drvbase.$(OBJEXT) $(TESTDRIVER).$(OBJEXT) $(LINK) -o libusagedemo libusagedemo.$(OBJEXT) drvbase.$(OBJEXT) $(TESTDRIVER).$(OBJEXT) pstoedit : $(OBJECTS) $(LINK) $(OUTPUT) $(OBJECTS) $(LDLIBS) $(DEFFILE) # purified version pstoedit.pure : $(OBJECTS) purify $(LINK) -o pstoedit.pure $(CCFLAGS) $(OBJECTS) $(LDLIBS) $(DEFFILE) # proofed version (TestCenter from CenterLine) pstoedit.proof : $(OBJECTS) proof $(LINK) -o pstoedit.proof $(CCFLAGS) $(OBJECTS) $(LDLIBS) $(DEFFILE) pstoedit.exe : $(OBJECTS) # echo pstoedit.$(OBJEXT) lexyy.$(OBJEXT) drvbase.$(OBJEXT) > link.rsp # distribute the above objects among the following lines, in case # one of the driver variable is empty echo $(MAIN).$(OBJEXT) poptions.$(OBJEXT) pstoedit.$(OBJEXT) callgs.$(OBJEXT) > link.rsp echo $(STANDARDDRIVERS) >> link.rsp echo lexyy.$(OBJEXT) $(LOCALDRIVERS) >> link.rsp echo $(SAMPLEDRIVER) $(SPECIFICDRIVERS) >> link.rsp echo miscutil.$(OBJEXT) dynload.$(OBJEXT) base64writer.$(OBJEXT) cbstream.$(OBJEXT) drvbase.$(OBJEXT) $(LDLIBS) >> link.rsp $(CCC) $(OUTPUT) $(CCFLAGS) @link.rsp -del link.rsp dummy.cpp $(LEXSOURCE) : makeedit.l flex -L -8 makeedit.l -mv lex.yy.c lexyy.cpp -mv lexyy.c lexyy.cpp clean: rm -f core pstoedit.pure pstoedit.proof pstoedit$(EXEEXT) *.$(OBJEXT) *.chk test: pstoedit$(EXEEXT) -cd ../examples;\ ../src/pstoedit -f tgif illusion.ps illusion.ps.obj;\ tgif illusion.ps.obj;\ ../src/pstoedit -scale 2 -f tgif illusion.ps illusion.ps.obj;\ tgif illusion.ps.obj;\ ../src/pstoedit -dt -f tgif illusion.ps illusion.ps.obj;\ tgif illusion.ps.obj;\ ../src/pstoedit -f tgif eschertr.ps eschertr.ps.obj;\ tgif eschertr.ps.obj;\ ../src/pstoedit -f fig illusion.ps illusion.ps.fig;\ xfig illusion.ps.fig;\ ../src/pstoedit -f fig eschertr.ps eschertr.ps.fig;\ xfig eschertr.ps.fig;\ ../src/pstoedit -f fig spiral.ps spiral.ps.fig;\ xfig spiral.ps.fig;\ echo "now trying RIB for RenderMan ";\ ../src/pstoedit -dt -f rib illusion.ps illusion.ps.rib ;\ ../src/pstoedit -dt -f rib eschertr.ps eschertr.ps.rib ;\ echo "now trying LWO for LightWave 3D ";\ ../src/pstoedit -dt -f lwo illusion.ps illusion.ps.lwo ;\ ../src/pstoedit -dt -f lwo eschertr.ps eschertr.ps.lwo ;\ echo "now trying RPL for Real3D ";\ ../src/pstoedit -dt -f rpl illusion.ps illusion.ps.rpl ;\ ../src/pstoedit -dt -f rpl eschertr.ps eschertr.ps.rpl ;\ echo "tests done"; # groff -man ../doc/pstoedit.1 > pstoedit.man.ps # if you don't have groff, try the following instead # troff -man -Tpsc ../doc/pstoedit.1 | psdit > pstoedit.man.ps drvmdraw.ph : drvmdraw.pro $(AWK) -f mkmdraw.awk < drvmdraw.pro > drvmdraw.ph dummy.ph $(PSHEADER) : pstoedit.pro $(AWK) -f mkpspro.awk < pstoedit.pro > pstoedit.ph install: pstoedit ../doc/pstoedit.1 if [ ! -d $(prefix)/bin ] ; then \ $(INSTALL_DIR) $(prefix)/bin; \ fi $(INSTALL_DATA) pstoedit $(prefix)/bin if [ ! -d $(prefix)/lib ] ; then \ $(INSTALL_DIR) $(prefix)/lib; \ fi $(INSTALL_DATA) ../misc/mpost.fmp $(prefix)/lib $(INSTALL_DATA) ../misc/latex2e.fmp $(prefix)/lib if [ ! -d $(MANDIR) ] ; then \ $(INSTALL_DIR) $(MANDIR); \ fi $(INSTALL_DATA) ../doc/pstoedit.1 $(MANDIR)/pstoedit.$(MANEXT); echo "please copy ../doc/pstoedit.htm to a suitable place" # Just for running static check tools LINTLIKECHECKER=cppchecker LINTLIKECHECKER=flintchecker ALLCHKS=\ drvbase.chk\ drvwmf.chk\ drvdxf.chk\ drvfig.chk\ drvgnplt.chk\ drvmet.chk\ drvpdf.chk\ drvjava.chk\ drvsampl.chk\ drvtgif.chk\ drvidraw.chk\ drvlwo.chk\ drvrib.chk\ drvrpl.chk\ drvavf.chk\ lexyy.chk\ cmdmain.chk\ pstoedit.chk\ cdlib.chk .cpp.chk: $(LINTLIKECHECKER) $< $@ -c $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) checknamed: $(ALLCHKS) echo checks done checkall: for f in *.cpp; do \ $(LINTLIKECHECKER) $$f `basename $$f .cpp`.log $(LOCALDEFINES) $(CCFLAGS) $(FORCECPPFLAGS) ;\ done #depend: # makedepend *.cpp # DO NOT DELETE lexyy.$(OBJEXT): lexyy.cpp drvbase.h drvfuncs.h psimage.h drvbase.$(OBJEXT): drvbase.cpp drvbase.h drvfuncs.h psimage.h pstoedit.$(OBJEXT): pstoedit.cpp drvbase.h drvfuncs.h psfront.h pstoedit.h pstoedit.ph version.h $(MAIN).$(OBJEXT): $(MAIN).cpp pstoedit.h drvtgif.$(OBJEXT): drvtgif.cpp drvtgif.h drvbase.h drvfuncs.h psimage.h drvtk.$(OBJEXT): drvtk.cpp drvtk.h drvbase.h drvfuncs.h psimage.h drvlwo.$(OBJEXT): drvlwo.cpp drvlwo.h drvbase.h drvfuncs.h psimage.h drvrib.$(OBJEXT): drvrib.cpp drvrib.h drvbase.h drvfuncs.h psimage.h drvrpl.$(OBJEXT): drvrpl.cpp drvrpl.h drvbase.h drvfuncs.h psimage.h drvidraw.$(OBJEXT): drvidraw.cpp drvidraw.h drvbase.h drvfuncs.h psimage.h drvfig.$(OBJEXT): drvfig.cpp drvfig.h drvbase.h drvfuncs.h psimage.h drvgnplt.$(OBJEXT): drvgnplt.cpp drvgnplt.h drvbase.h drvfuncs.h psimage.h drvdxf.$(OBJEXT): drvdxf.cpp drvdxf.h drvbase.h drvfuncs.h psimage.h drvmet.$(OBJEXT): drvmet.cpp drvmet.h drvbase.h drvfuncs.h psimage.h drvpdf.$(OBJEXT): drvpdf.cpp drvpdf.h drvbase.h drvfuncs.h psimage.h drvtext.$(OBJEXT): drvtext.cpp drvtext.h drvbase.h drvfuncs.h psimage.h cdlib.$(OBJEXT): cdlib.cpp drvmdraw.$(OBJEXT): drvmdraw.cpp drvbase.h drvmdraw.h drvfuncs.h psimage.h drvmdraw.ph drvsampl.$(OBJEXT): drvsampl.cpp drvbase.h drvsampl.h drvfuncs.h psimage.h drvjava.$(OBJEXT): drvjava.cpp drvbase.h drvjava.h drvfuncs.h psimage.h drvjava2.$(OBJEXT): drvjava2.cpp drvbase.h drvjava2.h drvfuncs.h psimage.h drvwmf.$(OBJEXT): drvwmf.cpp drvbase.h drvwmf.h drvfuncs.h psimage.h pstoedit.ph: # dummy for RiscOS GNU make's screwed dependencies pstoedit-3.62/src/miscutil.cpp0000644000175500010010000005766512137224254013363 00000000000000/* miscutil.cpp : This file is part of pstoedit misc utility functions Copyright (C) 1998 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "miscutil.h" #include I_stdio // #ifdef _MSC_VER // for getcwd ( at least for Visual C++) #if defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) || defined(__APPLE__) || defined(_AIX) #include #ifdef __hpux // HP-UX does not define getcwd in unistd.h extern "C" char *getcwd(char *, size_t); #endif #else // not Unix like #if HAVE_DIRENT_H #include #elif HAVE_SYS_NDIR_H #include #elif HAVE_SYS_DIR_H #include #elif HAVE_NDIR_H #include #else // last chance #include #endif #endif #ifdef HAVE_MKSTEMP // for using mkstemp we need errno #include #endif #include I_stdlib #include I_string_h #if defined(_WIN32) #include #elif defined (__OS2__) #define INCL_DOS #define INCL_WINWINDOWMGR #define INCL_WINSHELLDATA /* Window Shell functions */ #define INCL_WINERRORS #include #endif #if defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined (NetBSD) //take this out (we may have backslashes w/ EMX(OS/2)): || defined(__EMX__) void convertBackSlashes(char *) { } // nothing to do on systems with unix style file names ( / for directories) #else void convertBackSlashes(char *fileName) { char *c ; while ((c = strchr(fileName, '\\')) != NIL) *c = '/'; } #endif #ifndef HAVE_MKSTEMP // // if we do not have mkstemp we need to emulate it using old tempnam // for some systems we even have to provide an own tempnam // #if defined(__STRICT_ANSI__) // normally this is in stdio.h except if __STRICT_ANSI__ is defined (GNU specific) // but it is in again - at least under Linux with g++3.0 #if !( defined (__GNUG__) && (__GNUC__>=3) ) extern "C" char *tempnam(const char *, const char *pfx); #endif #endif #if defined(riscos) // rcw2: tempnam doesn't seem to be defined in UnixLib 3.7b for RiscOS static char *tempnam(const char *, const char *pfx) { char tmp[1024]; strcpy(tmp, "."); strcat(tmp, pfx); return strdup(tmp); } #endif #ifdef __WATCOMC__ // tempnam doesn't seem to be defined in Watcoms clibs static char *tempnam(const char *, const char *pfx) { const char *path; char tmp[1024]; // simply take c: as temp dir, if environment not defined if ((path = getenv("TEMP")) == 0L && (path = getenv("TMP")) == 0L) { strcpy(tmp, "C:\\"); } else { // take temp dir from environment strcpy(tmp, path); strcat(tmp, "\\"); } strcat(tmp, pfx); // remove all backslashes convertBackSlashes(tmp); return strdup(tmp); } #endif // #define BUGGYTEMPNAM #if (defined(__mips) && defined(__sgi)) #define strdup cppstrdup #endif #if (defined(DJGPP) && defined(BUGGYTEMPNAM)) || (defined(__mips) && defined(__sgi)) // tempnam under DJGPP behaves different than on all other systems // and Irix doesn't seem to have tempnam char *tempnam(const char *, const char *pfx) { return strdup(tmpnam(0)); } #endif // endif for not having mkstemp #endif RSString full_qualified_tempnam(const char *pref) { #ifdef HAVE_MKSTEMP const char *path = 0; char * filename = 0; const char XXXXXX[] = "XXXXXX" ; // needed for mkstemp template (void) ((path = getenv("TEMP")) == 0L && (path = getenv("TMP")) == 0L && (path = getenv("TMPDIR")) == 0L ); const unsigned int needed = strlen(path ? path:"" ) + 1 + strlen(pref) + 1 + strlen(XXXXXX) + 2; filename = (char*) malloc(needed); // new char [ needed ]; filename[0] = '\0'; // all getenvs returned 0 if (path) { strncpy(filename, path, needed); strcat(filename, "/"); } strcat(filename, pref); strcat(filename, XXXXXX); // cout << "using " << filename << " as template for mkstemp" << endl; const int fd = mkstemp(filename); // cout << "returned " << filename << " and " << fd << endl; if (fd == -1) { cerr << "error in mkstemp for " << filename << " " << errno << endl; exit(1); } #else #if defined (__BCPLUSPLUS__) || defined (__TCPLUSPLUS__) /* borland has a prototype that expects a char * as second arg */ char *filename = TEMPNAM(0, (char *) pref); #else char *filename = TEMPNAM(0, pref); #endif // W95: Fkt. tempnam() erzeugt Filename+Pfad // W3.1: es wird nur der Name zurueckgegeben #endif // rcw2: work round weird RiscOS naming conventions #ifdef riscos const RSString result(filename); free(filename); return result; #else convertBackSlashes(filename); if ((strchr(filename, '\\') == 0) && (strchr(filename, '/') == 0)) { // keine Pfadangaben.. char cwd[400]; (void) GETCWD(cwd, 400); RSString result = cwd; result += "/"; result += filename; free(filename); return result; } else { const RSString result(filename); free(filename); return result; } #endif } unsigned short hextoint(const char hexchar) { char h = hexchar; if (h >= 'a' && h <='f') h += 'A' - 'a'; // normalize lowercase to uppercase unsigned short r = ( h <= '9' ) ? (h - '0') : (h + 10 - 'A' ) ; //lint !e732 return r; } const bool regdebug = false; #if defined(_WIN32) RSString tryregistry(HKEY hKey, LPCSTR subkeyn, LPCSTR key) { HKEY subkey; const long ret = RegOpenKeyEx(hKey, // HKEY_LOCAL_MACHINE, //HKEY hKey, subkeyn, // LPCSTR lpSubKey, 0L, // DWORD ulOptions, KEY_READ, // REGSAM samDesired, &subkey //PHKEY phkResult ); if (ret != ERROR_SUCCESS) { if (regdebug) cerr << "RegOpenKeyEx failed with error code " << ret << endl; return RSString( (char*) 0); } else { const int maxvaluelength = 1000; BYTE value[maxvaluelength]; DWORD bufsize = maxvaluelength; DWORD valuetype; const long retv = RegQueryValueEx(subkey, // HKEY_LOCAL_MACHINE, //HKEY hKey, key, // "SOFTWARE\\wglunz\\pstoedit\\plugindir", //LPCSTR lpValueName, NIL, // LPDWORD lpReserved, &valuetype, // LPDWORD lpType, value, // LPBYTE lpData, &bufsize // LPDWORD lpcbData ); (void) RegCloseKey(subkey); if (retv != ERROR_SUCCESS) { if (regdebug) cerr << "RegQueryValueEx failed with error code " << retv << endl; return RSString( (char*) 0); } else { if (regdebug) cerr << "result is " << (char*) value << endl; return RSString( (char*) value); } } } #endif #ifdef __OS2__ #include "getini.c" #endif //lint -save -esym(715,errstream) -esym(1764,errstream) RSString getRegistryValue(ostream & errstream, const char *typekey, const char *key) { #if defined(_WIN32) unused(&errstream); // CString subkey = CString("SOFTWARE\\wglunz\\") + CString(product); RSString subkeyn("SOFTWARE\\wglunz\\"); // char subkeyn[1000]; // subkeyn[0] = '\0'; // strcat_s(subkeyn,1000, "SOFTWARE\\wglunz\\"); subkeyn += typekey; // strcat_s(subkeyn,1000, typekey); RSString result = tryregistry(HKEY_CURRENT_USER, subkeyn.value(), key); if (!result.value() ) result = tryregistry(HKEY_LOCAL_MACHINE, subkeyn.value(), key); return result; #elif defined (__OS2__) //query a "real" OS/2 profile pstoedit.ini HINI hini; HAB hab; char pszFileName[1000]; const char inifilename[] = "pstoedit.ini"; APIRET rc; char buffer[1000]; hab = WinInitialize(0); getini(0, errstream, pszFileName, inifilename, (int) sizeof(pszFileName)); hini = PrfOpenProfile(hab, pszFileName); rc = PrfQueryProfileString(hini, typekey, key, NIL, (PVOID) buffer, (LONG) sizeof(buffer)); PrfCloseProfile(hini); WinTerminate(hab); if (rc) { // char *r = cppstrdup(buffer); return buffer; } else return RSString( (char*) 0); #else // // UNIX version // Just ask the environment // #if 0 //getenv version char envname[1000]; envname[0] = '\0'; strcat(envname, typekey); strcat(envname, "_"); strcat(envname, key); // cout << "checking " << envname << endl; char *envvalue = getenv(envname); if (envvalue != 0) { char *r = cppstrdup(envvalue); // cout << "found " << r << endl; return r; } else return 0; #else char pathbuffer[255]; // First look in HOME for .pstoedit.reg. If not found there, then look in PATH anywhere unsigned int searchresult = searchinpath(getenv("HOME"), ".pstoedit.reg", pathbuffer, sizeof(pathbuffer)); if (!searchresult) searchresult = searchinpath(getenv("PATH"), ".pstoedit.reg", pathbuffer, sizeof(pathbuffer)); if (!searchresult) return RSString((char*) 0); #if 0 const char *homedir = getenv("HOME"); if (!homedir) return 0; const int len = strlen(homedir) + 20; char *obuf = new char[len]; strcpy(obuf, homedir); strcat(obuf, "/.pstoedit.reg"); ifstream regfile(obuf); // cout << "opened " << obuf << endl; delete[]obuf; #endif ifstream regfile(pathbuffer); if (!regfile) return RSString((char*)0); char envname[1000]; envname[0] = '\0'; strcat(envname, typekey); strcat(envname, "/"); strcat(envname, key); // cout << "checking " << envname << endl; char line[1000]; while (!regfile.eof()) { regfile.getline(line, 1000); // cout << line << endl; if (strstr(line, envname)) { char *r = cppstrdup(line + strlen(envname) + 1); char *cr = strrchr(r, '\r'); if (cr) *cr = 0; // cout << "found " << r << endl; const RSString result(r); delete [] r; return result; } } return RSString((char*) 0); #endif #endif } //lint -restore void copy_file(istream & infile, ostream & outfile) { #if 1 if ( infile.peek() != EOF ) { // Calling the copy operator in case the input file is empty results in the error state // of the target stream to be set to fail which then blocks any further IO on the output // This is not want we want, hence we have to check in advance whether there is something // available in the input buffer. // Alternatively I tried if (infile.rdbuf())->in_avail() ) // but - in_avail seems to be compiler dependent. E.g. GNU seems to return // the number of available chars even without prior peek. MSVC seems to return 0 // up to the first peek (or other operation). // #if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x500) // for SUN CC 4.2 rdbuf is non const - i guess this is an error since all other compilers have it const outfile << ((istream&)infile).rdbuf(); #else outfile << infile.rdbuf(); #endif } #else // long version. should do the same as above unsigned char c; while (infile.get(c)) { outfile.put(c); } #endif } ostream & operator << (ostream & out, const Argv & a) { for (unsigned int i = 0; i < (unsigned int) a.argc; i++) { out << a.argv[i]; if (i < (unsigned int) ( a.argc -1 )) out << ' ';// out << endl; } return out; } TempFile::TempFile() { tempFileName = TEMPNAM(0, "pstmp"); // cout << "constructed " << tempFileName << endl; } TempFile::~TempFile() { // cout << "detructed " << tempFileName << endl; close(); (void) remove(tempFileName); free(tempFileName); } ofstream & TempFile::asOutput() { close(); outFileStream.open(tempFileName); if (outFileStream.fail()) cerr << "openening " << tempFileName << "failed " << endl; return outFileStream; //lint !e1536 //exposing low access member } ifstream & TempFile::asInput() { close(); inFileStream.open(tempFileName); if (outFileStream.fail()) { cerr << "openening " << tempFileName << "failed " << endl; } return inFileStream; //lint !e1536 //exposing low access member } void TempFile::close() { //#ifdef HAVE_IS_OPEN //#define IS_OPEN(file) file.is_open() //#else //#define IS_OPEN(file) file //#endif // commented, since it also works portably if we call clear() // if (IS_OPEN(inFileStream)) { inFileStream.close(); // if (inFileStream.fail()) cerr << "closing inFileStream failed " << endl; // } inFileStream.clear(); // if (IS_OPEN(outFileStream)) { outFileStream.close(); // if (outFileStream.fail()) cerr << "closing outFileStream failed " << endl; // } outFileStream.clear(); } #if 0 void freeconst(const void *ptr) { free((char *) ptr); // just to have the warning about casting away constness // once (here) } #endif size_t searchinpath(const char *EnvPath, const char *name, char *returnbuffer, unsigned long buflen) { // const char * EnvPath = getenv("PATH"); if (!EnvPath) return 0; #if defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) const char separator = ':'; #else const char separator = ';'; #endif char *path = cppstrdup(EnvPath, 2); // append a separator at the end to make the loop below easier const size_t pathlen = strlen(path); path[pathlen] = separator; path[pathlen + 1] = '\0'; // remember, we reserved one char more char *colon = path; char *lastbegin = path; // cout << "looking for " << name << " in " << EnvPath << " sep is " << separator << endl; while (*colon) { while (*colon && (*colon != separator)) colon++; // cout << "lb " << lastbegin << " *colon" << *colon << endl; if (*colon) { *colon = '\0'; RSString test(lastbegin); test += "/"; test += name; //cout << "checking " << test.value() << endl; if (fileExists(test.value())) { strcpy_s(returnbuffer,buflen, test.value()); delete[]path; //cout << " FOUND !! " << endl; return strlen(returnbuffer); } colon++; lastbegin = colon; } } delete[]path; unused(&buflen); return 0; } unsigned long P_GetPathToMyself(const char *name, char *returnbuffer, unsigned long buflen) { #if defined(_WIN32) return GetModuleFileName(GetModuleHandle(name), returnbuffer, buflen); #elif defined (__OS2__) PTIB pptib; PPIB pppib; APIRET rc; if ((rc = DosGetInfoBlocks(&pptib, &pppib)) == 0) if ((rc = DosQueryModuleName(pppib->pib_hmte, buflen, returnbuffer)) == 0) return strlen(returnbuffer); else return 0; else return 0; #else if ( (*name == '/') || (*name == '.') ) { // starts with / or . strcpy(returnbuffer, name); return strlen(returnbuffer); } else { return searchinpath(getenv("PATH"), name, returnbuffer, buflen); } return 0; // not found #endif } void errorMessage(const char *errortext) { #if 0 // defined(_WIN32) MessageBox(NIL, errortext, "pstoedit", MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL); #else cerr << errortext << endl; #endif } DLLEXPORT RSString getOutputFileNameFromPageNumber(const char * const outputFileTemplate, const RSString & pagenumberformatOption, unsigned int pagenumber) { const char PAGENUMBER_String[] = "%PAGENUMBER%"; const char * pagestringptr_1 = strstr(outputFileTemplate,PAGENUMBER_String); const char * pagestringptr_2 = strstr(outputFileTemplate,"%d"); if ((pagestringptr_1 == NIL) && (pagestringptr_2 == NIL)) { return RSString(outputFileTemplate); } else { const size_t size = strlen(outputFileTemplate) + 30; char * newname = new char[ size ]; RSString formatting("%"); formatting += pagenumberformatOption; formatting += RSString("d"); // in simplest case it is %d // cout << "formatting " << formatting << endl; char pagenumberstring[30] ; sprintf_s(TARGETWITHLEN(pagenumberstring,sizeof(pagenumberstring)),formatting.value(),pagenumber); // cout << "pagenumberstring : " << pagenumberstring << endl; if (pagestringptr_1) // preference to %PAGENUMBER% { strncpy_s(newname,size,outputFileTemplate,pagestringptr_1-outputFileTemplate); // copy up to %PAGENUMBER% // now copy page number strcat_s(newname,size,pagenumberstring); // now copy trailer strcat_s(newname,size,pagestringptr_1+strlen(PAGENUMBER_String)); } else { strncpy_s(newname,size,outputFileTemplate,pagestringptr_2-outputFileTemplate); // copy up to %PAGENUMBER% // now copy page number strcat_s(newname,size,pagenumberstring); // now copy trailer strcat_s(newname,size,pagestringptr_2+strlen("%d")); } //cout << "newname " << newname << endl; const RSString result (newname); delete [] newname; return result; } } // a very very simple resizing string RSString::RSString(const char *arg) : content(0), allocatedLength(0), stringlength(0) { if (arg) { this->copy(arg,strlen(arg)); } // cerr << "{ constructed" << (void*) this << endl; } RSString::RSString(const char arg) : content(0), allocatedLength(0), stringlength(0) { char tmp[2]; tmp[0] = arg; tmp[1] = '\0'; this->copy(tmp,1); } RSString::RSString(const char * arg , const size_t len) :content(0), allocatedLength(0), stringlength(len) { if (arg) { this->copy(arg,stringlength); } } RSString::RSString(const RSString & s):content(0), allocatedLength(0), stringlength(0) { assert(this != &s); this->copy(s.value(),s.stringlength); } char *RSString::newContent(size_t size) { return new char[size]; } void RSString::clearContent() { delete[]content; content = 0; stringlength = 0; } RSString::~RSString() { // cerr << (void*) this << "deleted }" << endl; clearContent(); //lint !e1506 // call to virtual function in dtor allocatedLength = 0; } bool RSString::contains(const RSString & s) const { return strstr(value(),s.value()) != 0; } RSString & RSString::operator += (const char* rs) { assert(rs != 0); assert(content != 0); const size_t rslength = strlen(rs); const size_t newlen = stringlength + rslength + 1; char *newstring = newContent(newlen); //cout << ":" << content << ":" << stringlength << endl; //cout << ":" << rs.content << ":" << rs.stringlength << endl; for (unsigned int i = 0 ; i < stringlength; i++) { newstring[i] = content[i]; } // strncpy(newstring, content, stringlength); for (unsigned int j = 0 ; j < rslength ; j++) { newstring[stringlength+j] = rs[j]; } // strncat(newstring, rs.content, rs.stringlength); newstring[newlen-1] = '\0'; clearContent(); content = newstring; allocatedLength = newlen; stringlength= newlen-1; return *this; } RSString & RSString::operator += (const RSString & rs) { return (*this) += rs.content; } void RSString::copy(const char *src) { copy(src,strlen(src)); } // const char * value() const { return content; } void RSString::copy(const char *src, const size_t len ) { // cerr << "copy " << src << " to " << (void *) this << endl; if (src == 0) { // nothing to copy - just clear clearContent(); } else if (content && ((len + 1) <= allocatedLength)) { // we have enough space for (unsigned int i = 0 ; i < len+1; i++) { content[i] = src[i]; } //::strncpy(content, src, len+1); } else { // resize // cerr << "content before delete is " << (void *) content << endl; clearContent(); allocatedLength = len + 1; content = newContent(allocatedLength); // cerr << "content after new is " << (void *) content << endl; for (unsigned int i = 0 ; i < len+1; i++) { content[i] = src[i]; } //::strncpy(content, src, len+1); } stringlength = len; } bool fileExists(const char *filename) { #ifdef HAVESTL std::ifstream test(filename); return test.is_open(); #else #if defined (__GNUG__) && (__GNUC__>=3) ifstream test(filename, ios::in ); //lint !e655 #else ifstream test(filename, ios::in | ios::nocreate); //lint !e655 // MSVC needs ios::nocreate if used for testing whether file exists // also others except the g++ > 3.0 accept this #endif return (test ? true : false); #endif } //FontMapper::~FontMapper() { // cerr << "destroying FontMapper" << endl; //} static void skipws(char *&lineptr) { while ( (*lineptr != '\0') && ((*lineptr == ' ') || (*lineptr == '\t'))) lineptr++; return; } static char *readword(char *&lineptr) { char *result = 0; if (*lineptr == '"') { result = strtok(lineptr, "\""); } else { result = strtok(lineptr, "\t "); } if (result) { lineptr = result + strlen(result) + 1; } return result; } void FontMapper::readMappingTable(ostream & errstream, const char *filename) { if (!fileExists(filename)) { errstream << "Could not open font map file " << filename << endl; return; } ifstream inFile(filename); const int linesize = 255; char line[linesize]; char save[linesize]; unsigned int linenr = 0; while (!inFile.getline(line, linesize).eof()) { linenr++; strcpy_s(save,linesize, line); #ifdef HAVESTL // Notes regarding ANSI C++ version (from KB) // istream::get( char* pch, int nCount, char delim ) is different in three ways: // When nothing is read, failbit is set. // An eos is always stored after characters extracted (this happens regardless of the outcome). // A value of -1 for nCount is an error. // If the line contains just a \n then the failbit // is set in the ANSI version if (inFile.gcount() == 0) { inFile.clear(); continue; } #endif if (line[0] == '%') continue; char *lineptr = line; //skip initial spaces skipws(lineptr); // unsigned int linelength = strlen(line); if ((*lineptr) == '\0' ) { // empty line - ignore // errstream << "empty line in fontmap - ignored " << endl; continue; } char *original = readword(lineptr); skipws(lineptr); char *replacement = readword(lineptr); if (original && replacement) { // errstream << "\"" << original << "\" \"" << replacement <<"\""<< endl; if (replacement[0] == '/') { // Map to an existing entry. const RSString * prevEntry = getValue(replacement+1); if (prevEntry == NULL) errstream << "undefined font " << replacement+1 << " found in line (" << linenr << ") of fontmap: " << save << endl; else insert(original, *prevEntry); } else insert(original, replacement); } else { errstream << "unexpected line (" << linenr << ") found in fontmap: " << save << endl; } } } const char *FontMapper::mapFont(const RSString & fontname) { #if 0 FontMapping *curEntry = firstEntry; // cerr << "Trying to remap font" << fontname << endl; while (curEntry != 0) { // cerr << "comparing with" << curEntry->original << endl; if (curEntry->original == RSString(fontname)) { // cerr << "mapped to " << curEntry->replacement.value() << endl; return curEntry->replacement.value(); } curEntry = curEntry->nextEntry; } return 0; #endif const RSString *r = getValue(fontname); if (r) { return r->value(); } else { for (unsigned int i=0; ivalue(); else return 0; } } return 0; } } unsigned int Argv::parseFromString(const char * const argstring) { unsigned int nrOfNewArgs = 0; const char * cp = argstring; while (cp && *cp) { // for all args while (cp && *cp && (*cp == ' ')) cp++; // skip leading space RSString result(""); if (*cp == '"') { // handle string arg - read everything until closing " cp++; // skip leading " while (cp && *cp && (*cp != '"')) { result += *cp; cp++; } if (*cp) cp++; // skip trailing " } else { while (cp && *cp && (*cp != ' ')) { result += *cp; cp++; } } addarg(result); nrOfNewArgs++; } return nrOfNewArgs; } pstoedit-3.62/src/miscutil.h0000644000175500010010000002351012137224257013011 00000000000000#ifndef miscutil_h #define miscutil_h /* miscutil.h : This file is part of pstoedit header declaring misc utility functions Copyright (C) 1998 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef cppcomp_h #include "cppcomp.h" #endif #include I_iostream #include I_ostream #include I_istream #include I_fstream #include I_string_h //lint -efile(451,math.h) #include USESTD #ifndef assert #include #endif // used to eliminate compiler warnings about unused parameters inline void unused(const void * const) { } //lint -esym(522,unused) #if defined(_WIN32) || defined(__OS2__) const char directoryDelimiter = '\\'; #else const char directoryDelimiter = '/'; #endif // NOTE: The following two dup functions are made inline to solve the problem // of allocation and deallocation in different .dlls. // a strdup which uses new instead of malloc inline char * cppstrndup(const char * const src, const size_t length, const size_t addon = 0 ) { const size_t lp1 = length+1; char * const ret = new char[lp1 + addon]; for (unsigned int i = 0 ; i < lp1; i++) { ret[i] = src[i]; } return ret; } inline char *cppstrdup(const char * const src, const size_t addon = 0) { return cppstrndup(src,strlen(src),addon); } // DLLEXPORT char * cppstrdup(const char * src, unsigned int addon = 0); // DLLEXPORT char * cppstrndup(const char * src, unsigned int length, unsigned int addon = 0); DLLEXPORT unsigned short hextoint(const char hexchar) ; // A temporary file, that is automatically removed after usage class TempFile { public: DLLEXPORT TempFile() ; DLLEXPORT ~TempFile() ; DLLEXPORT ofstream & asOutput(); DLLEXPORT ifstream & asInput(); private: void close() ; char * tempFileName; ofstream outFileStream; ifstream inFileStream; NOCOPYANDASSIGN(TempFile) }; #ifdef HAVEAUTOPTR #include #else template class auto_ptr { public: // something that can be attached to a normal pointer // but which deletes the object when the Deleter goes // out of scope. Sort of very simple std::auto_ptr // auto_ptr(T* ptr,bool isArray = false) : m_ptr(ptr), m_isArray(isArray) {} ~auto_ptr() { if (m_isArray) delete [] m_ptr; else delete m_ptr; m_ptr=0;} T* operator->() const { return m_ptr; } private: T* m_ptr; //lint !e1725 bool m_isArray; NOCOPYANDASSIGN(auto_ptr) // auto_ptr(const auto_ptr &); // no copy ctor please // const auto_ptr& operator =(const auto_ptr &); // no assignment please }; #endif // a very very simple resizing string // since STL is not yet available on all systems / compilers class DLLEXPORT RSString { public: RSString(const char * arg = 0); RSString(const char arg ); RSString(const char * arg , const size_t len); RSString(const RSString & s); virtual ~RSString(); const char * value() const { return content; } size_t length() const { return stringlength; } void copy(const char *src,const size_t len) ; void copy(const char *src); bool contains(const RSString & s) const; const RSString & operator = (const RSString & rs) { if (&rs != this) { copy(rs.value(),rs.length()); } return *this; } const RSString & operator = (const char * rs) { copy(rs,strlen(rs)); return *this; } RSString& operator+= (const RSString &rs); RSString& operator+= (const char * rs); friend bool operator==(const RSString & ls,const RSString & rs); friend bool operator!=(const RSString & ls,const RSString & rs); // bool operator<(const RSString & rs) const // { return strncmp(content,rs.content) < 0; } char operator[](const size_t i) const { return content[i]; } friend ostream & operator<<(ostream & out,const RSString &outstring) { if (outstring.content) out << outstring.content; return out; } private: // // we need to make the memory allocation/deallocation // virtual in order to force that these are executed // always in the same context (either main EXE or the // loaded DLL) // Since the plugins are not and MFC extension DLL memory // allocation and deallocation cannot be mixed across the EXE // and the DLL. It must be done in a symmetric way - if the memory // is allocated by the DLL, it must be destroyed there as well. // virtual void clearContent(); // tell Flexelint: clearContent does cleanup //lint -sem(RSString::clearContent,cleanup) virtual char * newContent(size_t size); char * content; size_t allocatedLength; size_t stringlength; // needed for storing binary strings including \0 }; inline RSString operator+ (const RSString & ls,const RSString &rs) { RSString result(ls); result += rs; return result; } inline bool operator==(const RSString & ls,const RSString & rs) { return ( (rs.stringlength == ls.stringlength ) && (strncmp(ls.content,rs.content,ls.stringlength) == 0) ); } inline bool operator!=(const RSString & ls,const RSString & rs) { return !(ls==rs); } class Argv { enum { maxargs=1000 }; public: unsigned int argc; // #define USE_RSSTRING 1 #ifdef USE_RSSTRING RSString argv[maxargs]; #else char * argv[maxargs]; #endif Argv() : argc(0) { for (unsigned int i = 0; i< (unsigned) maxargs; i++) { argv[i] = 0; } } ~Argv() { clear(); } void addarg(const char * const arg) { assert(argc #else /* BUGGYGPP */ template #endif /* BUGGYGPP */ class DLLEXPORT Mapper { public: Mapper() : firstEntry(0) {}; virtual ~Mapper() { while (firstEntry != 0) { T * nextEntry = firstEntry->nextEntry; delete firstEntry; firstEntry=nextEntry; } } public: #ifndef BUGGYGPP // define BUGGYGPP if your compiler complains about syntax error here. // see above void insert(const typename T::K_Type & key, const typename T::V_Type& value) { #else /* BUGGYGPP */ void insert(const K_Type & key, const V_Type & value) { #endif /* BUGGYGPP */ firstEntry = new T(key,value,firstEntry); } #ifndef BUGGYGPP const typename T::V_Type* getValue(const typename T::K_Type & key) { #else /* BUGGYGPP */ const V_Type* getValue(const K_Type & key) { #endif /* BUGGYGPP */ T * curEntry = firstEntry; while (curEntry != 0) { if (curEntry->key() == key ) { return &curEntry->value(); } curEntry=curEntry->nextEntry; } return 0; } T * firstEntry; private: #ifndef BUGGYGPP NOCOPYANDASSIGN(Mapper) #else /* BUGGYGPP */ #define COMMA , NOCOPYANDASSIGN(Mapper) #undef COMMA #endif /* BUGGYGPP */ }; //lint -esym(1712,KeyValuePair) // no default ctor template class DLLEXPORT KeyValuePair { public: typedef K K_Type; typedef V V_Type; KeyValuePair(const K_Type & k,const V_Type & v, KeyValuePair * nextE = 0): key_(k), value_(v), nextEntry(nextE) {} const K_Type & key() const { return key_;} const V_Type & value() const { return value_;} private: K_Type key_; V_Type value_; public: KeyValuePair * nextEntry; private: #define COMMA , NOCOPYANDASSIGN(KeyValuePair) #undef COMMA }; typedef KeyValuePair FontMapping ; #if defined (_MSC_VER) #pragma warning(disable: 4275) // non dll-interface class 'Mapper >' used as base for dll-interface class 'FontMapper' // miscutil.h(259) : see declaration of 'FontMapper' #endif //lint -esym(1790,Mapper*) #ifndef BUGGYGPP class DLLEXPORT FontMapper: public Mapper #else /* BUGGYGPP */ class DLLEXPORT FontMapper: public Mapper #endif /* BUGGYGPP */ { public: void readMappingTable(ostream & errstream,const char * filename); const char * mapFont(const RSString & fontname); }; #if defined (_MSC_VER) #pragma warning(default: 4275) #endif DLLEXPORT RSString getRegistryValue(ostream& errstream, const char * typekey, const char * key); DLLEXPORT unsigned long P_GetPathToMyself(const char *name, char * returnbuffer, unsigned long buflen); DLLEXPORT size_t searchinpath(const char* EnvPath,const char* name, char *returnbuffer,unsigned long buflen); DLLEXPORT void errorMessage(const char * text); // display an error message (cerr or msgbox) DLLEXPORT void copy_file(istream& infile,ostream& outfile) ; DLLEXPORT RSString getOutputFileNameFromPageNumber(const char * const outputFileTemplate, const RSString & pagenumberformatOption, unsigned int pagenumber); inline float pythagoras(const float x, const float y) { return sqrt( x*x + y*y); } #endif pstoedit-3.62/src/ordlist.h0000644000175500010010000001330712137224257012643 00000000000000#ifndef __ordlist_h #define __ordlist_h /* ordlist.h : This file is part of pstoedit simple template for a sorted list. I didn't want to use STL because not all compilers support it yet. Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef cppcomp_h #include "cppcomp.h" #endif #ifndef assert #include #endif #include I_stdlib #include I_iostream //lint -sem(ordlist*::insert,custodial(1)) // // Telem is the type under which an element is stored, so either T or T & // template class ordlist { private: class ordlistElement { public: ordlistElement(const T& e,ordlistElement * n): next(n),elem(e) {} ordlistElement* next; Telem elem; }; public: ordlist(): first(0), l_size(0), lastaccessptr((new ordlistElement *)), lastaccessindexptr((new size_t)) {} // initialize the Refs with objects on the heap, because we need // to modify these from within const functions // (these act as a sort of cache, but they don't influence constness) ~ordlist() { clear(); delete (lastaccessptr); lastaccessptr=0; delete (lastaccessindexptr);lastaccessindexptr=0; first = 0; } void clear() { ordlistElement * cur = first; while(cur != 0) { ordlistElement * next = cur-> next; delete cur; cur = next; } l_size = 0; first = 0; (*lastaccessptr) = 0; (*lastaccessindexptr) = 0; } void insert(const T& elem) { if (first == 0) { first = new ordlistElement(elem,0); } else { if (COMPARATOR::compare(first->elem , elem) ) { ordlistElement * newelem = new ordlistElement(elem,first); first = newelem; } else { ordlistElement * next = first->next; ordlistElement * current = first; while (current != 0) { if ( (next == 0) || COMPARATOR::compare(next->elem , elem) ) { ordlistElement * newelem = new ordlistElement(elem,next); current->next = newelem; break; } current = next; next = next->next; } } } l_size++; *lastaccessptr = first; *lastaccessindexptr = 0; } const T &operator[](size_t i) const { ordlistElement * start = 0; if (i < size() ) { size_t ind = 0; if (i == (*lastaccessindexptr) ) { // cerr << "returning from last " << endl; return (*lastaccessptr)->elem; } else if (i < (*lastaccessindexptr) ) { // cerr << "returning via search from start " << endl; start = first; ind = 0; } else { // cerr << "returning via forward search" << endl; start = (*lastaccessptr); ind = (*lastaccessindexptr); } assert(start); while(ind < i) { start = start->next; ind++;} // we need to cast away const for caching (*lastaccessptr) = start; (*lastaccessindexptr) = i; // ((ordlist *)this)->lastaccess = start; // ((ordlist *)this)->lastaccessindex = i; return start->elem; } else { cerr << "illegal index " << i << " max : " << size() << endl; assert(i < size()); } return start->elem; // never reached, just to keep compiler quiet } size_t size() const { return l_size;} #ifdef TEST void dump() const { int i = 0; ordlistElement * cur = first; while(cur != 0) { cout << '[' << i << "] :" << cur->elem << endl; i++; cur = cur->next; } } #endif private: ordlistElement * first; size_t l_size ; // helpers for faster sequential access via operator[] // these remember the position of the last access ordlistElement **lastaccessptr; size_t * lastaccessindexptr ; // inhibitors: (may not be called) ordlist(const ordlist &); const ordlist & operator=(const ordlist &); }; #ifdef TEST template class GreaterThan { public: static bool compare(const T & o1, const T & o2) { return o1 > o2 ;} }; template class LessThan { public: static bool compare(const T & o1, const T & o2) { return o1 < o2 ;} }; int main() { { ordlist > oli; oli.insert(5); oli.insert(7); oli.insert(1); oli.insert(2); oli.insert(9); oli.insert(10); oli.insert(41); oli.insert(0); cout << oli.size() << endl; cout << oli[0] << endl; cout << " begin of Dump " << endl; oli.dump(); cout << " end of Dump " << endl; for (unsigned int i = 0; i < oli.size(); i++ ) { cout << oli[i] << " "<< endl; } cout << oli[3] << endl; } { ordlist > oli; cout << " begin of Dump " << endl; oli.insert(1); oli.dump(); cout << " end of Dump " << endl; for (unsigned int i = 0; i < oli.size(); i++ ) { cout << oli[i] << " "<< endl; } } { ordlist > oli; cout << " begin of Dump " << endl; oli.dump(); cout << " end of Dump " << endl; for (unsigned int i = 0; i < oli.size(); i++ ) { assert(oli.size() == 0); } // test for assertion // cout << oli[3] << endl; } #if 0 // shouldn't compile due to inhibitors { ordlist > ol1; ordlist > ol2; ol1 = ol2; ordlist > ol3 = ol1; } #endif return 0; } #endif // include guard #endif pstoedit-3.62/src/papersizes.h0000644000175500010010000001771612137224257013360 00000000000000 enum paperUnits { p_mm, p_in }; struct PaperInfo { paperUnits preferredunit; double mmw; double mmh; double inw; double inh; const char * name; }; const double mm_per_inch = 2.54; const PaperInfo paperformats[] = { //{ p_mm, Metric Width, Metric Height, Inches Width, Inches Height, "Paper Type"}, { p_in, (double)8.5* mm_per_inch, (double)11* mm_per_inch, 8.5, 11, "A"}, { p_in, (double)11* mm_per_inch, (double)17* mm_per_inch, 11, 17, "B"}, { p_in, (double)17* mm_per_inch, (double)22* mm_per_inch, 17, 22, "C"}, { p_in, (double)22* mm_per_inch, (double)34* mm_per_inch, 22, 34, "D"}, { p_in, (double)34* mm_per_inch, (double)44* mm_per_inch, 34, 44, "E"}, { p_mm, 104.7, 241.3, 4.125, 9.5, "Com 10"}, { p_mm, 190.5, 266.7, 7.25, 10.5, "Executive"}, { p_in, (double)14.875* mm_per_inch, (double)11* mm_per_inch, 14.875, 11, "Fanfold"}, { p_mm, 215.9, 330.2, 8.5, 13, "Folio"}, { p_in, (double)8.5* mm_per_inch, (double)12* mm_per_inch, 8.5, 12, "German standard fanfold"}, { p_in, (double)17* mm_per_inch, (double)11* mm_per_inch, 17, 11, "Ledger"}, { p_mm, 215.9, 355.6, 8.5, 14, "Legal"}, { p_in, (double)9.5* mm_per_inch, (double)15* mm_per_inch, 9.5, 15, "Legal extra"}, { p_mm, 215.9, 279.4, 8.5, 11, "Letter"}, { p_in, (double)9.5* mm_per_inch, (double)12* mm_per_inch, 9.5, 12, "Letter extra"}, { p_in, (double)8.5* mm_per_inch, (double)12.66* mm_per_inch, 8.5, 12.66, "Letter plus"}, { p_mm, 98.4, 190.5, 3.875, 7.5, "Monarch"}, { p_mm, 215, 275, (double)215/ mm_per_inch, (double)275/ mm_per_inch, "Quarto"}, { p_in, (double)5.5* mm_per_inch, (double)8.5* mm_per_inch, 5.5, 8.5, "Statement"}, { p_in, (double)11* mm_per_inch, (double)17* mm_per_inch, 11, 17, "Tabloid"}, { p_in, (double)11.66* mm_per_inch, (double)18* mm_per_inch, 11.66, 18, "Tabloid extra"}, { p_mm, 841, 1189, (double)841/ mm_per_inch, (double)1189/ mm_per_inch, "A0"}, { p_mm, 594, 841, (double)594/ mm_per_inch, (double)841/ mm_per_inch, "A1"}, { p_mm, 420, 594, (double)420/ mm_per_inch, (double)594/ mm_per_inch, "A2"}, { p_mm, 297, 420, (double)297/ mm_per_inch, (double)420/ mm_per_inch, "A3"}, { p_mm, 322, 445, (double)322/ mm_per_inch, (double)445/ mm_per_inch, "A3 extra"}, { p_mm, 210, 297, (double)210/ mm_per_inch, (double)297/ mm_per_inch, "A4"}, { p_mm, 236, 322, (double)236/ mm_per_inch, (double)322/ mm_per_inch, "A4 extra"}, { p_mm, 210, 330, (double)210/ mm_per_inch, (double)330/ mm_per_inch, "A4 plus"}, { p_mm, 210, 297, (double)210/ mm_per_inch, (double)297/ mm_per_inch, "A4 small"}, { p_mm, 148, 210, (double)148/ mm_per_inch, (double)210/ mm_per_inch, "A5"}, { p_mm, 174, 235, (double)174/ mm_per_inch, (double)235/ mm_per_inch, "A5 extra"}, { p_mm, 105, 148, (double)105/ mm_per_inch, (double)148/ mm_per_inch, "A6"}, { p_mm, 74, 105, (double)74/ mm_per_inch, (double)105/ mm_per_inch, "A7"}, { p_mm, 52, 74, (double)52/ mm_per_inch, (double)74/ mm_per_inch, "A8"}, { p_mm, 37, 52, (double)37/ mm_per_inch, (double)52/ mm_per_inch, "A9"}, { p_mm, 26, 37, (double)26/ mm_per_inch, (double)37/ mm_per_inch, "A10"}, { p_mm, 18, 26, (double)18/ mm_per_inch, (double)26/ mm_per_inch, "A11"}, { p_mm, 13, 18, (double)13/ mm_per_inch, (double)18/ mm_per_inch, "A12"}, { p_mm, 99, 210, (double)99/ mm_per_inch, (double)210/ mm_per_inch, "1/3 A4"}, { p_mm, 74, 210, (double)74/ mm_per_inch, (double)210/ mm_per_inch, "1/4 A4"}, { p_mm, 13, 74, (double)13/ mm_per_inch, (double)74/ mm_per_inch, "1/8 A4"}, { p_mm, 1000, 1414, (double)1000/ mm_per_inch, (double)1414/ mm_per_inch, "B0"}, { p_mm, 707, 1000, (double)707/ mm_per_inch, (double)1000/ mm_per_inch, "B1"}, { p_mm, 500, 707, (double)500/ mm_per_inch, (double)707/ mm_per_inch, "B2"}, { p_mm, 353, 500, (double)353/ mm_per_inch, (double)500/ mm_per_inch, "B3"}, { p_mm, 250, 353, (double)250/ mm_per_inch, (double)353/ mm_per_inch, "B4"}, { p_mm, 176, 250, (double)176/ mm_per_inch, (double)250/ mm_per_inch, "B5"}, { p_mm, 201, 276, (double)201/ mm_per_inch, (double)276/ mm_per_inch, "B5 extra"}, { p_mm, 125, 176, (double)125/ mm_per_inch, (double)176/ mm_per_inch, "B6"}, { p_mm, 88, 125, (double)88/ mm_per_inch, (double)125/ mm_per_inch, "B7"}, { p_mm, 62, 88, (double)62/ mm_per_inch, (double)88/ mm_per_inch, "B8"}, { p_mm, 44, 62, (double)44/ mm_per_inch, (double)62/ mm_per_inch, "B9"}, { p_mm, 31, 44, (double)31/ mm_per_inch, (double)44/ mm_per_inch, "B10"}, { p_mm, 162, 229, (double)162/ mm_per_inch, (double)229/ mm_per_inch, "C5"}, { p_mm, 200, 210, (double)200/ mm_per_inch, (double)210/ mm_per_inch, "1/6 Deutsche Industrie Norm"}, { p_mm, 74, 105, (double)74/ mm_per_inch, (double)105/ mm_per_inch, "A7 envelope"}, { p_mm, 74, 148, (double)74/ mm_per_inch, (double)148/ mm_per_inch, "A7/A6 envelope"}, { p_mm, 250, 353, (double)250/ mm_per_inch, (double)353/ mm_per_inch, "B4 envelope"}, { p_mm, 176, 250, (double)176/ mm_per_inch, (double)250/ mm_per_inch, "B5 envelope"}, { p_mm, 125, 176, (double)125/ mm_per_inch, (double)176/ mm_per_inch, "B6 envelope"}, { p_mm, 125, 229, (double)125/ mm_per_inch, (double)229/ mm_per_inch, "B6/C4 envelope"}, { p_mm, 136, 353, (double)136/ mm_per_inch, (double)353/ mm_per_inch, "1/2 B4 envelope"}, { p_mm, 484, 324, (double)484/ mm_per_inch, (double)324/ mm_per_inch, "C3 envelope"}, { p_mm, 229, 324, (double)229/ mm_per_inch, (double)324/ mm_per_inch, "C4 envelope"}, { p_mm, 162, 229, (double)162/ mm_per_inch, (double)229/ mm_per_inch, "C5 envelope"}, { p_mm, 114, 162, (double)114/ mm_per_inch, (double)162/ mm_per_inch, "C6 envelope"}, { p_mm, 114, 229, (double)114/ mm_per_inch, (double)229/ mm_per_inch, "C65 envelope"}, { p_mm, 81, 114, (double)81/ mm_per_inch, (double)114/ mm_per_inch, "C7 envelope"}, { p_mm, 81, 162, (double)81/ mm_per_inch, (double)162/ mm_per_inch, "C7/C6 envelope"}, { p_mm, 125, 324, (double)125/ mm_per_inch, (double)324/ mm_per_inch, "1/2 C4 envelope"}, { p_mm, 110, 220, (double)110/ mm_per_inch, (double)220/ mm_per_inch, "DL envelope"}, { p_mm, 110, 220, (double)110/ mm_per_inch, (double)220/ mm_per_inch, "Deutsche Industrie Norm Lang envelope"}, { p_mm, 310, 220, (double)310/ mm_per_inch, (double)220/ mm_per_inch, "E4 envelope"}, { p_mm, 220, 115, (double)220/ mm_per_inch, (double)115/ mm_per_inch, "E5 envelope"}, { p_mm, 110, 156, (double)110/ mm_per_inch, (double)156/ mm_per_inch, "E6 envelope"}, { p_mm, 110, 220, (double)110/ mm_per_inch, (double)220/ mm_per_inch, "E65 envelope"}, { p_mm, 155, 400, (double)155/ mm_per_inch, (double)400/ mm_per_inch, "1/2 E4 envelope"}, { p_mm, 104, 160, (double)104/ mm_per_inch, (double)160/ mm_per_inch, "Hungarian Air Mail envelope"}, { p_mm, 220, 220, (double)220/ mm_per_inch, (double)220/ mm_per_inch, "Invitation envelope"}, { p_mm, 155, 220, (double)155/ mm_per_inch, (double)220/ mm_per_inch, "M5 envelope"}, { p_mm, 110, 155, (double)110/ mm_per_inch, (double)155/ mm_per_inch, "M6 envelope"}, { p_mm, 110, 220, (double)110/ mm_per_inch, (double)220/ mm_per_inch, "M65 envelope"}, { p_in, (double)3.875* mm_per_inch, (double)7.5* mm_per_inch, 3.875, 7.5, "Monarch envelope"}, { p_mm, 187, 122, (double)187/ mm_per_inch, (double)122/ mm_per_inch, "Russian Greetings 1 envelope"}, { p_in, (double)3.625* mm_per_inch, (double)6.5* mm_per_inch, 3.625, 6.5, "Size 6 3/4 envelope"}, { p_in, (double)3.575* mm_per_inch, (double)8.875* mm_per_inch, 3.575, 8.875, "Size 9 envelope"}, { p_in, (double)4.125* mm_per_inch, (double)9.5* mm_per_inch, 4.125, 9.5, "Size 10 envelope"}, { p_in, (double)4.5* mm_per_inch, (double)10.375* mm_per_inch, 4.5, 10.375, "Size 11 envelope"}, { p_in, (double)4.75* mm_per_inch, (double)11* mm_per_inch, 4.75, 11, "Size 12 envelope"}, { p_in, (double)5* mm_per_inch, (double)11.5* mm_per_inch, 5, 11.5, "Size 14 envelope"}, { p_in, 0, 0, 0, 0, 0 } }; static const PaperInfo* getPaperInfo(const char * pname) { const PaperInfo * pi = &paperformats[0]; while (pi && pi->name) { #ifdef _MSC_VER if (_stricmp(pi->name,pname) == 0) return pi; #else if (strcasecmp(pi->name,pname) == 0) return pi; #endif pi++; } cerr << "could not find paper info for page size " << pname << endl; return 0; } pstoedit-3.62/src/poptions.cpp0000644000175500010010000001721312137224254013366 00000000000000/* poptions.cpp : This file is part of pstoedit program option handling Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "poptions.h" #include I_string_h #include I_stdlib #include I_strstream #include USESTD #define UNUSEDARG(p) bool IntValueExtractor::getvalue(const char *optname, const char *instring, unsigned int ¤targ, int &result) { if (instring) { result = atoi(instring); currentarg++; return true; } else { cout << "missing integer argument for " << optname << " option:" << endl; return false; } } const char *IntValueExtractor::gettypename() { return "integer"; } unsigned int IntValueExtractor::gettypeID() { return int_ty; } bool DoubleValueExtractor::getvalue(const char *optname, const char *instring, unsigned int ¤targ, double &result) { if (instring) { result = atof(instring); currentarg++; return true; } else { cout << "missing double argument for " << optname << " option:" << endl; return false; } } const char *DoubleValueExtractor::gettypename() { return "double"; } unsigned int DoubleValueExtractor::gettypeID() { return double_ty; } bool CharacterValueExtractor::getvalue(const char *optname, const char *instring, unsigned int ¤targ, char &result) { if (instring) { result = instring[0]; currentarg++; return true; } else { cout << "missing character argument for " << optname << " option" << endl; return false; } } const char *CharacterValueExtractor::gettypename() { return "character"; } unsigned int CharacterValueExtractor::gettypeID() { return char_ty; } const char *BoolBaseExtractor::gettypename() { return "boolean"; } unsigned int BoolBaseExtractor::gettypeID() { return bool_ty; } bool BoolInvertingExtractor::getvalue(const char *UNUSEDARG(optname), const char *UNUSEDARG(instring), unsigned int &UNUSEDARG(currentarg), bool &result) { result = !result; // just invert return true; } bool BoolFalseExtractor::getvalue(const char *UNUSEDARG(optname), const char *UNUSEDARG(instring), unsigned int &UNUSEDARG(currentarg), bool &result) { result = false; return true; } bool BoolTrueExtractor::getvalue(const char *UNUSEDARG(optname), const char *UNUSEDARG(instring), unsigned int &UNUSEDARG(currentarg), bool &result) { result = true; return true; } void ProgramOptions::showvalues(ostream & outstr, bool withdescription) const { for (unsigned int i = 0; i < optcount; i++) { (void) outstr.width(20); outstr << alloptions[i]->flag << "\t : " << alloptions[i]->gettypename() << "\t : "; if (withdescription) outstr << alloptions[i]->description << "\t : "; (void) alloptions[i]->writevalue(outstr); outstr << endl; } } void OptionBase::toString(RSString & result) const { C_ostrstream tempstream; (void) writevalue(tempstream); tempstream << ends; #ifdef USE_NEWSTRSTREAM const string str = tempstream.str(); // no freeze / delete needed since ostringstream::str returns a string and not char* result = str.data(); #else result = tempstream.str(); tempstream.rdbuf()->freeze(0); #endif } unsigned int ProgramOptions::parseoptions(ostream & outstr, unsigned int argc, const char *const *argv) { unhandledCounter = 0; unsigned int i = 1; // argv[0] is not of interest //debug outstr << "parsing options: argc : " << argc << endl; while (i < argc) { bool found = false; for (unsigned int j = 0; j < optcount; j++) { const char *optid = alloptions[j]->flag; if (strcmp(optid, argv[i]) == 0) { //debug outstr << " found arg:" << i << " " << argv[i] << endl; const char *nextarg = (i < argc) ? argv[i + 1] : (const char *) 0; if (!alloptions[j]->copyvalue(argv[i], nextarg, i)) { outstr << "Error in option " << argv[i] << endl; } found = true; //debug outstr << " after found arg:" << i << " " << argv[i] << endl; break; } } if (!found) { if ((strlen(argv[i]) > 1) && (argv[i])[0] == '-') { outstr << "unknown option " << argv[i] << endl; } else { unhandledOptions[unhandledCounter] = argv[i]; ++unhandledCounter; } } i++; } return unhandledCounter; } static void TeXescapedOutput(ostream & outstr, const char *const st) { const char *s = st; while (s && *s) { switch (*s) { case '[': outstr << "\\Lbr"; break; case ']': outstr << "\\Rbr"; break; default: outstr << *s; break; } s++; } } void ProgramOptions::showhelp(ostream & outstr, bool forTeX, bool withdescription, int sheet) const { if (optcount && forTeX && withdescription) { outstr << "\\begin{description}" << endl; } const char *const terminator = withdescription ? "] " : " "; for (unsigned int i = 0; i < optcount; i++) { if (forTeX) { if ((!hideFromDoku(*(alloptions[i])) && (sheet == -1)) // -1 means : show all sheets (except the hidden ones) || (alloptions[i]->propsheet == sheet)) { if (withdescription) outstr << "\\item["; if (alloptions[i]->gettypeID() == bool_ty) { if (alloptions[i]->optional) outstr << "\\oOpt{"; else outstr << "\\Opt{"; TeXescapedOutput(outstr, alloptions[i]->flag); outstr << "}" << terminator << endl; } else { if (alloptions[i]->optional) outstr << "\\oOptArg{"; else outstr << "\\OptArg{"; TeXescapedOutput(outstr, alloptions[i]->flag); outstr << "}"; const char *aname = alloptions[i]->argname ? alloptions[i]->argname : "missing arg name"; outstr << "{~"; TeXescapedOutput(outstr, aname); outstr << "}" << terminator << endl; } if (withdescription) { const char *help = alloptions[i]->TeXhelp ? alloptions[i]->TeXhelp : alloptions[i]-> description; outstr << help << endl << endl; } #if 0 (void) outstr.width(20); outstr << alloptions[i]->flag << "\t : " << alloptions[i]-> gettypename() << "\t : " << alloptions[i]->description; if (alloptions[i]->optional) outstr << "]"; #endif if (withdescription) outstr << endl; } } else { if (alloptions[i]->optional) outstr << "["; (void) outstr.width(20); outstr << alloptions[i]->flag << "\t : " << alloptions[i]-> gettypename() << "\t : " << alloptions[i]->description; if (alloptions[i]->optional) outstr << "]"; outstr << endl; } } if (forTeX && withdescription) { if (optcount) { outstr << "\\end{description}" << endl; } else { // this happens only in the context of driver options outstr << "No driver specific options" << endl; } } } void ProgramOptions::dumpunhandled(ostream & outstr) const { if (unhandledCounter) { outstr << "unhandled parameters " << endl; for (unsigned int i = 0; i < unhandledCounter; i++) { outstr << '\t' << unhandledOptions[i] << endl; } } else { outstr << "no unhandled parameters" << endl; } } void ProgramOptions::add(OptionBase * op, const char *const membername_p) { alloptions[optcount] = op; op->membername = membername_p; alloptions[++optcount] = 0; } pstoedit-3.62/src/poptions.h0000644000175500010010000002007212137224260013025 00000000000000#ifndef _POPTIONS_H #define _POPTIONS_H /* poptions.h : This file is part of pstoedit program option handling Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef cppcomp_h #include "cppcomp.h" #endif #include I_iostream #include I_ostream #include I_istream USESTD enum baseTypeIDs { int_ty, double_ty, bool_ty, char_ty }; class DLLEXPORT IntValueExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, int &result); static const char *gettypename() ; static unsigned int gettypeID(); }; class DLLEXPORT DoubleValueExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, double &result) ; static const char *gettypename() ; static unsigned int gettypeID(); }; class DLLEXPORT CharacterValueExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, char &result) ; static const char *gettypename() ; static unsigned int gettypeID(); }; class DLLEXPORT BoolBaseExtractor { public: static const char *gettypename(); static unsigned int gettypeID(); }; //lint -esym(1790,BoolBaseExtractor) class DLLEXPORT BoolInvertingExtractor : public BoolBaseExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, bool &result) ; }; class DLLEXPORT BoolFalseExtractor : public BoolBaseExtractor{ public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, bool &result) ; }; class DLLEXPORT BoolTrueExtractor : public BoolBaseExtractor{ public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, bool &result); }; class DLLEXPORT OptionBase { public: OptionBase(bool optional_p,const char *flag_p, const char *argname_p, int propsheet_p, const char *description_p, const char * TeXhelp_p): flag(flag_p), argname(argname_p), propsheet(propsheet_p), description(description_p), TeXhelp(TeXhelp_p), optional(optional_p), membername(""){ // membername is set during "add" because it was simpler to grab the membername during the add }; virtual ~OptionBase() { membername = 0; } virtual ostream & writevalue(ostream & out) const = 0; void toString(class RSString &) const; virtual bool copyvalue(const char *optname, const char *valuestring, unsigned int ¤targ) = 0; virtual bool copyvalue_simple(const char *valuestring) = 0; // virtual bool copyvalue_simple(bool boolvalue) = 0; virtual const char *gettypename() const = 0; virtual unsigned int gettypeID() const = 0; virtual void * GetAddrOfValue() = 0; // will return real type instead of void //lint -esym(1540,OptionBase::flag) // not freed //lint -esym(1540,OptionBase::description) // not freed const char * const flag; // -bf const char * const argname; // a meaningfull name of the argument (if not a boolean option) int propsheet; // the number of the propertysheet to place this option on const char * const description; // help text const char * const TeXhelp; bool optional; const char * membername; private: OptionBase(); // disabled OptionBase(const OptionBase&); // disabled const OptionBase& operator=(const OptionBase&); // disabled }; template class OptionT : public OptionBase { public: OptionT < ValueType, ExtractorType > (bool optional_p, const char *flag_p, const char *argname_p, int propsheet_p, const char *description_p, const char * TeXhelp_p, const ValueType & initialvalue) : OptionBase(optional_p,flag_p, argname_p, propsheet_p, description_p,TeXhelp_p), value(initialvalue) { }; OptionT < ValueType, ExtractorType > (bool optional_p, const char *flag_p, const char *argname_p, int propsheet_p, const char *description_p, const char * TeXhelp_p ) : OptionBase(optional_p,flag_p, argname_p, propsheet_p, description_p, TeXhelp_p) { //lint -esym(1401,*::value) // not initialized - we use the default ctor here }; virtual ostream & writevalue(ostream & out) const; virtual bool copyvalue(const char *optname, const char *valuestring, unsigned int ¤targ) { return ExtractorType::getvalue(optname, valuestring, currentarg, value); } bool copyvalue_simple(const char *valuestring) { unsigned int num = 0; return copyvalue("no name because of copyvalue_simple",valuestring,num); } #if 0 bool copyvalue_simple(bool boolvalue ) { // value = boolvalue; // unsigned int num = 0; // we cannot just use the "extractor" since that works like the option has given on the commandline // but copyvalue_simple is called for all options - but that does not mean that all options are // "put on the virtual commandline" - clear ? // return copyvalue("no name because of copyvalue_simple","",num); value = boolvalue; return true; // wogl FIXME } #endif virtual const char *gettypename() const { return ExtractorType::gettypename(); } virtual unsigned int gettypeID() const { return ExtractorType::gettypeID(); } //lint -save -esym(1539,OptionBase::optional) // not assigned a value //lint -e(1763) ValueType & operator()() { return value; } const ValueType & operator()() const { return value; } operator ValueType () const { return value; } /* const ValueType & */ void operator =(const ValueType & arg) { /* return */ value = arg; //lint -esym(1539,OptionBase::propsheet) // not assigned in op= //lint -esym(1539,OptionBase::membername) // not assigned in op= } // cannot return a reference, because char*::operator= doesn't //lint -restore bool operator !=(const ValueType & arg) const { return value != arg; } bool operator ==(const ValueType & arg) const { return value == arg; } bool operator !() const { return !value ; } virtual void * GetAddrOfValue() { return &value;} ValueType value; private: OptionT();// disabled OptionT(const OptionT&);// disabled const OptionT& operator=(const OptionT&); // disabled }; template ostream & OptionT::writevalue(ostream & out) const { out << value; return out; } class DLLEXPORT ProgramOptions { public: ProgramOptions(bool expectUnhandled_p = false) : expectUnhandled(expectUnhandled_p), unhandledCounter(0), optcount(0) { unhandledOptions[0]=0;alloptions[0]=0; }; virtual ~ProgramOptions() {} unsigned int parseoptions(ostream & outstr, unsigned int argc, const char * const*argv) ; // unsigned int sheet: -1 indicates "all" void showhelp(ostream & outstr, bool forTeX, bool withdescription, int sheet = -1) const ; void dumpunhandled(ostream & outstr) const ; void showvalues(ostream & outstr, bool withdescription = true) const ; const OptionBase * const * getOptionConstIterator() const { return &alloptions[0]; } OptionBase * const * getOptionIterator() const { return &alloptions[0]; } unsigned int numberOfOptions() const { return optcount; } virtual bool hideFromDoku(const OptionBase& /* opt */ ) const { return false; } // some options may be hidden, i.e. debug only options protected: void add(OptionBase * op, const char * const membername) ; public: bool expectUnhandled; // whether to expect unhandled arguments unsigned int unhandledCounter; const char *unhandledOptions[100]; private: unsigned int optcount; OptionBase *alloptions[100]; private: ProgramOptions(const ProgramOptions&); // disabled const ProgramOptions& operator =(const ProgramOptions&); // disabled }; #endif pstoedit-3.62/src/psfront.h0000644000175500010010000000542712137224260012654 00000000000000#ifndef __psfront_h #define __psfront_h /* psfront.h : This file is part of pstoedit contains the class responsible for reading the dumped PostScript format Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* // ============================================================================ // // = LIBRARY // pstoedit // // = FILENAME // psfront.h // // = RCSID // $Id$ */ #include "drvbase.h" class PSFrontEnd { public: PSFrontEnd(ostream & outfile_p, ostream & errstream, PsToEditOptions & globaloptions_p, const char * infilename_p = 0, const char * outfilename_p = 0, const DriverDescription * driverDesc = 0, const char * driveroptions_p = 0, const bool splitpages_p = false, drvbase * backend_p = 0); ~PSFrontEnd(); void run(bool merge); // do the conversion unsigned int readBBoxes(BBox * bboxes); private: void addNumber(float value); // add a number to the current path float pop(); // pops and returns last value on stack float popUnScaled(); // pops and returns last value on stack void pstack() const; // for debugging int yylex(); // read the input and call the backend specific // functions static void yylexcleanup(); // called from destructor private: ostream & outFile; ostream & errf; // the error stream const char * infilename; const char * outfilename; PsToEditOptions & globaloptions; const DriverDescription * driverDesc; const char * driveroptions; const bool splitpages; drvbase * backend; unsigned int currentPageNumber; unsigned int lineNumber; float * numbers; // The number stack [maxpoints] unsigned int nextFreeNumber; unsigned int pathnumber; // number of path (for debugging) bool non_standard_font; bool constraintsChecked; Point currentpoint; bool bblexmode; // indicates whether just the scanning for the Bounding Box is needed BBox * bboxes_ptr; // Inhibitors (declared, but not defined) PSFrontEnd(const PSFrontEnd &); PSFrontEnd(); PSFrontEnd & operator=(const PSFrontEnd&); }; #endif pstoedit-3.62/src/psimage.cpp0000644000175500010010000004232012137224255013136 00000000000000/* psimage.cpp : This file is part of pstoedit. Copyright (C) 1997- 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net Support for Image::writeIdrawImage by Scott Johnston This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cppcomp.h" #ifdef HAVE_LIBGD #include #endif #include #include "drvbase.h" #include "version.h" #include I_iomanip #if 0 // should be obsolete - since now PNG images are written directly by ghostscript //#define HAVE_LIBPNG #ifdef HAVE_LIBPNG bool PSImage::PNGSupported() { return true; } #include "png.h" static void user_error_ptr(png_structp, png_const_charp) { } static void user_error_fn(png_structp, png_const_charp) { } static void user_warning_fn(png_structp, png_const_charp) { } void PSImage::writePNGImage(const char *FileNameP, const char *source, const char *title, const char *generator) const { FILE *fp = fopen(FileNameP, "wb"); if (!fp) { cerr << "error in open " << FileName << endl; return; } png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, (png_voidp) user_error_ptr, user_error_fn, user_warning_fn); if (!png_ptr) { cerr << "error in png_create_write_struct " << endl; return; } png_infop info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) { cerr << "error in png_create_info_struct " << endl; png_destroy_write_struct(&png_ptr, NIL); return; } if (setjmp(png_jmpbuf(png_ptr))) { cerr << "error in libpng " << endl; png_destroy_write_struct(&png_ptr, NIL); return; } png_init_io(png_ptr, fp); // const int width = imageinfo.width; // const int height = imageinfo.height; const int depth = 8; // bits; (4) - getcomponent scales to 0..255 // otherwise we need more space as well below. // const int numcolors = ncomp; // assume 3 for the moment (RGB) const bool isgray = (ncomp == 1); png_set_IHDR(png_ptr, info_ptr, width, // width height, // height depth, // depth isgray ? PNG_COLOR_TYPE_GRAY : PNG_COLOR_TYPE_RGB, // color_type PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); { png_text text[3]; text[0].compression = PNG_TEXT_COMPRESSION_NONE; text[0].key = "Title"; text[0].text = (char *) title; text[1].compression = PNG_TEXT_COMPRESSION_NONE; text[1].key = "Software"; text[1].text = (char *) generator; text[2].compression = PNG_TEXT_COMPRESSION_NONE; text[2].key = "Source"; text[2].text = (char *) source; png_set_text(png_ptr, info_ptr, text, 3); } const unsigned int nrofcolorsforpng = isgray ? 1 : 3; png_bytepp row_pointers = (png_bytepp) png_malloc(png_ptr, height * sizeof(png_bytep) * nrofcolorsforpng); { for (unsigned int y = 0; y < height; y++) { row_pointers[y] = (png_bytep) png_malloc(png_ptr, width * sizeof(png_byte) * nrofcolorsforpng); png_bytep row = row_pointers[y]; // cout << endl << "%% " << width << " " << height << " " << nrofcolorsforpng << " " << bits << " " << ncomp << " " << isgray << endl; for (unsigned int x = 0; x < width; x++) { if (isgray) { row[x] = getComponent(x, y, 0); // cout << (((unsigned int) row[x]) ? ' ' : '#' ); } else { unsigned char r, g, b; // how many components? switch (ncomp) { case 1: // should not happen anymore (see if isgray) r = g = b = getComponent(x, y, 0); break; case 3: r = getComponent(x, y, 0); g = getComponent(x, y, 1); b = getComponent(x, y, 2); break; case 4: { // need int for CMY in order to allow += later on unsigned int C = getComponent(x, y, 0); unsigned int M = getComponent(x, y, 1); unsigned int Y = getComponent(x, y, 2); unsigned int K = getComponent(x, y, 3); // account for key // see pslrm page 307 C += K; M += K; Y += K; if (C > 255) C = 255; if (M > 255) M = 255; if (Y > 255) Y = 255; // convert color r = 255 - C; g = 255 - M; b = 255 - Y; } break; default: cerr << "\t\tFatal: unexpected case in image (line " << __LINE__ << ")" << endl; abort(); return; } row[3 * x] = r; row[3 * x + 1] = g; row[3 * x + 2] = b; } } } } png_set_rows(png_ptr, info_ptr, row_pointers); png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NIL); // free memory !!!!!!!!!!!!!!!! { for (unsigned int y = 0; y < height; y++) { png_free(png_ptr, row_pointers[y]); } } png_free(png_ptr, row_pointers); png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); } #else bool PSImage::PNGSupported() { return false; } void PSImage::writePNGImage(const char *FileName, const char *source, const char *title, const char *generator) const { } #endif // end obsolete #endif unsigned char PSImage::getComponent(unsigned int x, unsigned int y, char numComponent) const { if (isFileImage) { cerr << "Image::getComponent not yet supported for PNG File Image objects" << endl; return 0; } assert(data != 0); // all data in one row are filled up to by a multiple of 8 // see PS manual §4.10.2 // which position? const long tmp = bits * ncomp * width; const long paddedBytesPerRow = (tmp + 7) / 8; const long pos = paddedBytesPerRow * 8 * y + bits * (ncomp * x + numComponent); // which byte? long bytePos = pos / 8; // which bit in byte? int bitPos = pos % 8; // now fetch all bits for requested component unsigned char result = 0; const unsigned int numBits = (bits > 8) ? 8 : bits; // get only most significant bits for (unsigned int resultBit = 0; resultBit < numBits; resultBit++) { if (data[bytePos] & (1 << (7 - bitPos))) { result |= 1 << (numBits - resultBit - 1); } bitPos++; if (bitPos > 7) { bitPos = 0; bytePos++; } } // scale result into full range [0-255] return (unsigned char) ((long) result * 255L / ((1L << numBits) - 1L)); //lint !e795 // Conceivable division by 0 } void PSImage::calculateBoundingBox() { // if (isFileImage) { // cerr << "Image::calculateBoundingBox not yet supported for PNG File Image objects" << endl; // return; // } // calculate image bounding box in device space const int border = 0; // subtract 1 or 0; Point P1(0.0f, 0.0f); Point P1T = P1.transform(normalizedImageCurrentMatrix); Point P2((float) (width - border), (float) (height - border)); Point P2T = P2.transform(normalizedImageCurrentMatrix); Point P3(0.0f, (float) (height - border)); Point P3T = P3.transform(normalizedImageCurrentMatrix); Point P4((float) (width - border), 0.0f); Point P4T = P4.transform(normalizedImageCurrentMatrix); ur.x_ = max(max(P1T.x_, P2T.x_), max(P3T.x_, P4T.x_)); ur.y_ = max(max(P1T.y_, P2T.y_), max(P3T.y_, P4T.y_)); ll.x_ = min(min(P1T.x_, P2T.x_), min(P3T.x_, P4T.x_)); ll.y_ = min(min(P1T.y_, P2T.y_), min(P3T.y_, P4T.y_)); } void PSImage::writeEPSImage(ostream & outi) const { if (isFileImage) { #ifdef HAVE_LIBGD FILE* in = fopen(FileName.value(),"rb"); // cerr << "Reading: "<> 4); curnybble++; if (curnybble == 3) { curnybble = 0; curcol++; } /* replicate least-significant nybble if not at end of odd-width row */ if (curcol != width || !(width % 2)) { udata[udata_loc++] = (data[i] & 0x0f) | ((data[i] & 0x0f) << 4); curnybble++; if (curnybble == 3) { curnybble = 0; curcol++; } } /* skip nybble at end of odd-width row */ if (curcol == width) { // currow++; curcol = 0; } } } /* output graylevel image for B&W printers */ int cur = 0; { for (unsigned int row = 0; row < height; row++) { outi << endl << "%I "; for (unsigned int col = 0; col < width; col++) { unsigned int grayval; if (type == colorimage) { grayval = (unsigned int) (.299 * dataptr[cur] + .587 * dataptr[cur+1] + .114 * dataptr[cur+2]); cur+=3; } else grayval = dataptr[cur++]; outi << setw(2) << setfill('0') << hex << grayval << dec; } } } /* output color image for use of idraw */ outi << endl << "%I colorimage"; cur = 0; { for (unsigned int row = 0; row < height; row++) { outi << endl << "%I "; for (unsigned int col = 0; col < width; col++) { if (type == colorimage) { outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; } else { outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur] << dec; outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur] << dec; outi << setw(2) << setfill('0') << hex << (unsigned int) dataptr[cur++] << dec; } } } } outi << endl << "End " << endl << endl; delete[] udata; } pstoedit-3.62/src/psimage.h0000644000175500010010000000521412137224260012600 00000000000000#ifndef __psimage_h #define __psimage_h /* psimage.h : This file is part of pstoedit. Copyright (C) 1997 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef cppcomp_h #include "cppcomp.h" #endif #include "miscutil.h" enum ImageType { colorimage, normalimage, imagemask }; // maybe do subclassing later class DLLEXPORT PSImage { public: ImageType type; // the image type unsigned int height; // height unsigned int width; // width short int bits; // bits per component short int ncomp; // number of color components 1 (grey), 3 (RGB) or 4 (CMYB) float imageMatrix[6]; // the matrix given as argument to the *image* operator in PostScript float normalizedImageCurrentMatrix[6]; // the effective matrix that transforms the ideal image into the device space. bool polarity; // used for imagemask only unsigned char * data; // the array of values unsigned int nextfreedataitem; // the current write index into the data array bool isFileImage; // true for PNG file images (Q: is this orthogonal to ImageType ? - I guess yes) RSString FileName; // for PNG file images PSImage(): type(colorimage),height(0),width(0),bits(0),ncomp(0), polarity(true),data(0),nextfreedataitem(0),isFileImage(false),FileName("") { for (int i = 0; i < 6 ; i++) imageMatrix[i] = normalizedImageCurrentMatrix[i] = 0.0f; } ~PSImage() { delete [] data; data = 0; nextfreedataitem = 0;} void writeEPSImage(ostream & outi) const; void writeIdrawImage(ostream & outi, float scalefactor) const; //obsolete void writePNGImage(const char * pngFileName, const char * source, const char * title, const char * generator) const; //obsolete static bool PNGSupported(); void getBoundingBox(Point & ll_p, Point & ur_p) const { ll_p = ll; ur_p = ur; } void calculateBoundingBox(); unsigned char getComponent( unsigned int x, unsigned int y, char numComponent) const; private: // Bounding Box Point ll; Point ur; NOCOPYANDASSIGN(PSImage) }; #endif pstoedit-3.62/src/pstoedit.cpp0000644000175500010010000014761612137234316013361 00000000000000/* pstoedit.cpp : This file is part of pstoedit main control procedure Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define WITHCLIPSUPPORT 1 #include "cppcomp.h" #include I_fstream #include I_stdio #include I_stdlib #include I_string_h #include #include "pstoeditoptions.h" #include "pstoedit.h" // for the DLL export data types (the description struct) #include "pstoedll.h" #include "version.h" #include "drvbase.h" #ifndef UPPVERSION #include "dynload.h" #endif inline bool strequal(const char * const s1, const char * const s2) { return (strcmp(s1,s2) == 0);} #ifndef USEPROLOGFROMFILE #include "pstoedit.ph" #endif #include "psfront.h" #ifdef HAVEDIALOG #include "pstoeditdialog.h" // typedef void (pstoeditDialog_func) (void *); /* in reality the params is is PsToEditOptions * */ typedef void (pstoeditDialog_func) (PsToEditOptions *); typedef void (setPstoeditDialog_func) (pstoeditDialog_func*); static pstoeditDialog_func* RunDialog = 0; extern "C" DLLEXPORT void setPstoeditDialogFunction(pstoeditDialog_func* p) { RunDialog = p; } #endif extern const char *defaultPIoptions(ostream & errstream, int verbose); // in callgs.cpp static void writeFileName(ostream & outstream, const char *const filename) { const size_t len = strlen(filename); for (unsigned int i = 0; i < len; i++) { if (filename[i] == '\\') { outstream << '/'; // '/' works on DOS also } else { outstream << filename[i]; } } } static int grep(const char *const matchstring, const char *const filename, ostream & errstream) { // for call: gsresult = grep("% normal end reached by pstoedit.pro",gsout); ifstream inFile; #if ( defined (__GNUG__) || defined(__mips) ) inFile.open(filename); // for some reasons adding flags does not work correctly with g++ #else #ifdef HAVESTL // at least MSVC doesn't know nocreate when using STL inFile.open(filename, ios::binary ); #else inFile.open(filename, ios::binary | ios::nocreate); #endif #endif if (inFile.fail()) { errstream << "Could not open file " << filename << " in grep" << endl; return 1; // fail } else { const size_t matchlen = strlen(matchstring); const size_t bufferlen = matchlen + 1; // allocate buffer for reading begin of lines char *buffer = new char[bufferlen]; while ((void) inFile.get(buffer, bufferlen, '\n'), // debug errstream << " read in grep :`" << buffer << "'" << inFile.gcount() << " " << matchlen << " eof:"<< inFile.eof() << endl, !inFile.eof() /* && !inFile.fail() */ ) { // debug errstream << " read in grep :`" << buffer << "'" << inFile.gcount() << " " << matchlen << endl; // gcount returns int on MSVC // make a temp variable to avoid a compiler warning on MSVC // (signed/unsigned comparison) const std::streamsize inFile_gcountresult = inFile.gcount(); #ifdef HAVESTL // Notes regarding ANSI C++ version (from KB) // istream::get( char* pch, int nCount, char delim ) is different in three ways: // When nothing is read, failbit is set. // An eos is always stored after characters extracted (this happens regardless of the outcome). // A value of -1 for nCount is an error. // If the line contains just a \n then the failbit // is set in the ANSI version // // Note: This caused again problems with g++3.0 in non STL mode, so this is avoided now by never writing an empty line // if (inFile_gcountresult == 0) { inFile.clear(); } else #endif if ((inFile_gcountresult == matchlen) && strequal(buffer, matchstring) ) { delete[]buffer; return 0; } if (inFile.peek() == '\n') (void) inFile.ignore(); } delete[]buffer; } return 1; // fail } // *INDENT-OFF* class drvNOBACKEND : public drvbase { // not really needed - just as template argument public: derivedConstructor(drvNOBACKEND); // Constructor ~drvNOBACKEND() { options=0; } // Destructor class DriverOptions : public ProgramOptions { public: DriverOptions() { } }*options; bool withbackend() const { return false; } private: // yes these are private, library users should use the public interface // provided via drvbase void open_page() { } void close_page() { } void show_text(const TextInfo & /* textInfo */ ) { } void show_path() { } void show_rectangle(const float /* llx */ , const float /* lly */ , const float /* urx */ , const float /* ury */ ) { } }; // *INDENT-ON* drvNOBACKEND::derivedConstructor(drvNOBACKEND):constructBase { } static DriverDescriptionT < drvNOBACKEND > D_psf("psf", "Flattened PostScript (no curves)", "","fps", true, false, true, true, DriverDescription::memoryeps, DriverDescription::normalopen, true, true,false); static DriverDescriptionT < drvNOBACKEND > D_ps("ps", "Simplified PostScript with curves", "","spsc", true, true, true, true, DriverDescription::memoryeps, DriverDescription::normalopen, true, true,false); static DriverDescriptionT < drvNOBACKEND > D_debug("debug", "for test purposes", "","dbg", true, true, true, true, DriverDescription::memoryeps, DriverDescription::normalopen, true, true,false); static DriverDescriptionT < drvNOBACKEND > D_dump("dump", "for test purposes (same as debug)", "","dbg", true, true, true, true, DriverDescription::memoryeps, DriverDescription::normalopen, true, true,false); static DriverDescriptionT < drvNOBACKEND > D_gs("gs", "any device that GhostScript provides - use gs:format, e.g. gs:pdfwrite", "","gs", true, true, true, true, DriverDescription::noimage, DriverDescription::normalopen, true, true,false); #if 0 // -88 no longer supported - too lazy to create an own class for the moment. static const OptionDescription driveroptionsAI[] = { OptionDescription("-88",0,"generate AI88 format"), endofoptions}; #endif static DriverDescriptionT < drvNOBACKEND > D_ps2ai("ps2ai", "Adobe Illustrator via ps2ai.ps of GhostScript", "","ai", true, true, true, true, DriverDescription::noimage, DriverDescription::normalopen, false, true, false); class Closer { public: Closer():fromgui(false) { }; ~Closer() { if (fromgui) { cerr << "Program finished, please press CR to close window\n"; (void) cin.get(); } } bool fromgui; }; #if 0 #ifdef _DEBUG #include #include #include void checkheap(const char * tracep, const void * pUserData) { const int r1 = _CrtIsValidHeapPointer(pUserData); cout << tracep << r1 << " " << pUserData << endl; } #else void checkheap(const char * tracep, const void * pUserData) {}; #endif #endif #ifndef UPPVERSION static void loadpstoeditplugins(const char *progname, ostream & errstream, bool verbose) { static bool pluginsloaded = false; if (pluginsloaded) return; RSString plugindir = getRegistryValue(errstream, "common", "plugindir"); if (plugindir.value() && strlen(plugindir.value() )) { loadPlugInDrivers(plugindir.value(), errstream, verbose); // load the driver plugins pluginsloaded = true; } // also look in the directory where the pstoedit .exe/dll was found char szExePath[1000]; szExePath[0] = '\0'; const unsigned long r = P_GetPathToMyself(progname, szExePath, sizeof(szExePath)); if (verbose) errstream << "pstoedit : path to myself:" << progname << " " << r << " " << szExePath<< endl; char *p = 0; if (r && (p = strrchr(szExePath, directoryDelimiter)) != 0) { *p = '\0'; if (!strequal(szExePath, plugindir.value() ? plugindir.value() : "")) { loadPlugInDrivers(szExePath, errstream,verbose); pluginsloaded = true; } } #ifdef PSTOEDITLIBDIR // also try to load drivers from the PSTOEDITLIBDIR loadPlugInDrivers(PSTOEDITLIBDIR, errstream,verbose); pluginsloaded = true; #endif // delete[]plugindir; } #endif extern FILE *yyin; // used by lexer // This has to be declared here because of the extern "C" // otherwise we could declare it locally where it is used static void usage(ostream & outstream, bool forTeX, bool withdetails, bool withcategories = false) { PsToEditOptions dummy; if (withcategories) { const char * const propSheetNames[] = { "General options", "Text and font handling related options", "About", "Debug options", "Drawing related options", "Hidden options", 0}; // PropSheetEnum {g_t, t_t, a_t, b_t, d_t, h_t }; for (unsigned int sheet = PsToEditOptions::g_t ; sheet <= PsToEditOptions::d_t ; sheet++ ) { if (sheet == PsToEditOptions::a_t) continue; // skip "about" outstream << "\\subsection{" << propSheetNames[sheet] << "}" << endl; dummy.showhelp(outstream,forTeX,withdetails,sheet); } outstream << "\\subsection{Input and outfile file arguments}" << endl; outstream << "[ inputfile [outputfile] ] " << endl; } else { dummy.showhelp(outstream,forTeX,withdetails); outstream << "[ inputfile [outputfile] ] " << endl; } } static void shortusage(ostream & outstream) { // just short version outstream << "Usage: \"pstoedit -f format inputfile outputfile\" or run \"pstoedit -help\" to get a complete list available options." << endl; } bool f_useCoutForDiag = false; // default is cout - but some clients may redirect it to a file // Note - this could be seen as a "hack". The better way would be to pass the coutstream as parameter // but that would cause an incompatible interface change and is not feasible. extern "C" DLLEXPORT void useCoutForDiag(int flag) { f_useCoutForDiag = (flag != 0); } extern "C" DLLEXPORT int pstoedit(int argc, const char *const argv[], ostream & errstream, execute_interpreter_function call_PI, whichPI_type whichPI, const DescriptionRegister * const pushinsPtr) { Closer closerObject; PsToEditOptions options; ostream& diag = f_useCoutForDiag ? cout : errstream; #ifdef _DEBUG const char buildtype [] = "debug build"; #else const char buildtype [] = "release build"; #endif #ifdef __VERSION__ #if defined(_LP64) && (_LP64) #define COMPILEDFORWHICHARCH "64-bit" #else #define COMPILEDFORWHICHARCH "32-bit" #endif #ifdef __GNUG__ const char compversion [] = "g++ " __VERSION__ " - " COMPILEDFORWHICHARCH; #else const char compversion [] = "unknown compiler " __VERSION__ " - " COMPILEDFORWHICHARCH; #endif #else #ifdef _MSC_VER #define XNUMTOSTRING(x) NUMTOSTRING(x) #define NUMTOSTRING(x) #x #ifdef _WIN64 #define COMPILEDFORWHICHARCH "64-bit" #else #define COMPILEDFORWHICHARCH "32-bit" #endif const char compversion [] = "MS VC++ " XNUMTOSTRING(_MSC_VER) " - " COMPILEDFORWHICHARCH; #elif defined(__SUNPRO_CC) #define XNUMTOSTRING(x) NUMTOSTRING(x) #define NUMTOSTRING(x) #x const char compversion [] = "SUN Studio " XNUMTOSTRING(__SUNPRO_CC); #else const char compversion [] = "unknown compiler "; #endif #endif // int arg = 1; drvbase::SetVerbose( false ); // init const unsigned int remaining = options.parseoptions(errstream,argc,argv); if (!options.quiet) { errstream << "pstoedit: version " << version << " / DLL interface " << drvbaseVersion << " (built: " << __DATE__ << " - " << buildtype << " - " << compversion << ")" " : Copyright (C) 1993 - 2013 Wolfgang Glunz\n"; } // handling of derived parameters drvbase::SetVerbose(options.verbose); closerObject.fromgui = (bool) options.fromgui; if (options.ptioption) options.precisiontext = 1; if (options.ptaoption) options.precisiontext = 2; switch (remaining) { case 0: { // use stdin and stdout break; } case 1: { // use file and stdout options.nameOfInputFile = cppstrdup(options.unhandledOptions[0]); break; } case 2: { // use both files options.nameOfInputFile = cppstrdup(options.unhandledOptions[0] ); options.nameOfOutputFile = cppstrdup(options.unhandledOptions[1] ); break; } default:{ diag << "more than two file arguments " << endl; shortusage(diag); return 1; } } #ifdef HAVEDIALOG // setPstoeditDialogFunction(rundialog); if (options.showdialog) { static bool initdone = false; // the next code is needed for a full stand-alone pstoedit.exe. if (!initdone) { if ( !AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs _tprintf(_T("Fatal Error: MFC initialization failed\n")); //nRetCode = 1; } initdone = true; } rundialog(options); #if 0 if (RunDialog) { RunDialog(&options); } else { cerr << "Dialoghandler is not defined - cannot show dialog" << endl; } #endif } #endif // options.showvalues(cout); // obsolete now because of .fmp look-up // char * fontmapfile = getRegistryValue(errstream,"common","fontmap"); // if (fontmapfile != 0) drvbase::theFontMapper.readMappingTable(errstream,fontmapfile); // // if input or output filename is -, then set it back to 0 in order // to keep the logic below unchanged // if (options.nameOfInputFile && strequal(options.nameOfInputFile, "-")) { delete[]options.nameOfInputFile; options.nameOfInputFile = 0; } if (options.nameOfOutputFile && strequal(options.nameOfOutputFile, "-")) { delete[]options.nameOfOutputFile; options.nameOfOutputFile = 0; } #ifndef UPPVERSION // not needed for importps if (!options.dontloadplugins) { loadpstoeditplugins(argv[0], errstream, options.verbose); // load the driver plugins } #endif if ((pushinsPtr != 0) && (pushinsPtr != getglobalRp())) { getglobalRp()->mergeRegister(errstream, *pushinsPtr, "push-ins"); } if (options.showdocu_short) { // show general options usage(diag,true,false); return 1; } if (options.showdocu_long) { // show general options usage(diag,true,true,true); return 1; } if (options.dumphelp) { // show driver specific options getglobalRp()->explainformats(diag,true); return 1; } if (options.showdrvhelp) { usage(diag,false,false); const char *gstocall = whichPI(diag, options.verbose, options.gsregbase.value.value(),options.GSToUse.value.value()); if (gstocall != 0) { diag << "Default interpreter is " << gstocall << endl; } getglobalRp()->explainformats(diag); return 1; } if (options.justgstest) { const char *gstocall = whichPI(errstream, options.verbose, options.gsregbase.value.value(),options.GSToUse.value.value()); if (gstocall == 0) { return 3; } Argv commandline; commandline.addarg(gstocall); // rcw2: Current RiscOS port of gs can't find its fonts without this... #ifdef riscos commandline.addarg("-I"); #endif const char *pioptions = defaultPIoptions(errstream, options.verbose); if (pioptions && (strlen(pioptions) > 0)) { commandline.addarg(pioptions); } if (!options.verbose) commandline.addarg("-q"); if (options.nobindversion) { // NOBIND disables bind in, e.g, gs_init.ps // these files are loaded before pstoedit.pro // so any already bound call to, e.g., show could // not be intercepted by pstoedit's show commandline.addarg("-dNOBIND"); } else { commandline.addarg("-dDELAYBIND"); } commandline.addarg("-dWRITESYSTEMDICT"); if (options.verbose) { commandline.addarg("-dESTACKPRINT"); // commandline.addarg("-sDEBUG=true"); } if (options.withdisplay) { commandline.addarg("-dNOPAUSE"); } else { commandline.addarg("-dNODISPLAY"); } commandline.addarg("-dNOEPS"); // otherwise EPSF files create implicit showpages and a save/restore pair which disturbs the setPageSize handling // from the gs (8.0) news: /* Ghostscript now automatically encapsulates EPS files, so that EPS files will display and print/convert correctly. Previously EPS files without a showpage would display, but no output file would be written when converting to a bitmap. To set the page size to match the EPS bounding box, use -dEPSCrop. To scale an EPS to fit the current page size, use -dEPSFitPage. If neither of these options are used and the EPS file does not fit within the current page, a warning will be generated. To get the pre 8.00 behaviour, either use -dNOEPS or run the file with (filename) (r) file cvs exec not (filename) run. */ for (unsigned int psi = 0; psi < options.psArgs().argc; psi++) { commandline.addarg(options.psArgs().argv[psi]); } if (options.nameOfInputFile) { commandline.addarg(options.nameOfInputFile); } if (!options.noquit) commandline.addarg("quit.ps"); //if (verbose) errstream << "now calling the interpreter via: " << commandline << endl; // gsresult = system(commandline); const int gsresult = call_PI(commandline.argc, commandline.argv); if (gsresult != 0) { errstream << "PostScript/PDF Interpreter finished. Return status " << gsresult << " executed command : " << commandline << endl; } return gsresult; } if (options.drivername.value.value() == 0) { // try to find driver according to suffix of input file if (!options.nameOfOutputFile) { diag << "No output format specified (-f option) and format could not be deduced from suffix of output file since no output file name was given" << endl; shortusage(diag); return 1; } else { const char * suffixOfInputFile = strrchr(options.nameOfOutputFile,'.'); if (!suffixOfInputFile) { diag << "No output format specified (-f option) and format could not be deduced from suffix of output file since no suffix was found" << endl; shortusage(diag); return 1; } else { const DriverDescription *suffixDriverDesc = getglobalRp()->getDriverDescForSuffix((suffixOfInputFile+1)); // +1 == skip "." if (suffixDriverDesc) { errstream << "No explicit output format specified - using " << suffixDriverDesc->symbolicname << " as derived from suffix of output file" << endl; options.drivername = suffixDriverDesc->symbolicname; } else { diag << "No output format specified (-f option) and format could not be uniquely deduced from suffix " << suffixOfInputFile << " of output file" << endl; // usage(errstream); getglobalRp()->explainformats(diag); // ,true); return 1; } } } } // from here on options.drivername is != 0 { auto_ptr driveroptionscopy (cppstrdup(options.drivername.value.value()) ); char *driveroptions = strchr(driveroptionscopy.operator->(), ':'); if (driveroptions) { *driveroptions = '\0'; // replace : with 0 to separate drivername options.drivername = driveroptionscopy.operator->(); driveroptions++; } const DriverDescription *currentDriverDesc = getglobalRp()->getDriverDescForName(options.drivername.value.value()); if (currentDriverDesc == 0) { diag << "Unsupported output format " << options.drivername.value.value() << endl; getglobalRp()->explainformats(diag); return 1; } if ( currentDriverDesc->backendFileOpenType!=DriverDescription::normalopen && !options.nameOfOutputFile ) { diag << "The driver for the selected format cannot write to standard output because it writes binary data" << endl; return 1; } if (driveroptions && strequal(driveroptions, "-help") ) { ProgramOptions* dummy = currentDriverDesc->createDriverOptions(); if (dummy->numberOfOptions() ) { diag << "The driver for this output format supports the following additional options: (specify using -f \"format:-option1 -option2\")" << endl; dummy->showhelp(diag,false,false); } delete dummy; return 1; } if (strequal(options.drivername.value.value(), "gs")) { // TODO: // Check for input file (exists, or stdin) stdout handling if (!options.nameOfInputFile) { diag << "Cannot read from standard input if GS drivers are selected" << endl; return 1; } // an input file was given as argument // just test whether InputFile is readable. // The file will be read directly from the PostScript // interpreter later on convertBackSlashes(options.nameOfInputFile); if (!fileExists(options.nameOfInputFile)) { diag << "Could not open file " << options.nameOfInputFile << " for input" << endl; return 1; } if (!options.nameOfOutputFile) { diag << "Cannot write to standard output if GS drivers are selected" << endl; return 1; } if (options.backendonly) { diag << "The -bo option cannot be used if GS drivers are selected " << endl; return 1; } if (!driveroptions) { diag << "The gs output driver needs a gs-device as argument, e.g. gs:pdfwrite" << endl; return 1; } // special handling of direct ghostscript drivers Argv commandline; // char commandline[1000]; // TODO check for overflow // commandline[0]= '\0'; const char *gstocall = whichPI(errstream, options.verbose, options.gsregbase.value.value(),options.GSToUse.value.value()); if (gstocall == 0) { return 3; } commandline.addarg(gstocall); // rcw2: Current RiscOS port of gs can't find its fonts without this... #ifdef riscos commandline.addarg("-I"); #endif if (!options.verbose) commandline.addarg("-q"); const char *pioptions = defaultPIoptions(errstream, options.verbose); if (pioptions && (strlen(pioptions) > 0)) { commandline.addarg(pioptions); } commandline.addarg("-dNOPAUSE"); commandline.addarg("-dBATCH"); RSString tempbuffer("-sDEVICE=") ; // char tempbuffer[1000]; // tempbuffer[0] = '\0'; // tempbuffer += "-sDEVICE="; // strcat_s(tempbuffer, 1000, "-sDEVICE="); tempbuffer += driveroptions; // strcat_s(tempbuffer, 1000,driveroptions); // e.g., pdfwrite ; commandline.addarg(tempbuffer.value() ); for (unsigned int psi = 0; psi < options.psArgs().argc; psi++) { commandline.addarg(options.psArgs().argv[psi]); } tempbuffer = "-sOutputFile="; tempbuffer += options.nameOfOutputFile; // strcat_s(tempbuffer,1000, "-sOutputFile="); // strcat_s(tempbuffer,1000, options.nameOfOutputFile); commandline.addarg(tempbuffer.value()); commandline.addarg("-c"); commandline.addarg("save"); commandline.addarg("pop"); commandline.addarg("-f"); commandline.addarg(options.nameOfInputFile); if (options.verbose) errstream << "Now calling the interpreter via: " << commandline << endl; // gsresult = system(commandline); const int gsresult = call_PI(commandline.argc, commandline.argv); if (gsresult != 0) { errstream << "PostScript/PDF Interpreter finished. Return status " << gsresult << " executed command : " << commandline << endl; } return gsresult; } else { //istream *inputFilePtr = 0; // cannot be const because nameOfInputFile cannot be const // because it needs to be changed on non UNIX systems (convertBackSlashes) const char stdinFileName[] = "%stdin"; if (options.nameOfInputFile) { // an input file was given as argument // just test whether InputFile is readable. // The file will be read directly from the PostScript // interpreter later on convertBackSlashes(options.nameOfInputFile); if (!fileExists(options.nameOfInputFile)) { errstream << "Could not open file " << options.nameOfInputFile << " for input" << endl; return 1; } } else { options.nameOfInputFile = cppstrdup(stdinFileName); } ostream *outputFilePtr = 0; ofstream outFile; drvbase *outputdriver = 0; char *nameOfOutputFilewithoutpercentD = 0; { // setup pstoeditHome directory char szExePath[1000]; szExePath[0] = '\0'; const int r = P_GetPathToMyself(argv[0], szExePath, sizeof(szExePath)); if (r && options.verbose) { errstream << "path to myself: " << szExePath << endl; } char *p; if (r && (p = strrchr(szExePath, directoryDelimiter)) != 0) { *p = '\0'; drvbase::pstoeditHomeDir() = RSString(szExePath); } else { drvbase::pstoeditHomeDir() = ""; } if (options.verbose) errstream << "pstoedit home directory : " << drvbase::pstoeditHomeDir().value() << endl; drvbase::pstoeditDataDir() = drvbase::pstoeditHomeDir(); #if (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined (NetBSD) ) && !defined(DJGPP) #ifdef PSTOEDITDATADIR // usually something like /usr/share/pstoedit drvbase::pstoeditDataDir() = PSTOEDITDATADIR; #else drvbase::pstoeditDataDir() += "/../share/pstoedit"; #endif #endif if (options.verbose) errstream << "pstoedit data directory : " << drvbase::pstoeditDataDir().value() << endl; } if (options.nameOfOutputFile) { options.splitpages = options.splitpages || (!currentDriverDesc->backendSupportsMultiplePages); // if -split is given or if backend does not support multiple pages // BUT, do this only if a real output file is given, not when writing to stdout. outputFilePtr = &outFile; convertBackSlashes(options.nameOfOutputFile); #if 0 nameOfOutputFilewithoutpercentD = cppstrdup(options.nameOfOutputFile, 20); // reserve 20 chars for page number sprintf_s(TARGETWITHLEN(nameOfOutputFilewithoutpercentD, strlen(options.nameOfOutputFile)+ 20) , options.nameOfOutputFile, 1); //first page is page 1 #endif RSString newFileName = getOutputFileNameFromPageNumber(options.nameOfOutputFile, options.pagenumberformat, 1); nameOfOutputFilewithoutpercentD = cppstrdup(newFileName.value()); if (currentDriverDesc->backendFileOpenType != DriverDescription::noopen) { if (currentDriverDesc->backendFileOpenType == DriverDescription::binaryopen) { #if (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) && !defined(DJGPP) // binary is not available on UNIX, only on PC outFile.open(nameOfOutputFilewithoutpercentD, ios::out); #else // use redundant ios::out because of bug in djgpp outFile.open(nameOfOutputFilewithoutpercentD, ios::out | ios::binary); #endif // errstream << "opened " << newname << " for binary output" << endl; } else { outFile.open(nameOfOutputFilewithoutpercentD); // errstream << "opened " << newname << " for output" << endl; } if (outFile.fail()) { errstream << "Could not open file " << nameOfOutputFilewithoutpercentD << " for output" << endl; return 1; } // fail } // backend opens file by itself outputdriver = currentDriverDesc->CreateBackend(driveroptions, *outputFilePtr, errstream, options.nameOfInputFile, nameOfOutputFilewithoutpercentD, options); } else { if (options.splitpages) { errstream << "Cannot split pages if output goes to standard output" << endl; return 1; } else { outputFilePtr = &cout; outputdriver = currentDriverDesc->CreateBackend(driveroptions, *outputFilePtr, errstream, options.nameOfInputFile, 0, options); } } if ((!outputdriver) || (outputdriver && (!outputdriver->driverOK()))) { errstream << "Creation of driver failed " << endl; return 1; } if (options.explicitFontMapFile.value.value()) { if (fileExists(options.explicitFontMapFile.value.value())) { if (options.verbose) { errstream << "Loading fontmap from " << options.explicitFontMapFile.value << endl; } drvbase::theFontMapper().readMappingTable(errstream, options.explicitFontMapFile.value.value()); } else { RSString extendedFontMapFile = options.explicitFontMapFile.value; extendedFontMapFile += ".fmp"; if (fileExists(extendedFontMapFile.value())) { if (options.verbose) { errstream << "Loading fontmap from " << extendedFontMapFile << endl; } drvbase::theFontMapper().readMappingTable(errstream, options.explicitFontMapFile.value.value()); } else { errstream << "Warning: Couldn't open fontmap file. Neither " << options.explicitFontMapFile.value << " nor " << extendedFontMapFile << ". Option ignored." << endl; } } } else { // look for a driver specific fontmap // also look in the directory where the pstoedit .exe/dll was found if (drvbase::pstoeditDataDir() != "") { RSString test(drvbase::pstoeditDataDir()); test += directoryDelimiter; test += options.drivername.value; test += ".fmp"; if (fileExists(test.value())) { if (options.verbose) { errstream << "loading driver specific fontmap from " << test.value() << endl; } drvbase::theFontMapper().readMappingTable(errstream, test.value()); } } } { // load a system specific font map after the driver fontmap file // (idea provided by Scott Pakin) // So driver fontmap files can use generic names and redirect them to specific names via the system // map file. if (drvbase::pstoeditDataDir() != "") { RSString test(drvbase::pstoeditDataDir()); test += directoryDelimiter; #if defined(PSTOEDIT_UNIXLIKE) test += "unix"; #else test += "windows"; #endif test += ".fmp"; if (fileExists(test.value())) { if (options.verbose) { errstream << "loading system specific fontmap from " << test.value() << endl; } drvbase::theFontMapper().readMappingTable(errstream, test.value()); } else { if (options.verbose) { errstream << "Warning: System specific fontmap not loaded - " << test.value() << " not found in pstoedit data directory." << endl; } } } else { if (options.verbose) { errstream << "Warning: System specific fontmap not loaded - no pstoedit data directory found" << endl; } } } RSString gsoutName; RSString gsout; int gsresult = 0; if (options.backendonly) { if ( outputdriver && !outputdriver->withbackend() ) { errstream << "the -bo option cannot be used with this non native pstoedit driver" << endl; return 1; } gsout = options.nameOfInputFile; gsresult = 0; // gs was skipped, so there is no problem } else { RSString gsin = full_qualified_tempnam("psin"); const char *successstring; // string that indicated success of .pro ofstream inFileStream(gsin.value()); inFileStream << "/pstoedit.pagetoextract " << options.pagetoextract << " def" << endl; inFileStream << "/pstoedit.versioninfo (" << version << " " << compversion << ") def" << endl; if (options.nomaptoisolatin1) { inFileStream << "/pstoedit.maptoisolatin1 false def" << endl; } if (options.psLanguageLevel != 3 ) { inFileStream << "/.setlanguagelevel where { pop " << options.psLanguageLevel << " .setlanguagelevel } if" << endl; } if (options.usePlainStrings) { inFileStream << "/pstoedit.ashexstring false def" << endl; } if (options.t2fontsast1) { inFileStream << "/pstoedit.t2fontsast1 true def" << endl; } else { inFileStream << "/pstoedit.t2fontsast1 false def" << endl; } if (options.fontdebug) { inFileStream << "/pstoedit.fontdebugging true def" << endl; } else { inFileStream << "/pstoedit.fontdebugging false def" << endl; } if (options.useRGBcolors) { inFileStream << "/pstoedit.useRGBcolors true def" << endl; } #if WITHCLIPSUPPORT if (currentDriverDesc->backendSupportsClipping && !(options.noclip) ) { inFileStream << "/pstoedit.dumpclippath true def" << endl; } #endif if (options.verbose) { inFileStream << "/pstoedit.verbosemode true def" << endl; } if (options.nofontreplacement) { inFileStream << "/pstoedit.checkfontnames false def " << endl; } if (options.passglyphnames) { inFileStream << "/pstoedit.passglyphnames true def " << endl; } if (options.useoldnormalization) { inFileStream << "/pstoedit.useoldnormalization true def " << endl; } if (options.pscover) { inFileStream << "/pstoedit.withpscover true def" << endl; } if (options.flatness != 1.0) { inFileStream << "/pstoedit.flatnesstouse " << options.flatness << " def" << endl; } if (options.drawtext || (!currentDriverDesc->backendSupportsText)) { inFileStream << "/pstoedit.textastext false def" << endl; } else { inFileStream << "/pstoedit.textastext true def" << endl; } if (options.DrawGlyphBitmaps) { inFileStream << "/pstoedit.DrawGlyphBitmaps true def" << endl; } if (options.disabledrawtext) { inFileStream << "/pstoedit.disabledrawtext true def" << endl; // if true, this is dominant over -dt or -adt } if (options.autodrawtext) { inFileStream << "/pstoedit.autodrawtext true def" << endl; } if (options.correctdefinefont) { inFileStream << "/pstoedit.correctdefinefont true def" << endl; } if (options.unmappablecharstring.value.value() && strlen(options.unmappablecharstring.value.value())) { inFileStream << "/pstoedit.globalunmappablecharacter (" << options.unmappablecharstring.value.value()[0] << ") def" << endl; } inFileStream << "/pstoedit.precisiontext " << options.precisiontext << " def" << endl; if (options.simulateClipping) { inFileStream << "/pstoedit.simulateclipping true def" << endl; } if (options.useAGL) { inFileStream << "/pstoedit.useAGL true def" << endl; } inFileStream << "/pstoedit.rotation " << options.rotation << " def" << endl; inFileStream << "/pstoedit.xscale " << options.xscale << " def" << endl; inFileStream << "/pstoedit.yscale " << options.yscale << " def" << endl; inFileStream << "/pstoedit.xshift " << options.xshift << " def" << endl; inFileStream << "/pstoedit.yshift " << options.yshift << " def" << endl; if (options.centered) { inFileStream << "/pstoedit.centered " << "true" << " def" << endl; } if (strequal(options.drivername.value.value(), "ps") || strequal(options.drivername.value.value(), "psf")) { inFileStream << "/pstoedit.escapetext true def" << endl; } if ((strequal(options.drivername.value.value(), "debug")) || (strequal(options.drivername.value.value(), "pdf"))) { inFileStream << "/pstoedit.usepdfmark true def" << endl; } inFileStream << "/pstoedit.replacementfont (" << options.replacementfont << ") def" << endl; gsout = gsoutName = full_qualified_tempnam("psout"); assert((gsin != gsout) && ("You seem to have a buggy version of tempnam" != 0)); // tempnam under older version of DJGPP are buggy // see search for BUGGYTEMPNAME in this file !! if (options.nameOfOutputFile) { inFileStream << "/pstoedit.targetoutputfile ("; writeFileName(inFileStream, options.nameOfOutputFile); inFileStream << ") def" << endl; inFileStream << "/pstoedit.nameOfOutputFilewithoutpercentD ("; writeFileName(inFileStream, nameOfOutputFilewithoutpercentD); inFileStream << ") def" << endl; } else { inFileStream << "/pstoedit.redirectstdout true def" << endl; inFileStream << "/pstoedit.targetoutputfile ("; writeFileName(inFileStream, "stdout"); inFileStream << ") def" << endl; } inFileStream << "/pstoedit.outputfilename ("; writeFileName(inFileStream, gsout.value()); inFileStream << ") def" << endl; inFileStream << "/pstoedit.inputfilename ("; writeFileName(inFileStream, options.nameOfInputFile); inFileStream << ") def" << endl; if (options.nameOfIncludeFile.value.value()) { ifstream filetest(options.nameOfIncludeFile.value.value()); if (!filetest) { errstream << "Could not open file " << options.nameOfIncludeFile << " for inclusion" << endl; return 1; } filetest.close(); inFileStream << "/pstoedit.nameOfIncludeFile ("; writeFileName(inFileStream, options.nameOfIncludeFile.value.value()); inFileStream << ") def" << endl; } switch (currentDriverDesc->backendDesiredImageFormat) { case DriverDescription::noimage : break; case DriverDescription::bmp : inFileStream << "/pstoedit.backendSupportsFileImages true def" << endl; inFileStream << "/pstoedit.withimages true def" << endl; inFileStream << "/pstoedit.imagedevicename (bmp16m) def" << endl; inFileStream << "/pstoedit.imagefilesuffix (.bmp) def" << endl; break; case DriverDescription::png : inFileStream << "/pstoedit.backendSupportsFileImages true def" << endl; inFileStream << "/pstoedit.withimages true def" << endl; inFileStream << "/pstoedit.imagedevicename (png16m) def" << endl; inFileStream << "/pstoedit.imagefilesuffix (.png) def" << endl; break; case DriverDescription::eps : inFileStream << "/pstoedit.backendSupportsFileImages true def" << endl; inFileStream << "/pstoedit.withimages true def" << endl; inFileStream << "/pstoedit.imagedevicename (epswrite) def" << endl; inFileStream << "/pstoedit.imagefilesuffix (.eps) def" << endl; break; case DriverDescription::memoryeps : inFileStream << "/pstoedit.withimages true def" << endl; break; default: break; } if ((currentDriverDesc->backendDesiredImageFormat != DriverDescription::noimage) && (currentDriverDesc->backendDesiredImageFormat != DriverDescription::memoryeps) && (!options.nameOfOutputFile) ) { errstream << "Warning: some types of raster images in the input file cannot be converted if the output is sent to standard output" << endl; } if ((!options.nocurves) && currentDriverDesc->backendSupportsCurveto) { inFileStream << "/pstoedit.doflatten false def" << endl; } else { inFileStream << "/pstoedit.doflatten true def" << endl; } if (!options.noquit) { inFileStream << "/pstoedit.quitprog { quit } def" << endl; } else { inFileStream << "/pstoedit.quitprog { } def" << endl; } if (options.nobindversion) { inFileStream << "/pstoedit.delaybindversion false def" << endl; } else { inFileStream << "/pstoedit.delaybindversion true def" << endl; } delete[]nameOfOutputFilewithoutpercentD; if (outputdriver && (outputdriver->knownFontNames() != 0)) { const char *const *fnames = outputdriver->knownFontNames(); unsigned int size = 0; while (*fnames) { size++; fnames++; } inFileStream << "/pstoedit.knownFontNames " << size << " dict def" << endl; inFileStream << "pstoedit.knownFontNames begin" << endl; fnames = outputdriver->knownFontNames(); while (*fnames) { inFileStream << "/" << *fnames << " true def" << endl; fnames++; } inFileStream << "end" << endl; } if (strequal(options.drivername.value.value(), "ps2ai")) { successstring = "%EOF"; // This is written by the ps2ai.ps // showpage in ps2ai does quit !!! // ps2ai needs special headers inFileStream << "/pstoedit.preps2ai where not { \n" // first run through this file (before ps2ai.ps) " /jout true def \n" " /joutput pstoedit.outputfilename def \n"; if (driveroptions && strequal(driveroptions, "-88")) { inFileStream << " /jtxt3 false cdef\n"; } inFileStream << " /pstoedit.textastext where { pop pstoedit.textastext not {/joutln true def } if } if \n" " /pstoedit.preps2ai false def \n" "}{ \n" " pop\n" // second run (after ps2ai.ps) " pstoedit.inputfilename run \n" // " (\\" << successstring << "\\n) jp" // " pstoedit.quitprog \n" " showpage \n" "} ifelse \n" << endl; } else { successstring = "% normal end reached by pstoedit.pro"; #ifdef USEPROLOGFROMFILE ifstream prologue("pstoedit.pro"); // errstream << " copying prologue file to " << gsin << endl; copy_file(prologue, inFileStream); #else const char *const *prologueline = PS_prologue; while (prologueline && *prologueline) { inFileStream << *prologueline << '\n'; prologueline++; } #endif } inFileStream.close(); // now call ghostscript Argv commandline; const char *gstocall = whichPI(errstream, options.verbose, options.gsregbase.value.value(),options.GSToUse.value.value()); if (gstocall == 0) { return 3; } commandline.addarg(gstocall); // rcw2: Current RiscOS port of gs can't find its fonts without this... #ifdef riscos commandline.addarg("-I"); #endif #if 0 // now handled by the next block (pioptions) char *gsargs = getRegistryValue(errstream, "common", "GS_LIB"); if (gsargs) { char *inclDirective = new char[strlen(gsargs) + 3]; strcpy(inclDirective, "-I"); strcat(inclDirective, gsargs); commandline.addarg(inclDirective); delete[]inclDirective; delete[]gsargs; } #endif const char *pioptions = defaultPIoptions(errstream, options.verbose); if (pioptions && (strlen(pioptions) > 0)) { commandline.addarg(pioptions); } if (!options.verbose) commandline.addarg("-q"); if (!strequal(options.drivername.value.value(), "ps2ai") ) { // not for ps2ai if (options.nobindversion) { // NOBIND disables bind in, e.g, gs_init.ps // these files are loaded before pstoedit.pro // so any already bound call to, e.g., show could // not be intercepted by pstoedit's show commandline.addarg("-dNOBIND"); } else { commandline.addarg("-dDELAYBIND"); } commandline.addarg("-dWRITESYSTEMDICT"); } if (options.verbose) { commandline.addarg("-dESTACKPRINT"); } if (options.withdisplay) { commandline.addarg("-dNOPAUSE"); } else { if (options.pngimage.value.value()) { commandline.addarg("-dNOPAUSE"); commandline.addarg("-dBATCH"); commandline.addarg("-sDEVICE=png16m"); RSString tempbuffer = "-sOutputFile="; tempbuffer += options.pngimage.value; commandline.addarg(tempbuffer.value()); } else { commandline.addarg("-dNODISPLAY"); } } commandline.addarg("-dNOEPS"); // otherwise EPSF files create implicit showpages and a save/restore pair which disturbs the setPageSize handling for (unsigned int psi = 0; psi < options.psArgs().argc; psi++) { commandline.addarg(options.psArgs().argv[psi]); } #if (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined (NetBSD) ) && !defined(DJGPP) RSString gsinfilename = RSString("\""); gsinfilename += gsin ; gsinfilename += RSString("\""); #else RSString gsinfilename = gsin; #endif if (strequal(options.drivername.value.value(), "ps2ai")) { // ps2ai needs special headers commandline.addarg(gsinfilename.value()); // the first time to set the paramters for ps2ai.ps commandline.addarg("ps2ai.ps"); commandline.addarg(gsinfilename.value()); // again, but this time it'll run the conversion } else { commandline.addarg(gsinfilename.value()); } if (options.verbose) errstream << "now calling the interpreter via: " << commandline << endl; // gsresult = system(commandline); gsresult = call_PI(commandline.argc, commandline.argv); if (gsresult != 0) { errstream << "PostScript/PDF Interpreter finished. Return status " << gsresult << " executed command : " << commandline << endl; } // ghostscript seems to return always 0, so // check whether the normal end was reached by pstoedit.pro if (!options.keepinternalfiles) (void) remove(gsin.value()); //wogl free(gsin); // if really returned !0 don't grep if (!gsresult) { if (options.verbose) errstream << "Now checking the temporary output" << endl; gsresult = grep(successstring, gsout.value(), errstream); } } if (gsresult != 0) { errstream << "The interpreter seems to have failed, cannot proceed !" << endl; if (!options.keepinternalfiles) (void) remove(gsout.value()); //wogl free(gsoutName); return 1; } else { if (outputdriver->withbackend()) { if (options.backendonly && (strequal(options.nameOfInputFile, stdinFileName) )) { // we need to copy stdin because we need to scan it twice // the first time for the boundingboxes and than a second time for the // real processing. gsout = full_qualified_tempnam("pssi"); if (options.verbose) { errstream << "copying stdin to " << gsout << endl; } ofstream copyofstdin(gsout.value()); copy_file(cin, copyofstdin); } { // local scope to force delete before delete of driver outputdriver->setdefaultFontName(options.replacementfont.value.value()); // if (nosubpathes) ((DriverDescription*) outputdriver->Pdriverdesc)->backendSupportsSubPathes=false; // outputdriver->simulateSubPaths = (bool) options.simulateSubPaths; const char * bbfilename = 0; if (options.useBBfrominput) { // read BB from original input file bbfilename = options.nameOfInputFile; } else { bbfilename = gsout.value(); } yyin = fopen(bbfilename, "rb"); // ios::binary | ios::nocreate if (!yyin) { errstream << "Error opening file " << bbfilename << endl; return 1; } PSFrontEnd fe(outFile, errstream, options, options.nameOfInputFile, options.nameOfOutputFile, currentDriverDesc, driveroptions, options.splitpages, outputdriver); if (options.verbose) errstream << "now reading BoundingBoxes from file " << bbfilename << endl; /* outputdriver-> */ drvbase::totalNumberOfPages() = fe.readBBoxes( /* outputdriver-> */ drvbase::bboxes()); fclose(yyin); if (options.verbose) { errstream << " got " << drvbase::totalNumberOfPages() << " page(s)" << endl; for (unsigned int i = 0; i < drvbase::totalNumberOfPages(); i++) { errstream << drvbase::bboxes()[i].ll << " " << drvbase::bboxes()[i].ur << endl; } } if (options.verbose) errstream << "now postprocessing the interpreter output" << endl; yyin = fopen(gsout.value(), "rb"); fe.run(options.mergelines); // now we can close it in any case - since we took a copy fclose(yyin); } if (options.verbose) errstream << "postprocessing the interpreter output finished" << endl; // now delete is done in fe.run delete outputdriver; if (options.backendonly && (strequal(options.nameOfInputFile, stdinFileName))) { (void) remove(gsout.value()); } } else { // outputdriver has no backend // Debug or PostScript driver ifstream gsoutStream(gsout.value()); if (options.verbose) errstream << "now copying '" << gsout << "' to '" << (options.nameOfOutputFile ? options.nameOfOutputFile : "standard output ") << "' "; copy_file(gsoutStream, *outputFilePtr); if (options.verbose) errstream << " done \n"; delete outputdriver; } if (!options.backendonly) { if (!options.keepinternalfiles) (void) remove(gsout.value()); } } //wogl free(gsoutName); } } // no backend specified // delete [] drivername; // delete [] nameOfInputFile; // delete [] nameOfOutputFile; return 0; } extern int callgs(int argc, const char *const argv[]); //defined in callgs.cpp extern const char *whichPI(ostream & errstream, int verbose, const char * gsToUse, const char *gsregbase); static bool versioncheckOK = false; extern "C" DLLEXPORT int pstoedit_checkversion(unsigned int callersversion) { versioncheckOK = (callersversion == pstoeditdllversion) || ((callersversion == 300) && (pstoeditdllversion == 301)); return versioncheckOK; } void ignoreVersionCheck() { versioncheckOK = true; } extern "C" DLLEXPORT int pstoeditwithghostscript(int argc, const char *const argv[], ostream & errstream, const DescriptionRegister * const pushinsPtr) { if (!versioncheckOK) { errorMessage("wrong version of pstoedit"); return -1; } return pstoedit(argc, argv, errstream, callgs, whichPI, pushinsPtr); } // // the following functions provide the interface for gsview // static const char *givenPI = 0; static const char *returngivenPI(ostream & errstream, int verbose, const char *gsregbase, const char * GSToUse) { unused(&errstream); unused(&verbose); unused(&gsregbase); unused(&GSToUse); return givenPI; } extern "C" DLLEXPORT int pstoedit_plainC(int argc, const char *const argv[], const char *const psinterpreter) { // this is called e.g. by gsview. if (!versioncheckOK) { errorMessage("wrong version of pstoedit"); return -1; } if (psinterpreter != 0) { // gsview uses 0 here givenPI = psinterpreter; return pstoedit(argc, argv, cerr, callgs, returngivenPI, 0); } else { return pstoedit(argc, argv, cerr, callgs, whichPI, 0); } } static DriverDescription_S * getPstoeditDriverInfo_internal(bool withgsdrivers) { if (!versioncheckOK) { errorMessage("wrong version of pstoedit"); return 0; } #ifndef UPPVERSION // not needed for importps loadpstoeditplugins("pstoedit", cerr, false ); #endif const int dCount = getglobalRp()->nrOfDescriptions(); /* use malloc to be compatible with C */ DriverDescription_S *result = (DriverDescription_S *) malloc((dCount + 1) * sizeof(DriverDescription_S)); DriverDescription_S *curR = result; assert(curR); const DriverDescription *const *dd = getglobalRp()->rp; while (dd && (*dd)) { const DriverDescription *currentDD = *dd; assert(currentDD); if (currentDD->nativedriver || withgsdrivers) { curR->symbolicname = currentDD->symbolicname; curR->explanation = currentDD->short_explanation; curR->suffix = currentDD->suffix; curR->additionalInfo = currentDD->additionalInfo(); curR->backendSupportsSubPathes = (int) currentDD->backendSupportsSubPathes; curR->backendSupportsCurveto = (int) currentDD->backendSupportsCurveto; curR->backendSupportsMerging = (int) currentDD->backendSupportsMerging; curR->backendSupportsText = (int) currentDD->backendSupportsText; curR->backendSupportsImages = (int) currentDD->backendDesiredImageFormat != DriverDescription::noimage; curR->backendSupportsMultiplePages = (int) currentDD->backendSupportsMultiplePages; curR++; } dd++; } curR++->symbolicname = 0; // indicator for end return result; } extern "C" DLLEXPORT DriverDescription_S * getPstoeditDriverInfo_plainC(void) { return getPstoeditDriverInfo_internal(true); } extern "C" DLLEXPORT DriverDescription_S* getPstoeditNativeDriverInfo_plainC(void) /* for the pstoedit native drivers - not the ones that are provided as short cuts to ghostscript */ { return getPstoeditDriverInfo_internal(false); } // // function to clear the memory allocated by the getPstoeditDriverInfo_plainC // function. This avoids conflicts with different heaps. // extern "C" DLLEXPORT void clearPstoeditDriverInfo_plainC(DriverDescription_S * ptr) { free(ptr); } #if defined(_WIN32) || defined(__OS2__) // // under Windows we need to be able to switch between two modes of calling GS - 1 via DLL and 2 with EXE // the EXE is needed when being called from gsview - whereas in all other cases the DLL is the better way // So the useDLL is set to false - and the pstoedit stand-alone program sets it to true // gsview uses the default which is false - hence the ghostscript is called via its exe // static int useDLL = false; // need to use int instead of bool because of C mode extern "C" DLLEXPORT void setPstoeditsetDLLUsage(int useDLL_p) { useDLL = useDLL_p; } extern "C" DLLEXPORT int getPstoeditsetDLLUsage() { return useDLL; } extern void set_gs_write_callback(write_callback_type * new_cb); // defined in callgsdllviaiapi.cpp extern "C" DLLEXPORT void setPstoeditOutputFunction(void *cbData, write_callback_type * cbFunction) { if (!versioncheckOK) { errorMessage("wrong version of pstoedit"); return; } static callbackBuffer cbBuffer(0, 0);// default /dev/null set_gs_write_callback(cbFunction); // for the gswin.DLL (void) cbBuffer.set_callback(cbData, cbFunction); #if defined(HAVESTL) || defined(__OS2__) (void)cerr.rdbuf(&cbBuffer); #else cerr = &cbBuffer; #endif } // END WINDOWS ONLY SECTION #endif pstoedit-3.62/src/pstoedit.h0000644000175500010010000000773612137224260013021 00000000000000#ifndef PSTOEDIT_H #define PSTOEDIT_H /* pstoedit.h : This file is part of pstoedit main control procedure Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef __cplusplus /* for C++ users more functions are available than for C users */ #ifndef cppcomp_h #include "cppcomp.h" #endif /* #include */ #ifdef HAVESTL #include USESTD #else #if defined (__GNUG__) && (__GNUC__>=3) /* if we dont define HAVESTL for g++ > 3.0, then we can use the simple forwards */ #include #else class istream; class ostream; #endif #endif /* end of cplusplus */ #endif #include "pstoedll.h" typedef int (*execute_interpreter_function)(int argc, const char * const argv[]); #ifdef __cplusplus typedef const char * (*whichPI_type)(ostream &, int, const char *, const char *); class DescriptionRegister; /* for "C" functions we cannot use "bool" */ extern "C" DLLEXPORT int pstoedit( int argc, const char * const argv[], ostream& errstream, execute_interpreter_function call_PI, whichPI_type whichPI, const DescriptionRegister* const pushinsPtr =0 ); /* sets either cout (true) or errstream is used */ extern "C" DLLEXPORT void useCoutForDiag(int flag); extern "C" DLLEXPORT int pstoeditwithghostscript(int argc, const char * const argv[], ostream& errstream, const DescriptionRegister* const pushinsPtr=0 ); #endif #ifdef __cplusplus extern "C" DLLEXPORT #endif int pstoedit_plainC(int argc, const char * const argv[], const char * const psinterpreter /* if 0, then pstoedit will look for one using whichpi() */ ); /* extern "C" DLLEXPORT const class DriverDescription* const * getPstoeditDriverInfo(ostream& errstream); */ #ifdef __cplusplus extern "C" DLLEXPORT #endif struct DriverDescription_S* getPstoeditDriverInfo_plainC(void); // // function to clear the memory allocated by the getPstoeditDriverInfo_plainC // function. This avoids conflicts with different heaps. // #ifdef __cplusplus extern "C" DLLEXPORT #endif void clearPstoeditDriverInfo_plainC(struct DriverDescription_S * ptr); #ifdef __cplusplus extern "C" DLLEXPORT #endif struct DriverDescription_S* getPstoeditNativeDriverInfo_plainC(void); /* for the pstoedit native drivers - not the ones that are provided as short cuts to ghostscript */ #ifdef __cplusplus extern "C" DLLEXPORT #endif int pstoedit_checkversion (unsigned int callersversion); void ignoreVersionCheck(void); /* not exported to the DLL interface, just used internally */ #ifdef __cplusplus #if defined(_WIN32) || defined(__OS2__) #include "cbstream.h" extern "C" DLLEXPORT void setPstoeditOutputFunction(void * cbData,write_callback_type* cbFunction); // // under Windows we need to be able to switch between two modes of calling GS - 1 via DLL and 2 with EXE // the EXE is needed when being called from gsview - whereas in all other cases the DLL is the better way // So the useDLL is set to false - and the pstoedit stand-alone program sets it to true // gsview uses the default which is false - hence the ghostscript is called via its exe // // need to use int instead of bool because of C mode extern "C" DLLEXPORT void setPstoeditsetDLLUsage( int useDLL_p); extern "C" DLLEXPORT int getPstoeditsetDLLUsage(); #endif #endif #endif pstoedit-3.62/src/pstoedit.ph0000744000175500010010000032206412137232300013166 00000000000000// DO NOT CHANGE THIS FILE. THIS FILE IS GENERATED FROM pstoedit.pro // You can get pstoedit.pro from the author of pstoedit // pstoedit.pro contains a lot more comments and explanations than pstoedit.ph const char * const PS_prologue[] = { //Title: pstoedit.pro / pstoedit.ph; This file is part ot pstoedit // // This file contains some redefinitions of PostScript(TM) operators // useful for the conversion of PostScript into a vector format via Ghostscript // // Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // " /pstoedit.copyright (Copyright \\(C\\) 1993 - 2013 Wolfgang Glunz) def ", " /pstoedit.image.dotranslate true def ", " currentdict /pstoedit.maptoisolatin1 known not ", " { ", " /pstoedit.maptoisolatin1 true def ", " } ", " if ", " currentdict /pstoedit.fontdebugging known not ", " { ", " /pstoedit.fontdebugging false def ", " } ", " if ", " currentdict /pstoedit.useoldnormalization known not ", " { ", " /pstoedit.useoldnormalization false def ", " } ", " if ", " currentdict /pstoedit.pstoedit.textastext known not ", " { ", " /pstoedit.pstoedit.textastext true def ", " } ", " if ", " currentdict /pstoedit.correctdefinefont known not ", " { ", " /pstoedit.correctdefinefont false def ", " } ", " if ", " currentdict /pstoedit.disabledrawtext known not ", " { ", " /pstoedit.disabledrawtext false def ", " } ", " if ", " currentdict /pstoedit.DrawGlyphBitmaps known not ", " { ", " /pstoedit.DrawGlyphBitmaps false def % if true, then overwrite the ignoreimage and ignoredraw variables ", " } ", " if ", " currentdict /pstoedit.useAGL known not ", " { ", " /pstoedit.useAGL false def ", " } ", " if ", " currentdict /pstoedit.autodrawtext known not ", " { ", " /pstoedit.autodrawtext false def ", " } ", " if ", " currentdict /pstoedit.t2fontsast1 known not ", " { ", " /pstoedit.t2fontsast1 false def ", " } ", " if ", " currentdict /pstoedit.passglyphnames known not ", " { ", " /pstoedit.passglyphnames false def % if true, then the glyphnames are passed instead of the characters ", " } ", " if ", " currentdict /pstoedit.ashexstring known not ", " { ", " /pstoedit.ashexstring true def % false means clear text ", " } ", " if ", " currentdict /pstoedit.checkfontnames known not ", " { ", " /pstoedit.checkfontnames true def ", " } ", " { ", " /pstoedit.ashexstring true def % enforce HEX mode ", " /pstoedit.maptoisolatin1 false def ", " } ", " ifelse ", " currentdict /pstoedit.flatnesstouse known not ", " { ", " /pstoedit.flatnesstouse 1.0 def ", " } ", " if ", " currentdict /pstoedit.escapetext known not ", " { ", " /pstoedit.escapetext false def ", " } ", " if ", " currentdict /pstoedit.redirectstdout known not ", " { ", " /pstoedit.redirectstdout false def ", " } ", " if ", " currentdict /pstoedit.usepdfmark known not ", " { ", " /pstoedit.usepdfmark false def ", " } ", " if ", " currentdict /pstoedit.outputfilename known not ", " { ", " /pstoedit.outputfilename (%stdout) def ", " } ", " if ", " currentdict /pstoedit.inputfilename known not ", " { ", " /pstoedit.inputfilename (%stdin) def ", " } ", " if ", " currentdict /pstoedit.doflatten known not ", " { ", " /pstoedit.doflatten true def ", " } ", " if ", " currentdict /pstoedit.withimages known not ", " { ", " /pstoedit.withimages false def ", " } ", " if ", " currentdict /pstoedit.backendSupportsFileImages known not ", " { ", " /pstoedit.backendSupportsFileImages false def ", " } ", " if ", " currentdict /pstoedit.verbosemode known not ", " { ", " /pstoedit.verbosemode false def ", " } ", " if ", " currentdict /pstoedit.replacementfont known not ", " { ", " /pstoedit.replacementfont (Courier) def ", " } ", " if ", " currentdict /pstoedit.delaybindversion known not ", " { ", " /pstoedit.delaybindversion true def ", " } ", " if ", " currentdict /pstoedit.scalefontversion known not ", " { ", " /pstoedit.scalefontversion false def ", " } ", " if ", " currentdict /pstoedit.simulateclipping known not ", " { ", " /pstoedit.simulateclipping false def ", " } ", " if ", " currentdict /pstoedit.useRGBcolors known not ", " { ", " /pstoedit.useRGBcolors false def ", " } ", " if ", " currentdict /pstoedit.dumpclippath known not ", " { ", " /pstoedit.dumpclippath false def ", " } ", " if ", " currentdict /pstoedit.rotation known not ", " { ", " /pstoedit.rotation 0 def ", " } ", " if ", " currentdict /pstoedit.xscale known not ", " { ", " /pstoedit.xscale 1 def ", " } ", " if ", " currentdict /pstoedit.yscale known not ", " { ", " /pstoedit.yscale 1 def ", " } ", " if ", " currentdict /pstoedit.xshift known not ", " { ", " /pstoedit.xshift 0 def ", " } ", " if ", " currentdict /pstoedit.yshift known not ", " { ", " /pstoedit.yshift 0 def ", " } ", " if ", " currentdict /pstoedit.centered known not ", " { ", " /pstoedit.centered false def ", " } ", " if ", " currentdict /pstoedit.imagedevicename known not ", " { ", " /pstoedit.imagedevicename (bmp16m) def ", " /pstoedit.imagefilesuffix (.bmp) def ", " } ", " if ", " currentdict /pstoedit.precisiontext known not ", " { ", " /pstoedit.precisiontext 0 def ", " } ", " if ", " currentdict /pstoedit.globalunmappablecharacter known not ", " { ", " /pstoedit.globalunmappablecharacter ( ) def %Note: we use a space instead of a # since ", " } ", " if ", " currentdict /pstoedit.pagetoextract known not ", " { ", " /pstoedit.pagetoextract 0 def ", " } ", " if ", " currentdict /pstoedit.withpscover known not ", " { ", " /pstoedit.withpscover false def ", " } ", " if ", " pstoedit.withpscover ", " { ", " /covstream (pscover.txt) (w) file def ", " /pstoedit.indent 0 store ", " /psentry ", " { ", " 0 1 pstoedit.indent ", " { ", " pop covstream ( ) writestring ", " } ", " for ", " covstream ({ ) writestring ", " 20 string cvs covstream exch writestring ", " covstream (\\n) writestring ", " covstream flushfile ", " pstoedit.indent 1 add /pstoedit.indent exch store ", " } ", " def ", " /psexit ", " { ", " pstoedit.indent 1 sub /pstoedit.indent exch store ", " 0 1 pstoedit.indent ", " { ", " pop covstream ( ) writestring ", " } ", " for ", " covstream (}\\n) writestring covstream flushfile ", " } ", " def ", " /PSCOVER ", " { ", " 20 -string cvs covstream exch writestring covstream (\\n) writestring covstream flushfile ", " } ", " def ", " } ", " { ", " /psentry ", " { ", " pop ", " } ", " def ", " /psexit ", " { ", " } ", " def ", " /PSCOVER ", " { ", " pop ", " } ", " def ", " } ", " ifelse ", " pstoedit.delaybindversion ", " { ", " revision 353 ge ", " { ", " NOBIND /DELAYBIND where ", " { ", " pop DELAYBIND or ", " } ", " if ", " { ", " systemdict begin ", " /bind /.bind load ", " /.forcedef where ", " { ", " pop .forcedef ", " } ", " { ", " def ", " } ", " ifelse ", " end ", " } ", " if ", " } ", " if ", " } ", " if ", " /.forcedef where ", " { ", " pop ", " } ", " { ", " /.forcedef /def load def ", " } ", " ifelse ", " false ", " { ", " /redef ", " { ", " systemdict begin 1 index exch .makeoperator //.forcedef end ", " } ", " bind def ", " /soverload ", " { ", " bind redef ", " } ", " bind def ", " /overload ", " { ", " bind redef ", " } ", " bind def ", " systemdict /.setglobal known ", " { ", " .currentglobal true .setglobal ", " } ", " if ", " } ", " { ", " systemdict /.setglobal known ", " { ", " .currentglobal true .setglobal ", " } ", " if ", " /soverload ", " { ", " systemdict begin bind def end ", " } ", " def ", " /overload ", " { ", " bind def ", " } ", " bind def ", " } ", " ifelse ", " /outstream pstoedit.outputfilename (w) file def ", " pstoedit.redirectstdout ", " { ", " /errstream (%stderr) (w) file def ", " /print ", " { ", " errstream exch writestring ", " } ", " overload ", " /flush ", " { ", " errstream flushfile ", " } ", " overload ", " } ", " if ", " /dumpcurrentCTM ", " { ", " (CurrentCTM) matrix currentmatrix pstack pop pop pop ", " } ", " def ", " /-printalways ", " { ", " outstream exch writestring ", " } ", " def ", " /-print ", " { ", " pstoedit.pagetoextract 0 eq pstoedit.pagetoextract pstoedit.pagenr cvi eq or ", " { ", " -printalways ", " 1 1 -string cvs pstoedit.somethingprinted copy pop % remember - something was printed ", " } ", " { ", " pop ", " } ", " ifelse ", " } ", " def ", " /-printhexalways ", " { ", " { ", " inttosinglechar ", " dup ", " 1 normalizecharacter_wrapper ", " { ", " exch pop % remove plain c since we can use the mapped one. ", " pstoedit.fontdebugging ", " { ", " dup pstoedit.glyphname 1000 -string cvs (normalized:) pstack pop pop pop ", " } ", " if ", " outstream exch writehexstring ", " } ", " { ", " outstream exch writehexstring ", " } ", " ifelse ", " } ", " forall ", " } ", " def ", " /-printhex ", " { ", " pstoedit.pagetoextract 0 eq pstoedit.pagetoextract pstoedit.pagenr cvi eq or ", " { ", " -printhexalways ", " 1 1 -string cvs pstoedit.somethingprinted copy pop % remember - something was printed ", " } ", " { ", " pop ", " } ", " ifelse ", " } ", " def ", " /-printNC ", " { ", " pstoedit.pagetoextract 0 eq pstoedit.pagetoextract pstoedit.pagenr cvi eq or ", " { ", " -printalways ", " } ", " { ", " pop ", " } ", " ifelse ", " } ", " def ", " /-fill /fill load def ", " /-eofill /eofill load def ", " /-stroke /stroke load def ", " /-image /image load def ", " /-imagemask /imagemask load def ", " /-colorimage /colorimage load def ", " /-awidthshow /awidthshow load def ", " /-showpage /showpage load def ", " /-string /string load def ", " /-lt /lt load def ", " /-ge /ge load def ", " /-charpath /charpath load def ", " /-stringwidth /stringwidth load def ", " languagelevel 1 gt ", " { ", " /-glyphshow /glyphshow load def ", " } ", " if ", " /pstoedit.pagenr (1 ) store ", " /pstoedit.somethingprinted (0) store % indicates whether something was written. ", " /pstoedit.replacedfont false store % if true, font was replaced with Courier ", " /pstoedit.ignoredraw false store % if true, ignore all fill, eofill, stroke ", " /pstoedit.ignoreimage false store % if true, ignore all *image* ", " /pstoedit.textshown false store ", " /pstoedit.fontunit 1000 store % standard fonts have a unit of 1/1000 ", " /pstoedit.x 1 store ", " /pstoedit.y 1 store ", " /pstoedit.dumpstring () store ", " /pstoedit.istype0 false store ", " /pstoedit.fontselectorbyte 0 store ", " /pstoedit.currentpositionisfontselector true store % init ", " /pstoedit.dumpop ", " { ", " } ", " store ", " /pstoedit.y1 1 store ", " /pstoedit.x1 1 store ", " /pstoedit.y2 1 store ", " /pstoedit.x2 1 store ", " /pstoedit.inputchar 0 store ", " /pstoedit.outputchar 0 store ", " /pstoedit.glyphname () store ", " /pstoedit.glyphname 0 store ", " /pstoedit.inverseDict 0 store ", " /pstoedit.currentstring () store ", " /pstoedit.normalizedstring () store ", " /pstoedit.stringindex 0 store ", " /pstoedit.angle 0 store ", " /pstoedit.pathnumber (0 ) store ", " /pstoedit.deviceheight 0 def ", " /pstoedit.deviceinfoshown false def ", " /pstoedit.dpiscale 1 def ", " /pstoedit.currentscale 1 def ", " /pstoedit.glyphcounter 0 def ", " /pstoedit.ll.x (999999 ) def ", " /pstoedit.ll.y (999999 ) def ", " /pstoedit.ur.x (0 ) def ", " /pstoedit.ur.y (0 ) def ", " /pstoedit.bbclear ( ) def ", " /pstoedit.dotrace (0) store % switched on and off dynamically ", " /pstoedit.unmappablecharacter pstoedit.globalunmappablecharacter 1 string cvs store ", " /-findfont /findfont load def ", " /-definefont /definefont load def ", " /-currentrgbcolor /currentrgbcolor load def ", " /-currentcmykcolor /currentcmykcolor load def ", " /-concat /concat load def ", " /s100 100 -string def ", " /s1000 1000 -string def ", " /globals100 ", " { ", " currentglobal true setglobal 100 -string exch setglobal ", " } ", " def ", " /canIterateThroughString ", " { ", " currentfont /FontType get 0 eq ", " { ", " currentfont /FMapType get dup dup 2 eq exch 4 eq or exch 5 eq or ", " } ", " { ", " true % for all other fonts we assume to be able to handle the string char by char ", " } ", " ifelse ", " } ", " def ", " /pstoedit.FORALL ", " { ", " 2 dict begin ", " currentfont dup /FontType get 0 eq ", " { ", " /FMapType get dup 2 eq exch 5 eq or % leave ((FmapType == 2) OR (FmapType == 5) ) on stack ", " } ", " { ", " pop % the fontdict ", " false ", " } ", " ifelse ", " { ", " /pstoedit.FORPROC exch cvx def ", " /pstoedit.FORSTRING exch def ", " 0 2 pstoedit.FORSTRING length 1 sub ", " { ", " /pstoedit.FORINDEX exch def ", " /CHAR2 2 string def ", " CHAR2 0 pstoedit.FORSTRING pstoedit.FORINDEX get put ", " CHAR2 1 pstoedit.FORSTRING pstoedit.FORINDEX 1 add get put ", " CHAR2 ", " { ", " pstoedit.FORPROC ", " } ", " exec ", " } ", " for ", " } ", " { ", " /pstoedit.FORPROC exch cvx def ", " /pstoedit.FORSTRING exch def ", " 0 1 pstoedit.FORSTRING length 1 sub ", " { ", " /pstoedit.FORINDEX exch def ", " /CHAR1 1 string def ", " CHAR1 0 pstoedit.FORSTRING pstoedit.FORINDEX get put ", " CHAR1 ", " (CHAR1: ) pstack pop ", " { ", " pstoedit.FORPROC ", " } ", " exec ", " } ", " for ", " } ", " ifelse ", " end ", " } ", " def ", " /-gsave /gsave load def ", " /-grestore /grestore load def ", " /-save /save load def ", " /-restore /restore load def ", " /-clip /clip load def ", " /-eoclip /eoclip load def ", " languagelevel 1 gt ", " { ", " /-rectclip /rectclip load def ", " /-setgstate /setgstate load def ", " } ", " if ", " /pstoedit.writesaverestore (0) store ", " pstoedit.dumpclippath pstoedit.simulateclipping not and ", " { 837 psentry ", " /pstoedit.writesaverestore (1) store % use a string to have it \"global\" ", " /gsave ", " { 845 psentry ", " -gsave pstoedit.writesaverestore (1) eq ", " { 847 psentry ", " (gsave %{\\n ) -print ", " psexit } ", " if ", " psexit } ", " soverload ", " /grestore ", " { 856 psentry ", " -grestore pstoedit.writesaverestore (1) eq ", " { 858 psentry ", " (grestore %}\\n ) -print ", " psexit } ", " if ", " psexit } ", " soverload ", " /save ", " { 866 psentry ", " -save ", " pstoedit.writesaverestore (1) eq ", " { 869 psentry ", " (save %{\\n) -print ", " psexit } ", " if ", " psexit } ", " soverload ", " /restore ", " { 877 psentry ", " pstoedit.writesaverestore (1) eq ", " { 879 psentry ", " (restore %}\\n) -print ", " psexit } ", " { 883 psentry ", " (%HIDDENRESTORE \\n) -print ", " psexit } ", " ifelse ", " -restore ", " psexit } ", " soverload ", " /clip ", " { 894 psentry ", " (% clippath\\n) ", " { 896 psentry ", " -clip ", " psexit } ", " (clip) dumppath ", " psexit } ", " soverload ", " /eoclip ", " { 906 psentry ", " (% clippath\\n) ", " { 908 psentry ", " -eoclip ", " psexit } ", " (eoclip) dumppath ", " psexit } ", " soverload ", " /rectclip ", " { 918 psentry ", " newpath ", " 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto ", " closepath clip newpath ", " psexit } ", " soverload ", " /dummyrectclip ", " { 924 psentry ", " (Executing rectclip : result may not be correct with respect to clipping\\n) true printwarning ", " -rectclip ", " psexit } ", " soverload ", " /setgstate ", " { 931 psentry ", " (Executing setgstate : result may not be correct with respect to clipping\\n) true printwarning ", " -setgstate ", " psexit } ", " soverload ", " psexit } ", " if ", " languagelevel 1 gt ", " { 941 psentry ", " /-rectfill /rectfill load def ", " /rectfill ", " { 944 psentry ", " newpath ", " 4 2 roll moveto ", " 1 index 0 rlineto ", " 0 exch rlineto ", " neg 0 rlineto ", " closepath % normally not needed in fill - just to enable is_rectangle to recognize this rectangle as well. ", " pstoedit.fill ", " psexit } ", " soverload ", " psexit } ", " if ", " /dummyrectfill ", " { 957 psentry ", " (Executing rectfill : not yet implemented\\n) true printwarning ", " -rectfill ", " psexit } ", " soverload ", " languagelevel 1 gt ", " { 964 psentry ", " /-rectstroke /rectstroke load def ", " /rectstroke ", " { 967 psentry ", " newpath ", " pstoedit.verbosemode ", " { 969 psentry ", " (Executing emulated rectstroke\\n) true printwarning ", " psexit } ", " if ", " 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto ", " closepath pstoedit.stroke ", " psexit } ", " soverload ", " psexit } ", " if ", " /dummyrectstroke ", " { 982 psentry ", " pstoedit.verbosemode ", " { 984 psentry ", " (Executing dummyrectstroke : not yet implemented\\n) true printwarning ", " psexit } ", " if ", " -rectstroke ", " psexit } ", " soverload ", " languagelevel 2 gt ", " { 993 psentry ", " /-shfill /shfill load def ", " /shfill ", " { 1012 psentry ", " begin ", " currentdict /ShadingType known ", " ShadingType 7 eq and ", " currentdict /ColorSpace known and ", " ColorSpace /DeviceRGB eq and ", " currentdict /DataSource known and ", " DataSource type /arraytype eq and ", " DataSource length 45 eq and ", " { 1022 psentry ", " gsave ", " newpath ", " DataSource 1 2 getinterval aload pop moveto ", " DataSource 3 6 getinterval aload pop curveto ", " DataSource 9 6 getinterval aload pop curveto ", " DataSource 15 6 getinterval aload pop curveto ", " closepath ", " 0.0 ", " 33 3 42 ", " { 1037 psentry ", " DataSource exch get ", " add ", " psexit } ", " for ", " 4.0 div ", " 0.0 ", " 34 3 43 ", " { 1045 psentry ", " DataSource exch get ", " add ", " psexit } ", " for ", " 4.0 div ", " 0 ", " 35 3 44 ", " { 1053 psentry ", " DataSource exch get ", " add ", " psexit } ", " for ", " 4.0 div ", " setrgbcolor ", " fill ", " grestore ", " psexit } ", " if ", " end ", " psexit } ", " soverload ", " /formerdummyshfill ", " { 1077 psentry ", " pstoedit.verbosemode ", " { 1079 psentry ", " (Executing shfill operator - this is not yet supported by pstoedit\\n) true printwarning ", " psexit } ", " if ", " -shfill ", " psexit } ", " soverload ", " psexit } ", " if ", " languagelevel 1 gt ", " { 1090 psentry ", " /-ufill /ufill load def ", " /ufill ", " { 1093 psentry ", " pstoedit.verbosemode ", " { 1096 psentry ", " (Executing emulated ufill\\n) true printwarning ", " psexit } ", " if ", " gsave % Save graphics state ", " newpath % Clear current path ", " uappend % Interpret userpath ", " pstoedit.fill % Stroke the path ", " grestore % Restore graphics state ", " psexit } ", " soverload ", " /-ueofill /ueofill load def ", " /ueofill ", " { 1110 psentry ", " pstoedit.verbosemode ", " { 1113 psentry ", " (Executing emulated ueofill\\n) true printwarning ", " psexit } ", " if ", " gsave % Save graphics state ", " newpath % Clear current path ", " uappend % Interpret userpath ", " pstoedit.eofill % Stroke the path ", " grestore % Restore graphics state ", " psexit } ", " soverload ", " psexit } ", " if ", " /pstoedit.numbertype ", " { 1128 psentry ", " type dup /realtype eq exch /integertype eq or ", " psexit } ", " def ", " /pstoedit.mattest ", " { 1134 psentry ", " dup type /arraytype eq ", " { 1137 psentry ", " dup xcheck ", " { 1140 psentry ", " pop false ", " psexit } ", " { 1143 psentry ", " dup length 6 eq ", " { 1145 psentry ", " true exch ", " { 1148 psentry ", " pstoedit.numbertype and ", " psexit } ", " forall ", " psexit } ", " { 1153 psentry ", " pop false % if length is not 6 ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 1160 psentry ", " pop false ", " psexit } ", " ifelse ", " psexit } ", " def ", " languagelevel 1 gt ", " { 1168 psentry ", " /-ustroke /ustroke load def ", " /ustroke ", " { 1171 psentry ", " pstoedit.verbosemode ", " { 1174 psentry ", " (Executing emulated ustroke\\n) true printwarning ", " psexit } ", " if ", " dup pstoedit.mattest ", " { 1185 psentry ", " gsave % Save graphics state ", " newpath % Clear current path ", " exch uappend % Interpret userpath ", " concat % Concatenate matrix to CTM ", " pstoedit.stroke % Stroke the path ", " grestore % Restore graphics state ", " psexit } ", " { 1194 psentry ", " gsave % Save graphics state ", " newpath % Clear current path ", " uappend % Interpret userpath ", " pstoedit.stroke % Stroke the path ", " grestore % Restore graphics state ", " psexit } ", " ifelse ", " psexit } ", " soverload ", " psexit } ", " if ", " pstoedit.usepdfmark ", " { 1214 psentry ", " /currentdistillerparams 1 dict def ", " currentdistillerparams begin ", " /CoreDistVersion 2000 def ", " end ", " psexit } ", " if ", " /debugprint ", " { %nc ", " (\\% PRINT ) -print ", " -print ", " ( MSG\\n) -print ", " } ", " def ", " /printwarning ", " { %nc ", " { %nc ", " (Warning: ) print ", " (%Warning: ) -printalways ", " } ", " if ", " dup ", " print ", " -printalways ", " } ", " def ", " /onechar 1 -string def ", " /inttosinglechar ", " { %nc ", " onechar exch 0 exch put ", " onechar 1 -string cvs ", " } ", " def ", " /InverseISO 1500 256 add dict def ", " /InversePDF 1500 256 add dict def ", " /pstoedit.DEVICEINFO ", " { 1296 psentry ", " /deviceinfo where ", " { 1302 psentry ", " pop % the dict ", " revision 500 -lt ", " { 1306 psentry ", " deviceinfo ", " psexit } ", " { 1309 psentry ", " systemdict begin currentpagedevice end ", " psexit } ", " ifelse ", " psexit } ", " { 1314 psentry ", " systemdict begin currentpagedevice end ", " psexit } ", " ifelse ", " psexit } ", " def ", " /pstoedit.computeDPIscale ", " { 1323 psentry ", " languagelevel 1 gt ", " { 1325 psentry ", " pstoedit.DEVICEINFO /HWResolution known ", " { 1327 psentry ", " pstoedit.DEVICEINFO /HWResolution get 0 get ", " 72 div /pstoedit.dpiscale exch store % normalize dpi to 72 ", " psexit } ", " { 1333 psentry ", " /pstoedit.dpiscale 1 store ", " psexit } ", " ifelse ", " psexit } ", " { 1338 psentry ", " /pstoedit.dpiscale 1 store ", " psexit } ", " ifelse ", " psexit } ", " def ", " /setdummydevice ", " { 1347 psentry ", " (NOTE: THIS IS A DEBUG VERSION. PLEASE REMOVE CALL TO setdummydevice\\n) print ", " mark ", " /OutputFile (dummy.png) ", " /HWResolution [ 72 72 ] ", " /PageSize [ 1000 1000 ] ", " (pswrite) ", " finddevice ", " putdeviceprops ", " setdevice ", " psexit } ", " def ", " /pstoedit.initialize ", " { ", " 0 0 transform ", " /pstoedit.deviceheight exch store ", " pop ", " /pstoedit.deviceinfoshown false store ", " pstoedit.computeDPIscale ", " (gs_agl.ps) .libfile pstoedit.useAGL and ", " { ", " pstoedit.verbosemode ", " { ", " (using gs_agl.ps for normalization ) print ", " } ", " if ", " run ", " pstoedit.verbosemode ", " { ", " (done evaluating gs_agl.ps\\n) print ", " } ", " if ", " AdobeGlyphList ", " { ", " dup type ", " /arraytype eq ", " { ", " 0 get % in case of an array, just use the first one ", " } ", " if ", " /pstoedit.glyphcode exch store ", " /pstoedit.glyphname exch store ", " pstoedit.glyphcode 256 lt ", " { ", " pstoedit.glyphcode inttosinglechar pop ", " InverseISO pstoedit.glyphname pstoedit.glyphcode inttosinglechar put ", " InversePDF pstoedit.glyphname pstoedit.glyphcode inttosinglechar put ", " } ", " if ", " } ", " forall ", " } ", " { ", " pop % .libfile leaves the filename on the stack in this case ", " /pstoedit.glyphcounter 0 store ", " ISOLatin1Encoding ", " { ", " /pstoedit.glyphname exch store ", " InverseISO pstoedit.glyphname known not ", " { ", " InverseISO pstoedit.glyphname pstoedit.glyphcounter inttosinglechar put ", " InversePDF pstoedit.glyphname pstoedit.glyphcounter inttosinglechar put ", " } ", " if ", " /pstoedit.glyphcounter pstoedit.glyphcounter 1 add store ", " } ", " forall ", " } ", " ifelse ", " 32 1 127 ", " { ", " dup /pstoedit.glyphcounter exch store ", " inttosinglechar cvn /pstoedit.glyphname exch store ", " InverseISO pstoedit.glyphname known not ", " { ", " InverseISO pstoedit.glyphname pstoedit.glyphcounter inttosinglechar put ", " InversePDF pstoedit.glyphname pstoedit.glyphcounter inttosinglechar put ", " } ", " if ", " } ", " for ", " InverseISO 11 inttosinglechar cvn (ff) put ", " InverseISO 12 inttosinglechar cvn (fi) put ", " InverseISO 13 inttosinglechar cvn (fl) put ", " InversePDF 11 inttosinglechar cvn (ff) put ", " InversePDF 12 inttosinglechar cvn (fi) put ", " InversePDF 13 inttosinglechar cvn (fl) put ", " InverseISO begin ", " /.notdef pstoedit.unmappablecharacter def % wogltmp(@) def ", " /quotesinglbase (,) def ", " /quotesingle (') def ", " /florin (f) def ", " /quotedblbase (,,) def ", " /ellipsis (...) def ", " /perthousand (%o) def ", " /guilsinglleft (<) def ", " /OE (OE) def ", " /quotedblleft (\") def ", " /quotedblright (\") def ", " /bullet (*) def ", " /endash (-) def ", " /emdash (-) def ", " /trademark (TM) def ", " /guilsinglright (>) def ", " /oe (oe) def ", " /Ydieresis (Y) def ", " /fraction (/) def ", " /fi (fi) def ", " /fl (fl) def ", " /hyphen (-) def ", " end ", " InversePDF begin ", " /.notdef pstoedit.unmappablecharacter def ", " /breve 24 inttosinglechar def ", " /caron 25 inttosinglechar def ", " /circumflex 26 inttosinglechar def ", " /dotaccent 27 inttosinglechar def ", " /hungarumlaut 28 inttosinglechar def ", " /ogonek 29 inttosinglechar def ", " /ring 30 inttosinglechar def ", " /tilde 31 inttosinglechar def ", " /quotesingle 39 inttosinglechar def ", " /grave 96 inttosinglechar def ", " /bullet 128 inttosinglechar def ", " /dagger 129 inttosinglechar def ", " /daggerdbl 130 inttosinglechar def ", " /ellipsis 131 inttosinglechar def ", " /emdash 132 inttosinglechar def ", " /endash 133 inttosinglechar def ", " /florin 134 inttosinglechar def ", " /fraction 135 inttosinglechar def ", " /guilsinglleft 136 inttosinglechar def ", " /guilsinglright 137 inttosinglechar def ", " /minus 138 inttosinglechar def ", " /perthousand 139 inttosinglechar def ", " /quotedblbase 140 inttosinglechar def ", " /quotedblleft 141 inttosinglechar def ", " /quotedblright 142 inttosinglechar def ", " /quoteleft 143 inttosinglechar def ", " /quoteright 144 inttosinglechar def ", " /quotesinglbase 145 inttosinglechar def ", " /trademark 146 inttosinglechar def ", " /fi 147 inttosinglechar def ", " /fl 148 inttosinglechar def ", " /Lslash 149 inttosinglechar def ", " /OE 150 inttosinglechar def ", " /Scaron 151 inttosinglechar def ", " /Ydieresis 152 inttosinglechar def ", " /Zcaron 153 inttosinglechar def ", " /dotlessi 154 inttosinglechar def ", " /lslash 155 inttosinglechar def ", " /oe 156 inttosinglechar def ", " /scaron 157 inttosinglechar def ", " /zcaron 158 inttosinglechar def ", " /hyphen 45 inttosinglechar def ", " /caron 25 inttosinglechar def ", " /space 32 inttosinglechar def ", " end ", " } ", " def ", " /pstoedit.quit ", " { ", " pstoedit.somethingprinted cvi 0 eq pstoedit.pagetoextract 0 ne and ", " { ", " (no graphics found on selected page, maybe pagenr is too high?\\n) true printwarning ", " } ", " if ", " flush ", " (\\% normal end reached by pstoedit.pro\\n) -printalways ", " (\\%\\%Trailer\\n) -printalways ", " (\\%\\%Pages: ) -printalways pstoedit.pagenr cvi 1 sub 100 -string cvs -printalways (\\n) -printalways ", " (\\%\\%EOF\\n) -printalways ", " pstoedit.quitprog ", " } ", " def ", " /getfrominverse ", " { 1604 psentry ", " /pstoedit.inverseDict exch store ", " 0 get % get first and only char of string as int ", " /pstoedit.inputchar exch store ", " currentfont /Encoding get ", " dup length pstoedit.inputchar gt ", " { 1618 psentry ", " pstoedit.inputchar ", " get ", " /pstoedit.glyphname exch store ", " pstoedit.inverseDict pstoedit.glyphname known ", " { 1626 psentry ", " pstoedit.inverseDict pstoedit.glyphname get ", " dup 0 get 0 eq ", " { 1630 psentry ", " (unable to map [c1] glyph name ) print pstoedit.glyphname ", " 1000 -string cvs print ( encoded as ) print ", " pstoedit.inputchar 1000 -string cvs print (\\n) print ", " pop false ", " psexit } ", " { 1636 psentry ", " true % mapped ! ", " psexit } ", " ifelse ", " psexit } ", " { 1641 psentry ", " (unable to map [c2] glyph name ) print pstoedit.glyphname ", " 1000 -string cvs print ( encoded as ) print ", " pstoedit.inputchar 1000 -string cvs print ( - using the PostScript code value instead.\\n) print ", " false ", " psexit } ", " ifelse ", " psexit } ", " { 1649 psentry ", " (problem with Encoding vector of font \\n) print ", " pop % the Encoding vector ", " false ", " psexit } ", " ifelse ", " psexit } ", " def ", " /CheckForTextFont ", " { 1672 psentry ", " currentfont /Encoding get dup length 66 -ge ", " { 1677 psentry ", " 65 get /A eq ", " psexit } ", " { 1681 psentry ", " pop false ", " psexit } ", " ifelse ", " psexit } ", " def ", " /GetCurrentFontName ", " { 1689 psentry ", " currentfont /FontName known ", " { 1691 psentry ", " currentfont /FontName get ", " psexit } ", " { 1694 psentry ", " (\"font without FontName entry\") ", " psexit } ", " ifelse ", " psexit } ", " def ", " /CheckForTextFontVerbose ", " { 1702 psentry ", " CheckForTextFont ", " { 1704 psentry ", " true ", " psexit } ", " { 1707 psentry ", " pstoedit.verbosemode ", " { 1709 psentry ", " GetCurrentFontName ", " 100 -string cvs true printwarning ", " ( seems to be a non text font - you may want to use -dt or -adt.\\n) false printwarning ", " psexit } ", " if ", " false ", " psexit } ", " ifelse ", " psexit } ", " def ", " /oldnormalizecharacter ", " { 1724 psentry ", " CheckForTextFont pstoedit.maptoisolatin1 and ", " { 1735 psentry ", " pstoedit.usepdfmark ", " { 1737 psentry ", " InversePDF ", " psexit } ", " { 1740 psentry ", " InverseISO ", " psexit } ", " ifelse ", " getfrominverse ", " psexit } ", " { 1749 psentry ", " pstoedit.fontdebugging ", " { 1751 psentry ", " (unmapped pfad fuer non text fonts - old ) pstack pop ", " psexit } ", " if ", " true % we tag this case as mapped as well ", " psexit } ", " ifelse ", " psexit } ", " def ", " /pstoedit.FontsForWhichToBlockRemapping 10 dict def ", " pstoedit.FontsForWhichToBlockRemapping begin ", " /Symbol true def ", " end ", " /normalizecharacter ", " { 1767 psentry ", " currentfont /FontName get pstoedit.FontsForWhichToBlockRemapping exch known ", " not ", " pstoedit.maptoisolatin1 and ", " { 1778 psentry ", " dup % keep the char for later \"true\" path ", " pstoedit.usepdfmark ", " { 1781 psentry ", " InversePDF ", " psexit } ", " { 1784 psentry ", " InverseISO ", " psexit } ", " ifelse ", " getfrominverse ", " { 1791 psentry ", " exch pop ", " true % return true, i.e. ", " psexit } ", " { 1796 psentry ", " CheckForTextFont ", " { 1800 psentry ", " pop % remove the kept char ", " false ", " psexit } ", " { 1804 psentry ", " true ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 1811 psentry ", " pstoedit.fontdebugging ", " { 1813 psentry ", " (unmapped pfad fuer non text fonts ) pstack pop ", " psexit } ", " if ", " true % we tag this case as mapped as well ", " psexit } ", " ifelse ", " psexit } ", " def ", " /normalizecharacter_wrapper ", " { 1824 psentry ", " pstoedit.fontdebugging ", " { 1826 psentry ", " (kontext: ) pstack pop ", " psexit } ", " if ", " pop % the last pop pops the context id ", " pstoedit.useoldnormalization ", " { 1832 psentry ", " oldnormalizecharacter ", " psexit } ", " { 1835 psentry ", " normalizecharacter ", " psexit } ", " ifelse ", " psexit } ", " def ", " /normalizestring ", " { 1843 psentry ", " dup ", " length 2 mul -string /pstoedit.normalizedstring exch store ", " /pstoedit.stringindex 0 store % position in output string ", " { 1849 psentry ", " inttosinglechar ", " 2 normalizecharacter_wrapper ", " not ", " { 1855 psentry ", " pstoedit.unmappablecharacter ", " psexit } ", " if ", " dup length exch % save for later adjustment of index ", " pstoedit.normalizedstring exch ", " pstoedit.stringindex exch ", " putinterval ", " pstoedit.stringindex add /pstoedit.stringindex exch store ", " psexit } ", " forall ", " pstoedit.normalizedstring 0 pstoedit.stringindex getinterval ", " psexit } ", " def ", " /pstoedit.indexinarray ", " { 1874 psentry ", " exch % v a ", " false % v a false ", " 1 index length 1 sub -1 0 ", " { 1878 psentry ", " 2 index % v a false i a ", " 1 index % v a false i a i ", " get % v a false i av ", " 4 index % v a false i av v ", " eq ", " { 1886 psentry ", " exch pop % v a i ", " true ", " exit % v a i true ", " psexit } ", " { 1892 psentry ", " pop % the index leaving v a false ", " psexit } ", " ifelse ", " psexit } ", " for ", " { 1899 psentry ", " exch pop exch pop ", " psexit } ", " { 1902 psentry ", " pop pop -1 ", " psexit } ", " ifelse ", " psexit } ", " def ", " /getglyphaschar ", " { 1910 psentry ", " /pstoedit.glyphname exch store ", " currentfont /Encoding get pstoedit.glyphname pstoedit.indexinarray ", " dup -1 eq ", " { 1916 psentry ", " pop ", " (unable to map [c3] glyph name ) print pstoedit.glyphname ", " 1000 -string cvs print %debugwogl( from ) print ", " pstoedit.unmappablecharacter ", " psexit } ", " { 1924 psentry ", " inttosinglechar % just return the index as result ", " psexit } ", " ifelse ", " psexit } ", " def ", " /oldgetglyphaschar ", " { 1932 psentry ", " /pstoedit.glyphname exch store ", " pstoedit.glyphname ", " pstoedit.usepdfmark ", " { 1938 psentry ", " InversePDF ", " psexit } ", " { 1941 psentry ", " InverseISO ", " psexit } ", " ifelse ", " 2 copy ", " exch known ", " { 1948 psentry ", " exch get ", " psexit } ", " { 1951 psentry ", " pop pop ", " (unable to map [c3] glyph name ) print pstoedit.glyphname ", " 1000 -string cvs print %debugwogl( from ) print ", " pstoedit.unmappablecharacter ", " psexit } ", " ifelse ", " psexit } ", " def ", " /FontHistory 256 dict def ", " /pstoedit.lastfindfont (lastfindfont is undefined) def ", " /pstoedit.basefontname (null) def ", " /pstoedit.currentfontkey () def ", " /findfont ", " { 1976 psentry ", " dup /pstoedit.lastfindfont exch store ", " -findfont ", " psexit } ", " overload ", " /p2egetbasefontname ", " { 1985 psentry ", " true ", " { 1989 psentry ", " dup ", " getorigfont ", " dup ", " dup /FontName known ", " { 2000 psentry ", " 3 1 roll ", " ne % and getorig returned a different font ", " { 2005 psentry ", " /FontName get ", " psexit } ", " { 2009 psentry ", " pstoedit.lastfindfont (lastfindfont is undefined) eq ", " { 2013 psentry ", " dup /FontName known ", " { 2015 psentry ", " /FontName get % this consumes the font on the stack ", " psexit } ", " { 2018 psentry ", " pop % the font returned from getorig ", " pstoedit.replacementfont ", " psexit } ", " ifelse ", " psexit } ", " { 2025 psentry ", " pop % the font returned from getorig ", " pstoedit.lastfindfont ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 2034 psentry ", " pop pop pop ", " pstoedit.lastfindfont (lastfindfont is undefined) eq ", " { 2039 psentry ", " pstoedit.replacementfont ", " psexit } ", " { 2043 psentry ", " pstoedit.lastfindfont ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 2051 psentry ", " pop ", " pstoedit.lastfindfont (lastfindfont is undefined) eq ", " { 2054 psentry ", " pstoedit.replacementfont ", " psexit } ", " { 2058 psentry ", " pstoedit.lastfindfont ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " def ", " /definefont ", " { 2070 psentry ", " exch % font key ", " dup type /dicttype eq ", " { 2073 psentry ", " psexit } ", " { 2077 psentry ", " dup globals100 cvs /pstoedit.currentfontkey exch store ", " pstoedit.correctdefinefont ", " { 2088 psentry ", " exch % key font ", " dup /FontName known ", " { 2091 psentry ", " dup /FontName get 100 -string cvs pstoedit.currentfontkey eq not ", " { 2093 psentry ", " (FontName and Key doesn't match: Found ) true printwarning ", " pstoedit.currentfontkey false printwarning ", " ( and ) false printwarning ", " dup /FontName get 100 string cvs false printwarning (\\n) false printwarning ", " dup dup /FontName get findfont ", " /OrigFont exch put ", " dup /FontName pstoedit.currentfontkey put ", " psexit } ", " if ", " psexit } ", " if ", " exch ", " psexit } ", " if ", " false ", " FontHistory ", " { 2116 psentry ", " exch pop % remove key ", " pstoedit.currentfontkey eq ", " { 2119 psentry ", " pop true % remove false and push new result ", " exit ", " psexit } ", " if ", " psexit } ", " forall ", " { 2128 psentry ", " pstoedit.verbosemode ", " { 2130 psentry ", " dup ( second font definition for ) print s100 cvs print ( ignored\\n) print ", " psexit } ", " if ", " psexit } ", " { 2136 psentry ", " (\\() -printalways ", " dup s100 cvs -printalways ", " (\\) cvn) -printalways ", " ( /) -printalways ", " exch ", " dup p2egetbasefontname ", " /pstoedit.basefontname exch store ", " exch ", " pstoedit.basefontname ", " s100 cvs -printalways ", " ( pstoedit.newfont\\n) -printalways ", " dup FontHistory ", " exch ", " pstoedit.basefontname ", " globals100 cvs ", " put ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " exch ", " -definefont ", " psexit } ", " overload ", " /rootFont ", " { 2192 psentry ", " dup ", " FontHistory exch known ", " { 2200 psentry ", " dup dup FontHistory exch get ", " ne ", " { 2205 psentry ", " FontHistory exch get rootFont ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " def ", " /printTOS ", " { 2222 psentry ", " ( ) -print ", " dup type /realtype eq false and ", " { 2225 psentry ", " dup ", " cvi dup s100 cvs -print % no we have the int part ", " sub % now the delta ", " (.) -print ", " 10000 mul cvi abs ", " dup 1000 gt % can be 0.9999 * 10000 = 9999 ", " { 2234 psentry ", " s100 cvs -print ", " psexit } ", " { 2237 psentry ", " dup 100 gt ", " { 2239 psentry ", " (0) -print s100 cvs -print ", " psexit } ", " { 2242 psentry ", " dup 10 gt ", " { 2244 psentry ", " (00) -print s100 cvs -print ", " psexit } ", " { 2247 psentry ", " (000) -print s100 cvs -print ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 2256 psentry ", " s100 cvs -print ", " psexit } ", " ifelse ", " psexit } ", " def ", " /TracePoints ", " { 2264 psentry ", " -1 1 ", " { 2266 psentry ", " 2 mul -2 roll % use the loop control variable to roll up a point (x,y) from bottom ", " transform % transform to device coordinates ", " matrix defaultmatrix ", " itransform ", " exch ", " true % pstoedit.dotrace cvi 1 eq ", " { 2275 psentry ", " dup dup pstoedit.ll.x cvi -lt ", " { 2277 psentry ", " pstoedit.bbclear pstoedit.ll.x copy pop 100 -string cvs pstoedit.ll.x copy pop ", " psexit } ", " { 2280 psentry ", " pop ", " psexit } ", " ifelse ", " dup dup pstoedit.ur.x cvi gt ", " { 2285 psentry ", " pstoedit.bbclear pstoedit.ur.x copy pop 100 -string cvs pstoedit.ur.x copy pop ", " psexit } ", " { 2288 psentry ", " pop ", " psexit } ", " ifelse ", " psexit } ", " if ", " pop %printTOS % the x value ", " true % pstoedit.dotrace cvi 1 eq ", " { 2296 psentry ", " dup dup pstoedit.ll.y cvi -lt ", " { 2298 psentry ", " pstoedit.bbclear pstoedit.ll.y copy pop 100 -string cvs pstoedit.ll.y copy pop ", " psexit } ", " { 2301 psentry ", " pop ", " psexit } ", " ifelse ", " dup dup pstoedit.ur.y cvi gt ", " { 2306 psentry ", " pstoedit.bbclear pstoedit.ur.y copy pop 100 -string cvs pstoedit.ur.y copy pop ", " psexit } ", " { 2309 psentry ", " pop ", " psexit } ", " ifelse ", " psexit } ", " if ", " pop %printTOS % the y value ", " psexit } ", " for ", " psexit } ", " def ", " /prpoints ", " { 2322 psentry ", " -1 1 ", " { 2324 psentry ", " 2 mul -2 roll % use the loop control variable to roll up a point (x,y) from bottom ", " transform % transform to device coordinates ", " matrix defaultmatrix ", " itransform ", " exch ", " pstoedit.dotrace cvi 1 eq ", " { 2333 psentry ", " dup dup pstoedit.ll.x cvi -lt ", " { 2335 psentry ", " pstoedit.bbclear pstoedit.ll.x copy pop 100 -string cvs pstoedit.ll.x copy pop ", " psexit } ", " { 2338 psentry ", " pop ", " psexit } ", " ifelse ", " dup dup pstoedit.ur.x cvi gt ", " { 2343 psentry ", " pstoedit.bbclear pstoedit.ur.x copy pop 100 -string cvs pstoedit.ur.x copy pop ", " psexit } ", " { 2346 psentry ", " pop ", " psexit } ", " ifelse ", " psexit } ", " if ", " printTOS % the x value %woglmul ", " pstoedit.dotrace cvi 1 eq ", " { 2354 psentry ", " dup dup pstoedit.ll.y cvi -lt ", " { 2356 psentry ", " pstoedit.bbclear pstoedit.ll.y copy pop 100 -string cvs pstoedit.ll.y copy pop ", " psexit } ", " { 2359 psentry ", " pop ", " psexit } ", " ifelse ", " dup dup pstoedit.ur.y cvi gt ", " { 2364 psentry ", " pstoedit.bbclear pstoedit.ur.y copy pop 100 -string cvs pstoedit.ur.y copy pop ", " psexit } ", " { 2367 psentry ", " pop ", " psexit } ", " ifelse ", " psexit } ", " if ", " printTOS % the y value ", " psexit } ", " for ", " psexit } ", " def ", " /prpointswithtrace ", " { 2381 psentry ", " 1 1 -string cvs pstoedit.dotrace copy pop ", " prpoints ", " psexit } ", " def ", " /prpointsnotrace ", " { 2389 psentry ", " 1 1 -string cvs pstoedit.dotrace copy pop ", " prpoints ", " psexit } ", " def ", " /getcurrentscale ", " { 2397 psentry ", " 100 0 transform % x1' y1' ", " /pstoedit.y1 exch store ", " /pstoedit.x1 exch store ", " 0 0 transform % x2' y2' ", " /pstoedit.y2 exch store ", " /pstoedit.x2 exch store ", " pstoedit.x1 pstoedit.x2 sub dup mul ", " pstoedit.y1 pstoedit.y2 sub dup mul ", " add sqrt ", " 100 div abs ", " pstoedit.dpiscale div ", " psexit } ", " def ", " /printstate ", " { 2416 psentry ", " pstoedit.computeDPIscale ", " -gsave ", " pstoedit.deviceinfoshown not ", " { 2421 psentry ", " /pstoedit.deviceinfoshown true store ", " languagelevel 1 gt ", " { 2424 psentry ", " pstoedit.DEVICEINFO /PageSize known ", " { 2426 psentry ", " pstoedit.DEVICEINFO /PageSize get ", " pstoedit.deviceheight 0.0 ne ", " { 2432 psentry ", " dup 1 get ", " pstoedit.dpiscale mul ", " /pstoedit.deviceheight exch store ", " psexit } ", " if ", " { 2448 psentry ", " printTOS ", " psexit } ", " forall ", " ( setPageSize\\n) -print ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " if ", " currentlinecap ", " printTOS ", " ( setlinecap\\n) -print ", " currentmiterlimit ", " printTOS ", " ( setmiterlimit\\n) -print ", " currentlinejoin ", " printTOS ", " ( setlinejoin\\n) -print ", " currentdash ", " exch ", " ( [) -print ", " { 2475 psentry ", " getcurrentscale mul ", " printTOS ", " psexit } ", " forall % dump array ", " ( ]) -print ", " printTOS %index ", " ( setdash\\n) -print ", " currentlinewidth ", " getcurrentscale mul ", " printTOS ", " ( setlinewidth\\n) -print ", " pstoedit.useRGBcolors ", " { 2490 psentry ", " -currentrgbcolor ", " 3 1 roll exch ", " printTOS ", " printTOS ", " printTOS ", " ( setrgbcolor\\n) -print ", " psexit } ", " { 2499 psentry ", " -currentcmykcolor % c m y k ", " exch 4 1 roll % y c m k ", " 4 1 roll % k y c m ", " exch % k y m c ", " printTOS ", " printTOS ", " printTOS ", " printTOS ", " ( setcmykcolor\\n) -print ", " psexit } ", " ifelse ", " currentcolorspace 0 get /Separation eq ", " { 2513 psentry ", " currentcolorspace 1 get ", " (\\() -print s100 cvs -print (\\)) -print ", " ( p2esetcolorname\\n) -print ", " psexit } ", " { 2520 psentry ", " (\\(\\)) -print ( p2esetcolorname\\n) -print ", " psexit } ", " ifelse ", " -grestore ", " psexit } ", " def ", " /print-path ", " { 2530 psentry ", " { 2532 psentry ", " { 2533 psentry ", " 1 prpointswithtrace ( moveto\\n) -print ", " psexit } ", " { 2536 psentry ", " 1 prpointswithtrace ( lineto\\n) -print ", " psexit } ", " { 2539 psentry ", " 3 prpointswithtrace ( curveto\\n) -print ", " psexit } ", " { 2542 psentry ", " ( closepath\\n) -print ", " psexit } ", " pathforall ", " psexit } ", " stopped ", " { 2548 psentry ", " psexit } ", " if ", " psexit } ", " def ", " /dumppath ", " { 2557 psentry ", " ( \\n) -print ", " /pstoedit.dumpstring exch store % (clip) ", " /pstoedit.dumpop exch store % {clip} ", " ( \\n) -print ", " (\\% ) -print ", " pstoedit.pathnumber cvi 1 add 100 -string cvs pstoedit.pathnumber copy pop ", " pstoedit.pathnumber -print ", " ( pathnumber\\n) -print ", " -print % new place ", " printstate ", " -gsave ", " { 2571 psentry ", " pstoedit.doflatten ", " { 2573 psentry ", " pstoedit.flatnesstouse setflat ", " flattenpath % replaces curves by lines ", " psexit } ", " if ", " psexit } ", " stopped ", " { 2580 psentry ", " -grestore ", " -gsave ", " psexit } ", " if ", " (newpath\\n) -print ", " pstoedit.simulateclipping ", " { 2590 psentry ", " clip clippath ", " psexit } ", " if ", " print-path ", " pstoedit.dumpstring -print (\\n) -print ", " -grestore ", " pstoedit.dumpop ", " psexit } ", " def ", " false % use the clip tracing instead ", " { 2603 psentry ", " /-showclippath ", " { 2605 psentry ", " -gsave ( gsave \\n) -print ", " clippath clip clippath ", " (% clippath\\n) ", " { 2610 psentry ", " clip ", " psexit } ", " (clip) dumppath ", " -grestore ", " psexit } ", " def ", " /-endshowclippath ", " { 2619 psentry ", " (\\ngrestore\\n) -print ", " psexit } ", " def ", " psexit } ", " { 2624 psentry ", " /-showclippath ", " { 2626 psentry ", " psexit } ", " def ", " /-endshowclippath ", " { 2630 psentry ", " psexit } ", " def ", " psexit } ", " ifelse ", " /pstoedit.charpathwarningdone false store ", " /pstoedit.charpatherrorcaught false store ", " /charpath ", " { 2639 psentry ", " /pstoedit.ignoredraw true store ", " /pstoedit.charpatherrorcaught false store ", " pstoedit.fontdebugging ", " { 2643 psentry ", " (% start charpath ) pstack pop ", " (% start charpath \\n) -print ", " psexit } ", " if ", " true % with error handling ", " { 2649 psentry ", " { 2650 psentry ", " -charpath ", " psexit } ", " stopped ", " { 2654 psentry ", " /pstoedit.charpatherrorcaught true store %% for later usage in place where charpath was called ", " pstoedit.charpathwarningdone not pstoedit.verbosemode or ", " { 2658 psentry ", " pstoedit.verbosemode ", " { 2660 psentry ", " errordict begin handleerror end ", " psexit } ", " if ", " (Problem occurred in charpath (maybe due to protected fonts) - this warning is given only once per page!! Try again using -ndt option\\n) true printwarning %% wogl remove? ? ", " /pstoedit.charpathwarningdone true store ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " { 2672 psentry ", " -charpath ", " psexit } ", " ifelse ", " pstoedit.fontdebugging ", " { 2678 psentry ", " (% end charpath ) pstack pop ", " (% end charpath \\n) -print ", " psexit } ", " if ", " /pstoedit.ignoredraw false store ", " psexit } ", " overload ", " /stringwidth ", " { 2688 psentry ", " /pstoedit.ignoredraw true store ", " -stringwidth ", " /pstoedit.ignoredraw false store ", " psexit } ", " overload ", " /eofill ", " { 2697 psentry ", " pstoedit.ignoredraw ", " { 2700 psentry ", " -eofill ", " psexit } ", " { 2704 psentry ", " -showclippath ", " (\\% eofilledpath\\n) ", " { 2707 psentry ", " -eofill ", " psexit } ", " (eofill) dumppath ", " -endshowclippath ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /fill ", " { 2718 psentry ", " pstoedit.ignoredraw ", " { 2722 psentry ", " -fill ", " psexit } ", " { 2726 psentry ", " -showclippath ", " (\\% filledpath\\n) ", " { 2729 psentry ", " -fill ", " psexit } ", " (fill) dumppath ", " -endshowclippath ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /pstoedit.fill ", " { 2740 psentry ", " fill ", " psexit } ", " def %% needed to avoid a too early binding e.g. in rectfill ", " /pstoedit.eofill ", " { 2745 psentry ", " eofill ", " psexit } ", " def %% needed to avoid a too early binding e.g. in rectfill ", " /stroke ", " { 2751 psentry ", " pstoedit.ignoredraw ", " { 2753 psentry ", " -stroke ", " psexit } ", " { 2757 psentry ", " -showclippath ", " (\\% strokedpath\\n) ", " { 2760 psentry ", " /pstoedit.hidestroke where %% this could come from an additional prologue file via -include ", " { 2762 psentry ", " pop % the dict returned by where ", " pstoedit.hidestroke not ", " { 2765 psentry ", " -stroke ", " psexit } ", " if ", " psexit } ", " { 2770 psentry ", " -stroke ", " psexit } ", " ifelse ", " psexit } ", " (stroke) dumppath ", " -endshowclippath ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /pstoedit.stroke ", " { 2782 psentry ", " stroke ", " psexit } ", " def ", " /pstoeditdummystroke ", " { 2788 psentry ", " pstoedit.ignoredraw ", " { 2791 psentry ", " -stroke ", " psexit } ", " { 2795 psentry ", " (\\% dummystrokedpath\\n) ", " { 2798 psentry ", " newpath ", " psexit } ", " (pstoeditdummystroke) dumppath ", " psexit } ", " ifelse ", " psexit } ", " def ", " /pstoeditdummystrokewithoutput ", " { 2809 psentry ", " { 2812 psentry ", " { 2813 psentry ", " 1 TracePoints ", " psexit } ", " { 2817 psentry ", " 1 TracePoints ", " psexit } ", " { 2821 psentry ", " 3 TracePoints ", " psexit } ", " { 2825 psentry ", " psexit } ", " pathforall ", " psexit } ", " stopped ", " { 2831 psentry ", " psexit } ", " if ", " psexit } ", " def ", " /pstoedit.forcedrawtext ", " { 2838 psentry ", " currentfont begin ", " /FontName where ", " { 2841 psentry ", " pop % the dict ", " FontName 100 -string cvs % FontName is a name or is already a string ", " cvn dup ", " /pstoedit.knownFontNames where ", " { 2851 psentry ", " pop % the dict ", " pstoedit.knownFontNames exch known ", " { 2857 psentry ", " pop ", " false % don't force drawing mode ", " psexit } ", " { 2863 psentry ", " rootFont ", " pstoedit.knownFontNames exch known ", " { 2868 psentry ", " false % don't force drawing mode ", " psexit } ", " { 2872 psentry ", " true ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 2879 psentry ", " pop pop ", " false % if pstoedit.knownFontNames is not defined, 'show' text ", " psexit } ", " ifelse ", " psexit } ", " { 2886 psentry ", " true % if FontName is not known ", " psexit } ", " ifelse ", " end ", " CheckForTextFontVerbose not ", " pstoedit.autodrawtext % if no text font and autodraw = true, then draw the text ", " and ", " or ", " psexit } ", " def ", " /getorigfont ", " { 2911 psentry ", " dup /OrigFont known ", " { 2918 psentry ", " dup % for comparison ", " dup /OrigFont get ne % ne is a weak check against recursion but is was needed from gs8.56 ", " { 2921 psentry ", " /OrigFont get getorigfont ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " def ", " /isKnownFontName ", " { 2932 psentry ", " /Fontmap where ", " { 2939 psentry ", " pop % the dict from where ", " dup % for second check ", " Fontmap exch known ", " psexit } ", " { 2944 psentry ", " false % nothing found so far ", " psexit } ", " ifelse ", " { 2952 psentry ", " pop % the fontname ", " true % just repush true ", " psexit } ", " { 2956 psentry ", " /pstoedit.knownFontNames where ", " { 2958 psentry ", " pop % the dict from where ", " pstoedit.knownFontNames exch known ", " psexit } ", " { 2962 psentry ", " pop % the fontname ", " false % nothing found so far ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " def ", " /pstoedit.handlepstoedit.textastext ", " { 2973 psentry ", " pstoedit.fontdebugging ", " { 2977 psentry ", " (pstoedit.handlepstoedit.textastext ) pstoedit.currentstring pstack pop pop ", " psexit } ", " if ", " currentfont begin ", " /FontName where ", " { 2984 psentry ", " pop FontName ", " pstoedit.checkfontnames ", " { 2987 psentry ", " dup ", " isKnownFontName ", " psexit } ", " { 2993 psentry ", " true ", " psexit } ", " ifelse ", " { 2999 psentry ", " 100 -string cvs % FontName is a name or is already a string ", " psexit } ", " { 3003 psentry ", " 100 -string cvs % FontName is a name or is already a string ", " dup ", " cvn ", " rootFont ", " (\\% ) -print ", " s100 cvs -print ( ) -print dup -print ", " ( nonstandard font\\n) -print ", " psexit } ", " ifelse ", " /pstoedit.replacedfont false store ", " psexit } ", " { 3019 psentry ", " pstoedit.fontdebugging ", " { 3021 psentry ", " (using replacement font because currentfont has no FontName) pstack pop ", " psexit } ", " if ", " pstoedit.replacementfont ", " /pstoedit.replacedfont true store ", " psexit } ", " ifelse ", " (\\() -print ", " -print ", " (\\) cvn) -print ", " end ", " ( findfont ) -print ", " pstoedit.replacedfont ", " { 3038 psentry ", " pstoedit.currentstring -stringwidth ", " dtransform ", " dup mul exch dup mul add sqrt ", " -gsave ", " pstoedit.replacementfont cvn findfont 10 scalefont setfont ", " pstoedit.currentstring normalizestring -stringwidth ", " dtransform ", " dup mul exch dup mul add sqrt ", " -grestore ", " div 10 mul getcurrentscale mul ", " pstoedit.scalefontversion ", " { 3062 psentry ", " s100 cvs -print ( scalefont setfont\\n) -print ", " psexit } ", " { 3065 psentry ", " ([ ) -print dup printTOS 0 printTOS 0 printTOS printTOS ", " -gsave ", " currentpoint translate ", " currentfont /FontMatrix get -concat 0 0 transform ", " -grestore ", " itransform ", " 1 prpointsnotrace ", " ( ] makefont setfont\\n) -print ", " psexit } ", " ifelse ", " psexit } ", " { 3077 psentry ", " currentfont begin ", " currentfont /FontType get 42 eq ", " { 3087 psentry ", " /pstoedit.fontunit 1 store ", " psexit } ", " { 3091 psentry ", " /pstoedit.fontunit 1000 store ", " psexit } ", " ifelse ", " pstoedit.scalefontversion %wogl ", " { 3098 psentry ", " FontMatrix 0 get % get the x-scale of the font matrix ", " 0 ", " dtransform ", " dup mul exch dup mul add sqrt ", " pstoedit.fontunit mul ", " pstoedit.dpiscale div ", " s100 cvs -print ( scalefont setfont\\n) -print ", " psexit } ", " { 3110 psentry ", " -gsave ", " currentpoint 1 TracePoints % tracing also the starting point of text into BB information ", " currentpoint translate ", " currentfont /FontMatrix get -concat ", " currentfont getorigfont /FontMatrix get matrix invertmatrix -concat ", " matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix %xxtemp ", " -grestore ", " ([ ) -print ", " { 3122 psentry ", " printTOS ", " psexit } ", " forall ", " ( ] makefont setfont\\n) -print ", " psexit } ", " ifelse ", " end ", " psexit } ", " ifelse ", " currentfont begin ", " /FontInfo where ", " { 3139 psentry ", " pop ", " FontInfo /FamilyName known ", " { 3145 psentry ", " FontInfo /FamilyName get 100 -string cvs ", " psexit } ", " { 3148 psentry ", " (unknown) ", " psexit } ", " ifelse ", " (\\% ) -print -print ( FamilyName\\n) -print ", " FontInfo /FullName known ", " { 3154 psentry ", " FontInfo /FullName get 100 -string cvs ", " psexit } ", " { 3157 psentry ", " (unknown) ", " psexit } ", " ifelse ", " (\\% ) -print -print ( FullName\\n) -print ", " FontInfo /Weight known ", " { 3163 psentry ", " FontInfo /Weight get 100 -string cvs ", " psexit } ", " { 3166 psentry ", " (unknown) ", " psexit } ", " ifelse ", " (\\% ) -print -print ( Weight\\n) -print ", " psexit } ", " if ", " end ", " pstoedit.scalefontversion ", " { 3176 psentry ", " /pstoedit.angle 1 0 dtransform exch atan -1 mul 360 add store ", " languagelevel 1 gt ", " { 3182 psentry ", " pstoedit.DEVICEINFO dup /Orientation known ", " { 3184 psentry ", " /Orientation get ", " -90 mul pstoedit.angle add /pstoedit.angle exch store ", " pstoedit.angle 0 -lt ", " { 3188 psentry ", " pstoedit.angle 360 add /pstoedit.angle exch store ", " psexit } ", " if ", " psexit } ", " { 3193 psentry ", " pop % the duped DEVICEINFO ", " psexit } ", " ifelse ", " psexit } ", " if ", " -gsave ", " currentpoint translate ", " currentfont /FontMatrix get -concat 0 0 transform ", " -grestore ", " itransform ", " /pstoedit.y exch store /pstoedit.x exch store ", " pstoedit.x pstoedit.y 1 prpointswithtrace ( moveto\\n) -print ", " pstoedit.angle 360.0 ne ", " { 3216 psentry ", " pstoedit.x pstoedit.y 1 prpointswithtrace ( translate\\n) -print ", " ( ) -print ", " pstoedit.angle s100 cvs -print ( rotate\\n) -print ", " psexit } ", " { 3221 psentry ", " ( ) -print ", " 0 s100 cvs -print ( rotate\\n) -print ", " psexit } ", " ifelse ", " psexit } ", " { 3228 psentry ", " ( 0 0 moveto\\n) -print ", " psexit } ", " ifelse ", " getcurrentscale dup /pstoedit.currentscale exch store ", " mul ", " exch ", " pstoedit.currentscale mul ", " 5 -2 roll ", " pstoedit.currentscale mul ", " exch ", " pstoedit.currentscale mul ", " printTOS printTOS % c ", " 3 -1 roll ", " printTOS % char ", " printTOS printTOS % a ", " psexit } ", " def ", " /dumptextstring ", " { 3259 psentry ", " pstoedit.escapetext ", " { 3261 psentry ", " pstoedit.currentstring ", " { 3264 psentry ", " inttosinglechar ", " dup ", " 3 normalizecharacter_wrapper ", " { 3273 psentry ", " exch pop % remove plain c since we can use the mapped one. ", " dup dup (\\r) eq exch (\\n) eq or ", " { 3280 psentry ", " pop ", " psexit } ", " { 3283 psentry ", " dup (\\() eq ", " { 3285 psentry ", " (\\\\) -print ", " psexit } ", " if ", " dup (\\)) eq ", " { 3290 psentry ", " (\\\\) -print ", " psexit } ", " if ", " dup (\\\\) eq ", " { 3295 psentry ", " (\\\\) -print ", " psexit } ", " if ", " -print ", " psexit } ", " ifelse ", " psexit } ", " { 3304 psentry ", " dup (\\r) eq exch (\\n) eq or ", " { 3309 psentry ", " psexit } ", " { 3312 psentry ", " pstoedit.unmappablecharacter -print ", " psexit } ", " psexit } ", " ifelse ", " psexit } ", " forall ", " psexit } ", " { 3321 psentry ", " pstoedit.currentstring ", " { 3324 psentry ", " inttosinglechar ", " dup ", " 4 normalizecharacter_wrapper ", " { 3331 psentry ", " exch pop % remove plain c since we can use the mapped one. ", " dup dup (\\r) eq exch (\\n) eq or ", " { 3338 psentry ", " pop ", " psexit } ", " { 3341 psentry ", " -print ", " psexit } ", " ifelse ", " psexit } ", " { 3347 psentry ", " dup (\\r) eq exch (\\n) eq or ", " { 3352 psentry ", " psexit } ", " { 3355 psentry ", " pstoedit.unmappablecharacter -print ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " forall ", " psexit } ", " ifelse ", " psexit } ", " def ", " /effectiveawidthshow ", " { 3371 psentry ", " /pstoedit.ignoreimage true store %ignore all image* ops called from here ", " pstoedit.fontdebugging ", " { 3374 psentry ", " (start awidthshow) pstack pop ", " (% start awidthshow \\n) -print ", " psexit } ", " if ", " ( \\n) -print ", " printstate ", " /pstoedit.currentstring exch store ", " pstoedit.fontdebugging ", " { 3384 psentry ", " GetCurrentFontName pstoedit.currentstring (unnormalized:) pstack pop pop pop ", " currentfont /Encoding get pstack pop ", " (glphynames:) pstack pop ", " pstoedit.currentstring ", " { 3389 psentry ", " currentfont /Encoding get exch ", " saveGET % get ", " (gl:) pstack pop pop ", " psexit } ", " forall ", " psexit } ", " if ", " 5 copy % save for real operator ", " -gsave ", " pstoedit.textastext % text shall be shown as text and ", " currentfont /FontType get 1 eq % current font is type 1 ", " pstoedit.t2fontsast1 % we cannot do this all times - at least up to gs6.0 this sometimes leads ", " currentfont /FontType get 2 eq % current font is type 2 (embedded reduced type 1) ", " and ", " or ", " currentfont /FontType get 42 eq % current font is type 42 (TT) ", " or ", " pstoedit.forcedrawtext not % and not forced draw due to font restrictions ", " and ", " currentfont /FontType get 3 eq % current font is type 3 ", " currentfont /BitMaps known % and contains a BitMaps entry (as dvips provides) ", " and % Bitmap fonts cannot be \"drawn\", anyway ", " or % (T1 or T2 or T42 and not force) or (T3 and Bitmap) ", " and % pstoedit.textastext ", " pstoedit.disabledrawtext or % if drawtext is fully disabled ", " dup /pstoedit.textshown exch store % ", " { 3435 psentry ", " pstoedit.handlepstoedit.textastext ", " psexit } ", " { 3438 psentry ", " -gsave ", " currentpoint ", " newpath ", " moveto ", " mark ", " 6 1 roll % first move the mark at begin ", " 5 -1 roll % then roll back the last 5 ", " pstoedit.currentstring ", " pstoedit.fontdebugging ", " { 3462 psentry ", " (pstoedit.currentstring 1) pstack pop ", " currentfont /FontType get (FontType: ) pstack pop pop ", " currentfont /FMapType get (FMapType: ) pstack pop pop ", " psexit } ", " if ", " canIterateThroughString %true means \"draw each char separately\" ", " { 3469 psentry ", " { 3478 psentry ", " dup dup length 1 sub get % now last char is on stack as int. ", " exch ", " mark % insert a mark right before the two args to charpath. So whatever charpath does, we can clean up ", " exch % ", " true ", " charpath ", " cleartomark ", " 3 index % (compare :) pstack pop % wogldebug ", " eq ", " { 3492 psentry ", " 4 index 4 index ", " rmoveto ", " psexit } ", " if ", " 2 copy rmoveto ", " psexit } ", " pstoedit.FORALL % in effectiveawithshow ", " psexit } ", " { 3504 psentry ", " pstoedit.fontdebugging ", " { 3506 psentry ", " (Cannot iterate through string - need to handle string as a whole) pstack pop ", " currentfont /FontType get (FontType: ) pstack pop pop ", " currentfont /FMapType get (FMapType: ) pstack pop pop ", " psexit } ", " if ", " true charpath ", " psexit } ", " ifelse ", " pop pop pop pop pop ", " cleartomark ", " pstoedit.charpatherrorcaught ", " { 3522 psentry ", " (error caught during charpath. Trying to dump text as text - even if it may not be useful\\n) true printwarning ", " 0 0 32 0 0 ", " /pstoedit.textshown true store ", " pstoedit.handlepstoedit.textastext ", " psexit } ", " { 3530 psentry ", " eofill ", " psexit } ", " ifelse ", " -grestore ", " psexit } ", " ifelse ", " -grestore ", " pstoedit.currentstring ", " /pstoedit.ignoredraw true store ", " pstoedit.fontdebugging ", " { 3544 psentry ", " (vor -awidthshow ) (top) pstack pop pop ", " psexit } ", " if ", " mark 7 1 roll % put mark in front of params ", " { 3549 psentry ", " -awidthshow ", " psexit } ", " stopped ", " { 3554 psentry ", " pstoedit.verbosemode ", " { 3556 psentry ", " errordict begin handleerror end ", " (Problem occurred in awidthshow) print ", " psexit } ", " if ", " psexit } ", " if ", " cleartomark ", " pstoedit.fontdebugging ", " { 3565 psentry ", " (nach -awidthshow ) (top) pstack pop pop ", " psexit } ", " if ", " /pstoedit.ignoredraw false store ", " /pstoedit.ignoreimage false store ", " pstoedit.textshown ", " { 3574 psentry ", " -gsave ", " currentpoint translate ", " currentfont /FontMatrix get -concat 0 0 transform ", " -grestore ", " itransform ", " 1 prpointswithtrace ", " CheckForTextFont pstoedit.maptoisolatin1 and ", " { 3590 psentry ", " ( 1 ) ", " psexit } ", " { 3595 psentry ", " ( 0 ) ", " psexit } ", " ifelse -print ", " ( setshowparams\\n) -print ", " CheckForTextFontVerbose pop % we don't need the result here ", " pstoedit.fontdebugging ", " { 3603 psentry ", " (vor dumping text ) pstoedit.currentstring (top) pstack pop pop pop ", " psexit } ", " if ", " pstoedit.passglyphnames ", " { 3608 psentry ", " (\\() -print ", " pstoedit.currentstring -printhex ", " (\\) \\[) -print ", " pstoedit.currentstring ", " { 3613 psentry ", " currentfont /Encoding get ", " exch get ", " ( /) -print ", " 1000 -string cvs -print ", " psexit } ", " forall ", " ( \\] awidthshowhexwithglyphs\\n) -print ", " psexit } ", " { 3624 psentry ", " pstoedit.ashexstring ", " { 3627 psentry ", " (\\() -print ", " pstoedit.currentstring -printhex ", " (\\) awidthshowhex\\n) -print ", " psexit } ", " { 3633 psentry ", " (\\() -print ", " dumptextstring ", " (\\) awidthshow\\n) -print ", " psexit } ", " ifelse ", " psexit } ", " ifelse % write glyphnames ", " pstoedit.fontdebugging ", " { 3644 psentry ", " (nach dumping text ) pstoedit.currentstring (top) pstack pop pop pop ", " psexit } ", " if ", " pstoedit.scalefontversion ", " { 3650 psentry ", " pstoedit.angle 360.0 ne ", " { 3652 psentry ", " ( ) -print ", " pstoedit.angle neg s100 cvs -print ( rotate\\n) -print ", " pstoedit.x pstoedit.y 1 prpointswithtrace ", " ( ntranslate\\n) -print ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " if ", " pstoedit.fontdebugging ", " { 3664 psentry ", " (end awidthshow) pstack pop ", " (% end awidthshow \\n) -print ", " psexit } ", " if ", " psexit } ", " def ", " /precisionshowchar ", " { 3674 psentry ", " 0 0 32 0 0 6 -1 roll ", " effectiveawidthshow ", " psexit } ", " def ", " /pstoedit.showcharacter ( ) def % needed because forall in awidthshow gives ints, but show needs char ", " /pstoedit.showcharacter2 ( ) def % needed for type 0 fonts ", " /awidthshow ", " { 3684 psentry ", " -showclippath ", " pstoedit.precisiontext 0 eq % no precision text % cx cy char ax ay string b1 ", " pstoedit.precisiontext 1 eq % pti and cx cy ax ay are all 0 % cx cy char ax ay string b1 b2 ", " 7 index 0 eq % cx cy char ax ay string b1 b2 b3 ", " 7 index 0 eq % cx cy char ax ay string b1 b2 b3 b4 ", " and % cx cy char ax ay string b1 b2 b3*b4 ", " 5 index 0 eq % cx cy char ax ay string b1 b2 b3*b4 b5 ", " 5 index 0 eq % cx cy char ax ay string b1 b2 b3*b4 b5 b6 ", " and % cx cy char ax ay string b1 b2 b3*b4 b5*b6 ", " and % cx cy char ax ay string b1 b2 b3*b4*b5*b6 ", " and % cx cy char ax ay string b1 b2*b3*b4*b5*b6 ", " or % cx cy char ax ay string b1+b2*b3*b4*b5*b6 ", " canIterateThroughString not or % or if we cannot iterate anyway ", " { 3701 psentry ", " effectiveawidthshow ", " psexit } ", " { 3705 psentry ", " { 3709 psentry ", " dup dup length 1 sub get % now last char is on stack as int. ", " inttosinglechar ", " precisionshowchar ", " 3 index % (compare :) pstack pop % wogldebug ", " eq ", " { 3719 psentry ", " 4 index 4 index ", " rmoveto ", " psexit } ", " if ", " 2 copy rmoveto ", " psexit } ", " pstoedit.FORALL % in awidthshow ", " pop pop pop pop pop ", " psexit } ", " ifelse ", " -endshowclippath ", " psexit } ", " overload ", " /widthshow ", " { 3738 psentry ", " 0 exch 0 exch awidthshow ", " psexit } ", " overload ", " /ashow ", " { 3745 psentry ", " 0 0 32 ", " 6 3 roll awidthshow ", " psexit } ", " overload ", " /show ", " { 3752 psentry ", " 0 0 32 0 0 6 -1 roll awidthshow ", " psexit } ", " overload ", " /debugcshow ", " { 3759 psentry ", " (in cshow1 :) pstack pop ", " -cshow ", " (out cshow :) pstack pop ", " psexit } ", " overload ", " /pstoedit.kshowproc ", " { 3772 psentry ", " psexit } ", " store ", " /pstoedit.kshowclast 1 store ", " /kshow ", " { 3778 psentry ", " exch /pstoedit.kshowproc exch store ", " dup length 0 gt ", " { 3784 psentry ", " true % for first ", " exch ", " { 3789 psentry ", " exch ", " { 3793 psentry ", " dup /pstoedit.kshowclast exch store ", " inttosinglechar ", " show ", " pstoedit.kshowclast ", " false ", " psexit } ", " { 3800 psentry ", " dup /pstoedit.kshowclast exch store ", " pstoedit.kshowproc ", " pstoedit.kshowclast inttosinglechar ", " show ", " pstoedit.kshowclast ", " false ", " psexit } ", " ifelse ", " psexit } ", " forall ", " pop pop % char and first ", " psexit } ", " { 3815 psentry ", " (ignoring kshow for empty string\\n) true printwarning ", " pop % pstoedit.kshowproc % just pop the empty string ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /pstoedit.xyshowindex 0 store ", " /pstoedit.xyshowarray [ 0 ] store ", " /saveGET ", " { 3828 psentry ", " 2 copy % a i a i ", " exch % a i i a ", " length % a i i l ", " lt ", " { 3840 psentry ", " get ", " psexit } ", " { 3843 psentry ", " pop pop % throw away the args and return 0 ", " 0 ", " psexit } ", " ifelse ", " psexit } ", " def ", " /xshow ", " { 3853 psentry ", " dup type ", " /arraytype eq ", " canIterateThroughString and % and if we can iterate ", " { 3862 psentry ", " /pstoedit.xyshowarray exch store ", " /pstoedit.xyshowindex 0 store ", " { 3866 psentry ", " currentpoint ", " 3 -1 roll ", " show ", " exch ", " pstoedit.xyshowarray pstoedit.xyshowindex ", " saveGET add exch ", " moveto ", " /pstoedit.xyshowindex pstoedit.xyshowindex 1 add store ", " psexit } ", " pstoedit.FORALL % in xshow - needed because every char is placed with individual with as given in array. ", " psexit } ", " { 3883 psentry ", " pstoedit.verbosemode ", " { 3886 psentry ", " (numstrings in xshow are not fully supported yet or iteration through string not supported yet\\n) true printwarning ", " psexit } ", " if ", " pop show ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /yshow ", " { 3899 psentry ", " dup type /arraytype eq ", " canIterateThroughString and % and if we can iterate ", " { 3905 psentry ", " /pstoedit.xyshowarray exch store ", " /pstoedit.xyshowindex 0 store ", " { 3908 psentry ", " currentpoint ", " 3 -1 roll ", " show ", " pstoedit.xyshowarray pstoedit.xyshowindex saveGET add ", " moveto ", " /pstoedit.xyshowindex pstoedit.xyshowindex 1 add store ", " psexit } ", " pstoedit.FORALL % in yshow - needed because every char is placed with individual with as given in array. ", " psexit } ", " { 3922 psentry ", " pstoedit.verbosemode ", " { 3925 psentry ", " (numstrings in yshow are not fully supported yet or iteration through string not supported yet\\n) true printwarning ", " psexit } ", " if ", " pop show ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /xyshow ", " { 3936 psentry ", " dup type ", " /arraytype eq ", " canIterateThroughString and % and if we can iterate ", " { 3945 psentry ", " /pstoedit.xyshowarray exch store ", " /pstoedit.xyshowindex 0 store ", " { 3948 psentry ", " currentpoint ", " 3 -1 roll ", " show ", " pstoedit.xyshowarray pstoedit.xyshowindex 1 add saveGET add exch ", " pstoedit.xyshowarray pstoedit.xyshowindex saveGET add exch ", " moveto ", " /pstoedit.xyshowindex pstoedit.xyshowindex 2 add store ", " psexit } ", " pstoedit.FORALL % in xyshow - needed because every char is placed with individual with as given in array. ", " psexit } ", " { 3967 psentry ", " pstoedit.verbosemode ", " { 3970 psentry ", " (numstrings in xyshow are not fully supported yet or iteration through string not supported yet\\n) true printwarning ", " psexit } ", " if ", " pop show ", " psexit } ", " ifelse ", " psexit } ", " overload ", " /glyphshow ", " { 3981 psentry ", " getglyphaschar show ", " psexit } ", " overload ", " /showpage ", " { 3990 psentry ", " false ", " { 3992 psentry ", " gsave ", " (\\%\\% Bounding Box Trace\\n) -print ", " newpath ", " 0.5 0.6 0.7 setrgbcolor ", " pstoedit.ll.x cvi pstoedit.ll.y cvi moveto ", " pstoedit.ur.x cvi pstoedit.ur.y cvi lineto ", " pstoedit.ll.x cvi pstoedit.ur.y cvi lineto ", " pstoedit.ur.x cvi pstoedit.ll.y cvi lineto ", " closepath pstoedit.stroke ", " grestore ", " psexit } ", " if ", " (showpage\\n) -print ", " -showpage ", " pstoedit.pagetoextract pstoedit.pagenr cvi eq ", " true ", " { 4014 psentry ", " (\\%\\%BoundingBox: ) -printNC % ", " pstoedit.ll.x cvi 100 -string cvs -printNC ( ) -printNC ", " pstoedit.ll.y cvi 100 -string cvs -printNC ( ) -printNC ", " pstoedit.ur.x cvi 100 -string cvs -printNC ( ) -printNC ", " pstoedit.ur.y cvi 100 -string cvs -printNC ( \\n) -printNC ", " psexit } ", " if ", " (\\%\\%Page: ) -printNC ", " pstoedit.pagenr cvi 100 -string cvs ", " dup -printNC ", " ( ) -printNC ", " -printNC ", " (\\n) -printNC ", " pstoedit.pagenr cvi 1 add 100 -string cvs pstoedit.pagenr copy pop ", " pstoedit.verbosemode ", " { 4037 psentry ", " ([) print pstoedit.pagenr cvi 100 -string cvs print (]) print ", " psexit } ", " if ", " { 4043 psentry ", " pstoedit.quit ", " psexit } ", " if ", " pstoedit.ll.x (999999 ) exch copy pop ", " pstoedit.ll.y (999999 ) exch copy pop ", " pstoedit.ur.x (0 ) exch copy pop ", " pstoedit.ur.y (0 ) exch copy pop ", " pstoedit.bbclear ( ) exch copy pop ", " 0 1 -string cvs pstoedit.somethingprinted copy pop % reset ", " psexit } ", " soverload ", " /copypage ", " { 4059 psentry ", " (copypage is beeing handled as showpage. This may lead to different results if copypage was used to overlay multiple pages to one\\n) true printwarning ", " showpage ", " psexit } ", " soverload ", " pstoedit.withimages ", " { 4066 psentry ", " /pstoedit.image.ncomp 0 store ", " /pstoedit.image.nrds 0 store % number of data sources ", " /pstoedit.image.multi 0 store ", " /pstoedit.image.datasrc 0 store ", " /pstoedit.image.mat 0 store ", " /pstoedit.image.bits 0 store ", " /pstoedit.image.decode 0 store ", " /pstoedit.image.height 0 store ", " /pstoedit.image.width 0 store ", " /pstoedit.image.fourthparam 0 store ", " /pstoedit.image.procname 0 store ", " /pstoedit.image.isfile true store ", " /pstoedit.image.stringprefix 0 store ", " /pstoedit.image.realproc 0 store ", " /pstoedit.image.nr (0 ) store ", " /pstoedit.image.filesuffix ( ) store ", " /pstoedit.image.isimagemask true store % f for image - t for mask ", " /pstoedit.image.outputfile 1000 -string store ", " /pstoedit.imagestring 1 -string def ", " /pstoedit.image.saveobject1 0 store %% these are used for save/restore ", " /pstoedit.image.saveobject2 0 store ", " /printdumponly ", " { 4090 psentry ", " pstoedit.escapetext ", " { 4093 psentry ", " pop ", " psexit } ", " { 4096 psentry ", " -print ", " psexit } ", " ifelse ", " psexit } ", " def ", " /ImageTraceBoundingBox ", " { 4104 psentry ", " -gsave ", " newpath ", " 0 0 moveto ", " 1 0 lineto ", " 1 1 lineto ", " 0 1 lineto ", " closepath ", " pstoeditdummystrokewithoutput ", " -grestore ", " psexit } ", " def ", " pstoedit.backendSupportsFileImages ", " { 4122 psentry ", " /pstoedit.image.imageproc 0 store ", " /processAsFILEimage_core ", " { 4125 psentry ", " pstoedit.verbosemode ", " { 4127 psentry ", " (vor processAsFILEImage ) pstack pop ", " psexit } ", " if ", " /pstoedit.image.filesuffix exch store ", " /pstoedit.image.imageproc exch store ", " pstoedit.image.nr cvi 1 add 100 -string cvs pstoedit.image.nr copy pop ", " /pstoedit.image.outputfile pstoedit.nameOfOutputFilewithoutpercentD ", " pstoedit.image.filesuffix %(_mdsi) ", " concatstrings ", " pstoedit.image.nr cvi 20 -string cvs concatstrings pstoedit.imagefilesuffix concatstrings store ", " /pstoedit.image.stringprefix (%fileimage:) store ", " pstoedit.escapetext not ", " { 4144 psentry ", " (\\%fileimage:begin\\n) -print ", " -gsave ", " pstoedit.image.mat matrix invertmatrix concat ", " matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix ", " (% DC ) -print ", " { 4151 psentry ", " printTOS ", " psexit } ", " forall (\\n) -print ", " pstoedit.image.stringprefix printdumponly ", " (normalized image currentmatrix\\n) printdumponly ", " -grestore ", " (% DC ) -print pstoedit.image.mat ", " { 4160 psentry ", " printTOS ", " psexit } ", " forall (\\n) -print ", " pstoedit.image.stringprefix -print (imagematrix\\n) -print ", " pstoedit.image.stringprefix -print (filename ) -print ", " pstoedit.image.outputfile -print (\\n) -print ", " (% DC ) printdumponly pstoedit.image.width printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly ", " (width\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.height printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly ", " (height\\n) printdumponly ", " (\\%fileimage:end\\n) -print ", " psexit } ", " if ", " pstoedit.verbosemode ", " { 4181 psentry ", " (after dump1 ) pstack pop ", " psexit } ", " if ", " (0) pstoedit.writesaverestore copy pop ", " pstoedit.verbosemode ", " { 4205 psentry ", " (vor save) dumpcurrentCTM ", " psexit } ", " if ", " pstoedit.verbosemode ", " { 4210 psentry ", " (vm vor save 1) vmstatus pstack pop pop pop pop ", " psexit } ", " if ", " /pstoedit.image.saveobject1 -save store ", " pstoedit.verbosemode ", " { 4216 psentry ", " (vm vor save 2) vmstatus pstack pop pop pop pop ", " psexit } ", " if ", " /pstoedit.image.saveobject2 -save store ", " pstoedit.verbosemode ", " { 4222 psentry ", " (nach save) dumpcurrentCTM ", " psexit } ", " if ", " pstoedit.verbosemode ", " { 4227 psentry ", " (vm nach save2) vmstatus pstack pop pop pop pop ", " psexit } ", " if ", " true ", " { 4234 psentry ", " pstoedit.verbosemode ", " { 4236 psentry ", " (opening image file:) print ", " pstoedit.image.outputfile print (\\n) print ", " psexit } ", " if ", " false % true - use setpagedevice ", " { 4242 psentry ", " << ", " /OutputFile pstoedit.image.outputfile ", " /OutputDevice ", " pstoedit.imagedevicename cvn ", " /HWResolution [ 72 72 ] ", " /PageSize [ pstoedit.image.width pstoedit.image.height ] ", " >> ", " pstoedit.verbosemode ", " { 4253 psentry ", " (before setpage device ) pstack pop ", " psexit } ", " if ", " setpagedevice ", " psexit } ", " { 4260 psentry ", " mark ", " /OutputFile pstoedit.image.outputfile ", " /HWResolution [ 72 72 ] ", " /PageSize [ pstoedit.image.width pstoedit.image.height ] ", " pstoedit.imagedevicename ", " finddevice ", " pstoedit.verbosemode ", " { 4271 psentry ", " (after finddevice ) pstack pop ", " psexit } ", " if ", " putdeviceprops ", " setdevice ", " psexit } ", " ifelse ", " psexit } ", " if ", " false ", " { 4283 psentry ", " pstoedit.imagedevicename ", " finddevice ", " setdevice ", " << ", " /OutputFile pstoedit.image.outputfile ", " /HWResolution [ 72 72 ] ", " /PageSize [ pstoedit.image.width pstoedit.image.height ] ", " >> ", " setpagedevice ", " psexit } ", " if ", " false ", " { 4311 psentry ", " pstoedit.image.mat 3 get 0 -lt ", " { 4314 psentry ", " pstoedit.image.mat 5 get 0 eq ", " { 4316 psentry ", " (Info: correcting image matrix - didn't follow PS conventions\\n) print ", " pstoedit.image.mat 5 pstoedit.image.mat 3 get -1 mul put ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " if ", " pstoedit.image.width pstoedit.image.height scale ", " pstoedit.verbosemode ", " { 4360 psentry ", " (vor pstoedit.image.imageproc ) pstack pop ", " psexit } ", " if ", " pstoedit.image.imageproc %wogl -colorimage ", " pstoedit.verbosemode ", " { 4369 psentry ", " (nach pstoedit.image.imageproc ) pstack pop ", " psexit } ", " if ", " 0 .endpage ", " .doneshowpage ", " 1 true .outputpage ", " pop ", " pstoedit.image.saveobject2 -restore ", " pstoedit.image.saveobject1 -restore ", " (1) pstoedit.writesaverestore copy pop ", " pstoedit.verbosemode ", " { 4403 psentry ", " (%end dealing with dumping image to file\\n) print ", " psexit } ", " if ", " psexit } ", " def ", " /processAsFILEimage_errhandling ", " { 4410 psentry ", " { 4411 psentry ", " processAsFILEimage_core ", " psexit } ", " stopped ", " { 4415 psentry ", " (caught an error during processAsFILEimage) pstack pop ", " psexit } ", " if ", " psexit } ", " def ", " /processAsFILEimage ", " { 4422 psentry ", " processAsFILEimage_core ", " psexit } ", " def ", " psexit } ", " if ", " /colorimage ", " { 4433 psentry ", " printstate ", " pstoedit.ignoredraw pstoedit.ignoreimage or ", " pstoedit.DrawGlyphBitmaps not and % if DrawGlyphBitmaps is true then dont suppress the images coming from glyphs ", " pstoedit.DEVICEINFO /HWResolution known not or ", " { 4442 psentry ", " pstoedit.verbosemode ", " { 4445 psentry ", " (colorimage operation ignored (called from some glyph drawing function or HWResolution unknown)\\n) print ", " (ignoredraw : ) print pstoedit.ignoredraw ", " { 4450 psentry ", " (T) ", " psexit } ", " { 4453 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " (ignoreimage : ) print pstoedit.ignoreimage ", " { 4458 psentry ", " (T) ", " psexit } ", " { 4461 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " (HWResolution known : ) print pstoedit.DEVICEINFO /HWResolution known ", " { 4466 psentry ", " (T) ", " psexit } ", " { 4469 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " psexit } ", " if ", " -colorimage ", " psexit } ", " { 4479 psentry ", " pstoedit.backendSupportsFileImages ", " { 4485 psentry ", " ImageTraceBoundingBox ", " -showclippath ", " /pstoedit.image.ncomp exch store ", " /pstoedit.image.multi exch store ", " pstoedit.image.multi ", " { 4499 psentry ", " pstoedit.image.ncomp ", " psexit } ", " { 4503 psentry ", " 1 ", " psexit } ", " ifelse ", " /pstoedit.image.nrds exch store ", " pstoedit.image.nrds 4 add pstoedit.image.nrds roll ", " /pstoedit.image.mat exch store ", " /pstoedit.image.bits exch store ", " /pstoedit.image.height exch store ", " /pstoedit.image.width exch store ", " pstoedit.image.width pstoedit.image.height pstoedit.image.bits ", " [ pstoedit.image.width 0 0 pstoedit.image.height -1 mul 0 pstoedit.image.height ] ", " pstoedit.image.nrds 4 add 4 roll ", " pstoedit.image.multi pstoedit.image.ncomp ", " { %nc ", " -colorimage ", " } ", " (_cim) % color image ", " processAsFILEimage ", " psexit } ", " { 4548 psentry ", " exch dup ", " { 4551 psentry ", " (colorimage with more than one datasrc not supported for this backend due to lack of support for images on raster files\\n) true printwarning ", " exch -colorimage ", " psexit } ", " { 4557 psentry ", " ImageTraceBoundingBox ", " -showclippath ", " pstoedit.escapetext ", " { 4562 psentry ", " (gsave\\n) -print ", " psexit } ", " { 4565 psentry ", " (\\%colorimage:begin\\n) -print ", " psexit } ", " ifelse ", " exch ", " /pstoedit.image.ncomp exch store ", " /pstoedit.image.multi exch store ", " /pstoedit.image.datasrc exch store ", " /pstoedit.image.mat exch store ", " /pstoedit.image.bits exch store ", " /pstoedit.image.height exch store ", " /pstoedit.image.width exch store ", " (% DC ) printdumponly pstoedit.image.width printTOS (\\n) -print ", " (\\%colorimage:width\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.height printTOS (\\n) -print ", " (\\%colorimage:height\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.bits printTOS (\\n) -print ", " (\\%colorimage:bits\\n) printdumponly ", " pstoedit.escapetext not ", " { 4599 psentry ", " (% DC ) -print pstoedit.image.mat ", " { 4601 psentry ", " printTOS ", " psexit } ", " forall (\\n) -print ", " (\\%colorimage:imagematrix\\n) -print ", " psexit } ", " if ", " -gsave ", " pstoedit.image.mat matrix invertmatrix concat ", " matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix ", " pstoedit.escapetext ", " { 4613 psentry ", " ([ ) -print ", " psexit } ", " { 4616 psentry ", " (% DC ) -print ", " psexit } ", " ifelse ", " { 4620 psentry ", " printTOS ", " psexit } ", " forall ", " pstoedit.escapetext ", " { 4625 psentry ", " (] concat [ 1 0 0 1 0 0 ] ) -print ", " psexit } ", " if ", " (\\n) -print ", " (\\%colorimage:normalized image currentmatrix\\n) printdumponly ", " -grestore ", " pstoedit.escapetext ", " { 4634 psentry ", " ({ currentfile imagestring readhexstring pop }\\n) -print ", " psexit } ", " if ", " (% DC ) printdumponly pstoedit.image.multi printTOS (\\n) -print ", " (\\%colorimage:multi\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.ncomp printTOS (\\n) -print ", " (\\%colorimage:ncomp\\n) printdumponly ", " pstoedit.escapetext ", " { 4643 psentry ", " (colorimage\\n) -print ", " psexit } ", " if ", " pstoedit.image.width pstoedit.image.height pstoedit.image.bits pstoedit.image.mat ", " { 4649 psentry ", " pstoedit.image.datasrc ", " dup type /filetype eq ", " { 4652 psentry ", " read % returns: int bool ", " { 4655 psentry ", " pstoedit.imagestring exch 0 exch put pstoedit.imagestring ", " psexit } ", " { 4658 psentry ", " 0 -string % return 0 string if eof is found ", " psexit } ", " ifelse ", " psexit } ", " if ", " (\\%colorimage:data ) printdumponly ", " dup ", " { 4667 psentry ", " dup 16 -lt ", " { 4669 psentry ", " (0) -print ", " psexit } ", " if ", " 16 2 -string cvrs -print ", " psexit } ", " forall ", " (\\n) -print ", " psexit } ", " pstoedit.image.multi pstoedit.image.ncomp -colorimage ", " pstoedit.escapetext ", " { 4680 psentry ", " (grestore\\n) -print ", " psexit } ", " { 4683 psentry ", " (\\%colorimage:end\\n) -print ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " ifelse % raster file support ", " -endshowclippath ", " psexit } ", " ifelse % ignoredraw ", " psexit } ", " soverload ", " /ImageAndImagemaskdummy ", " { 4700 psentry ", " (executing dummy ImageAndImagemask \\n) print ", " /pstoedit.ignoredraw true store ", " pop pop pop %pop ", " pstack ", " exec % -image ", " /pstoedit.ignoredraw false store ", " (executing dummy ImageAndImagemask done \\n) print ", " psexit } ", " def ", " /ImageAndImagemask ", " { 4712 psentry ", " /pstoedit.image.isimagemask exch store ", " /pstoedit.image.fourthparam exch store ", " /pstoedit.image.procname exch store ", " /pstoedit.image.stringprefix exch store ", " /pstoedit.image.realproc exch store ", " pstoedit.ignoredraw pstoedit.ignoreimage or ", " pstoedit.DrawGlyphBitmaps not and % if DrawGlyphBitmaps is true then dont suppress the images coming from glyphs ", " pstoedit.DEVICEINFO /HWResolution known not or %%%% test only pop false ", " { 4722 psentry ", " pstoedit.verbosemode ", " { 4724 psentry ", " (image operation ignored (called from some glyph drawing function or HWResolution unknown)\\n) print ", " (ignoredraw : ) print pstoedit.ignoredraw ", " { 4729 psentry ", " (T) ", " psexit } ", " { 4732 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " (pstoedit.DrawGlyphBitmaps : ) print pstoedit.DrawGlyphBitmaps ", " { 4738 psentry ", " (T) ", " psexit } ", " { 4741 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " (ignoreimage : ) print pstoedit.ignoreimage ", " { 4748 psentry ", " (T) ", " psexit } ", " { 4751 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " (HWResolution known : ) print pstoedit.DEVICEINFO /HWResolution known ", " { 4757 psentry ", " (T) ", " psexit } ", " { 4760 psentry ", " (F) ", " psexit } ", " ifelse print (\\n) print ", " psexit } ", " if ", " pstoedit.image.realproc ", " psexit } ", " { 4769 psentry ", " pstoedit.backendSupportsFileImages ", " { 4771 psentry ", " ImageTraceBoundingBox ", " -showclippath ", " dup type ", " pstoedit.verbosemode ", " { 4776 psentry ", " dup 40 -string cvs (handling datasource of type ) print print (\\n) print ", " psexit } ", " if ", " dup /filetype eq /pstoedit.image.isfile exch store ", " /dicttype eq ", " { 4782 psentry ", " (%begin dealing with image from dict\\n) -print ", " dup /Width get /pstoedit.image.width exch store ", " dup /Height get /pstoedit.image.height exch store ", " dup /ImageMatrix get /pstoedit.image.mat exch store ", " dup /ImageMatrix ", " [ pstoedit.image.width 0 0 pstoedit.image.height -1 mul 0 pstoedit.image.height ] ", " put ", " pstoedit.image.isimagemask ", " { 4810 psentry ", " dup /Decode get 0 get /pstoedit.image.decode exch store ", " psexit } ", " if ", " { %nc ", " pstoedit.image.realproc ", " } ", " pstoedit.image.isimagemask ", " { 4823 psentry ", " pstoedit.image.decode 0 eq ", " { 4825 psentry ", " (_mfd) % mask from dict - polarity false ", " psexit } ", " { 4828 psentry ", " (_mtd) % mask from dict - polarity true ", " psexit } ", " ifelse ", " psexit } ", " { 4833 psentry ", " (_imd) % image from dict ", " psexit } ", " ifelse ", " processAsFILEimage ", " psexit } ", " { 4839 psentry ", " false ", " { 4843 psentry ", " /pstoedit.image.datasrc exch store ", " /pstoedit.image.mat exch store ", " /pstoedit.image.bits exch store ", " /pstoedit.image.height exch store ", " /pstoedit.image.width exch store ", " pstoedit.image.width pstoedit.image.height pstoedit.image.bits pstoedit.image.mat ", " { 4854 psentry ", " pstoedit.image.isfile ", " { 4856 psentry ", " pstoedit.image.datasrc read ", " { 4859 psentry ", " inttosinglechar ", " psexit } ", " { 4863 psentry ", " 0 -string ", " psexit } ", " ifelse ", " psexit } ", " { 4869 psentry ", " pstoedit.image.datasrc ", " (after calling datasrc2\\n) pstack print flush ", " psexit } ", " ifelse ", " psexit } ", " psexit } ", " { 4876 psentry ", " exch /pstoedit.image.mat exch store ", " exch /pstoedit.image.bits exch store % this is polarity (bool) for imagemask ", " exch /pstoedit.image.height exch store ", " exch /pstoedit.image.width exch store ", " pstoedit.image.width exch ", " pstoedit.image.height exch ", " pstoedit.image.isimagemask ", " { 4890 psentry ", " 1 % overwrite \"polarity\" with 1 if we use -image always ", " psexit } ", " { 4895 psentry ", " pstoedit.image.bits ", " psexit } ", " ifelse exch ", " [ pstoedit.image.width 0 0 pstoedit.image.height -1 mul 0 pstoedit.image.height ] ", " exch ", " psexit } ", " ifelse ", " true ", " { 4913 psentry ", " { %nc ", " -image %%%wogl fixme pstoedit.image.realproc ", " } ", " pstoedit.image.isimagemask ", " { 4918 psentry ", " pstoedit.image.bits % note bits hold the polarity value (bool) in this case ", " { 4920 psentry ", " (_mtn) % imagemask - normal (non dict ds) - polarity true ", " psexit } ", " { 4923 psentry ", " (_mfn) % imagemask - normal (non dict ds) - polarity false ", " psexit } ", " ifelse ", " psexit } ", " { 4928 psentry ", " (_imn) % image - normal (non dict ds) ", " psexit } ", " ifelse ", " processAsFILEimage ", " psexit } ", " { 4936 psentry ", " (TEST!! : not processing as raster file image \\n) print ", " pstoedit.image.realproc ", " psexit } ", " ifelse ", " psexit } ", " ifelse ", " psexit } ", " { 4944 psentry ", " dup type ", " dup /filetype eq /pstoedit.image.isfile exch store ", " /dicttype eq ", " { 4948 psentry ", " (Level 2 version of image and imagemask not supported for this backend (due to lack of support for bitmaps on intermediate files)\\n) true printwarning ", " pstoedit.image.realproc ", " psexit } ", " { 4953 psentry ", " ImageTraceBoundingBox ", " -showclippath ", " pstoedit.escapetext ", " { 4957 psentry ", " (gsave\\n) -print ", " psexit } ", " { 4960 psentry ", " pstoedit.image.stringprefix -print (begin\\n) -print ", " psexit } ", " ifelse ", " /pstoedit.image.datasrc exch store ", " /pstoedit.image.mat exch store ", " pstoedit.escapetext not ", " { 4968 psentry ", " (% DC ) -print pstoedit.image.mat ", " { 4970 psentry ", " printTOS ", " psexit } ", " forall (\\n) -print ", " pstoedit.image.stringprefix -print (imagematrix\\n) -print ", " psexit } ", " if ", " /pstoedit.image.bits exch store ", " /pstoedit.image.height exch store ", " /pstoedit.image.width exch store ", " (% DC ) printdumponly pstoedit.image.width printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly (width\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.height printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly (height\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.bits printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly pstoedit.image.fourthparam printdumponly (\\n) printdumponly ", " -gsave ", " pstoedit.image.mat matrix invertmatrix concat ", " matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix ", " pstoedit.escapetext ", " { 4992 psentry ", " ([ ) -print ", " psexit } ", " { 4995 psentry ", " (% DC ) -print ", " psexit } ", " ifelse ", " { 4999 psentry ", " printTOS ", " psexit } ", " forall ", " pstoedit.escapetext ", " { 5004 psentry ", " (] concat [ 1 0 0 1 0 0 ] ) -print ", " psexit } ", " if ", " (\\n) -print ", " pstoedit.image.stringprefix printdumponly (normalized image currentmatrix\\n) printdumponly ", " pstoedit.escapetext ", " { 5011 psentry ", " ({ currentfile imagestring readhexstring pop }\\n) -print pstoedit.image.procname -print (\\n) -print ", " psexit } ", " if ", " -grestore ", " pstoedit.image.width pstoedit.image.height pstoedit.image.bits pstoedit.image.mat ", " { 5017 psentry ", " pstoedit.image.isfile ", " { 5019 psentry ", " pstoedit.image.datasrc read ", " { 5022 psentry ", " pstoedit.image.stringprefix printdumponly (data ) printdumponly ", " dup ", " dup 16 -lt ", " { 5027 psentry ", " (0) -print ", " psexit } ", " if ", " 16 2 -string cvrs -print ", " inttosinglechar ", " psexit } ", " { 5036 psentry ", " 0 -string ", " psexit } ", " ifelse ", " psexit } ", " { 5042 psentry ", " pstoedit.image.datasrc ", " pstoedit.image.stringprefix printdumponly (data ) printdumponly ", " dup ", " { 5046 psentry ", " dup 16 -lt ", " { 5048 psentry ", " (0) -print ", " psexit } ", " if ", " 16 2 -string cvrs -print ", " psexit } ", " forall ", " psexit } ", " ifelse ", " (\\n) -print ", " psexit } ", " pstoedit.image.realproc ", " pstoedit.escapetext ", " { 5061 psentry ", " (grestore\\n) -print ", " psexit } ", " { 5064 psentry ", " pstoedit.image.stringprefix -print (end\\n) -print ", " psexit } ", " ifelse ", " -endshowclippath ", " psexit } ", " ifelse % level 2 ", " psexit } ", " ifelse % raster file images supported ", " psexit } ", " ifelse % ignoredraw ", " psexit } ", " def ", " /image ", " { 5088 psentry ", " printstate ", " { %nc ", " -image ", " } ", " (\\%image:) (image) (bits) false ImageAndImagemask ", " psexit } ", " soverload ", " /imagemask ", " { 5098 psentry ", " printstate ", " { %nc ", " -imagemask ", " } ", " (\\%imagemask:) (imagemask) (polarity) true ImageAndImagemask ", " psexit } ", " soverload ", " psexit } ", " if ", " pstoedit.initialize ", " (\\%!PS-Adobe-3.0\\n) -printalways ", " (\\%\\%Title: flattened PostScript generated from file: ) -printalways ", " pstoedit.inputfilename -printalways (\\n) -printalways ", " (\\%\\%Creator: pstoedit\\n) -printalways ", " (\\%\\%BoundingBox: \\(atend\\)\\n) -printalways ", " (\\%\\%Pages: \\(atend\\)\\n) -printalways ", " (\\%\\%EndComments\\n) -printalways ", " (\\%\\%BeginProlog\\n) -printalways ", " (/setPageSize { pop pop } def\\n) -printalways ", " (/ntranslate { neg exch neg exch translate } def\\n) -printalways ", " (/p2esetcolorname { pop } def\\n) -printalways ", " (/setshowparams { pop pop pop} def\\n) -printalways ", " (/awidthshowhex { dup length 0 gt { dup /ASCIIHexDecode filter exch length 2 div cvi string readstring pop } if awidthshow } def\\n) -printalways ", " (/awidthshowhexwithglyphs { true { pop awidthshowhex } { { glyphshow } forall pop } ifelse } def\\n) -printalways ", " (/backendconstraints { pop pop } def\\n) -printalways ", " (/pstoedit.newfont { ) -printalways ", " (80 string cvs ) -printalways ", " ( findfont ) -printalways ", " ( dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall ) -printalways ", " ( /Encoding ISOLatin1Encoding def ) -printalways ", " ( dup 80 string cvs /FontName exch def ) -printalways ", " ( currentdict end ) -printalways ", " ( definefont pop) -printalways ", " ( } def\\n) -printalways ", " (/imagestring 1 string def\\n) -printalways ", " (\\%\\%EndProlog\\n) -printalways ", " (\\%\\%BeginSetup\\n) -printalways ", " (\\% pstoedit.textastext pstoedit.doflatten backendconstraints \\n) -printalways ", " pstoedit.textastext ", " { 5154 psentry ", " (1 ) ", " psexit } ", " { 5157 psentry ", " (0 ) ", " psexit } ", " ifelse -printalways ", " pstoedit.doflatten ", " { 5162 psentry ", " (1 ) ", " psexit } ", " { 5165 psentry ", " (0 ) ", " psexit } ", " ifelse -printalways ", " (backendconstraints\\n) -printalways ", " (\\%\\%EndSetup\\n) -printalways ", " (\\%\\%Page: 1 1\\n) -print ", " pstoedit.delaybindversion ", " { 5175 psentry ", " revision 353 ge ", " { 5180 psentry ", " .bindoperators ", " NOBIND currentdict systemdict ne and ", " { 5183 psentry ", " systemdict begin .bindoperators end ", " psexit } ", " if ", " /DELAYBIND where ", " { 5188 psentry ", " pop DELAYBIND ", " { 5190 psentry ", " .bindnow ", " psexit } ", " if ", " psexit } ", " if ", " psexit } ", " if ", " systemdict readonly pop ", " systemdict /.setglobal known ", " { 5205 psentry ", " .setglobal ", " psexit } ", " if ", " psexit } ", " { 5211 psentry ", " systemdict /.setglobal known ", " { 5214 psentry ", " .setglobal ", " psexit } ", " if ", " NOBIND ", " { 5231 psentry ", " /bind /.bind load def ", " psexit } ", " if ", " psexit } ", " ifelse ", " languagelevel 1 gt ", " { 5240 psentry ", " << /PageSize [612 792 ] >> setpagedevice ", " psexit } ", " if ", " currentdict /pstoedit.nameOfIncludeFile known ", " { 5254 psentry ", " pstoedit.nameOfIncludeFile run ", " psexit } ", " if ", " 4 dict begin ", " /RotateDict currentdict def ", " /angle pstoedit.rotation def ", " angle 0 ne pstoedit.xscale 1 ne or pstoedit.yscale 1 ne or pstoedit.xshift 0 ne or pstoedit.yshift 0 ne or ", " { 5287 psentry ", " /languagelevel where ", " { 5289 psentry ", " pop languagelevel 2 -ge ", " psexit } ", " { 5292 psentry ", " FALSE ", " psexit } ", " ifelse ", " { 5296 psentry ", " /lastW 0 def ", " /lastH 0 def ", " << ", " /BeginPage ", " { 5302 psentry ", " //RotateDict begin ", " pop % page number ", " currentpagedevice /PageSize get aload pop % stack: W H ", " lastH ne exch lastW ne or ", " { 5311 psentry ", " << ", " /PageSize [ ", " currentpagedevice /PageSize get aload pop % stack: W H ", " exch % stack: newW newH ", " /lastW 2 index def ", " /lastH 1 index def ", " ] ", " >> setpagedevice % calls BeginPage recursively ", " psexit } ", " { 5324 psentry ", " pstoedit.centered ", " { 5328 psentry ", " currentpagedevice /PageSize get aload pop % stack: width height ", " 2 div exch 2 div exch % stack: center ", " 2 copy translate ", " psexit } ", " if ", " //angle rotate ", " pstoedit.centered ", " { 5336 psentry ", " neg exch neg translate ", " psexit } ", " if ", " pstoedit.xscale pstoedit.yscale scale ", " pstoedit.xshift pstoedit.yshift translate ", " psexit } ", " ifelse ", " end % //RotateDict ", " psexit } ", " >> setpagedevice ", " psexit } ", " { 5348 psentry ", " currentdevice getdeviceprops >> /HWSize get ", " aload pop exch 2 array astore ", " mark exch /HWSize exch currentdevice putdeviceprops pop ", " /adbFixup ", " { 5356 psentry ", " pstoedit.centered ", " { 5358 psentry ", " currentdevice getdeviceprops >> ", " dup /HWSize get aload pop 3 -1 roll ", " /HWResolution get aload pop ", " exch 4 -1 roll exch div 72 mul ", " 3 1 roll div 72 mul ", " 2 div exch 2 div exch ", " 2 copy translate ", " psexit } ", " if ", " //angle rotate ", " pstoedit.centered ", " { 5373 psentry ", " neg exch neg translate ", " psexit } ", " if ", " pstoedit.xscale pstoedit.yscale scale ", " pstoedit.xshift pstoedit.yshift translate ", " psexit } ", " bind odef ", " /adbShowpage /showpage load def ", " userdict begin /showpage ", " { 5383 psentry ", " adbShowpage adbFixup ", " psexit } ", " bind odef end ", " adbFixup ", " statusdict begin ", " /adbSet /.setpagesize load def ", " /.setpagesize ", " { 5392 psentry ", " exch adbSet adbFixup ", " psexit } ", " bind def ", " end ", " psexit } ", " ifelse ", " psexit } ", " if ", " end % //RotateDict ", " pstoedit.inputfilename run ", " pstoedit.somethingprinted cvi 1 eq ", " { 5411 psentry ", " showpage % do one since no showpage was issued regularly ", " psexit } ", " if ", " pstoedit.quit ", " false ", " { 5423 psentry ", " /saaaaaa ", " { 5425 psentry ", " pstoedit.image.nr cvi 1 add 100 -string cvs pstoedit.image.nr copy pop ", " /pstoedit.image.outputfile pstoedit.nameOfOutputFilewithoutpercentD (_l2i) concatstrings ", " pstoedit.image.nr cvi 20 -string cvs concatstrings pstoedit.imagefilesuffix concatstrings store ", " /pstoedit.image.stringprefix (%fileimage:) store ", " pstoedit.escapetext not ", " { 5434 psentry ", " (\\%fileimage:begin\\n) -print ", " -gsave ", " pstoedit.image.mat matrix invertmatrix concat ", " matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix ", " (% DC ) -print ", " { 5440 psentry ", " printTOS ", " psexit } ", " forall (\\n) -print ", " pstoedit.image.stringprefix printdumponly (normalized image currentmatrix\\n) printdumponly ", " -grestore ", " (% DC ) -print pstoedit.image.mat ", " { 5448 psentry ", " printTOS ", " psexit } ", " forall (\\n) -print ", " pstoedit.image.stringprefix -print (imagematrix\\n) -print ", " pstoedit.image.stringprefix -print (filename ) -print ", " pstoedit.image.outputfile -print (\\n) -print ", " (% DC ) printdumponly pstoedit.image.width printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly ", " (width\\n) printdumponly ", " (% DC ) printdumponly pstoedit.image.height printTOS (\\n) -print ", " pstoedit.image.stringprefix printdumponly ", " (height\\n) printdumponly ", " (\\%fileimage:end\\n) -print ", " psexit } ", " if ", " gsave ", " true ", " { 5476 psentry ", " mark ", " /OutputFile pstoedit.image.outputfile ", " /HWResolution [ 72 72 ] ", " /PageSize [ pstoedit.image.width pstoedit.image.height ] ", " pstoedit.imagedevicename ", " finddevice ", " putdeviceprops ", " setdevice ", " psexit } ", " if ", " false ", " { 5494 psentry ", " pstoedit.imagedevicename ", " finddevice ", " setdevice ", " << ", " /OutputFile pstoedit.image.outputfile ", " /HWResolution [ 72 72 ] ", " /PageSize [ pstoedit.image.width pstoedit.image.height ] ", " >> ", " setpagedevice ", " psexit } ", " if ", " pstoedit.image.mat 3 get 0 -lt ", " { 5520 psentry ", " pstoedit.image.mat 5 get 0 eq ", " { 5522 psentry ", " (Info: correcting image matrix - didn't follow PS conventions\\n) print ", " pstoedit.image.mat 5 pstoedit.image.mat 3 get -1 mul put ", " psexit } ", " if ", " psexit } ", " if ", " (debug 2v ) dumpcurrentCTM ", " pstoedit.image.mat concat ", " (debug 2n ) dumpcurrentCTM ", " pstoedit.image.dotranslate ", " { 5537 psentry ", " 1 -1 scale ", " 0 pstoedit.image.height -1 mul translate ", " psexit } ", " if ", " -image %pstoedit.realproc %% it probably doesnt make sense to use imagemask on the virtual device ", " 0 .endpage .doneshowpage 1 true .outputpage pop ", " -grestore %% Hier wird offenbar das gerestore mit output aufgerufen. Wieso ist unklar. ", " psexit } ", " def ", " psexit } ", " if ", 0 }; pstoedit-3.62/src/pstoeditoptions.h0000644000175500010010000010431312137263320014422 00000000000000#ifndef PSTOEDITOPTIONS_H #define PSTOEDITOPTIONS_H /* pstoeditoptions.h : This file is part of pstoedit definition of program options Copyright (C) 1993 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "miscutil.h" #include "poptions.h" enum advancedTypeIDs { start_ty=char_ty, rsstring_ty, charstring_ty, constcharstring_ty, argv_ty }; class DLLEXPORT RSStringValueExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, RSString &result) { if (instring) { result = instring; currentarg++; return true; } else { cout << "missing string argument for " << optname << " option" << endl; return false; } } static const char *gettypename() { return "string"; } static unsigned int gettypeID() { return rsstring_ty; } }; #if 0 // not really usable - because when using a Dialog, the char * would afterwards point into the data owned by the dialog // class DLLEXPORT charstringValueExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, char* &result) { if (instring) { result = cppstrdup(instring); currentarg++; return true; } else { cout << "missing string argument for " << optname << " option" << endl; return false; } } static const char *gettypename() { return "string"; } static unsigned int gettypeID() { return charstring_ty; } }; template < > inline ostream & Option< char *, charstringValueExtractor>::writevalue(ostream & out) const { out << (value ? value : ""); return out; } class DLLEXPORT constcharstringValueExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, const char* &result) { if (instring) { result = instring; currentarg++; return true; } else { cout << "missing string argument for " << optname << " option" << endl; return false; } } static const char *gettypename() { return "string"; } static unsigned int gettypeID() { return constcharstring_ty; } }; template < > inline ostream & Option< const char *, constcharstringValueExtractor>::writevalue(ostream & out) const { out << (value ? value : ""); return out; } #endif class DLLEXPORT ArgvExtractor { public: static bool getvalue(const char *optname, const char *instring, unsigned int ¤targ, Argv &result) { if (instring) { result.addarg(instring); currentarg++; return true; } else { cout << "missing string argument for " << optname << " option" << endl; return false; } } static const char *gettypename() { return "string"; } static unsigned int gettypeID() { return argv_ty; } }; static const char * const noArgument = 0; static const char * const UseDefaultDoku = 0; class PsToEditOptions : public ProgramOptions { public: enum PropSheetEnum {g_t=0, t_t, a_t, b_t, d_t, h_t }; // g - general // t - text // a - unused // b - debug // d - drawing // h - hidden // cannot be const because it needs to be changed on non UNIX systems (convertBackSlashes) char *nameOfInputFile ; //= 0; char *nameOfOutputFile ; //= 0; // can contain %d for page splitting OptionT < RSString, RSStringValueExtractor> nameOfIncludeFile ;// = 0; // name of an option include file OptionT < RSString, RSStringValueExtractor> replacementfont;// = "Courier"; OptionT < bool, BoolTrueExtractor > nomaptoisolatin1 ;//= false; OptionT < bool, BoolTrueExtractor > withdisplay ;//= false; OptionT < RSString, RSStringValueExtractor> pngimage ; OptionT < bool, BoolTrueExtractor > quiet ;//= false; OptionT < bool, BoolTrueExtractor > noquit ;//= false; OptionT < bool, BoolTrueExtractor > nocurves ;//= false; // normally curves are shown as curves if backend supports OptionT < bool, BoolTrueExtractor > nosubpathes ;//= false; // normally we use subpathes if the backend support them OptionT < bool, BoolTrueExtractor > mergelines ;//= false; OptionT < bool, BoolTrueExtractor > convertFilledRectToStroke; //= false; OptionT < bool, BoolTrueExtractor > mergetext ;//= false; OptionT < bool, BoolTrueExtractor > drawtext ;//= false; OptionT < bool, BoolTrueExtractor > autodrawtext ;//= false; OptionT < bool, BoolTrueExtractor > disabledrawtext ;//= false; OptionT < bool, BoolTrueExtractor > DrawGlyphBitmaps ;//= false; OptionT < bool, BoolTrueExtractor > correctdefinefont ;//= false; OptionT < bool, BoolTrueExtractor > ptioption; OptionT < bool, BoolTrueExtractor > ptaoption; unsigned int precisiontext ;//= 0; // derived from the above pti ->1 pta -> 2 sonst 0 OptionT < double, DoubleValueExtractor > xscale; OptionT < double, DoubleValueExtractor > yscale; OptionT < double, DoubleValueExtractor > xshift; OptionT < double, DoubleValueExtractor > yshift; OptionT < bool, BoolTrueExtractor > centered ; OptionT < double, DoubleValueExtractor > minlinewidth; OptionT < RSString, RSStringValueExtractor> pagenumberformat ; OptionT < bool, BoolTrueExtractor > splitpages ;//= false; OptionT < bool, BoolTrueExtractor > verbose ;//= false; OptionT < bool, BoolTrueExtractor > useBBfrominput; //= false; OptionT < bool, BoolTrueExtractor > simulateSubPaths ;//= false; OptionT < RSString, RSStringValueExtractor> unmappablecharstring ;//= 0; OptionT < bool, BoolTrueExtractor > dontloadplugins ;//= false; OptionT < bool, BoolTrueExtractor > nobindversion ;//= false; // use old NOBIND instead of DELAYBIND OptionT < int, IntValueExtractor > pagetoextract ;//= 0; // 0 stands for all pages OptionT < double, DoubleValueExtractor > flatness ;//= 1.0f; // used for setflat OptionT < bool, BoolTrueExtractor > simulateClipping ;//= false; // simulate clipping most useful in combination with -dt OptionT < bool, BoolTrueExtractor > usePlainStrings; //= false; OptionT < bool, BoolTrueExtractor > useRGBcolors ;//= false; OptionT < bool, BoolTrueExtractor > useAGL ;//= false; OptionT < bool, BoolTrueExtractor > noclip ;//= false; OptionT < bool, BoolTrueExtractor > t2fontsast1 ;//= false; // handle T2 fonts (often come as embedded fonts in PDF files) same as T1 OptionT < bool, BoolTrueExtractor > keepinternalfiles ;//= false; OptionT < bool, BoolTrueExtractor > fontdebug ;//= false; OptionT < bool, BoolTrueExtractor > justgstest ;//= false; OptionT < bool, BoolTrueExtractor > pscover ;//= false; OptionT < bool, BoolTrueExtractor > nofontreplacement ;//= false; OptionT < bool, BoolTrueExtractor > passglyphnames; OptionT < bool, BoolTrueExtractor > useoldnormalization; OptionT < int, IntValueExtractor > rotation ;//= 0; OptionT < RSString, RSStringValueExtractor> explicitFontMapFile ;//= 0; OptionT < RSString, RSStringValueExtractor > outputPageSize;//(""); OptionT < bool, BoolTrueExtractor > fromgui; OptionT < bool, BoolTrueExtractor > showdialog; OptionT < RSString, RSStringValueExtractor> GSToUse ; // OptionT < double, DoubleValueExtractor > magnification ;//= 1.0f; OptionT < bool, BoolTrueExtractor > showdrvhelp ;//= false; OptionT < bool, BoolTrueExtractor > showdocu_long ;//= false; OptionT < bool, BoolTrueExtractor > showdocu_short ;//= false; OptionT < bool, BoolTrueExtractor > dumphelp ;//= false; OptionT < bool, BoolTrueExtractor > backendonly ;//= false; // used for easier debugging of backends // directly read input file by backend // bypass ghostscript. The input file // is assumed to be produced by a // previous call with -f debug OptionT < Argv, ArgvExtractor > psArgs; // Pass through arguments to PostScript interpreter OptionT < int, IntValueExtractor > psLanguageLevel; OptionT < RSString, RSStringValueExtractor> drivername ;//= 0; // cannot be const char * because it is changed in pstoedit.cpp OptionT < RSString, RSStringValueExtractor > gsregbase; PsToEditOptions() : ProgramOptions(true), // expect additional parameters nameOfInputFile (0), nameOfOutputFile (0), // can contain %d for page splitting nameOfIncludeFile (true, "-include","name of a PostScript file to be included",g_t,"name of PostScript file to be included" , "This options allows to specify an additional PostScript file that will be " "executed just before the normal input is read. This is helpful for " "including specific page settings or for disabling potentially unsafe " "PostScript operators, e.g., file, renamefile, or deletefile. " , (const char *) 0), // replacementfont (true, "-df","font name",t_t,"default replacement font for raster fonts", " Sometimes fonts embedded in a PostScript " "program do not have a fontname. For example, this happens in PostScript " "files generated by \\Cmd{dvips}{1}. In such a case \\Prog{pstoedit} uses a " "replacement font. The default for this is Courier. Another font can be " "specified using the \\Opt{-df} option. \\Opt{-df Helvetica} causes all " "unnamed fonts to be replaced by Helvetica. ", (const char *) "Courier"), nomaptoisolatin1 (true, "-nomaptoisolatin1",noArgument,t_t,"don't map to ISO-Latin 1 encoding" , "Normally \\Prog{pstoedit} maps all character " "codes to the ones defined by the ISO-Latin1 encoding. If you specify " "\\Opt{-nomaptoisolatin1} then the encoding from the input PostScript is " "passed unchanged to the output. This may result in strange text output but on the other hand may be the only way to get some fonts converted appropriately. Try what fits best to your concrete case. ", false), withdisplay (true, "-dis",noArgument,b_t,"let GhostScript display the file during conversion" , "Open a display during processing by Ghostscript. Some files " "only work correctly this way. ", false), pngimage (true, "-pngimage","filename - for debugging purpose mainly. Write result of processing also to a PNG file.",t_t, "for debugging purpose mainly. Write result of processing also to a PNG file" ,UseDefaultDoku,(const char*) 0), quiet (true, "-q",noArgument,b_t,"quiet mode - do not write startup message" , UseDefaultDoku, false), noquit (true, "-nq",noArgument,b_t,"don't quit GhostScript after PostScript processing - for debugging only" , "No exit from the PostScript interpreter. Normally Ghostscript " "exits after processing the pstoedit input-file. For debugging it can be " "useful to avoid this. If you do, you will have to type quit at the " "\\verb+GS>+ prompt to exit from Ghostscript. ", false), nocurves (true, "-nc",noArgument,d_t,"normally curves are shown as curves if the output format does support it. This options forces curves to be always converted to line segments.", "no curves. \n" "Normally pstoedit tries to keep curves from the input and transfers them to " "the output if the output format supports curves. If the output format does not " "support curves, then pstoedit replaces curves by a series of lines (see " "also \\Opt{-flat} option). However, in some cases the user might wish to " "have this behavior also for output formats that originally support curves. This " "can be forced via the \\Opt{-nc} option. ", false), // nosubpathes (true, "-nsp",noArgument,d_t,"normally subpathes are used if the output format support them. This option turns off subpathes." , UseDefaultDoku, false), // mergelines (true, "-mergelines",noArgument,d_t,"merge adjacent pathes if one is a stroke and the other is a fill. This depends on the capabilities of the selected output format" , "Some output formats permit the representation of filled " "polygons with edges that are in a different color than the fill color. " "Since PostScript does not support this by the standard drawing primitives directly, drawing programs typically " "generate two objects (the outline and the filled polygon) into the " "PostScript output. \\Prog{pstoedit} is able to recombine these, if they " "follow each other directly and you specify \\Opt{-mergelines}. " "However, this merging is not supported by all output formats due to restrictions in the target format.", false), convertFilledRectToStroke(true,"-filledrecttostroke",noArgument,d_t,"convert filled rectangles to a stroke", "Rectangles filled with a solid color can be converted to a stroked line with a width that corresponds to " "the width of the rectangle. This is of primary interest for output formats which do not " "support filled polygons at all. But it is restricted to rectangles only, i.e. it is not " "supported for general polygons",false), mergetext (true, "-mergetext",noArgument,d_t,"merge adjacent text pieces" , "In order to produce nice looking text output, programs producing PostScript files " "often split words into smaller pieces which are then placed individually on adjacent positions. " "However, such split text is hard to edit later on and hence it is sometime better " "to recombine these pieces again to form a word (or even sequence of words). " "For this pstoedit implements some heuristics about what text pieces are to be " "considered parts of a split word. This is based on the geometrical proximity of the different " "parts and seems to work quite well so far. But there are certainly cases " "where this simple heuristic fails. So please check the results carefully.", false), drawtext (true, "-dt",noArgument,t_t,"draw text, i.e. convert text to polygons" , "Draw text - Text is drawn as polygons. This might produce a large output file. This option is automatically " "switched on if the selected output format does not support text, e.g. " "\\Cmd{gnuplot}{1}.", false), autodrawtext (true, "-adt",noArgument,t_t,"automatic draw text. This draws text only for text that uses fonts with non standard encodings" , "Automatic Draw text - This option turns on the \\Opt{-dt} option selectively for fonts that seem to be no normal text fonts, e.g. Symbol..", false), disabledrawtext (true, "-ndt",noArgument,t_t,"fully disable any \"intelligence\" for drawing text" , "Never Draw text - fully disable the heuristics used by pstoedit to decide when to \"draw\" text " "instead of showing it as text. This may produce incorrect results, but in some cases it might nevertheless be useful. \"Use at own risk\". ", false), DrawGlyphBitmaps (true, "-dgbm",noArgument,t_t,"experimental - draw also bitmaps generated by fonts/glyphs" , UseDefaultDoku, false), correctdefinefont (true, "-correctdefinefont",noArgument,t_t,"apply some \"corrective\" actions to definefont - use this for ChemDraw generated PostScript files", "Some PostScript files, e.g. such as generated by ChemDraw, " "use the PostScript definefont operator in way that is incompatible with " "pstoedit's assumptions. The new font is defined by copying an old font " "without changing the FontName of the new font. When this option is applied, " "some \"patches\" are done after a definefont in order to make it again " "compatible with pstoedit's assumptions. This option is not enabled per default, " "since it may break other PostScript file. It is tested only with ChemDraw generated files.", false), ptioption (true, "-pti",noArgument,t_t,"precision text - individual. Places text character by character - but only if non standard chararater widths are used", "Precision text - " "Normally a text string is drawn as it occurs in the input file. However, in some situations, this might " "produce wrongly positioned characters. This is due to limitiations in most output formats of " "pstoedit. They cannot represent text with arbitray inter-letter spacing which is easily " "possible in PDF and PostScript. " "With \\Opt{-pta}, each character of a text string is placed " "separately. With \\Opt{-pti}, this is done only in cases when there is a non zero inter-letter spacing. " "The downside of \"precision text\" is a bigger file size and hard to edit " "text.", false), ptaoption (true, "-pta",noArgument,t_t,"precision text - always. Places text character by character", "see -pti", false), precisiontext (0), //= 0; // derived from the above pti ->1 pta -> 2 sonst 0 xscale (true, "-xscale","number",g_t,"scale by a factor in x-direction" , UseDefaultDoku, 1.0), yscale (true, "-yscale","number",g_t,"scale by a factor in y-direction" , UseDefaultDoku, 1.0), xshift (true, "-xshift","number",g_t,"shift image in x-direction" , UseDefaultDoku, 0.0f), yshift (true, "-yshift","number",g_t,"shift image in y-direction" , UseDefaultDoku, 0.0f), centered (true,"-centered","number",g_t,"center image before scaling or shifting", UseDefaultDoku, false), minlinewidth (true, "-minlinewidth","number",g_t,"minimal line width. All lines thinner than this will be drawn in this line width - especially zero-width lines", UseDefaultDoku, 0.0f), pagenumberformat (true, "-pagenumberformat","page number format specification",g_t,"format specification for page numbers in file name if -split is used. " "The specification is used to create the page number using sprintf." "The specification shall not include the leading % nor the trailing d. " "Default is empty string which results in formatting the page number using %d. " "This results in page numbers like 1, 2, ..., 10. " "Sometimes you may want to have fixed length with leading 0, " "so you might want to specify 02 which means 2 digits with leading 0.", UseDefaultDoku, (const char *) ""), splitpages (true, "-split",noArgument,g_t,"split multipage documents into single pages" , "Create a new file for each page of the input. For this the " "output filename must contain a \\%d which is replaced with the current page " "number. This option is automatically switched on for output formats that don't " "support multiple pages within one file, e.g. fig or gnuplot. ", false), verbose (true, "-v",noArgument,b_t,"turns on verbose mode", "Switch on verbose mode. Some additional information is shown " "during processing. ", false), useBBfrominput (true, "-usebbfrominput",noArgument,g_t,"extract BoundingBox from input file rather than determining it during processing", "If specified, pstoedit uses the BoundingBox as is (hopefully) found in the input file instead of one that is calculated by its own. ", false), simulateSubPaths (true, "-ssp",noArgument,d_t,"simulate subpaths" , "simulate sub paths. \n" "Several output formats don't support PostScript pathes containing sub pathes, i.e. " "pathes with intermediate movetos. In the normal case, each subpath is " "treated as an independent path for such output formats. This can lead to bad " "looking results. The most common case where this happens is if you use the " "\\Opt{-dt} option and show some text with letters like e, o, or b, i.e. " "letter that have a \"hole\". When the \\Opt{-ssp} option is set, pstoedit " "tries to eliminate these problems. However, this option is CPU time " "intensive! ", false), unmappablecharstring(true, "-uchar","character",t_t,"when a character cannot be mapped to one of the standard encoding vector, use this as replacement" , "Sometimes pstoedit cannot map a character " "from the encoding used by the PostScript file to the font encoding of the target " "format. In this case pstoedit replaces the input character by a special character " "in order to show all the places that couldn't be mapped correctly. The default " "for this is a \"\\#\". Using the \\Opt{-uchar} option it is possible to specify another character " "to be used instead. If you want to use a space, use -uchar \" \".", (const char *) 0), dontloadplugins (true, "-dontloadplugins",noArgument,h_t,"internal option - not relevant for normal user" , UseDefaultDoku, false), nobindversion (true, "-nb",noArgument,b_t,"use old NOBIND instead of DELAYBIND - try this if GhostScript has problems", "Since version 3.10 \\Prog{pstoedit} uses the " "\\texttt{-dDELAYBIND} option when calling GhostScript. Previously the " "\\texttt{-dNOBIND} option was used instead but that sometimes caused " "problems if a user's PostScript file overloaded standard PostScript " "operator with totally new semantic, e.g. lt for lineto instead of the standard meaning of \"less than\". Using \\Opt{-nb} the " "old style can be activated again in case the \\texttt{-dDELAYBIND} gives " "different results as before. In such a case please also contact the " "author. ", false), // pagetoextract (true, "-page","page number",g_t,"extract a specific page: 0 means all pages" , "Select a single page from a multi page PostScript or PDF file. ", 0), // 0 stands for all pages flatness (true, "-flat","flatness factor",d_t,"the precision used for approximating curves by lines if needed" , "If the output format does not support curves in the way " "PostScript does or if the \\Opt{-nc} option is specified, all curves are " "approximated by lines. Using the \\Opt{-flat} option one can control this " "approximation. This parameter is directly converted to a PostScript " "\\textbf{setflat} command. Higher numbers, e.g. 10 give rougher, lower " "numbers, e.g. 0.1 finer approximations. ", 1.0), // used for setflat simulateClipping (true, "-sclip",noArgument,d_t,"simulate clipping - probably you need to set this if you use -dt" , "simulate clipping. \n" "Most output formats of pstoedit don't have native support for clipping. For that " "\\Prog{pstoedit} offers an option to perform the clipping of the graphics " "directly without passing the clippath to the output driver. However, this " "results in curves being replaced by a lot of line segments and thus larger " "output files. So use this option only if your output looks different from " "the input due to clipping. In addition, this \"simulated clipping\" is not " "exactly the same as defined in PostScript. There might be lines drawn at " "the double size. Also clipping of text is not supported unless you also use " "the \\Opt{-dt} option. ", false), // simulate clipping usePlainStrings (true, "-ups",noArgument,b_t,"write text as plain string instead of hex string in intermediate format - normally useful for trouble shooting and debugging only." , UseDefaultDoku, false), useRGBcolors (true, "-rgb",noArgument,g_t,"use RGB colors instead of CMYK" , "Since version 3.30 pstoedit uses the CMYK colors internally. The -rgb option turns on the old behavior to use RGB values.", false), useAGL (true, "-useagl",noArgument,g_t,"use Adobe Glyph List instead of the IsoLatin1 table (this is experimental)" , UseDefaultDoku, false), noclip (true, "-noclip",noArgument,g_t,"don't use clipping (relevant only if output format supports clipping at all)" , UseDefaultDoku, false), t2fontsast1 (true, "-t2fontsast1",noArgument,t_t,"handle T2 fonts (often come as embedded fonts in PDF files) same as T1" , "Handle type 2 fonts same as type 1. Type 2 fonts sometimes occur as " "embedded fonts within PDF files. In the default mode, text using such fonts is drawn as polygons " "since pstoedit assumes that such a font is not available on the users machine. If this option " "is set, pstoedit assumes that the internal encoding follows the same as for a standard font " "and generates normal text output. This assumption may not be true in all cases. But it " "is nearly impossible for pstoedit to verify this assumption - it would have to do a sort of OCR.", false), // handle T2 fonts (often come as embedded fonts in PDF files) same as T1 keepinternalfiles (true, "-keep",noArgument,b_t,"keep the intermediate files produced by pstoedit - for debug purposes only" , UseDefaultDoku, false), fontdebug (true, "-debugfonthandling",noArgument,b_t,"writes verbose messages related to internal font processing - for debug purposes only" , UseDefaultDoku, false), justgstest (true, "-gstest",noArgument,b_t,"perform a basic test for the interworking with GhostScript" , UseDefaultDoku, false), pscover (true, "-pscover",noArgument,h_t,"perform coverage statistics about the pstoedit PostScript proloque - for debug and test only" , UseDefaultDoku, false), nofontreplacement (true, "-nfr",noArgument,t_t,"don't replace non standard encoded fonts with a replacement font" , "In normal mode pstoedit replaces bitmap fonts with a font as defined by the \\Opt{-df} option. This is done, because most output formats can't handle such fonts. This behavior can be " "switched off using the \\Opt{-nfr} option but then it strongly depends on the application reading the the generated file whether the file is usable and correctly interpreted or not. Any problems are then out of control of pstoedit.", false), passglyphnames (true, "-glyphs",noArgument,t_t,"pass glyph names to output format driver" , "pass glyph names to the output format driver. So far no output format driver really uses the glyph names, so this does not have any effect at the moment. " "It is a preparation for future work.", false), useoldnormalization (true, "-useoldnormalization",noArgument,t_t,"use legacy (pre 3.50) method for normalizing font encodings" , "Just use this option in case the new heuristic introduced in 3.5 doesn't produce correct results - however, this normalization of font encoding will always be a best-effort approach since there is no real general solution to it with reasonable effort", false), rotation (true, "-rotate","angle (0-360)",g_t,"rotate the image", "Rotage image by angle.", 0), explicitFontMapFile (true, "-fontmap","name of font map file for pstoedit",t_t,"use a font mapping from a file" , "The font map is a " "simple text file containing lines in the following format:BREAK \n" " \n\n" "\\verb+document_font_name target_font_name+ BREAK\n" "Lines beginning with \\verb+%+ are considerd comments BREAK\n " "If a font name contains spaces, use the " "\\verb+\"font name with spaces\"+ notation. \n" " \n" "If a target\\_font\\_name starts with /, it is regarded as alias to a former entry. \n " " \n" "Each font name found in the document is checked against this mapping and if " "there is a corresponding entry, the new name is used for the output. " " \n\n" "If the \\Opt{-fontmap} option is not specified, \\Prog{pstoedit} " "automatically looks for the file \\emph{drivername}.fmp in the installation " "directory and uses that file as a default fontmap file if available. The " "installation directory is: " " \n\n" "\\begin{itemize} \n" " \n" "\\item Windows: The same directory where the \\Prog{pstoedit} executable is \n" " located \n" " \n" "\\item Unix: BREAK \n" "$<$\\emph{The directory where the pstoedit executably is located}$>$\\verb+/../lib/+ \n" " \n" "\\end{itemize} \n" " \n" "The mpost.fmp in the misc directory of the pstoedit distibution is a sample " "map file with mappings from over 5000 PostScript font names to their \\TeX " "equivalents. This is useful because MetaPost is frequently used with " "\\TeX/\\LaTeX\\ and those programs don't use standard font names. This file and " "the MetaPost output format driver are provided by Scott Pakin " "(\\Email{scott+ps2ed_AT_pakin.org}). " " \n" "Another example is wemf.fmp to be used under Windows. See the misc " "directory of the pstoedit source distribution. " " \n" "After loading the implicit (based on driver name) or explicit (based on the -fontmap option) font map file, a system specific " "map file is searched and loaded from the installation directory (unix.fmp or windows.fmp). " "This file can be used to redirect certain fonts to system specific names using the /AliasName notation described above." , (const char*) 0), outputPageSize (true, "-pagesize","page format",g_t,"set page size (e.g. a4) - used by TK and libplot output format driver only", "set page size for output medium. \n" "This option sets the page size for the output medium. Currently this " "is just used by the libplot output format driver, but might be used by other " "output format drivers in future. The page size is specified in terms of the usual " "page size names, e.g. letter or a4. ", ""), fromgui (true, "-fromgui",noArgument,h_t,"internal - not for normal user", UseDefaultDoku, false), showdialog (true, "-showdialog",noArgument,h_t,"internal - not for normal user", UseDefaultDoku, false), GSToUse (true, "-gs","path to the ghostscript executable/DLL ",g_t,"tells pstoedit which ghostscript executable/DLL to use - overwrites the internal search heuristic", UseDefaultDoku,(const char*)0), showdrvhelp (true, "-help",noArgument,g_t,"show the help information", UseDefaultDoku, false) , showdocu_long (true, "-doculong",noArgument,h_t,"show help information in TeX format - long version", UseDefaultDoku, false) , showdocu_short (true, "-docushort",noArgument,h_t,"show help information in TeX format - short version", UseDefaultDoku, false) , dumphelp (true, "-dumphelp",noArgument,h_t,"show all options of all drivers in TeX format", UseDefaultDoku, false), backendonly (true, "-bo",noArgument,g_t,"backend only - This option is not useful for a \"normal\" user. " "It is useful for programs which use pstoedit as output format generator " "and can provide an input file which adheres to pstoedit's internal dump format." , "You can run backend processing only (without the PostScript " "interpreter frontend) by first running \\textbf{pstoedit} \\Opt{-f dump} " "\\Arg{infile} \\Arg{dumpfile} and then running \\textbf{pstoedit} " "\\OptArg{-f}{~format} \\Opt{-bo} \\Arg{dumpfile} \\Arg{outfile}. ", false), // used for easier debugging of backends psArgs (true, "-psarg","argument string",g_t,"additional arguments to be passed to GhostScript directly", "The string given with this option is passed " "directly to Ghostscript when Ghostscript is called to process the " "PostScript file for \\Prog{pstoedit}. For example: " "\\textbf{-psarg}\\textbf{~\"}\\textbf{-r300x300}\\textbf{\"}. " "This causes the resolution to be changed to " "300x300 dpi. (With older versions of GhostScript, changing the resolution " "this way has an effect only if the \\Opt{-dis} option is given.) " " " "If you want to pass multiple options to Ghostscript you can use multiple " "-psarg options \\Opt{-psarg opt1} \\Opt{-psarg opt2} \\Opt{-psarg opt2}. " "See the GhostScript manual for other possible options. " ), psLanguageLevel (true, "-pslanguagelevel","PostScript Language Level to be used 1,2, or 3", g_t, "PostScript Language Level to be used 1,2, or 3" " " "You can switch Ghostscript into PostScript Level 1 only mode by " "\\Opt{-pslanguagelevel 1}. This can be useful for example if the PostScript file to be " "converted uses some Level 2 specific custom color models that are not supported " "by pstoedit. However, this requires that the PostScript program checks for the " "PostScript level supported by the interpreter and \"acts\" accordingly. " "The default language level is 3.", UseDefaultDoku, 3), drivername (false,"-f","\"format[:options]\"",g_t,"target format identifier" , "target output format recognized by " "\\Prog{pstoedit}. Since other format drivers can be loaded dynamically, " "type \\texttt{pstoedit -help} to get a full list of formats. See " "\"Available formats and their specific options \" " "below for an explanation of the \\oArg{:options} to " "\\Opt{-f} format. If the format option is not given, pstoedit tries to guess the target format " " from the suffix of the output filename. However, in a lot of cases, this is not a unique mapping " "and hence pstoedit demands the \\Opt{-f} option.", ( char*)0), gsregbase (true, "-gsregbase", "GhostScript base registry path", g_t, "use this registry key as a subkey to search for GhostScript", "registry path to use as a base path when searching GhostScript interpreter \n" "This option provides means to specify a registry key under " "HKLM/Software where to search for GS interpreter key, version " "and \\verb+GS_DLL / GS_LIB+ values. Example: \"-gsregbase MyCompany\" means " "that HKLM/Software/MyCompany/GPL GhostScript would be searched " "instead of HKLM/Software/GPL GhostScript. ", "") { // nameOfInputFile (0); // nameOfOutputFile (0), // can contain %d for page splitting #define MAKESTRING(x) #x #define ADD(x) add(&x,MAKESTRING(x)) ADD(nameOfIncludeFile); ADD(replacementfont); ADD(nomaptoisolatin1); ADD(withdisplay); ADD(pngimage); ADD(quiet); ADD(noquit); ADD(nocurves ); ADD(nosubpathes); ADD(mergelines); ADD(convertFilledRectToStroke); ADD(mergetext); ADD(drawtext); ADD(autodrawtext); ADD(disabledrawtext); ADD(DrawGlyphBitmaps); ADD(correctdefinefont); ADD(ptioption); ADD(ptaoption); // ADD(precisiontext (0); //= 0; // derived from the above pti ->1 pta -> 2 sonst 0 ADD(xscale); ADD(yscale); ADD(xshift); ADD(yshift); ADD(centered); ADD(minlinewidth); ADD(pagenumberformat); ADD(splitpages); ADD(verbose ); ADD(useBBfrominput); ADD(simulateSubPaths); ADD(unmappablecharstring); ADD(dontloadplugins); ADD(nobindversion ); ADD(pagetoextract); ADD(flatness); ADD(simulateClipping); ADD(usePlainStrings); ADD(useRGBcolors); ADD(useAGL); ADD(noclip); ADD(t2fontsast1); ADD(keepinternalfiles); ADD(fontdebug); ADD(justgstest); ADD(pscover); ADD(nofontreplacement); ADD(passglyphnames); ADD(useoldnormalization); ADD(rotation ); ADD(explicitFontMapFile); ADD(outputPageSize); ADD(fromgui); #ifdef HAVEDIALOG ADD(showdialog); #endif // ADD(magnification); ADD(showdrvhelp) ; ADD(showdocu_long) ; ADD(showdocu_short) ; ADD(GSToUse); ADD(dumphelp ); ADD(backendonly); ADD(psArgs); ADD(psLanguageLevel); ADD(drivername); ADD(gsregbase); } ~PsToEditOptions() { // delete drivername.value; // this crashes under Windows (heap problem) //lint !e605 delete [] nameOfInputFile ; delete [] nameOfOutputFile ; } virtual bool hideFromDoku(const OptionBase& opt) const { return opt.propsheet == h_t; } // AutoDeleter < char >DeleterFordrivername(drivername, true); }; #endif pstoedit-3.62/src/pstoeditoutputlib.h0000644000175500010010000000250112137224260014752 00000000000000/* pstoeditoutputlib.h : Copyright (C) 2002 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* the struct version of DriverDescription this is needed in order to allow plain old C programs to use the .dll */ #include "drvbase.h" class DLLEXPORT PstoeditOutputInterface { public: PstoeditOutputInterface(); ~PstoeditOutputInterface(); drvbase * getdriver(const char * const drivername); private: class PstoeditLibraryPrivate * privatedata; // disallowed - not implemented PstoeditOutputInterface(const PstoeditOutputInterface&); const PstoeditOutputInterface& operator=(const PstoeditOutputInterface&); }; pstoedit-3.62/src/pstoedit_config.h.in0000644000175500010010000000474612137264176014763 00000000000000/* src/pstoedit_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `gd' library (-lgd). */ #undef HAVE_LIBGD /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_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 /* 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 WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif pstoedit-3.62/src/pstoedll.h0000644000175500010010000000542412137224260013004 00000000000000#ifndef PSTOEDLL_H #define PSTOEDLL_H /* pstoedll.h : This file describes the interface to query information about the drivers available via pstoedit and to call pstoedit via the dll interface Copyright (C) 1998 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* the struct version of DriverDescription this is needed in order to allow plain old C programs to use the .dll / .so */ struct DriverDescription_S { const char * symbolicname; const char * explanation; const char * suffix; const char * additionalInfo; int backendSupportsSubPathes; int backendSupportsCurveto; int backendSupportsMerging; int backendSupportsText; int backendSupportsImages; int backendSupportsMultiplePages; }; static const unsigned int pstoeditdllversion = 301; /* 301: added the clearPstoeditDriverInfo function to avoid problems with using different mallac/free in server and client. */ typedef int (pstoedit_checkversion_func) (unsigned int callersversion ); typedef void (setPstoeditsetDLLUsage_func) (int useDLL_p); /* need to use int instead of bool because of C mode */ typedef int (pstoedit_plainC_func) (int argc,const char * const argv[],const char * const psinterpreter ); /* psinterpreter can be set to 0, in which case pstoedit tries to locate one on his own. */ typedef struct DriverDescription_S * (getPstoeditDriverInfo_plainC_func)(void); typedef struct DriverDescription_S * (getPstoeditNativeDriverInfo_plainC_func)(void); /* returned result must be freed via a call to clearPstoeditDriverInfo_plainC !! */ /* the end of the array is indicated by p->symbolicname == 0 */ typedef void (clearPstoeditDriverInfo_plainC_func)(struct DriverDescription_S * ptr); #if defined(_WIN32) || defined(__OS2__) typedef int (__stdcall write_callback_func) (void * cb_data, const char* text, int length); #else typedef int (write_callback_func) (void * cb_data, const char* text, int length); #endif typedef void (setPstoeditOutputFunction_func)(void * cbData, write_callback_func* cbFunction); typedef void (useCoutForDiag_func)(int flag); /* cannot use bool in C interfaces */ #endif pstoedit-3.62/src/subpath.cpp0000644000175500010010000003440212137224255013161 00000000000000/* subpath.cpp: This file is part of pstoedit Reaggangement of paths for backends which don't support subpaths Copyright (C) 1999 Burkhard Plaum plaum_AT_ipf.uni-stuttgart.de Copyright (C) 1999 - 2013 Wolfgang Glunz, wglunz35_AT_pstoedit.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "subpath.h" #include // it would be much effort to check path in all situations. Normally it is OK. //lint -esym(613,sub_path::path) // possibly use of null pointer //lint -esym(794,sub_path::path) // possibly use of null pointer //lint -esym(613,sub_path_list::paths) //lint -esym(613,sub_path::points) //lint -esym(794,sub_path::points) static inline const Point & end_point(const basedrawingelement * e) { // unsigned int NrOfPoints = e->getNrOfPoints(); // return e->getPoint( (NrOfPoints > 0) ? (NrOfPoints - 1) : 0 ); return (e->getType() == curveto) ? e->getPoint(2) : e->getPoint(0); } // Write a subpath (only for debugging) #if 0 static void write(const basedrawingelement & e, ostream & o) { const Dtype type = e.getType(); if (type == moveto) { const Point& p = e.getPoint(0); o << p.x_ << " " << p.y_ << " moveto" << endl; } else if (type == lineto) { const Point& p = e.getPoint(0); o << p.x_ << " " << p.y_ << " lineto" << endl; } else if (type == curveto) { const Point& p = e.getPoint(0); o << p.x_ << " " << p.y_ << " "; p = e.getPoint(1); o << p.x_ << " " << p.y_ << " "; p = e.getPoint(2); o << p.x_ << " " << p.y_ << " curveto" << endl; } else if (type == closepath) { o << "closepath" << endl; } } static void write(const drvbase::PathInfo & p) { cerr << "numberOfElementsInPath: " << p.numberOfElementsInPath << endl; for (unsigned int i = 0; i < p.numberOfElementsInPath; i++) write(*p.path[i], cerr); } #endif sub_path::sub_path() { flags = 0; num_elements = 0; num_points = 0; num_children = 0; num_outside = 0; // pointers children = 0; path = 0; points = 0; parents = 0; parent = 0; llx = FLT_MAX; lly = FLT_MAX; urx = -FLT_MAX; ury = -FLT_MAX; } void sub_path::clean() { { // The moveto is always the first element of the subpath const Point & p = path[0]->getPoint(0); basedrawingelement *newLineto = new Lineto(p.x_, p.y_); // Now we can delete the path element, we no longer need p (& !!) delete path[0]; path[0] = newLineto; } // Replace a final closepath with a lineto if (path[num_elements - 1]->getType() == closepath) { const Point & p = path[0]->getPoint(0); basedrawingelement *newLineto = new Lineto(p.x_, p.y_); // Now we can delete the path element, we no longer need p (& !!) delete path[num_elements - 1]; path[num_elements - 1] = newLineto; } } void sub_path::adjust_bbox(const Point & p) { if (p.x_ < llx) llx = p.x_; if (p.y_ < lly) lly = p.y_; if (p.x_ > urx) urx = p.x_; if (p.y_ > ury) ury = p.y_; } // Read drawingelements // Arguments: // main_path: path to read from // start: Starting index // Return value: Index of the final closepath // Calculate the bounding box of the path int sub_path::read(const drvbase::PathInfo & main_path, int start) { unsigned int i, j; llx = FLT_MAX; lly = FLT_MAX; urx = -FLT_MAX; ury = -FLT_MAX; // Count the number of elements is this path for ( ; ; ) { // while true but without compiler warning if (start + num_elements == main_path.numberOfElementsInPath) break; if (num_elements && (main_path.path[start + num_elements]->getType() == moveto)) break; num_elements++; } path = new basedrawingelement *[num_elements]; // Copy the Elements and count the number of ALL points for (i = 0; i < num_elements; i++) { for (unsigned int pc = 0; pc < main_path.path[start + i]->getNrOfPoints(); pc++) { adjust_bbox(main_path.path[start + i]->getPoint(pc)); } // cout << "cloning " << (void *) main_path.path[start+i] << endl; path[i] = main_path.path[start + i]->clone(); num_points += main_path.path[start + i]->getNrOfPoints(); // cout << num_points << " done" << endl; } // cout << "done with copy path " << num_points << endl; points = new Point[num_points?num_points:1]; // at least 1 - at least for FlexeLint // Copy ALL points // cout << "now copy points " << num_points << endl; j = 0; for (i = 0; i < num_elements; i++) { // possibly replace by // Burkhard: Closepaths are ok here #if 0 if (path[i]->getType() == closepath) { cerr << "unexpected closepath found in subpath.cpp" << endl; exit(1); } #endif for (unsigned int pc = 0; pc < path[i]->getNrOfPoints(); pc++) { points[j] = path[i]->getPoint(pc); j++; } } return start + num_elements; } void sub_path::new_points() { // refill the array with the points which can be used // for connections // Now, only the endpoints of curvetos are stored // The size of the array is num_elements for (unsigned int i = 0; i < num_elements; i++) if (path[i]->getType() != closepath) points[i] = end_point(path[i]); } // calculate a 2 x 2 determinant static inline double ddet(const double a11, const double a12, const double a21, const double a22) { return a11 * a22 - a21 * a12; } // Check if a Point is inside of *this bool sub_path::point_inside(const Point & p) const { int crossings = 0; const double x1 = -1.0; //lint -esym(578,y1) // under MSVC math.h contains a y1 const double y1 = -1.0; const double x2 = p.x_; const double y2 = p.y_; // Burkhard: Bugfix for (unsigned int i = 0; i < num_points; i++) { unsigned int j = (i == num_points - 1) ? 0 : i + 1; const double x3 = points[i].x_; const double y3 = points[i].y_; const double x4 = points[j].x_; const double y4 = points[j].y_; // Check wether the lines between (x1,y1)-(x2,y2) and // (x3-y3)-(x4,y4) cross each other // The system to solve is: // (x2 - x1) * t1 - (x4 - x3) * t2 = x3 - x1; // (y2 - y1) * t1 - (y4 - y3) * t2 = y3 - y1; // // The solutions are: t1 = det1/det // t2 = det2/det // // The lines cross each other if // 0.0 < t1 < 1.0 and 0.0 < t2 < 1.0 const double det = ddet((x2 - x1), -(x4 - x3), (y2 - y1), -(y4 - y3)); // is det == 0, the lines are parallel if (!det) continue; const double det1 = ddet((x3 - x1), -(x4 - x3), (y3 - y1), -(y4 - y3)); const double det2 = ddet((x2 - x1), (x3 - x1), (y2 - y1), (y3 - y1)); if ((det < 0.0) && ((det1 > 0.0) || (det2 > 0.0) || (det1 < det) || (det2 < det))) continue; if ((det > 0.0) && ((det1 < 0.0) || (det2 < 0.0) || (det1 > det) || (det2 > det))) continue; // Special case: // (t1 == 0.0) || (t1 == 1.0) || (t2 == 0.0) || (t2 == 1.0) // t1 == 0.0 should never happen // This means that the line (x1, y1)-(x2,y2) // goes through either (x3,y3) or (x4,y4) or (x2,y2) lies // on the line (x3,y3)-(x4,y4) // A proper implementation would handle this correctly // if((det == det1) || (det == det2) || (!det1) || (!det2)) // cout << "Blupp!!" << endl; crossings++; } return (crossings & 1) ? true : false; } // Check if *this is inside of another path bool sub_path::is_inside_of(const sub_path & other) const { unsigned int inside = 0; unsigned int outside = 0; // Check if Bounding Box lies outside the other if (!((llx >= other.llx) && (lly >= other.lly) && (urx <= other.urx) && (ury <= other.ury))) return false; for (unsigned int i = 0; i < num_points; i++) { if (other.point_inside(points[i])) inside++; else outside++; } // Make a democratic decision return inside > outside; } void sub_path_list::clean_children() { for (unsigned int i = 0; i < num_paths; i++) if (paths[i].parent) paths[i].clean(); } void sub_path_list::find_parents() { // Find the parent of each subpath unsigned int i, j; sub_path *parent = 0; // Calculate for each path the number of paths // outside for (i = 0; i < num_paths; i++) { paths[i].parents = new sub_path *[num_paths - 1]; for (j = 0; j < num_paths; j++) { if (i != j) { if (paths[i].is_inside_of(paths[j])) { paths[i].parents[paths[i].num_outside] = &paths[j]; paths[i].num_outside++; } } } } // Now find the real parent paths // A path can be a parent path, if the number of outside paths is even // Check which paths can be parents for (i = 0; i < num_paths; i++) { if (!(paths[i].num_outside & 1)) { paths[i].parent = (sub_path *) 0; paths[i].children = new sub_path *[num_paths - 1]; } } // Now bring the kids to their parents for (i = 0; i < num_paths; i++) { // This can be a parent path if (!(paths[i].num_outside & 1)) continue; else { for (j = 0; j < paths[i].num_outside; j++) { if (paths[i].num_outside == (paths[i].parents[j]->num_outside + 1)) { parent = paths[i].parents[j]; paths[i].parent = parent; parent->children[parent->num_children] = &paths[i]; parent->num_children++; break; } } } } } void sub_path_list::new_points() { for (unsigned int i = 0; i < num_paths; i++) paths[i].new_points(); } void sub_path_list::read(const drvbase::PathInfo & path_info) { unsigned int i, j; num_paths = 0; // Count the number of movetos for (i = 0; i < path_info.numberOfElementsInPath - 1; i++) { if (path_info.path[i]->getType() == moveto) num_paths++; } paths = new sub_path[num_paths]; j = 0; for (i = 0; i < num_paths; i++) j = paths[i].read(path_info, j); } static float get_min_distance( basedrawingelement * const * p1, basedrawingelement * const * p2, unsigned int size1, unsigned int size2, unsigned int &index1, unsigned int &index2) { float ret = FLT_MAX; for (unsigned int i = 0; i < size1; i++) { if (p1[i]->getType() != closepath) { // wogl - inserted this check const Point & point1 = end_point(p1[i]); for (unsigned int j = 0; j < size2; j++) { const Point & point2 = end_point(p2[j]); if (p1[i]->getType() != closepath) { const float tmp1 = point1.x_ - point2.x_; const float tmp2 = point1.y_ - point2.y_; const float pdistance = tmp1 * tmp1 + tmp2 * tmp2; if (pdistance < ret) { ret = pdistance; index1 = i; index2 = j; } } } } } return ret; } static void insert_subpath( basedrawingelement ** parent_path, basedrawingelement * const * child_path, unsigned int parent_size, unsigned int child_size, unsigned int parent_index, unsigned int child_index) { // First find the point we have to lineto const Point & point1 = end_point(child_path[child_index]); basedrawingelement *first_lineto = new Lineto(point1.x_, point1.y_); const Point & point2 = end_point(parent_path[parent_index]); basedrawingelement *last_lineto = new Lineto(point2.x_, point2.y_); // Make a little space {for (unsigned int i = parent_size - 1; i >= parent_index + 1; i--) parent_path[i + child_size + 2] = parent_path[i]; } parent_path[parent_index + 1] = first_lineto; unsigned int src_index = child_index; {for (unsigned int i = 0; i < child_size; i++) { src_index++; if (src_index == child_size) src_index = 0; parent_path[parent_index + 2 + i] = child_path[src_index]; }} parent_path[parent_index + 2 + child_size] = last_lineto; } void drvbase::PathInfo::rearrange() { // write(*this); sub_path_list list; sub_path *child = (sub_path *) 0; sub_path *parent = (sub_path *) 0; // cerr << "Reading subpaths" << endl; list.read(*this); // Read the list from this // cerr << "Searching for parents" << endl; list.find_parents(); // Find the parents of all children list.new_points(); // Make the new point arrays list.clean_children(); clear(); // Clear the path // cerr << "Rearranging path" << endl; // Write the elements back { unsigned int tmp_num = 0; for (unsigned int i = 0; i < list.num_paths; i++) { // Find the next parent if (list.paths[i].parent) continue; parent = &list.paths[i]; // Copy the elements of the parent path {for (unsigned int j = 0; j < parent->num_elements; j++) path[tmp_num + j] = parent->path[j];} tmp_num += parent->num_elements; {for (unsigned int j = 0; j < parent->num_children; j++) { // In this loop, we find the closest child and // insert it into the path float min_distance = FLT_MAX; unsigned int parent_index = 0, child_index = 0; for (unsigned int k = 0; k < parent->num_children; k++) { unsigned int test_parent_index= 0, test_child_index = 0; if (parent->children[k]->flags & PS_PATH_IS_CONNECTED) continue; const float test_distance = get_min_distance(&path [numberOfElementsInPath], parent->children[k]->path, tmp_num - numberOfElementsInPath, parent->children[k]-> num_elements, test_parent_index, test_child_index); if (test_distance < min_distance) { min_distance = test_distance; parent_index = test_parent_index; child_index = test_child_index; child = parent->children[k]; } } // assert(child != 0 && "fatal error in pstoedit::subpath.cpp::drvbase::PathInfo::rearrange"); if (child) { insert_subpath(path, child->path, tmp_num, child->num_elements, parent_index + numberOfElementsInPath, child_index); child->flags |= PS_PATH_IS_CONNECTED; tmp_num += child->num_elements + 2; } }} numberOfElementsInPath = tmp_num; } } // Remove duplicate linetos {for (unsigned int i = 0; i + 1 < numberOfElementsInPath; i++) { if ((path[i]->getType() == lineto) && (path[i + 1]->getType() == lineto)) { const Point & pp1 = path[i]->getPoint(0); const Point & pp2 = path[i + 1]->getPoint(0); if ((pp1.x_ == pp2.x_) && (pp1.y_ == pp2.y_)) { delete path[i]; for (unsigned int j = i; j + 1 < numberOfElementsInPath; j++) path[j] = path[j + 1]; numberOfElementsInPath--; } } }} // write(*this); } pstoedit-3.62/src/subpath.h0000644000175500010010000000541612137224260012625 00000000000000/* subpath.h: This file is part of pstoedit Reaggangement of paths for backends which don't support subpaths Copyright (C) 1999 Burkhard Plaum plaum@ipf.uni-stuttgart.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "drvbase.h" class sub_path_list; // forward // Constants for flags const int PS_PATH_IS_CONNECTED = 1; // Class for a subpath class sub_path { public: basedrawingelement ** path; // Basedrawingelements int flags; sub_path ** parents; // Pointers to possible parents sub_path * parent; // Parent path sub_path ** children; // Children paths Point * points; unsigned int num_outside; // Number of paths outside of this unsigned int num_elements; // Number of elements unsigned int num_children; // Number of children unsigned int num_points; // Number of Points // Bounding box of the sub path float llx, lly, urx, ury; int read(const drvbase::PathInfo &, int start); // Read drawingelements void adjust_bbox(const Point & p); // Check if the path is inside of another path bool is_inside_of(const sub_path & other) const ; // Check if a point is inside of *this bool point_inside(const Point &) const; void new_points(); ~sub_path() { delete [] children; children = 0; delete [] path; path = 0; delete [] points; points = 0; delete [] parents; parents = 0; parent = 0; }; sub_path(); // Replace every moveto by a lineto in a child path void clean(); friend class sub_path_list; // friend struct drvbase::PathInfo; NOCOPYANDASSIGN(sub_path) }; class sub_path_list { sub_path * paths; // Array of subpaths unsigned int num_paths; // Number of subpaths public: sub_path_list() : paths((sub_path*)0), num_paths(0) {} ~sub_path_list() { if(paths) delete [] paths; } void find_parents(); void read(const drvbase::PathInfo &); void new_points(); void clean_children(); friend struct drvbase::PathInfo; NOCOPYANDASSIGN(sub_path_list) }; pstoedit-3.62/src/svm_actions.h0000644000175500010010000001124012137224260013474 00000000000000/************************************************************************* * * $RCSfile: metaact.hxx,v $ * * $Revision: 1.8 $ * * last change: $Author: kz $ $Date: 2005/01/13 17:40:40 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses * * - GNU Lesser General Public License Version 2.1 * - Sun Industry Standards Source License Version 1.1 * * Sun Microsystems Inc., October, 2000 * * GNU Lesser General Public License Version 2.1 * ============================================= * Copyright 2000 by Sun Microsystems, Inc. * 901 San Antonio Road, Palo Alto, CA 94303, USA * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1, as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * * Sun Industry Standards Source License Version 1.1 * ================================================= * The contents of this file are subject to the Sun Industry Standards * Source License Version 1.1 (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.openoffice.org/license.html. * * Software provided under this License is provided on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. * See the License for the specific provisions governing your rights and * obligations concerning the Software. * * The Initial Developer of the Original Code is: Sun Microsystems, Inc. * * Copyright: 2000 by Sun Microsystems, Inc. * * All Rights Reserved. * * Contributor(s): _______________________________________ * * ************************************************************************/ #ifndef __svm_actions_h__ #define __svm_actions_h__ // The content of this file was taken from OpenOffice.org's codebase, // specifically from vcl/inc/metaact.hxx // -------------------------- // - The metaaction defines - // -------------------------- #define META_NULL_ACTION (0) #define META_PIXEL_ACTION (100) #define META_POINT_ACTION (101) #define META_LINE_ACTION (102) #define META_RECT_ACTION (103) #define META_ROUNDRECT_ACTION (104) #define META_ELLIPSE_ACTION (105) #define META_ARC_ACTION (106) #define META_PIE_ACTION (107) #define META_CHORD_ACTION (108) #define META_POLYLINE_ACTION (109) #define META_POLYGON_ACTION (110) #define META_POLYPOLYGON_ACTION (111) #define META_TEXT_ACTION (112) #define META_TEXTARRAY_ACTION (113) #define META_STRETCHTEXT_ACTION (114) #define META_TEXTRECT_ACTION (115) #define META_BMP_ACTION (116) #define META_BMPSCALE_ACTION (117) #define META_BMPSCALEPART_ACTION (118) #define META_BMPEX_ACTION (119) #define META_BMPEXSCALE_ACTION (120) #define META_BMPEXSCALEPART_ACTION (121) #define META_MASK_ACTION (122) #define META_MASKSCALE_ACTION (123) #define META_MASKSCALEPART_ACTION (124) #define META_GRADIENT_ACTION (125) #define META_HATCH_ACTION (126) #define META_WALLPAPER_ACTION (127) #define META_CLIPREGION_ACTION (128) #define META_ISECTRECTCLIPREGION_ACTION (129) #define META_ISECTREGIONCLIPREGION_ACTION (130) #define META_MOVECLIPREGION_ACTION (131) #define META_LINECOLOR_ACTION (132) #define META_FILLCOLOR_ACTION (133) #define META_TEXTCOLOR_ACTION (134) #define META_TEXTFILLCOLOR_ACTION (135) #define META_TEXTALIGN_ACTION (136) #define META_MAPMODE_ACTION (137) #define META_FONT_ACTION (138) #define META_PUSH_ACTION (139) #define META_POP_ACTION (140) #define META_RASTEROP_ACTION (141) #define META_TRANSPARENT_ACTION (142) #define META_EPS_ACTION (143) #define META_REFPOINT_ACTION (144) #define META_TEXTLINECOLOR_ACTION (145) #define META_TEXTLINE_ACTION (146) #define META_FLOATTRANSPARENT_ACTION (147) #define META_GRADIENTEX_ACTION (148) #define META_LAYOUTMODE_ACTION (149) #define META_TEXTLANGUAGE_ACTION (150) #define META_COMMENT_ACTION (512) #endif pstoedit-3.62/src/version.h0000644000175500010010000000051112137224260012633 00000000000000#define P2E_MAJORVERSION 3 #define P2E_MINORVERSION 62 #define P2E_VERSIONSUFFIX #define P2E_xstr(s) P2E_str(s) #define P2E_str(s) #s #define P_PRODUCTVERSION_PS P2E_xstr(P2E_MAJORVERSION.P2E_MINORVERSION P2E_VERSIONSUFFIX) #ifndef __version_h #define __version_h static const char version[] = P_PRODUCTVERSION_PS; #endif