ooxml/000775 000765 000024 00000000000 14763502476 012330 5ustar00alexstaff000000 000000 ooxml/pkgIndex.tcl.in000664 000765 000024 00000000201 14610174024 015164 0ustar00alexstaff000000 000000 # # Tcl package index file # package ifneeded @PACKAGE_NAME@ @PACKAGE_VERSION@ [list source [file join $dir @PACKAGE_NAME@.tcl]] ooxml/configure~000775 000765 000024 00000430703 14722147475 014443 0ustar00alexstaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for ooxml 1.9. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 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 ${ZSH_VERSION+y} && (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 e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # 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'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 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 \${ZSH_VERSION+y} && (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 e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; 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 case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || 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" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi 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'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi ;; esac 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=`printf "%s\n" "$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 || printf "%s\n" 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 case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac 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 case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac 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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$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 || printf "%s\n" 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 ' t clear :clear 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" || { printf "%s\n" "$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 } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated 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='ooxml' PACKAGE_TARNAME='ooxml' PACKAGE_VERSION='1.9' PACKAGE_STRING='ooxml 1.9' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS TCLSH_PROG TCL_SHLIB_LD_LIBS TCL_LD_FLAGS TCL_EXTRA_CFLAGS TCL_DEFS TCL_LIBS CLEANFILES OBJEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC TCL_STUB_LIB_SPEC TCL_STUB_LIB_FLAG TCL_STUB_LIB_FILE TCL_LIB_SPEC TCL_LIB_FLAG TCL_LIB_FILE TCL_SRC_DIR TCL_BIN_DIR TCL_PATCH_LEVEL TCL_VERSION INSTALL_LIBRARY INSTALL_SCRIPT INSTALL_PROGRAM INSTALL_DATA INSTALL_DATA_DIR INSTALL PKG_CFLAGS PKG_LIBS PKG_INCLUDES PKG_HEADERS PKG_TCL_SOURCES PKG_STUB_OBJECTS PKG_STUB_SOURCES PKG_LIB_FILE9 PKG_LIB_FILE8 PKG_LIB_FILE EXEEXT CYGPATH 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 runstatedir 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 with_tcl with_tcl8 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # 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' runstatedir='${localstatedir}/run' 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 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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=`printf "%s\n" "$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=`printf "%s\n" "$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. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$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" ;; *) printf "%s\n" "$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 runstatedir 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 || printf "%s\n" 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 ooxml 1.9 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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --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/ooxml] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ooxml 1.9:";; esac cat <<\_ACEOF Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tcl directory containing tcl configuration (tclConfig.sh) --with-tcl8 Compile for Tcl8 in Tcl9 environment 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 Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. 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 printf "%s\n" "$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 ooxml configure 1.9 generated by GNU Autoconf 2.72 Copyright (C) 2023 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 conftest.beam 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\"" printf "%s\n" "$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 printf "%s\n" "$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 case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac 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 ooxml $as_me 1.9, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "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=`printf "%s\n" "$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=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$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 printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$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 printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (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; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* 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 do not provoke an error unfortunately, instead are silently treated as an "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 is necessary to write \x00 == 0 to get something that is 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 **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # 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,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$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=`printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-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 #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows" # as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE. #-------------------------------------------------------------------- TEA_VERSION="3.13" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking TEA configuration" >&5 printf %s "checking TEA configuration... " >&6; } if test x"${PACKAGE_NAME}" = x ; then as_fn_error $? " The PACKAGE_NAME variable must be defined by your TEA configure.ac" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (TEA ${TEA_VERSION})" >&5 printf "%s\n" "ok (TEA ${TEA_VERSION})" >&6; } # If the user did not set CFLAGS, set it now to keep macros # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi case "`uname -s`" in *win32*|*WIN32*|*MINGW32_*|*MINGW64_*|*MSYS_*) # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_CYGPATH="cygpath -m" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi ;; esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 printf "%s\n" "$CYGPATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi EXEEXT=".exe" TEA_PLATFORM="windows" ;; *CYGWIN_*) EXEEXT=".exe" # CYGPATH and TEA_PLATFORM are determined later in LOAD_TCLCONFIG ;; *) CYGPATH=echo # Maybe we are cross-compiling.... case ${host_alias} in *mingw32*) EXEEXT=".exe" TEA_PLATFORM="windows" ;; *) EXEEXT="" TEA_PLATFORM="unix" ;; esac ;; esac # Check if exec_prefix is set. If not use fall back to prefix. # Note when adjusted, so that TEA_PREFIX can correct for this. # This is needed for recursive configures, since autoconf propagates # $prefix, but not $exec_prefix (doh!). if test x$exec_prefix = xNONE ; then exec_prefix_default=yes exec_prefix=$prefix fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&5 printf "%s\n" "$as_me: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&6;} # This package name must be replaced statically for AC_SUBST to work # We AC_SUBST these here to ensure they are subst'ed, # in case the user doesn't call TEA_ADD_... # Configure the installer. INSTALL='$(SHELL) $(srcdir)/tclconfig/install-sh -c' INSTALL_DATA_DIR='${INSTALL} -d -m 755' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL} -m 755' INSTALL_SCRIPT='${INSTALL} -m 755' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system version" >&5 printf %s "checking system version... " >&6; } if test ${tcl_cv_sys_version+y} then : printf %s "(cached) " >&6 else case e in #( e) # TEA specific: if test "${TEA_PLATFORM}" = "windows" ; then tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: can't find uname command" >&5 printf "%s\n" "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then tcl_cv_sys_version=NetBSD-Debian fi fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_sys_version" >&5 printf "%s\n" "$tcl_cv_sys_version" >&6; } system=$tcl_cv_sys_version case $system in HP-UX-*) INSTALL_LIBRARY='${INSTALL} -m 755' ;; *) INSTALL_LIBRARY='${INSTALL} -m 644' ;; esac #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- # # Ok, lets find the tcl configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tcl # if test x"${no_tcl}" = x ; then # we reset no_tcl in case something fails here no_tcl=true # Check whether --with-tcl was given. if test ${with_tcl+y} then : withval=$with_tcl; with_tclconfig="${withval}" fi # Check whether --with-tcl8 was given. if test ${with_tcl8+y} then : withval=$with_tcl8; with_tcl8="${withval}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl configuration" >&5 printf %s "checking for Tcl configuration... " >&6; } if test ${ac_cv_c_tclconfig+y} then : printf %s "(cached) " >&6 else case e in #( e) # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then case "${with_tclconfig}" in */tclConfig.sh ) if test -f "${with_tclconfig}"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5 printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;} with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`" fi ;; esac if test -f "${with_tclconfig}/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`" else as_fn_error $? "${with_tclconfig} directory doesn't contain tclConfig.sh" "$LINENO" 5 fi fi # then check for a private Tcl installation if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ../tcl \ `ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \ ../../tcl \ `ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`" break fi done fi # TEA specific: on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few common install locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.5 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few other private locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi ;; esac fi if test x"${ac_cv_c_tclconfig}" = x ; then TCL_BIN_DIR="# no Tcl configs found" as_fn_error $? "Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh" "$LINENO" 5 else no_tcl= TCL_BIN_DIR="${ac_cv_c_tclconfig}" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf "%s\n" "found ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$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 ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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. printf "%s\n" "$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 -version; 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\"" printf "%s\n" "$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 printf "%s\n" "$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 (void) { ; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$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+y} && 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 case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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 case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$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 case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$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 (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$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 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$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 case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; 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.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; 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 ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _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 conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf %s "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... " >&6; } if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: loading" >&5 printf "%s\n" "loading" >&6; } . "${TCL_BIN_DIR}/tclConfig.sh" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf "%s\n" "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi # If the TCL_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TCL_LIB_SPEC will be set to the value # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC # instead of TCL_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f "${TCL_BIN_DIR}/Makefile" ; then TCL_LIB_SPEC="${TCL_BUILD_LIB_SPEC}" TCL_STUB_LIB_SPEC="${TCL_BUILD_STUB_LIB_SPEC}" TCL_STUB_LIB_PATH="${TCL_BUILD_STUB_LIB_PATH}" elif test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tcl.framework installed in an arbitrary location. case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then for i in "`cd "${TCL_BIN_DIR}"; pwd`" \ "`cd "${TCL_BIN_DIR}"/../..; pwd`"; do if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then TCL_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TCL_LIB_FILE}" break fi done fi if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then TCL_STUB_LIB_SPEC="-L`echo "${TCL_BIN_DIR}" | sed -e 's/ /\\\\ /g'` ${TCL_STUB_LIB_FLAG}" TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}" fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking platform" >&5 printf %s "checking platform... " >&6; } hold_cc=$CC; CC="$TCL_CC" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifdef _WIN32 #error win32 #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # first test we've already retrieved platform (cross-compile), fallback to unix otherwise: TEA_PLATFORM="${TEA_PLATFORM-unix}" CYGPATH=echo else case e in #( e) TEA_PLATFORM="windows" # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_CYGPATH="cygpath -m" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi ;; esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 printf "%s\n" "$CYGPATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC=$hold_cc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEA_PLATFORM" >&5 printf "%s\n" "$TEA_PLATFORM" >&6; } # The BUILD_$pkg is to define the correct extern storage class # handling when making this package printf "%s\n" "#define BUILD_${PACKAGE_NAME} /**/" >>confdefs.h # Do this here as we have fully defined TEA_PLATFORM now if test "${TEA_PLATFORM}" = "windows" ; then EXEEXT=".exe" CLEANFILES="$CLEANFILES *.lib *.dll *.pdb *.exp" fi # TEA specific: #----------------------------------------------------------------------- # Handle the --prefix=... option by defaulting to what Tcl gave. # Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER. #----------------------------------------------------------------------- if test "${prefix}" = "NONE"; then prefix_default=yes if test x"${TCL_PREFIX}" != x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&5 printf "%s\n" "$as_me: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&6;} prefix=${TCL_PREFIX} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --prefix defaulting to /usr/local" >&5 printf "%s\n" "$as_me: --prefix defaulting to /usr/local" >&6;} prefix=/usr/local fi fi if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \ -o x"${exec_prefix_default}" = x"yes" ; then if test x"${TCL_EXEC_PREFIX}" != x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&5 printf "%s\n" "$as_me: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&6;} exec_prefix=${TCL_EXEC_PREFIX} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to ${prefix}" >&5 printf "%s\n" "$as_me: --exec-prefix defaulting to ${prefix}" >&6;} exec_prefix=$prefix fi fi #----------------------------------------------------------------------- # Specify the C source files to compile in TEA_ADD_SOURCES, # public headers that need to be installed in TEA_ADD_HEADERS, # stub library C source files to compile in TEA_ADD_STUB_SOURCES, # and runtime Tcl library files in TEA_ADD_TCL_SOURCES. # This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS # and PKG_TCL_SOURCES. #----------------------------------------------------------------------- vars="ooxml.tcl" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then as_fn_error $? "could not find tcl source file '${srcdir}/$i'" "$LINENO" 5 fi PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i" done #-------------------------------------------------------------------- # You can add more files to clean if your extension creates any extra # files by extending CLEANFILES. # Add pkgIndex.tcl if it is generated in the Makefile instead of ./configure # and change Makefile.in to move it from CONFIG_CLEAN_FILES to BINARIES var. # # A few miscellaneous platform-specific items: # TEA_ADD_* any platform specific compiler/build info here. #-------------------------------------------------------------------- #CLEANFILES="$CLEANFILES" #-------------------------------------------------------------------- # Determine the name of the tclsh and/or wish executables in the # Tcl and Tk build directories or the location they were installed # into. These paths are used to support running test cases only, # the Makefile should not be making use of these paths to generate # a pkgIndex.tcl file or anything else at extension build time. #-------------------------------------------------------------------- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tclsh" >&5 printf %s "checking for tclsh... " >&6; } if test -f "${TCL_BIN_DIR}/Makefile" ; then # tclConfig.sh is in Tcl build directory if test "${TEA_PLATFORM}" = "windows"; then if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" fi else TCLSH_PROG="${TCL_BIN_DIR}/tclsh" fi else # tclConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" else TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}" fi list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TCL_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${TCLSH_PROG}" ; then REAL_TCL_BIN_DIR="`cd "$i"; pwd`/" break fi done TCLSH_PROG="${REAL_TCL_BIN_DIR}${TCLSH_PROG}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${TCLSH_PROG}" >&5 printf "%s\n" "${TCLSH_PROG}" >&6; } #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. # You may alternatively have a special pkgIndex.tcl.in or other files # which require substituting th AC variables in. Include these here. #-------------------------------------------------------------------- ac_config_files="$ac_config_files Makefile pkgIndex.tcl" 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$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+y} || &/ 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$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 : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # 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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$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 case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac 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 case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac 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 || printf "%s\n" 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 # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' 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=`printf "%s\n" "$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 || printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated 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 ooxml $as_me 1.9, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ ooxml config.status 1.9 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 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' 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 ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$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 \printf "%s\n" "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 printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _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 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;; *) 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+y} || CONFIG_FILES=$config_files 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" eval set X " :F $CONFIG_FILES " 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=`printf "%s\n" "$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 '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$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 || printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 # _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@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$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 $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"; } && { printf "%s\n" "$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 printf "%s\n" "$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 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi ooxml/PaxHeader/ooxml.tcl000664 000765 000024 00000000210 14763501533 016125 xustar00alexstaff000000 000000 30 mtime=1741587291.455777277 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/ooxml.tcl000664 000765 000024 00000443636 14763501533 014203 0ustar00alexstaff000000 000000 # # ooxml ECMA-376 Office Open XML File Formats # https://www.ecma-international.org/publications/standards/Ecma-376.htm # # Copyright (C) 2018-2025 Alexander Schoepe, Bochum, DE, # Copyright (C) 2019-2025 Rolf Ade, DE # Copyright (C) 2023-2024 Harald Oehlmann, DE # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # 3. Neither the name of the project nor the names of its contributors may be used # to endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT # SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # # INDEX and ID are zero based # # # BORDERLINESTYLE # dashDot | dashDotDot | dashed | dotted | double | hair | medium | # mediumDashDot | mediumDashDotDot | mediumDashDotDot | none | slantDashDot | thick | thin # # COLOR # 0-65 # Aqua | Black | Blue | BlueRomance | Canary | CarnationPink | Citrus | Cream | DarkSlateBlue | DeepSkyBlue | # Eucalyptus | Fuchsia | Gray | Green | Karaka | LavenderBlue | LightCoral | LightCyan | LightSkyBlue | Lime | # Lipstick | Maroon | Mauve | MediumTurquoise | Myrtle | Navy | NavyBlue | NightRider | Nobel | Olive | # OrangePeel | PeachOrange | Portage | PrussianBlue | Purple | Red | RoyalBlue | SaddleBrown | SafetyOrange | # Scampi | Silver | TangerineYellow | Teal | White | Yellow | # SystemBackground | SystemForeground # RGB # ARGB # # DEGREE # 0-360 # # DIAGONALDIRECTION # up | down # # HORIZONTAL # left | center | right # # PATTERNTYPE # darkDown | darkGray | darkGrid | darkHorizontal | darkTrellis | darkUp | darkVertical | # gray0625 | gray125 | lightDown | lightGray | # lightGrid | lightHorizontal | lightTrellis | lightUp | lightVertical | mediumGray | none | solid # # VERTICAL # top | center | bottom # # # ::ooxml::Default name value # name = path # # # ::ooxml::RowColumnToString rowcol # return name # # # ::ooxml::StringToRowColumn name # return rowcol # # # ::ooxml::IndexFix index fix # return fixedIndex # # # ::ooxml::CalcColumnWidth numberOfCharacters {maximumDigitWidth 7} {pixelPadding 5} # return width # # # ::ooxml::xl_sheets file # return sheetInformation # # # ::ooxml::xl_read file # -valuesonly -keylist -sheets PATTERN -sheetnames PATTERN -datefmt FORMAT # return workbookData # # # ::ooxml::xl_write # # constructor args # -creator CREATOR # -created UTC-TIMESTAMP # -modifiedby NAME # -modified UTC-TIMESTAMP # -application NAME # return class # # method numberformat args # -format FORMAT -general -date -time -datetime -iso8601 -number -decimal -red -separator -fraction -scientific -percent -text -string # -tag NAME # return NUMFMTID # # method defaultdatestyle STYLEID # # method font args # -list -name NAME -family FAMILY -size SIZE -color COLOR -scheme SCHEME -bold -italic -underline -color COLOR -tag NAME # return FONTID # # method fill args # -list -patterntype PATTERNTYPE -fgcolor COLOR -bgcolor COLOR -tag NAME # return FILLID # # method border args # -list -leftstyle BORDERLINESTYLE -leftcolor COLOR -rightstyle BORDERLINESTYLE -rightcolor COLOR -topstyle BORDERLINESTYLE -topcolor COLOR # -bottomstyle BORDERLINESTYLE -bottomcolor COLOR -diagonalstyle BORDERLINESTYLE -diagonalcolor COLOR -diagonaldirection DIAGONALDIRECTION # -tag NAME # return BORDERID # # method style args # -list -numfmt NUMFMTID -font FONTID -fill FILLID -border BORDERID -xf XFID -horizontal HORIZONTAL -vertical VERTICAL -rotate DEGREE -wrap # -tag NAME # return STYLEID # # method worksheet name # return SHEETID # # method column sheet args # -index INDEX -to INDEX -width WIDTH -style STYLEID -bestfit -customwidth -string -nozero -calcfit # autoincrement of column if INDEX not applied # return column # # method row sheet args # -index INDEX -height HEIGHT # autoincrement of row if INDEX not applied # return row # # method cell sheet {data {}} args # -index INDEX -style STYLEID -formula FORMULA -formulaidx SHARE -formularef INDEX:INDEX -string -nozero -height HEIGHT # autoincrement of column if INDEX not applied # return row,column # # method pageSetup sheet args # -orientation (landscape|portrait) # -scale Print scaling. The standard say this attribute is restricted # to values ranging from 10 to 400. Enforced is a positiv integer. # # method pageMarginsDefault args # -left inch -right inch -top inch -bottom inch -header inch -footer inch # # method pageMargins sheet args # -left inch -right inch -top inch -bottom inch -header inch -footer inch # # method autofilter sheet indexFrom indexTo # # method freeze sheet index # # method printarea sheet indexFrom indexTo # # method presetstyles # # method presetsheets # # method view args # -avtivetab TAB -x TWIPS -y TWIPS -height TWIPS -width TWIPS -list # # method write filename # # # ::ooxml::tablelist_to_xl lb args # -callback CALLBACK -path PATH -file FILENAME -creator CREATOR -name NAME -rootonly -addtimestamp # Callback arguments # spreadsheet sheet maxcol column title width align sortmode hide # package require Tcl 8.6.7- package require tdom 0.9.0- package require msgcat namespace eval ::ooxml { namespace export xl_sheets xl_read xl_write variable defaults variable initNodeCmds variable predefNumFmts variable predefColors variable predefColorsName variable predefColorsARBG variable predefBorderLineStyles variable predefPatternType variable xmlns variable pkgPath # Initialize to the empty string to determinate method on first usage of a # zip read function. variable zipAccessMethod {} set defaults(path) {.} set defaults(numFmts,start) 166 set defaults(cols,width) 10.83203125 # predefined formats array set predefNumFmts { 0 {dt 0 fmt {General}} 1 {dt 0 fmt {0}} 2 {dt 0 fmt {0.00}} 3 {dt 0 fmt {#,##0}} 4 {dt 0 fmt {#,##0.00}} 9 {dt 0 fmt {0%}} 10 {dt 0 fmt {0.00%}} 11 {dt 0 fmt {0.00E+00}} 12 {dt 0 fmt {#\ ?/?}} 13 {dt 0 fmt {#\ ??/??}} 14 {dt 1 fmt {mm-dd-yy}} 15 {dt 1 fmt {d-mmm-yy}} 16 {dt 1 fmt {d-mmm}} 17 {dt 1 fmt {mmm-yy}} 18 {dt 1 fmt {h:mm\ AM/PM}} 19 {dt 1 fmt {h:mm:ss\ AM/PM}} 20 {dt 1 fmt {h:mm}} 21 {dt 1 fmt {h:mm:ss}} 22 {dt 1 fmt {m/d/yy h:mm}} 37 {dt 0 fmt {#,##0\ ;(#,##0)}} 38 {dt 0 fmt {#,##0\ ;[Red](#,##0)}} 39 {dt 0 fmt {#,##0.00;(#,##0.00)}} 40 {dt 0 fmt {#,##0.00;[Red](#,##0.00)}} 45 {dt 1 fmt {mm:ss}} 46 {dt 1 fmt {[h]:mm:ss}} 47 {dt 1 fmt {mmss.0}} 48 {dt 0 fmt {##0.0E+0}} 49 {dt 0 fmt {@}} } array set predefColors { 0 {argb 00000000 name Black} 1 {argb 00FFFFFF name White} 2 {argb 00FF0000 name Red} 3 {argb 0000FF00 name Lime} 4 {argb 000000FF name Blue} 5 {argb 00FFFF00 name Yellow} 6 {argb 00FF00FF name Fuchsia} 7 {argb 0000FFFF name Aqua} 8 {argb 00000000 name Black} 9 {argb 00FFFFFF name White} 10 {argb 00FF0000 name Red} 11 {argb 0000FF00 name Lime} 12 {argb 000000FF name Blue} 13 {argb 00FFFF00 name Yellow} 14 {argb 00FF00FF name Fuchsia} 15 {argb 0000FFFF name Aqua} 16 {argb 00800000 name Maroon} 17 {argb 00008000 name Green} 18 {argb 00000080 name Navy} 19 {argb 00808000 name Olive} 20 {argb 00800080 name Purple} 21 {argb 00008080 name Teal} 22 {argb 00C0C0C0 name Silver} 23 {argb 00808080 name Gray} 24 {argb 009999FF name Portage} 25 {argb 00993366 name Lipstick} 26 {argb 00FFFFCC name Cream} 27 {argb 00CCFFFF name LightCyan} 28 {argb 00660066 name Purple} 29 {argb 00FF8080 name LightCoral} 30 {argb 000066CC name NavyBlue} 31 {argb 00CCCCFF name LavenderBlue} 32 {argb 00000080 name Navy} 33 {argb 00FF00FF name Fuchsia} 34 {argb 00FFFF00 name Yellow} 35 {argb 0000FFFF name Aqua} 36 {argb 00800080 name Purple} 37 {argb 00800000 name Maroon} 38 {argb 00008080 name Teal} 39 {argb 000000FF name Blue} 40 {argb 0000CCFF name DeepSkyBlue} 41 {argb 00CCFFFF name LightCyan} 42 {argb 00CCFFCC name BlueRomance} 43 {argb 00FFFF99 name Canary} 44 {argb 0099CCFF name LightSkyBlue} 45 {argb 00FF99CC name CarnationPink} 46 {argb 00CC99FF name Mauve} 47 {argb 00FFCC99 name PeachOrange} 48 {argb 003366FF name RoyalBlue} 49 {argb 0033CCCC name MediumTurquoise} 50 {argb 0099CC00 name Citrus} 51 {argb 00FFCC00 name TangerineYellow} 52 {argb 00FF9900 name OrangePeel} 53 {argb 00FF6600 name SafetyOrange} 54 {argb 00666699 name Scampi} 55 {argb 00969696 name Nobel} 56 {argb 00003366 name PrussianBlue} 57 {argb 00339966 name Eucalyptus} 58 {argb 00003300 name Myrtle} 59 {argb 00333300 name Karaka} 60 {argb 00993300 name SaddleBrown} 61 {argb 00993366 name Lipstick} 62 {argb 00333399 name DarkSlateBlue} 63 {argb 00333333 name NightRider} 64 {argb {} name SystemForeground} 65 {argb {} name SystemBackground} } set predefColorsName {} set predefColorsARBG {} foreach idx [lsort -integer [array names predefColors]] { lappend predefColorsName [dict get $predefColors($idx) name] lappend predefColorsARBG [dict get $predefColors($idx) argb] } set predefPatternType { darkDown darkGray darkGrid darkHorizontal darkTrellis darkUp darkVertical gray0625 gray125 lightDown lightGray lightGrid lightHorizontal lightTrellis lightUp lightVertical mediumGray none solid } set predefBorderLineStyles { dashDot dashDotDot dashed dotted double hair medium mediumDashDot mediumDashDotDot mediumDashDotDot none slantDashDot thick thin } array set xmlns { M http://schemas.openxmlformats.org/spreadsheetml/2006/main CT http://schemas.openxmlformats.org/package/2006/content-types EP http://schemas.openxmlformats.org/officeDocument/2006/extended-properties PR http://schemas.openxmlformats.org/package/2006/relationships a http://schemas.openxmlformats.org/drawingml/2006/main cp http://schemas.openxmlformats.org/package/2006/metadata/core-properties dc http://purl.org/dc/elements/1.1/ dcmitype http://purl.org/dc/dcmitype/ dcterms http://purl.org/dc/terms/ mc http://schemas.openxmlformats.org/markup-compatibility/2006 r http://schemas.openxmlformats.org/officeDocument/2006/relationships vt http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes x14ac http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac x16r2 http://schemas.microsoft.com/office/spreadsheetml/2015/02/main xsi http://www.w3.org/2001/XMLSchema-instance } # ar - Arabic - العربية msgcat::mcset ar LANGUAGE \u0627\u0644\u0639\u0631\u0628\u064a\u0629 msgcat::mcset ar Book \u0627\u0644\u0643\u062a\u0627\u0628 msgcat::mcset ar Worksheets "\u0623\u0648\u0631\u0627\u0642 \u0627\u0644\u0639\u0645\u0644" msgcat::mcset ar Sheet \u0627\u0644\u0648\u0631\u0642\u0629 # cs - Czech - čeština, český jazyk msgcat::mcset cs LANGUAGE \u010de\u0161tina msgcat::mcset cs Book Ses\u030cit msgcat::mcset cs Worksheets Listy msgcat::mcset cs Sheet List # da - Danish - dansk msgcat::mcset da LANGUAGE dansk msgcat::mcset da Book Mappe msgcat::mcset da Worksheets Regneark msgcat::mcset da Sheet Ark # de - German - Deutsch msgcat::mcset de LANGUAGE Deutsch msgcat::mcset de Book Mappe msgcat::mcset de Worksheets Arbeitsbl\u00e4tter msgcat::mcset de Sheet Blatt msgcat::mcset de {Tablelist does not exists!} {Die Tablelist existiert nicht!} msgcat::mcset de {No file selected!} "Keine Datei ausgew\u00e4hlt!" # el - Greek - ελληνικά msgcat::mcset el LANGUAGE \u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac msgcat::mcset el Book \u0392\u03b9\u03b2\u03bb\u03b9\u0301\u03bf msgcat::mcset el Worksheets "\u03a6\u03cd\u03bb\u03bb\u03b1 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2" msgcat::mcset el Sheet \u03a6\u03cd\u03bb\u03bb\u03bf # en - English - English msgcat::mcset en LANGUAGE English msgcat::mcset en Book Book msgcat::mcset en Worksheets Worksheets msgcat::mcset en Sheet Sheet msgcat::mcset en {Tablelist does not exists!} {Tablelist does not exists!} msgcat::mcset en {No file selected!} {No file selected!} # es - Spanish - Español msgcat::mcset es LANGUAGE Espa\u00f1ol msgcat::mcset es Book Libro msgcat::mcset es Worksheets "Hojas de c\u00e1lculo" msgcat::mcset es Sheet Hoja msgcat::mcset es {Tablelist does not exists!} "\u00a1Tablelist no existe!" msgcat::mcset es {No file selected!} "\u00a1Ning\u00fan archivo seleccionado!" # fi - Finnish - suomi, suomen kieli msgcat::mcset fi LANGUAGE suomi msgcat::mcset fi Book Tyo\u0308kirja msgcat::mcset fi Worksheets Laskentataulukot msgcat::mcset fi Sheet Taulukko # fr - French - français, langue française msgcat::mcset fr LANGUAGE fran\u00e7ais msgcat::mcset fr Book Classeur msgcat::mcset fr Worksheets "Feuilles de calcul" msgcat::mcset fr Sheet Feuil msgcat::mcset fr {Tablelist does not exists!} {Tablelist n'existe pas!} msgcat::mcset fr {No file selected!} "Aucun fichier s\u00e9lectionn\u00e9!" # he - Hebrew - עברית msgcat::mcset he LANGUAGE \u05e2\u05d1\u05e8\u05d9\u05ea msgcat::mcset he Book \u05d7\u05d5\u05d1\u05e8\u05ea msgcat::mcset he Worksheets "\u05d2\u05dc\u05d9\u05d5\u05e0\u05d5\u05ea \u05e2\u05d1\u05d5\u05d3\u05d4" msgcat::mcset he Sheet \u05d2\u05d9\u05dc\u05d9\u05d5\u05df # hu - Hungarian - magyar msgcat::mcset hu LANGUAGE magyar msgcat::mcset hu Book Munkafu\u0308zet msgcat::mcset hu Worksheets Munkalapok msgcat::mcset hu Sheet Munkalap # it - italian - Italiano msgcat::mcset it LANGUAGE Italiano msgcat::mcset it Book Cartel msgcat::mcset it Worksheets "Fogli di lavoro" msgcat::mcset it Sheet Foglio msgcat::mcset it {Tablelist does not exists!} {Tablelist non esiste!} msgcat::mcset it {No file selected!} {Nessun file selezionato!} # ja - Japanese - 日本語 (にほんご) msgcat::mcset ja LANGUAGE "\u65e5\u672c\u8a9e (\u306b\u307b\u3093\u3054)" msgcat::mcset ja Book Book msgcat::mcset ja Worksheets \u30ef\u30fc\u30af\u30b7\u30fc\u30c8 msgcat::mcset ja Sheet Sheet # ko - Korean - 한국어 msgcat::mcset ko LANGUAGE "\ud55c\uad6d\uc5b4" msgcat::mcset ko Book "\u1110\u1169\u11bc\u1112\u1161\u11b8 \u1106\u116e\u11ab\u1109\u1165" msgcat::mcset ko Worksheets \uc6cc\ud06c\uc2dc\ud2b8 msgcat::mcset ko Sheet \uc2dc\ud2b8 # nl - Dutch, Flemish - Nederlands, Vlaams msgcat::mcset nl LANGUAGE Nederlands msgcat::mcset nl Book Map msgcat::mcset nl Worksheets Werkbladen msgcat::mcset nl Sheet Blad msgcat::mcset nl {Tablelist does not exists!} {Tablelist bestaat niet!} msgcat::mcset nl {No file selected!} {Geen bestand geselecteerd!} # no - Norwegian - Norsk msgcat::mcset no LANGUAGE Norsk msgcat::mcset no Book Bok msgcat::mcset no Worksheets Regneark msgcat::mcset no Sheet Ark # pl - Polish - język polski, polszczyzna msgcat::mcset pl LANGUAGE polszczyzna msgcat::mcset pl Book Skoroszyt msgcat::mcset pl Worksheets Arkusze msgcat::mcset pl Sheet Arkusz # pt - Portuguese - Português msgcat::mcset pt LANGUAGE Portugu\u00eas msgcat::mcset pt Book Livro msgcat::mcset pt Worksheets "Folhas de C\u00e1lculo" msgcat::mcset pt Sheet Folha # ru - Russian - русский msgcat::mcset ru LANGUAGE \u0440\u0443\u0441\u0441\u043a\u0438\u0439 msgcat::mcset ru Book \u041a\u043d\u0438\u0433\u0430 msgcat::mcset ru Worksheets \u041b\u0438\u0441\u0442\u044b msgcat::mcset ru Sheet \u041b\u0438\u0441\u0442 # sl - Slovenian - Slovenski Jezik, Slovenščina msgcat::mcset sl LANGUAGE Sloven\u0161\u010dina msgcat::mcset sl Book Zos\u030cit msgcat::mcset sl Worksheets H\u00e1rky msgcat::mcset sl Sheet H\u00e1rok # sv - Swedish - Svenska msgcat::mcset sv LANGUAGE Svenska msgcat::mcset sv Book Bok msgcat::mcset sv Worksheets Kalkylblad msgcat::mcset sv Sheet Blad # th - Thai - ไทย msgcat::mcset th LANGUAGE \u0e44\u0e17\u0e22 msgcat::mcset th Book \u0e2a\u0e21\u0e38\u0e14\u0e07\u0e32\u0e19 msgcat::mcset th Worksheets \u0e40\u0e27\u0e34\u0e23\u0e4c\u0e01\u0e0a\u0e35\u0e15 msgcat::mcset th Sheet \u0e41\u0e1c\u0e48\u0e19\u0e07\u0e32\u0e19 # tr - Turkish - Türkçe msgcat::mcset tr LANGUAGE T\u00fcrk\u00e7e msgcat::mcset tr Book Kitap msgcat::mcset tr Worksheets "\u00c7al\u0131\u015fma Sayfalar\u0131" msgcat::mcset tr Sheet Sayfa # zh - Chinese - 中文 (Zhōngwén), 汉语, 漢語 msgcat::mcset zh LANGUAGE \u4e2d\u6587 msgcat::mcset zh Book \u5de5\u4f5c\u7c3f msgcat::mcset zh Worksheets \u5de5\u4f5c\u8868 msgcat::mcset zh Sheet \u5de5\u4f5c\u8868 } # ooxml::timet_to_dos # # Convert a unix timestamp into a DOS timestamp for ZIP times. # # DOS timestamps are 32 bits split into bit regions as follows: # 24 16 8 0 # +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ # |Y|Y|Y|Y|Y|Y|Y|m| |m|m|m|d|d|d|d|d| |h|h|h|h|h|m|m|m| |m|m|m|s|s|s|s|s| # +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ # # From tcllib / zipfile::mkzip proc ::ooxml::timet_to_dos {time_t} { set s [clock format $time_t -format {%Y %m %e %k %M %S}] scan $s {%d %d %d %d %d %d} year month day hour min sec expr {(($year-1980) << 25) | ($month << 21) | ($day << 16) | ($hour << 11) | ($min << 5) | ($sec >> 1)} } # ooxml::add_str_to_archive -- # # Add a string as a single file with string as content with # argument path to a zip archive. The zipchan channel must # already be open and binary. The return value is the central # directory record that will need to be used when finalizing # the zip archive. # # Derived from tcllib / zipfile::mkzip::add_file_to_archive proc ::ooxml::add_str_to_archive {zipchan path data {comment {}}} { set mtime [timet_to_dos [clock seconds]] set utfpath [encoding convertto utf-8 $path] set utfcomment [encoding convertto utf-8 $comment] set flags [expr {(1<<11)}] ;# utf-8 comment and path set method 0 ;# store 0, deflate 8 set attr 0 ;# text or binary (default binary) set version 20 ;# minumum version req'd to extract set extra {} set crc 0 set size 0 set csize 0 set seekable [expr {[tell $zipchan] != -1}] set attrex 0x81b60020 ;# 0o100666 (-rw-rw-rw-) set utfdata [encoding convertto utf-8 $data] set size [string length $utfdata] set offset [tell $zipchan] set local [binary format a4sssiiiiss PK\03\04 $version $flags $method $mtime $crc $csize $size [string length $utfpath] [string length $extra]] append local $utfpath $extra puts -nonewline $zipchan $local set crc [::zlib crc32 $utfdata] set cdata [::zlib deflate $utfdata] if {[string length $cdata] < $size} { set method 8 set utfdata $cdata } set csize [string length $utfdata] puts -nonewline $zipchan $utfdata # update the header set local [binary format a4sssiiii PK\03\04 $version $flags $method $mtime $crc $csize $size] set current [tell $zipchan] seek $zipchan $offset puts -nonewline $zipchan $local seek $zipchan $current set hdr [binary format a4ssssiiiisssssii PK\01\02 0x0317 $version $flags $method $mtime $crc $csize $size [string length $utfpath] [string length $extra] [string length $utfcomment] 0 $attr $attrex $offset] append hdr $utfpath $extra $utfcomment return $hdr } proc ::ooxml::Default { name value } { variable defaults switch -- $name { path { set defaults($name) [string trim $value] if {$value eq {}} { set defaults($name) . } } default { } } } proc ::ooxml::ScanDateTime { scan {iso8601 0} } { set d 1 set m 1 set ml {} set y 1970 set H 0 set M 0 set S 0 set F 0 if {[regexp {^(\d+)\.(\d+)\.(\d+)T?\s*(\d+)?:?(\d+)?:?(\d+)?\.?(\d+)?\s*([+-])?(\d+)?:?(\d+)?$} $scan all d m y H M S F x a b] || [regexp {^(\d+)-(\d+)-(\d+)T?\s*(\d+)?:?(\d+)?:?(\d+)?\.?(\d+)?\s*([+-])?(\d+)?:?(\d+)?$} $scan all y m d H M S F x a b] || [regexp {^(\d+)-(\w+)-(\d+)T?\s*(\d+)?:?(\d+)?:?(\d+)?\.?(\d+)?\s*([+-])?(\d+)?:?(\d+)?$} $scan all d ml y H M S F x a b] || [regexp {^(\d+)/(\d+)/(\d+)T?\s*(\d+)?:?(\d+)?:?(\d+)?\.?(\d+)?\s*([+-])?(\d+)?:?(\d+)?$} $scan all m d y H M S F x a b]} { scan $y %u y if {[string is integer -strict $y] && $y >= 0 && $y <= 2038} { switch -- [string tolower $ml] { jan - ene - gen - tam {set m 1} feb - fev - fév - hel {set m 2} mrz - mar - mär - maa {set m 3} apr - avr - abr - huh {set m 4} mai - may - mei - mag - maj - tou {set m 5} jun - jui - giu - kes {set m 6} jul - jui - lug - hei {set m 7} aug - aou - aoû - ago - elo {set m 8} sep - set - syy {set m 9} okt - oct - out - ott - lok {set m 10} nov - mar {set m 11} dez - dec - déc - dic - des - jou {set m 12} default { set m [string trimleft $m 0] } } foreach name {y m d H M S F a b} { upvar 0 $name var set var [string trimleft $var 0] if {![string is integer -strict $var]} { set var 0 } } if {$y < 100} { if {$y < 50} { incr y 2000 } else { incr y 1900 } } if {$y < 1900} { return {} } set Y [format %04u $y] set y [format %02u [expr {$y - int($y / 100) * 100}]] set m [format %02u $m] set d [format %02u $d] set H [format %02u $H] set M [format %02u $M] set S [format %02u $S] if {$iso8601} { return [list ${Y}-${m}-${d}T${H}:${M}:${S}] } return [set ole [expr {[clock scan ${Y}${m}${d}T${H}${M}${S} -gmt 1] / 86400.0 + 25569}]] } } return {} } proc ::ooxml::Column { col } { set name {} while {$col >= 0} { set char [binary format c [expr {($col % 26) + 65}]] set name $char$name set col [expr {$col / 26 -1}] } return $name } proc ::ooxml::RowColumnToString { rowcol } { lassign [split $rowcol ,] row col return [Column $col][incr row 1] } proc ::ooxml::StringToRowColumn { name } { set row 0 set col 0 binary scan [string toupper $name] c* vals foreach val $vals { if {$val < 58} { # 0-9, "0" = 48 set row [expr {$row * 10 + ($val-48)}] } else { # A-Z, "A" = 65 (-1 zero based shift) set col [expr {$col * 26 + ($val-64)}] } } return [incr row -1],[incr col -1] } proc ::ooxml::IndexFix { index {fix {row col}} } { if {[regexp {^([A-Za-z]+)([0-9]+)$} $index all col row]} { if {[string match -nocase {*r*} $fix]} { set col [string cat {$} $col] } if {[string match -nocase {*r*} $fix]} { set row [string cat {$} $row] } return ${col}${row} } else { return $index } } proc ::ooxml::IndexToString { index } { lassign [split $index ,] row col if {[string is integer -strict $row] && [string is integer -strict $col] && $row > -1 && $col > -1} { return [RowColumnToString $index] } else { lassign [split [StringToRowColumn $index] ,] row col if {[string is integer -strict $row] && [string is integer -strict $col] && $row > -1 && $col > -1} { return $index } } return {} } proc ::ooxml::CalcColumnWidth { numberOfCharacters {maximumDigitWidth 7} {pixelPadding 5} } { return [expr {int(($numberOfCharacters * $maximumDigitWidth + $pixelPadding + 0.0) / $maximumDigitWidth * 256.0) / 256.0}] } proc ::ooxml::arrayDeleteSheet { array sheetId args } { upvar $array a array set opts { sheetname 0 } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -sheetname { set opts([string range $opt 1 end]) 1 } default { error "unknown option \"$opt\", should be: -sheetname" } } } if {$opts(sheetname)} { foreach sheet $a(sheets) { if {$a($sheet,n) eq $sheetId} { set removeSheet $sheet break } } } else { set removeSheet $sheetId } if {[llength $a(sheets)] > 1} { set removed false foreach sheet [lsort -integer $a(sheets)] { if {!$removed && $sheet == $removeSheet} { array unset a $sheet,* set removed true continue } if {$removed} { set new [expr {$sheet - 1}] foreach src [array names a $sheet,*] { set dst [join [list $new {*}[lrange [split $src ,] 1 end]] ,] set a($dst) $a($src) } array unset a $sheet,* } } if {$removed} { set a(sheets) [lrange $a(sheets) 0 end-1] } } } # Seite 3947 # # # # # # # proc ::ooxml::Color { color } { variable predefColors variable predefColorsName variable predefColorsARBG if {[string trim $color] eq {}} { return {} } elseif {$color in {auto none}} { return [list $color 1] } elseif {[string is integer -strict $color] && $color >= 0 && $color <= 65} { return [list indexed $color] } elseif {[set idx [lsearch -exact -nocase [array names predefColors] $color]] && $idx > -1} { return [list indexed $idx] } elseif {[set idx [lsearch -exact -nocase $predefColorsName $color]] && $idx > -1} { return [list indexed $idx] } if {[string is xdigit -strict $color]} { if {[string length $color] == 6} { set color 00$color } if {[set idx [lsearch -exact -nocase $predefColorsARBG $color]] && $idx > -1} { return [list indexed $idx] } else { return [list rgb $color] } } return {} } # # ooxml::ZipOpen # # Helper to open a zip file for reading. # On first call, the zip access method is found and initialized # proc ::ooxml::ZipOpen {file} { variable zipAccessMethod if {$zipAccessMethod eq {}} { if {[package vsatisfies [package present Tcl] 9]} { set zipAccessMethod tcl9 variable zipfs [zipfs root] } elseif {![catch {package require zipfile::decode}]} { set zipAccessMethod tcllib } else { # As Version 1.0.3 has serious bugs like returning empty data, require # 1.0.4 and further package require vfs::zip 1.0.4- # Package available -> so use it set zipAccessMethod vfs variable zipfs {} } } switch -exact -- $zipAccessMethod { tcl9 { variable mnt [zipfs mount $file xlsx] } vfs { variable mnt [vfs::zip::Mount $file xlsx] } default { ::zipfile::decode::open $file variable zipdesc [::zipfile::decode::archive] } } } # # ooxml::ZipReadParse # # Read the data of a zip file wether by vfs or tcllib # Return the handle to the tdom object # Return the empty string, if file not found # Throws errors on file error, decoding error or xml parse error proc ::ooxml::ZipReadParse {file} { variable zipAccessMethod switch -exact -- $zipAccessMethod { tcllib { variable zipdesc try { set filedata [encoding convertfrom utf-8\ [::zipfile::decode::getfile $zipdesc $file]] } trap {ZIP DECODE BAD PATH} {} { # File not found error is ok - return empty string return } } default { # Use virtual file system variable zipfs try { set fd [open ${zipfs}xlsx/$file r] fconfigure $fd -encoding utf-8 # Specially catch read, as it may fire utf-8 translation errors on Tcl9 set filedata [read $fd] } trap {POSIX ENOENT} {} { # File not found error is ok - return empty string return } finally { if {[info exists fd]} { close $fd } } } } # Parse the file data # This throws an error if parsing fails return [dom parse $filedata] } # # ooxml::ZipClose # # Close the zip file # proc ::ooxml::ZipClose {} { variable zipAccessMethod switch -exact -- $zipAccessMethod { tcl9 { variable mnt zipfs unmount $mnt unset mnt } vfs { variable mnt vfs::zip::Unmount $mnt xlsx unset mnt } tcllib { ::zipfile::decode::close # Clear zip metadata variable zipdesc unset zipdesc } } } # # ooxml::xl_sheets # proc ::ooxml::xl_sheets { file args} { variable xmlns set sheets {} ZipOpen $file # As zip is open now, open try block to close it for sure try { set rdoc [ZipReadParse "xl/_rels/workbook.xml.rels"] # relsroot is needed below to add sheets. # If it is not present, there will be an error below if {$rdoc eq {}} { return -code error "No valid xlsx file" } $rdoc documentElement relsRoot $rdoc selectNodesNamespaces [list PR $xmlns(PR)] set doc [ZipReadParse "xl/workbook.xml"] if {$doc eq {}} { return -code error "No valid xlsx file" } $doc documentElement root $doc selectNodesNamespaces [list M $xmlns(M) r $xmlns(r)] set idx -1 foreach node [$root selectNodes /M:workbook/M:sheets/M:sheet] { if {[$node hasAttribute sheetId] && [$node hasAttribute name]} { set sheetId [$node @sheetId] set name [$node @name] set rid [$node getAttributeNS $xmlns(r) id] foreach node [$relsRoot selectNodes {/PR:Relationships/PR:Relationship[@Id=$rid]}] { if {[$node hasAttribute Target]} { lappend sheets [incr idx] [list sheetId $sheetId name $name rId $rid] } } } } $doc delete $rdoc delete return $sheets } finally { ZipClose } } # # ooxml::xl_read # proc ::ooxml::xl_read { file args } { variable xmlns variable predefNumFmts array set cellXfs {} array set numFmts [array get predefNumFmts] array set sharedStrings {} set sheets {} array set printArea {} array set opts { valuesonly 0 keylist 0 sheets {} sheetnames {} datefmt {%Y-%m-%d %H:%M:%S} as array } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -sheets - -sheetnames - -datefmt - -as { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -valuesonly - -keylist { set opts([string range $opt 1 end]) 1 } default { error "unknown option \"$opt\", should be: -sheets, -sheetnames, -datefmt, -as, -valuesonly or -keylist" } } } if {[string trim $opts(sheets)] eq {} && [string trim $opts(sheetnames)] eq {}} { set opts(sheetnames) * } ZipOpen $file # As zip is open now, open try block to close it for sure try { set rdoc [ZipReadParse "xl/_rels/workbook.xml.rels"] # relsroot is needed below to add sheets. # If it is not present, there will be an error below if {$rdoc eq {}} { return -code error "No valid xlsx file" } $rdoc documentElement relsRoot $rdoc selectNodesNamespaces [list PR $xmlns(PR)] set doc [ZipReadParse "xl/workbook.xml"] if {$doc eq {}} { return -code error "No valid xlsx file" } $doc documentElement root $doc selectNodesNamespaces [list M $xmlns(M) r $xmlns(r)] set idx -1 foreach node [$root selectNodes /M:workbook/M:sheets/M:sheet] { if {[$node hasAttribute sheetId] && [$node hasAttribute name]} { set sheetId [$node @sheetId] set name [$node @name] set rid [$node getAttributeNS $xmlns(r) id] foreach node [$relsRoot selectNodes {/PR:Relationships/PR:Relationship[@Id=$rid]}] { if {[$node hasAttribute Target]} { lappend sheets [incr idx] $sheetId $name $rid [$node @Target] } } } } foreach node [$root selectNodes {/M:workbook/M:definedNames/M:definedName[@name="_xlnm.Print_Area"]}] { if {[$node hasAttribute localSheetId]} { set printArea([$node @localSheetId]) [lindex [split [$node text] !] end] } } foreach node [$root selectNodes /M:workbook/M:bookViews/M:workbookView] { if {[$node hasAttribute activeTab]} { lappend wb(view) activetab [$node @activeTab] } if {[$node hasAttribute xWindow]} { lappend wb(view) x [$node @xWindow] } if {[$node hasAttribute yWindow]} { lappend wb(view) y [$node @yWindow] } if {[$node hasAttribute windowHeight]} { lappend wb(view) height [$node @windowHeight] } if {[$node hasAttribute windowWidth]} { lappend wb(view) width [$node @windowWidth] } } $doc delete $rdoc delete set doc [ZipReadParse "xl/sharedStrings.xml"] if {$doc ne {}} { $doc documentElement root $doc selectNodesNamespaces [list M $xmlns(M)] set idx -1 foreach shared [$root selectNodes /M:sst/M:si] { incr idx foreach node [$shared selectNodes M:t/text()] { append sharedStrings($idx) [$node nodeValue] } foreach node [$shared selectNodes */M:t/text()] { append sharedStrings($idx) [$node nodeValue] } } $doc delete } set doc [ZipReadParse "xl/styles.xml"] if {$doc ne {}} { $doc documentElement root $doc selectNodesNamespaces [list M $xmlns(M) mc $xmlns(mc) x14ac $xmlns(x14ac) x16r2 $xmlns(x16r2)] set idx -1 foreach node [$root selectNodes /M:styleSheet/M:numFmts/M:numFmt] { incr idx if {[$node hasAttribute numFmtId] && [$node hasAttribute formatCode]} { set numFmtId [$node @numFmtId] set formatCode [$node @formatCode] set datetime 0 foreach tag {*y* *m* *d* *h* *s*} { if {[string match -nocase $tag [string map {Black {} Blue {} Cyan {} Green {} Magenta {} Red {} White {} Yellow {}} $formatCode]]} { set datetime 1 break } } set numFmts($numFmtId) [list dt $datetime fmt $formatCode] } } set idx -1 foreach node [$root selectNodes /M:styleSheet/M:cellXfs/M:xf] { incr idx if {[$node hasAttribute numFmtId]} { set numFmtId [$node @numFmtId] if {[$node hasAttribute applyNumberFormat]} { set applyNumberFormat [$node @applyNumberFormat] } else { set applyNumberFormat 0 } set cellXfs($idx) [list nfi $numFmtId anf $applyNumberFormat] } } if {!$opts(valuesonly)} { ### READING KNOWN FORMATS AND STYLES ### set wb(s,@) {} array unset a * set a(max) 0 set wb(s,numFmtsIds) {} foreach node [$root selectNodes /M:styleSheet/M:numFmts/M:numFmt] { if {[$node hasAttribute numFmtId] && [$node hasAttribute formatCode]} { set wb(s,numFmts,[set idx [$node @numFmtId]]) [$node @formatCode] lappend wb(s,numFmtsIds) $idx if {$idx > $a(max)} { set a(max) $idx } } } if {$a(max) < $::ooxml::defaults(numFmts,start)} { set a(max) $::ooxml::defaults(numFmts,start) } lappend wb(s,@) numFmtId [incr a(max)] set idx -1 array unset a * foreach node [$root selectNodes /M:styleSheet/M:fonts/M:font] { incr idx array set a {name {} family {} size {} color {} scheme {} bold 0 italic 0 underline 0 color {}} foreach node1 [$node childNodes] { switch -- [$node1 nodeName] { b { set a(bold) 1 } i { set a(italic) 1 } u { set a(underline) 1 } sz { if {[$node1 hasAttribute val]} { set a(size) [$node1 @val] } } color { if {[$node1 hasAttribute auto]} { set a(color) [list auto [$node1 @auto]] } elseif {[$node1 hasAttribute rgb]} { set a(color) [list rgb [$node1 @rgb]] } elseif {[$node1 hasAttribute indexed]} { set a(color) [list indexed [$node1 @indexed]] } elseif {[$node1 hasAttribute theme]} { set a(color) [list theme [$node1 @theme]] } } name { if {[$node1 hasAttribute val]} { set a(name) [$node1 @val] } } family { if {[$node1 hasAttribute val]} { set a(family) [$node1 @val] } } scheme { if {[$node1 hasAttribute val]} { set a(scheme) [$node1 @val] } } } } set wb(s,fonts,$idx) [array get a] } lappend wb(s,@) fonts [incr idx] set idx -1 array unset a * foreach node [$root selectNodes /M:styleSheet/M:fills/M:fill] { incr idx array set a {patterntype {} fgcolor {} bgcolor {}} foreach node1 [$node childNodes] { switch -- [$node1 nodeName] { patternFill { if {[$node1 hasAttribute patternType]} { set a(patterntype) [$node1 @patternType] } foreach node2 [$node1 childNodes] { if {[$node2 nodeName] in { fgColor bgColor}} { if {[$node2 hasAttribute auto]} { set a([string tolower [$node2 nodeName]]) [list auto [$node2 @auto]] } elseif {[$node2 hasAttribute rgb]} { set a([string tolower [$node2 nodeName]]) [list rgb [$node2 @rgb]] } elseif {[$node2 hasAttribute indexed]} { set a([string tolower [$node2 nodeName]]) [list indexed [$node2 @indexed]] } elseif {[$node2 hasAttribute theme]} { set a([string tolower [$node2 nodeName]]) [list theme [$node2 @theme]] } } } } } } set wb(s,fills,$idx) [array get a] } lappend wb(s,@) fills [incr idx] set idx -1 unset -nocomplain d foreach node [$root selectNodes /M:styleSheet/M:borders/M:border] { incr idx set d {left {style {} color {}} right {style {} color {}} top {style {} color {}} bottom {style {} color {}} diagonal {style {} color {} direction {}}} foreach node1 [$node childNodes] { if {[$node1 hasAttribute style]} { set style [$node1 @style] } else { set style {} } set color {} foreach node2 [$node1 childNodes] { if {[$node2 nodeName] eq {color}} { if {[$node2 hasAttribute auto]} { set color [list auto [$node2 @auto]] } elseif {[$node2 hasAttribute rgb]} { set color [list rgb [$node2 @rgb]] } elseif {[$node2 hasAttribute indexed]} { set color [list indexed [$node2 @indexed]] } elseif {[$node2 hasAttribute theme]} { set color [list theme [$node2 @theme]] } } } if {[$node1 nodeName] in {left right top bottom diagonal}} { if {$style ne {}} { dict set d [$node1 nodeName] style $style } if {$color ne {}} { dict set d [$node1 nodeName] color $color } } } if {[$node hasAttribute diagonalUp]} { dict set d diagonal direction diagonalUp } elseif {[$node hasAttribute diagonalDown]} { dict set d diagonal direction diagonalDown } set wb(s,borders,$idx) $d } lappend wb(s,@) borders [incr idx] set idx -1 array unset a * foreach node [$root selectNodes /M:styleSheet/M:cellXfs/M:xf] { incr idx array set a {numfmt 0 font 0 fill 0 border 0 xf 0 horizontal {} vertical {} rotate {} wrap {}} if {[$node hasAttribute numFmtId]} { set a(numfmt) [$node @numFmtId] } if {[$node hasAttribute fontId]} { set a(font) [$node @fontId] } if {[$node hasAttribute fillId]} { set a(fill) [$node @fillId] } if {[$node hasAttribute borderId]} { set a(border) [$node @borderId] } if {[$node hasAttribute xfId]} { set a(xf) [$node @xfId] } foreach node1 [$node childNodes] { switch -- [$node1 nodeName] { alignment { if {[$node1 hasAttribute horizontal]} { set a(horizontal) [$node1 @horizontal] } if {[$node1 hasAttribute vertical]} { set a(vertical) [$node1 @vertical] } if {[$node1 hasAttribute textRotation]} { set a(rotate) [$node1 @textRotation] } if {[$node1 hasAttribute wrapText]} { set a(wrap) [$node1 @wrapText] } } } } set wb(s,styles,$idx) [array get a] } lappend wb(s,@) styles [incr idx] } $doc delete } ### HYPERLINKS ### foreach {sheet sid name rid target} $sheets { set doc [ZipReadParse "xl/worksheets/_rels/sheet[expr {$sheet + 1}].xml.rels"] if {$doc ne {}} { $doc documentElement root $doc selectNodesNamespaces [list M $xmlns(PR)] foreach hlink [$root selectNodes /M:Relationships/M:Relationship] { if {[$hlink hasAttribute Id] && [$hlink hasAttribute Target]} { set hl($sheet,[$hlink @Id]) [$hlink @Target] } } $doc delete } } ### SHEET AND DATA ### array set wb {} foreach {sheet sid name rid target} $sheets { set read false if {$opts(sheets) ne {}} { foreach pat $opts(sheets) { if {[string match $pat $sheet]} { set read true break } } } if {!$read && $opts(sheetnames) ne {}} { foreach pat $opts(sheetnames) { if {[string match $pat $name]} { set read true break } } } if {!$read} continue lappend wb(sheets) $sheet set wb($sheet,n) $name set wb($sheet,max_row) -1 set wb($sheet,max_column) -1 set doc [ZipReadParse "xl/$target"] # This file must be present if {$doc eq {}} { return -code error "Excel file error: No data for sheet [expr {$sheet+1}]" } $doc documentElement root $doc selectNodesNamespaces [list M $xmlns(M) r $xmlns(r) mc $xmlns(mc) x14ac $xmlns(x14ac)] if {!$opts(valuesonly)} { set idx -1 foreach col [$root selectNodes /M:worksheet/M:cols/M:col] { incr idx set cols {} foreach item {min max width style bestFit customWidth} { if {[$col hasAttribute $item]} { switch -- $item { min - max { lappend cols [string tolower $item] [expr {[$col @$item] - 1}] } default { lappend cols [string tolower $item] [$col @$item] } } } else { lappend cols [string tolower $item] 0 } } lappend cols string 0 nozero 0 calcfit 0 set wb($sheet,col,[dict get $cols min]) $cols } set wb($sheet,cols) [incr idx] } set rowindex -1 foreach row [$root selectNodes /M:worksheet/M:sheetData/M:row] { incr rowindex set cellindex -1 foreach cell [$row selectNodes M:c] { incr cellindex # Get cell position # if r exists, it contains the cell position like "A1". # Otherwise, use the counter values # The cell may omit positions so, set the counters if explicit # cell position is given if {[$cell hasAttribute r]} { set rowcol [StringToRowColumn [$cell @r]] # Correct the current counters scan $rowcol %d,%d rowindex cellindex } else { set rowcol $rowindex,$cellindex } if {[$cell hasAttribute t]} { set type [$cell @t] } else { set type n } set value {} set datetime {} ## FORMULA ## if {!$opts(valuesonly) && [set node [$cell selectNodes M:f]] ne {}} { set wb($sheet,f,$rowcol) {} if {[set formula [$cell selectNodes M:f/text()]] ne {}} { lappend wb($sheet,f,$rowcol) f [$formula nodeValue] } if {[$node hasAttribute t] && [$node @t] eq {shared}} { if {[$node hasAttribute si]} { lappend wb($sheet,f,$rowcol) i [$node @si] } if {[$node hasAttribute ref]} { lappend wb($sheet,f,$rowcol) r [$node @ref] } } } switch -- $type { n - b - d - str { # number (default), boolean, iso-date, formula string if {[set node [$cell selectNodes M:v/text()]] ne {}} { set value [$node nodeValue] if {$type eq {n} && [$cell hasAttribute s] && [string is double -strict $value]} { set idx [$cell @s] if {[info exists cellXfs($idx)] && [dict exists $cellXfs($idx) nfi]} { set numFmtId [dict get $cellXfs($idx) nfi] if {[info exists numFmts($numFmtId)] && [dict exists $numFmts($numFmtId) dt] && [dict get $numFmts($numFmtId) dt]} { set datetime $value catch {clock format [expr {round(($value - 25569) * 86400.0)}] -format $opts(datefmt) -gmt 1} value } } } } else { if {![$cell hasAttribute s]} continue } } s { # shared string if {[set node [$cell selectNodes M:v/text()]] ne {}} { set index [$node nodeValue] if {[info exists sharedStrings($index)]} { set value $sharedStrings($index) } } else { if {![$cell hasAttribute s]} continue } } inlineStr { # inline string if {[set string [$cell selectNodes M:is]] ne {}} { foreach node [$string selectNodes M:t/text()] { append value [$node nodeValue] } foreach node [$string selectNodes */M:t/text()] { append value [$node nodeValue] } } else { if {![$cell hasAttribute s]} continue } } e { # error } } if {!$opts(valuesonly)} { set wb($sheet,c,$rowcol) [$cell @r] } if {!$opts(valuesonly)} { if {[$cell hasAttribute s]} { set wb($sheet,s,$rowcol) [$cell @s] } } if {!$opts(valuesonly)} { if {[$cell hasAttribute t]} { set wb($sheet,t,$rowcol) [$cell @t] } } set wb($sheet,v,$rowcol) $value if {!$opts(valuesonly) && $datetime ne {}} { set wb($sheet,d,$rowcol) $datetime } } } if {!$opts(valuesonly)} { foreach hlink [$root selectNodes /M:worksheet/M:hyperlinks/M:hyperlink] { if {[$hlink hasAttribute ref] && [$hlink hasAttribute r:id]} { set idx [::ooxml::StringToRowColumn [$hlink @ref]] if {[info exists hl($sheet,[$hlink @r:id])]} { if {[$hlink hasAttribute tooltip]} { set tt [$hlink @tooltip] } else { set tt {} } set wb($sheet,l,$idx) [list l $hl($sheet,[$hlink @r:id]) t $tt] } } } } if {!$opts(valuesonly)} { foreach {n v} [array get printArea] { set wb($n,printarea) $v } } if {!$opts(valuesonly)} { foreach row [$root selectNodes /M:worksheet/M:sheetData/M:row] { if {[$row hasAttribute r] && [$row hasAttribute ht] && [$row hasAttribute customHeight] && [$row @customHeight] == 1} { dict set wb($sheet,rowheight) [expr {[$row @r] - 1}] [$row @ht] } } } if {!$opts(valuesonly)} { foreach freeze [$root selectNodes /M:worksheet/M:sheetViews/M:sheetView/M:pane] { if {[$freeze hasAttribute topLeftCell] && [$freeze hasAttribute state] && [$freeze @state] eq {frozen}} { set wb($sheet,freeze) [$freeze @topLeftCell] } } } if {!$opts(valuesonly)} { foreach filter [$root selectNodes /M:worksheet/M:autoFilter] { if {[$filter hasAttribute ref]} { lappend wb($sheet,filter) [$filter @ref] } } } if {!$opts(valuesonly)} { foreach merge [$root selectNodes /M:worksheet/M:mergeCells/M:mergeCell] { if {[$merge hasAttribute ref]} { lappend wb($sheet,merge) [$merge @ref] } } } if {!$opts(valuesonly)} { foreach node [$root selectNodes /M:worksheet/M:pageMargins] { foreach n [$node attributeNames] { if {$n in {left right top bottom header footer}} { dict set wb($sheet,pageMargins) -$n [$node @$n] } } } } if {!$opts(valuesonly)} { foreach node [$root selectNodes /M:worksheet/M:pageSetup] { foreach n [$node attributeNames] { if {$n in {blackAndWhite cellComments copies draft errors firstPageNumber fitToHeight fitToWidth horziontalDpi orientation pageOrder paperHeight paperSize paperWide scale useFirstPageNumber verticalDpi}} { dict set wb($sheet,pageSetup) -$n [$node @$n] } } } } $doc delete } } finally { ZipClose } foreach cell [lsort -dictionary [array names wb *,v,*]] { lassign [split $cell ,] sheet tag row column if {$opts(keylist)} { dict lappend wb($sheet,k) $row $column } if {$row > $wb($sheet,max_row)} { set wb($sheet,max_row) $row } if {$column > $wb($sheet,max_column)} { set wb($sheet,max_column) $column } } return [array get wb] } # Internal helper proc ooxml::Dom2zip {zf node path cd count} { upvar $cd mycd upvar $count mycount append mycd [::ooxml::add_str_to_archive $zf $path [$node asXML -indent none -xmlDeclaration 1 -encString "UTF-8"]] incr mycount } # # ooxml::InitNodeCommands # proc ooxml::InitNodeCommands {} { variable initNodeCmds variable xmlns if {[info exists initNodeCmds] && $initNodeCmds} return set elementNodes { AppVersion Application Company Default DocSecurity HeadingPairs HyperlinksChanged LinksUpToDate Override Relationship Relationships ScaleCrop SharedDoc TitlesOfParts a:accent1 a:accent2 a:accent3 a:accent4 a:accent5 a:accent6 a:alpha a:bevelT a:bgFillStyleLst a:bodyPr a:camera a:clrScheme a:cs a:dk1 a:dk2 a:ea a:effectLst a:effectRef a:effectStyle a:effectStyleLst a:extraClrSchemeLst a:fillRef a:fillStyleLst a:fillToRect a:fmtScheme a:folHlink a:font a:fontRef a:fontScheme a:gradFill a:gs a:gsLst a:hlink a:latin a:lightRig a:lin a:ln a:lnDef a:lnRef a:lnStyleLst a:lstStyle a:lt1 a:lt2 a:majorFont a:minorFont a:objectDefaults a:outerShdw a:path a:prstDash a:rot a:satMod a:scene3d a:schemeClr a:shade a:solidFill a:sp3d a:spDef a:spPr a:srgbClr a:style a:sysClr a:themeElements a:tint alignment autoFilter b bgColor bookViews border borders bottom c calcPr cellStyle cellStyleXfs cellStyles cellXfs col color cols cp:lastModifiedBy dc:creator dcterms:created dcterms:modified definedName definedNames diagonal dimension dxfs f family fgColor fileVersion fill fills font fonts hyperlink hyperlinks i left mergeCell mergeCells name numFmt numFmts pageMargins pageSetup pane patternFill right row scheme sheet sheetData sheetFormatPr sheetView sheetViews sheets si sz t tableStyles top u v vt:i4 vt:lpstr vt:variant vt:vector workbookPr workbookView xf } namespace eval ::ooxml "dom createNodeCmd textNode Text; namespace export Text" # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # # foreach tag $elementNodes { # switch -glob -- $tag { # a:* { # set ns $xmlns(a) # } # cp:* { # set ns $xmlns(cp) # } # dc:* { # set ns $xmlns(dc) # } # dcterms:* { # set ns $xmlns(dcterms) # } # vt:* { # set ns $xmlns(vt) # } # AppVersion - Application - Company - DocSecurity - HeadingPairs - HyperlinksChanged - LinksUpToDate - ScaleCrop - SharedDoc - TitlesOfParts { # set ns $xmlns(EP) # } # Default - Override { # set ns $xmlns(CT) # } # Relationship { # set ns $xmlns(PR) # } # default { # set ns $xmlns(M) # } # } # namespace eval ::ooxml "dom createNodeCmd -tagName $tag -namespace $ns elementNode Tag_$tag; namespace export Tag_$tag" # } foreach tag $elementNodes { namespace eval ::ooxml "dom createNodeCmd -tagName $tag elementNode Tag_$tag; namespace export Tag_$tag" } set initNodeCmds 1 } # # ooxml::xl_write # oo::class create ooxml::xl_write { constructor { args } { my variable obj my variable cells my variable sharedStrings my variable fonts my variable numFmts my variable styles my variable fills my variable borders my variable cols my variable view my variable tags my variable hlinks my variable pageMargins my variable pageMarginsDefault my variable pageSetups array set opts { creator {unknown} created {} modifiedby {} modified {} application {} } array set tags {} set pageMarginsDefault { left 0.75 right 0.75 top 1 bottom 1 header 0.5 footer 0.5 } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -creator - -created - -modifiedby - -modified - -application { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -creator, -created, -modifiedby, -modified or -application" } } } set obj(blockPreset) 0 set obj(encoding) utf-8 set obj(indent) none if {[string trim $opts(creator)] eq {}} { set obj(creator) {unknown} } else { set obj(creator) $opts(creator) } if {[string trim $opts(created)] eq {} || [catch {clock scan $opts(created)}]} { set obj(created) [clock format [clock seconds] -format %Y-%m-%dT%H:%M:%SZ -gmt 1] } elseif {[string is integer -strict $opts(created)] && $opts(created) > 0} { set obj(created) [clock format $opts(created) -format %Y-%m-%dT%H:%M:%SZ -gmt 1] } else { set obj(created) [clock format [clock scan $opts(created)] -format %Y-%m-%dT%H:%M:%SZ -gmt 1] } if {[string trim $opts(modifiedby)] eq {}} { set obj(lastModifiedBy) $opts(creator) } else { set obj(lastModifiedBy) $opts(modifiedby) } if {[string trim $opts(modified)] eq {} || [catch {clock scan $opts(modified)}]} { set obj(modified) [clock format [clock seconds] -format %Y-%m-%dT%H:%M:%SZ -gmt 1] } elseif {[string is integer -strict $opts(modified)] && $opts(modified) > 0} { set obj(modified) [clock format $opts(modified) -format %Y-%m-%dT%H:%M:%SZ -gmt 1] } else { set obj(modified) [clock format [clock scan $opts(modified)] -format %Y-%m-%dT%H:%M:%SZ -gmt 1] } if {[string trim $opts(application)] eq {}} { set obj(application) {Tcl - Office Open XML - Spreadsheet} } else { set obj(application) $opts(application) } set obj(sheets) 0 array set sheets {} set obj(sharedStrings) 0 set sharedStrings {} set obj(numFmts) $::ooxml::defaults(numFmts,start) array set numFmts {} set obj(borders) 1 set borders(0) {left {style {} color {}} right {style {} color {}} top {style {} color {}} bottom {style {} color {}} diagonal {style {} color {} direction {}}} set obj(fills) 2 set fills(0) {patterntype none fgcolor {} bgcolor {}} set fills(1) {patterntype gray125 fgcolor {} bgcolor {}} set obj(fonts) 1 set fonts(0) {name Calibri family 2 size 12 color {theme 1} scheme minor bold 0 italic 0 underline 0 color {}} set obj(styles) 1 set styles(0) {numfmt 0 font 0 fill 0 border 0 xf 0 horizontal {} vertical {} rotate {} wrap {}} set obj(cols) 0 array set cols {} set obj(calcChain) 0 set obj(defaultdatestyle) 0 array set cells {} array set hlinks {} array set view {activetab 0} return 0 } destructor { return 0 } method numberformat { args } { my variable obj my variable numFmts my variable tags array set opts { list 0 format {} general 0 date 0 time 0 datetime 0 iso8601 0 number 0 decimal 0 red 0 separator 0 fraction 0 scientific 0 percent 0 string 0 text 0 tag {} } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -format { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -list - -general - -date - -time - -datetime - -iso8601 - -number - -decimal - -red - -separator - -fraction - -scientific - -percent - -string - -text { set opts([string range $opt 1 end]) 1 } -tag { incr idx if {$idx < $len} { if {[string is integer -strict [set tag [lindex $args $idx]]]} { error "option '$opt': should not be an integer value" } else { set opts([string range $opt 1 end]) $tag } unset tag } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -format, -list, -general, -date, -time, -datetime, -iso8601, -number, -decimal, -red, -separator, -fraction, -scientific, -percent, -string, -text or tag" } } } if {$opts(list)} { array set tmp [array get ::ooxml::predefNumFmts] array set tmp [array get numFmts] return [array get tmp] } set obj(blockPreset) 1 if {$opts(general)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 0 } return 0 } if {$opts(date)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 14 } return 14 } if {$opts(time)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 20 } return 20 } if {$opts(number)} { if {$opts(separator)} { if {$opts(red)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 38 } return 38 } else { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 3 } return 3 } } else { if {$opts(red)} { return -1 } else { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 1 } return 1 } } } if {$opts(decimal)} { if {$opts(percent)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 10 } return 10 } if {$opts(separator)} { if {$opts(red)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 40 } return 40 } else { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 4 } return 4 } } else { if {$opts(red)} { return -1 } else { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 2 } return 2 } } } if {$opts(fraction)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 12 } return 12 } if {$opts(scientific)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 11 } return 11 } if {$opts(percent)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 9 } return 9 } if {$opts(text) || $opts(string)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) 49 } return 49 } if {$opts(datetime)} { set opts(format) {dd/mm/yyyy\ hh:mm;@} } if {$opts(iso8601)} { set opts(format) {yyyy\-mm\-dd\ hh:mm:ss;@} } foreach idx [array names ::ooxml::predefNumFmts] { if {[dict get $::ooxml::predefNumFmts($idx) fmt] eq $opts(format)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) $idx } return $idx } } foreach idx [array names numFmts] { if {$numFmts($idx) eq $opts(format)} { if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) $idx } return $idx } } if {$opts(format) eq {}} { return -1 } set idx $obj(numFmts) set numFmts($idx) $opts(format) incr obj(numFmts) if {$opts(tag) ne {}} { set tags(numFmts,$opts(tag)) $idx } return $idx } method defaultdatestyle { style } { my variable obj my variable tags if {![string is integer -strict $style] && [info exists tags(styles,$style)]} { set style $tags(styles,$style) } set obj(defaultdatestyle) $style } method font { args } { my variable obj my variable fonts my variable tags array set a $fonts(0) array set opts " list 0 name [list $a(name)] family [list $a(family)] size [list $a(size)] color [list $a(color)] scheme [list $a(scheme)] bold 0 italic 0 underline 0 tag {} " set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -name - -family - -size - -color - -scheme { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -list - -bold - -italic - -underline { set opts([string range $opt 1 end]) 1 } -tag { incr idx if {$idx < $len} { if {[string is integer -strict [set tag [lindex $args $idx]]]} { error "option '$opt': should not be an integer value" } else { set opts([string range $opt 1 end]) $tag } unset tag } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -name, -family, -size, -color, -scheme, -list, -bold, -italic, -underline or -tag" } } } if {$opts(list)} { return [array get fonts] } set obj(blockPreset) 1 if {$opts(name) eq {}} { set opts(name) $a(name) } if {![string is integer -strict $opts(family)] || $opts(family) < 0} { set opts(family) $a(family) } if {![string is integer -strict $opts(size)] || $opts(size) < 0} { set opts(size) $a(size) } if {$opts(scheme) ni {major minor none}} { set opts(scheme) $a(scheme) } set opts(color) [::ooxml::Color $opts(color)] foreach idx [lsort -integer [array names fonts]] { array set a $fonts($idx) set found 1 foreach name [array names a] { if {$a($name) ne $opts($name)} { set found 0 break } } if {$found} { if {$opts(tag) ne {}} { set tags(fonts,$opts(tag)) $idx } return $idx } } set fonts($obj(fonts)) {} foreach item {name family size bold italic underline color scheme} { lappend fonts($obj(fonts)) $item $opts($item) } set idx $obj(fonts) incr obj(fonts) if {$opts(tag) ne {}} { set tags(fonts,$opts(tag)) $idx } return $idx } method fill { args } { my variable obj my variable fills my variable tags array set opts { list 0 patterntype none fgcolor {} bgcolor {} tag {} } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -patterntype - -fgcolor - -bgcolor { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -list { set opts([string range $opt 1 end]) 1 } -tag { incr idx if {$idx < $len} { if {[string is integer -strict [set tag [lindex $args $idx]]]} { error "option '$opt': should not be an integer value" } else { set opts([string range $opt 1 end]) $tag } unset tag } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -patterntype, -fgcolor, -bgcolor, -list or -tag" } } } if {$opts(list)} { return [array get fills] } set obj(blockPreset) 1 if {$opts(patterntype) ni $::ooxml::predefPatternType} { set opts(patterntype) none } set opts(fgcolor) [::ooxml::Color $opts(fgcolor)] set opts(bgcolor) [::ooxml::Color $opts(bgcolor)] foreach idx [lsort -integer [array names fills]] { array set a $fills($idx) set found 1 foreach name [array names a] { if {$a($name) ne $opts($name)} { set found 0 break } } if {$found} { if {$opts(tag) ne {}} { set tags(fills,$opts(tag)) $idx } return $idx } } set fills($obj(fills)) {} foreach item {patterntype fgcolor bgcolor} { lappend fills($obj(fills)) $item $opts($item) } set idx $obj(fills) incr obj(fills) if {$opts(tag) ne {}} { set tags(fills,$opts(tag)) $idx } return $idx } method border { args } { my variable obj my variable borders my variable tags array set opts { list 0 leftstyle {} leftcolor {} rightstyle {} rightcolor {} topstyle {} topcolor {} bottomstyle {} bottomcolor {} diagonalstyle {} diagonalcolor {} diagonaldirection {} tag {} } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -leftstyle - -leftcolor - -rightstyle - -rightcolor - -topstyle - -topcolor - -bottomstyle - -bottomcolor - -diagonalstyle - -diagonalcolor - -diagonaldirection { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -list { set opts([string range $opt 1 end]) 1 } -tag { incr idx if {$idx < $len} { if {[string is integer -strict [set tag [lindex $args $idx]]]} { error "option '$opt': should not be an integer value" } else { set opts([string range $opt 1 end]) $tag } unset tag } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -leftstyle, -leftcolor, -rightstyle, -rightcolor, -topstyle, -topcolor, -bottomstyle, -bottomcolor, -diagonalstyle, -diagonalcolor, -diagonaldirection, -list or -tag" } } } if {$opts(list)} { return [array get borders] } set obj(blockPreset) 1 if {$opts(leftstyle) ni $::ooxml::predefBorderLineStyles || $opts(leftstyle) eq {none}} { set opts(leftstyle) {} } set opts(leftcolor) [::ooxml::Color $opts(leftcolor)] if {$opts(rightstyle) ni $::ooxml::predefBorderLineStyles || $opts(rightstyle) eq {none}} { set opts(rightstyle) {} } set opts(rightcolor) [::ooxml::Color $opts(rightcolor)] if {$opts(topstyle) ni $::ooxml::predefBorderLineStyles || $opts(topstyle) eq {none}} { set opts(topstyle) {} } set opts(topcolor) [::ooxml::Color $opts(topcolor)] if {$opts(bottomstyle) ni $::ooxml::predefBorderLineStyles || $opts(bottomstyle) eq {none}} { set opts(bottomstyle) {} } set opts(bottomcolor) [::ooxml::Color $opts(bottomcolor)] if {$opts(diagonalstyle) ni $::ooxml::predefBorderLineStyles || $opts(diagonalstyle) eq {none}} { set opts(diagonalstyle) {} } set opts(diagonalcolor) [::ooxml::Color $opts(diagonalcolor)] if {$opts(diagonaldirection) ni {up down}} { set opts(diagonaldirection) {} } switch -- $opts(diagonaldirection) { up { set opts(diagonaldirection) diagonalUp } down { set opts(diagonaldirection) diagonalDown } default { set opts(diagonaldirection) {} } } dict set tmp left style $opts(leftstyle) dict set tmp left color $opts(leftcolor) dict set tmp right style $opts(rightstyle) dict set tmp right color $opts(rightcolor) dict set tmp top style $opts(topstyle) dict set tmp top color $opts(topcolor) dict set tmp bottom style $opts(bottomstyle) dict set tmp bottom color $opts(bottomcolor) dict set tmp diagonal style $opts(diagonalstyle) dict set tmp diagonal color $opts(diagonalcolor) dict set tmp diagonal direction $opts(diagonaldirection) foreach idx [lsort -integer [array names borders]] { set found 1 foreach key [dict keys $tmp] { foreach subkey [dict keys [dict get $tmp $key]] { if {[dict get $borders($idx) $key $subkey] ne [dict get $tmp $key $subkey]} { set found 0 break } } } if {$found} { if {$opts(tag) ne {}} { set tags(borders,$opts(tag)) $idx } return $idx } } set borders($obj(borders)) $tmp set idx $obj(borders) incr obj(borders) if {$opts(tag) ne {}} { set tags(borders,$opts(tag)) $idx } return $idx } method style { args } { my variable obj my variable styles my variable tags array set opts { list 0 numfmt 0 font 0 fill 0 border 0 xf 0 horizontal {} vertical {} rotate {} wrap 0 tag {} } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -numfmt - -font - -fill - -border - -xf - -horizontal - -vertical - -rotate { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -list - -wrap { set opts([string range $opt 1 end]) 1 } -tag { incr idx if {$idx < $len} { if {[string is integer -strict [set tag [lindex $args $idx]]]} { error "option '$opt': should not be an integer value" } else { set opts([string range $opt 1 end]) $tag } unset tag } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -numfmt, -font, -fill, -border, -xf, -horizontal, -vertical, -rotate, -list, -wrap or -tag" } } } if {$opts(list)} { return [array get styles] } if {![string is integer -strict $opts(numfmt)] && [info exists tags(numFmts,$opts(numfmt))]} { set opts(numfmt) $tags(numFmts,$opts(numfmt)) } if {![string is integer -strict $opts(font)] && [info exists tags(fonts,$opts(font))]} { set opts(font) $tags(fonts,$opts(font)) } if {![string is integer -strict $opts(fill)] && [info exists tags(fills,$opts(fill))]} { set opts(fill) $tags(fills,$opts(fill)) } if {![string is integer -strict $opts(border)] && [info exists tags(borders,$opts(border))]} { set opts(border) $tags(borders,$opts(border)) } set obj(blockPreset) 1 if {![string is integer -strict $opts(numfmt)] || $opts(numfmt) < 0} { set opts(numfmt) 0 } if {![string is integer -strict $opts(font)] || $opts(font) < 0} { set opts(font) 0 } if {![string is integer -strict $opts(fill)] || $opts(fill) < 0} { set opts(fill) 0 } if {![string is integer -strict $opts(border)] || $opts(border) < 0} { set opts(border) 0 } if {![string is integer -strict $opts(xf)] || $opts(xf) < 0} { set opts(xf) 0 } if {$opts(horizontal) ni {right center left}} { set opts(horizontal) {} } if {$opts(vertical) ni {top center bottom}} { set opts(vertical) {} } if {![string is integer -strict $opts(rotate)] || $opts(rotate) < 0 || $opts(rotate) > 360} { set opts(rotate) {} } if {$opts(wrap) ne {1}} { set opts(wrap) {} } foreach idx [lsort -integer [array names styles]] { array set a $styles($idx) set found 1 foreach name [array names a] { if {$a($name) ne $opts($name)} { set found 0 break } } if {$found} { if {$opts(tag) ne {}} { set tags(styles,$opts(tag)) $idx } return $idx } } set styles($obj(styles)) {} foreach item {numfmt font fill border xf horizontal vertical rotate wrap} { lappend styles($obj(styles)) $item $opts($item) } set idx $obj(styles) incr obj(styles) if {$opts(tag) ne {}} { set tags(styles,$opts(tag)) $idx } return $idx } method worksheet { name } { my variable obj incr obj(sheets) set obj(callRow,$obj(sheets)) 0 set obj(sheet,$obj(sheets)) [string range [string map {: - \\ - / - ? - * - \[ ( \] )} $name] 0 30] set obj(gCol,$obj(sheets)) -1 set obj(row,$obj(sheets)) -1 set obj(col,$obj(sheets)) -1 set obj(dminrow,$obj(sheets)) 4294967295 set obj(dmaxrow,$obj(sheets)) 0 set obj(dmincol,$obj(sheets)) 4294967295 set obj(dmaxcol,$obj(sheets)) 0 set obj(autofilter,$obj(sheets)) {} set obj(freeze,$obj(sheets)) {} set obj(printarea,$obj(sheets)) {} set obj(merge,$obj(sheets)) {} set obj(rowHeight,$obj(sheets)) {} return $obj(sheets) } method column { sheet args } { my variable obj my variable cols my variable tags array set opts { index {} to {} width {} style 0 bestfit 0 customwidth 0 string 0 nozero 0 calcfit 0 } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -index - -to - -width - -style { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -bestfit - -customwidth - -string - -nozero - -calcfit { set opts([string range $opt 1 end]) 1 } default { error "unknown option \"$opt\", should be: -index, -to, -width, -style, -bestfit, -customwidth, -string, -nozero or -calcfit" } } } if {![string is integer -strict $opts(style)] && [info exists tags(styles,$opts(style))]} { set opts(style) $tags(styles,$opts(style)) } if {[regexp {^\d+$} $opts(index)] && $opts(index) > -1} { set obj(gCol,$sheet) $opts(index) } elseif {[regexp {^[A-Z]+$} $opts(index)]} { set obj(gCol,$sheet) [lindex [split [::ooxml::StringToRowColumn $opts(index)] ,] end] } elseif {[string trim $opts(index)] eq {}} { incr obj(gCol,$sheet) } set opts(index) $obj(gCol,$sheet) if {[regexp {^[A-Z]+$} $opts(to)]} { set opts(to) [lindex [split [::ooxml::StringToRowColumn $opts(to)] ,] end] } elseif {[string trim $opts(to)] eq {} || ![string is integer -strict $opts(to)] || $opts(to) <= $opts(index)} { set opts(to) $opts(index) } if {![string is double -strict $opts(width)] || $opts(width) < 0} { set opts(width) {} } if {![string is integer -strict $opts(style)] || $opts(style) < 0} { set opts(style) {} } if {$opts(width) ne {} || ([string is integer -strict $opts(style)] && $opts(style) >= 0) || $opts(bestfit) > 0} { if {$opts(width) eq {}} { set opts(width) $::ooxml::defaults(cols,width) } set cols($sheet,$opts(index)) [list min $opts(index) max $opts(to) width $opts(width) style $opts(style) bestfit $opts(bestfit) customwidth $opts(customwidth) string $opts(string) nozero $opts(nozero)] } set obj($sheet,cols) [llength [array names cols $sheet,*]] return $obj(gCol,$sheet) } method row { sheet args } { my variable obj array set opts { index {} height {} } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -index - -height { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -index or -height" } } } if {![string is integer -strict $opts(height)] || $opts(height) < 1 || $opts(height) > 1024} { set opts(height) {} } if {[string is integer -strict $opts(index)] && $opts(index) > -1} { set obj(callRow,$obj(sheets)) 1 set obj(col,$obj(sheets)) -1 set obj(row,$sheet) $opts(index) if {$opts(height) ne {}} { dict set obj(rowHeight,$sheet) $obj(row,$sheet) $opts(height) } return $obj(row,$sheet) } if {[string trim $opts(index)] eq {}} { set obj(callRow,$obj(sheets)) 1 set obj(col,$obj(sheets)) -1 incr obj(row,$sheet) if {$opts(height) ne {}} { dict set obj(rowHeight,$sheet) $obj(row,$sheet) $opts(height) } return $obj(row,$sheet) } return -1 } method rowheight { sheet row height } { my variable obj if {![string is integer -strict $row] || ![string is integer -strict $height] || $height < 1 || $height > 1024} { return -1 } dict set obj(rowHeight,$sheet) $row $height return $row } method cell { sheet {data {}} args } { my variable obj my variable cells my variable cols my variable tags my variable hlinks array set opts { index {} style -1 formula {} formulaidx {} formularef {} string -1 nostring -1 zero -1 nozero -1 globalstyle {} height {} hyperlink {} tooltip {} } set hyperlink 0 set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -index - -style - -formula - -formulaidx - -formularef - -height - -hyperlink - -tooltip { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -string - -nostring - -zero - -nozero - -globalstyle { set opts([string range $opt 1 end]) 1 } default { error "unknown option \"$opt\", should be: -index, -style, -formula, -formulaidx, -formularef, -height, -hyperlink, -string, -nostring, -tooltip -zero or -nozero" } } } if {![string is integer -strict $opts(style)] && [info exists tags(styles,$opts(style))]} { set opts(style) $tags(styles,$opts(style)) } if {$opts(nostring) == 1} { set opts(string) 0 } if {$opts(zero) == 1} { set opts(nozero) 0 } if {!$obj(callRow,$obj(sheets))} { set obj(callRow,$obj(sheets)) 1 incr obj(row,$sheet) } if {[regexp {^\d+$} $opts(index)] && $opts(index) > -1} { set obj(col,$sheet) $opts(index) } elseif {[regexp {^[A-Z]+$} $opts(index)]} { set obj(col,$sheet) [lindex [split [::ooxml::StringToRowColumn $opts(index)] ,] end] } elseif {[regexp {^(\d+),(\d+)$} $opts(index)]} { lassign [split $opts(index) ,] obj(row,$sheet) obj(col,$sheet) } elseif {[regexp {^[A-Z]+\d+$} $opts(index)]} { lassign [split [::ooxml::StringToRowColumn $opts(index)] ,] obj(row,$sheet) obj(col,$sheet) } elseif {[string trim $opts(index)] eq {}} { incr obj(col,$sheet) } elseif {[string is double -strict $opts(index)]} { error "option '-index $opts(index)': wrong argument, should not be double" } if {$obj(row,$sheet) < 0 || $obj(col,$sheet) < 0} { return -1 } if {[string is integer -strict $opts(style)] && $opts(style) == -1} { if {[info exists cols($sheet,$obj(col,$sheet))] && [dict get $cols($sheet,$obj(col,$sheet)) style] >= 0} { set opts(style) [dict get $cols($sheet,$obj(col,$sheet)) style] } elseif {$opts(style) == -1} { set opts(style) 0 } } if {[string is integer -strict $opts(string)] && $opts(string) == -1} { if {[info exists cols($sheet,$obj(col,$sheet))] && [dict get $cols($sheet,$obj(col,$sheet)) string] == 1} { set opts(string) 1 } elseif {$opts(string) == -1} { set opts(string) 0 } } if {[string is integer -strict $opts(nozero)] && $opts(nozero) == -1} { if {[info exists cols($sheet,$obj(col,$sheet))] && [dict get $cols($sheet,$obj(col,$sheet)) nozero] == 1} { set opts(nozero) 1 } elseif {$opts(nozero) == -1} { set opts(nozero) 0 } } set cell ${sheet},$obj(row,$sheet),$obj(col,$sheet) set cells($cell) {} if {[string is integer -strict $opts(height)] && $opts(height) > 0 && $opts(height) < 1024} { dict set obj(rowHeight,$sheet) $obj(row,$sheet) $opts(height) } set data [string trimright $data] if {$opts(nozero) && [string is double -strict $data] && $data == 0} { set data {} } if {[string trim $opts(hyperlink)] ne {}} { set hyperlink 1 set hlinks($cell) [list l [string trim $opts(hyperlink)]] if {$data eq {}} { set data [dict get $hlinks($cell) l] } if {[string trim $opts(tooltip)] ne {}} { lappend hlinks($cell) t [string trim $opts(tooltip)] } } if {$opts(string)} { set type s } elseif {[set datetime [::ooxml::ScanDateTime $data]] ne {}} { set type n set data $datetime if {[string is integer -strict $opts(style)] && $opts(style) < 1} { set opts(style) $obj(defaultdatestyle) } } elseif {[string is double -strict $data]} { set type n set data [string trim $data] if {$data in {Inf infinity NaN -NaN} || $opts(string)} { set type s } } else { set type s } if {[string is integer -strict $opts(style)] && $opts(style) > 0} { lappend cells($cell) s $opts(style) } ## FORMULA ## if {!$hyperlink && ([string trim $opts(formula)] ne {} || [string is integer -strict $opts(formulaidx)])} { lappend cells($cell) t $type lappend cells($cell) f $opts(formula) if {[string trim $opts(formulaidx)] ne {}} { lappend cells($cell) fsi $opts(formulaidx) } if {[string trim $opts(formularef)] ne {}} { set lref [split [string trim $opts(formularef)] :] if {[llength $lref] == 2} { set fref {} if {[regexp {^(\d+),(\d+)$} [lindex $lref 0]]} { append fref [::ooxml::IndexToString [lindex $lref 0]] } else { append fref [lindex $lref 0] } append fref : if {[regexp {^(\d+),(\d+)$} [lindex $lref 1]]} { append fref [::ooxml::IndexToString [lindex $lref 1]] } else { append fref [lindex $lref 1] } lappend cells($cell) fsr $fref } } } else { lappend cells($cell) v $data t $type } if {[string trim $data] eq {} && [string trim $opts(formula)] eq {} && [string trim $opts(formulaidx)] eq {} && ![string is integer -strict $opts(style)] && $opts(style) < 1} { unset -nocomplain cells($cell) } else { if {$obj(row,$sheet) < $obj(dminrow,$sheet)} { set obj(dminrow,$sheet) $obj(row,$sheet) } if {$obj(row,$sheet) > $obj(dmaxrow,$sheet)} { set obj(dmaxrow,$sheet) $obj(row,$sheet) } if {$obj(col,$sheet) < $obj(dmincol,$sheet)} { set obj(dmincol,$sheet) $obj(col,$sheet) } if {$obj(col,$sheet) > $obj(dmaxcol,$sheet)} { set obj(dmaxcol,$sheet) $obj(col,$sheet) } } return $obj(row,$sheet),$obj(col,$sheet) } method autofilter { sheet indexFrom indexTo } { my variable obj set indexFrom [::ooxml::IndexToString $indexFrom] set indexTo [::ooxml::IndexToString $indexTo] if {$indexFrom ne {} && $indexTo ne {}} { set obj(autofilter,$sheet) $indexFrom:$indexTo return 0 } return 1 } method freeze { sheet index } { my variable obj set index [::ooxml::IndexToString $index] if {$index ne {}} { set obj(freeze,$sheet) $index return 0 } return 1 } method printarea { sheet indexFrom indexTo } { my variable obj set indexFrom [::ooxml::IndexFix [::ooxml::IndexToString $indexFrom] {row col}] set indexTo [::ooxml::IndexFix [::ooxml::IndexToString $indexTo] {row col}] if {$indexFrom ne {} && $indexTo ne {}} { set obj(printarea,$sheet) $indexFrom:$indexTo return 0 } return 1 } method merge { sheet indexFrom indexTo } { my variable obj set indexFrom [::ooxml::IndexToString $indexFrom] set indexTo [::ooxml::IndexToString $indexTo] if {$indexFrom ne {} && $indexTo ne {} && "$indexFrom:$indexTo" ni $obj(merge,$sheet)} { lappend obj(merge,$sheet) $indexFrom:$indexTo return 0 } return 1 } method presetstyles { valName args } { my variable obj my variable cols my variable fonts my variable numFmts my variable styles my variable fills my variable borders if {$obj(blockPreset)} { return 1 } upvar $valName a if {[info exists a(s,@)]} { set obj(blockPreset) 1 if {[dict exists $a(s,@) numFmtId]} { set obj(numFmts) [dict get $a(s,@) numFmtId] foreach idx $a(s,numFmtsIds) { if {[info exists a(s,numFmts,$idx)]} { set numFmts($idx) $a(s,numFmts,$idx) } } } foreach item {fonts fills borders styles} { if {[dict exists $a(s,@) $item]} { upvar 0 $item ad for {set idx 0} {$idx < [dict get $a(s,@) $item]} {incr idx} { if {[info exists a(s,$item,$idx)]} { set ad($idx) $a(s,$item,$idx) } } set obj($item) [dict get $a(s,@) $item] } } } foreach sheet $a(sheets) { foreach item [array names a $sheet,col,*] { set idx [lindex [split $item ,] end] if {[info exists a($sheet,col,$idx)]} { set cols([expr {$sheet + 1}],$idx) $a($sheet,col,$idx) } } set obj([expr {$sheet + 1}],cols) [llength [array names cols]] } return 0 } method presetsheets { valName args } { upvar $valName a # [self object] -> my if {[info exists a(sheets)]} { foreach sheet $a(sheets) { if {[set currentSheet [my worksheet $a($sheet,n)]] > -1} { dict set a(sheetmap) $sheet $currentSheet foreach item [lsort -dictionary [array names a $sheet,v,*]] { lassign [split $item ,] sheet tag row col set options [list -index $row,$col] if {[info exists a($sheet,f,$row,$col)]} { ## FORMULA ## if {[dict exists $a($sheet,f,$row,$col) f]} { lappend options -formula [dict get $a($sheet,f,$row,$col) f] if {[dict exists $a($sheet,f,$row,$col) r]} { lappend options -formularef [dict get $a($sheet,f,$row,$col) r] } } if {[dict exists $a($sheet,f,$row,$col) i]} { lappend options -formulaidx [dict get $a($sheet,f,$row,$col) i] } } if {[info exists a($sheet,t,$row,$col)] && $a($sheet,t,$row,$col) eq {s}} { lappend options -string } if {[info exists a($sheet,s,$row,$col)]} { lappend options -style $a($sheet,s,$row,$col) } if {[info exists a($sheet,l,$row,$col)]} { lappend options -hyperlink [dict get $a($sheet,l,$row,$col) u] if {[dict exists $a($sheet,l,$row,$col) t] && [string trim [dict get $a($sheet,l,$row,$col) t]] ne {}} { lappend options -tooltip [dict get $a($sheet,l,$row,$col) t] } } my cell $currentSheet $a($item) {*}$options } if {[info exists a($sheet,rowheight)]} { foreach {row height} $a($sheet,rowheight) { my rowheight $currentSheet $row $height } } if {[info exists a($sheet,freeze)]} { my freeze $currentSheet $a($sheet,freeze) } if {[info exists a($sheet,filter)]} { foreach item $a($sheet,filter) { my autofilter $currentSheet {*}[split $item :] } } if {[info exists a($sheet,printarea)]} { foreach item $a($sheet,printarea) { my printarea $currentSheet {*}[split [string map {{$} {}} $item] :] } } if {[info exists a($sheet,merge)]} { foreach item $a($sheet,merge) { my merge $currentSheet {*}[split $item :] } } } if {[info exists a($sheet,pageMargins)]} { my pageMargins $currentSheet {*}$a($sheet,pageMargins) } if {[info exists a($sheet,pageSetup)]} { my pageSetup $currentSheet {*}$a($sheet,pageSetup) } } } if {[info exists a(view)]} { foreach item {activetab} { if {[dict exists $a(view) $item]} { my view -$item [dict get $a(view) $item] } } } } method view { args } { my variable view array set opts { list 0 } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -activetab - -x - -y - -height - -width { incr idx if {$idx < $len} { if {[string is integer -strict [lindex $args $idx]] && [lindex $args $idx] > -1} { set view([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': must be a positive integer" } } else { error "option '$opt': missing argument" } } -list { set opts([string range $opt 1 end]) 1 } default { error "unknown option \"$opt\", should be: -activetab, -x, -y, -height, -width or -list" } } } if {$opts(list)} { return [array get view] } } method processPageMarigns { defaults options } { array set opts $defaults set len [llength $options] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $options $idx]] { -left - -right - -top - -bottom - -header - -footer { incr idx if {$idx < $len} { set value [lindex $options $idx] if {![string is double -strict $value]} { error "option '$opt': value must be a double (in inch)" } set opts([string range $opt 1 end]) $value } else { error "option '$opt': missing argument" } } default { error "unknown option \"$opt\", should be: -left -right -top -bottom -header or -footer" } } } return [array get opts] } method pageMarginsDefault { args } { my variable pageMarginsDefault set pageMarginsDefault [my processPageMarigns $pageMarginsDefault $args] } method pageMargins { sheet args } { my variable pageMargins my variable pageMarginsDefault if {[info exists pageMargins($sheet)]} { set defaults $pageMargins($sheet) } else { set defaults $pageMarginsDefault } set pageMarginsDefault [my processPageMarigns $defaults $args] } method pageSetup { sheet args } { my variable pageSetups if {[info exists pageSetups($sheet)]} { array set opts $pageSetups($sheet) } set validOptions { -blackAndWhite -cellComments -copies -draft -errors -firstPageNumber -fitToHeight -fitToWidth -horziontalDpi -orientation -pageOrder -paperHeight -paperSize -paperWide -scale -useFirstPageNumber -verticalDpi } set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { set opt [lindex $args $idx] if {$opt in $validOptions} { incr idx if {$idx < $len} { set value [lindex $args $idx] switch -- $opt { -blackAndWhite - -draft - -useFirstPageNumber - -usePrinterDefaults { # xsd boolean value if {$value ni {true false 0 1}} { error "invalid value '$value' for the $opt option:\ must be an XSD boolean (true, false, 0 or 1)" } } -cellComments { if {$value ni {none asDisplayed atEnd}} { error "invalid value '$value' for the -cellComments option:\ must be none, asDisplayed or atEnd" } } -copies - -firstPageNumber - -fitToHeight - -fitToWidth - -horziontalDpi - -scale - -verticalDpi { # xsd unsignedInt if {![string is integer -strict $value] || $value < 0} { error "invalid value '$value' for the $opt option:\ must be an XSD unsignedInt" } } -errors { if {$value ni {displayed blank dash NA}} { error "invalid value '$value' for the -errors option:\ must be displayed blank dash or NA" } } -orientation { if {$value ni {default portrait landscape}} { error "invalid value '$value' for the -orientation option:\ must be default, portrait or landscape" } } -pageOrder { if {$value ni {downThenOver overThenDown}} { error "invalid value '$value' for the -pageOrder option:\ must be downThenOver or overThenDown" } } -paperHeight - -paperWide { if {![regexp {[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)} $value]} { error "invalid value '$value' for the $opt option:\ must match the regular expresion \[0-9\]+(\\.\[0-9\]+)?(mm|cm|in|pt|pc|pi)" } } -paperSize { if {![string is integer -strict $value] || $value < 1 || $value > 118} { error "invalid value '$value' for the -paperSize option:\ must be an integer from 1 to 118. See the user documentation\ for what paper size each number stand ( 1 = Letter, 9 = A4)" } } } set opts([string range $opt 1 end]) $value } else { error "option '$opt': missing argument" } } else { error "unknown option \"$opt\", should be: [join [lrange $validOptions 0 end-1] ,] or [lindex $validOptions end]" } } set pageSetups($sheet) [array get opts] } method debug { args } { foreach item $args { catch { my variable $item parray $item } } } method write { file } { my variable obj my variable cells my variable sharedStrings my variable fonts my variable numFmts my variable styles my variable fills my variable borders my variable cols my variable view my variable hlinks my variable pageMargins my variable pageMarginsDefault my variable pageSetups upvar #0 ::ooxml::xmlns xmlns ooxml::InitNodeCommands namespace import ::ooxml::Tag_* ::ooxml::Text # Initialize zip file set file [string trim $file] if {$file eq {}} { set file {spreadsheetml.xlsx} } if {[file extension $file] ne {.xlsx}} { append file {.xlsx} } if {[catch {open $file w} zf]} { error "cannot open file $file for writing" } fconfigure $zf -translation binary -eofchar {} set count 0 set cd {} foreach {n v} [array get cells] { if {[dict exists $v t] && [dict get $v t] eq {s} && [dict exists $v v] && [dict get $v v] ne {}} { set thisv [dict get $v v] if {[info exists lookup($thisv)]} { set pos $lookup($thisv) } else { set pos [llength $sharedStrings] lappend sharedStrings $thisv set lookup($thisv) $pos } set obj(sharedStrings) 1 dict set cells($n) v $pos } } unset -nocomplain n v array unset lookup # ------------------------------ _rels/.rels ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(PR) Relationships] # set root [$doc documentElement] dom createDocument Relationships doc $doc documentElement root $root setAttribute xmlns $xmlns(PR) set rId 0 $root appendFromScript { Tag_Relationship Id rId1 Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument Target xl/workbook.xml {} Tag_Relationship Id rId2 Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties Target docProps/app.xml {} Tag_Relationship Id rId3 Type http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties Target docProps/core.xml {} } ::ooxml::Dom2zip $zf $root "_rels/.rels" cd count $doc delete # ------------------------------ [Content_Types].xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(CT) Types] # set root [$doc documentElement] dom createDocument Types doc $doc documentElement root $root setAttribute xmlns $xmlns(CT) $root appendFromScript { Tag_Default Extension xml ContentType application/xml {} Tag_Default Extension rels ContentType application/vnd.openxmlformats-package.relationships+xml {} Tag_Override PartName /xl/workbook.xml ContentType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml {} Tag_Override PartName /xl/worksheets/sheet1.xml ContentType application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml {} for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { Tag_Override PartName /xl/theme/theme${ws}.xml ContentType application/vnd.openxmlformats-officedocument.theme+xml {} } Tag_Override PartName /xl/styles.xml ContentType application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml {} if {$obj(sharedStrings) > 0} { Tag_Override PartName /xl/sharedStrings.xml ContentType application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml {} } if {$obj(calcChain)} { Tag_Override PartName /xl/calcChain.xml ContentType application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml {} } Tag_Override PartName /docProps/core.xml ContentType application/vnd.openxmlformats-package.core-properties+xml {} Tag_Override PartName /docProps/app.xml ContentType application/vnd.openxmlformats-officedocument.extended-properties+xml {} } ::ooxml::Dom2zip $zf $root "\[Content_Types\].xml" cd count $doc delete # ------------------------------ docProps/app.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(EP) Properties] # set root [$doc documentElement] # $root setAttributeNS {} xmlns:vt $xmlns(vt) dom createDocument Properties doc $doc documentElement root $root setAttribute xmlns $xmlns(EP) $root setAttribute xmlns:vt $xmlns(vt) $root appendFromScript { Tag_Application { Text $obj(application) } Tag_DocSecurity { Text 0 } Tag_ScaleCrop { Text false } Tag_HeadingPairs { Tag_vt:vector size 2 baseType variant { Tag_vt:variant { Tag_vt:lpstr { Text [msgcat::mc Worksheets] } } Tag_vt:variant { Tag_vt:i4 { Text $obj(sheets) } } } } Tag_TitlesOfParts { Tag_vt:vector size $obj(sheets) baseType lpstr { for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { Tag_vt:lpstr { Text [msgcat::mc Sheet]$ws } } } } Tag_Company {} Tag_LinksUpToDate { Text false } Tag_SharedDoc { Text false } Tag_HyperlinksChanged { Text false } Tag_AppVersion { Text 1.0 } } ::ooxml::Dom2zip $zf $root "docProps/app.xml" cd count $doc delete # ------------------------------ docProps/core.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(cp) cp:coreProperties] # set root [$doc documentElement] # $root setAttributeNS {} xmlns:dc $xmlns(dc) # $root setAttributeNS {} xmlns:dcterms $xmlns(dcterms) # $root setAttributeNS {} xmlns:dcmitype $xmlns(dcmitype) # $root setAttributeNS {} xmlns:xsi $xmlns(xsi) dom createDocument cp:coreProperties doc $doc documentElement root $root setAttribute xmlns:cp $xmlns(cp) $root setAttribute xmlns:dc $xmlns(dc) $root setAttribute xmlns:dcterms $xmlns(dcterms) $root setAttribute xmlns:dcmitype $xmlns(dcmitype) $root setAttribute xmlns:xsi $xmlns(xsi) $root appendFromScript { Tag_dc:creator { Text $obj(creator) } Tag_cp:lastModifiedBy { Text $obj(lastModifiedBy) } Tag_dcterms:created xsi:type dcterms:W3CDTF { Text $obj(created) } Tag_dcterms:modified xsi:type dcterms:W3CDTF { Text $obj(modified) } } ::ooxml::Dom2zip $zf $root "docProps/core.xml" cd count $doc delete # ------------------------------ xl/_rels/workbook.xml.rels ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(PR) Relationships] # set root [$doc documentElement] dom createDocument Relationships doc $doc documentElement root $root setAttribute xmlns $xmlns(PR) $root appendFromScript { for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { Tag_Relationship Id rId$ws Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet Target worksheets/sheet${ws}.xml {} } set rId [incr ws -1] Tag_Relationship Id rId[incr rId] Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme Target theme/theme1.xml {} Tag_Relationship Id rId[incr rId] Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles Target styles.xml {} if {$obj(sharedStrings) > 0} { Tag_Relationship Id rId[incr rId] Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings Target sharedStrings.xml {} } if {$obj(calcChain)} { Tag_Relationship Id rId[incr rId] Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain Target calcChain.xml {} } } ::ooxml::Dom2zip $zf $root "xl/_rels/workbook.xml.rels" cd count $doc delete # ------------------------------ xl/sharedStrings.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(M) sst] # set root [$doc documentElement] if {$obj(sharedStrings) > 0} { dom createDocument sst doc $doc documentElement root $root setAttribute xmlns $xmlns(M) $root setAttribute count [llength $sharedStrings] $root setAttribute uniqueCount [llength $sharedStrings] $root appendFromScript { foreach string $sharedStrings { Tag_si { Tag_t { Text $string } } } # garbage collection set sharedStrings {} } ::ooxml::Dom2zip $zf $root "xl/sharedStrings.xml" cd count $doc delete } # ------------------------------ xl/calcChain.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(M) calcChain] # set root [$doc documentElement] if {$obj(calcChain)} { dom createDocument calcChain doc $doc documentElement root $root setAttribute xmlns $xmlns(M) $root appendFromScript { Tag_c r C1 i 3 l 1 {} Tag_c r A3 i 2 {} } ::ooxml::Dom2zip $zf $root "xl/calcChain.xml" cd count $doc delete } # ------------------------------ xl/styles.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(M) styleSheet] # set root [$doc documentElement] # $root setAttributeNS {} xmlns:mc $xmlns(mc) # $root setAttributeNS {} xmlns:x14ac $xmlns(x14ac) dom createDocument styleSheet doc $doc documentElement root $root setAttribute xmlns $xmlns(M) $root setAttribute xmlns:mc $xmlns(mc) $root setAttribute xmlns:x14ac $xmlns(x14ac) $root setAttribute mc:Ignorable x14ac $root appendFromScript { if {$obj(numFmts) > $::ooxml::defaults(numFmts,start)} { Tag_numFmts count [llength [array names numFmts]] { foreach idx [lsort -integer [array names numFmts]] { Tag_numFmt numFmtId $idx formatCode $numFmts($idx) {} } } } Tag_fonts count $obj(fonts) x14ac:knownFonts 1 { foreach idx [lsort -integer [array names fonts]] { Tag_font { if {[dict get $fonts($idx) color] ne {}} { Tag_color [lindex [dict get $fonts($idx) color] 0] [lindex [dict get $fonts($idx) color] 1] } if {[dict get $fonts($idx) bold] == 1} { Tag_b {} } if {[dict get $fonts($idx) italic] == 1} { Tag_i {} } if {[dict get $fonts($idx) underline] == 1} { Tag_u {} } Tag_sz val [dict get $fonts($idx) size] {} Tag_name val [dict get $fonts($idx) name] {} Tag_family val [dict get $fonts($idx) family] {} Tag_scheme val [dict get $fonts($idx) scheme] {} } } } if {$obj(fills) > 0} { Tag_fills count $obj(fills) { foreach idx [lsort -integer [array names fills]] { Tag_fill { Tag_patternFill patternType [dict get $fills($idx) patterntype] { foreach tag {fgColor bgColor} { set key [string tolower $tag] if {[dict get $fills($idx) $key] ne {}} { Tag_$tag [lindex [dict get $fills($idx) $key] 0] [lindex [dict get $fills($idx) $key] 1] {} } } } } } } } if {$obj(borders) > 0} { Tag_borders count $obj(borders) { foreach idx [lsort -integer [array names borders]] { set attr {} if {[dict exists $borders($idx) diagonal direction] && [dict get $borders($idx) diagonal direction] ne {}} { lappend attr [string map {up diagonalUp down diagonalDown} [dict get $borders($idx) diagonal direction]] 1 } Tag_border {*}$attr { foreach item {left right top bottom diagonal} { set attr {} if {[dict exists $borders($idx) $item style] && [dict get $borders($idx) $item style] ne {}} { lappend attr style [dict get $borders($idx) $item style] } Tag_$item {*}$attr { if {[dict exists $borders($idx) $item color] && [dict get $borders($idx) $item color] ne {}} { Tag_color [lindex [dict get $borders($idx) $item color] 0] [lindex [dict get $borders($idx) $item color] 1] {} } } } } } } } Tag_cellStyleXfs count 1 { Tag_xf numFmtId 0 fontId 0 fillId 0 borderId 0 {} } Tag_cellXfs count $obj(styles) { foreach idx [lsort -integer [array names styles]] { set attr {} lappend attr numFmtId [dict get $styles($idx) numfmt] lappend attr fontId [dict get $styles($idx) font] lappend attr fillId [dict get $styles($idx) fill] lappend attr borderId [dict get $styles($idx) border] lappend attr xfId [dict get $styles($idx) xf] if {[dict get $styles($idx) numfmt] > 0} { lappend attr applyNumberFormat 1 } if {[dict get $styles($idx) font] > 0} { lappend attr applyFont 1 } if {[dict get $styles($idx) fill] > 0} { lappend attr applyFill 1 } if {[dict get $styles($idx) border] > 0} { lappend attr applyBorder 1 } # lappend attr applyProtection 1 quotePrefix 1 if {[dict get $styles($idx) horizontal] ne {} || [dict get $styles($idx) vertical] ne {} || [dict get $styles($idx) rotate] ne {} || [dict get $styles($idx) wrap] ne {}} { lappend attr applyAlignment 1 set alignment 1 } else { set alignment 0 } Tag_xf {*}$attr { set attr {} if {$alignment} { if {[dict get $styles($idx) horizontal] ne {}} { lappend attr horizontal [dict get $styles($idx) horizontal] } if {[dict get $styles($idx) vertical] ne {}} { lappend attr vertical [dict get $styles($idx) vertical] } if {[dict get $styles($idx) rotate] ne {}} { lappend attr textRotation [dict get $styles($idx) rotate] } if {[dict get $styles($idx) wrap] ne {}} { lappend attr wrapText [dict get $styles($idx) wrap] } Tag_alignment {*}$attr {} } } } } Tag_cellStyles count 1 { Tag_cellStyle name Standard xfId 0 builtinId 0 {} } Tag_dxfs count 0 {} Tag_tableStyles count 0 {} } ::ooxml::Dom2zip $zf $root "xl/styles.xml" cd count $doc delete # ------------------------------ xl/theme/theme1.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. set doc [dom createDocumentNS $xmlns(a) a:theme] set root [$doc documentElement] dom createDocument a:theme doc $doc documentElement root $root setAttribute xmlns:a $xmlns(a) $root setAttribute name Office-Design $root appendFromScript { Tag_a:themeElements { Tag_a:clrScheme name Office { Tag_a:dk1 { Tag_a:sysClr val windowText lastClr 000000 {} } Tag_a:lt1 { Tag_a:sysClr val window lastClr FFFFFF {} } Tag_a:dk2 { Tag_a:srgbClr val 1F497D {} } Tag_a:lt2 { Tag_a:srgbClr val EEECE1 {} } Tag_a:accent1 { Tag_a:srgbClr val 4F81BD {} } Tag_a:accent2 { Tag_a:srgbClr val C0504D {} } Tag_a:accent3 { Tag_a:srgbClr val 9BBB59 {} } Tag_a:accent4 { Tag_a:srgbClr val 8064A2 {} } Tag_a:accent5 { Tag_a:srgbClr val 4BACC6 {} } Tag_a:accent6 { Tag_a:srgbClr val F79646 {} } Tag_a:hlink { Tag_a:srgbClr val 0000FF {} } Tag_a:folHlink { Tag_a:srgbClr val 800080 {} } } Tag_a:fontScheme name Office { Tag_a:majorFont { Tag_a:latin typeface Cambria {} Tag_a:ea typeface {} {} Tag_a:cs typeface {} {} Tag_a:font script Jpan typeface \uFF2D\uFF33\u0020\uFF30\u30B4\u30B7\u30C3\u30AF {} Tag_a:font script Hang typeface \uB9D1\uC740\u0020\uACE0\uB515 {} Tag_a:font script Hans typeface \u5B8B\u4F53 {} Tag_a:font script Hant typeface \u65B0\u7D30\u660E\u9AD4 {} Tag_a:font script Arab typeface {Times New Roman} {} Tag_a:font script Hebr typeface {Times New Roman} {} Tag_a:font script Thai typeface Tahoma {} Tag_a:font script Ethi typeface Nyala {} Tag_a:font script Beng typeface Vrinda {} Tag_a:font script Gujr typeface Shruti {} Tag_a:font script Khmr typeface MoolBoran {} Tag_a:font script Knda typeface Tunga {} Tag_a:font script Guru typeface Raavi {} Tag_a:font script Cans typeface Euphemia {} Tag_a:font script Cher typeface {Plantagenet Cherokee} {} Tag_a:font script Yiii typeface {Microsoft Yi Baiti} {} Tag_a:font script Tibt typeface {Microsoft Himalaya} {} Tag_a:font script Thaa typeface {MV Boli} {} Tag_a:font script Deva typeface Mangal {} Tag_a:font script Telu typeface Gautami {} Tag_a:font script Taml typeface Latha {} Tag_a:font script Syrc typeface {Estrangelo Edessa} {} Tag_a:font script Orya typeface Kalinga {} Tag_a:font script Mlym typeface Kartika {} Tag_a:font script Laoo typeface DokChampa {} Tag_a:font script Sinh typeface {Iskoola Pota} {} Tag_a:font script Mong typeface {Mongolian Baiti} {} Tag_a:font script Viet typeface {Times New Roman} {} Tag_a:font script Uigh typeface {Microsoft Uighur} {} Tag_a:font script Geor typeface Sylfaen {} } Tag_a:minorFont { Tag_a:latin typeface Calibri {} Tag_a:ea typeface {} {} Tag_a:cs typeface {} {} Tag_a:font script Jpan typeface \uFF2D\uFF33\u0020\uFF30\u30B4\u30B7\u30C3\u30AF {} Tag_a:font script Hang typeface \uB9D1\uC740\u0020\uACE0\uB515 {} Tag_a:font script Hans typeface \u5B8B\u4F53 {} Tag_a:font script Hant typeface \u65B0\u7D30\u660E\u9AD4 {} Tag_a:font script Arab typeface Arial {} Tag_a:font script Hebr typeface Arial {} Tag_a:font script Thai typeface Tahoma {} Tag_a:font script Ethi typeface Nyala {} Tag_a:font script Beng typeface Vrinda {} Tag_a:font script Gujr typeface Shruti {} Tag_a:font script Khmr typeface DaunPenh {} Tag_a:font script Knda typeface Tunga {} Tag_a:font script Guru typeface Raavi {} Tag_a:font script Cans typeface Euphemia {} Tag_a:font script Cher typeface {Plantagenet Cherokee} {} Tag_a:font script Yiii typeface {Microsoft Yi Baiti} {} Tag_a:font script Tibt typeface {Microsoft Himalaya} {} Tag_a:font script Thaa typeface {MV Boli} {} Tag_a:font script Deva typeface Mangal {} Tag_a:font script Telu typeface Gautami {} Tag_a:font script Taml typeface Latha {} Tag_a:font script Syrc typeface {Estrangelo Edessa} {} Tag_a:font script Orya typeface Kalinga {} Tag_a:font script Mlym typeface Kartika {} Tag_a:font script Laoo typeface DokChampa {} Tag_a:font script Sinh typeface {Iskoola Pota} {} Tag_a:font script Mong typeface {Mongolian Baiti} {} Tag_a:font script Viet typeface Arial {} Tag_a:font script Uigh typeface {Microsoft Uighur} {} Tag_a:font script Geor typeface Sylfaen {} } } Tag_a:fmtScheme name Office { Tag_a:fillStyleLst { Tag_a:solidFill { Tag_a:schemeClr val phClr {} } Tag_a:gradFill rotWithShape 1 { Tag_a:gsLst { Tag_a:gs pos 0 { Tag_a:schemeClr val phClr { Tag_a:tint val 50000 {} Tag_a:satMod val 300000 {} } } Tag_a:gs pos 35000 { Tag_a:schemeClr val phClr { Tag_a:tint val 37000 {} Tag_a:satMod val 300000 {} } } Tag_a:gs pos 100000 { Tag_a:schemeClr val phClr { Tag_a:tint val 15000 {} Tag_a:satMod val 350000 {} } } } Tag_a:lin ang 16200000 scaled 1 {} } Tag_a:gradFill rotWithShape 1 { Tag_a:gsLst { Tag_a:gs pos 0 { Tag_a:schemeClr val phClr { Tag_a:tint val 100000 {} Tag_a:shade val 100000 {} Tag_a:satMod val 130000 {} } } Tag_a:gs pos 100000 { Tag_a:schemeClr val phClr { Tag_a:tint val 50000 {} Tag_a:shade val 100000 {} Tag_a:satMod val 350000 {} } } } Tag_a:lin ang 16200000 scaled 0 {} } } Tag_a:lnStyleLst { Tag_a:ln w 9525 cap flat cmpd sng algn ctr { Tag_a:solidFill { Tag_a:schemeClr val phClr { Tag_a:shade val 95000 { } Tag_a:satMod val 105000 { } } } Tag_a:prstDash val solid {} } Tag_a:ln w 25400 cap flat cmpd sng algn ctr { Tag_a:solidFill { Tag_a:schemeClr val phClr {} } Tag_a:prstDash val solid {} } Tag_a:ln w 38100 cap flat cmpd sng algn ctr { Tag_a:solidFill { Tag_a:schemeClr val phClr {} } Tag_a:prstDash val solid {} } } Tag_a:effectStyleLst { Tag_a:effectStyle { Tag_a:effectLst { Tag_a:outerShdw blurRad 40000 dist 20000 dir 5400000 rotWithShape 0 { Tag_a:srgbClr val 000000 { Tag_a:alpha val 38000 {} } } } } Tag_a:effectStyle { Tag_a:effectLst { Tag_a:outerShdw blurRad 40000 dist 23000 dir 5400000 rotWithShape 0 { Tag_a:srgbClr val 000000 { Tag_a:alpha val 35000 {} } } } } Tag_a:effectStyle { Tag_a:effectLst { Tag_a:outerShdw blurRad 40000 dist 23000 dir 5400000 rotWithShape 0 { Tag_a:srgbClr val 000000 { Tag_a:alpha val 35000 {} } } } Tag_a:scene3d { Tag_a:camera prst orthographicFront { Tag_a:rot lat 0 lon 0 rev 0 { } } Tag_a:lightRig rig threePt dir t { Tag_a:rot lat 0 lon 0 rev 1200000 { } } } Tag_a:sp3d { Tag_a:bevelT w 63500 h 25400 {} } } } Tag_a:bgFillStyleLst { Tag_a:solidFill { Tag_a:schemeClr val phClr {} } Tag_a:gradFill rotWithShape 1 { Tag_a:gsLst { Tag_a:gs pos 0 { Tag_a:schemeClr val phClr { Tag_a:tint val 40000 {} Tag_a:satMod val 350000 {} } } Tag_a:gs pos 40000 { Tag_a:schemeClr val phClr { Tag_a:tint val 45000 {} Tag_a:shade val 99000 {} Tag_a:satMod val 350000 {} } } Tag_a:gs pos 100000 { Tag_a:schemeClr val phClr { Tag_a:shade val 20000 {} Tag_a:satMod val 255000 {} } } } Tag_a:path path circle { Tag_a:fillToRect l 50000 t -80000 r 50000 b 180000 {} } } Tag_a:gradFill rotWithShape 1 { Tag_a:gsLst { Tag_a:gs pos 0 { Tag_a:schemeClr val phClr { Tag_a:tint val 80000 {} Tag_a:satMod val 300000 {} } } Tag_a:gs pos 100000 { Tag_a:schemeClr val phClr { Tag_a:shade val 30000 {} Tag_a:satMod val 200000 {} } } } Tag_a:path path circle { Tag_a:fillToRect l 50000 t 50000 r 50000 b 50000 {} } } } } } Tag_a:objectDefaults { Tag_a:spDef { Tag_a:spPr {} Tag_a:bodyPr {} Tag_a:lstStyle {} Tag_a:style { Tag_a:lnRef idx 1 { Tag_a:schemeClr val accent1 {} } Tag_a:fillRef idx 3 { Tag_a:schemeClr val accent1 {} } Tag_a:effectRef idx 2 { Tag_a:schemeClr val accent1 {} } Tag_a:fontRef idx minor { Tag_a:schemeClr val lt1 {} } } } Tag_a:lnDef { Tag_a:spPr {} Tag_a:bodyPr {} Tag_a:lstStyle {} Tag_a:style { Tag_a:lnRef idx 2 { Tag_a:schemeClr val accent1 {} } Tag_a:fillRef idx 0 { Tag_a:schemeClr val accent1 {} } Tag_a:effectRef idx 1 { Tag_a:schemeClr val accent1 {} } Tag_a:fontRef idx minor { Tag_a:schemeClr val tx1 {} } } } } Tag_a:extraClrSchemeLst {} } ::ooxml::Dom2zip $zf $root "xl/theme/theme1.xml" cd count $doc delete # ------------------------------ xl/workbook.xml ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(M) workbook] # set root [$doc documentElement] # $root setAttributeNS {} xmlns:r $xmlns(r) dom createDocument workbook doc $doc documentElement root $root setAttribute xmlns $xmlns(M) $root setAttribute xmlns:r $xmlns(r) $root appendFromScript { Tag_fileVersion appName xl lastEdited 5 lowestEdited 5 rupBuild 5000 {} Tag_workbookPr showInkAnnotation 0 autoCompressPictures 0 {} Tag_bookViews { set attr {} foreach {n v} [array get view] { switch -- $n { activetab { if {$v ni $obj(sheets)} { set v 0 } lappend attr activeTab $v } x { lappend attr xWindow $v } y { lappend attr yWindow $v } height { lappend attr windowHeight $v } width { lappend attr windowWidth $v } default { } } } Tag_workbookView {*}$attr {} } Tag_sheets { for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { Tag_sheet name $obj(sheet,$ws) sheetId $ws r:id rId$ws {} } } Tag_definedNames { for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { if {$obj(printarea,$ws) ne {}} { Tag_definedName name _xlnm.Print_Area localSheetId [expr {$ws - 1}] { Text [string cat ' $obj(sheet,$ws) '! $obj(printarea,$ws)] } } } # Tag_definedName name _xlnm._FilterDatabase localSheetId 0 hidden 1 { Text Blatt1!$A$1:$C$1 } } Tag_calcPr calcId 140000 concurrentCalc 0 {} # fullCalcOnLoad 1 } ::ooxml::Dom2zip $zf $root "xl/workbook.xml" cd count $doc delete # ------------------------------ xl/worksheets/_rels/sheet1.xml.rels SHEET ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(PR) Relationships] # set root [$doc documentElement] for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { if {[array names hlinks $ws,*,*] ne {}} { dom createDocument Relationships doc $doc documentElement root $root setAttribute xmlns $xmlns(PR) set hrefId 0 array unset rows foreach idx [lsort -dictionary [array names hlinks $ws,*,*]] { lassign [split $idx ,] sheet row col lappend rows($row) $col } foreach row [lsort -integer [array names rows]] { $root appendFromScript { foreach col $rows($row) { set idx "$ws,$row,$col" Tag_Relationship Id rId[incr hrefId] Type http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink Target [dict get $hlinks($idx) l] TargetMode External {} } } } ::ooxml::Dom2zip $zf $root "xl/worksheets/_rels/sheet$ws.xml.rels" cd count $doc delete } } # ------------------------------ xl/worksheets/sheet1.xml SHEET ------------------------------ # In the commented out part, serialization is done with namespaces set correctly, but this takes a few milliseconds more time. # Since we may process large amounts of data and do not use the same tag names in different namespaces and do not search in # the DOM during serialization, we only set the namespaces as attributes, which leads to the same result in the serialized XML. # set doc [dom createDocumentNS $xmlns(M) worksheet] # set root [$doc documentElement] # $root setAttributeNS {} xmlns:r $xmlns(r) # $root setAttributeNS {} xmlns:mc $xmlns(mc) # $root setAttributeNS {} xmlns:x14ac $xmlns(x14ac) # $doc selectNodesNamespaces [list M $xmlns(M) r $xmlns(r) mc $xmlns(mc) ac $xmlns(x14ac)] for {set ws 1} {$ws <= $obj(sheets)} {incr ws} { dom createDocument worksheet doc $doc documentElement root $root setAttribute xmlns $xmlns(M) $root setAttribute xmlns:r $xmlns(r) $root setAttribute xmlns:mc $xmlns(mc) $root setAttribute xmlns:x14ac $xmlns(x14ac) $root setAttribute mc:Ignorable x14ac $root appendFromScript { Tag_dimension ref [::ooxml::RowColumnToString $obj(dminrow,$ws),$obj(dmincol,$ws)]:[::ooxml::RowColumnToString $obj(dmaxrow,$ws),$obj(dmaxcol,$ws)] {} Tag_sheetViews { Tag_sheetView workbookViewId 0 { if {$obj(freeze,$ws) ne {}} { lassign [split [::ooxml::StringToRowColumn $obj(freeze,$ws)] ,] row col Tag_pane xSplit $col ySplit $row topLeftCell $obj(freeze,$ws) state frozen {} } } } Tag_sheetFormatPr baseColWidth 10 defaultRowHeight 16 x14ac:dyDescent 0.2 {} if {[info exists obj($ws,cols)] && $obj($ws,cols) > 0} { Tag_cols {} } Tag_sheetData { array unset rows foreach idx [lsort -dictionary [array names cells $ws,*,*]] { lassign [split $idx ,] sheet row col lappend rows($row) $col } foreach row [lsort -integer [array names rows]] { set attr {} if {[dict exists $obj(rowHeight,$ws) $row]} { lappend attr ht [dict get $obj(rowHeight,$ws) $row] customHeight 1 } # lappend attr spans [expr {$minCol + 1}]:[expr {$maxCol + 1}] Tag_row r [expr {$row + 1}] {*}$attr { foreach col $rows($row) { set idx "$ws,$row,$col" if {([dict exists $cells($idx) v] && [string trim [dict get $cells($idx) v]] ne {}) || ([dict exists $cells($idx) f] && [string trim [dict get $cells($idx) f]] ne {}) || [dict exists $cells($idx) fsi]} { set attr {} if {[dict exists $cells($idx) s] && [dict get $cells($idx) s] > 0} { lappend attr s [dict get $cells($idx) s] } if {[dict exists $cells($idx) t] && [dict get $cells($idx) t] ne {n}} { lappend attr t [dict get $cells($idx) t] } Tag_c r [::ooxml::RowColumnToString $row,$col] {*}$attr { if {[dict exists $cells($idx) v] && [dict get $cells($idx) v] ne {}} { Tag_v { Text [dict get $cells($idx) v] } } if {([dict exists $cells($idx) f] && [dict get $cells($idx) f] ne {}) || [dict exists $cells($idx) fsi]} { ## FORMULA ## set attr {} if {[dict exists $cells($idx) fsi] && [dict get $cells($idx) fsi] > -1} { lappend attr t shared } if {[dict exists $cells($idx) fsr] && [dict get $cells($idx) fsr] ne {}} { lappend attr ref [dict get $cells($idx) fsr] } if {[dict exists $cells($idx) fsi] && [dict get $cells($idx) fsi] > -1} { lappend attr si [dict get $cells($idx) fsi] } Tag_f {*}$attr { if {[dict exists $cells($idx) f] && [dict get $cells($idx) f] ne {}} { Text [dict get $cells($idx) f] } } } } } elseif {[dict exists $cells($idx) s] && [string is integer -strict [dict get $cells($idx) s]] && [dict get $cells($idx) s] > 0} { Tag_c r [::ooxml::RowColumnToString $row,$col] s [dict get $cells($idx) s] {} } # garbage collection unset -nocomplain cells($idx) } } } } if {$obj(autofilter,$ws) ne {}} { Tag_autoFilter ref $obj(autofilter,$ws) {} } if {[info exists obj(merge,$ws)] && $obj(merge,$ws) ne {}} { Tag_mergeCells count [llength $obj(merge,$ws)] { foreach item $obj(merge,$ws) { Tag_mergeCell ref $item {} } } } # hyperlinks if {[array names hlinks $ws,*,*] ne {}} { Tag_hyperlinks { set hrefId 0 array unset rows foreach idx [lsort -dictionary [array names hlinks $ws,*,*]] { lassign [split $idx ,] sheet row col lappend rows($row) $col } foreach row [lsort -integer [array names rows]] { foreach col $rows($row) { set idx "$ws,$row,$col" if {[dict exists $hlinks($idx) t]} { set tooltip [list tooltip [dict get $hlinks($idx) t]] } else { set tooltip {} } Tag_hyperlink ref [::ooxml::RowColumnToString $row,$col] r:id rId[incr hrefId] {*}$tooltip {} } } } } if {[info exists pageMargins($ws)]} { Tag_pageMargins {*}$pageMargins($ws) } else { Tag_pageMargins {*}$pageMarginsDefault } # Page Setup if {[info exists pageSetups($ws)]} { Tag_pageSetup {*}$pageSetups($ws) } } if {[set colsNode [$root selectNodes /worksheet/cols]] ne {}} { if {[info exists obj($ws,cols)] && $obj($ws,cols) > 0} { $colsNode appendFromScript { foreach idx [lsort -dictionary [array names cols $ws,*]] { set attr {} lappend attr min [expr {[dict get $cols($idx) min] + 1}] max [expr {[dict get $cols($idx) max] + 1}] if {[dict get $cols($idx) width] ne {}} { lappend attr width [dict get $cols($idx) width] if {[dict get $cols($idx) width] != $::ooxml::defaults(cols,width)} { dict set $cols($idx) customwidth 1 } } if {[dict get $cols($idx) style] ne {} && [dict get $cols($idx) style] > 0} { lappend attr style [dict get $cols($idx) style] } if {[dict get $cols($idx) bestfit] == 1} { lappend attr bestFit [dict get $cols($idx) bestfit] } if {[dict get $cols($idx) customwidth] == 1} { lappend attr customWidth [dict get $cols($idx) customwidth] } Tag_col {*}$attr {} } } } } ::ooxml::Dom2zip $zf $root "xl/worksheets/sheet$ws.xml" cd count $doc delete } # Finalize zip. set cdoffset [tell $zf] set endrec [binary format a4ssssiis PK\05\06 0 0 $count $count [string length $cd] $cdoffset 0] puts -nonewline $zf $cd puts -nonewline $zf $endrec close $zf return 0 } } # # ooxml::tablelist_to_xl # proc ::ooxml::tablelist_to_xl { lb args } { variable defaults if {![winfo exists $lb]} { tk_messageBox -message [msgcat::mc {Tablelist does not exists!}] return } array set opts " callback ::ooxml::tablelist_to_xl_callback path [list $defaults(path)] file tablelist.xlsx creator unknown name Tablelist1 rootonly 0 addtimestamp 0 globalstyle 0 " set len [llength $args] set idx 0 for {set idx 0} {$idx < $len} {incr idx} { switch -- [set opt [lindex $args $idx]] { -callback - -path - -file - -creator - -name { incr idx if {$idx < $len} { set opts([string range $opt 1 end]) [lindex $args $idx] } else { error "option '$opt': missing argument" } } -rootonly - -addtimestamp - -globalstyle { set opts([string range $opt 1 end]) 1 } default { error "unknown option \"$opt\", should be: -callback, -path, -file, -creator, -name, -rootonly, -addtimestamp or -globalstyle" } } } if {$opts(callback) eq {} || ([info commands $opts(callback)] eq {} && [info commands ::$opts(callback)] eq {})} { set opts(callback) ::ooxml::tablelist_to_xl_callback } if {[string trim $opts(path)] eq {}} { set opts(path) {.} } if {[string trim $opts(file)] eq {}} { set opts(file) {tablelist.xlsx} } if {[file extension $opts(file)] eq {.xlsx}} { set opts(file) [file tail [file rootname $opts(file)]] } if {$opts(addtimestamp)} { append opts(file) _[clock format [clock seconds] -format %Y%m%dT%H%M%S] } append opts(file) {.xlsx} if {$opts(globalstyle)} { set globalstyle {-globalstyle} } else { set globalstyle {} } set file [tk_getSaveFile -confirmoverwrite 1 -filetypes {{{Excel Office Open XML} {.xlsx}}} -initialdir $opts(path) -initialfile $opts(file) -parent . -title "Excel Office Open XML"] if {$file eq {}} { tk_messageBox -message [msgcat::mc {No file selected!}] return } set spreadsheet [::ooxml::xl_write new -creator $opts(creator)] if {[set sheet [$spreadsheet worksheet $opts(name)]] > -1} { set columncount [expr {[$lb columncount] - 1}] if {$columncount > 0} { $spreadsheet autofilter $sheet 0,0 0,$columncount } set titlecolumns [$lb cget -titlecolumns] if {$titlecolumns > 0} { $spreadsheet freeze $sheet 1,$titlecolumns } set col -1 set title SETUP set width 0 set align {} set sortmode {} set hide 1 $opts(callback) $spreadsheet $sheet $columncount $col $title $width $align $sortmode $hide $spreadsheet row $sheet for {set col 0} {$col <= $columncount} {incr col} { set title [$lb columncget $col -title] set width [$lb columncget $col -width] set align [$lb columncget $col -align] set sortmode [$lb columncget $col -sortmode] set hide [$lb columncget $col -hide] $opts(callback) $spreadsheet $sheet $columncount $col $title $width $align $sortmode $hide $spreadsheet cell $sheet $title } if {$opts(rootonly)} { foreach row [$lb get [$lb childkeys root]] { $spreadsheet row $sheet set idx 0 foreach col $row { if {[string trim $col] ne {}} { $spreadsheet cell $sheet $col -index $idx {*}$globalstyle } incr idx } } } else { foreach row [$lb get 0 end] { $spreadsheet row $sheet set idx 0 foreach col $row { if {[string trim $col] ne {}} { $spreadsheet cell $sheet $col -index $idx {*}$globalstyle } incr idx } } } $spreadsheet write $file } } proc ::ooxml::tablelist_to_xl_callback { spreadsheet sheet maxcol column title width align sortmode hide } { set left 0 set center [$spreadsheet style -horizontal center] set right [$spreadsheet style -horizontal right] set date [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] set decimal [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal -red]] set text [$spreadsheet style -numfmt [$spreadsheet numberformat -string]] if {$column == -1} { $spreadsheet defaultdatestyle $date } else { switch -- $align { center { $spreadsheet column $sheet -index $column -style $center } right { $spreadsheet column $sheet -index $column -style $right } default { $spreadsheet column $sheet -index $column -style $left } } } } proc ::ooxml::build-info { {cmd {}} } { variable pkgPath # TIP 599: Extended build information # https://core.tcl-lang.org/tips/doc/trunk/tip/599.md set file [file join $pkgPath manifest.txt] if {[file readable $file] && ![catch {open $file r} fd]} { set manifest [read $fd] close $fd set uuid [dict get $manifest MANIFEST_UUID] set checkin [string map {[ {} ] {}} [dict get $manifest MANIFEST_VERSION]] set build [dict get $manifest FOSSIL_BUILD_HASH] set datetime [string map {{ } T} [dict get $manifest MANIFEST_DATE]]Z set version [dict get $manifest RELEASE_VERSION] set compiler {tcl.noarch} switch -- $cmd { commit { return $uuid } version - patchlevel { return $version } compiler { return $compiler } path { return $pkgPath } default { return ${version}+${checkin}.${datetime}.${compiler} } } } else { return {?.manifest_not_found} } } package provide ooxml 1.10 set ::ooxml::pkgPath [file dirname [info script]] # Local Variables: # tcl-indent-level: 2 # End: ooxml/configure.ac000664 000765 000024 00000007022 14763501125 014605 0ustar00alexstaff000000 000000 #!/bin/bash -norc dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # Copyright (C) 2019 Alexander Schoepe, Bochum, DE #----------------------------------------------------------------------- # This initializes the environment with PACKAGE_NAME and PACKAGE_VERSION # set as provided. These will also be added as -D defs in your Makefile # so you can encode the package version directly into the source files. # This will also define a special symbol for Windows (BUILD_ # so that we create the export library with the dll. #----------------------------------------------------------------------- AC_INIT([ooxml],[1.10]) #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows" # as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE. #-------------------------------------------------------------------- TEA_INIT() AC_CONFIG_AUX_DIR(tclconfig) #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- TEA_PATH_TCLCONFIG TEA_LOAD_TCLCONFIG #----------------------------------------------------------------------- # Handle the --prefix=... option by defaulting to what Tcl gave. # Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER. #----------------------------------------------------------------------- TEA_PREFIX #----------------------------------------------------------------------- # Specify the C source files to compile in TEA_ADD_SOURCES, # public headers that need to be installed in TEA_ADD_HEADERS, # stub library C source files to compile in TEA_ADD_STUB_SOURCES, # and runtime Tcl library files in TEA_ADD_TCL_SOURCES. # This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS # and PKG_TCL_SOURCES. #----------------------------------------------------------------------- TEA_ADD_TCL_SOURCES([ooxml.tcl]) #-------------------------------------------------------------------- # You can add more files to clean if your extension creates any extra # files by extending CLEANFILES. # Add pkgIndex.tcl if it is generated in the Makefile instead of ./configure # and change Makefile.in to move it from CONFIG_CLEAN_FILES to BINARIES var. # # A few miscellaneous platform-specific items: # TEA_ADD_* any platform specific compiler/build info here. #-------------------------------------------------------------------- #CLEANFILES="$CLEANFILES" #-------------------------------------------------------------------- # Determine the name of the tclsh and/or wish executables in the # Tcl and Tk build directories or the location they were installed # into. These paths are used to support running test cases only, # the Makefile should not be making use of these paths to generate # a pkgIndex.tcl file or anything else at extension build time. #-------------------------------------------------------------------- TEA_PROG_TCLSH #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. # You may alternatively have a special pkgIndex.tcl.in or other files # which require substituting th AC variables in. Include these here. #-------------------------------------------------------------------- AC_CONFIG_FILES([Makefile pkgIndex.tcl]) AC_OUTPUT ooxml/tools/000755 000765 000024 00000000000 14763502276 013464 5ustar00alexstaff000000 000000 ooxml/PaxHeader/.DS_Store000644 000765 000024 00000000320 14763404041 015742 xustar00alexstaff000000 000000 29 mtime=1741555745.95496711 24 SCHILY.fflags=hidden 85 LIBARCHIVE.xattr.com.apple.FinderInfo=ICAgICAgICBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 70 SCHILY.xattr.com.apple.FinderInfo= @ ooxml/.DS_Store000644 000765 000024 00000024004 14763404041 013776 0ustar00alexstaff000000 000000 Bud1   (sil-se  @ @ @ @(.fossil-settingslg1Scomp6.fossil-settingsmoDDblob.flA.fossil-settingsmodDblob.flA.fossil-settingsph1Scomp .vscodelg1Scomp.vscodemoDDblob2>A.vscodemodDblob2>A.vscodeph1Scompdocbwspblobbplist00  ]ShowStatusBar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowSidebar  _{{1416, 677}, {1154, 703}} #/;R_klmno doclg1ScompAؤdocmoDDblob^ѼAdocmodDblob^ѼAdocph1ScompB docvSrnlongexamplesbwspblobbplist00  ]ShowStatusBar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowSidebar  _{{1273, 911}, {920, 436}} #/;R_klmno exampleslg1Scomp"exampleslsvCblob%bplist00 WWX Z_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesZaxTextSizeXtextSizeZsortColumn_useRelativeDatesXiconSize #',16;@EIMQ ZidentifierUwidthYascendingWvisibleTname# WvisibleUwidthYascending#Xubiquity " \dateModified &[dateCreated )+ aTsize . 0 s Tkind3 5d Ulabel8 :K Wversion= ?, XcommentsBD^dateLastOpenedBHZshareOwnerBL_shareLastEditor PYdateAddedRS_invitationStatus#@*Tname #@00BJ^ir}'(*+8ABCOXY[\ajkmns|}   24567@EF[Oexampleslsvpblobbplist00 GGH J_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesZaxTextSizeXtextSizeZsortColumn_useRelativeDatesXiconSize $).37 @ # BC#@*Tname #@00BJ^ir} !+3589:CEGHIRTVWXacefgprtuvKexamplesmoDDblob_^AexamplesmodDblob_^Aexamplesph1ScompexamplesvSrnlong tclconfiglg1Scomp; tclconfigmoDDblobv& A tclconfigmodDblobv& A tclconfigph1Scomptestslg1Scomp.PtestsmoDDblob&kAtestsmodDblobJ2Atestsph1Scomptoolsdsclbooltoolslg1ScompftoolsmoDDblobcǜ̼AtoolsmodDblobcǜ̼Atoolsph1Scompuvdsclbooluvlg1Scompg|uvmoDDblobmAv}AuvmodDblobmAv}Auvph1Scomp E DSDB `(0@ @ @uity " \dateModified &[dateCreated )+ aTsize . 0 s Tkind3 5d Ulabel8 :K Wversion= ?, XcommentsBD^dateLastOpenedBHZshareOwnerBL_shareLastEditor PYdateAddedRS_invitationStatus#@*Tname #@00BJ^ir}'(*+8ABCOXY[\ajkmns|}   24567@EF[Oexampleslsvpblobbplist00 GGH J_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesZaxTextSizeXtextSizeZsortColumn_useRelativeDatesXiconSize $).37/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 e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # 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'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 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 \${ZSH_VERSION+y} && (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 e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; 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 case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || 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" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi 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'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi ;; esac 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=`printf "%s\n" "$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 || printf "%s\n" 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 case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac 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 case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac 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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$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 || printf "%s\n" 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 ' t clear :clear 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" || { printf "%s\n" "$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 } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated 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='ooxml' PACKAGE_TARNAME='ooxml' PACKAGE_VERSION='1.10' PACKAGE_STRING='ooxml 1.10' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS TCLSH_PROG TCL_SHLIB_LD_LIBS TCL_LD_FLAGS TCL_EXTRA_CFLAGS TCL_DEFS TCL_LIBS CLEANFILES OBJEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC TCL_STUB_LIB_SPEC TCL_STUB_LIB_FLAG TCL_STUB_LIB_FILE TCL_LIB_SPEC TCL_LIB_FLAG TCL_LIB_FILE TCL_SRC_DIR TCL_BIN_DIR TCL_PATCH_LEVEL TCL_VERSION INSTALL_LIBRARY INSTALL_SCRIPT INSTALL_PROGRAM INSTALL_DATA INSTALL_DATA_DIR INSTALL PKG_CFLAGS PKG_LIBS PKG_INCLUDES PKG_HEADERS PKG_TCL_SOURCES PKG_STUB_OBJECTS PKG_STUB_SOURCES PKG_LIB_FILE9 PKG_LIB_FILE8 PKG_LIB_FILE EXEEXT CYGPATH 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 runstatedir 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 with_tcl with_tcl8 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # 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' runstatedir='${localstatedir}/run' 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 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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=`printf "%s\n" "$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=`printf "%s\n" "$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. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$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" ;; *) printf "%s\n" "$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 runstatedir 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 || printf "%s\n" 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 ooxml 1.10 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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --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/ooxml] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ooxml 1.10:";; esac cat <<\_ACEOF Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tcl directory containing tcl configuration (tclConfig.sh) --with-tcl8 Compile for Tcl8 in Tcl9 environment 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 Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. 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 printf "%s\n" "$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 ooxml configure 1.10 generated by GNU Autoconf 2.72 Copyright (C) 2023 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 conftest.beam 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\"" printf "%s\n" "$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 printf "%s\n" "$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 case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac 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 ooxml $as_me 1.10, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "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=`printf "%s\n" "$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=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$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 printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$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 printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (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; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* 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 do not provoke an error unfortunately, instead are silently treated as an "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 is necessary to write \x00 == 0 to get something that is 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 **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # 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,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$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=`printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-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 #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows" # as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE. #-------------------------------------------------------------------- TEA_VERSION="3.13" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking TEA configuration" >&5 printf %s "checking TEA configuration... " >&6; } if test x"${PACKAGE_NAME}" = x ; then as_fn_error $? " The PACKAGE_NAME variable must be defined by your TEA configure.ac" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (TEA ${TEA_VERSION})" >&5 printf "%s\n" "ok (TEA ${TEA_VERSION})" >&6; } # If the user did not set CFLAGS, set it now to keep macros # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi case "`uname -s`" in *win32*|*WIN32*|*MINGW32_*|*MINGW64_*|*MSYS_*) # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_CYGPATH="cygpath -m" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi ;; esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 printf "%s\n" "$CYGPATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi EXEEXT=".exe" TEA_PLATFORM="windows" ;; *CYGWIN_*) EXEEXT=".exe" # CYGPATH and TEA_PLATFORM are determined later in LOAD_TCLCONFIG ;; *) CYGPATH=echo # Maybe we are cross-compiling.... case ${host_alias} in *mingw32*) EXEEXT=".exe" TEA_PLATFORM="windows" ;; *) EXEEXT="" TEA_PLATFORM="unix" ;; esac ;; esac # Check if exec_prefix is set. If not use fall back to prefix. # Note when adjusted, so that TEA_PREFIX can correct for this. # This is needed for recursive configures, since autoconf propagates # $prefix, but not $exec_prefix (doh!). if test x$exec_prefix = xNONE ; then exec_prefix_default=yes exec_prefix=$prefix fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&5 printf "%s\n" "$as_me: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&6;} # This package name must be replaced statically for AC_SUBST to work # We AC_SUBST these here to ensure they are subst'ed, # in case the user doesn't call TEA_ADD_... # Configure the installer. INSTALL='$(SHELL) $(srcdir)/tclconfig/install-sh -c' INSTALL_DATA_DIR='${INSTALL} -d -m 755' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL} -m 755' INSTALL_SCRIPT='${INSTALL} -m 755' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system version" >&5 printf %s "checking system version... " >&6; } if test ${tcl_cv_sys_version+y} then : printf %s "(cached) " >&6 else case e in #( e) # TEA specific: if test "${TEA_PLATFORM}" = "windows" ; then tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: can't find uname command" >&5 printf "%s\n" "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then tcl_cv_sys_version=NetBSD-Debian fi fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_sys_version" >&5 printf "%s\n" "$tcl_cv_sys_version" >&6; } system=$tcl_cv_sys_version case $system in HP-UX-*) INSTALL_LIBRARY='${INSTALL} -m 755' ;; *) INSTALL_LIBRARY='${INSTALL} -m 644' ;; esac #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- # # Ok, lets find the tcl configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tcl # if test x"${no_tcl}" = x ; then # we reset no_tcl in case something fails here no_tcl=true # Check whether --with-tcl was given. if test ${with_tcl+y} then : withval=$with_tcl; with_tclconfig="${withval}" fi # Check whether --with-tcl8 was given. if test ${with_tcl8+y} then : withval=$with_tcl8; with_tcl8="${withval}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl configuration" >&5 printf %s "checking for Tcl configuration... " >&6; } if test ${ac_cv_c_tclconfig+y} then : printf %s "(cached) " >&6 else case e in #( e) # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then case "${with_tclconfig}" in */tclConfig.sh ) if test -f "${with_tclconfig}"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5 printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;} with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`" fi ;; esac if test -f "${with_tclconfig}/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`" else as_fn_error $? "${with_tclconfig} directory doesn't contain tclConfig.sh" "$LINENO" 5 fi fi # then check for a private Tcl installation if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ../tcl \ `ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \ ../../tcl \ `ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`" break fi done fi # TEA specific: on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few common install locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.5 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few other private locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi ;; esac fi if test x"${ac_cv_c_tclconfig}" = x ; then TCL_BIN_DIR="# no Tcl configs found" as_fn_error $? "Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh" "$LINENO" 5 else no_tcl= TCL_BIN_DIR="${ac_cv_c_tclconfig}" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf "%s\n" "found ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$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 ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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. printf "%s\n" "$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 -version; 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\"" printf "%s\n" "$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 printf "%s\n" "$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 (void) { ; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$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+y} && 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 case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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 case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$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 case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$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 (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$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 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$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 case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) 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 (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; 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.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; 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 ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _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 conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf %s "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... " >&6; } if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: loading" >&5 printf "%s\n" "loading" >&6; } . "${TCL_BIN_DIR}/tclConfig.sh" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf "%s\n" "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi # If the TCL_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TCL_LIB_SPEC will be set to the value # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC # instead of TCL_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f "${TCL_BIN_DIR}/Makefile" ; then TCL_LIB_SPEC="${TCL_BUILD_LIB_SPEC}" TCL_STUB_LIB_SPEC="${TCL_BUILD_STUB_LIB_SPEC}" TCL_STUB_LIB_PATH="${TCL_BUILD_STUB_LIB_PATH}" elif test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tcl.framework installed in an arbitrary location. case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then for i in "`cd "${TCL_BIN_DIR}"; pwd`" \ "`cd "${TCL_BIN_DIR}"/../..; pwd`"; do if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then TCL_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TCL_LIB_FILE}" break fi done fi if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then TCL_STUB_LIB_SPEC="-L`echo "${TCL_BIN_DIR}" | sed -e 's/ /\\\\ /g'` ${TCL_STUB_LIB_FLAG}" TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}" fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking platform" >&5 printf %s "checking platform... " >&6; } hold_cc=$CC; CC="$TCL_CC" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifdef _WIN32 #error win32 #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # first test we've already retrieved platform (cross-compile), fallback to unix otherwise: TEA_PLATFORM="${TEA_PLATFORM-unix}" CYGPATH=echo else case e in #( e) TEA_PLATFORM="windows" # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_CYGPATH="cygpath -m" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi ;; esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 printf "%s\n" "$CYGPATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC=$hold_cc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEA_PLATFORM" >&5 printf "%s\n" "$TEA_PLATFORM" >&6; } # The BUILD_$pkg is to define the correct extern storage class # handling when making this package printf "%s\n" "#define BUILD_${PACKAGE_NAME} /**/" >>confdefs.h # Do this here as we have fully defined TEA_PLATFORM now if test "${TEA_PLATFORM}" = "windows" ; then EXEEXT=".exe" CLEANFILES="$CLEANFILES *.lib *.dll *.pdb *.exp" fi # TEA specific: #----------------------------------------------------------------------- # Handle the --prefix=... option by defaulting to what Tcl gave. # Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER. #----------------------------------------------------------------------- if test "${prefix}" = "NONE"; then prefix_default=yes if test x"${TCL_PREFIX}" != x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&5 printf "%s\n" "$as_me: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&6;} prefix=${TCL_PREFIX} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --prefix defaulting to /usr/local" >&5 printf "%s\n" "$as_me: --prefix defaulting to /usr/local" >&6;} prefix=/usr/local fi fi if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \ -o x"${exec_prefix_default}" = x"yes" ; then if test x"${TCL_EXEC_PREFIX}" != x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&5 printf "%s\n" "$as_me: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&6;} exec_prefix=${TCL_EXEC_PREFIX} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to ${prefix}" >&5 printf "%s\n" "$as_me: --exec-prefix defaulting to ${prefix}" >&6;} exec_prefix=$prefix fi fi #----------------------------------------------------------------------- # Specify the C source files to compile in TEA_ADD_SOURCES, # public headers that need to be installed in TEA_ADD_HEADERS, # stub library C source files to compile in TEA_ADD_STUB_SOURCES, # and runtime Tcl library files in TEA_ADD_TCL_SOURCES. # This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS # and PKG_TCL_SOURCES. #----------------------------------------------------------------------- vars="ooxml.tcl" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then as_fn_error $? "could not find tcl source file '${srcdir}/$i'" "$LINENO" 5 fi PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i" done #-------------------------------------------------------------------- # You can add more files to clean if your extension creates any extra # files by extending CLEANFILES. # Add pkgIndex.tcl if it is generated in the Makefile instead of ./configure # and change Makefile.in to move it from CONFIG_CLEAN_FILES to BINARIES var. # # A few miscellaneous platform-specific items: # TEA_ADD_* any platform specific compiler/build info here. #-------------------------------------------------------------------- #CLEANFILES="$CLEANFILES" #-------------------------------------------------------------------- # Determine the name of the tclsh and/or wish executables in the # Tcl and Tk build directories or the location they were installed # into. These paths are used to support running test cases only, # the Makefile should not be making use of these paths to generate # a pkgIndex.tcl file or anything else at extension build time. #-------------------------------------------------------------------- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tclsh" >&5 printf %s "checking for tclsh... " >&6; } if test -f "${TCL_BIN_DIR}/Makefile" ; then # tclConfig.sh is in Tcl build directory if test "${TEA_PLATFORM}" = "windows"; then if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" fi else TCLSH_PROG="${TCL_BIN_DIR}/tclsh" fi else # tclConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" else TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}" fi list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TCL_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${TCLSH_PROG}" ; then REAL_TCL_BIN_DIR="`cd "$i"; pwd`/" break fi done TCLSH_PROG="${REAL_TCL_BIN_DIR}${TCLSH_PROG}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${TCLSH_PROG}" >&5 printf "%s\n" "${TCLSH_PROG}" >&6; } #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. # You may alternatively have a special pkgIndex.tcl.in or other files # which require substituting th AC variables in. Include these here. #-------------------------------------------------------------------- ac_config_files="$ac_config_files Makefile pkgIndex.tcl" 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$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+y} || &/ 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$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 : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # 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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$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 case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac 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 case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac 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 || printf "%s\n" 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 # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' 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=`printf "%s\n" "$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 || printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated 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 ooxml $as_me 1.10, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ ooxml config.status 1.10 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 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' 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 ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$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 \printf "%s\n" "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 printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _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 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;; *) 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+y} || CONFIG_FILES=$config_files 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" eval set X " :F $CONFIG_FILES " 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=`printf "%s\n" "$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 '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$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 || printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 # _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@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$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 $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"; } && { printf "%s\n" "$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 printf "%s\n" "$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 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi ooxml/manifest.txt000664 000765 000024 00000000551 14763502476 014700 0ustar00alexstaff000000 000000 MANIFEST_UUID 985e4947bc06226eba85f7b93ae559ce9e60c718d3354ea89a166b7dc4043c3c MANIFEST_VERSION {[985e4947bc]} FOSSIL_BUILD_HASH 3cea63c6c126034f40030c3a023f55fc MANIFEST_DATE {2025-03-10 06:17:50} MANIFEST_YEAR 2025 MANIFEST_NUMERIC_DATE 20250310 MANIFEST_NUMERIC_TIME 061750 RELEASE_VERSION 1.10 RELEASE_VERSION_NUMBER 11000 RELEASE_RESOURCE_VERSION 1,10,0,0 ooxml/autom4te.cache/000755 000765 000024 00000000000 14763501223 015117 5ustar00alexstaff000000 000000 ooxml/Makefile000664 000765 000024 00000005753 14763502445 013776 0ustar00alexstaff000000 000000 # Makefile.in -- # # If ths is "Makefile.in" then it is a template for a Makefile; to generate # the actual Makefile, run "./configure", which is a configuration script # generated by the "autoconf" program (constructs like "@foo@" will get # replaced in the actual Makefile. # # Copyright (C) 2019 Alexander Schoepe, Bochum, DE # #======================================================================== # Nothing of the variables below this line need to be changed. #======================================================================== SHELL = /bin/sh srcdir = . top_srcdir = . prefix = /opt/tcl/9.0 exec_prefix = /opt/tcl/9.0 datarootdir = ${prefix}/share libdir = ${exec_prefix}/lib mandir = ${datarootdir}/man bindir = ${exec_prefix}/bin DESTDIR = pkglibdir = $(libdir)/ooxml1.10 top_builddir = /Users/alex/src/ooxml PACKAGE_NAME = ooxml PACKAGE_VERSION = 1.10 CYGPATH = echo #======================================================================== # TCLLIBPATH seeds the auto_path in Tcl's init.tcl so we can test our # package without installing. The other environment variables allow us # to test against an uninstalled Tcl. Add special env vars that you # require for testing here (like TCLX_LIBRARY). #======================================================================== TCL_BIN_DIR = /Library/Frameworks/Tcl.framework TCL_SRC_DIR = /Users/alex/src/core/tests/tcl9.0.1 EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR) TCLLIBPATH = $(top_builddir) TCLSH_ENV = TCL_LIBRARY=`echo $(TCL_SRC_DIR)/library` PKG_ENV = LD_LIBRARY_PATH="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \ PATH="$(EXTRA_PATH):$(PATH)" \ TCLLIBPATH="$(TCLLIBPATH)" TCLSH_PROG = /opt/tcl/9.0/bin/tclsh9.0 TCLSH = $(PKG_ENV) $(TCLSH_ENV) $(TCLSH_PROG) PKG_TCL_SOURCES = ooxml.tcl manifest.txt CONFIG_CLEAN_FILES = Makefile pkgIndex.tcl manifest.txt CLEANFILES = #======================================================================== # Start of user-definable TARGETS section #======================================================================== manifest.txt: manifest manifest.uuid tools/mkversion.tcl $(TCLSH) tools/mkversion.tcl > $@ doc/ooxml.html: doc/ooxml.md pandoc --standalone -f markdown -t html doc/ooxml.md \ --css main.css -o doc/ooxml.html doc/ooxml.n: doc/ooxml.md pandoc --standalone -f markdown -t man doc/ooxml.md -o doc/ooxml.n doc: doc/ooxml.html doc/ooxml.n all: manifest.txt doc/ooxml.html doc/ooxml.n install: all $(TCLSH) `echo $(srcdir)/helper.tcl` cp $(PKG_TCL_SOURCES) pkgIndex.tcl $(pkglibdir) test: $(TCLSH) `echo $(srcdir)/tests/all.tcl` $(TESTFLAGS) \ -load "package ifneeded ${PACKAGE_NAME} ${PACKAGE_VERSION} [list source [file join `echo $(srcdir)` $(PACKAGE_NAME).tcl]]" archive: sh tools/archive.sh ooxml 1.10 $(PKG_TCL_SOURCES) clean: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) -rm -rf doc/ooxml.html doc/ooxml.n distclean: clean -rm -f $(CONFIG_CLEAN_FILES) -rm -rf autom4te.cache -rm -f config.cache config.log config.status .PHONY: install test clean distclean ooxml/PaxHeader/manifest000664 000765 000024 00000000210 14763502016 016011 xustar00alexstaff000000 000000 30 mtime=1741587470.669174167 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/manifest000664 000765 000024 00000017755 14763502016 014066 0ustar00alexstaff000000 000000 C Version-1.10 D 2025-03-10T06:17:50.668 F .fossil-settings/ignore-glob bb3e5e811b00e13ba7f3e5a358606c61de17e069f0220917940da64bf7fc9a32 F .fossil-settings/manifest 4598ba9e1e19cdadf19aa4881b2cb5a74fe4813ceea9bfe7e2fe382904cd14fe F .fossil-settings/manifest.no-warn a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a F .gitattributes 9973c70e220d7b30212ae7a21a18d04f7af8d2e7446359c6b5a0ded1a1c7d502 F Makefile.in 72d943aeb040bab80d40162bca1009a90e72f278fd11896006c2acea4bbb54b7 F README b55eabdf2b7071e5f61a99f35d3f905171a58dfcf111ca1a7a96408bd43da071 F aclocal.m4 f416a9740ff524cbf7b8eaee5298836b095a4c34d9910d3d7d988ddd776e1d27 F configure c48a46aaf270aad77040bb148bdd630bbbe5cf90556a6dad9e375a1c699bd6bc x F configure.ac 29440169737cf0afa81014ae96453117a1103ad6adf2339ab72d5cdd65a9eb24 F doc/main.css 4b090f665ce2463a4213fe7625caf13d671674e985fafa06fd7bf41cd5d92cbb F doc/ooxml.md 8e9af22574db8fdd0de01894d6f0cdb06a975c7e01bad5a024425d7fc0cf1c44 F examples/array.tcl 604dc1907b39797a2fa0d065f44b7923cb48af2fff4ce99bda6cd717af94ddbb F examples/bench.tcl 9b53b74d06da7d4033374941c1fe66b2f341b4e94e60c7177564921deb619c9e F examples/form8.xlsx a95d57f14fbd46188dbe504e025914b14a2118a303e2cd952e85a7d3a807e4f1 F examples/original_excel.xlsx e560157e92837ef3b6be15e730b344117fd46acae74f16881d42c60538bfc964 F examples/xlsx-aLotOfFormats.tcl fa613b751570acadfd365d6b62d342d3c05af0e6c288464cb6ee15baddb0fedd x F examples/xlsx-complexReadWrite.tcl ef284e6e426a21777a0606bf208454e165c571fb64ed2d7f6a5fde8f6ee911cb x F examples/xlsx-defaultDateStyle.tcl 692878bc7f1edd7705fb1d719473aed4ebb0e6d70719c7da3f7186bbd8d948fd x F examples/xlsx-formula.tcl 90727dc36983c8974a4e049379865fbd86b9ce1c9c746317d8253226ada9e877 x F examples/xlsx-hyperlinksTooltips.tcl a6689c7a6a69a060aebd4e13c229699ae67c3d4a7fb4060d3076aaf45f6d7c2d x F examples/xlsx-printArea.tcl 1450f5ab68fe0ed0f7699d0b122ff719035a1fa5fa54625ab32d7b0773f9050c x F examples/xlsx-searchAndReplace.tcl 7668e37c3d8e96a3870c813afa4d599b1cded7cac3f92677b7ebfc537a7a3dd2 x F examples/xlsx-tablelist.tcl abf7957ca84744adbd3106b715c7506e6dbc1a6c9decb71854704cd37d16f666 x F examples/xlsx-writeRowsAutoIncr.tcl 871b86577f1602025f28387b50110c3b31fbb16496a24b1bee2738b394dd2a47 x F examples/xlsx-writeRowsIndex.tcl 99a77e54b1269b233039731cbcc98717eff9dcd5a26b3335eacfb6d1013fc70e x F helper.tcl 8c40832a9aed4ab56d777dca4aa242d36efd338a6d285650d2c6cb702e95fbf0 x F license.terms b6f4565b9a907e09f40eeee91b6fd3cddf8923a2c43926323c2858fa274d11b6 F ooxml.code-workspace d7e95db5f18683291a3c38296e5e1926aa4011244e2c953ea81f86c702cf821a F ooxml.tcl d5d858f1375a9852d043a70a80572f49c63812d792b5794888ea39923a0d763e F pkgIndex.tcl.in b6b469557e5c2b7ac66be3986672ab44e1ee3407f120cd6c9fe94b14f600c0bf F tclconfig/ChangeLog 5afc872331b2b8e3ecfdbd0e8222da460b071c2f815080e47e0a1f6c49843a7f F tclconfig/README.txt 8285d9bad9933ad1ca9fd89398e7f22bea1b96dc68fb3d1536d0b3922725b21d F tclconfig/install-sh d5e7acec82cb30a616dc8023b6d77abf3e7109f86175f47741afe89b34d1d4f8 x F tclconfig/tcl.m4 24841be70516af95124d989e9b9a9fb07879fdc9cf2248c4ce6fc7aa3a5ae72b F tests/all.tcl 5f87ca6b7d1e5bf0aa6e3a7fa4408f629ab2a224cc20910fb12ea6928f1aecbd F tests/test_sheet1_xml_missing.xlsx 52d9c760f650bc518388b7982ff875cdff401001fd0a7f7ee1813499ab8861f8 F tests/test_sheet1_xml_no_utf8.xlsx 72b45333998f053a4e5de86408727b76836389550876be819b49ce811faebb9a F tests/test_sheet1_xml_no_xml.xlsx 016667d0ed9266be829dea35b8d8c38dea973a552380c333126a6c4c69978c02 F tests/test_worksheets_xml_missing.xlsx 1ab0ee8183d26ee9a24ff3928d0dcae38dcb12397205c8a6660d97b755cbbdd2 F tests/xlsx-benchmark.test ad9ac56279c418f73e420b5d56da568a526322786e263f2717ad3752916ea90b F tests/xlsx-formatcell.test c5836d1f71cea99b86a352eebad5612509b7ffb3050a9ad3e87438594dd91df2 F tests/xlsx-formula.test 8f5624d8f324bb9c26040373a201bbcb9d2565c0734c32c7c77142b4c75ce7a8 F tests/xlsx-misc.test 43ef59a4de4bcc03e717470adc3d570ae74d466c7ae156ee3d6da039c711d2ce F tests/xlsx-namedfmts.test a256cebeef32996f0280a3071b941a961d7dbca9e709945394b4edd448655c47 F tests/xlsx-printarea.test b786b6320be430c00225650963596bee80b66e0fcf968d261d9283fefe8648c8 F tests/xlsx-readerror.test 28d07b6f22f1ac0d9fdd4bdcfc9161afd716d87f5e0a62a76403de3d36577e5c F tests/xlsx-simple.test 88cd5283edd5564ff0c5f41104f463267171c188f273e9b210f3a533649daf15 F tools/archive.sh 12f30715c3ad5f758004d318e2d61639a47adb9d5b44eae4c4bd65c6a101a0c3 x F tools/debugging/builddiff.sh 109cbd277e478cb6949d41fbe644d72637f308f3ba665210dbcd648a3e43d476 F tools/demo.xml 55f59231394d7d3ea6cbed36c1d6765b64df98bc7b8089c3c569fdd0331dfb91 F tools/getlanguageinfo.tcl fa7c5c6295d44f20cc34390579fcd8547bba2bc809d0d7d31e99261414d4d501 F tools/languages/Bok1-norwegisch-no.xlsx afe817c2fd69739c755ec7f7f86defa3c7582de78b42739a0465db27138bcff3 F tools/languages/Bok1-schwedisch-sv.xlsx 126c011b6c96207c71514dc12b35449a81b992fc16d821ef0ba05aecb3e4329a F tools/languages/Book1-englisch-en.xlsx aadb8847997ab6a359e98427044dfe4511d5e735592340a4cb6fdfaf1894fa0a F tools/languages/Book1-japanisch-ja.xlsx 0eef3e6a3f1b9975983d8066cf365d02ca48e59a6c52eb3879fcedec8654ecc2 F tools/languages/Cartel1-italienisch-it.xlsx 7c164e528497101f972a0230801f8f3794f2210d5f7552d304605223d3a9f4b9 F tools/languages/Classeur1-französisch-fr.xlsx 9c310df9d5937ad7fc66103b152fed0bce6ee54f058d53adc9fdbd2b143c2835 F tools/languages/Kitap1-türkisch-tr.xlsx fe325531bac506c95a9095170e53386d6c218a87c0db92b86f55b4e8a7dbadbc F tools/languages/Libro1-spanisch-es.xlsx 7893dfd6f93ef6ea4f008991a3a5031a8610a7a652fd365d53ecc97e54db1940 F tools/languages/Livro1-portugiesisch-pt.xlsx d893dd77991dae287db2fbde7d8d50ff605e6d4bff363077e2471d1a08618c08 F tools/languages/Map1-niederländisch-nl.xlsx 53c9754959604d0ebd9170aef7d38a3c512ac3698a5d76e05a2e8933ca2ca976 F tools/languages/Mappe1-deutsch-de.xlsx 460bba60b3dee7283d42c86e2ef766214b8240a9813e93a4d90df61f3600ac2f F tools/languages/Mappe1-dänisch-da.xlsx 125a4c41cbd73043dda0468d4e911a5b59622db61b35ef8b7b5bedf43db10c5a F tools/languages/Munkafüzet1-ungarisch-hu.xlsx 0fec7892820caddac31b664c75782ac7714ae5d8e3382d8e9317cc4216036cf3 F tools/languages/Sešit1-tschechisch-cs.xlsx c8df343b8cde906368af69011790fd9c20a542748d8d43e8197db4a63c7bf005 F tools/languages/Skoroszyt1-polnisch-pl.xlsx d961f87b46c461589f758f8ab9ddb7551bda7713bb3f841f6fd8f3c23c4ef4a5 F tools/languages/Työkirja1-finnisch-fi.xlsx 420b5c2bccc963cc99ec398850a1a872035459ea32b05fe08d3e6fae030564b9 F tools/languages/Zošit1-slowakisch-sl.xlsx ef7220fb07dad29c2b10143a3e6e17bb7a46dff2735291fdc701a0d401c94280 F tools/languages/Βιβλίο1-griechisch-el.xlsx ac7a21f28d57c47831cfddea1410951fa7c6dbb76442c497608f107c883a224b F tools/languages/Книга1-russisch-ru.xlsx 1c0a36d04967c5fd9e59f061c1bacf84dcdc54ef59436b50585947dfe58c49af F tools/languages/חוברת1-hebräisch-he.xlsx b5aee43e401ad6f4a891cc2a57dea582011610495d6900f4f225898ba1453111 F tools/languages/الكتاب1-arabisch-ar.xlsx 9c716332082f7ed01a817a1c6bc0101a3943b5feba84b470c68768a909247d47 F tools/languages/สมุดงาน1-thailändisch-th.xlsx 62fbf07dc72e7afcaca345f9121b79cccbc83a91564d05ac7a58f41d66dbd36c F tools/languages/工作簿1-chinesisch-zh.xlsx ffecda35303c5ebcd3fe8debb0e5da2226624bb3101c1d8d596d6425bb7de93e F tools/languages/통합\s문서1-koreanisch-ko.xlsx 6bfc4d052b7fc16445c92809b5fdfabb02ee331d2d2b60f8e34192eaf320d38a F tools/mkversion.c 6bd67f53bfadf182e380ad077fc3e2c8a101d4080a891449e10a9b7e43e3956b F tools/mkversion.tcl 242008aee762d470379e473e8c186d33c6754e2f5cd4757c7339675d09b1b0f7 F tools/pp.tcl 627884178da4a24f9d0ec52e1a4630c2ff973e6d40d26a3fd027bbeca9209eed F tools/xmltotdom.tcl 2f99796ee54518a1166e216e976e6b63ccd8a38773bf5e6821bcdd4a393960b8 x F tools/xmltotdomnodecmd.tcl 4fcd7f81e031596d3eb380cb0c95b003457d70f10c688d4b2875ba602ed690ba x F uv/min-download.html 3f433be823b4caea9f81be7d618eaa05585b30129af73b728497bca29ccee847 F uv/template-download.html e2d57ca4804a4e02a688779f9b1e4a1bebe865de508e45f68fff773a52341728 P 92acdae73e40cbb7fb4ab47ea7d8791d5a1cdcafc48b25c65322f538c06bd905 R efa03b54e3d1f18197e2db5cab2b21a5 T +bgcolor * #fea5f4 T +sym-release * T +sym-version-1.10 * U alex Z bbd9a1ed093c96b1524a8248f590ca7a ooxml/helper.tcl000775 000765 000024 00000000643 14646400570 014311 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh "$0" "$@" # Copyright (C) 2019 Alexander Schoepe, Bochum, DE package require Tcl 8.6- switch -- [set cmd [lindex $argv 0]] { cp { set src [lrange $argv 1 end-1] set dst [lindex $argv end] if {![file exists $dst]} { file mkdir $dst } if {[file exists $dst] && [file isdirectory $dst]} { file copy -force -- {*}$src $dst } } default { exit 1 } } ooxml/tests/000755 000765 000024 00000000000 14763500732 013461 5ustar00alexstaff000000 000000 ooxml/license.terms000664 000765 000024 00000003314 14722271071 015014 0ustar00alexstaff000000 000000 ooxml - ECMA-376 Office Open XML File Formats BSD-3 Copyright (C) 2018-2024 Alexander Schoepe, Bochum, DE, Copyright (C) 2019-2024 Rolf Ade, DE, Copyright (C) 2023-2024 Harald Oehmann, DE All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ooxml/PaxHeader/README000664 000765 000024 00000000562 14760267752 015166 xustar00alexstaff000000 000000 29 mtime=1740730346.22038742 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO 127 LIBARCHIVE.xattr.com.apple.metadata:kMDItemTextContentLanguage=YnBsaXN0MDBSZW4IAAAAAAAAAQEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAs 108 SCHILY.xattr.com.apple.metadata:kMDItemTextContentLanguage=bplist00Ren ooxml/README000664 000765 000024 00000002770 14760267752 013220 0ustar00alexstaff000000 000000 ooxml ECMA-376 Office Open XML File Formats This directory contains a freely distributable pure tcl extension called ooxml. SYSNOPSIS Read and Write Office Open XML "XLSX" since Excel 2007 This package contains several commands to edit Excel files. The three most important are the following three: Importing Excel files into a Tcl array with ::ooxml::xl_read, export Tcl data to an Excel file with ::ooxml::xl_write and export Tcl tablelist to an Excel file with ::ooxml::tablelist_to_xl. For information on how to use these commands, see the examples and the man-page at https://fossil.sowaswie.de/ooxml. DEPENDENCIES Tcl >= 8.6.7 tdom >= 0.9.0 for reading: tcllib module zipfile::decode or tclvfs module vfs::zip >= 1.0.4 GETTING THE CODE The development repository is hosted at https://fossil.sowaswie.de/ooxml You are encouraged to use trunk. INSTALLING Simply extract the download ooxml-.zip into your Tcl library path. Since ooxml is TEA-compatible you should be able to do ./configure make test make install REPORTING BUGS Please head to https://fossil.sowaswie.de/ooxml/ticket and click on "New Ticket". Log in as anonymous and report your findings. If you prefer to have an individual login write Alex a mail. HISTORY ooxml was started by Alexander Schoepe (fossil@sowaswie.de) and improved with contributions by Rolf Ade (rolf@pointsman.de). ooxml/config.status000775 000765 000024 00000065325 14763502445 015054 0ustar00alexstaff000000 000000 #! /bin/sh # Generated by configure. # 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-/bin/sh} export SHELL ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (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 e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # 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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$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 case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac 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 case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac 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 || printf "%s\n" 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 # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' 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=`printf "%s\n" "$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 || printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## # 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 ooxml $as_me 1.10, which was generated by GNU Autoconf 2.72. 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` " # Files that config.status was made for. config_files=" Makefile pkgIndex.tcl" ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." ac_cs_config='' ac_cs_version="\ ooxml config.status 1.10 configured by ./configure, generated by GNU Autoconf 2.72, with options \"$ac_cs_config\" Copyright (C) 2023 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='/Users/alex/src/ooxml' srcdir='.' test -n "$AWK" || AWK=awk # 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 ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$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 if $ac_cs_recheck; then set X /bin/sh './configure' $ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=/bin/sh $*" >&6 CONFIG_SHELL='/bin/sh' export CONFIG_SHELL exec "$@" fi exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;; *) 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+y} || CONFIG_FILES=$config_files 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" && cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && S["LTLIBOBJS"]="" S["LIBOBJS"]="" S["TCLSH_PROG"]="/opt/tcl/9.0/bin/tclsh9.0" S["TCL_SHLIB_LD_LIBS"]="${LIBS}" S["TCL_LD_FLAGS"]=" -headerpad_max_install_names -Wl,-search_paths_first " S["TCL_EXTRA_CFLAGS"]="-arch arm64 -arch x86_64 -pipe -finput-charset=UTF-8 -mmacosx-version-min=11.0 " S["TCL_DEFS"]="-DPACKAGE_NAME=\\\"tcl\\\" -DPACKAGE_TARNAME=\\\"tcl\\\" -DPACKAGE_VERSION=\\\"9.0\\\" -DPACKAGE_STRING=\\\"tcl\\ 9.0\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_URL=\\\"\\\""\ " -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_"\ "H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TIME_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_PARAM_H=1 -DTCL_CFGVAL_ENCODING=\\\"utf-8\\\" -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHA"\ "VE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHREAD_ATFORK=1 -DHAVE_DECL_PTHREAD_MUTEX_RECURSIVE=1 -DMODULE_SCOPE=extern\\ __attribute__\\(\\(__visibility__\\"\ "(\\\"hidden\\\"\\)\\)\\) -DHAVE_HIDDEN=1 -DMAC_OSX_TCL=1 -DHAVE_COREFOUNDATION=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_STDBOOL_H=1 -DHAVE_VFORK=1 -DHAVE_POSIX_SPAW"\ "NP=1 -DHAVE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 -DHAVE_POSIX_SPAWNATTR_SETFLAGS=1 -DTCL_SHLIB_EXT=\\\".dylib\\\" -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 -DMP_PR"\ "EC=4 -DTCL_WIDE_INT_IS_LONG=1 -DHAVE_GETCWD=1 -DHAVE_MKSTEMP=1 -DHAVE_WAITPID=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GETADDRINFO=1 -DHAVE_FREEADDRINFO=1 -DHA"\ "VE_GAI_STRERROR=1 -DHAVE_STRUCT_ADDRINFO=1 -DHAVE_STRUCT_IN6_ADDR=1 -DHAVE_STRUCT_SOCKADDR_IN6=1 -DHAVE_STRUCT_SOCKADDR_STORAGE=1 -DHAVE_GETPWUID_R_"\ "5=1 -DHAVE_GETPWUID_R=1 -DHAVE_GETPWNAM_R_5=1 -DHAVE_GETPWNAM_R=1 -DHAVE_GETGRGID_R_5=1 -DHAVE_GETGRGID_R=1 -DHAVE_GETGRNAM_R_5=1 -DHAVE_GETGRNAM_R="\ "1 -DHAVE_MTSAFE_GETHOSTBYNAME=1 -DHAVE_MTSAFE_GETHOSTBYADDR=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_GMTIME_R=1 -DHAVE_L"\ "OCALTIME_R=1 -DHAVE_TM_GMTOFF=1 -DHAVE_TIMEZONE_VAR=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -D"\ "HAVE_BLKCNT_T=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_LANGINFO=1 -DHAVE_CFMAKERAW=1 -DHAVE_CHFLAGS=1 -DHAVE_MKSTEMPS=1 -D"\ "HAVE_GETATTRLIST=1 -DHAVE_COPYFILE_H=1 -DHAVE_COPYFILE=1 -DHAVE_LIBKERN_OSATOMIC_H=1 -DHAVE_OSSPINLOCKLOCK=1 -DTCL_LOAD_FROM_MEMORY=1 -DTCL_WIDE_CLI"\ "CKS=1 -DHAVE_WEAK_IMPORT=1 -D_DARWIN_C_SOURCE=1 -DHAVE_FTS=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1 -DTCL_UNLOAD_DLLS=1 -DUSE_DTRACE=1 -DTCL_FRAM"\ "EWORK=1" S["TCL_LIBS"]=" -lz -lpthread -framework CoreFoundation " S["CLEANFILES"]="" S["OBJEXT"]="o" S["ac_ct_CC"]="gcc" S["CPPFLAGS"]="" S["LDFLAGS"]="" S["CFLAGS"]="" S["CC"]="gcc" S["TCL_STUB_LIB_SPEC"]="-L/Library/Frameworks/Tcl.framework -ltclstub" S["TCL_STUB_LIB_FLAG"]="-ltclstub" S["TCL_STUB_LIB_FILE"]="libtclstub.a" S["TCL_LIB_SPEC"]="-F/Library/Frameworks -framework Tcl" S["TCL_LIB_FLAG"]="-framework Tcl" S["TCL_LIB_FILE"]="Tcl" S["TCL_SRC_DIR"]="/Users/alex/src/core/tests/tcl9.0.1" S["TCL_BIN_DIR"]="/Library/Frameworks/Tcl.framework" S["TCL_PATCH_LEVEL"]=".1" S["TCL_VERSION"]="9.0" S["INSTALL_LIBRARY"]="${INSTALL} -m 644" S["INSTALL_SCRIPT"]="${INSTALL} -m 755" S["INSTALL_PROGRAM"]="${INSTALL} -m 755" S["INSTALL_DATA"]="${INSTALL} -m 644" S["INSTALL_DATA_DIR"]="${INSTALL} -d -m 755" S["INSTALL"]="$(SHELL) $(srcdir)/tclconfig/install-sh -c" S["PKG_CFLAGS"]="" S["PKG_LIBS"]="" S["PKG_INCLUDES"]="" S["PKG_HEADERS"]="" S["PKG_TCL_SOURCES"]=" ooxml.tcl" S["PKG_STUB_OBJECTS"]="" S["PKG_STUB_SOURCES"]="" S["PKG_LIB_FILE9"]="" S["PKG_LIB_FILE8"]="" S["PKG_LIB_FILE"]="" S["EXEEXT"]="" S["CYGPATH"]="echo" S["target_alias"]="" S["host_alias"]="" S["build_alias"]="" S["LIBS"]="" S["ECHO_T"]="" S["ECHO_N"]="" S["ECHO_C"]="\\c" S["DEFS"]="-DPACKAGE_NAME=\\\"ooxml\\\" -DPACKAGE_TARNAME=\\\"ooxml\\\" -DPACKAGE_VERSION=\\\"1.10\\\" -DPACKAGE_STRING=\\\"ooxml\\ 1.10\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_"\ "URL=\\\"\\\" -DBUILD_ooxml=/\\*\\*/" S["mandir"]="${datarootdir}/man" S["localedir"]="${datarootdir}/locale" S["libdir"]="${exec_prefix}/lib" S["psdir"]="${docdir}" S["pdfdir"]="${docdir}" S["dvidir"]="${docdir}" S["htmldir"]="${docdir}" S["infodir"]="${datarootdir}/info" S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" S["oldincludedir"]="/usr/include" S["includedir"]="${prefix}/include" S["runstatedir"]="${localstatedir}/run" S["localstatedir"]="${prefix}/var" S["sharedstatedir"]="${prefix}/com" S["sysconfdir"]="${prefix}/etc" S["datadir"]="${datarootdir}" S["datarootdir"]="${prefix}/share" S["libexecdir"]="${exec_prefix}/libexec" S["sbindir"]="${exec_prefix}/sbin" S["bindir"]="${exec_prefix}/bin" S["program_transform_name"]="s,x,x," S["prefix"]="/opt/tcl/9.0" S["exec_prefix"]="/opt/tcl/9.0" S["PACKAGE_URL"]="" S["PACKAGE_BUGREPORT"]="" S["PACKAGE_STRING"]="ooxml 1.10" S["PACKAGE_VERSION"]="1.10" S["PACKAGE_TARNAME"]="ooxml" S["PACKAGE_NAME"]="ooxml" S["PATH_SEPARATOR"]=":" S["SHELL"]="/bin/sh" _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 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 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " 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=`printf "%s\n" "$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 '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$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 || printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 # # 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@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ac_datarootdir_hack=' s&@datadir@&${datarootdir}&g s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g s&@infodir@&${datarootdir}/info&g s&@localedir@&${datarootdir}/locale&g s&@mandir@&${datarootdir}/man&g s&\${datarootdir}&${prefix}/share&g' ;; esac ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// } :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 $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"; } && { printf "%s\n" "$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 printf "%s\n" "$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 ;; esac done # for ac_tag as_fn_exit 0 ooxml/pkgIndex.tcl000664 000765 000024 00000000142 14763502445 014576 0ustar00alexstaff000000 000000 # # Tcl package index file # package ifneeded ooxml 1.10 [list source [file join $dir ooxml.tcl]] ooxml/examples/000755 000765 000024 00000000000 14762606246 014143 5ustar00alexstaff000000 000000 ooxml/doc/000755 000765 000024 00000000000 14762266073 013072 5ustar00alexstaff000000 000000 ooxml/config.log000664 000765 000024 00000025321 14763502445 014277 0ustar00alexstaff000000 000000 This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by ooxml configure 1.10, which was generated by GNU Autoconf 2.72. Invocation command line was $ ./configure ## --------- ## ## Platform. ## ## --------- ## hostname = as23mbp uname -m = arm64 uname -r = 23.6.0 uname -s = Darwin uname -v = Darwin Kernel Version 23.6.0: Thu Dec 19 20:44:43 PST 2024; root:xnu-10063.141.1.703.2~1/RELEASE_ARM64_T6020 /usr/bin/uname -p = arm /bin/uname -X = unknown /bin/arch = unknown /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = Mach kernel version: Darwin Kernel Version 23.6.0: Thu Dec 19 20:44:43 PST 2024; root:xnu-10063.141.1.703.2~1/RELEASE_ARM64_T6020 Kernel configured for up to 12 processors. 12 processors are physically available. 12 processors are logically available. Processor type: arm64e (ARM64E) Processors active: 0 1 2 3 4 5 6 7 8 9 10 11 Primary memory available: 32.00 gigabytes Default processor set: 714 tasks, 2889 threads, 12 processors Load average: 0.88, Mach factor: 11.10 /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /opt/homebrew/opt/mysql@8.4/bin/ PATH: /opt/homebrew/bin/ PATH: /opt/homebrew/sbin/ PATH: /opt/local/bin/ PATH: /opt/local/sbin/ PATH: /usr/local/bin/ PATH: /System/Cryptexes/App/usr/bin/ PATH: /usr/bin/ PATH: /bin/ PATH: /usr/sbin/ PATH: /sbin/ PATH: /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/ PATH: /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/ PATH: /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/ PATH: /Library/Apple/usr/bin/ PATH: /Library/TeX/texbin/ PATH: /Applications/Little Snitch.app/Contents/Components/ PATH: /Applications/VMware Fusion.app/Contents/Public/ PATH: /Developer/usr/bin/ ## ----------- ## ## Core tests. ## ## ----------- ## configure:2153: checking TEA configuration configure:2159: result: ok (TEA 3.13) configure:2246: configuring ooxml 1.10 configure:2276: checking system version configure:2304: result: Darwin-23.6.0 configure:2353: checking for Tcl configuration configure:2487: result: found /Library/Frameworks/Tcl.framework/tclConfig.sh configure:2555: checking for gcc configure:2576: found /usr/bin/gcc configure:2588: result: gcc configure:2947: checking for C compiler version configure:2956: gcc --version >&5 Apple clang version 16.0.0 (clang-1600.0.26.6) Target: arm64-apple-darwin23.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin configure:2967: $? = 0 configure:2956: gcc -v >&5 Apple clang version 16.0.0 (clang-1600.0.26.6) Target: arm64-apple-darwin23.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin configure:2967: $? = 0 configure:2956: gcc -V >&5 clang: error: argument to '-V' is missing (expected 1 value) clang: error: no input files configure:2967: $? = 1 configure:2956: gcc -qversion >&5 clang: error: unknown argument '-qversion'; did you mean '--version'? clang: error: no input files configure:2967: $? = 1 configure:2956: gcc -version >&5 clang: error: unknown argument '-version'; did you mean '--version'? clang: error: no input files configure:2967: $? = 1 configure:2987: checking whether the C compiler works configure:3009: gcc conftest.c >&5 configure:3013: $? = 0 configure:3064: result: yes configure:3068: checking for C compiler default output file name configure:3070: result: a.out configure:3076: checking for suffix of executables configure:3083: gcc -o conftest conftest.c >&5 configure:3087: $? = 0 configure:3111: result: configure:3135: checking whether we are cross compiling configure:3143: gcc -o conftest conftest.c >&5 configure:3147: $? = 0 configure:3154: ./conftest configure:3158: $? = 0 configure:3173: result: no configure:3179: checking for suffix of object files configure:3202: gcc -c conftest.c >&5 configure:3206: $? = 0 configure:3230: result: o configure:3234: checking whether the compiler supports GNU C configure:3254: gcc -c conftest.c >&5 configure:3254: $? = 0 configure:3266: result: yes configure:3277: checking whether gcc accepts -g configure:3298: gcc -c -g conftest.c >&5 configure:3298: $? = 0 configure:3345: result: yes configure:3365: checking for gcc option to enable C11 features configure:3380: gcc -c conftest.c >&5 configure:3380: $? = 0 configure:3399: result: none needed configure:3519: checking for existence of /Library/Frameworks/Tcl.framework/tclConfig.sh configure:3523: result: loading configure:3577: checking platform configure:3595: gcc -c conftest.c >&5 configure:3595: $? = 0 configure:3654: result: unix configure:3686: --prefix defaulting to TCL_PREFIX /opt/tcl/9.0 configure:3698: --exec-prefix defaulting to TCL_EXEC_PREFIX /opt/tcl/9.0 configure:3751: checking for tclsh configure:3786: result: /opt/tcl/9.0/bin/tclsh9.0 configure:3947: creating ./config.status ## ---------------------- ## ## Running config.status. ## ## ---------------------- ## This file was extended by ooxml config.status 1.10, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = CONFIG_HEADERS = CONFIG_LINKS = CONFIG_COMMANDS = $ ./config.status on as23mbp config.status:765: creating Makefile config.status:765: creating pkgIndex.tcl ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_c_compiler_gnu=yes ac_cv_c_tclconfig=/Library/Frameworks/Tcl.framework ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value= ac_cv_env_CPPFLAGS_set= ac_cv_env_CPPFLAGS_value= ac_cv_env_LDFLAGS_set= ac_cv_env_LDFLAGS_value= ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= ac_cv_env_build_alias_set= ac_cv_env_build_alias_value= ac_cv_env_host_alias_set= ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= ac_cv_objext=o ac_cv_prog_ac_ct_CC=gcc ac_cv_prog_cc_c11= ac_cv_prog_cc_g=yes ac_cv_prog_cc_stdc= tcl_cv_sys_version=Darwin-23.6.0 ## ----------------- ## ## Output variables. ## ## ----------------- ## CC='gcc' CFLAGS='' CLEANFILES='' CPPFLAGS='' CYGPATH='echo' DEFS='-DPACKAGE_NAME=\"ooxml\" -DPACKAGE_TARNAME=\"ooxml\" -DPACKAGE_VERSION=\"1.10\" -DPACKAGE_STRING=\"ooxml\ 1.10\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DBUILD_ooxml=/\*\*/' ECHO_C='\c' ECHO_N='' ECHO_T='' EXEEXT='' INSTALL='$(SHELL) $(srcdir)/tclconfig/install-sh -c' INSTALL_DATA='${INSTALL} -m 644' INSTALL_DATA_DIR='${INSTALL} -d -m 755' INSTALL_LIBRARY='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL} -m 755' INSTALL_SCRIPT='${INSTALL} -m 755' LDFLAGS='' LIBOBJS='' LIBS='' LTLIBOBJS='' OBJEXT='o' PACKAGE_BUGREPORT='' PACKAGE_NAME='ooxml' PACKAGE_STRING='ooxml 1.10' PACKAGE_TARNAME='ooxml' PACKAGE_URL='' PACKAGE_VERSION='1.10' PATH_SEPARATOR=':' PKG_CFLAGS='' PKG_HEADERS='' PKG_INCLUDES='' PKG_LIBS='' PKG_LIB_FILE8='' PKG_LIB_FILE9='' PKG_LIB_FILE='' PKG_STUB_OBJECTS='' PKG_STUB_SOURCES='' PKG_TCL_SOURCES=' ooxml.tcl' SHELL='/bin/sh' TCLSH_PROG='/opt/tcl/9.0/bin/tclsh9.0' TCL_BIN_DIR='/Library/Frameworks/Tcl.framework' TCL_DEFS='-DPACKAGE_NAME=\"tcl\" -DPACKAGE_TARNAME=\"tcl\" -DPACKAGE_VERSION=\"9.0\" -DPACKAGE_STRING=\"tcl\ 9.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TIME_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_PARAM_H=1 -DTCL_CFGVAL_ENCODING=\"utf-8\" -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHREAD_ATFORK=1 -DHAVE_DECL_PTHREAD_MUTEX_RECURSIVE=1 -DMODULE_SCOPE=extern\ __attribute__\(\(__visibility__\(\"hidden\"\)\)\) -DHAVE_HIDDEN=1 -DMAC_OSX_TCL=1 -DHAVE_COREFOUNDATION=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_STDBOOL_H=1 -DHAVE_VFORK=1 -DHAVE_POSIX_SPAWNP=1 -DHAVE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 -DHAVE_POSIX_SPAWNATTR_SETFLAGS=1 -DTCL_SHLIB_EXT=\".dylib\" -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 -DMP_PREC=4 -DTCL_WIDE_INT_IS_LONG=1 -DHAVE_GETCWD=1 -DHAVE_MKSTEMP=1 -DHAVE_WAITPID=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GETADDRINFO=1 -DHAVE_FREEADDRINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_STRUCT_ADDRINFO=1 -DHAVE_STRUCT_IN6_ADDR=1 -DHAVE_STRUCT_SOCKADDR_IN6=1 -DHAVE_STRUCT_SOCKADDR_STORAGE=1 -DHAVE_GETPWUID_R_5=1 -DHAVE_GETPWUID_R=1 -DHAVE_GETPWNAM_R_5=1 -DHAVE_GETPWNAM_R=1 -DHAVE_GETGRGID_R_5=1 -DHAVE_GETGRGID_R=1 -DHAVE_GETGRNAM_R_5=1 -DHAVE_GETGRNAM_R=1 -DHAVE_MTSAFE_GETHOSTBYNAME=1 -DHAVE_MTSAFE_GETHOSTBYADDR=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_GMTIME_R=1 -DHAVE_LOCALTIME_R=1 -DHAVE_TM_GMTOFF=1 -DHAVE_TIMEZONE_VAR=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_BLKCNT_T=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_LANGINFO=1 -DHAVE_CFMAKERAW=1 -DHAVE_CHFLAGS=1 -DHAVE_MKSTEMPS=1 -DHAVE_GETATTRLIST=1 -DHAVE_COPYFILE_H=1 -DHAVE_COPYFILE=1 -DHAVE_LIBKERN_OSATOMIC_H=1 -DHAVE_OSSPINLOCKLOCK=1 -DTCL_LOAD_FROM_MEMORY=1 -DTCL_WIDE_CLICKS=1 -DHAVE_WEAK_IMPORT=1 -D_DARWIN_C_SOURCE=1 -DHAVE_FTS=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1 -DTCL_UNLOAD_DLLS=1 -DUSE_DTRACE=1 -DTCL_FRAMEWORK=1' TCL_EXTRA_CFLAGS='-arch arm64 -arch x86_64 -pipe -finput-charset=UTF-8 -mmacosx-version-min=11.0 ' TCL_LD_FLAGS=' -headerpad_max_install_names -Wl,-search_paths_first ' TCL_LIBS=' -lz -lpthread -framework CoreFoundation ' TCL_LIB_FILE='Tcl' TCL_LIB_FLAG='-framework Tcl' TCL_LIB_SPEC='-F/Library/Frameworks -framework Tcl' TCL_PATCH_LEVEL='.1' TCL_SHLIB_LD_LIBS='${LIBS}' TCL_SRC_DIR='/Users/alex/src/core/tests/tcl9.0.1' TCL_STUB_LIB_FILE='libtclstub.a' TCL_STUB_LIB_FLAG='-ltclstub' TCL_STUB_LIB_SPEC='-L/Library/Frameworks/Tcl.framework -ltclstub' TCL_VERSION='9.0' ac_ct_CC='gcc' bindir='${exec_prefix}/bin' build_alias='' datadir='${datarootdir}' datarootdir='${prefix}/share' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' dvidir='${docdir}' exec_prefix='/opt/tcl/9.0' host_alias='' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='${prefix}/var' mandir='${datarootdir}/man' oldincludedir='/usr/include' pdfdir='${docdir}' prefix='/opt/tcl/9.0' program_transform_name='s,x,x,' psdir='${docdir}' runstatedir='${localstatedir}/run' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' sysconfdir='${prefix}/etc' target_alias='' ## ----------- ## ## confdefs.h. ## ## ----------- ## /* confdefs.h */ #define PACKAGE_NAME "ooxml" #define PACKAGE_TARNAME "ooxml" #define PACKAGE_VERSION "1.10" #define PACKAGE_STRING "ooxml 1.10" #define PACKAGE_BUGREPORT "" #define PACKAGE_URL "" #define BUILD_ooxml /**/ configure: exit 0 ooxml/PaxHeader/manifest.uuid000664 000765 000024 00000000210 14763502016 016756 xustar00alexstaff000000 000000 30 mtime=1741587470.670684808 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/manifest.uuid000664 000765 000024 00000000101 14763502016 015004 0ustar00alexstaff000000 000000 985e4947bc06226eba85f7b93ae559ce9e60c718d3354ea89a166b7dc4043c3c ooxml/Makefile.in000664 000765 000024 00000006016 14716341317 014371 0ustar00alexstaff000000 000000 # Makefile.in -- # # If ths is "Makefile.in" then it is a template for a Makefile; to generate # the actual Makefile, run "./configure", which is a configuration script # generated by the "autoconf" program (constructs like "@foo@" will get # replaced in the actual Makefile. # # Copyright (C) 2019 Alexander Schoepe, Bochum, DE # #======================================================================== # Nothing of the variables below this line need to be changed. #======================================================================== SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ libdir = @libdir@ mandir = @mandir@ bindir = @bindir@ DESTDIR = pkglibdir = $(libdir)/@PACKAGE_NAME@@PACKAGE_VERSION@ top_builddir = @abs_top_builddir@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ CYGPATH = @CYGPATH@ #======================================================================== # TCLLIBPATH seeds the auto_path in Tcl's init.tcl so we can test our # package without installing. The other environment variables allow us # to test against an uninstalled Tcl. Add special env vars that you # require for testing here (like TCLX_LIBRARY). #======================================================================== TCL_BIN_DIR = @TCL_BIN_DIR@ TCL_SRC_DIR = @TCL_SRC_DIR@ EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR) TCLLIBPATH = $(top_builddir) TCLSH_ENV = TCL_LIBRARY=`@CYGPATH@ $(TCL_SRC_DIR)/library` PKG_ENV = LD_LIBRARY_PATH="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \ PATH="$(EXTRA_PATH):$(PATH)" \ TCLLIBPATH="$(TCLLIBPATH)" TCLSH_PROG = @TCLSH_PROG@ TCLSH = $(PKG_ENV) $(TCLSH_ENV) $(TCLSH_PROG) PKG_TCL_SOURCES = @PKG_TCL_SOURCES@ manifest.txt CONFIG_CLEAN_FILES = Makefile pkgIndex.tcl manifest.txt CLEANFILES = @CLEANFILES@ #======================================================================== # Start of user-definable TARGETS section #======================================================================== manifest.txt: manifest manifest.uuid tools/mkversion.tcl $(TCLSH) tools/mkversion.tcl > $@ doc/ooxml.html: doc/ooxml.md pandoc --standalone -f markdown -t html doc/ooxml.md \ --css main.css -o doc/ooxml.html doc/ooxml.n: doc/ooxml.md pandoc --standalone -f markdown -t man doc/ooxml.md -o doc/ooxml.n doc: doc/ooxml.html doc/ooxml.n all: manifest.txt doc/ooxml.html doc/ooxml.n install: all $(TCLSH) `@CYGPATH@ $(srcdir)/helper.tcl` cp $(PKG_TCL_SOURCES) pkgIndex.tcl $(pkglibdir) test: $(TCLSH) `@CYGPATH@ $(srcdir)/tests/all.tcl` $(TESTFLAGS) \ -load "package ifneeded ${PACKAGE_NAME} ${PACKAGE_VERSION} [list source [file join `@CYGPATH@ $(srcdir)` $(PACKAGE_NAME).tcl]]" archive: sh tools/archive.sh @PACKAGE_NAME@ @PACKAGE_VERSION@ $(PKG_TCL_SOURCES) clean: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) -rm -rf doc/ooxml.html doc/ooxml.n distclean: clean -rm -f $(CONFIG_CLEAN_FILES) -rm -rf autom4te.cache -rm -f config.cache config.log config.status .PHONY: install test clean distclean ooxml/aclocal.m4000664 000765 000024 00000000224 14607757315 014167 0ustar00alexstaff000000 000000 # # Include the TEA standard macro set # builtin(include,tclconfig/tcl.m4) # # Add here whatever m4 macros you want to define for your package # ooxml/doc/PaxHeader/.DS_Store000644 000765 000024 00000000321 14762250456 016520 xustar00alexstaff000000 000000 30 mtime=1741246766.910321407 24 SCHILY.fflags=hidden 85 LIBARCHIVE.xattr.com.apple.FinderInfo=ICAgICAgICBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 70 SCHILY.xattr.com.apple.FinderInfo= @ ooxml/doc/.DS_Store000644 000765 000024 00000014004 14762250456 014552 0ustar00alexstaff000000 000000 Bud1 -376-1$ECMA-376-1_5th_edition_december_2016Ilocblob$ECMA-376-1_5th_edition_december_2016bwspblobbplist00  ]ShowStatusBar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowSidebar  _{{1302, 615}, {1154, 703}} #/;R_klmno $ECMA-376-1_5th_edition_december_2016dsclbool$ECMA-376-1_5th_edition_december_2016vSrnlong  @ @ @ @ E DSDB ` @ @ @ooxml/doc/ooxml.md000664 000765 000024 00000051460 14722143566 014557 0ustar00alexstaff000000 000000 % ooxml(n) | ooxml user documentation # NAME ::ooxml::xl_sheets, ::ooxml::read, ::ooxml::write - Read and create ECMA-376 Office Open XML Spreadsheets (the .xlsx format) # SYNOPSIS package require ooxml ::ooxml::xl_sheets file ::ooxml::xl_read file args ::ooxml::xl_write args # DESCRIPTION The commands of this package read or create ECMA-376 Office Open XML Spreadsheets (libreoffice and Excel ".xlsx" files). The most important three are: ::ooxml::xl\_read - imports a .xlsx spreadsheet files into a Tcl array ::ooxml::xl\_write - creates spreadsheet object command ::ooxml::tablelist_to_xl - export a Tcl tablelist to a .xlsx spreadsheet During this documentation the term workbook means a whole spreadsheet with all its tables. The term worksheet means a specific table out of the worksheet it consits to. To create a spreadsheet from scratch use the *::ooxml::xl\_write* command, which returns a spreadsheet object command: set spreadsheet [::ooxml::xl_write new ?options?] The following options are currently supported: **-creator** *NAME* : *Creator* specifies the creator property of the spreadsheet. **-created** *UTC-TIMESTAMP* : *Created* specifies the creation time property of the spreadsheet. **-nodifiedby** *NAME* : *Modifiedby* specifies the modified by property of the spreadsheet. **-modified** *UTC-TIMESTAMP* : *Modified* specifies the modified property of the spreadsheet. **-application** *NAME* : *Application* specifies the application property of the spreadsheet. The created spreadsheet object commands currently supports the following methods: **numberformat** *args* : Defines an number format for the current workbook and returns an ID to refer that style. The following options are currently supported: : **-format** *FORMAT* FORMAT can be any Excel format-string : **-general** Excel general-format : **-date** Date format : **-time** Time format : **-datetime** Date/Time format : **-iso8601** Date/Time in ISO8601 notation : **-number** Integer : **-decimal** Decimal number with 2 decimal places : **-red** Color red on negative values (can be combined with number and decimal) : **-separator** Thousand separators (can be combined with number and decimal) : **-fraction** Fractions : **-scientific** Scientific numbers : **-percent** Percentage : **-text** **-string** Text : **-tag** *TAGNAME* This option gives the format a name. This name may be used instead of the returned ID. **font** *args* : Defines a font for the current workbook and returns an ID to refer that style. The following options are currently supported: : **-list** Returns the list of currently defined fonts instead of an ID. : **-name** *NAME* (default = "Calibri") : **-family** *FAMILY* (defauft = 2) : **-size** *SIZE* (default = 12) : -**color** *COLOR* See [COLOR](#color) for the valid values. : **-scheme** *SCHEME* (default = "minor") : **-bold** : **-italic** : **-underline** : **-tag** *TAGNAME* This option gives the font a name. This name may be used instead of the returned ID. **fill** *args* : Defines a fill style for the current workbook and returns an ID to refer that style. The following options are currently supported: : **-list** Returns the list of currently defined fills, in stead of FILLID. : **-patterntype** *PATTERNTYPE* (default = "none") : **-fgcolor** *COLOR* See [COLOR](#color) for the valid values. : **-bgcolor** *COLOR* See [COLOR](#color) for the valid values. : **-tag** *TAGNAME* To give the format a name. This name can also be used as FILLID. **border** *args* : Defines a border style for the current workbook and returns an ID to refer to that style. The following options are currently supported: : **-list** Returns the list of currently defined border style IDs, instead of BORDERID. : -leftstyle BORDERLINESTYLE : -rightstyle BORDERLINESTYLE : -topstyle ORDERLINESTYLE : -bottomstyle BORDERLINESTYLE : -diagonalstyle BORDERLINESTYLE See [BORDERLINESTYLE](#borderlinestyle) for the valid values. : -leftcolor COLOR : -rightcolor COLOR : -topcolor COLOR : -bottomcolor COLOR : -diagonalcolor COLOR See [COLOR](#color) for the valid values. : -diagonaldirection (up|down) The value must either *up* or *down*. : -tag TAGNAME To give the border style a name. This name can also be used as BORDERID. return BORDERID **style** *args* : Defines a style for the current workbook and returns an ID to refer to that style. The following options are currently supported: : **-list** Returns the list of currently defined border style IDs, instead of STYLEID. : -numfmt NUMFMTID : -font FONTID From method font. : -fill FILLID From method fill. : -border BORDERID From method border. : -horizontal HORIZONTAL : -vertical VERTICAL : -rotate DEGREE : -tag TAGNAME To give the format a name. This name can also be used as STYLEID. **defaultdatestyle** *STYLEID* : **worksheet** *name* : **column** *sheet* *args* : **row** *sheet* *args* : **cell** *sheet* *args* : **autofilter** *sheet* *indexFrom* *indexTo* : **freeze** *sheet* *index* : **presetstyles** : **presetsheets** : **view** *args* : **pageMargins** *sheet* *args* : This method sets the page margins for the worksheet. The currently supported arguments are: **-left** **-right** **-top** **-bottom** **-header** **-footer** : This options all expect a floating point in inch as value for the according margin. If some page margins for a worksheet are set with this method all margins for that worksheet are set, either from the options given in the method call or from the current pageMarginsDefault, if a margin was not in the method call. **pageMarginsDefault** : This method sets the page Margins of all worksheets which have not individual worksheet margin settings. The currently supported arguments are: **-left** **-right** **-top** **-bottom** **-header** **-footer** : This options all expect a floating point in inch as value for the according margin. The default margins are Margin Inch -------- ------- left 0.75 right 0.75 top 1 bottom 1 header 0.5 footer 0.5 **pageSetup** *sheet* *args* : This method sets the page setup of the worksheet. **Caveat**: If for a sheet no page setup propertiers at all are set at least some applications use defaults derivated from other sources. But if at least one page setup propertier is explicitly set with this method some other propertiers not set will get the default value from the specification, which may be another value than without any page property setting. For example if you just set only the **-orientation** of a sheet then this may also result in another page size setting (because the application page size default may be differ from the default recommended by the specification (which would in this case Letter pape). The currently supported arguments are: **-blackAndWhite** *xsd boolean* : Print black and white. Default: false **-cellComments** *(none|asDisplayed|atEnd)* : How to print cell comments. Default: none **-copies** *integer* : Number of copies to print. Default: 1 **-draft** *xsd boolean* : Print without graphics. Default: false **-errors** *(displayed|blank|dash|NA)* : Specifies how to print cell values for cells with errors. Default: displayed **-firstPageNumber** *integer* : Page number for first printed page. If no value is specified, then 'automatic' is assumed. Default: 1 **-fitToHeight** *integer* : Number of vertical pages to fit on. Default: 1 **-fitToWidth** *integer* : Number of horizontal pages to fit on. Default: 1 **-horziontalDpi** *integer* : Horizontal print resolution of the device. Default: 600 **-orientation** *(default|portrait|landscape)* : Orientation of the page. Default: default **-pageOrder** *(downThenOver|overThenDown)* : Order of printed pages. Default: downThenOver **-paperHeight** *height* : Height of custom paper as a number followed by a unit identifier (as 297mm or 11in). The specification say that when the *-paperHeight* and *-paperWidth* are specified, the application used to render shall ignore *-paperSize*. No default. **-paperSize** *paperSizeID* : Specifies the paper size to use by *paperSizeID*. When *paperSizeID* values not present in the below list are used, the behavior is implementation- defined. The specification say that when the *-paperHeight* and *-paperWidth* are specified, the application used to render shall ignore *-paperSize*. Default: 1 (which is Letter Size) The possible *paperSizeID*s and their meaning are: Paper Size ID Paper Size ------------- ------------------ 1 Letter paper (8.5 in. by 11 in.) 2 Letter small paper (8.5 in. by 11 in.) 3 Tabloid paper (11 in. by 17 in.) 4 Ledger paper (17 in. by 11 in.) 5 Legal paper (8.5 in. by 14 in.) 6 Statement paper (5.5 in. by 8.5 in.) 7 Executive paper (7.25 in. by 10.5 in.) 8 A3 paper (297 mm by 420 mm) 9 A4 paper (210 mm by 297 mm) 10 A4 small paper (210 mm by 297 mm) 11 A5 paper (148 mm by 210 mm) 12 B4 paper (250 mm by 353 mm) 13 B5 paper (176 mm by 250 mm) 14 Folio paper (8.5 in. by 13 in.) 15 Quarto paper (215 mm by 275 mm) 16 Standard paper (10 in. by 14 in.) 17 Standard paper (11 in. by 17 in.) 18 Note paper (8.5 in. by 11 in.) 19 #9 envelope (3.875 in. by 8.875 in.) 20 #10 envelope (4.125 in. by 9.5 in.) 21 #11 envelope (4.5 in. by 10.375 in.) 22 #12 envelope (4.75 in. by 11 in.) 23 #14 envelope (5 in. by 11.5 in.) 24 C paper (17 in. by 22 in.) 25 D paper (22 in. by 34 in.) 26 E paper (34 in. by 44 in.) 27 DL envelope (110 mm by 220 mm) 28 C5 envelope (162 mm by 229 mm) 29 C3 envelope (324 mm by 458 mm) 30 C4 envelope (229 mm by 324 mm) 31 C6 envelope (114 mm by 162 mm) 32 C65 envelope (114 mm by 229 mm) 33 B4 envelope (250 mm by 353 mm) 34 B5 envelope (176 mm by 250 mm) 35 B6 envelope (176 mm by 125 mm) 36 Italy envelope (110 mm by 230 mm) 37 Monarch envelope (3.875 in. by 7.5 in.). 38 6 3/4 envelope (3.625 in. by 6.5 in.) 39 US standard fanfold (14.875 in. by 11 in.) 40 German standard fanfold (8.5 in. by 12 in.) 41 German legal fanfold (8.5 in. by 13 in.) 42 ISO B4 (250 mm by 353 mm) 43 Japanese double postcard (200 mm by 148 mm) 44 Standard paper (9 in. by 11 in.) 45 Standard paper (10 in. by 11 in.) 46 Standard paper (15 in. by 11 in.) 47 Invite envelope (220 mm by 220 mm) 50 Letter extra paper (9.275 in. by 12 in.) 51 Legal extra paper (9.275 in. by 15 in.) 52 Tabloid extra paper (11.69 in. by 18 in.) 53 A4 extra paper (236 mm by 322 mm) 54 Letter transverse paper (8.275 in. by 11 in.) 55 A4 transverse paper (210 mm by 297 mm) 56 Letter extra transverse paper (9.275 in. by 12 in.) 57 SuperA/SuperA/A4 paper (227 mm by 356 mm) 58 SuperB/SuperB/A3 paper (305 mm by 487 mm) 59 Letter plus paper (8.5 in. by 12.69 in.) 60 A4 plus paper (210 mm by 330 mm) 61 A5 transverse paper (148 mm by 210 mm) 62 JIS B5 transverse paper (182 mm by 257 mm) 63 A3 extra paper (322 mm by 445 mm) 64 A5 extra paper (174 mm by 235 mm) 65 ISO B5 extra paper (201 mm by 276 mm) 66 A2 paper (420 mm by 594 mm) 67 A3 transverse paper (297 mm by 420 mm) 68 A3 extra transverse paper (322 mm by 445 mm) 69 Japanese Double Postcard (200 mm x 148 mm) 70 A6 (105 mm x 148 mm) 71 Japanese Envelope Kaku #2 72 Japanese Envelope Kaku #3 73 Japanese Envelope Chou #3 74 Japanese Envelope Chou #4 75 Letter Rotated (11in x 8 1/2 11 in) 76 A3 Rotated (420 mm x 297 mm) 77 A4 Rotated (297 mm x 210 mm) 78 A5 Rotated (210 mm x 148 mm) 79 B4 (JIS) Rotated (364 mm x 257 mm) 80 B5 (JIS) Rotated (257 mm x 182 mm) 81 Japanese Postcard Rotated (148 mm x 100 mm) 82 Double Japanese Postcard Rotated (148 mm x 200 mm) 83 A6 Rotated (148 mm x 105 mm) 84 Japanese Envelope Kaku #2 Rotated 85 Japanese Envelope Kaku #3 Rotated 86 Japanese Envelope Chou #3 Rotated 87 Japanese Envelope Chou #4 Rotated 88 B6 (JIS) (128 mm x 182 mm) 89 B6 (JIS) Rotated (182 mm x 128 mm) 90 (12 in x 11 in) 91 Japanese Envelope You #4 92 Japanese Envelope You #4 Rotated 93 PRC 16K (146 mm x 215 mm) 94 PRC 32K (97 mm x 151 mm) 95 PRC 32K(Big) (97 mm x 151 mm) 96 PRC Envelope #1 (102 mm x 165 mm) 97 PRC Envelope #2 (102 mm x 176 mm) 98 PRC Envelope #3 (125 mm x 176 mm) 99 PRC Envelope #4 (110 mm x 208 mm) 100 PRC Envelope #5 (110 mm x 220 mm) 101 PRC Envelope #6 (120 mm x 230 mm) 102 PRC Envelope #7 (160 mm x 230 mm) 103 PRC Envelope #8 (120 mm x 309 mm) 104 PRC Envelope #9 (229 mm x 324 mm) 105 PRC Envelope #10 (324 mm x 458 mm) 106 PRC 16K Rotated 107 PRC 32K Rotated 108 PRC 32K(Big) Rotated 109 PRC Envelope #1 Rotated (165 mm x 102 mm) 110 PRC Envelope #2 Rotated (176 mm x 102 mm) 111 PRC Envelope #3 Rotated (176 mm x 125 mm) 112 PRC Envelope #4 Rotated (208 mm x 110 mm) 113 PRC Envelope #5 Rotated (220 mm x 110 mm) 114 PRC Envelope #6 Rotated (230 mm x 120 mm) 115 PRC Envelope #7 Rotated (230 mm x 160 mm) 116 PRC Envelope #8 Rotated (309 mm x 120 mm) 117 PRC Envelope #9 Rotated (324 mm x 229 mm) 118 PRC Envelope #10 Rotated (458 mm x 324 mm) **-paperWide** *width* : Wide of custom paper as a number followed by a unit identifier (as 21cm or 8.5in). The specification say that when the *-paperHeight* and *-paperWidth* are specified, the application used to render shall ignore *-paperSize*. No default. **-scale** *integer* : Print scaling in percent. The rendering applicationi may respect only values ranging from 10 to 400. This setting is overridden when *-fitToWidth* and/or *-fitToHeight* are in use. Default: 100 **-useFirstPageNumber** *xsd boolean* : Use *-firstPageNumber* value for first page number, and do not auto number the pages. Default: false **-verticalDpi** *integer* : Vertical print resolution of the device. Default: 600 **write** *filename* : Writes the spreadsheet to the file *filename*. # COLOR Serveral method options expect a *COLOR* argument. There are several kind of valid values. The value may be *auto* or *none*. If not, the value may be the index number of a predefined color (an integer between 0 and 65 (including)). See the list below. If not, the value may be the name of a predefined color. Case is ignored. See the list below. If not, the value may be a 6 digit hexadecimal number, which is then used as RGB value. The list of predefined colors is: Color ID Name (A)RGB -------- --------------- -------- 0 Black 00000000 1 White 00FFFFFF 2 Red 00FF0000 3 Lime 0000FF00 4 Blue 000000FF 5 Yellow 00FFFF00 6 Fuchsia 00FF00FF 7 Aqua 0000FFFF 8 Black 00000000 9 White 00FFFFFF 10 Red 00FF0000 11 Lime 0000FF00 12 Blue 000000FF 13 Yellow 00FFFF00 14 Fuchsia 00FF00FF 15 Aqua 0000FFFF 16 Maroon 00800000 17 Green 00008000 18 Navy 00000080 19 Olive 00808000 20 Purple 00800080 21 Teal 00008080 22 Silver 00C0C0C0 23 Gray 00808080 24 Portage 009999FF 25 Lipstick 00993366 26 Cream 00FFFFCC 27 LightCyan 00CCFFFF 28 Purple 00660066 29 LightCoral 00FF8080 30 NavyBlue 000066CC 31 LavenderBlue 00CCCCFF 32 Navy 00000080 33 Fuchsia 00FF00FF 34 Yellow 00FFFF00 35 Aqua 0000FFFF 36 Purple 00800080 37 Maroon 00800000 38 Teal 00008080 39 Blue 000000FF 40 DeepSkyBlue 0000CCFF 41 LightCyan 00CCFFFF 42 BlueRomance 00CCFFCC 43 Canary 00FFFF99 44 LightSkyBlue 0099CCFF 45 CarnationPink 00FF99CC 46 Mauve 00CC99FF 47 PeachOrange 00FFCC99 48 RoyalBlue 003366FF 49 MediumTurquoise 0033CCCC 50 Citrus 0099CC00 51 TangerineYellow 00FFCC00 52 OrangePeel 00FF9900 53 SafetyOrange 00FF6600 54 Scampi 00666699 55 Nobel 00969696 56 PrussianBlue 00003366 57 Eucalyptus 00339966 58 Myrtle 00003300 59 Karaka 00333300 60 SaddleBrown 00993300 61 Lipstick 00993366 62 DarkSlateBlue 00333399 63 NightRider 00333333 64 SystemForeground n/a 65 SystemBackground n/a # BORDERLINESTYLE Serveral method options expect a *COLOR* argument. The list of possible values are: dashDot dashDotDot dashed dotted double hair medium mediumDashDot mediumDashDotDot mediumDashDotDot none slantDashDot thick thin # DEPENDENCIES Tcl >= 8.6.7 tclvfs::zip >= 1.0.4 or tcllib::zip::decode or Tcl 9 (only for xlsx reading) tdom >= 0.9.0 ooxml/doc/main.css000664 000765 000024 00000011632 14716341317 014527 0ustar00alexstaff000000 000000 @import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@300;400;500&family=Montserrat:ital,wght@0,100;0,200;0,300;1,100;1,200;1,300&family=Roboto+Condensed:ital,wght@0,300;1,300&family=Roboto+Mono:ital,wght@0,100;0,200;1,100;1,200&family=Roboto:ital,wght@0,100;0,300;0,400;1,100;1,300;1,400&display=swap'); :root { /* Fonts */ --font-primary: 'Roboto', sans-serif; --font-secondary: 'Montserrat', sans-serif; --font-tertiary: 'Comfortaa', cursive; --font-mono: 'Roboto Mono', monospace; --font-condensed: 'Roboto Condensed', monospace; /* Primary Color Palette */ --primary-color1: #00618a; --primary-color2: #70becf; --primary-color3: #bcbec0; /* Secondary Color Palette */ --secondary-color1: #414042; --secondary-color2: #bcbec0; --secondary-color3: #bcbec0; --glow: #03E9F4; } body { font-family: var(--font-primary); } h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { font-family: var(--font-condensed); color: white; background-color: var(--primary-color1); padding-left: 2rem; border-left: 0.5rem solid var(--primary-color2); font-weight: 400; line-height: 2; } p { font-family: var(--font-tertiary); color: var(--secondary-color1); } .hover-effect { transition: 0.3s; position: relative; } .hover-effect::before, .hover-effect::after { content: ''; position: relative; top: 0; opacity: 0; transition: 0.3s; } .hover-effect::before { content: '['; left: -3px; /* Position the brackets correctly */ } .hover-effect::after { content: ']'; right: -3px; /* Position the brackets correctly */ } .hover-effect:hover::before, .hover-effect:hover::after { opacity: 1; } .nav-item { font-family: var(--font-primary); text-transform: uppercase; transition: 0.5s; } .nav-item:hover { color: #fff; text-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4, 0 0 100px #03e9f4; } #searchi { } #searchb { font-family: var(--font-tertiary); text-transform: uppercase; } .btn .btn-border-color { color: var(--primary-color2); } .code-container { position: relative; } .copy-button { position: absolute; top: 30px; /* Adjust this value to move the button up/down */ right: 10px; /* Adjust this value to move the button left/right */ z-index: 1; } footer { box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.12); box-sizing: border-box; width: 100%; text-align: left; font: bold 16px sans-serif; padding: 55px 50px; margin-top: 80px; bottom: 0; color: #fff; } .footer-navigation a.webmaster { color: #fff; text-decoration: none; } .footer-navigation h3 { margin: 0; font: normal 36px Cookie, cursive; margin-bottom: 20px; color: #fff; } .footer-navigation p.links a { font-family: var(--font-primary); text-transform: uppercase; transition: 0.5s; color: #fff; text-decoration: none; font-weight: 400; } .footer-navigation a:hover { color: #fff; text-shadow: 0 0 5px var(--glow), 0 0 25px var(--glow), 0 0 50px var(--glow), 0 0 100px var(--glow); } .footer-navigation p.company-name { color: var(--secondary-color3); font-size: 14px; font-weight: normal; margin-top: 40px; } span.new-line-span { display: block; font-weight: normal; display: block; font-weight: normal; font-size: 14px; line-height: 2; } .footer-about h4 { display: block; color: #fff; font-size: 14px; font-weight: bold; margin-bottom: 20px; } .footer-about p { line-height: 20px; color: #92999f; font-size: 13px; font-weight: normal; margin: 0; } div.social-links { margin-top: 20px; color: #fff; } .social-links a { display: inline-block; width: 35px; height: 35px; cursor: pointer; background-color: #33383b; border-radius: 2px; font-size: 20px; color: #ffffff; text-align: center; line-height: 35px; margin-right: 5px; margin-bottom: 5px; } .container ul { list-style: none; /* removes the default bullets */ } .container ul li::before { content: '\F270'; /* using a checkmark for bullet points */ font-family: "bootstrap-icons"; /* ensure this matches the exact font family of your icon set */ display: inline-block; /* necessary to position the pseudo-element */ margin-right: 8px; /* space between the bullet and the list item */ color: var(--primary-color1); } /* Style.adp */ .square { width: 100px; height: 100px; margin: 10px; } #square1 { background-color: var(--primary-color1); } #square2 { background-color: var(--primary-color2); } #square3 { background-color: var(--primary-color3); } #square4 { background-color: var(--secondary-color1); } #square5 { background-color: var(--secondary-color2); } #square6 { background-color: var(--secondary-color3); } #pritext { font-family: var(--font-primary); } #sectext { font-family: var(--font-secondary); } #tertext { font-family: var(--font-tertiary); } #monotext { font-family: var(--font-mono); } #condtext { font-family: var(--font-condensed); } ooxml/examples/PaxHeader/xlsx-writeRowsIndex.tcl000775 000765 000024 00000000210 14762274545 022612 xustar00alexstaff000000 000000 30 mtime=1741257061.156745854 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-writeRowsIndex.tcl000775 000765 000024 00000002400 14762274545 020644 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } source array.tcl set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] if {[set sheet [$spreadsheet worksheet {Tabelle 1}]] > -1} { set center [$spreadsheet style -horizontal center] set date [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] set decimal [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal -separator]] set text [$spreadsheet style -numfmt [$spreadsheet numberformat -string]] $spreadsheet column $sheet $spreadsheet column $sheet -width 30 $spreadsheet column $sheet $spreadsheet column $sheet $spreadsheet column $sheet -style $decimal $spreadsheet column $sheet -style $date -width [::ooxml::CalcColumnWidth 16] $spreadsheet column $sheet $spreadsheet autofilter $sheet 0,0 0,6 $spreadsheet freeze $sheet 1,2 foreach {name value} [array get data] { lassign [split $name ,] row col switch -- $col { 2 { $spreadsheet cell $sheet $value -index $name -string } default { $spreadsheet cell $sheet $value -index $name -globalstyle } } } } $spreadsheet write writeRowIndex.xlsx Index.xlsx $spreadsheet destroy ooxml/examples/original_excel.xlsx000664 000765 000024 00000025353 14607757315 020063 0ustar00alexstaff000000 000000 PK!,lok[Content_Types].xml (N0 HC+jq@a&1 $-M8fcBBQv&]c-Ζl\XV:deU8 %j{-?pF`㟂e<0H{$OL!ƽIϹ[ 4yM-2pNoy msOBӐv5ɑC{(Pbo P!q=8ck٣>bMr5 ?R? kj4=;ё 2D&V['e͚BX͖5?Cǩ8Y_Fc 6v9.rj( z*ϳ1oȳ?PK!9~xl/workbook.xmlSn0 ?7%EnX.C0YX$z<?Zbt"E=qu}r ɔ3+⊳EȯVǂ)5K!8 J~MG4T8ͅFX2(gN/7A,>L3:`}<+Bʁr L57[,gV2 _RlPmn[c*R.(X ,m{LYM&bZ %76A*}"U_3F}ɗB+*TUfmIA<&l+չ =WAdo"jӣvY̧1 i\x4U >ǽ`u*r~-ye>K81I֏Ȧw^ ¦xN+~?.f4z݆@&lG PK!>6xxl/sharedStrings.xml|UR0wﰣ&RBn03LGX KcǾEߤOR9.tFr,}ohTHx@cVc P:j9f_.O;Cʸ lM'oߌ%pghuE6ͱණWܗ[m N,#23#R!~FAKEc7`P*Y dddDʅ'G!%,xIQKGW+`|JQ"l}nn8Q(ww>B4`Qt^\l`PC!4{}aMMGyF!MM0pzi؟Ey.aG 9Y=6eC߇+OhЃ (`$4~9MVN:@v+fʙKܢyN8( (K>ִέ9"Hv`%j`E WZTδd7^%ɓ?cvt-'~"/򆾓B{!4}dѳUan 2-RmtQQXrgnJV>m̓k$5R, J]LV,03{oߗA} qj $ƎFGg]cMPK!pxl/theme/theme1.xmlYo6@N4 c[6H=-D6u.vaVvl述GRŘW[92{QW !)ZAr-@$ yD.H*E񌴂1߻TBR>k$Jk 2e,/dnEB$Mbb()3Ґ\$Y>eE^ռCb^]#Xv@(}rİT_~uDL͡_AWD{fOM͒05vng8 AS+KgRoOxV@qw֬5\|Ҍ̫vZb}lWjˍEo@ߜ7β7 _.7\%f{3h^^BWR+SDC]z!ԼXK.z@͐dCNb^#.rfId(hZ9{WϟWϟ=|vGhy97pW _~ٟ_x_O~s?2h*ы/ɋ>*OS"mrvx ø8E?ԡ cõk{x}u7#E=;LR9ks5MWQ7*n}9rtlI#6Ù1ɈB#ģ}JnPpɇ ݧ$}:piJtOgpc{͙OM"!!0'1u0U&$8ͽ2,b?{msoq7Co%O/wi4 f$VG;nib) <|&Yg5OtLO6Ya)0lNa8߫бEń_PK!"++ xl/styles.xmlY_o6@(ÞHr,.hIu0eEOZ^yIv$%[Iu)ww8|d LtdyH򈦳.{N#𔌬ɭb9!D0IK34/2\Nbrݎ0M-0`> grNiBJaY7gxKC:Ya4xcq c ҂i&r"#gU]HyV:m uHv=u]r?'^#LPFg;g_wN_3Q4AA0.ǟr*9.l: IxOnۥtd)>NyA \quxX_N/ÈOq" T33!BYbnXM,c]ٽΙo׺/ox:W],= (# M-ٿ,|F҄PK!3rgxl/worksheets/sheet1.xmlYYH ~_iC9n[ڕF3{SAB2q ?'缒vwOqzcZ:qI[_+ )'u; U;v&-/MdT|ܱ~Vz Im.CMڴ:TvQmgXjRpU|MXң\XXԎ5˝/{QV|Vk*!CÄDŽEmWXv u+^R60C3v}mܵґv|N%jy3MSŠ2A>*Ώ08O E6LW/)OR}K+QhǤkװ"sSݸZ)jf)E[0ߠU-V>(VA&]ZWLU;]Y~FOpq ;aO-[O w} 1^38hݐj045DϙBi fgBpt.҃>dą{:)jC^0JmjʒАy:+u$| g4?axdUVI[n(ԺdjkKmR&mJ#fũOf:*潊HE7ԭ!XTIڤMZi$]?+`u6I ]ѥO\P.aD Ex[qaxjjy);OO ~=Axx(ɝ-v)p=pc(\]YwTtO(X@m [PK!]`_{docProps/core.xml (AN0DH!>qFI* $@,HlvII r6U %sD BsZ(JN+%!G{hVeLL7JqlIҦLhN1l5wH/YcM+]N(zk jbu`j@ p{;ٜɽdl&jF] CW5TduW!dE[|_,3ʪwe)s[&ÿXGMbGit}Z"4$$L!x6ˏ6zQ8!i<_PK!Zmƹxl/calcChain.xml< 1D{{{g!"I{[M  f1fIJ,l`FPľ,JťdCnwɟ@hm=! e%ͣZDY+EQ x`Wu@~T%ZPK!eLt!docProps/app.xml (n0 n(@VѦzXI{gd:&KɞolɟܷuY:+v%:Y"pXLR}"Wd0lR"[H,>@9;hEG(. ]Y8qgM+{9 Uh|Kugt@G>5^b&3c4tPT5X\PׂE׷-:#K_^9g[H؃hQdmHUܢOD]2|W!HS΍!OH`ϧ=\[ b)p<ҷ! q} |YiQXw8.Xy&B[_wRoPK-!,lok[Content_Types].xmlPK-!U0#L _rels/.relsPK-!?xl/_rels/workbook.xml.relsPK-!9~ xl/workbook.xmlPK-!>6x/ xl/sharedStrings.xmlPK-!p xl/theme/theme1.xmlPK-!"++ xl/styles.xmlPK-!3rgPxl/worksheets/sheet1.xmlPK-!]`_{!docProps/core.xmlPK-!Zmƹ$xl/calcChain.xmlPK-!eLt!G%docProps/app.xmlPK (ooxml/examples/PaxHeader/xlsx-formula.tcl000775 000765 000024 00000000207 14762273715 021266 xustar00alexstaff000000 000000 29 mtime=1741256653.22943409 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-formula.tcl000775 000765 000024 00000002710 14762273715 017316 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } source array.tcl set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] if {[set sheet [$spreadsheet worksheet {Tabelle 1}]] > -1} { # single formula autoincrement column index $spreadsheet row $sheet $spreadsheet cell $sheet 3 $spreadsheet cell $sheet 5 $spreadsheet cell $sheet {} -formula A1+B1 # vertical shared formula C3 to C5 $spreadsheet cell $sheet 1 -index 2,0 $spreadsheet cell $sheet 2 -index 2,1 $spreadsheet cell $sheet {} -index 2,2 -formula {A3+B3} -formularef C3:C5 -formulaidx 0 $spreadsheet cell $sheet 2 -index 3,0 $spreadsheet cell $sheet 3 -index 3,1 $spreadsheet cell $sheet {} -index 3,2 -formulaidx 0 $spreadsheet cell $sheet 3 -index A5 $spreadsheet cell $sheet 4 -index B5 $spreadsheet cell $sheet {} -index C5 -formulaidx 0 # horizontal shared formula A9 to C9 $spreadsheet cell $sheet 1 -index 6,0 $spreadsheet cell $sheet 2 -index 7,0 $spreadsheet cell $sheet {} -index A9 -formula {A7+A8} -formularef 8,0:8,2 -formulaidx 1 $spreadsheet cell $sheet 2 -index 6,1 $spreadsheet cell $sheet 3 -index 7,1 $spreadsheet cell $sheet {} -index 8,1 -formulaidx 1 $spreadsheet cell $sheet 3 -index C7 $spreadsheet cell $sheet 4 -index C8 $spreadsheet cell $sheet {} -index C9 -formulaidx 1 } $spreadsheet write formula.xlsx $spreadsheet destroy ooxml/examples/PaxHeader/.DS_Store000644 000765 000024 00000000321 14762773452 017577 xustar00alexstaff000000 000000 30 mtime=1741420330.774908667 24 SCHILY.fflags=hidden 85 LIBARCHIVE.xattr.com.apple.FinderInfo=ICAgICAgICBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 70 SCHILY.xattr.com.apple.FinderInfo= @ ooxml/examples/.DS_Store000644 000765 000024 00000014004 14762773452 015631 0ustar00alexstaff000000 000000 Bud1mpXxlg1ScompXxmoDDblobU9¼AxmodDblobU9¼Axph1Scomp  @ @ @ @ EDSDB ` @ @ @ooxml/examples/PaxHeader/printArea.xlsx000664 000765 000024 00000000463 14762352506 020763 xustar00alexstaff000000 000000 29 mtime=1741280582.21773638 82 LIBARCHIVE.xattr.com.apple.quarantine=MDA4Mjs2N2M5NGE1OTtNaWNyb3NvZnQgRXhjZWw7 68 SCHILY.xattr.com.apple.quarantine=0082;67c94a59;Microsoft Excel; 69 LIBARCHIVE.xattr.com.apple.lastuseddate#PS=uWrJZwAAAAAEWmYiAAAAAA 59 SCHILY.xattr.com.apple.lastuseddate#PS=jgZf" ooxml/examples/printArea.xlsx000664 000765 000024 00000017157 14762352506 017022 0ustar00alexstaff000000 000000 PKafZh7: _rels/.relsN0 _BxrPKafZbtL[Content_Types].xmln0E*6Ъ*>-RX%PN EUMxsD3.r"}#Xᤲ|L_{2] k^+Ҥ#u,Vj Ofs13`^ gTփOPN 7\qע*½JeV^];K++(*sOl[^DP c+;\:71\]+҉A >HFӼRÕ=#KAvr$ްy!\xsiE15s{ 8ZwWORh!h}}6#z PKafZgցWdocProps/app.xmlMO0+,ߋKZ1BE+Z)jIcؖ=D_TM.3~kALֻ_^9g|i.V?6-$F .eF +!Ҏ2FrNnymX!YAqwEKozX)yBcFIa3؆?C]6HF{5b1U&#=m[mcRU}dɾC==b;veg0'_$iԶK 8/#爅Ҧꈟ/0=<:G`׾ 텒ֽP[p\yP济P&ǵyGŦ_<|Lp+Nex7G_ӍPKafZ)17"WdocProps/core.xmlAO ~{ m4gvro:bn^mݦ;y"{?{nU}u%J"мR%z[{4n n(o-ր\괣ܔh㽡;\ukjkld5 V`^шJG C w8MR|b=X Ñ:9]%]>Oè3U[`lFLAς~ s~ vؿyqp~csTe$I2$$蟿? jsT?PKafZgOxl/_rels/workbook.xml.relsj0} Z%DΥrm2%U m㓘v;l}EClݙV {ҝ#g !542ěA(}˝T"/|8L]]'6M٪MQ?F 1T?( 6L93LY H,gY` q/ 'y6_e5%ct8TZz߂;`L1ab~PKafZ5/xl/sharedStrings.xmluAN0E":ԱgJ'Di#5IS_Ug~6R|9Ӹ+. ?c?vco"VaWdL8Ѕtc}no wp~.~,tRǔ6oJ+טmL~DQv+m_rQRm)c]%о%1ʹ=`) AB# /BsC-yBH3QS(]=}q٥M'7+*\i tCt@[S8Vt.*9] ﺶvKt8B[זx(vĻRМ8rr$<<$<p]`;T:rĻ-hum&ڲO`]&3iPKafZA{,2 xl/styles.xmlMo0 vU%GD|4IK!%{15_-iPh~T 'w{QIi 1!z^!j٥\X/?x!l0ܨ4Nqu+U1`pA"c:нRq橇etg"o*SH/Cybj^#eES6,魛1 "顛 ]F*avnW鏹bo=>u5̷?4,dgZa7Fύg]Jd.C xvb޿>5PKafZ3Axl/theme/theme1.xmlYKo6Sl+u:E햦 CDKl(Q $ qaݰˀvh]O aI=`~8:$BR-jB$Om_iY7?TH"5ܶB5ۖ,cy'$gC."`*D̮j+vilGmGlIZp1L<&LNa'cebֶ@ϏɱRU>~.Z@OAWN7Wm9y\_:sft&<5P>ݭfoW;Z7U[in+vW*xw_4 2̡x)!Cn-& 0EZvZk~EYp1R .T^#X{/yrn)'hG B^g',f<'! q\ p6F B'Ȃu Q%.+*5wr4Vϗ}d j ָfœ45KsOfkބA8}ysѐ(?{`"(>1,k9M\J\ksN竉:j[nݵ5# ɴ`mSgūrj"+"!&aN=Mf1LӢrE-ВxjtZ<#E^] z7N_LvHj1֦̒bóqC6Գ~AShf.O~vs]\`hBPR/`d^"U s+9GP NUy3oFE)ՕI; ջopM Gd٠٦yg*yͯ5}m+X}3ـ5quuw3&p@4n*<6=]>*yxU_8[q)Z<;jn,p.lktW%jkl6_<ٛp|E&0;"3xq1d2o #&-Żd< G?{|7^6&,M$M\RLx%qv31`S9>r"KOM\fwY- LS)ȱ; מPKafZݙxl/workbook.xmlMo0 `E04ۀ\z-TÐ&?Sw0bG$I+ KkjRJJTw>|ͻѺãrkڇ0Tyу~e0<래A+'4L0lI_5p8P<`ͺ > ߹%ښ~D(Ut4ymrqgcl)NnμKF4bsc޽."g/:NÙOboQ28]%p6?B/b.MuP u927B' q ᤌ^4akv&:7~>$Ylbf35GMj1S˩֢O]T<4.ֈ9-F PKafZxl/worksheets/sheet1.xmlKo F+q]IbQ55F1~ґ\> lЉk#Th2ňL2 ҳSsn&õ݆j.@J%PꊘNsZ dCtA$-$lW2TY w%o%DZ55MI)A^4¾ט(IR0*v~8oMք2$ۼTt 8O '/i^f!<1!gQ{}Rdxڷl?5S÷+ [+#ƾw.¯){MB$-vgўQ_Qn.%=6UsQ~O۬-7  xRKT3#h4Pd7.\D>z0΃ 0vCCBCp6Μ( =o\OCp>Νyh6 ua x 0qI8}x :q'FePwKIϠ tkB4zo-)AIjl*;i1L IH*Z|IXd@Y wxCյ5MIl^4¼ טxFo` 4fbg;.oEV2$[T-(oxD+7)^f1^?1!gQ{C_Vr˔{gőp Ʌɿĺ(8ЅЃ džptx0xօ$0`h g^ ].~.7lƃ CAĹ17*jrU ;[]ݥ0 ðKs->pPKafZOxl/worksheets/sheet4.xmlKo F+؉MZM#FXmkI?i<@:Rws|A'6do2 _397ַ:õ1݆j.@[KJP;UѝɆH*Z|Iبd@Y wxCյ5MIl^4¼ טhNo` 4fbW;noMք2$ۼT-(oxD;蛌/3mLt-Y;cԷ{p'/E})}]=| Qڞ=ĂؘpEUeo)v\3P6LF"Ѓ WCCĹ37*jrWKZ]nebڃ1 am \:oPKafZh7: _rels/.relsPKafZbtL [Content_Types].xmlPKafZgցW docProps/app.xmlPKafZ)17"W 3docProps/core.xmlPKafZgO xl/_rels/workbook.xml.relsPKafZ5/ xl/sharedStrings.xmlPKafZA{,2 sxl/styles.xmlPKafZ3A B xl/theme/theme1.xmlPKafZݙ xl/workbook.xmlPKafZ Jxl/worksheets/sheet1.xmlPKafZ wxl/worksheets/sheet2.xmlPKafZF) xl/worksheets/sheet3.xmlPKafZO xl/worksheets/sheet4.xmlPK Rooxml/examples/PaxHeader/xlsx-aLotOfFormats.tcl000775 000765 000024 00000000210 14762274033 022325 xustar00alexstaff000000 000000 30 mtime=1741256731.524818387 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-aLotOfFormats.tcl000775 000765 000024 00000027246 14762274033 020376 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] if {[set sheet [$spreadsheet worksheet {Blatt 1}]] > -1} { set bold [$spreadsheet style -font [$spreadsheet font -bold]] set italic [$spreadsheet style -font [$spreadsheet font -italic]] set underline [$spreadsheet style -font [$spreadsheet font -underline]] set red [$spreadsheet style -font [$spreadsheet font -color Red]] set font9 [$spreadsheet style -font [$spreadsheet font -size 9]] set font18 [$spreadsheet style -font [$spreadsheet font -size 18]] set rotate90 [$spreadsheet style -rotate 90 -horizontal center] set rotate45 [$spreadsheet style -rotate 45] set left [$spreadsheet style -horizontal left] set center [$spreadsheet style -horizontal center] set right [$spreadsheet style -horizontal right] set top [$spreadsheet style -vertical top] set vcenter [$spreadsheet style -vertical center] set bottom [$spreadsheet style -vertical bottom] set hvcenter [$spreadsheet style -horizontal center -vertical center] set yellow [$spreadsheet style -fill [$spreadsheet fill -fgcolor FFFFFF00 -bgcolor 64 -patterntype solid]] set bLeft [$spreadsheet style -border [$spreadsheet border -leftstyle thin]] set bBottom [$spreadsheet style -border [$spreadsheet border -bottomstyle thin]] set bBottom2 [$spreadsheet style -border [$spreadsheet border -bottomstyle double]] set bBottomB [$spreadsheet style -border [$spreadsheet border -bottomstyle medium]] set bBottomD [$spreadsheet style -border [$spreadsheet border -bottomstyle dashed]] set bDiagonal [$spreadsheet style -border [$spreadsheet border -diagonalstyle medium -diagonaldirection up]] set dec2 [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal]] set dec2t [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal -separator]] set dec3 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {#,##0.000}]] set dec3t [$spreadsheet style -numfmt [$spreadsheet numberformat -format {#,##0.000_ ;[Red]\-#,##0.000\ }]] set currency [$spreadsheet style -numfmt [$spreadsheet numberformat -format {#,##0.00\ "€"}]] set iso8601 [$spreadsheet style -numfmt [$spreadsheet numberformat -iso8601]] set date [$spreadsheet style -numfmt [$spreadsheet numberformat -date]] set date2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {[$-F800]dddd\,\ mmmm\ dd\,\ yyyy}]] set date3 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {[$-407]d/\ mmmm\ yyyy;@}]] set date4 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {d/m/yy\ h:mm;@}]] set time [$spreadsheet style -numfmt [$spreadsheet numberformat -time]] set time2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {[$-F400]h:mm:ss\ AM/PM}]] set percent [$spreadsheet style -numfmt [$spreadsheet numberformat -percent]] set percent2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {0.00%}]] set scientific [$spreadsheet style -numfmt [$spreadsheet numberformat -scientific]] set fraction [$spreadsheet style -numfmt [$spreadsheet numberformat -fraction]] set fraction2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {# ??/??}]] set text [$spreadsheet style -numfmt [$spreadsheet numberformat -string]] set wrap [$spreadsheet style -wrap] $spreadsheet column $sheet -index 0 -width 17.33203125 -bestfit $spreadsheet column $sheet -index 1 -width 20.5 -bestfit $spreadsheet column $sheet -index 4 -width 31.1640625 -bestfit $spreadsheet column $sheet -index 7 -width 11.1640625 -bestfit ;# -style 19 $spreadsheet column $sheet -index 8 ;# -style 15 $spreadsheet cell $sheet Standard -index 0,0 -string $spreadsheet cell $sheet 3.1415 -index 0,1 $spreadsheet cell $sheet 1 -index 0,8 ;# -style 15 $spreadsheet cell $sheet Standard -index 1,0 -string $spreadsheet cell $sheet Text -index 1,1 -string $spreadsheet cell $sheet {Zahl 2} -index 2,0 -string $spreadsheet cell $sheet 3.1415 -index 2,1 -style $dec2 $spreadsheet cell $sheet 1 -index 2,2 $spreadsheet cell $sheet 2 -index 2,3 $spreadsheet cell $sheet 0.00 -index 2,4 -string ;# -style 15 $spreadsheet cell $sheet {Zahl 2 T} -index 3,0 -string $spreadsheet cell $sheet 3.1415 -index 3,1 -style $dec2t $spreadsheet cell $sheet 2 -index 3,2 $spreadsheet cell $sheet 4 -index 3,3 $spreadsheet cell $sheet #,##0.00 -index 3,4 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 3,7 -style $date4 $spreadsheet cell $sheet {Zahl 3} -index 4,0 -string $spreadsheet cell $sheet 3.1415 -index 4,1 -style $dec3 $spreadsheet cell $sheet 17 -index 4,2 $spreadsheet cell $sheet 174 -index 4,3 $spreadsheet cell $sheet #,##0.000 -index 4,4 -string $spreadsheet cell $sheet {Zahl 3 C} -index 5,0 -string $spreadsheet cell $sheet -3.1415 -index 5,1 -style $dec3t $spreadsheet cell $sheet 16 -index 5,2 $spreadsheet cell $sheet 173 -index 5,3 $spreadsheet cell $sheet {#,##0.000_ ;[Red]\-#,##0.000\ } -index 5,4 -string $spreadsheet cell $sheet Währung -index 6,0 -string $spreadsheet cell $sheet 3.1415 -index 6,1 -style $currency $spreadsheet cell $sheet 3 -index 6,2 $spreadsheet cell $sheet 166 -index 6,3 $spreadsheet cell $sheet {#,##0.00\ "€"} -index 6,4 -string $spreadsheet cell $sheet tt.mm.jj -index 7,0 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 7,1 -style $date $spreadsheet cell $sheet 4 -index 7,2 $spreadsheet cell $sheet 14 -index 7,3 $spreadsheet cell $sheet mm-dd-yy -index 7,4 -string $spreadsheet cell $sheet {tttt, t.mmmm.jj} -index 8,0 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 8,1 -style $date2 $spreadsheet cell $sheet 5 -index 8,2 $spreadsheet cell $sheet 167 -index 8,3 $spreadsheet cell $sheet {[$-F800]dddd\,\ mmmm\ dd\,\ yyyy} -index 8,4 -string $spreadsheet cell $sheet t.mmmm.jjjj -index 9,0 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 9,1 -style $date3 $spreadsheet cell $sheet 6 -index 9,2 $spreadsheet cell $sheet 168 -index 9,3 $spreadsheet cell $sheet {[$-407]d/\ mmmm\ yyyy;@} -index 9,4 -string $spreadsheet cell $sheet hh:mm:ss -index 10,0 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 10,1 -style $time2 $spreadsheet cell $sheet 7 -index 10,2 $spreadsheet cell $sheet 169 -index 10,3 $spreadsheet cell $sheet {[$-F400]h:mm:ss\ AM/PM} -index 10,4 -string $spreadsheet cell $sheet hh:mm -index 11,0 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 11,1 -style $time $spreadsheet cell $sheet 8 -index 11,2 $spreadsheet cell $sheet 170 -index 11,3 $spreadsheet cell $sheet {h:mm;@} -index 11,4 -string $spreadsheet cell $sheet {jjjj-mm-tt hh:mm:ss} -index 12,0 -string $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 12,1 -style $iso8601 $spreadsheet cell $sheet 9 -index 12,2 $spreadsheet cell $sheet 171 -index 12,3 $spreadsheet cell $sheet {yyyy\-mm\-dd\ hh:mm:ss;@} -index 12,4 -string $spreadsheet cell $sheet {Prozent 2} -index 13,0 -string $spreadsheet cell $sheet 3.1415 -index 13,1 -style $percent2 $spreadsheet cell $sheet 10 -index 13,2 $spreadsheet cell $sheet 10 -index 13,3 $spreadsheet cell $sheet 0.00% -index 13,4 -string $spreadsheet cell $sheet {Bruch 1} -index 14,0 -string $spreadsheet cell $sheet 3.1415 -index 14,1 -style $fraction $spreadsheet cell $sheet 12 -index 14,2 $spreadsheet cell $sheet 12 -index 14,3 $spreadsheet cell $sheet {# ?/?} -index 14,4 -string $spreadsheet cell $sheet {Bruch 2} -index 15,0 -string $spreadsheet cell $sheet 3.1415 -index 15,1 -style $fraction2 $spreadsheet cell $sheet 13 -index 15,2 $spreadsheet cell $sheet 13 -index 15,3 $spreadsheet cell $sheet {# ??/??} -index 15,4 -string $spreadsheet cell $sheet {Wissenschaftl. 2} -index 16,0 -string $spreadsheet cell $sheet 3.1415 -index 16,1 -style $scientific $spreadsheet cell $sheet 14 -index 16,2 $spreadsheet cell $sheet 11 -index 16,3 $spreadsheet cell $sheet 0.00E+00 -index 16,4 -string $spreadsheet cell $sheet Text -index 17,0 -string $spreadsheet cell $sheet 3,1415 -index 17,1 -string -style $text $spreadsheet cell $sheet 15 -index 17,2 $spreadsheet cell $sheet 49 -index 17,3 $spreadsheet cell $sheet @ -index 17,4 -string $spreadsheet cell $sheet {Filter A} -index 19,5 -string ;# -style 19 $spreadsheet cell $sheet {Filter B} -index 19,6 -string ;# -style 15 $spreadsheet cell $sheet unten -index 20,0 -string $spreadsheet cell $sheet {} -index 20,1 -style $bBottom $spreadsheet cell $sheet links -index 21,0 -string $spreadsheet cell $sheet {} -index 21,1 -style $bLeft $spreadsheet cell $sheet fett -index 21,4 -string -style $bold $spreadsheet cell $sheet {unten doppelt} -index 22,0 -string $spreadsheet cell $sheet {} -index 22,1 -style $bBottom2 $spreadsheet cell $sheet kursiv -index 22,4 -string -style $italic $spreadsheet cell $sheet {unten mittel} -index 23,0 -string $spreadsheet cell $sheet {} -index 23,1 -style $bBottomB $spreadsheet cell $sheet unterstrichen -index 23,4 -string -style $underline $spreadsheet cell $sheet {diagonal mittel} -index 24,0 -string $spreadsheet cell $sheet {} -index 24,1 -style $bDiagonal $spreadsheet cell $sheet {unten gestrichelt} -index 25,0 -string $spreadsheet cell $sheet {} -index 25,1 -style $bBottomD $spreadsheet cell $sheet {vorne rot} -index 27,0 -string $spreadsheet cell $sheet rot -index 27,1 -string -style $red $spreadsheet cell $sheet {hinten gelb} -index 28,0 -string $spreadsheet cell $sheet gelb -index 28,1 -string -style $yellow $spreadsheet cell $sheet links -index 30,0 -string $spreadsheet cell $sheet links -index 30,1 -string -style $left $spreadsheet cell $sheet mitte -index 31,0 -string $spreadsheet cell $sheet mitte -index 31,1 -string -style $center $spreadsheet cell $sheet rechts -index 32,0 -string $spreadsheet cell $sheet rechts -index 32,1 -string -style $right $spreadsheet cell $sheet oben -index 33,0 -string $spreadsheet cell $sheet oben -index 33,1 -string -style $top $spreadsheet cell $sheet mitte -index 34,0 -string $spreadsheet cell $sheet mitte -index 34,1 -string -style $vcenter $spreadsheet cell $sheet {Calibri 9} -index 34,4 -string -style $font9 $spreadsheet cell $sheet unten -index 35,0 -string $spreadsheet cell $sheet unten -index 35,1 -string -style $bottom $spreadsheet cell $sheet {Text 90} -index 38,0 -string -style $rotate90 $spreadsheet cell $sheet {Text 45} -index 38,1 -string -style $rotate45 $spreadsheet cell $sheet {Calibri 18} -index 38,4 -string -style $font18 $spreadsheet cell $sheet {12 Zellen} -index 39,3 -string -style $hvcenter $spreadsheet cell $sheet {3 Spalten} -index 40,0 -string $spreadsheet cell $sheet {3 Zeilen} -index 41,1 -string $spreadsheet cell $sheet {this text will be automatically wrapped by excel} -index H27 -style $wrap $spreadsheet cell $sheet a -index F21 -style $center $spreadsheet cell $sheet a -index F22 -style $center $spreadsheet cell $sheet b -index F23 -style $center $spreadsheet cell $sheet 1 -index G21 -style $center $spreadsheet cell $sheet 2 -index G22 -style $center $spreadsheet cell $sheet 2 -index G23 -style $center $spreadsheet row $sheet -index 10 $spreadsheet cell $sheet 3 -index G $spreadsheet cell $sheet 5 $spreadsheet cell $sheet {} -formula G11+H11 $spreadsheet freeze $sheet 20,5 $spreadsheet autofilter $sheet 19,5 19,6 $spreadsheet rowheight $sheet 33 20 $spreadsheet rowheight $sheet 34 20 $spreadsheet rowheight $sheet 35 20 $spreadsheet merge $sheet 40,0 40,2 $spreadsheet merge $sheet 41,1 43,1 $spreadsheet merge $sheet 39,3 42,5 } $spreadsheet write aLotOfFormats.xlsx $spreadsheet destroy ooxml/examples/PaxHeader/xlsx-defaultDateStyle.tcl000775 000765 000024 00000000210 14762273712 023053 xustar00alexstaff000000 000000 30 mtime=1741256650.494593495 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-defaultDateStyle.tcl000775 000765 000024 00000001041 14762273712 021105 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] if {[set sheet [$spreadsheet worksheet {Tabelle 1}]] > -1} { set date [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] $spreadsheet defaultdatestyle $date # 2018-03-02 17:39 -> 43161.73542 $spreadsheet cell $sheet "2018-03-02 17:39" -index 0,0 } $spreadsheet write defaultDateStyle.xlsx $spreadsheet destroy ooxml/examples/xlsx-printArea.tcl000775 000765 000024 00000001604 14762267223 017574 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } set spreadsheet [::ooxml::xl_write new -creator {Creator Name}] for {set s 1} {$s <= 4} {incr s} { if {[set sheet [$spreadsheet worksheet "Sheet$s"]] > -1} { for {set r 1} {$r < 6} {incr r} { $spreadsheet row $sheet for {set c 1} {$c < 6} {incr c} { $spreadsheet cell $sheet $s,$c,$r } } switch -- $s { 1 { $spreadsheet printarea $sheet A1 C3 } 2 { #$spreadsheet printarea $sheet B2 C3 $spreadsheet printarea $sheet 1,1 2,2 } 4 { $spreadsheet printarea $sheet A3 A4 } } } } $spreadsheet write printArea.xlsx $spreadsheet destroyooxml/examples/PaxHeader/xlsx-hyperlinksTooltips.tcl000775 000765 000024 00000000210 14762274333 023536 xustar00alexstaff000000 000000 30 mtime=1741256923.274180186 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-hyperlinksTooltips.tcl000775 000765 000024 00000001341 14762274333 021573 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } source array.tcl set spreadsheet [::ooxml::xl_write new -creator {Steve Landers}] if {[set sheet [$spreadsheet worksheet {Table 1}]] > -1} { $spreadsheet row $sheet $spreadsheet cell $sheet {} -hyperlink {https://fossil.sowaswie.de/ooxml/timeline} $spreadsheet row $sheet $spreadsheet cell $sheet {ooXML Home} -hyperlink {https://fossil.sowaswie.de/ooxml/} $spreadsheet row $sheet $spreadsheet cell $sheet {check tooltip} -hyperlink {https://fossil.sowaswie.de/ooxml/wiki?name=man-page} -tooltip {ooXML Manual Page} } $spreadsheet write hyperlinksTooltips.xlsx $spreadsheet destroy ooxml/examples/array.tcl000664 000765 000024 00000002574 14607757315 016001 0ustar00alexstaff000000 000000 array set data { 0,0 item 0,1 {article description} 0,2 {order number} 0,3 supplier 0,4 price 0,5 date 0,6 quantity 1,0 9719 1,1 tube 1,2 {4915 500 0828} 1,3 STIHL 1,4 38.19 1,5 {2017-07-15 10:59:57} 1,6 0 2,0 9718 2,1 {tightrope 6x50m} 2,2 300527 2,3 Teupen 2,4 268.07 2,5 {2017-05-15 00:00:00} 2,6 0 3,0 9717 3,1 {tightrope 6x35m} 3,2 3020/0011 3,3 Teupen 3,4 229.41 3,5 {2017-05-15 00:00:00} 3,6 0 4,0 9716 4,1 {tire 4,80/4,00-8/4PR groove} 4,2 1-337 4,3 Ratioparts 4,4 18.239999999999998 4,5 {2017-03-16 00:00:00} 4,6 1 5,0 9715 5,1 {Keiltasche Ochsenkopf} 5,2 177-368 5,3 Ratioparts 5,4 17.14 5,5 {2017-06-13 11:20:50} 5,6 0 6,0 9231 6,1 {v-belt mower 12,7x2096} 6,2 57270172 6,3 Fricke 6,4 39.5 6,5 {2017-02-18 08:54:54} 6,6 0 7,0 9714 7,1 {TIGER refill pack 30x3,3 mm sticks} 7,2 855-10 7,3 Tiger 7,4 9.9 8,0 9383 8,1 {TIGER gap brush big (36 threads) bis 30 ccm, NW 12,0 cm, 400 g, 3,3 mm} 8,2 TIG856 8,3 Tiger 8,4 79.900000000000006 8,5 {2017-03-16 00:00:00} 8,6 7 9,0 9712 9,1 {TIGER gap brush big NW 12 cm, ab 30ccm, nylon thread mit 30x3,3 mm sticks} 9,2 856TIG 9,3 Tiger 9,4 79.900000000000006 9,5 {2018-01-20 00:00:00} 9,6 -2 10,0 9711 10,1 {carburettor Walbro WT-194} 10,2 LA81801 10,3 Lagros 10,4 62.1 10,5 {2017-03-29 00:00:00} 10,6 0 } ooxml/examples/PaxHeader/xlsx-searchAndReplace.tcl000775 000765 000024 00000000210 14762274330 022771 xustar00alexstaff000000 000000 30 mtime=1741256920.466158319 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-searchAndReplace.tcl000775 000765 000024 00000006471 14762274330 021037 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } array set workbook [ooxml::xl_read form8.xlsx] set data(NAME) {Erika Mustermann} set data(ANSCHRIFT) {Heidestrasse 17} set data(PLZORT) {51147 Köln} set data(positionen) 3 set data(0,BEZEICHUNG) {Kopierpapier 80g 500 Blatt} set data(0,MENGE) 5 set data(1,BEZEICHUNG) {Ordner A4 breit} set data(1,MENGE) 1 set data(2,BEZEICHUNG) {Haftnotizen 5x5cm 40 Blatt} set data(2,MENGE) 2 foreach name {NAME ANSCHRIFT PLZORT POSITION BEZEICHUNG MENGE} { set position($name) {} } foreach {name value} [array get workbook 0,v,*] { if {[set value [string trim $value]] in {NAME ANSCHRIFT PLZORT POSITION BEZEICHUNG MENGE}} { lassign [split $name ,] sheet tag row column set position($value) [list sheet $sheet row $row column $column] } } if 0 { set workbook([dict get $position(NAME) sheet],v,[dict get $position(NAME) row],[dict get $position(NAME) column]) $data(NAME) set workbook([dict get $position(ANSCHRIFT) sheet],v,[dict get $position(ANSCHRIFT) row],[dict get $position(ANSCHRIFT) column]) $data(ANSCHRIFT) set workbook([dict get $position(PLZORT) sheet],v,[dict get $position(PLZORT) row],[dict get $position(PLZORT) column]) $data(PLZORT) for {set i 0} {$i < $data(positionen)} {incr i} { set workbook([dict get $position(POSITION) sheet],v,[expr {[dict get $position(POSITION) row] + $i}],[dict get $position(POSITION) column]) [expr {$i + 1}] set workbook([dict get $position(BEZEICHUNG) sheet],v,[expr {[dict get $position(BEZEICHUNG) row] + $i}],[dict get $position(BEZEICHUNG) column]) $data($i,BEZEICHUNG) set workbook([dict get $position(MENGE) sheet],v,[expr {[dict get $position(MENGE) row] + $i}],[dict get $position(MENGE) column]) $data($i,MENGE) } } proc Cell { *workbook *position item } { upvar ${*workbook} workbook upvar ${*position} position return [dict get $workbook(sheetmap) [dict get $position($item) sheet]] } proc Options { *workbook *position item {rowoffset 0} } { upvar ${*workbook} workbook upvar ${*position} position set sheet [dict get $position($item) sheet] set row [expr {[dict get $position($item) row] + $rowoffset}] set column [dict get $position($item) column] set options [list -index $row,$column] if {[info exists workbook($sheet,s,$row,$column)]} { lappend options -style $workbook($sheet,s,$row,$column) } return $options } set spreadsheet [::ooxml::xl_write new] $spreadsheet presetstyles workbook $spreadsheet presetsheets workbook if 1 { $spreadsheet cell [Cell workbook position NAME] $data(NAME) {*}[Options workbook position NAME] $spreadsheet cell [Cell workbook position ANSCHRIFT] $data(ANSCHRIFT) {*}[Options workbook position ANSCHRIFT] $spreadsheet cell [Cell workbook position PLZORT] $data(PLZORT) {*}[Options workbook position PLZORT] for {set i 0} {$i < $data(positionen)} {incr i} { $spreadsheet cell [Cell workbook position POSITION] [expr {$i + 1}] {*}[Options workbook position POSITION $i] $spreadsheet cell [Cell workbook position BEZEICHUNG] $data($i,BEZEICHUNG) {*}[Options workbook position BEZEICHUNG $i] $spreadsheet cell [Cell workbook position MENGE] $data($i,MENGE) {*}[Options workbook position MENGE $i] } } $spreadsheet write searchAndReplace.xlsx $spreadsheet destroy ooxml/examples/PaxHeader/xlsx-tablelist.tcl000775 000765 000024 00000000210 14762273471 021575 xustar00alexstaff000000 000000 30 mtime=1741256505.423693257 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-tablelist.tcl000775 000765 000024 00000004701 14762273471 017635 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec wish8.6 "$0" "$@" package require Tk package require tablelist set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } source array.tcl # build Tablelist from array set lb .lb tablelist::tablelist $lb -height 16 -width 100 -showseparators 1 -titlecolumns 3 -labelcommand tablelist::sortByColumn grid $lb -row 0 -column 0 -sticky nwse ttk::scrollbar .x -orient horizontal -command [list $lb xview] $lb configure -xscrollcommand [list .x set] grid .x -row 1 -column 0 -sticky we ttk::scrollbar .y -orient vertical -command [list $lb yview] $lb configure -yscrollcommand [list .y set] grid .y -row 0 -column 1 -sticky ns grid columnconfigure . 0 -weight 1 grid rowconfigure . 0 -weight 1 ttk::button .export -text Export -command [list ::ooxml::tablelist_to_xl $lb -file tablelist.xlsx -globalstyle] grid .export -row 2 -column 0 set list {} set cols -1 foreach name [lsort -dictionary [array names data]] { lassign [split $name ,] row col if {$row == 0} { switch -- $data($name) { {order number} { set justify center } item - price { set justify right } default { set justify left } } $lb insertcolumns end 0 $data($name) $justify incr cols } elseif {$row > 0} { lappend rows $row } } foreach row [lsort -integer -unique $rows] { set list {} for {set col 0} {$col <= $cols} {incr col} { if {[info exists data($row,$col)]} { lappend list $data($row,$col) } else { lappend list {} } } $lb insert end $list } # this sample callback is the default source code if nothing else is set proc TablelistToXlCallback { spreadsheet sheet maxcol column title width align sortmode hide } { set left 0 set center [$spreadsheet style -horizontal center] set right [$spreadsheet style -horizontal right] set date [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] set decimal [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal -red]] set text [$spreadsheet style -numfmt [$spreadsheet numberformat -string]] if {$column == -1} { $spreadsheet defaultdatestyle $date } else { switch -- $align { center { $spreadsheet column $sheet -index $column -style $center } right { $spreadsheet column $sheet -index $column -style $right } default { $spreadsheet column $sheet -index $column -style $left } } } } ooxml/examples/bench.tcl000664 000765 000024 00000002015 14607757315 015730 0ustar00alexstaff000000 000000 if 0 { if {[catch { package require ooxml } errMsg]} { if {[catch { source [file join [file dirname [info script]] ../ooxml.tcl] } err2]} { puts $err2 error $errMsg } } } source ../ooxml.tcl proc doit {rows cols} { set spreadsheet [::ooxml::xl_write new -creator "ich"] set sheet [$spreadsheet worksheet "Meine Daten"] set row 0 while {$row < $rows} { set col 0 while {$col < $cols} { $spreadsheet cell $sheet "Cell $row,$col" incr col } $spreadsheet row $sheet incr row } $spreadsheet write "$rows-$cols.xlsx" $spreadsheet destroy } # 10 10 # 100 10 # 500 10 foreach {rows cols} { 1000 10 3000 10 5000 10 } { set msec [lindex [time {doit $rows $cols}] 0] set nrcells [expr {$rows * $cols}] set perCell [expr {$msec / $nrcells}] set seconds [format "%.3f" [expr {double($msec)/1000000}]] puts "$rows/$cols: $nrcells cells, $seconds seconds, $perCell per cell" } ooxml/examples/PaxHeader/xlsx-complexReadWrite.tcl000775 000765 000024 00000000210 14762274414 023066 xustar00alexstaff000000 000000 30 mtime=1741256972.538247791 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-complexReadWrite.tcl000775 000765 000024 00000000564 14762274414 021131 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } array set workbook [ooxml::xl_read original_excel.xlsx] set spreadsheet [::ooxml::xl_write new] $spreadsheet presetstyles workbook $spreadsheet presetsheets workbook $spreadsheet write complexReadWrite.xlsx $spreadsheet destroy ooxml/examples/PaxHeader/testing.tcl000664 000765 000024 00000000210 14762606271 020266 xustar00alexstaff000000 000000 30 mtime=1741360313.064396166 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/testing.tcl000664 000765 000024 00000000422 14762606271 016322 0ustar00alexstaff000000 000000 #package require ooxml source ../ooxml.tcl array set workbook [ooxml::xl_read printArea.xlsx] #parray workbook set spreadsheet [::ooxml::xl_write new] $spreadsheet presetstyles workbook $spreadsheet presetsheets workbook #$spreadsheet write new.xlsx #$spreadsheet destroyooxml/examples/form8.xlsx000664 000765 000024 00000021254 14607757315 016126 0ustar00alexstaff000000 000000 PK!bh^[Content_Types].xml (N0EHC-Jܲ@5*Q>ēƪc[iiBj7{2hnmƻR U^7/%rZY@1__fqR4DAJh>Vƹ Z9NV8ʩji){^-I"{v^P!XS)bRrKs(3`c07M4ZƐk+|\|z(P6h_-[@!Pk2n}?L %ddN"m,ǞDO97*~ɸ8Oc|nEB!$};{[2PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~xl/_rels/workbook.xml.rels (RMK0 0wvt/"Uɴ)&!3~*]XK/oyv5+zl;obG s>,8(%"D҆4j0u2jsMY˴S쭂 )fCy I< y!+EfMyk K5=|t G)s墙UtB),fPK!Bxl/workbook.xmlTn0?;d%X bE EqE"Um*MK"rpgfRX'NixPZ\}J>8uΕѐ38z<{s ]JK1'J05hVchxJ_)U\j#$-(k# A,(|W hx \GT5B줒܁RRdBڧp2 t%5X_+a°- ࡗ«Eor!O Cs~ئ^5Ra6 0,{ƒ (& p:]Dv%RF{W. Cnk#-`SeKr$U)e3Ĝl^(_ZsђfȺ@lAҲ QS:8Q<إe˔F ~3k<l_aY{5DnC iǔEc-ڹLJc?9-qDeJ8xlƓQ<_Dy @4Yt kүݽzZP},5`/Zx J>4;=[^j_"J5t)Uծ Fwf LylXeb)bt"IO.fxF]D'.Fx30åJiP 7Q!Kڐ#Nf_yO?GͭUYr;(r~WI>&_שx퓗O?zIw {7Y t؏$"@Cu_FQm2.]%q|5-cøW\dꞜMM\swQb?n-3oPH4 bXB,gMwxD.+rC\.!Ԗon{F]# QCL-7^Fsb!]$# >2q}!!SLc!\29U`w"\C]ĘnfD&3q)L{!‒M7- WӤύ`Wb]Av f"wRvO{'gMAԭԅSI^#PA8r]#ވuvg6{ Kbk &fp-XEԹNi0@ad;1IX({q0gPORvN8p ':gW5Uj6Z漖9e\o_l.[>B\P+tGx{,YM92gs"͠5TΩTO7c:FzX7Q ݺ48t˪P 8tdJNuui=dU DuF蕝M ~eWVQWn^[~dhAy>VqJi79%2H7V[D2H7# #xβleyH-+!7V$rhb2M_p2B?1|g;Bu!: fq!{HD5lGIW@!ڶr5 A' ZJ!;s~Ar8( [Y'vͫ(C8e'I)\ƒ:`}QZ/BVOKyXY᰽5/ϳCx+Ef05mőbJվ[-[0u[•.m6h vydhLIk!Xm$O]CJoe=~3HUD4X~XV,S0zxҤBXD4yșRp'Q:gN3,v~˙,hEs*I$3W(l"cT\rU^pLg$E4gxv'oZJ58hD&MÀz3wL,?Lp+b'JRK K> @$VTdYDsIxM:۝۱̙SM!%TF,/."p5y& =)p>I.B=M ;~=JX׹yu,(aKJ%6|yPTR x]ƣ*e5" \]O?9C&S0SY5c# 6Р }҂:" Ta{*P9vfcm) n06u誜"a-׾Al$ 9d`kӭ ƔgX핁k b{PQםcJ9Ӕ|Z(GMtZK/-8MV_kG>MVʮΠT]Ҳ]WAK~Յj?J5QBd"qc ;8A]? 6m,LwnR#lO $%+~/.)-aTJ[ͤY_fęfVmn޼&PK!QdocProps/core.xml (QK0C{t2K=9(v 6II2MۭV&crr%|/Z( @1ͅy g(*N+ Gh^\^dN6ht '):G[c˶ CyFRfkKpSGq 끈Hd3U C8bu`uSFN)ܡqlzqpMDʹuuU jwg)3@6J0.]PAs`26PK!8ַ docProps/app.xml (n0 n(@VѦzXI{gd:&Kɞolɟ7.0 Y.2& quCdKpc!HRV1"eS!jv!%Y}RƝ Ue ؠgy=qgM`z>zU:k-51P8c={NiJk4AJNS6pF uЯo6V/:4bF_Zȶ@؃hsd]KUܢeں'fJQilА`I)ƲCS )0B8ǙSiehZ$vneE!bcAݦuFכ,k;,_z _x?_oyzIMׯPK-!bh^[Content_Types].xmlPK-!U0#L _rels/.relsPK-!>xl/_rels/workbook.xml.relsPK-!Bxl/workbook.xmlPK-!|;r^ xl/sharedStrings.xmlPK-!X7N w xl/theme/theme1.xmlPK-!L7 xl/styles.xmlPK-!:1 Xxl/worksheets/sheet1.xmlPK-!QdocProps/core.xmlPK-!8ַ GdocProps/app.xmlPK  ooxml/examples/PaxHeader/xlsx-writeRowsAutoIncr.tcl000775 000765 000024 00000000210 14762274524 023264 xustar00alexstaff000000 000000 30 mtime=1741257044.105180871 57 LIBARCHIVE.xattr.com.apple.provenance=AQAA6PFGo4Ll/08 49 SCHILY.xattr.com.apple.provenance=FO ooxml/examples/xlsx-writeRowsAutoIncr.tcl000775 000765 000024 00000002433 14762274524 021324 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" set auto_path [linsert $auto_path 0 ..] if {[catch {package require ooxml}]} { source ../ooxml.tcl } source array.tcl set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] if {[set sheet [$spreadsheet worksheet {Tabelle 1}]] > -1} { set center [$spreadsheet style -horizontal center] set date [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] set decimal [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal -separator -red]] set text [$spreadsheet style -numfmt [$spreadsheet numberformat -string]] $spreadsheet column $sheet -width 30 -index 1 $spreadsheet column $sheet -style $decimal -index 4 $spreadsheet column $sheet -style $date -width [::ooxml::CalcColumnWidth 16] $spreadsheet autofilter $sheet 0,0 0,6 $spreadsheet freeze $sheet C2 set lastRow -1 foreach name [lsort -dictionary [array names data]] { lassign [split $name ,] row col if {$row != $lastRow} { set lastRow $row $spreadsheet row $sheet } switch -- $col { 2 { $spreadsheet cell $sheet $data($name) -index $col -string } default { $spreadsheet cell $sheet $data($name) -index $col -globalstyle } } } } $spreadsheet write writeRowsAutoIncr.xlsx $spreadsheet destroy ooxml/tests/test_worksheets_xml_missing.xlsx000664 000765 000024 00000016402 14716573572 022266 0ustar00alexstaff000000 000000 PK!bh^[Content_Types].xml (N0EHC-Jܲ@5*Q>ēƪc[iiBj7{2hnmƻR U^7/%rZY@1__fqR4DAJh>Vƹ Z9NV8ʩji){^-I"{v^P!XS)bRrKs(3`c07M4ZƐk+|\|z(P6h_-[@!Pk2n}?L %ddN"m,ǞDO97*~ɸ8Oc|nEB!$};{[2PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~xl/_rels/workbook.xml.rels (RMK0 0wvt/"Uɴ)&!3~*]XK/oyv5+zl;obG s>,8(%"D҆4j0u2jsMY˴S쭂 )fCy I< y!+EfMyk K5=|t G)s墙UtB),fPK!"Zxl/sharedStrings.xml\A 0Ew "hB;@3.3̢B'2HҴ\R^&WCFr(׫jHba jp37ZoÿBO PK!nXxl/theme/theme1.xmlYϋ7? swkfl/{lg&!䨵eɻ1!PcP^ P%kMiSȿ'#nn -Y27ߓ4/ݍsSNXv*dvop1,mw{i.-;?[FB̶e>f/Nل1pNݘkJPI\'A16vҤ4ާp.F4ݗCaLJU 9B8cvd&` /}'<Ó?f;(_|ٟ_㹎O~s;&[x{W# >$1U|`1Mydc!b@ض^] ju[) xy~sA,#_b+r,y2u lc(1B۟@Ydau8‘!Ɩ&pn%Cr`$Ri -˨m=|d"@B~h.Pl39D1Dd#HG:Dz)sc̹ϵ ={tTC]Ę0Bʙ$B":63yq@p"BptUT$|2O->.a2 $9SONԳtZ;)Z;|?(=4Ocxg ;~^7څPuv7.'}x;4@Vj+72(iT'e#"`_U)MO3cVYm)j08۱VrwGhvm 4]ʼNnyI@'$Lu Ʋw$΅E¢)/C@mX?9j Qr_{PK!@|Ԇ xl/styles.xmlTmo0>iwj!K"Z"UI}u$Vl%w:m{szs=3cVB*u>_`uTUTh2|bߥ֝s fE-LR{OT'1V_a8'r{,DR6AeCqݩH҆P=F3Z;V k^,dI)OkEnZzR*/o~GT%$OK-A*:TޭSo+'9 V'<8fT S47N gٔ?;T9O+NZQSA.S2!~/5R,2 cp!AzOz7âc'_Gvd*Z.W q,B{lwāZTpO⭌/^vDG*, 5}o";p^ZS$)#l-M[ЧoהM͕5PxzS~ $_.>c̋4`NK2;V,+4t"d= 4Rڊ&{pͶV0B)"{huRs2oZ gmB86 }-ʼ`;q6V)ee>]ޟ$+(j%nHぁE;XR]]50T<>Vő{XYC֡Òx1jhVGђ>  J5̝/=.KYb8{汯]lby.y[StWU?Q3pP{dD[]+' Ѯ%n30L\\/fq2_̖wEIeCqq6ֆb鵖PK!-=]docProps/core.xml (N0HC{8RYI*JHqm6}{ A;ή/Z$E(EzݬgJF+(ZW97k VrUHPAi+OdžKL0pHD'#|ڦ ;Lt6)k4aS)[AWƶmv ~[?Ƶn[`^RCU1I;_Ü_KjuV}B:D?+f,nbBb2ߐhwwᆂ<6π2PK! '0docProps/app.xml (n0 n@VQzذq{gd:*KIgomɟqY1 1"CoBeϋ"K<I\ϟ*#YL[TQ26f,{V NVoyjГo=qGM`zPZ֪  \SnYħ׿!{Nɩz)Z:T 8\@]K䩠eƤUG % Zĸ}ۘ kE}7h)mܿDQ~󡁃`aᜳ0W{`G6Sy+ehZ/}[[ |yQw8nXPwzB@ϯfwRSPK-!bh^[Content_Types].xmlPK-!U0#L _rels/.relsPK-!>xl/_rels/workbook.xml.relsPK-!"Zxl/sharedStrings.xmlPK-!nX xl/theme/theme1.xmlPK-!@|Ԇ xl/styles.xmlPK-!_8xl/worksheets/sheet1.xmlPK-!-=]adocProps/core.xmlPK-! '0docProps/app.xmlPK Cooxml/tests/test_sheet1_xml_missing.xlsx000664 000765 000024 00000016461 14716573572 021266 0ustar00alexstaff000000 000000 PK!bh^[Content_Types].xml (N0EHC-Jܲ@5*Q>ēƪc[iiBj7{2hnmƻR U^7/%rZY@1__fqR4DAJh>Vƹ Z9NV8ʩji){^-I"{v^P!XS)bRrKs(3`c07M4ZƐk+|\|z(P6h_-[@!Pk2n}?L %ddN"m,ǞDO97*~ɸ8Oc|nEB!$};{[2PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~xl/_rels/workbook.xml.rels (RMK0 0wvt/"Uɴ)&!3~*]XK/oyv5+zl;obG s>,8(%"D҆4j0u2jsMY˴S쭂 )fCy I< y!+EfMyk K5=|t G)s墙UtB),fPK!L|4xl/workbook.xmlTn0?zXJR?( p/4SJRޕTn}I^%,9=U|cV) >%΅ڧqa4:r&w6ʦtN<*fǺ;6s85{XnKWI/+bB!1oE!8,5o*P1 m)j;U-p3q]R'҆$>t%VnP^_ !ᩗ̪Id֭r ON~[0M=o BzO+ ɡ`t4axaV5a/Jl 'lg+IcdJ"df{pޞ. ozH/$~pdl,T) rg2t~ľtv0g]HT@JwbZJIf#g%atprf8"A]7_MQ4 Gh2\׫j݌'ÃVasf{BX'z1T ePK!"Zxl/sharedStrings.xml\A 0Ew "hB;@3.3̢B'2HҴ\R^&WCFr(׫jHba jp37ZoÿBO PK!nXxl/theme/theme1.xmlYϋ7? swkfl/{lg&!䨵eɻ1!PcP^ P%kMiSȿ'#nn -Y27ߓ4/ݍsSNXv*dvop1,mw{i.-;?[FB̶e>f/Nل1pNݘkJPI\'A16vҤ4ާp.F4ݗCaLJU 9B8cvd&` /}'<Ó?f;(_|ٟ_㹎O~s;&[x{W# >$1U|`1Mydc!b@ض^] ju[) xy~sA,#_b+r,y2u lc(1B۟@Ydau8‘!Ɩ&pn%Cr`$Ri -˨m=|d"@B~h.Pl39D1Dd#HG:Dz)sc̹ϵ ={tTC]Ę0Bʙ$B":63yq@p"BptUT$|2O->.a2 $9SONԳtZ;)Z;|?(=4Ocxg ;~^7څPuv7.'}x;4@Vj+72(iT'e#"`_U)MO3cVYm)j08۱VrwGhvm 4]ʼNnyI@'$Lu Ʋw$΅E¢)/C@mX?9j Qr_{PK!@|Ԇ xl/styles.xmlTmo0>iwj!K"Z"UI}u$Vl%w:m{szs=3cVB*u>_`uTUTh2|bߥ֝s fE-LR{OT'1V_a8'r{,DR6AeCqݩH҆P=F3Z;V k^,dI)OkEnZzR*/o~GT%$OK-A*:TޭSo+'9 V'<8fT S47N gٔ?;T9O+NZQSA.S2!~/5R,2 cp!AzOz7âc'_Gvd*Z.W q,B{lwāZTpO⭌/^vDG*, 5xl/_rels/workbook.xml.relsPK-!L|4xl/workbook.xmlPK-!"ZP xl/sharedStrings.xmlPK-!nX$ xl/theme/theme1.xmlPK-!@|Ԇ xl/styles.xmlPK-!-=]docProps/core.xmlPK-! '0 docProps/app.xmlPK :ooxml/tests/xlsx-formula.test000664 000765 000024 00000004516 14763500732 017033 0ustar00alexstaff000000 000000 # # Commands covered: simple excel sheet # # # (c) 2021 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml if {![package vsatisfies [package present Tcl] 9]} { package require vfs::zip } test Formula-1.1 {Write a Simple Excel Sheet} { set cDT {2020-03-07 07:12:23} set mCT $cDT set spreadsheet [::ooxml::xl_write new -creator {User A} -created $cDT -modifiedby {User B} -modified $mCT -application {Tcl Test}] if {[set sheet [$spreadsheet worksheet {Sheet 1}]] > -1} { return 1 } return 0 } 1 test Formula-2.1 {single fomula C1} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index 0,2 -formula {A1+B1}] return $cells(1,$cell) } {t s f A1+B1} test FormulaVertical-3.1 {vertical shared formula C3} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index 2,2 -formula {A3+B3} -formularef C3:C5 -formulaidx 0] return $cells(1,$cell) } {t s f A3+B3 fsi 0 fsr C3:C5} test FormulaVertical-3.2 {vertical shared formula C4} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index 3,2 -formulaidx 0] return $cells(1,$cell) } {t s f {} fsi 0} test FormulaVertical-3.3 {vertical shared formula C5} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index C5 -formulaidx 0] return $cells(1,$cell) } {t s f {} fsi 0} test FormulaVertical-4.1 {horizontal shared formula A9} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index A9 -formula {A7+A8} -formularef 8,0:8,2 -formulaidx 1] return $cells(1,$cell) } {t s f A7+A8 fsi 1 fsr A9:C9} test FormulaVertical-4.2 {horizontal shared formula B9} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index 8,1 -formulaidx 1] return $cells(1,$cell) } {t s f {} fsi 1} test FormulaVertical-4.3 {horizontal shared formula C9} { upvar #0 ${spreadsheet}::cells cells set cell [$spreadsheet cell $sheet {} -index C9 -formulaidx 1] return $cells(1,$cell) } {t s f {} fsi 1} $spreadsheet destroy # cleanup ::tcltest::cleanupTests return ooxml/tests/xlsx-benchmark.test000664 000765 000024 00000002510 14763500732 017310 0ustar00alexstaff000000 000000 # # Commands covered: simple excel sheet # # # (c) 2019 Rolf Ade # (c) 2019 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml proc doit {rows cols} { set spreadsheet [::ooxml::xl_write new -creator "me"] set sheet [$spreadsheet worksheet "my data"] set row 0 while {$row < $rows} { set col 0 while {$col < $cols} { $spreadsheet cell $sheet "Cell $row,$col" incr col } $spreadsheet row $sheet incr row } $spreadsheet write "$rows-$cols.xlsx" $spreadsheet destroy } test Benchmark-1.1 {benchmark cell generating} { set rc 1 set list {msec per cell} set first -1 foreach {rows cols} { 500 10 1000 10 3000 10 5000 10 } { set msec [lindex [time {doit $rows $cols}] 0] set perCell [expr {$msec / $rows / $cols}] lappend list $perCell if {$first == -1} { set first [expr {int($perCell * 1.04)}] } if {$perCell > $first} { puts $list set rc 0 } } return $rc } 1 file delete -force 500-10.xlsx 1000-10.xlsx 3000-10.xlsx 5000-10.xlsx # cleanup ::tcltest::cleanupTests return ooxml/tests/xlsx-simple.test000664 000765 000024 00000010772 14763500732 016660 0ustar00alexstaff000000 000000 # # Commands covered: simple excel sheet # # # (c) 2019 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml #package require vfs::zip test SimpleExcelWrite-1.1 {Write a Simple Excel Sheet} { set cDT {2019-10-31 15:10:23} set mCT {2019-10-31 17:20:45} set spreadsheet [::ooxml::xl_write new -creator {User A} -created $cDT -modifiedby {User B} -modified $mCT -application {Tcl Test}] if {[set sheet [$spreadsheet worksheet {Sheet 1}]] > -1} { $spreadsheet cell $sheet {Tcl Test - SimpleExcel} -index A1 } if {[set sheet [$spreadsheet worksheet {Sheet 2}]] > -1} { $spreadsheet cell $sheet {Sheet 2} -index B2 } $spreadsheet write simple.xlsx $spreadsheet destroy return [file exists simple.xlsx] } 1 test SimpleExcelRead-1.2 {Read a Simple Excel Sheets} { array set workbook [ooxml::xl_read simple.xlsx] return [llength $workbook(sheets)] } 2 test SimpleExcelRead-1.3 {Read a Simple Excel Sheet1 A1} { return $workbook(0,c,0,0) } A1 test SimpleExcelRead-1.4 {Read a Simple Excel Sheet2 B2} { return $workbook(1,c,1,1) } B2 if {[package vsatisfies [package present Tcl] 9]} { test MountXLSX-2.1 {Mount XLSX File} { catch {zipfs mount simple.xlsx xlsx} mnt } 0 variable zipfs "//zipfs:/" } elseif {$::ooxml::zipAccessMethod eq "tcllib"} { test MountXLSX-2.1 {Mount XLSX File} { catch { ::zipfile::decode::open simple.xlsx variable zipdesc [::zipfile::decode::archive] } } 0 } else { test MountXLSX-2.1 {Mount XLSX File} { catch {vfs::zip::Mount simple.xlsx xlsx} mnt } 0 variable zipfs "" } test DocPropsApp-3.1 {Parse xlsx/docProps/app.xml} { if {$::ooxml::zipAccessMethod eq "tcllib"} { set doc [dom parse [encoding convertfrom utf-8\ [::zipfile::decode::getfile $zipdesc docProps/app.xml]]] } else { set fd [open ${zipfs}xlsx/docProps/app.xml r] fconfigure $fd -encoding utf-8 set doc [dom parse [read $fd]] close $fd } return [set appDoc [string match domDoc* $doc]] } 1 set appXmlNs { x http://schemas.openxmlformats.org/officeDocument/2006/extended-properties vt http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes } testConstraint appCheck $appDoc test DocPropsApp-3.2 {Check Application -application} appCheck { $doc selectNodesNamespaces $appXmlNs $doc selectNodes string(/x:Properties/x:Application) } {Tcl Test} test DocPropsApp-3.3 {Check Sheet Counter} appCheck { $doc selectNodesNamespaces $appXmlNs $doc selectNodes string(/x:Properties/x:HeadingPairs/vt:vector/vt:variant/vt:i4) } $sheet $doc delete test DocPropsCore-4.1 {Parse xlsx/docProps/core.xml} { if {$::ooxml::zipAccessMethod eq "tcllib"} { set doc [dom parse [encoding convertfrom utf-8\ [::zipfile::decode::getfile $zipdesc docProps/core.xml]]] } else { set fd [open ${zipfs}xlsx/docProps/core.xml r] fconfigure $fd -encoding utf-8 set doc [dom parse [read $fd]] close $fd } set coreXmlNs { cp http://schemas.openxmlformats.org/package/2006/metadata/core-properties dc http://purl.org/dc/elements/1.1/ dcterms http://purl.org/dc/terms/ } return [set coreDoc [string match domDoc* $doc]] } 1 testConstraint coreCheck $coreDoc test DocPropsCore-4.2 {Check Creator -creator} coreCheck { $doc selectNodesNamespaces $coreXmlNs $doc selectNodes string(/cp:coreProperties/dc:creator) } {User A} test DocPropsCore-4.3 {Check Modified By -modifiedby} coreCheck { $doc selectNodesNamespaces $coreXmlNs $doc selectNodes string(/cp:coreProperties/cp:lastModifiedBy) } {User B} test DocPropsCore-4.4 {Check Modified By -created} coreCheck { $doc selectNodesNamespaces $coreXmlNs $doc selectNodes string(/cp:coreProperties/dcterms:created) } {2019-10-31T14:10:23Z} test DocPropsCore-4.5 {Check Modified By -modified} coreCheck { $doc selectNodesNamespaces $coreXmlNs $doc selectNodes string(/cp:coreProperties/dcterms:modified) } {2019-10-31T16:20:45Z} $doc delete if {[package vsatisfies [package present Tcl] 9]} { zipfs unmount $mnt } elseif {$::ooxml::zipAccessMethod eq "tcllib"} { ::zipfile::decode::close } else { vfs::zip::Unmount $mnt xlsx } file delete -force simple.xlsx # cleanup ::tcltest::cleanupTests return # Local Variables: # tcl-indent-level: 2 # End: ooxml/tests/xlsx-namedfmts.test000664 000765 000024 00000007577 14763500732 017356 0ustar00alexstaff000000 000000 # # Commands covered: simple excel sheet # # # (c) 2019 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml #package require vfs::zip test NamedFormats-1.1 {Write a Simple Excel Sheet} { set cDT {2020-03-07 07:12:23} set mCT $cDT set spreadsheet [::ooxml::xl_write new -creator {User A} -created $cDT -modifiedby {User B} -modified $mCT -application {Tcl Test}] if {[set sheet [$spreadsheet worksheet {Sheet 1}]] > -1} { return 1 } return 0 } 1 test NamedFormats-2.1 {numberformat dec2t} { $spreadsheet numberformat -decimal -separator -tag dec2t } 4 test NamedFormats-2.2 {numberformat dec2t} { upvar #0 ${spreadsheet}::tags tags info exists tags(numFmts,dec2t) } 1 test NamedFormats-2.2 {numberformat dec2t} { upvar #0 ${spreadsheet}::tags tags return $tags(numFmts,dec2t) } 4 test NamedFormats-2.3 {style numberformat dec2t} { $spreadsheet style -numfmt dec2t -tag dec2t } 1 test NamedFormats-2.4 {style numberformat dec2t} { upvar #0 ${spreadsheet}::tags tags if {[info exists tags(styles,dec2t)]} { return $tags(styles,dec2t) } return -1 } 1 test NamedFormats-3.1 {numberformat fraction2} { $spreadsheet numberformat -format {# ??/??} -tag fraction2 } 166 test NamedFormats-3.2 {numberformat fraction2} { upvar #0 ${spreadsheet}::tags tags info exists tags(numFmts,fraction2) } 1 test NamedFormats-3.2 {numberformat fraction2} { upvar #0 ${spreadsheet}::tags tags return $tags(numFmts,fraction2) } 166 test NamedFormats-3.3 {style numberformat fraction2} { $spreadsheet style -numfmt fraction2 -tag fraction2 } 2 test NamedFormats-3.4 {style numberformat fraction2} { upvar #0 ${spreadsheet}::tags tags if {[info exists tags(styles,fraction2)]} { return $tags(styles,fraction2) } return -1 } 2 test NamedFormats-4.1 {font font9} { $spreadsheet font -size 9 -tag font9 } 1 test NamedFormats-4.2 {font font9} { upvar #0 ${spreadsheet}::tags tags info exists tags(fonts,font9) } 1 test NamedFormats-4.2 {font font9} { upvar #0 ${spreadsheet}::tags tags return $tags(fonts,font9) } 1 test NamedFormats-4.3 {style font font9} { $spreadsheet style -font font9 -tag font9 } 3 test NamedFormats-4.4 {style font font9} { upvar #0 ${spreadsheet}::tags tags if {[info exists tags(styles,font9)]} { return $tags(styles,font9) } return -1 } 3 test NamedFormats-5.1 {fill yellow} { $spreadsheet fill -fgcolor FFFFFF00 -bgcolor 64 -patterntype solid -tag yellow } 2 test NamedFormats-5.2 {fill yellow} { upvar #0 ${spreadsheet}::tags tags info exists tags(fills,yellow) } 1 test NamedFormats-5.2 {fill yellow} { upvar #0 ${spreadsheet}::tags tags return $tags(fills,yellow) } 2 test NamedFormats-5.3 {style fill yellow} { $spreadsheet style -fill yellow -tag yellow } 4 test NamedFormats-5.4 {style fill yellow} { upvar #0 ${spreadsheet}::tags tags if {[info exists tags(styles,yellow)]} { return $tags(styles,yellow) } return -1 } 4 test NamedFormats-6.1 {border bDiagonal} { $spreadsheet border -diagonalstyle medium -diagonaldirection up -tag bDiagonal } 1 test NamedFormats-6.2 {border bDiagonal} { upvar #0 ${spreadsheet}::tags tags info exists tags(borders,bDiagonal) } 1 test NamedFormats-6.2 {border bDiagonal} { upvar #0 ${spreadsheet}::tags tags return $tags(borders,bDiagonal) } 1 test NamedFormats-6.3 {style border bDiagonal} { $spreadsheet style -border bDiagonal -tag bDiagonal } 5 test NamedFormats-6.4 {style border bDiagonal} { upvar #0 ${spreadsheet}::tags tags if {[info exists tags(styles,bDiagonal)]} { return $tags(styles,bDiagonal) } return -1 } 5 $spreadsheet destroy # cleanup ::tcltest::cleanupTests return ooxml/tests/xlsx-misc.test000664 000765 000024 00000007600 14763500732 016316 0ustar00alexstaff000000 000000 # # Commands covered: internal helper procs # # # (c) 2019 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml test ScanDateTime-1.1 {ScanDateTime takes args} -body { ::ooxml::ScanDateTime } -returnCodes error -result "wrong # args: should be \"::ooxml::ScanDateTime scan ?iso8601?\"" test ScanDateTime-1.2 {ScanDateTime ole time} { ::ooxml::ScanDateTime {2019-10-31 15:10:23} } 43769.63221064815 test ScanDateTime-1.3 {ScanDateTime iso8601} { ::ooxml::ScanDateTime {2019-10-31 15:10:23} 1 } 2019-10-31T15:10:23 test Column-1.1 {Column takes args} -body { ::ooxml::Column } -returnCodes error -result "wrong # args: should be \"::ooxml::Column col\"" test Column-1.2 {Column 3} { ::ooxml::Column 3 } D test Column-1.3 {Column 33} { ::ooxml::Column 33 } AH if {[package vsatisfies [package present Tcl] 9]} { set result "cannot use non-numeric string \"A\" as left operand of \"%\"" } else { set result "can't use non-numeric string as operand of \"%\"" } test Column-1.4 {Column A} -body { ::ooxml::Column A } -returnCodes error -result $result test RowColumnToString-1.1 {RowColumnToString takes args} -body { ::ooxml::RowColumnToString } -returnCodes error -result "wrong # args: should be \"::ooxml::RowColumnToString rowcol\"" test RowColumnToString-1.2 {RowColumnToString 0,0} { ::ooxml::RowColumnToString 0,0 } A1 test RowColumnToString-1.3 {RowColumnToString 33,33} { ::ooxml::RowColumnToString 33,33 } AH34 test RowColumnToString-1.4 {RowColumnToString A1} -body { ::ooxml::RowColumnToString A1 } -returnCodes error -result "expected integer but got \"A1\"" test RowColumnToString-1.5 {RowColumnToString 0} { ::ooxml::RowColumnToString 0 } 1 test StringToRowColumn-1.1 {StringToRowColumn takes args} -body { ::ooxml::StringToRowColumn } -returnCodes error -result "wrong # args: should be \"::ooxml::StringToRowColumn name\"" test StringToRowColumn-1.2 {StringToRowColumn A1} { ::ooxml::StringToRowColumn A1 } 0,0 test StringToRowColumn-1.3 {StringToRowColumn AH34} { ::ooxml::StringToRowColumn AH34 } 33,33 test StringToRowColumn-1.4 {StringToRowColumn 0} { ::ooxml::StringToRowColumn 0 } -1,-1 test IndexToString-1.1 {IndexToString takes args} -body { ::ooxml::IndexToString } -returnCodes error -result "wrong # args: should be \"::ooxml::IndexToString index\"" test IndexToString-1.2 {IndexToString 0,0} { ::ooxml::IndexToString 0,0 } A1 test IndexToString-1.3 {IndexToString A1} { ::ooxml::IndexToString A1 } A1 test IndexToString-1.4 {IndexToString 1} { ::ooxml::IndexToString 1 } {} test IndexToString-1.5 {IndexToString A} { ::ooxml::IndexToString A } {} test ::ooxml::IndexFix1.1 {IndexFix A1} { ::ooxml::IndexFix A1 } {$A$1} test CalcColumnWidth-1.1 {CalcColumnWidth takes args} -body { ::ooxml::CalcColumnWidth } -returnCodes error -result "wrong # args: should be \"::ooxml::CalcColumnWidth numberOfCharacters ?maximumDigitWidth? ?pixelPadding?\"" test CalcColumnWidth-1.2 {CalcColumnWidth 11} { ::ooxml::CalcColumnWidth 11 } 11.7109375 test Color-1.1 {Color takes args} -body { ::ooxml::Color } -returnCodes error -result "wrong # args: should be \"::ooxml::Color color\"" test color-1.2 {Color {}} { ::ooxml::Color {} } {} test color-1.3 {Color auto} { ::ooxml::Color auto } {auto 1} test color-1.4 {Color none} { ::ooxml::Color none } {none 1} test color-1.5 {Color 6} { ::ooxml::Color 6 } {indexed 6} test color-1.6 {Color Fuchsia} { ::ooxml::Color Fuchsia } {indexed 6} test color-1.7 {Color 00FF00FF} { ::ooxml::Color 00FF00FF } {indexed 6} test color-1.8 {Color 00123456} { ::ooxml::Color 00123456 } {rgb 00123456} # cleanup ::tcltest::cleanupTests return ooxml/tests/xlsx-readerror.test000664 000765 000024 00000002751 14763500732 017352 0ustar00alexstaff000000 000000 # # Commands covered: read errorneous excel sheets # # # (c) 2024 Harald Oehlmann # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml test readerrorxlsx-1 {Error out as the file xl/worksheets.xml is missing} -body { ooxml::xl_read [file join [file dir [info script]] test_worksheets_xml_missing.xlsx] } -returnCodes error -result "No valid xlsx file" test readerrorxlsx-2 {Error out as the file xl/worksheets/sheet1.xml is missing} -body { ooxml::xl_read [file join [file dir [info script]] test_sheet1_xml_missing.xlsx] } -returnCodes error -result "Excel file error: No data for sheet 1" if {[package vsatisfies [package present Tcl] 9]} { test readerrorxlsx-3 {Error out as the file xl/worksheets/sheet1.xml is no utf8} -body { ooxml::xl_read [file join [file dir [info script]] test_sheet1_xml_no_utf8.xlsx] } -returnCodes error -match glob -result "*invalid or incomplete multibyte or wide character" } test readerrorxlsx-4 {Error out as the file xl/worksheets/sheet1.xml is no xml} -body { ooxml::xl_read [file join [file dir [info script]] test_sheet1_xml_no_xml.xlsx] } -returnCodes error -match glob -result "error \"syntax error\" at line 1 character 0*" # cleanup ::tcltest::cleanupTests return # Local Variables: # tcl-indent-level: 2 # End: ooxml/tests/test_sheet1_xml_no_xml.xlsx000664 000765 000024 00000016724 14716573572 021113 0ustar00alexstaff000000 000000 PK! '0docProps/app.xml (n0 n@VQzذq{gd:*KIgomɟqY1 1"CoBeϋ"K<I\ϟ*#YL[TQ26f,{V NVoyjГo=qGM`zPZ֪  \SnYħ׿!{Nɩz)Z:T 8\@]K䩠eƤUG % Zĸ}ۘ kE}7h)mܿDQ~󡁃`aᜳ0W{`G6Sy+ehZ/}[[ |yQw8nXPwzB@ϯfwRSPK!-=]docProps/core.xml (N0HC{8RYI*JHqm6}{ A;ή/Z$E(EzݬgJF+(ZW97k VrUHPAi+OdžKL0pHD'#|ڦ ;Lt6)k4aS)[AWƶmv ~[?Ƶn[`^RCU1I;_Ü_KjuV}B:D?+f,nbBb2ߐhwwᆂ<6π2PK!"Zxl/sharedStrings.xml\A 0Ew "hB;@3.3̢B'2HҴ\R^&WCFr(׫jHba jp37ZoÿBO PK!@|Ԇ xl/styles.xmlTmo0>iwj!K"Z"UI}u$Vl%w:m{szs=3cVB*u>_`uTUTh2|bߥ֝s fE-LR{OT'1V_a8'r{,DR6AeCqݩH҆P=F3Z;V k^,dI)OkEnZzR*/o~GT%$OK-A*:TޭSo+'9 V'<8fT S47N gٔ?;T9O+NZQSA.S2!~/5R,2 cp!AzOz7âc'_Gvd*Z.W q,B{lwāZTpO⭌/^vDG*, 5f/Nل1pNݘkJPI\'A16vҤ4ާp.F4ݗCaLJU 9B8cvd&` /}'<Ó?f;(_|ٟ_㹎O~s;&[x{W# >$1U|`1Mydc!b@ض^] ju[) xy~sA,#_b+r,y2u lc(1B۟@Ydau8‘!Ɩ&pn%Cr`$Ri -˨m=|d"@B~h.Pl39D1Dd#HG:Dz)sc̹ϵ ={tTC]Ę0Bʙ$B":63yq@p"BptUT$|2O->.a2 $9SONԳtZ;)Z;|?(=4Ocxg ;~^7څPuv7.'}x;4@Vj+72(iT'e#"`_U)MO3cVYm)j08۱VrwGhvm 4]ʼNnyI@'$Lu Ʋw$΅E¢)/C@mX?9j Qr_{PK!L|4xl/workbook.xmlTn0?zXJR?( p/4SJRޕTn}I^%,9=U|cV) >%΅ڧqa4:r&w6ʦtN<*fǺ;6s85{XnKWI/+bB!1oE!8,5o*P1 m)j;U-p3q]R'҆$>t%VnP^_ !ᩗ̪Id֭r ON~[0M=o BzO+ ɡ`t4axaV5a/Jl 'lg+IcdJ"df{pޞ. ozH/$~pdl,T) rg2t~ľtv0g]HT@JwbZJIf#g%atprf8"A]7_MQ4 Gh2\׫j݌'ÃVasf{BX'z1T ePK 6pYHxl/worksheets/sheet1.xmlABCPK!>xl/_rels/workbook.xml.rels (RMK0 0wvt/"Uɴ)&!3~*]XK/oyv5+zl;obG s>,8(%"D҆4j0u2jsMY˴S쭂 )fCy I< y!+EfMyk K5=|t G)s墙UtB),fPK!bh^[Content_Types].xml (N0EHC-Jܲ@5*Q>ēƪc[iiBj7{2hnmƻR U^7/%rZY@1__fqR4DAJh>Vƹ Z9NV8ʩji){^-I"{v^P!XS)bRrKs(3`c07M4ZƐk+|\|z(P6h_-[@!Pk2n}?L %ddN"m,ǞDO97*~ɸ8Oc|nEB!$};{[2PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~+xl/_rels/workbook.xml.relsPK-!bh^^[Content_Types].xmlPK-!U0#L _rels/.relsPK ooxml/tests/xlsx-printarea.test000664 000765 000024 00000003723 14763500732 017352 0ustar00alexstaff000000 000000 # # Commands covered: definedNames _xlnm.Print_Area # # # (c) 2025 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml # Begin with a new spreadsheet and a new workbook test newSpreadsheet-1.1 {Create New Spreadsheet} -body { set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] } -result {::oo::Obj*} -match glob test newWorksheet-1.2 {Create New Worksheet} { set sheet [$spreadsheet worksheet {Blatt 1}] } 1 # *************** Begin here with settings, formats and data *************** test printArea-2.1 {Set Print Area} { $spreadsheet printarea $sheet A1 C3 } 0 # *************** End here with settings, formats and data *************** # Save all data for later comparison foreach item {obj cells fonts numFmts styles fills borders cols view hlinks} { array set w_$item [array get ${spreadsheet}::$item] # parray w_$item } # Write XLSX file and destroy spreadsheet test writeSpreatsheet-3.1 {Write Spreatsheet} { $spreadsheet write printarea.xlsx } 0 test destroySpreatsheet-3.2 {Destroy Spreatsheet} { $spreadsheet destroy } 0 # Read XLSX file for comparison test readWorkbook-4.1 {Read Workbook} { array set workbook [ooxml::xl_read printarea.xlsx] # parray workbook return [llength $workbook(sheets)] } 1 # *************** Begin here with comparison *************** test printArea-5.1 {Check Print Area} { set rc 1 if {![info exists workbook(0,printarea)] || $workbook(0,printarea) ne $w_obj(printarea,1)} { set rc 0 } return $rc } 1 # *************** End here with comparison *************** # Cleanup file delete -force printarea.xlsx ::tcltest::cleanupTests return # Local Variables: # tcl-indent-level: 4 # End: ooxml/tests/all.tcl000664 000765 000024 00000001176 14607757315 014754 0ustar00alexstaff000000 000000 # all.tcl -- # # This file contains a top-level script to run all of the Tcl # tests. Execute it by invoking "source all.test" when running tcltest # in this directory. # # Copyright (c) 1998-1999 by Scriptics Corporation. # Copyright (c) 2000 by Ajuba Solutions # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. package prefer latest package require Tcl 8.5- package require tcltest 2.2 namespace import tcltest::* configure {*}$argv -testdir [file dir [info script]] if {[singleProcess]} { interp debug {} -frame 1 } runAllTests proc exit args {} ooxml/tests/xlsx-formatcell.test000664 000765 000024 00000064256 14763500732 017525 0ustar00alexstaff000000 000000 # # Commands covered: format cell excel sheet # # # (c) 2019 Alexander Schoepe # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import -force ::tcltest::* loadTestedCommands } package require ooxml test FormatCellNewSpreatsheet-1.1 {Create New Spreadsheet} -body { set spreadsheet [::ooxml::xl_write new -creator {Alexander Schöpe}] } -result {::oo::Obj*} -match glob test FormatCellNewWorksheet-1.2 {Create New Worksheet} { set sheet [$spreadsheet worksheet {Blatt 1}] } 1 test FormatCellView-1.3 {Set View} { $spreadsheet view -activetab 0 -x 2200 -y 2760 -height 8140 -width 15140 } {} test FormatCellNewStyle-2.1 {New Style} { set bold [$spreadsheet style -font [$spreadsheet font -bold]] } 1 test FormatCellNewStyle-2.2 {New Style} { set italic [$spreadsheet style -font [$spreadsheet font -italic]] } 2 test FormatCellNewStyle-2.3 {New Style} { set underline [$spreadsheet style -font [$spreadsheet font -underline]] } 3 test FormatCellNewStyle-2.4 {New Style} { set red [$spreadsheet style -font [$spreadsheet font -color Red]] } 4 test FormatCellNewStyle-2.5 {New Style} { set font9 [$spreadsheet style -font [$spreadsheet font -size 9]] } 5 test FormatCellNewStyle-2.6 {New Style} { set font18 [$spreadsheet style -font [$spreadsheet font -size 18]] } 6 test FormatCellNewStyle-2.7 {New Style} { set rotate90 [$spreadsheet style -rotate 90 -horizontal center] } 7 test FormatCellNewStyle-2.8 {New Style} { set rotate45 [$spreadsheet style -rotate 45] } 8 test FormatCellNewStyle-2.9 {New Style} { set left [$spreadsheet style -horizontal left] } 9 test FormatCellNewStyle-2.10 {New Style} { set center [$spreadsheet style -horizontal center] } 10 test FormatCellNewStyle-2.11 {New Style} { set right [$spreadsheet style -horizontal right] } 11 test FormatCellNewStyle-2.12 {New Style} { set top [$spreadsheet style -vertical top] } 12 test FormatCellNewStyle-2.13 {New Style} { set vcenter [$spreadsheet style -vertical center] } 13 test FormatCellNewStyle-2.14 {New Style} { set bottom [$spreadsheet style -vertical bottom] } 14 test FormatCellNewStyle-2.15 {New Style} { set hvcenter [$spreadsheet style -horizontal center -vertical center] } 15 test FormatCellNewStyle-2.16 {New Style} { set yellow [$spreadsheet style -fill [$spreadsheet fill -fgcolor FFFFFF00 -bgcolor 64 -patterntype solid]] } 16 test FormatCellNewStyle-2.17 {New Style} { set bLeft [$spreadsheet style -border [$spreadsheet border -leftstyle thin]] } 17 test FormatCellNewStyle-2.18 {New Style} { set bBottom [$spreadsheet style -border [$spreadsheet border -bottomstyle thin]] } 18 test FormatCellNewStyle-2.19 {New Style} { set bBottom2 [$spreadsheet style -border [$spreadsheet border -bottomstyle double]] } 19 test FormatCellNewStyle-2.20 {New Style} { set bBottomB [$spreadsheet style -border [$spreadsheet border -bottomstyle medium]] } 20 test FormatCellNewStyle-2.21 {New Style} { set bBottomD [$spreadsheet style -border [$spreadsheet border -bottomstyle dashed]] } 21 test FormatCellNewStyle-2.22 {New Style} { set bDiagonal [$spreadsheet style -border [$spreadsheet border -diagonalstyle medium -diagonaldirection up]] } 22 test FormatCellNewStyle-2.23 {New Style} { set dec2 [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal]] } 23 test FormatCellNewStyle-2.24 {New Style} { set dec2t [$spreadsheet style -numfmt [$spreadsheet numberformat -decimal -separator]] } 24 test FormatCellNewStyle-2.25 {New Style} { set dec3 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {#,##0.000}]] } 25 test FormatCellNewStyle-2.26 {New Style} { set dec3t [$spreadsheet style -numfmt [$spreadsheet numberformat -format {#,##0.000_ ;[Red]\-#,##0.000\ }]] } 26 test FormatCellNewStyle-2.27 {New Style} { set currency [$spreadsheet style -numfmt [$spreadsheet numberformat -format {#,##0.00\ "€"}]] } 27 test FormatCellNewStyle-2.28 {New Style} { set iso8601 [$spreadsheet style -numfmt [$spreadsheet numberformat -iso8601]] } 28 test FormatCellNewStyle-2.29 {New Style} { set date [$spreadsheet style -numfmt [$spreadsheet numberformat -date]] } 29 test FormatCellNewStyle-2.30 {New Style} { set date2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {[$-F800]dddd\,\ mmmm\ dd\,\ yyyy}]] } 30 test FormatCellNewStyle-2.31 {New Style} { set date3 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {[$-407]d/\ mmmm\ yyyy;@}]] } 31 test FormatCellNewStyle-2.32 {New Style} { set date4 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {d/m/yy\ h:mm;@}]] } 32 test FormatCellNewStyle-2.33 {New Style} { set time [$spreadsheet style -numfmt [$spreadsheet numberformat -time]] } 33 test FormatCellNewStyle-2.34 {New Style} { set time2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {[$-F400]h:mm:ss\ AM/PM}]] } 34 test FormatCellNewStyle-2.35 {New Style} { set percent [$spreadsheet style -numfmt [$spreadsheet numberformat -percent]] } 35 test FormatCellNewStyle-2.36 {New Style} { set percent2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {0.00%}]] } 36 test FormatCellNewStyle-2.37 {New Style} { set scientific [$spreadsheet style -numfmt [$spreadsheet numberformat -scientific]] } 37 test FormatCellNewStyle-2.38 {New Style} { set fraction [$spreadsheet style -numfmt [$spreadsheet numberformat -fraction]] } 38 test FormatCellNewStyle-2.39 {New Style} { set fraction2 [$spreadsheet style -numfmt [$spreadsheet numberformat -format {# ??/??}]] } 39 test FormatCellNewStyle-2.40 {New Style} { set text [$spreadsheet style -numfmt [$spreadsheet numberformat -string]] } 40 test FormatCellNewStyle-2.41 {New Style} { set wrap [$spreadsheet style -wrap] } 41 test FormatCellColumn-3.1 {Column Setting} { $spreadsheet column $sheet -index 0 -width 17.33203125 -bestfit } 0 test FormatCellColumn-3.2 {Column Setting} { $spreadsheet column $sheet -index 1 -width 20.5 -bestfit } 1 test FormatCellColumn-3.3 {Column Setting} { $spreadsheet column $sheet -index 4 -width 31.1640625 -bestfit } 4 test FormatCellColumn-3.4 {Column Setting} { $spreadsheet column $sheet -index 7 -width 11.1640625 -bestfit ;# -style 19 } 7 test FormatCellColumn-3.5 {Column Setting} { $spreadsheet column $sheet -index 8 ;# -style 15 } 8 test FormatCell-4.1 {Set Cell} { $spreadsheet cell $sheet Standard -index 0,0 -string } 0,0 test FormatCell-4.2 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 0,1 } 0,1 test FormatCell-4.3 {Set Cell} { $spreadsheet cell $sheet 1 -index 0,8 ;# -style 15 } 0,8 test FormatCell-4.4 {Set Cell} { $spreadsheet cell $sheet Standard -index 1,0 -string } 1,0 test FormatCell-4.5 {Set Cell} { $spreadsheet cell $sheet Text -index 1,1 -string } 1,1 test FormatCell-4.6 {Set Cell} { $spreadsheet cell $sheet {Zahl 2} -index 2,0 -string } 2,0 test FormatCell-4.7 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 2,1 -style $dec2 } 2,1 test FormatCell-4.8 {Set Cell} { $spreadsheet cell $sheet 1 -index 2,2 } 2,2 test FormatCell-4.9 {Set Cell} { $spreadsheet cell $sheet 2 -index 2,3 } 2,3 test FormatCell-4.10 {Set Cell} { $spreadsheet cell $sheet 0.00 -index 2,4 -string ;# -style 15 } 2,4 test FormatCell-4.11 {Set Cell} { $spreadsheet cell $sheet {Zahl 2 T} -index 3,0 -string } 3,0 test FormatCell-4.12 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 3,1 -style $dec2t } 3,1 test FormatCell-4.13 {Set Cell} { $spreadsheet cell $sheet 2 -index 3,2 } 3,2 test FormatCell-4.14 {Set Cell} { $spreadsheet cell $sheet 4 -index 3,3 } 3,3 test FormatCell-4.15 {Set Cell} { $spreadsheet cell $sheet #,##0.00 -index 3,4 -string } 3,4 test FormatCell-4.16 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 3,7 -style $date4 } 3,7 test FormatCell-4.17 {Set Cell} { $spreadsheet cell $sheet {Zahl 3} -index 4,0 -string } 4,0 test FormatCell-4.18 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 4,1 -style $dec3 } 4,1 test FormatCell-4.19 {Set Cell} { $spreadsheet cell $sheet 17 -index 4,2 } 4,2 test FormatCell-4.20 {Set Cell} { $spreadsheet cell $sheet 174 -index 4,3 } 4,3 test FormatCell-4.21 {Set Cell} { $spreadsheet cell $sheet #,##0.000 -index 4,4 -string } 4,4 test FormatCell-4.22 {Set Cell} { $spreadsheet cell $sheet {Zahl 3 C} -index 5,0 -string } 5,0 test FormatCell-4.23 {Set Cell} { $spreadsheet cell $sheet -3.1415 -index 5,1 -style $dec3t } 5,1 test FormatCell-4.24 {Set Cell} { $spreadsheet cell $sheet 16 -index 5,2 } 5,2 test FormatCell-4.25 {Set Cell} { $spreadsheet cell $sheet 173 -index 5,3 } 5,3 test FormatCell-4.26 {Set Cell} { $spreadsheet cell $sheet {#,##0.000_ ;[Red]\-#,##0.000\ } -index 5,4 -string } 5,4 test FormatCell-4.27 {Set Cell} { $spreadsheet cell $sheet Währung -index 6,0 -string } 6,0 test FormatCell-4.28 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 6,1 -style $currency } 6,1 test FormatCell-4.29 {Set Cell} { $spreadsheet cell $sheet 3 -index 6,2 } 6,2 test FormatCell-4.30 {Set Cell} { $spreadsheet cell $sheet 166 -index 6,3 } 6,3 test FormatCell-4.31 {Set Cell} { $spreadsheet cell $sheet {#,##0.00\ "€"} -index 6,4 -string } 6,4 test FormatCell-4.32 {Set Cell} { $spreadsheet cell $sheet tt.mm.jj -index 7,0 -string } 7,0 test FormatCell-4.33 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 7,1 -style $date } 7,1 test FormatCell-4.34 {Set Cell} { $spreadsheet cell $sheet 4 -index 7,2 } 7,2 test FormatCell-4.35 {Set Cell} { $spreadsheet cell $sheet 14 -index 7,3 } 7,3 test FormatCell-4.36 {Set Cell} { $spreadsheet cell $sheet mm-dd-yy -index 7,4 -string } 7,4 test FormatCell-4.37 {Set Cell} { $spreadsheet cell $sheet {tttt, t.mmmm.jj} -index 8,0 -string } 8,0 test FormatCell-4.38 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 8,1 -style $date2 } 8,1 test FormatCell-4.39 {Set Cell} { $spreadsheet cell $sheet 5 -index 8,2 } 8,2 test FormatCell-4.40 {Set Cell} { $spreadsheet cell $sheet 167 -index 8,3 } 8,3 test FormatCell-4.41 {Set Cell} { $spreadsheet cell $sheet {[$-F800]dddd\,\ mmmm\ dd\,\ yyyy} -index 8,4 -string } 8,4 test FormatCell-4.42 {Set Cell} { $spreadsheet cell $sheet t.mmmm.jjjj -index 9,0 -string } 9,0 test FormatCell-4.43 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 9,1 -style $date3 } 9,1 test FormatCell-4.44 {Set Cell} { $spreadsheet cell $sheet 6 -index 9,2 } 9,2 test FormatCell-4.45 {Set Cell} { $spreadsheet cell $sheet 168 -index 9,3 } 9,3 test FormatCell-4.46 {Set Cell} { $spreadsheet cell $sheet {[$-407]d/\ mmmm\ yyyy;@} -index 9,4 -string } 9,4 test FormatCell-4.47 {Set Cell} { $spreadsheet cell $sheet hh:mm:ss -index 10,0 -string } 10,0 test FormatCell-4.48 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 10,1 -style $time2 } 10,1 test FormatCell-4.49 {Set Cell} { $spreadsheet cell $sheet 7 -index 10,2 } 10,2 test FormatCell-4.50 {Set Cell} { $spreadsheet cell $sheet 169 -index 10,3 } 10,3 test FormatCell-4.51 {Set Cell} { $spreadsheet cell $sheet {[$-F400]h:mm:ss\ AM/PM} -index 10,4 -string } 10,4 test FormatCell-4.52 {Set Cell} { $spreadsheet cell $sheet hh:mm -index 11,0 -string } 11,0 test FormatCell-4.53 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 11,1 -style $time } 11,1 test FormatCell-4.54 {Set Cell} { $spreadsheet cell $sheet 8 -index 11,2 } 11,2 test FormatCell-4.55 {Set Cell} { $spreadsheet cell $sheet 170 -index 11,3 } 11,3 test FormatCell-4.56 {Set Cell} { $spreadsheet cell $sheet {h:mm;@} -index 11,4 -string } 11,4 test FormatCell-4.57 {Set Cell} { $spreadsheet cell $sheet {jjjj-mm-tt hh:mm:ss} -index 12,0 -string } 12,0 test FormatCell-4.58 {Set Cell} { $spreadsheet cell $sheet {2018-02-09 16:17:00} -index 12,1 -style $iso8601 } 12,1 test FormatCell-4.59 {Set Cell} { $spreadsheet cell $sheet 9 -index 12,2 } 12,2 test FormatCell-4.60 {Set Cell} { $spreadsheet cell $sheet 171 -index 12,3 } 12,3 test FormatCell-4.61 {Set Cell} { $spreadsheet cell $sheet {yyyy\-mm\-dd\ hh:mm:ss;@} -index 12,4 -string } 12,4 test FormatCell-4.62 {Set Cell} { $spreadsheet cell $sheet {Prozent 2} -index 13,0 -string } 13,0 test FormatCell-4.63 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 13,1 -style $percent2 } 13,1 test FormatCell-4.64 {Set Cell} { $spreadsheet cell $sheet 10 -index 13,2 } 13,2 test FormatCell-4.65 {Set Cell} { $spreadsheet cell $sheet 10 -index 13,3 } 13,3 test FormatCell-4.66 {Set Cell} { $spreadsheet cell $sheet 0.00% -index 13,4 -string } 13,4 test FormatCell-4.67 {Set Cell} { $spreadsheet cell $sheet {Bruch 1} -index 14,0 -string } 14,0 test FormatCell-4.68 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 14,1 -style $fraction } 14,1 test FormatCell-4.69 {Set Cell} { $spreadsheet cell $sheet 12 -index 14,2 } 14,2 test FormatCell-4.70 {Set Cell} { $spreadsheet cell $sheet 12 -index 14,3 } 14,3 test FormatCell-4.71 {Set Cell} { $spreadsheet cell $sheet {# ?/?} -index 14,4 -string } 14,4 test FormatCell-4.72 {Set Cell} { $spreadsheet cell $sheet {Bruch 2} -index 15,0 -string } 15,0 test FormatCell-4.73 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 15,1 -style $fraction2 } 15,1 test FormatCell-4.74 {Set Cell} { $spreadsheet cell $sheet 13 -index 15,2 } 15,2 test FormatCell-4.75 {Set Cell} { $spreadsheet cell $sheet 13 -index 15,3 } 15,3 test FormatCell-4.76 {Set Cell} { $spreadsheet cell $sheet {# ??/??} -index 15,4 -string } 15,4 test FormatCell-4.77 {Set Cell} { $spreadsheet cell $sheet {Wissenschaftl. 2} -index 16,0 -string } 16,0 test FormatCell-4.78 {Set Cell} { $spreadsheet cell $sheet 3.1415 -index 16,1 -style $scientific } 16,1 test FormatCell-4.79 {Set Cell} { $spreadsheet cell $sheet 14 -index 16,2 } 16,2 test FormatCell-4.80 {Set Cell} { $spreadsheet cell $sheet 11 -index 16,3 } 16,3 test FormatCell-4.81 {Set Cell} { $spreadsheet cell $sheet 0.00E+00 -index 16,4 -string } 16,4 test FormatCell-4.82 {Set Cell} { $spreadsheet cell $sheet Text -index 17,0 -string } 17,0 test FormatCell-4.83 {Set Cell} { $spreadsheet cell $sheet 3,1415 -index 17,1 -string -style $text } 17,1 test FormatCell-4.84 {Set Cell} { $spreadsheet cell $sheet 15 -index 17,2 } 17,2 test FormatCell-4.85 {Set Cell} { $spreadsheet cell $sheet 49 -index 17,3 } 17,3 test FormatCell-4.86 {Set Cell} { $spreadsheet cell $sheet @ -index 17,4 -string } 17,4 test FormatCell-4.87 {Set Cell} { $spreadsheet cell $sheet {Filter A} -index 19,5 -string ;# -style 19 } 19,5 test FormatCell-4.88 {Set Cell} { $spreadsheet cell $sheet {Filter B} -index 19,6 -string ;# -style 15 } 19,6 test FormatCell-4.89 {Set Cell} { $spreadsheet cell $sheet unten -index 20,0 -string } 20,0 test FormatCell-4.90 {Set Cell} { $spreadsheet cell $sheet {} -index 20,1 -style $bBottom } 20,1 test FormatCell-4.91 {Set Cell} { $spreadsheet cell $sheet links -index 21,0 -string } 21,0 test FormatCell-4.92 {Set Cell} { $spreadsheet cell $sheet {} -index 21,1 -style $bLeft } 21,1 test FormatCell-4.93 {Set Cell} { $spreadsheet cell $sheet fett -index 21,4 -string -style $bold } 21,4 test FormatCell-4.94 {Set Cell} { $spreadsheet cell $sheet {unten doppelt} -index 22,0 -string } 22,0 test FormatCell-4.95 {Set Cell} { $spreadsheet cell $sheet {} -index 22,1 -style $bBottom2 } 22,1 test FormatCell-4.96 {Set Cell} { $spreadsheet cell $sheet kursiv -index 22,4 -string -style $italic } 22,4 test FormatCell-4.97 {Set Cell} { $spreadsheet cell $sheet {unten mittel} -index 23,0 -string } 23,0 test FormatCell-4.98 {Set Cell} { $spreadsheet cell $sheet {} -index 23,1 -style $bBottomB } 23,1 test FormatCell-4.99 {Set Cell} { $spreadsheet cell $sheet unterstrichen -index 23,4 -string -style $underline } 23,4 test FormatCell-4.100 {Set Cell} { $spreadsheet cell $sheet {diagonal mittel} -index 24,0 -string } 24,0 test FormatCell-4.101 {Set Cell} { $spreadsheet cell $sheet {} -index 24,1 -style $bDiagonal } 24,1 test FormatCell-4.102 {Set Cell} { $spreadsheet cell $sheet {unten gestrichelt} -index 25,0 -string } 25,0 test FormatCell-4.103 {Set Cell} { $spreadsheet cell $sheet {} -index 25,1 -style $bBottomD } 25,1 test FormatCell-4.104 {Set Cell} { $spreadsheet cell $sheet {vorne rot} -index 27,0 -string } 27,0 test FormatCell-4.105 {Set Cell} { $spreadsheet cell $sheet rot -index 27,1 -string -style $red } 27,1 test FormatCell-4.106 {Set Cell} { $spreadsheet cell $sheet {hinten gelb} -index 28,0 -string } 28,0 test FormatCell-4.107 {Set Cell} { $spreadsheet cell $sheet gelb -index 28,1 -string -style $yellow } 28,1 test FormatCell-4.108 {Set Cell} { $spreadsheet cell $sheet links -index 30,0 -string } 30,0 test FormatCell-4.109 {Set Cell} { $spreadsheet cell $sheet links -index 30,1 -string -style $left } 30,1 test FormatCell-4.110 {Set Cell} { $spreadsheet cell $sheet mitte -index 31,0 -string } 31,0 test FormatCell-4.111 {Set Cell} { $spreadsheet cell $sheet mitte -index 31,1 -string -style $center } 31,1 test FormatCell-4.112 {Set Cell} { $spreadsheet cell $sheet rechts -index 32,0 -string } 32,0 test FormatCell-4.113 {Set Cell} { $spreadsheet cell $sheet rechts -index 32,1 -string -style $right } 32,1 test FormatCell-4.114 {Set Cell} { $spreadsheet cell $sheet oben -index 33,0 -string } 33,0 test FormatCell-4.115 {Set Cell} { $spreadsheet cell $sheet oben -index 33,1 -string -style $top } 33,1 test FormatCell-4.116 {Set Cell} { $spreadsheet cell $sheet mitte -index 34,0 -string } 34,0 test FormatCell-4.117 {Set Cell} { $spreadsheet cell $sheet mitte -index 34,1 -string -style $vcenter } 34,1 test FormatCell-4.118 {Set Cell} { $spreadsheet cell $sheet {Calibri 9} -index 34,4 -string -style $font9 } 34,4 test FormatCell-4.119 {Set Cell} { $spreadsheet cell $sheet unten -index 35,0 -string } 35,0 test FormatCell-4.120 {Set Cell} { $spreadsheet cell $sheet unten -index 35,1 -string -style $bottom } 35,1 test FormatCell-4.121 {Set Cell} { $spreadsheet cell $sheet {Text 90} -index 38,0 -string -style $rotate90 } 38,0 test FormatCell-4.122 {Set Cell} { $spreadsheet cell $sheet {Text 45} -index 38,1 -string -style $rotate45 } 38,1 test FormatCell-4.123 {Set Cell} { $spreadsheet cell $sheet {Calibri 18} -index 38,4 -string -style $font18 } 38,4 test FormatCell-4.124 {Set Cell} { $spreadsheet cell $sheet {12 Zellen} -index 39,3 -string -style $hvcenter } 39,3 test FormatCell-4.125 {Set Cell} { $spreadsheet cell $sheet {3 Spalten} -index 40,0 -string } 40,0 test FormatCell-4.126 {Set Cell} { $spreadsheet cell $sheet {3 Zeilen} -index 41,1 -string } 41,1 test FormatCell-4.127 {Set Cell} { $spreadsheet cell $sheet {this text will be automatically wrapped by excel} -index H27 -style $wrap } 26,7 test FormatCell-4.128 {Set Cell} { $spreadsheet cell $sheet a -index F21 -style $center } 20,5 test FormatCell-4.129 {Set Cell} { $spreadsheet cell $sheet a -index F22 -style $center } 21,5 test FormatCell-4.130 {Set Cell} { $spreadsheet cell $sheet b -index F23 -style $center } 22,5 test FormatCell-4.130 {Set Cell} { $spreadsheet cell $sheet 1 -index G21 -style $center } 20,6 test FormatCell-4.131 {Set Cell} { $spreadsheet cell $sheet 2 -index G22 -style $center } 21,6 test FormatCell-4.132 {Set Cell} { $spreadsheet cell $sheet 2 -index G23 -style $center } 22,6 test FormatCell-4.133 {Set Row} { $spreadsheet row $sheet -index 10 } 10 test FormatCell-4.134 {Set Cell} { $spreadsheet cell $sheet 3 -index G } 10,6 test FormatCell-4.135 {Set Cell} { $spreadsheet cell $sheet 5 } 10,7 test FormatCell-4.136 {Set Cell} { $spreadsheet cell $sheet {} -formula G11+H11 } 10,8 test FormatCell-4.137 {Hyperlink} { $spreadsheet cell $sheet {homepage} -index 45,0 -hyperlink {https://fossil.sowaswie.de/ooxml} -tooltip {weblink} } 45,0 test FormatCellFreeze-5.1 {Freeze} { $spreadsheet freeze $sheet 20,5 } 0 test FormatCellAutoFilter-5.2 {Auto Filter} { $spreadsheet autofilter $sheet 19,5 19,6 } 0 test FormatCellRowHeight-6.1 {Row Height} { $spreadsheet rowheight $sheet 33 20 } 33 test FormatCellRowHeight-6.2 {Row Height} { $spreadsheet rowheight $sheet 34 20 } 34 test FormatCellRowHeight-6.3 {Row Height} { $spreadsheet rowheight $sheet 35 20 } 35 test FormatCellMerge-7.1 {Merge} { $spreadsheet merge $sheet 40,0 40,2 } 0 test FormatCellMerge-7.2 {Merge} { $spreadsheet merge $sheet 41,1 43,1 } 0 test FormatCellMerge-7.3 {Merge} { $spreadsheet merge $sheet 39,3 42,5 } 0 foreach item {obj cells fonts numFmts styles fills borders cols view hlinks} { array set w_$item [array get ${spreadsheet}::$item] } test FormatCellWriteSpreatsheet-8.1 {Write Spreatsheet} { $spreadsheet write formatcell.xlsx } 0 test FormatCellDestroySpreatsheet-8.2 {Destroy Spreatsheet} { $spreadsheet destroy } 0 test FormatCellReadWorkbook-9.1 {Read Workbook} { array set workbook [ooxml::xl_read formatcell.xlsx] return [llength $workbook(sheets)] } 1 test FormatCellCheckBorders-9.2 {Check Borders} { set rc 1 for {set i 0} {$i < $w_obj(borders)} {incr i} { set dw $w_borders($i) set dr $workbook(s,borders,$i) foreach key {left right top bottom diagonal} { array set w [dict get $dw $key] array set r [dict get $dr $key] foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r } unset -nocomplain dw dr } return $rc } 1 test FormatCellCheckFills-9.3 {Check Fills} { set rc 1 for {set i 0} {$i < $w_obj(fills)} {incr i} { array set w $w_fills($i) array set r $workbook(s,fills,$i) foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r } return $rc } 1 test FormatCellCheckFonts-9.4 {Check Fonts} { set rc 1 for {set i 0} {$i < $w_obj(fonts)} {incr i} { array set w $w_fonts($i) array set r $workbook(s,fonts,$i) foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r } return $rc } 1 test FormatCellCheckNumFmts-9.5 {Check NumFmts} { set rc 1 for {set i 166} {$i < $w_obj(numFmts)} {incr i} { if {![info exists workbook(s,numFmts,$i)] || $workbook(s,numFmts,$i) ne $w_numFmts($i)} { set rc 0 } } return $rc } 1 test FormatCellCheckStyles-9.6 {Check Styles} { set rc 1 for {set i 0} {$i < $w_obj(styles)} {incr i} { array set w $w_styles($i) array set r $workbook(s,styles,$i) foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r } return $rc } 1 test FormatCellCheckColumns-10.1 {Check Worksheet Columns} { set rc 1 set idxList {} foreach n [array names w_cols 1,*] { lappend idxList [lindex [split $n ,] end] } foreach i $idxList { array set w $w_cols(1,$i) array set r $workbook(0,col,$i) foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r } return $rc } 1 test FormatCellCheckFilter-10.2 {Check Worksheet Filter} { set rc 1 if {![info exists workbook(0,filter)] || $workbook(0,filter) ne $w_obj(autofilter,1)} { set rc 0 } return $rc } 1 test FormatCellCheckFreeze-10.3 {Check Worksheet Freeze} { set rc 1 if {![info exists workbook(0,freeze)] || $workbook(0,freeze) ne $w_obj(freeze,1)} { set rc 0 } return $rc } 1 test FormatCellCheckMerge-10.4 {Check Worksheet Merge} { set rc 1 if {![info exists workbook(0,merge)]} { set rc 0 } else { foreach item $workbook(0,merge) { if {$item ni $w_obj(merge,1)} { set rc 0 } } } return $rc } 1 test FormatCellCheckRowHeight-10.5 {Check Worksheet RowHeight} { set rc 1 array set w $w_obj(rowHeight,1) array set r $workbook(0,rowheight) foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r return $rc } 1 test FormatCellCheckCells-10.6 {Check Cells} { set rc 1 foreach item [lsort -dictionary [array names w_cells 1,*,*]] { lassign [split $item ,] sheet row col incr sheet -1 array set w $w_cells($item) array unset w t array set r {} foreach tag {f s t v d} { if {[info exists workbook($sheet,$tag,$row,$col)]} { if {$tag eq {d}} { # overwrite datetime string with ole date array set r [list v $workbook($sheet,$tag,$row,$col)] } elseif {$tag eq {f}} { if {[dict exists $workbook($sheet,$tag,$row,$col) f]} { array set r [list $tag [dict get $workbook($sheet,$tag,$row,$col) f]] } else { array set r [list $tag {}] } } else { array set r [list $tag $workbook($sheet,$tag,$row,$col)] } } } foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { puts stderr "err [info exists r($n)] w 'r($n)' '$v' / r '$r($n)'" set rc 0 } } unset -nocomplain w r } return $rc } 1 test FormatCellCheckCells-10.7 {Check Hyperlinks} { set rc 1 foreach item [lsort -dictionary [array names w_hlinks 1,*,*]] { lassign [split $item ,] sheet row col incr sheet -1 array unset w r array set w $w_hlinks($item) array set r {} foreach tag {l} { if {[info exists workbook($sheet,$tag,$row,$col)]} { foreach key {l t} { if {[dict exists $workbook($sheet,$tag,$row,$col) $key]} { array set r [list $key [dict get $workbook($sheet,$tag,$row,$col) $key]] } else { array set r [list $key {}] } } } } foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { puts stderr "err [info exists r($n)] w 'r($n)' '$v' / r '$r($n)'" set rc 0 } } unset -nocomplain w r } return $rc #w_hlinks(1,45,0) = l https://fossil.sowaswie.de/ooxml t weblink #workbook(0,l,45,0) = l https://fossil.sowaswie.de/ooxml t weblink } 1 test FormatCellCheckView-11.1 {Check View} { set rc 1 array set w [array get w_view] array set r $workbook(view) foreach {n v} [array get w] { if {![info exists r($n)] || $r($n) ne $v} { set rc 0 } } unset -nocomplain w r return $rc } 1 file delete -force formatcell.xlsx # cleanup ::tcltest::cleanupTests return # Local Variables: # tcl-indent-level: 2 # End: ooxml/tests/test_sheet1_xml_no_utf8.xlsx000664 000765 000024 00000016722 14716573572 021177 0ustar00alexstaff000000 000000 PK! '0docProps/app.xml (n0 n@VQzذq{gd:*KIgomɟqY1 1"CoBeϋ"K<I\ϟ*#YL[TQ26f,{V NVoyjГo=qGM`zPZ֪  \SnYħ׿!{Nɩz)Z:T 8\@]K䩠eƤUG % Zĸ}ۘ kE}7h)mܿDQ~󡁃`aᜳ0W{`G6Sy+ehZ/}[[ |yQw8nXPwzB@ϯfwRSPK!-=]docProps/core.xml (N0HC{8RYI*JHqm6}{ A;ή/Z$E(EzݬgJF+(ZW97k VrUHPAi+OdžKL0pHD'#|ڦ ;Lt6)k4aS)[AWƶmv ~[?Ƶn[`^RCU1I;_Ü_KjuV}B:D?+f,nbBb2ߐhwwᆂ<6π2PK!"Zxl/sharedStrings.xml\A 0Ew "hB;@3.3̢B'2HҴ\R^&WCFr(׫jHba jp37ZoÿBO PK!@|Ԇ xl/styles.xmlTmo0>iwj!K"Z"UI}u$Vl%w:m{szs=3cVB*u>_`uTUTh2|bߥ֝s fE-LR{OT'1V_a8'r{,DR6AeCqݩH҆P=F3Z;V k^,dI)OkEnZzR*/o~GT%$OK-A*:TޭSo+'9 V'<8fT S47N gٔ?;T9O+NZQSA.S2!~/5R,2 cp!AzOz7âc'_Gvd*Z.W q,B{lwāZTpO⭌/^vDG*, 5f/Nل1pNݘkJPI\'A16vҤ4ާp.F4ݗCaLJU 9B8cvd&` /}'<Ó?f;(_|ٟ_㹎O~s;&[x{W# >$1U|`1Mydc!b@ض^] ju[) xy~sA,#_b+r,y2u lc(1B۟@Ydau8‘!Ɩ&pn%Cr`$Ri -˨m=|d"@B~h.Pl39D1Dd#HG:Dz)sc̹ϵ ={tTC]Ę0Bʙ$B":63yq@p"BptUT$|2O->.a2 $9SONԳtZ;)Z;|?(=4Ocxg ;~^7څPuv7.'}x;4@Vj+72(iT'e#"`_U)MO3cVYm)j08۱VrwGhvm 4]ʼNnyI@'$Lu Ʋw$΅E¢)/C@mX?9j Qr_{PK!L|4xl/workbook.xmlTn0?zXJR?( p/4SJRޕTn}I^%,9=U|cV) >%΅ڧqa4:r&w6ʦtN<*fǺ;6s85{XnKWI/+bB!1oE!8,5o*P1 m)j;U-p3q]R'҆$>t%VnP^_ !ᩗ̪Id֭r ON~[0M=o BzO+ ɡ`t4axaV5a/Jl 'lg+IcdJ"df{pޞ. ozH/$~pdl,T) rg2t~ľtv0g]HT@JwbZJIf#g%atprf8"A]7_MQ4 Gh2\׫j݌'ÃVasf{BX'z1T ePK qpY$ Nxl/worksheets/sheet1.xmlPK!>xl/_rels/workbook.xml.rels (RMK0 0wvt/"Uɴ)&!3~*]XK/oyv5+zl;obG s>,8(%"D҆4j0u2jsMY˴S쭂 )fCy I< y!+EfMyk K5=|t G)s墙UtB),fPK!bh^[Content_Types].xml (N0EHC-Jܲ@5*Q>ēƪc[iiBj7{2hnmƻR U^7/%rZY@1__fqR4DAJh>Vƹ Z9NV8ʩji){^-I"{v^P!XS)bRrKs(3`c07M4ZƐk+|\|z(P6h_-[@!Pk2n}?L %ddN"m,ǞDO97*~ɸ8Oc|nEB!$};{[2PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~)xl/_rels/workbook.xml.relsPK-!bh^\[Content_Types].xmlPK-!U0#L _rels/.relsPK ooxml/autom4te.cache/traces.0000664 000765 000024 00000046305 14763501223 016473 0ustar00alexstaff000000 000000 m4trace:configure.ac:16: -1- AC_INIT([ooxml], [1.10]) m4trace:configure.ac:16: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:16: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:16: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:16: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:16: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:16: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:16: -1- AC_SUBST([SHELL]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([SHELL]) m4trace:configure.ac:16: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.ac:16: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.ac:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PACKAGE_NAME]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PACKAGE_STRING]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:16: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([PACKAGE_URL]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:16: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([exec_prefix]) m4trace:configure.ac:16: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.ac:16: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([prefix]) m4trace:configure.ac:16: -1- m4_pattern_allow([^prefix$]) m4trace:configure.ac:16: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([program_transform_name]) m4trace:configure.ac:16: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.ac:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([bindir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^bindir$]) m4trace:configure.ac:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([sbindir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.ac:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([libexecdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.ac:16: -1- AC_SUBST([datarootdir], ['${prefix}/share']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([datarootdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.ac:16: -1- AC_SUBST([datadir], ['${datarootdir}']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([datadir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^datadir$]) m4trace:configure.ac:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([sysconfdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.ac:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([sharedstatedir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.ac:16: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([localstatedir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.ac:16: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([runstatedir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^runstatedir$]) m4trace:configure.ac:16: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([includedir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^includedir$]) m4trace:configure.ac:16: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([oldincludedir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.ac:16: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ['${datarootdir}/doc/${PACKAGE}'])]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([docdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^docdir$]) m4trace:configure.ac:16: -1- AC_SUBST([infodir], ['${datarootdir}/info']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([infodir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^infodir$]) m4trace:configure.ac:16: -1- AC_SUBST([htmldir], ['${docdir}']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([htmldir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.ac:16: -1- AC_SUBST([dvidir], ['${docdir}']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([dvidir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.ac:16: -1- AC_SUBST([pdfdir], ['${docdir}']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([pdfdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.ac:16: -1- AC_SUBST([psdir], ['${docdir}']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([psdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^psdir$]) m4trace:configure.ac:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([libdir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^libdir$]) m4trace:configure.ac:16: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([localedir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^localedir$]) m4trace:configure.ac:16: -1- AC_SUBST([mandir], ['${datarootdir}/man']) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([mandir]) m4trace:configure.ac:16: -1- m4_pattern_allow([^mandir$]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ @%:@undef PACKAGE_NAME]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ @%:@undef PACKAGE_TARNAME]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ @%:@undef PACKAGE_VERSION]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ @%:@undef PACKAGE_STRING]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ @%:@undef PACKAGE_BUGREPORT]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) m4trace:configure.ac:16: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:16: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ @%:@undef PACKAGE_URL]) m4trace:configure.ac:16: -1- AC_SUBST([DEFS]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([DEFS]) m4trace:configure.ac:16: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.ac:16: -1- AC_SUBST([ECHO_C]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([ECHO_C]) m4trace:configure.ac:16: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.ac:16: -1- AC_SUBST([ECHO_N]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([ECHO_N]) m4trace:configure.ac:16: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.ac:16: -1- AC_SUBST([ECHO_T]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([ECHO_T]) m4trace:configure.ac:16: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.ac:16: -1- AC_SUBST([LIBS]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:16: -1- AC_SUBST([build_alias]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([build_alias]) m4trace:configure.ac:16: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.ac:16: -1- AC_SUBST([host_alias]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([host_alias]) m4trace:configure.ac:16: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.ac:16: -1- AC_SUBST([target_alias]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([target_alias]) m4trace:configure.ac:16: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.ac:24: -1- AC_SUBST([CYGPATH]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([CYGPATH]) m4trace:configure.ac:24: -1- m4_pattern_allow([^CYGPATH$]) m4trace:configure.ac:24: -1- AC_SUBST([EXEEXT]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.ac:24: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.ac:24: -1- AC_SUBST([CYGPATH]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([CYGPATH]) m4trace:configure.ac:24: -1- m4_pattern_allow([^CYGPATH$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_LIB_FILE]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_LIB_FILE]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_LIB_FILE$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_LIB_FILE8]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_LIB_FILE8]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_LIB_FILE8$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_LIB_FILE9]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_LIB_FILE9]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_LIB_FILE9$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_STUB_SOURCES]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_STUB_SOURCES]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_STUB_SOURCES$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_STUB_OBJECTS]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_STUB_OBJECTS]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_STUB_OBJECTS$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_TCL_SOURCES]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_TCL_SOURCES]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_TCL_SOURCES$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_HEADERS]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_HEADERS]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_HEADERS$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_INCLUDES]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_INCLUDES]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_INCLUDES$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_LIBS]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_LIBS]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_LIBS$]) m4trace:configure.ac:24: -1- AC_SUBST([PKG_CFLAGS]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PKG_CFLAGS]) m4trace:configure.ac:24: -1- m4_pattern_allow([^PKG_CFLAGS$]) m4trace:configure.ac:24: -1- AC_SUBST([INSTALL]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL]) m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL$]) m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_DATA_DIR]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_DATA_DIR]) m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_DATA_DIR$]) m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_LIBRARY]) m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_LIBRARY]) m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_LIBRARY$]) m4trace:configure.ac:26: -1- AC_CONFIG_AUX_DIR([tclconfig]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_VERSION]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_VERSION]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_VERSION$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_PATCH_LEVEL]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_PATCH_LEVEL]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_PATCH_LEVEL$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_BIN_DIR]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_BIN_DIR]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_BIN_DIR$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_SRC_DIR]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_SRC_DIR]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_SRC_DIR$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_LIB_FILE]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_LIB_FILE]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_LIB_FILE$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_LIB_FLAG]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_LIB_FLAG]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_LIB_FLAG$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_LIB_SPEC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_LIB_SPEC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_LIB_SPEC$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_STUB_LIB_FILE]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_STUB_LIB_FILE]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_STUB_LIB_FILE$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_STUB_LIB_FLAG]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_STUB_LIB_FLAG]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_STUB_LIB_FLAG$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_STUB_LIB_SPEC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_STUB_LIB_SPEC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_STUB_LIB_SPEC$]) m4trace:configure.ac:33: -1- AC_SUBST([CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:33: -1- AC_SUBST([CFLAGS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CFLAGS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.ac:33: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:33: -1- AC_SUBST([LIBS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:33: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:33: -1- AC_SUBST([CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:33: -1- AC_SUBST([CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:33: -1- AC_SUBST([CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:33: -1- AC_SUBST([CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:33: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([ac_ct_CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.ac:33: -1- AC_SUBST([CC]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:33: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.ac:33: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.ac:33: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([OBJEXT]) m4trace:configure.ac:33: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.ac:33: -1- AC_SUBST([CYGPATH]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CYGPATH]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CYGPATH$]) m4trace:configure.ac:33: -1- AC_SUBST([CLEANFILES]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CLEANFILES]) m4trace:configure.ac:33: -1- m4_pattern_allow([^CLEANFILES$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_LIBS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_LIBS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_LIBS$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_DEFS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_DEFS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_DEFS$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_EXTRA_CFLAGS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_EXTRA_CFLAGS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_EXTRA_CFLAGS$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_LD_FLAGS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_LD_FLAGS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_LD_FLAGS$]) m4trace:configure.ac:33: -1- AC_SUBST([TCL_SHLIB_LD_LIBS]) m4trace:configure.ac:33: -1- AC_SUBST_TRACE([TCL_SHLIB_LD_LIBS]) m4trace:configure.ac:33: -1- m4_pattern_allow([^TCL_SHLIB_LD_LIBS$]) m4trace:configure.ac:51: -1- AC_SUBST([PKG_TCL_SOURCES]) m4trace:configure.ac:51: -1- AC_SUBST_TRACE([PKG_TCL_SOURCES]) m4trace:configure.ac:51: -1- m4_pattern_allow([^PKG_TCL_SOURCES$]) m4trace:configure.ac:73: -1- AC_SUBST([TCLSH_PROG]) m4trace:configure.ac:73: -1- AC_SUBST_TRACE([TCLSH_PROG]) m4trace:configure.ac:73: -1- m4_pattern_allow([^TCLSH_PROG$]) m4trace:configure.ac:81: -1- AC_CONFIG_FILES([Makefile pkgIndex.tcl]) m4trace:configure.ac:82: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:82: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:82: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([LTLIBOBJS]) m4trace:configure.ac:82: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([top_builddir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([top_build_prefix]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([srcdir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([abs_srcdir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([top_srcdir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([abs_top_srcdir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([builddir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([abs_builddir]) m4trace:configure.ac:82: -1- AC_SUBST_TRACE([abs_top_builddir]) ooxml/autom4te.cache/output.0000664 000765 000024 00000432400 14763501223 016545 0ustar00alexstaff000000 000000 @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.72 for ooxml 1.10. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2023 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 ${ZSH_VERSION+y} && (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 e in @%:@( e) case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # 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'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 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 \${ZSH_VERSION+y} && (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 e in @%:@( e) case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac ;; 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 case e in @%:@( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || 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" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in @%:@( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in @%:@( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi 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'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi ;; esac 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 @S|@? 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 "@S|@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=`printf "%s\n" "$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 || printf "%s\n" 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 case e in @%:@( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in @%:@( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$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 || printf "%s\n" 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 ' t clear :clear 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" || { printf "%s\n" "$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 } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_@&t@echo='printf %s\n' as_@&t@echo_n='printf %s' 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated 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=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ooxml' PACKAGE_TARNAME='ooxml' PACKAGE_VERSION='1.10' PACKAGE_STRING='ooxml 1.10' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIB@&t@OBJS TCLSH_PROG TCL_SHLIB_LD_LIBS TCL_LD_FLAGS TCL_EXTRA_CFLAGS TCL_DEFS TCL_LIBS CLEANFILES OBJEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC TCL_STUB_LIB_SPEC TCL_STUB_LIB_FLAG TCL_STUB_LIB_FILE TCL_LIB_SPEC TCL_LIB_FLAG TCL_LIB_FILE TCL_SRC_DIR TCL_BIN_DIR TCL_PATCH_LEVEL TCL_VERSION INSTALL_LIBRARY INSTALL_SCRIPT INSTALL_PROGRAM INSTALL_DATA INSTALL_DATA_DIR INSTALL PKG_CFLAGS PKG_LIBS PKG_INCLUDES PKG_HEADERS PKG_TCL_SOURCES PKG_STUB_OBJECTS PKG_STUB_SOURCES PKG_LIB_FILE9 PKG_LIB_FILE8 PKG_LIB_FILE EXEEXT CYGPATH 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 runstatedir 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 with_tcl with_tcl8 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # 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' runstatedir='${localstatedir}/run' 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 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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=`printf "%s\n" "$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=`printf "%s\n" "$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. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$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" ;; *) printf "%s\n" "$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 runstatedir 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 || printf "%s\n" 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 ooxml 1.10 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 @<:@@S|@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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --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/ooxml@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ooxml 1.10:";; esac cat <<\_ACEOF Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tcl directory containing tcl configuration (tclConfig.sh) --with-tcl8 Compile for Tcl8 in Tcl9 environment 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 Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. 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 printf "%s\n" "$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 ooxml configure 1.10 generated by GNU Autoconf 2.72 Copyright (C) 2023 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.@S|@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 conftest.beam 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\"" printf "%s\n" "$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 printf "%s\n" "$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 case e in @%:@( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac 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 ooxml $as_me 1.10, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "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=`printf "%s\n" "$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=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$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 printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$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 printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in @%:@( */*) : ;; @%:@( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (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; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* 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 do not provoke an error unfortunately, instead are silently treated as an "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 is necessary to write \x00 == 0 to get something that is 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 **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # 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,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$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=`printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-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 #-------------------------------------------------------------------- # Call TEA_INIT as the first TEA_ macro to set up initial vars. # This will define a ${TEA_PLATFORM} variable == "unix" or "windows" # as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE. #-------------------------------------------------------------------- TEA_VERSION="3.13" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking TEA configuration" >&5 printf %s "checking TEA configuration... " >&6; } if test x"${PACKAGE_NAME}" = x ; then as_fn_error $? " The PACKAGE_NAME variable must be defined by your TEA configure.ac" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (TEA ${TEA_VERSION})" >&5 printf "%s\n" "ok (TEA ${TEA_VERSION})" >&6; } # If the user did not set CFLAGS, set it now to keep macros # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi case "`uname -s`" in *win32*|*WIN32*|*MINGW32_*|*MINGW64_*|*MSYS_*) # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_CYGPATH="cygpath -m" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi ;; esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 printf "%s\n" "$CYGPATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi EXEEXT=".exe" TEA_PLATFORM="windows" ;; *CYGWIN_*) EXEEXT=".exe" # CYGPATH and TEA_PLATFORM are determined later in LOAD_TCLCONFIG ;; *) CYGPATH=echo # Maybe we are cross-compiling.... case ${host_alias} in *mingw32*) EXEEXT=".exe" TEA_PLATFORM="windows" ;; *) EXEEXT="" TEA_PLATFORM="unix" ;; esac ;; esac # Check if exec_prefix is set. If not use fall back to prefix. # Note when adjusted, so that TEA_PREFIX can correct for this. # This is needed for recursive configures, since autoconf propagates # $prefix, but not $exec_prefix (doh!). if test x$exec_prefix = xNONE ; then exec_prefix_default=yes exec_prefix=$prefix fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&5 printf "%s\n" "$as_me: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&6;} # This package name must be replaced statically for AC_SUBST to work # We AC_SUBST these here to ensure they are subst'ed, # in case the user doesn't call TEA_ADD_... # Configure the installer. INSTALL='$(SHELL) $(srcdir)/tclconfig/install-sh -c' INSTALL_DATA_DIR='${INSTALL} -d -m 755' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL} -m 755' INSTALL_SCRIPT='${INSTALL} -m 755' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system version" >&5 printf %s "checking system version... " >&6; } if test ${tcl_cv_sys_version+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) # TEA specific: if test "${TEA_PLATFORM}" = "windows" ; then tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: can't find uname command" >&5 printf "%s\n" "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then tcl_cv_sys_version=NetBSD-Debian fi fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_sys_version" >&5 printf "%s\n" "$tcl_cv_sys_version" >&6; } system=$tcl_cv_sys_version case $system in HP-UX-*) INSTALL_LIBRARY='${INSTALL} -m 755' ;; *) INSTALL_LIBRARY='${INSTALL} -m 644' ;; esac #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- # # Ok, lets find the tcl configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tcl # if test x"${no_tcl}" = x ; then # we reset no_tcl in case something fails here no_tcl=true @%:@ Check whether --with-tcl was given. if test ${with_tcl+y} then : withval=$with_tcl; with_tclconfig="${withval}" fi @%:@ Check whether --with-tcl8 was given. if test ${with_tcl8+y} then : withval=$with_tcl8; with_tcl8="${withval}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl configuration" >&5 printf %s "checking for Tcl configuration... " >&6; } if test ${ac_cv_c_tclconfig+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then case "${with_tclconfig}" in */tclConfig.sh ) if test -f "${with_tclconfig}"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5 printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;} with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`" fi ;; esac if test -f "${with_tclconfig}/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`" else as_fn_error $? "${with_tclconfig} directory doesn't contain tclConfig.sh" "$LINENO" 5 fi fi # then check for a private Tcl installation if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ../tcl \ `ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \ ../../tcl \ `ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`" break fi done fi # TEA specific: on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few common install locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.5 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few other private locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi ;; esac fi if test x"${ac_cv_c_tclconfig}" = x ; then TCL_BIN_DIR="# no Tcl configs found" as_fn_error $? "Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh" "$LINENO" 5 else no_tcl= TCL_BIN_DIR="${ac_cv_c_tclconfig}" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf "%s\n" "found ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$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 ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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. printf "%s\n" "$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 -version; 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\"" printf "%s\n" "$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 printf "%s\n" "$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 (void) { ; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$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+y} && 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 case e in @%:@( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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 case e in @%:@( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$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 case e in @%:@( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$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 (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$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 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$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 case e in @%:@( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$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; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in @%:@( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) 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 (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in @%:@( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in @%:@( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; 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.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; 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 ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in @%:@( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in @%:@( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in @%:@( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in @%:@( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _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 conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in @%:@( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in @%:@( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf %s "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... " >&6; } if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: loading" >&5 printf "%s\n" "loading" >&6; } . "${TCL_BIN_DIR}/tclConfig.sh" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5 printf "%s\n" "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi # If the TCL_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TCL_LIB_SPEC will be set to the value # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC # instead of TCL_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f "${TCL_BIN_DIR}/Makefile" ; then TCL_LIB_SPEC="${TCL_BUILD_LIB_SPEC}" TCL_STUB_LIB_SPEC="${TCL_BUILD_STUB_LIB_SPEC}" TCL_STUB_LIB_PATH="${TCL_BUILD_STUB_LIB_PATH}" elif test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tcl.framework installed in an arbitrary location. case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then for i in "`cd "${TCL_BIN_DIR}"; pwd`" \ "`cd "${TCL_BIN_DIR}"/../..; pwd`"; do if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then TCL_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TCL_LIB_FILE}" break fi done fi if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then TCL_STUB_LIB_SPEC="-L`echo "${TCL_BIN_DIR}" | sed -e 's/ /\\\\ /g'` ${TCL_STUB_LIB_FLAG}" TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}" fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking platform" >&5 printf %s "checking platform... " >&6; } hold_cc=$CC; CC="$TCL_CC" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifdef _WIN32 #error win32 #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # first test we've already retrieved platform (cross-compile), fallback to unix otherwise: TEA_PLATFORM="${TEA_PLATFORM-unix}" CYGPATH=echo else case e in @%:@( e) TEA_PLATFORM="windows" # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 else case e in @%:@( e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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_CYGPATH="cygpath -m" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" fi ;; esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 printf "%s\n" "$CYGPATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC=$hold_cc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEA_PLATFORM" >&5 printf "%s\n" "$TEA_PLATFORM" >&6; } # The BUILD_$pkg is to define the correct extern storage class # handling when making this package printf "%s\n" "@%:@define BUILD_${PACKAGE_NAME} /**/" >>confdefs.h # Do this here as we have fully defined TEA_PLATFORM now if test "${TEA_PLATFORM}" = "windows" ; then EXEEXT=".exe" CLEANFILES="$CLEANFILES *.lib *.dll *.pdb *.exp" fi # TEA specific: #----------------------------------------------------------------------- # Handle the --prefix=... option by defaulting to what Tcl gave. # Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER. #----------------------------------------------------------------------- if test "${prefix}" = "NONE"; then prefix_default=yes if test x"${TCL_PREFIX}" != x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&5 printf "%s\n" "$as_me: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&6;} prefix=${TCL_PREFIX} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --prefix defaulting to /usr/local" >&5 printf "%s\n" "$as_me: --prefix defaulting to /usr/local" >&6;} prefix=/usr/local fi fi if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \ -o x"${exec_prefix_default}" = x"yes" ; then if test x"${TCL_EXEC_PREFIX}" != x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&5 printf "%s\n" "$as_me: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&6;} exec_prefix=${TCL_EXEC_PREFIX} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to ${prefix}" >&5 printf "%s\n" "$as_me: --exec-prefix defaulting to ${prefix}" >&6;} exec_prefix=$prefix fi fi #----------------------------------------------------------------------- # Specify the C source files to compile in TEA_ADD_SOURCES, # public headers that need to be installed in TEA_ADD_HEADERS, # stub library C source files to compile in TEA_ADD_STUB_SOURCES, # and runtime Tcl library files in TEA_ADD_TCL_SOURCES. # This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS # and PKG_TCL_SOURCES. #----------------------------------------------------------------------- vars="ooxml.tcl" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then as_fn_error $? "could not find tcl source file '${srcdir}/$i'" "$LINENO" 5 fi PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i" done #-------------------------------------------------------------------- # You can add more files to clean if your extension creates any extra # files by extending CLEANFILES. # Add pkgIndex.tcl if it is generated in the Makefile instead of ./configure # and change Makefile.in to move it from CONFIG_CLEAN_FILES to BINARIES var. # # A few miscellaneous platform-specific items: # TEA_ADD_* any platform specific compiler/build info here. #-------------------------------------------------------------------- #CLEANFILES="$CLEANFILES" #-------------------------------------------------------------------- # Determine the name of the tclsh and/or wish executables in the # Tcl and Tk build directories or the location they were installed # into. These paths are used to support running test cases only, # the Makefile should not be making use of these paths to generate # a pkgIndex.tcl file or anything else at extension build time. #-------------------------------------------------------------------- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tclsh" >&5 printf %s "checking for tclsh... " >&6; } if test -f "${TCL_BIN_DIR}/Makefile" ; then # tclConfig.sh is in Tcl build directory if test "${TEA_PLATFORM}" = "windows"; then if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" fi else TCLSH_PROG="${TCL_BIN_DIR}/tclsh" fi else # tclConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" else TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}" fi list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TCL_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${TCLSH_PROG}" ; then REAL_TCL_BIN_DIR="`cd "$i"; pwd`/" break fi done TCLSH_PROG="${REAL_TCL_BIN_DIR}${TCLSH_PROG}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${TCLSH_PROG}" >&5 printf "%s\n" "${TCLSH_PROG}" >&6; } #-------------------------------------------------------------------- # Finally, substitute all of the various values into the Makefile. # You may alternatively have a special pkgIndex.tcl.in or other files # which require substituting th AC variables in. Include these here. #-------------------------------------------------------------------- ac_config_files="$ac_config_files Makefile pkgIndex.tcl" 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$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+y} || &/ 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIB@&t@OBJS; 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=`printf "%s\n" "$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 LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in @%:@( e) case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; 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 # 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 case $as_dir in @%:@((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@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 printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? 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 case e in @%:@( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in @%:@( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac 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 || printf "%s\n" 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 # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. 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 # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_@&t@echo='printf %s\n' as_@&t@echo_n='printf %s' 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 "@S|@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=`printf "%s\n" "$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 || printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated 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 ooxml $as_me 1.10, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ ooxml config.status 1.10 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 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' 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 ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$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 \printf "%s\n" "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 printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _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 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;; *) 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+y} || CONFIG_FILES=$config_files 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" eval set X " :F $CONFIG_FILES " 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=`printf "%s\n" "$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 '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$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 || printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$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 # _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@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$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 $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"; } && { printf "%s\n" "$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 printf "%s\n" "$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 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi ooxml/autom4te.cache/requests000664 000765 000024 00000007322 14763501223 016723 0ustar00alexstaff000000 000000 # This file was generated by Autom4te 2.72. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/opt/homebrew/Cellar/autoconf/2.72/share/autoconf' ], [ '/opt/homebrew/Cellar/autoconf/2.72/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', '/opt/homebrew/Cellar/autoconf/2.72/share/autoconf/autoconf/trailer.m4', 'configure.ac' ], { 'AC_CANONICAL_BUILD' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AC_CANONICAL_TARGET' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'AC_CONFIG_FILES' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FC_FREEFORM' => 1, 'AC_FC_PP_DEFINE' => 1, 'AC_FC_PP_SRCEXT' => 1, 'AC_FC_SRCEXT' => 1, 'AC_INIT' => 1, 'AC_LIBSOURCE' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_REQUIRE_AUX_FILE' => 1, 'AC_SUBST' => 1, 'AC_SUBST_TRACE' => 1, 'AH_OUTPUT' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AM_CONDITIONAL' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AM_EXTRA_RECURSIVE_TARGETS' => 1, 'AM_GNU_GETTEXT' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AM_MAINTAINER_MODE' => 1, 'AM_MAKEFILE_INCLUDE' => 1, 'AM_NLS' => 1, 'AM_PATH_GUILE' => 1, 'AM_POT_TOOLS' => 1, 'AM_PROG_AR' => 1, 'AM_PROG_CC_C_O' => 1, 'AM_PROG_CXX_C_O' => 1, 'AM_PROG_F77_C_O' => 1, 'AM_PROG_FC_C_O' => 1, 'AM_PROG_LIBTOOL' => 1, 'AM_PROG_MKDIR_P' => 1, 'AM_PROG_MOC' => 1, 'AM_SILENT_RULES' => 1, 'AM_XGETTEXT_OPTION' => 1, 'GTK_DOC_CHECK' => 1, 'IT_PROG_INTLTOOL' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'LT_INIT' => 1, 'LT_SUPPORTED_TAG' => 1, '_AM_COND_ELSE' => 1, '_AM_COND_ENDIF' => 1, '_AM_COND_IF' => 1, '_AM_MAKEFILE_INCLUDE' => 1, '_AM_SUBST_NOTMAKE' => 1, '_LT_AC_TAGCONFIG' => 1, '_m4_warn' => 1, 'include' => 1, 'm4_include' => 1, 'm4_pattern_allow' => 1, 'm4_pattern_forbid' => 1, 'm4_sinclude' => 1, 'sinclude' => 1 } ], 'Autom4te::Request' ) ); ooxml/tclconfig/install-sh000775 000765 000024 00000033054 14607757315 016312 0ustar00alexstaff000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2011-04-20.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -S $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -S) stripcmd="$stripprog $2" shift;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ooxml/tclconfig/PaxHeader/ChangeLog000664 000765 000024 00000000411 14607757315 020020 xustar00alexstaff000000 000000 30 mtime=1713364685.152902913 127 LIBARCHIVE.xattr.com.apple.metadata:kMDItemTextContentLanguage=YnBsaXN0MDBSZW4IAAAAAAAAAQEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAs 108 SCHILY.xattr.com.apple.metadata:kMDItemTextContentLanguage=bplist00Ren ooxml/tclconfig/ChangeLog000664 000765 000024 00000110112 14607757315 016047 0ustar00alexstaff000000 000000 2016-03-11 Sean Woods *tcl.m4 Fixed the search for Tcl and Wish shells under MinGW. Static builds and threaded builds get an "s" or "t" added to the name. 2015-08-28 Jan Nijtmans * tcl.m4: Rfe [00189c4afc]: Allow semi-static UCRT build on Windows with VC 14.0 2013-10-08 Jan Nijtmans * tcl.m4: Bug [172223e008]: Wrong filename in --disable-shared compile on MinGW 2013-10-04 Jan Nijtmans * tcl.m4: stub library is no longer linked with msvcrt??.dll. 2013-10-01 Jan Nijtmans * tcl.m4: Workaround for MinGW bug #2065: "gcc --shared" links with libgcc_s_dw2-1.dll when using 64-bit division in C 2013-07-04 Jan Nijtmans * tcl.m4: Bug [3324676]: AC_PROG_INSTALL incompat, Bug [3606445]: Unneeded -DHAVE_NO_SEH=1 when not building on Windows 2013-07-02 Jan Nijtmans * tcl.m4: Bug [32afa6e256]: dirent64 check is incorrect in tcl.m4 (thanks to Brian Griffin) 2013-06-20 Jan Nijtmans * tcl.m4: Use X11/Xlib.h for checking where X11 can be found in stead of X11/XIntrinsic.h. Suggested by Pietro Cerutti. 2013-06-04 Jan Nijtmans * tcl.m4: Eliminate NO_VIZ macro as current zlib uses HAVE_HIDDEN in stead. One more last-moment fix for FreeBSD by Pietro Cerutti 2013-05-19 Jan Nijtmans * tcl.m4: Fix for FreeBSD, and remove support for old FreeBSD versions. Patch by Pietro Cerutti 2013-03-12 Jan Nijtmans * tcl.m4: Patch by Andrew Shadura, providing better support for * three architectures they have in Debian. 2012-08-07 Stuart Cassoff * tcl.m4: Added "-DNDEBUG" to CFLAGS_DEFAULT when building with --disable-symbols. 2012-08-07 Stuart Cassoff * tcl.m4: [Bug 3555058]: Checkin [30736d63f0] broke CFLAGS_DEFAULT, LDFLAGS_DEFAULT 2012-08-07 Stuart Cassoff * tcl.m4: [Bug 3511806]: Checkin [30736d63f0] broke CFLAGS 2012-08-07 Jan Nijtmans * tcl.m4: [Bug 3511806]: Checkin [30736d63f0] broke CFLAGS 2012-07-25 Jan Nijtmans * tcl.m4: My previous commit (2012-04-03) broke the ActiveTcl build for AMD64, because of the quotes in "C://AMD64/cl.exe". It turns out that the AC_TRY_COMPILE macro cannot handle that. 2012-07-22 Stuart Cassoff * tcl.m4: Tidy: consistency, spelling, phrasing, whitespace. No functional change. 2012-04-03 Jan Nijtmans * tcl.m4: [Bug 3511806] Compiler checks too early This change allows to build the cygwin and mingw32 ports of Tcl/Tk extensions to build out-of-the-box using a native or cross-compiler, e.g. on Cygwin, Linux or Darwin. 2011-04-02 Jan Nijtmans * install-sh: Fix issue with library stripping in install-sh (backported from kevin_walzer's patch from Tcl 8.6 trunk) 2011-04-05 Andreas Kupries * tcl.m4: Applied patch by Jeff Lawson. Nicer error message when tclConfig.sh was not found. 2010-12-15 Stuart Cassoff * install-sh: Upgrade to newer install-sh and use it. * tcl.m4: 2010-12-14 Stuart Cassoff * tcl.m4: Better building on OpenBSD. 2010-12-14 Jan Nijtmans * tcl.m4: when using gcc, don't try to determine Win64 SDK 2010-12-12 Jan Nijtmans * tcl.m4: Determine correctly a cross-compiler-windres 2010-11-23 Jan Nijtmans * tcl.m4: add some cross-compile support, borrowed from Tcl 8.6 2010-09-16 Jeff Hobbs * tcl.m4: correct HP-UX LDFLAGS (only used when building big shell) 2010-09-14 Jeff Hobbs * tcl.m4: add extra if check for .manifest file generation Add notice about package name and version being built. 2010-09-09 Jan Nijtmans * tcl.m4: [FREQ #3058486] TEA_LOAD_CONFIG doesn't set all BUILD_ vars Slightly related: defining BUILD_$1 on all platforms - not only win - allows the -fvisibility feature to be used in extensions as well, at least if you compile against tcl >= 8.5. 2010-08-26 Jeff Hobbs * tcl.m4: ensure safe quoting for autoheader usage 2010-08-19 Jeff Hobbs * tcl.m4: add TEA_ADD_CLEANFILES macro to make adding cleanfiles easier, and add *.exp to CLEANFILES Windows default. (TEA_MAKE_LIB): Enhanced to check for MSVC that requires manifests and auto-embed it into proj DLL via MAKE_SHARED_LIB. Also define VC_MANIFEST_EMBED_DLL and VC_MANIFEST_EMBED_EXE that do the same magic in case it is needed for extended TEA projects. 2010-08-16 Jeff Hobbs *** Bump to TEA_VERSION 3.9 *** If upgrading from TEA_VERSION 3.8, copy over tcl.m4, change TEA_INIT to use 3.9 and reconfigure (ac-2.59+). BUILD_${PACKAGE_NAME} will be auto-defined on Windows for correct setting of TCL_STORAGE_CLASS. TEA_LOAD_CONFIG users should remove the SHLIB_LD_LIBS setting done in configure.in (LIBS will be automagically populated by TEA_LOAD_CONFIG). TEA_EXPORT_CONFIG has been added for ${pkg}Config.sh creators SHLIB_LD_FLAGS was deprecated a while ago, remove it if it is still in your Makefile.in. * tcl.m4: add /usr/lib64 to set of auto-search dirs. [Bug 1230554] Auto-define BUILD_$PACKAGE_NAME so users don't need to. This needs to correspond with $pkg.h define magic for TCL_STORAGE_CLASS. Auto-define CLEANFILES. Users can expand it. (SHLIB_LD_LIBS): define to '${LIBS}' default and change it only if necessary. Platforms not using this may simply not work or have very funky linkers. (TEA_LOAD_CONFIG): When loading config for another extension, auto-add stub libraries found with TEA_ADD_LIBS. Eases configure.in for modules like itk and img::*. (TEA_EXPORT_CONFIG): Add standardized function for exporting a ${pkg}Config.sh. See use by img::* and itcl. 2010-08-12 Jeff Hobbs *** Bump to TEA_VERSION 3.8 *** If upgrading from TEA_VERSION 3.7, copy over tcl.m4, change TEA_INIT to use 3.8 and reconfigure (ac-2.59+). No other changes should be necessary. * tcl.m4: remove more vestigial bits from removed platforms. Add back SCO_SV-3.2*. Remove use of DL_LIBS and DL_OBJS and related baggage - these are only needed by the core to support 'load'. Allow for macosx in TEA_ADD_SOURCES. Correct check for found_xincludes=no in TEA_PATH_UNIX_X. 2010-08-11 Jeff Hobbs * tcl.m4: remove the following old platform configurations: UNIX_SV*|UnixWare-5*, SunOS-4.*, SINIX*5.4*, SCO_SV-3.2*, OSF1-1.*, NEXTSTEP-*, NetBSD-1.*|FreeBSD-[[1-2]].*, MP-RAS-*, IRIX-5.*, HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*, dgux*, BSD/OS-2.1*|BSD/OS-3* (AIX): drop AIX-pre4 support and use of ldAix, use -bexpall/-brtl 2010-07-05 Jan Nijtmans * tcl.m4: [Patch #1055668] removal of exported internals from tclInt.h (EXTERN macro) 2010-04-14 Jan Nijtmans * tcl.m4 - Backport a lot of quoting fixes from tcl8.6/unix/tcl.m4 - Fix determination of CYGPATH for CYGWIN With those fixes, itcl and tdbc compile fine with CYGWIN 2010-04-06 Jan Nijtmans * install-sh [Bug 2982540] configure and install* script files should always have LF 2010-02-19 Stuart Cassoff * tcl.m4: Correct compiler/linker flags for threaded builds on OpenBSD. 2010-01-19 Jan Nijtmans * tcl.m4: Detect CYGWIN variant: win32 or unix 2010-01-03 Donal K. Fellows * unix/tcl.m4 (TEA_CONFIG_CFLAGS): [Tcl Bug 1636685]: Use the configuration for modern FreeBSD suggested by the FreeBSD porter. 2009-10-22 Jan Nijtmans * tcl.m4: [Tcl Patch #2883533] tcl.m4 support for Haiku OS 2009-04-27 Jeff Hobbs * tcl.m4 (TEA_CONFIG_CFLAGS): harden the check to add _r to CC on AIX with threads. 2009-04-10 Daniel Steffen * tcl.m4 (Darwin): check for 64-bit TkAqua. 2009-03-26 Jan Nijtmans * tclconfig/tcl.m4: Adapt LDFLAGS and LD_SEARCH_FLAGS together with SHLIB_LD definition to unbreak building on HPUX. 2009-03-20 Andreas Kupries * tclconfig/tcl.m4: Changed SHLIB_LD definition to unbreak building on HPUX. 2009-03-16 Joe English * tcl.m4(TEA_PUBLIC_TK_HEADERS): Look at ${TK_INCLUDE_SPEC} (found in tkConfig.sh) when trying to guess where tk.h might be [Patch 1960628]. 2009-03-11 Joe English * tcl.m4: Allow ${SHLIB_SUFFIX} to be overridden at configure-time [Patch 1960628]. Also fix some comment typos, and an uninitialized variable bug-waiting-to-happen. 2008-12-21 Jan Nijtmans * tcl.m4: [Bug 2073255] Tcl_GetString(NULL) doesn't crash on HP-UX (this bug report was for Tcl, but holds for TEA as well.) 2008-12-20 Daniel Steffen * tcl.m4: sync with tdbc tcl.m4 changes (SunOS-5.11): Sun cc SHLIB_LD: use LDFLAGS_DEFAULT instead of LDFLAGS 2008-12-02 Jeff Hobbs *** Bump to TEA_VERSION 3.7 *** * tcl.m4: in private header check, check for Port.h instead of Int.h to ensure all private headers are available. 2008-11-04 Daniel Steffen * tcl.m4 (Darwin): sync TEA_PRIVATE_TK_HEADERS handling of Tk.framework PrivateHeaders with TEA_PRIVATE_TCL_HEADERS. 2008-11-04 Jeff Hobbs * tcl.m4 (TEA_PATH_TCLCONFIG, TEA_PATH_TKCONFIG): exit with error when tclConfig.sh cannot be found. [Bug #1997760] (TEA_PRIVATE_TCL_HEADERS, TEA_PRIVATE_TK_HEADERS): allow for finding the headers installed in the public areas, e.g. a result of make install-private-headers. [Bug #1631922] 2008-08-12 Daniel Steffen * tcl.m4 (Darwin): link shlib with current and compatiblity version flags; look for libX11.dylib when searching for X11 libraries. 2008-06-12 Daniel Steffen * tcl.m4 (SunOS-5.11): fix 64bit amd64 support with gcc & Sun cc. 2008-03-27 Daniel Steffen * tcl.m4 (SunOS-5.1x): fix 64bit support for Sun cc. [Bug 1921166] 2008-02-01 Donal K. Fellows * tcl.m4 (TEA_CONFIG_CFLAGS): Updated to work at least in part with more modern VC versions. Currently just made the linker flags more flexible; more work may be needed. 2007-10-26 Daniel Steffen * tcl.m4 (Darwin): add support for 64-bit X11. 2007-10-23 Jeff Hobbs *** Tagged tea-3-branch to start TEA 4 development on HEAD *** 2007-09-17 Joe English * tcl.m4: use '${CC} -shared' instead of 'ld -Bshareable' to build shared libraries on current NetBSDs [Bug 1749251]. 2007-09-15 Daniel Steffen * tcl.m4: replace all direct references to compiler by ${CC} to enable CC overriding at configure & make time. (SunOS-5.1x): replace direct use of '/usr/ccs/bin/ld' in SHLIB_LD by 'cc' compiler driver. 2007-08-08 Jeff Hobbs * tcl.m4: check Ttk dir for Tk private headers (8.5). Add some comments to other bits. 2007-06-25 Jeff Hobbs * tcl.m4 (TEA_PROG_TCLSH, TEA_PROG_WISH): move where / is added. 2007-06-13 Jeff Hobbs * tcl.m4: fix --with-tkinclude alignment. [Bug 1506111] 2007-06-06 Daniel Steffen * tcl.m4 (Darwin): fix 64bit arch removal in fat 32&64bit builds. 2007-05-18 Donal K. Fellows * tcl.m4: Added quoting so that paths with spaces cause fewer problems. 2007-03-07 Daniel Steffen * tcl.m4 (Darwin): s/CFLAGS/CPPFLAGS/ in -mmacosx-version-min check. 2007-02-15 Jeff Hobbs * tcl.m4: correct private header check to search in generic subdir 2007-02-09 Jeff Hobbs *** Bump to TEA_VERSION 3.6 *** * tcl.m4: correct -d to -f (TEA_CONFIG_CFLAGS): SHLIB_SUFFIX is .so on HP ia64 [Bug 1615058] 2007-02-08 Jeff Hobbs * tcl.m4 (TEA_PRIVATE_TCL_HEADERS, TEA_PRIVATE_TK_HEADERS): check that the dirs actually have private headers. [Bug 1631922] 2007-02-04 Daniel Steffen * tcl.m4: add caching to -pipe check. 2007-01-25 Daniel Steffen * tcl.m4: integrate CPPFLAGS into CFLAGS as late as possible and move (rather than duplicate) -isysroot flags from CFLAGS to CPPFLAGS to avoid errors about multiple -isysroot flags from some older gcc builds. 2006-01-19 Daniel Steffen * tcl.m4: ensure CPPFLAGS env var is used when set. [Bug 1586861] (Darwin): add -isysroot and -mmacosx-version-min flags to CPPFLAGS when present in CFLAGS to avoid discrepancies between what headers configure sees during preprocessing tests and compiling tests. 2006-12-19 Daniel Steffen * tcl.m4 (Darwin): --enable-64bit: verify linking with 64bit -arch flag succeeds before enabling 64bit build. 2006-12-16 Daniel Steffen * tcl.m4 (Linux): fix previous change to use makefile variable LDFLAGS_DEFAULT instead of LDFLAGS in SHLIB_LD, to ensure linker flags in sampleextension Makefile are picked up. 2006-11-26 Daniel Steffen * tcl.m4 (Linux): --enable-64bit support. [Patch 1597389], [Bug 1230558] 2006-08-18 Daniel Steffen * tcl.m4 (Darwin): add support for --enable-64bit on x86_64, for universal builds including x86_64 and for use of -mmacosx-version-min instead of MACOSX_DEPLOYMENT_TARGET. For Tk extensions, remove 64-bit arch flags from CFLAGS like in the Tk configure, as neither TkAqua nor TkX11 can be built for 64-bit at present. 2006-03-28 Jeff Hobbs * tcl.m4: []-quote AC_DEFUN functions. (TEA_PATH_TKCONFIG): Fixed Windows-specific check for tkConfig.sh. (TEA_MAKE_LIB): Prepend 'lib' for Windows-gcc configs. 2006-03-07 Joe English * tcl.m4: Set SHLIB_LD_FLAGS='${LIBS}' on NetBSD, as per the other *BSD variants [Bug 1334613]. 2006-01-25 Jeff Hobbs *** Bump to TEA version 3.5 *** * tcl.m4: keep LD_SEARCH_FLAGS and CC_SEARCH_FLAGS synchronous with core tcl.m4 meaning. 2006-01-24 Daniel Steffen * tcl.m4 (Darwin): use makefile variable LDFLAGS_DEFAULT instead of LDFLAGS in SHLIB_LD, to ensure linker flags in sampleextension Makefile are picked up. [Bug 1403343] 2006-01-23 Jeff Hobbs * tcl.m4: add C:/Tcl/lib and C:/Progra~1/Tcl/lib dirs to check for *Config.sh on Windows. [Bug 1407544] 2006-01-23 Daniel Steffen * tcl.m4 (Darwin): for Tk extensions, remove -arch ppc64 from CFLAGS like in the Tk configure, as neither TkAqua nor TkX11 can be built for 64bit at present (no 64bit GUI libraries). 2006-01-22 Jeff Hobbs * tcl.m4: restore system=windows on Windows. Remove error if 'ar' isn't found (it may not be on Windows). Do not add -lxnet or define _XOPEN_SOURCE on HP-UX by default. Ensure the C|LDFLAGS_DEFAULT gets the fully sub'd value at configure time. 2006-01-10 Daniel Steffen * tcl.m4: add caching, use AC_CACHE_CHECK instead of AC_CACHE_VAL where possible, consistent message quoting, sync relevant tcl/unix/tcl.m4 HEAD changes and gratuitous formatting differences (notably sunc removal of support for for ancient BSD's, IRIX 4, RISCos and Ultrix by kennykb), Darwin improvements to TEA_LOAD_*CONFIG to make linking work against Tcl/Tk frameworks installed in arbitrary location, change TEA_PROG_* search order (look in *_BIN_DIR parents before *_PREFIX). 2006-01-05 Jeff Hobbs * tcl.m4: add dkf's system config refactor 2006-01-04 Jeff Hobbs * tcl.m4: remove extraneous ' that causes bash 3.1 to choke 2005-12-19 Joe English * tcl.m4 (TEA_PATH_TCLCONFIG &c): Look for tclConfig.sh &c in ${libdir}, where they are installed by default [Patch #1377407]. 2005-12-05 Don Porter * tcl.m4 (TEA_PUBLIC_*_HEADERS): Better support for finding header files for uninstalled Tcl and Tk. 2005-12-02 Jeff Hobbs * tcl.m4: correctly bump TEA_VERSION var to 3.4 2005-12-01 Daniel Steffen * unix/tcl.m4 (Darwin): fixed error when MACOSX_DEPLOYMENT_TARGET unset 2005-11-29 Jeff Hobbs * tcl.m4: *** Bump to TEA version 3.4 *** Add Windows x64 build support. Remove TEA_PATH_NOSPACE and handle the problem with ""s where necessary - the macro relied on TCLSH_PROG which didn't work for cross-compiles. 2005-11-27 Daniel Steffen * tcl.m4 (Darwin): add 64bit support, add CFLAGS to SHLIB_LD to support passing -isysroot in env(CFLAGS) to configure (flag can't be present twice, so can't be in both CFLAGS and LDFLAGS during configure), don't use -prebind when deploying on 10.4. (TEA_ENABLE_LANGINFO, TEA_TIME_HANDLER): add/fix caching. 2005-10-30 Daniel Steffen * tcl.m4: fixed two tests for TEA_WINDOWINGSYSTEM = "aqua" that should have been for `uname -s` = "Darwin" instead; added some missing quoting. (TEA_PROG_TCLSH, TEA_PROG_WISH): fix incorrect assumption that install location of tclConfig.sh/tkConfig.sh allows to determine the tclsh/wish install dir via ../bin. Indeed tcl/tk can be configured with arbitrary --libdir and --bindir (independent of prefix) and such a configuration is in fact standard with Darwin framework builds. At least now also check ${TCL_PREFIX}/bin resp. ${TK_PREFIX}/bin for presence of tclsh resp. wish (if tcl/tk have been configured with arbitrary --bindir, this will still not find them, for a general solution *Config.sh would need to contain the values of bindir/libdir/includedir passed to configure). 2005-10-07 Jeff Hobbs * tcl.m4: Fix Solaris 5.10 check and Solaris AMD64 64-bit builds. 2005-10-04 Jeff Hobbs * tcl.m4 (TEA_PRIVATE_TCL_HEADERS): add / to finish sed macro (TEA_ENABLE_THREADS): don't check for pthread_attr_setstacksize func 2005-09-13 Jeff Hobbs * tcl.m4: *** Update to TEA version 3.3 *** define TEA_WINDOWINGSYSTEM in TEA_LOAD_TKCONFIG. Make --enable-threads the default (users can --disable-threads). Improve AIX ${CC}_r fix to better check existing ${CC} value. Do the appropriate evals to not require the *TOP_DIR_NATIVE vars be set for extensions that use private headers. Make aqua check for Xlib compat headers the same as win32. 2005-07-26 Mo DeJong * tcl.m4 (TEA_PROG_TCLSH, TEA_BUILD_TCLSH, TEA_PROG_WISH, TEA_BUILD_WISH): Remove TEA_BUILD_TCLSH and TEA_BUILD_WISH because of complaints that it broke the build when only an installed version of Tcl was available at extension build time. The TEA_PROG_TCLSH and TEA_PROG_WISH macros will no longer search the path at all. The build tclsh or installed tclsh shell will now be found by TEA_PROG_TCLSH. 2005-07-24 Mo DeJong * tcl.m4 (TEA_PROG_TCLSH, TEA_BUILD_TCLSH, TEA_PROG_WISH, TEA_BUILD_WISH): Split confused search for tclsh on PATH and build and install locations into two macros. TEA_PROG_TCLSH and TEA_PROG_WISH search the system PATH for an installed tclsh or wish. The TEA_BUILD_TCLSH and TEA_BUILD_WISH macros determine the name of tclsh or wish in the Tcl or Tk build directory even if tclsh or wish has not yet been built. [Tcl bug 1160114] [Tcl patch 1244153] 2005-06-23 Daniel Steffen * tcl.m4 (TEA_PRIVATE_TK_HEADERS): add ${TK_SRC_DIR}/macosx to TK_INCLUDES when building against TkAqua. * tcl.m4 (TEA_PATH_X): fixed missing comma in AC_DEFINE * tcl.m4: changes to better support framework builds of Tcl and Tk out of the box: search framework install locations for *Config.sh, and if in presence of a framework build, use the framework's Headers and PrivateHeaders directories for public and private includes. [FR 947735] 2005-06-18 Daniel Steffen * tcl.m4 (Darwin): add -headerpad_max_install_names to LDFLAGS to ensure we can always relocate binaries with install_name_tool. 2005-06-04 Daniel Steffen * tcl.m4 (TEA_PATH_X): for TEA_WINDOWINGSYSTEM == aqua, check if xlib compat headers are available in tkheaders location, otherwise add xlib sourcedir to TK_XINCLUDES. 2005-04-25 Daniel Steffen * tcl.m4: added AC_DEFINE* descriptions (from core tcl.m4) to allow use with autoheader. (Darwin): added configure checks for recently added linker flags -single_module and -search_paths_first to allow building with older tools (and on Mac OS X 10.1), use -single_module in SHLIB_LD. (TEA_MISSING_POSIX_HEADERS): added caching of dirent.h check. (TEA_BUGGY_STRTOD): added caching (sync with core tcl.m4). 2005-03-24 Jeff Hobbs * tcl.m4 (TEA_TCL_64BIT_FLAGS): use Tcl header defaults for wide int type only on Windows when __int64 is detected as valid. 2005-03-24 Don Porter * README.txt: Update reference to "SC_* macros" to "TEA_* macros". * tcl.m4: Incorporated recent improvements in SC_PATH_TCLCONFIG and SC_PATH_TKCONFIG into TEA_PATH_TCLCONFIG and TEA_PATH_TKCONFIG. Corrected search path in TEA_PATH_CONFIG and added AC_SUBST($1_BIN_DIR) to TEA_LOAD_CONFIG so that packages that load the configuration of another package can know where they loaded it from. 2005-03-18 Jeff Hobbs * tcl.m4 (TEA_CONFIG_CFLAGS): correct 2005-03-17 change to have variant LD_SEARCH_FLAGS for gcc and cc builds. * tcl.m4 (TEA_PROG_TCLSH, TEA_PROG_WISH): correct x-compile check. 2005-03-17 Jeff Hobbs * tcl.m4: Correct gcc build and HP-UX-11. 2005-02-08 Jeff Hobbs * tcl.m4 (TEA_ADD_LIBS): don't touch lib args starting with -. (TEA_CONFIG_CFLAGS): only define _DLL for CE in shared build. (TEA_MAKE_LIB): set RANLIB* to : on Windows (it's not needed). 2005-02-01 Jeff Hobbs * tcl.m4: redo of 2005-01-27 changes to correctly handle paths with spaces. Win/CE and Win/64 builds now require a prebuilt tclsh to handle conversion to short pathnames. This is done in the new TEA_PATH_NOSPACE macro. For Win/CE|64, make CC just the compiler and move the necessary includes to CFLAGS. (TEA_CONFIG_CFLAGS): Add Solaris 64-bit gcc build support. (TEA_PROG_TCLSH, TEA_PROG_WISH): Allow TCLSH_PROG and WISH_PROG to be set in the env and prevent resetting. (TEA_ADD_LIBS): On Windows using GCC (mingw), convert foo.lib args to -lfoo, for use with mingw. *** POTENTIAL INCOMPATABILITY *** (TEA_CONFIG_CFLAGS): Fix AIX gcc builds to work out-of-box. Bumped TEA to 3.2. 2005-01-27 Jeff Hobbs * tcl.m4: remove cygpath calls to support msys. Update base CE build assumption to "420,ARMV4,ARM,Pocket PC 2003". Make STLIB_LD use $LINKBIN -lib. 2005-01-25 Daniel Steffen * tcl.m4 (Darwin): fixed bug with static build linking to dynamic library in /usr/lib etc instead of linking to static library earlier in search path. [Tcl Bug 956908] Removed obsolete references to Rhapsody. 2004-12-29 Jeff Hobbs * tcl.m4: Updates for VC7 compatibility, fixing CFLAGS and LDFLAGS options, using better default -O levels. [Bug 1092952, 1091967] 2004-12-29 Joe English * tcl.m4: Do not use ${DBGX} suffix when building shared libraries [patch #1081595, TIP #34] 2004-09-07 Jeff Hobbs * tcl.m4 (TEA_CONFIG_CFLAGS): support eVC4 Win/CE builds 2004-08-10 Jeff Hobbs * tcl.m4 (TEA_INIT, TEA_PREFIX): update handling of exec_prefix to work around subdir configures since autoconf only propagates the prefix (not exec_prefix). 2004-07-23 Daniel Steffen * tcl.m4 (TEA_CONFIG_CFLAGS): Darwin section: brought inline with Tcl 8.5 HEAD config, removed core specific & obsolete settings. 2004-07-22 Jeff Hobbs * tcl.m4 (TEA_PATH_X): check in TK_DEFS for MAC_OSX_TK to see if we are compiling on Aqua. Add TEA_WINDOWINGSYSTEM var that reflects 'tk windowingsystem' value. 2004-07-16 Jeff Hobbs * tcl.m4 (TEA_ENABLE_THREADS): force a threaded build when building against a threaded core. (CFLAGS_WARNING): Remove -Wconversion for gcc builds (TEA_CONFIG_CFLAGS): Reorder configure.in for better 64-bit build configuration, replacing EXTRA_CFLAGS with CFLAGS. [Bug #874058] Update to latest Tcl 8.5 head config settings. Call this TEA version 3.1. 2004-04-29 Jeff Hobbs * tcl.m4 (TEA_TCL_64BIT_FLAGS): replace AC_TRY_RUN test with AC_TRY_COMPILE for the long vs. long long check. (kenny) 2004-04-26 Jeff Hobbs * tcl.m4 (TEA_TCL_64BIT_FLAGS): update against core tcl.m4 to define TCL_WIDE_INT_IS_LONG if 'using long'. 2004-03-19 Jeff Hobbs * tcl.m4: correct Windows builds getting LDFLAGS info in MAKE_LIB 2004-02-11 Jeff Hobbs * tcl.m4: correct TCL_INCLUDES for private headers on Windows - it doesn't need the eval. 2004-02-10 Jeff Hobbs * tcl.m4: don't require TK_INCLUDES and TCL_INCLUDES to have the DIR_NATIVE vars defined when using private headers on unix. Allow $... to TEA_ADD_SOURCES for constructs like TEA_ADD_SOURCES([\$(WIN_OBJECTS)]), that allow the developer to place more in the Makefile.in. tkUnixPort.h checks for HAVE_LIMITS_H, so do both HAVE and CHECK on limits.h 2003-12-10 Jeff Hobbs * Makefile.in: added TEA_ADD_LIBS, TEA_ADD_INCLUDES and * configure: TEA_ADD_CFLAGS to configurable parameters with * configure.in: PKG_* equivs in the Makefile. This allows the * tclconfig/tcl.m4: user to worry less about actual magic VAR names. Corrected Makefile.in to note that TEA_ADD_TCL_SOURCES requires exact file names. 2003-12-09 Jeff Hobbs * tcl.m4: updated OpenBSD support based on [Patch #775246] (cassoff) 2003-12-05 Jeff Hobbs * configure: * configure.in: * Makefile.in (VPATH): readd $(srcdir) to front of VPATH as the first part of VPATH can get chopped off. Change .c.$(OBJEXT) rule to .c.@OBJEXT@ to support more makes. * tclconfig/tcl.m4: add TEA_ADD_STUB_SOURCES to support libstub generation and TEA_ADD_TCL_SOURCES to replace RUNTIME_SOURCES as the way the user specifies library files. 2003-12-03 Jeff Hobbs * configure: Update of TEA spec to (hopefully) simplify * configure.in: some aspects of TEA by making use of more * Makefile.in: AC 2.5x features. Use PACKAGE_NAME (instead * generic/tclsample.c: of PACKAGE) and PACKAGE_VERSION (instead of * tclconfig/tcl.m4: VERSION) arguments to AC_INIT as the TEA package name and version. Provide a version argument to TEA_INIT - starting with 3.0. Drop all use of interior shell substs that older makefiles didn't like. Use PKG_* naming convention instead. Move specification of source files and public headers into configure.in with TEA_ADD_SOURCES and TEA_ADD_HEADERS. These will be munged during ./configure into the right obj file names (no $(SOURCES:.c=.obj) needed). There is almost nothing that should be touched in Makefile.in now for the developer. May want to add a TEA_ADD_TCL_SOURCES for the RUNTIME_SOURCES that remains. Use SHLID_LD_FLAGS (instead of SHLID_LDFLAGS) as Tcl does. Only specify the user requested LDFLAGS/CFLAGS in the Makefile, don't mention the _OPTIMIZE/_DEBUG variants. 2003-10-15 Jeff Hobbs * tcl.m4: create a TEA_SETUP_COMPILER_CC the precedes the TEA_SETUP_COMPILER macro. They are split so the check for CC occurs before any use of CC. Also add AC_PROG_CPP to the compiler checks. 2003-10-06 Jeff Hobbs * tcl.m4: Updated for autoconf 2.5x prereq. Where TCL_WIDE_INT_TYPE would be __int64, defer to the code checks in tcl.h, which also handles TCL_LL_MODIFIER* properly. 2003-04-22 Jeff Hobbs * tcl.m4: correct default setting of ARCH for WinCE builds. Correct \ escaping for CE sed macros. 2003-04-10 Jeff Hobbs * tcl.m4: replace $(syscal) construct with older `syscall` for systems where sh != bash. 2003-04-09 Jeff Hobbs * tcl.m4 (TEA_WITH_CELIB): add --enable-wince and --with-celib options for Windows/CE compilation support. Requires the Microsoft eMbedded SDK and Keuchel's celib emulation layer. 2003-02-18 Jeff Hobbs * tcl.m4 (TEA_ENABLE_THREADS): Make sure -lpthread gets passed on the link line when checking for the pthread_attr_setstacksize symbol. (dejong) * tcl.m4 (TEA_SETUP_COMPILER): added default calls to TEA_TCL_EARLY_FLAGS, TEA_TCL_64BIT_FLAGS, TEA_MISSING_POSIX_HEADERS and TEA_BUGGY_STRTOD. 2003-02-14 Jeff Hobbs * tcl.m4: correct HP-UX ia64 --enable-64bit build flags 2003-01-29 Jeff Hobbs * tcl.m4: check $prefix/lib as well as $exec_prefix/lib when looking for tcl|tkConfig.sh, as this check is done before we would set exec_prefix when the user does not define it. 2003-01-21 Mo DeJong * tcl.m4 (TEA_CONFIG_CFLAGS): Fix build support for mingw, the previous implementation would use VC++ when compiling with mingw gcc. Don't pass -fPIC since gcc always compiles pic code under win32. Change some hard coded cases of gcc to ${CC}. 2002-10-15 Jeff Hobbs * tcl.m4: move the CFLAGS definition from TEA_ENABLE_SHARED to TEA_MAKE_LIB because setting too early confuses other AC_* macros. Correct the HP-11 SHLIB_LD_LIBS setting. * tcl.m4: add the CFLAGS definition into TEA_ENABLE_SHARED and make it pick up the env CFLAGS at configure time. 2002-10-09 Jeff Hobbs * tcl.m4: add --enable-symbols=mem option to enable TCL_MEM_DEBUG. Improved AIX 64-bit build support, allow it on AIX-4 as well. Enable 64-bit HP-11 compilation with gcc. Enable 64-bit IRIX64-6 cc build support. Correct FreeBSD thread library linkage. Add OSF1 static build support. Improve SunOS-5 shared build SHLIB_LD macro. 2002-07-20 Zoran Vasiljevic * tcl.m4: Added MINGW32 to list of systems checked for Windows build. Also, fixes some indentation issues with "--with-XXX" options. 2002-04-23 Jeff Hobbs * tcl.m4 (TEA_ENABLE_THREADS): added USE_THREAD_ALLOC define to use new threaded allocatory by default on Unix for Tcl 8.4. (TEA_CONFIG_CFLAGS): corrected LD_SEARCH_FLAGS for FreeBSD-3+. 2002-04-22 Jeff Hobbs * tcl.m4 (TEA_SETUP_COMPILER): removed call to AC_CYGWIN so that we can use autoconf 2.5x as well as 2.13. This prevents us from being able to warn against the use of cygwin gcc at configure time, but allows autoconf 2.5x, which is what is shipped with most newer systems. 2002-04-11 Jeff Hobbs * tcl.m4: Enabled COFF as well as CV style debug info with --enable-symbols to allow Dr. Watson users to see function info. More info on debugging levels can be obtained at: http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp 2002-04-03 Jeff Hobbs * tcl.m4: change all SC_* macros to TEA_*. The SC_ was for Scriptics, which is no more. TEA represents a better, independent prefix that won't need changing. Added preliminary mingw gcc support. [Patch #538772] Added TEA_PREFIX macro that handles defaulting the prefix and exec_prefix vars to those used by Tcl if none were specified. Added TEA_SETUP_COMPILER macro that encompasses the AC_PROG_CC check and several other basic AC_PROG checks needed for making executables. This greatly simplifies user's configure.in files. Collapsed AIX-5 defines into AIX-* with extra checks for doing the ELF stuff on AIX-5-ia64. Updated TEA_ENABLE_THREADS to take an optional arg to allow switching it on by default (for Thread) and add sanity checking to warn the user if configuring threads incompatibly. 2002-03-29 Jeff Hobbs * tcl.m4: made sure that SHLIB_LDFLAGS was set to LDFLAGS_DEFAULT. Removed --enable-64bit support for AIX-4 because it wasn't correct. Added -MT or -MD Windows linker switches to properly support symbols-enabled builds. 2002-03-28 Jeff Hobbs * tcl.m4: called AC_MSG_ERROR when SC_TEA_INIT wasn't called first instead of calling it as that inlines it each time in shell code. Changed Windows CFLAGS_OPTIMIZE to use -O2 instead of -Oti. Noted TCL_LIB_VERSIONS_OK=nodots for Windows builds. A few changes to support itcl (and perhaps others): Added support for making your own stub libraries to SC_MAKE_LIB. New SC_PATH_CONFIG and SC_LOAD_CONFIG that take a package name arg and find that ${pkg}Config.sh file. itk uses this for itcl. 2002-03-27 Jeff Hobbs * tcl.m4: made SC_LOAD_TKCONFIG recognize when working with a Tk build dir setup. Added EXTRA_CFLAGS and SHLIB_LD_LIBS substs to SC_CONFIG_CFLAGS. Added XLIBSW onto LIBS when it is defined. Remove TCL_LIBS from MAKE_LIB and correctly use SHLIB_LD_LIBS instead to not rely as much on tclConfig.sh cached info. Add TK_BIN_DIR to paths to find wish in SC_PROG_WISH. These move towards making TEA much more independent of *Config.sh. 2002-03-19 Jeff Hobbs * tcl.m4: corrected forgotten (UN)SHARED_LIB_SUFFIX and SHLIB_SUFFIX defines for Win. (SC_PATH_X): made this only do the check on unix platforms. 2002-03-12 Jeff Hobbs * README.txt: updated to reflect fewer files 2002-03-06 Jeff Hobbs * config.guess (removed): * config.sub (removed): removed unnecessary files * installFile.tcl (removed): * mkinstalldirs (removed): these aren't really necessary for making TEA work * tcl.m4 (SC_PUBLIC_TCL_HEADERS, SC_PUBLIC_TK_HEADERS): don't check /usr(/local)/include for includes on Windows when not using gcc 2002-03-05 Jeff Hobbs * tcl.m4: added warnings on Windows, removed RELPATH define and added TCL_LIBS to MAKE_LIB macro. This import represents 2.0.0, or a new start at attempting to make TEA much easier for C extension developers. **** moved from tclpro project to core tcl project, **** **** renamed to 'tclconfig' **** 2001-03-15 Karl Lehenbauer * installFile.tcl: Added updating of the modification time of the target file whether we overwrote it or decided that it hadn't changed. This was necessary for us to be able to determine whether or not a module install touched the file. 2001-03-08 Karl Lehenbauer * installFile.tcl: Added support for converting new-style (1.1+) Cygnus drive paths to Tcl-style. 2001-01-15 * tcl.m4: Added FreeBSD clause. 2001-01-03 * tcl.m4: Fixed typo in SC_LIB_SPEC where it is checking for exec-prefix. 2000-12-01 * tcl.m4: Concatenated most of the Ajuba acsite.m4 file so we don't need to modify the autoconf installation. * config.guess: * config.sub: * installFile.tcl: Added files from the itcl config subdirectory, which should go away. 2000-7-29 * Fixed the use of TCL_SRC_DIR and TK_SRC_DIR within TCL_PRIVATE_INCLUDES and TK_PRIVATE_INCLUDES to match their recent change from $(srcdir) to $(srcdir)/.. ooxml/tclconfig/PaxHeader/tcl.m4000664 000765 000024 00000000364 14607764414 017277 xustar00alexstaff000000 000000 30 mtime=1713367308.037751643 119 LIBARCHIVE.xattr.com.apple.quarantine=MDA4Mzs2NWVlZDBkNjtTYWZhcmk7OUYyREEzMjAtQ0EwNC00ODBFLTgyNTAtNDdBOUYxQzg1RTY2 95 SCHILY.xattr.com.apple.quarantine=0083;65eed0d6;Safari;9F2DA320-CA04-480E-8250-47A9F1C85E66 ooxml/tclconfig/tcl.m4000664 000765 000024 00000406231 14607764414 015331 0ustar00alexstaff000000 000000 # tcl.m4 -- # # This file provides a set of autoconf macros to help TEA-enable # a Tcl extension. # # Copyright (c) 1999-2000 Ajuba Solutions. # Copyright (c) 2002-2005 ActiveState Corporation. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. AC_PREREQ([2.69]) # Possible values for key variables defined: # # TEA_WINDOWINGSYSTEM - win32 aqua x11 (mirrors 'tk windowingsystem') # TEA_PLATFORM - windows unix # TEA_TK_EXTENSION - True if this is a Tk extension # #------------------------------------------------------------------------ # TEA_PATH_TCLCONFIG -- # # Locate the tclConfig.sh file and perform a sanity check on # the Tcl compile flags # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --with-tcl=... # # Defines the following vars: # TCL_BIN_DIR Full path to the directory containing # the tclConfig.sh file #------------------------------------------------------------------------ AC_DEFUN([TEA_PATH_TCLCONFIG], [ dnl TEA specific: Make sure we are initialized AC_REQUIRE([TEA_INIT]) # # Ok, lets find the tcl configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tcl # if test x"${no_tcl}" = x ; then # we reset no_tcl in case something fails here no_tcl=true AC_ARG_WITH(tcl, AS_HELP_STRING([--with-tcl], [directory containing tcl configuration (tclConfig.sh)]), [with_tclconfig="${withval}"]) AC_ARG_WITH(tcl8, AS_HELP_STRING([--with-tcl8], [Compile for Tcl8 in Tcl9 environment]), [with_tcl8="${withval}"]) AC_MSG_CHECKING([for Tcl configuration]) AC_CACHE_VAL(ac_cv_c_tclconfig,[ # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then case "${with_tclconfig}" in */tclConfig.sh ) if test -f "${with_tclconfig}"; then AC_MSG_WARN([--with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself]) with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`" fi ;; esac if test -f "${with_tclconfig}/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`" else AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh]) fi fi # then check for a private Tcl installation if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ../tcl \ `ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \ ../../tcl \ `ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`" break fi done fi # TEA specific: on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few common install locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tcl8.5 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" break fi done fi # check in a few other private locations if test x"${ac_cv_c_tclconfig}" = x ; then for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/unix; pwd)`" break fi done fi ]) if test x"${ac_cv_c_tclconfig}" = x ; then TCL_BIN_DIR="# no Tcl configs found" AC_MSG_ERROR([Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh]) else no_tcl= TCL_BIN_DIR="${ac_cv_c_tclconfig}" AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh]) fi fi ]) #------------------------------------------------------------------------ # TEA_PATH_TKCONFIG -- # # Locate the tkConfig.sh file # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --with-tk=... # # Defines the following vars: # TK_BIN_DIR Full path to the directory containing # the tkConfig.sh file #------------------------------------------------------------------------ AC_DEFUN([TEA_PATH_TKCONFIG], [ # # Ok, lets find the tk configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-tk # if test x"${no_tk}" = x ; then # we reset no_tk in case something fails here no_tk=true AC_ARG_WITH(tk, AS_HELP_STRING([--with-tk], [directory containing tk configuration (tkConfig.sh)]), [with_tkconfig="${withval}"]) AC_MSG_CHECKING([for Tk configuration]) AC_CACHE_VAL(ac_cv_c_tkconfig,[ # First check to see if --with-tkconfig was specified. if test x"${with_tkconfig}" != x ; then case "${with_tkconfig}" in */tkConfig.sh ) if test -f "${with_tkconfig}"; then AC_MSG_WARN([--with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself]) with_tkconfig="`echo "${with_tkconfig}" | sed 's!/tkConfig\.sh$!!'`" fi ;; esac if test -f "${with_tkconfig}/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd "${with_tkconfig}"; pwd)`" else AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh]) fi fi # then check for a private Tk library if test x"${ac_cv_c_tkconfig}" = x ; then for i in \ ../tk \ `ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \ ../../tk \ `ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \ ../../../tk \ `ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i/unix; pwd)`" break fi done fi # on Darwin, check in Framework installation locations if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ ; do if test -f "$i/Tk.framework/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i/Tk.framework; pwd)`" break fi done fi # check in a few common install locations if test x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib/tk8.6 2>/dev/null` \ `ls -d /usr/lib/tk8.5 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/local/lib/tk8.6 2>/dev/null` \ `ls -d /usr/local/lib/tk8.5 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tk8.6 2>/dev/null` \ `ls -d /usr/local/lib/tcl/tk8.5 2>/dev/null` \ ; do if test -f "$i/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i; pwd)`" break fi done fi # TEA specific: on Windows, check in common installation locations if test "${TEA_PLATFORM}" = "windows" \ -a x"${ac_cv_c_tkconfig}" = x ; then for i in `ls -d C:/Tcl/lib 2>/dev/null` \ `ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \ ; do if test -f "$i/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i; pwd)`" break fi done fi # check in a few other private locations if test x"${ac_cv_c_tkconfig}" = x ; then for i in \ ${srcdir}/../tk \ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do if test "${TEA_PLATFORM}" = "windows" \ -a -f "$i/win/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i/win; pwd)`" break fi if test -f "$i/unix/tkConfig.sh" ; then ac_cv_c_tkconfig="`(cd $i/unix; pwd)`" break fi done fi ]) if test x"${ac_cv_c_tkconfig}" = x ; then TK_BIN_DIR="# no Tk configs found" AC_MSG_ERROR([Can't find Tk configuration definitions. Use --with-tk to specify a directory containing tkConfig.sh]) else no_tk= TK_BIN_DIR="${ac_cv_c_tkconfig}" AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh]) fi fi ]) #------------------------------------------------------------------------ # TEA_LOAD_TCLCONFIG -- # # Load the tclConfig.sh file # # Arguments: # # Requires the following vars to be set: # TCL_BIN_DIR # # Results: # # Substitutes the following vars: # TCL_BIN_DIR # TCL_SRC_DIR # TCL_LIB_FILE # TCL_ZIP_FILE # TCL_ZIPFS_SUPPORT #------------------------------------------------------------------------ AC_DEFUN([TEA_LOAD_TCLCONFIG], [ AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh]) if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then AC_MSG_RESULT([loading]) . "${TCL_BIN_DIR}/tclConfig.sh" else AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh]) fi # If the TCL_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TCL_LIB_SPEC will be set to the value # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC # instead of TCL_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f "${TCL_BIN_DIR}/Makefile" ; then TCL_LIB_SPEC="${TCL_BUILD_LIB_SPEC}" TCL_STUB_LIB_SPEC="${TCL_BUILD_STUB_LIB_SPEC}" TCL_STUB_LIB_PATH="${TCL_BUILD_STUB_LIB_PATH}" elif test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tcl.framework installed in an arbitrary location. case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then for i in "`cd "${TCL_BIN_DIR}"; pwd`" \ "`cd "${TCL_BIN_DIR}"/../..; pwd`"; do if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then TCL_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TCL_LIB_FILE}" break fi done fi if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then TCL_STUB_LIB_SPEC="-L`echo "${TCL_BIN_DIR}" | sed -e 's/ /\\\\ /g'` ${TCL_STUB_LIB_FLAG}" TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}" fi ;; esac fi AC_SUBST(TCL_VERSION) AC_SUBST(TCL_PATCH_LEVEL) AC_SUBST(TCL_BIN_DIR) AC_SUBST(TCL_SRC_DIR) AC_SUBST(TCL_LIB_FILE) AC_SUBST(TCL_LIB_FLAG) AC_SUBST(TCL_LIB_SPEC) AC_SUBST(TCL_STUB_LIB_FILE) AC_SUBST(TCL_STUB_LIB_FLAG) AC_SUBST(TCL_STUB_LIB_SPEC) AC_MSG_CHECKING([platform]) hold_cc=$CC; CC="$TCL_CC" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ #ifdef _WIN32 #error win32 #endif ]])],[ # first test we've already retrieved platform (cross-compile), fallback to unix otherwise: TEA_PLATFORM="${TEA_PLATFORM-unix}" CYGPATH=echo ],[ TEA_PLATFORM="windows" AC_CHECK_PROG(CYGPATH, cygpath, cygpath -m, echo) ]) CC=$hold_cc AC_MSG_RESULT($TEA_PLATFORM) # The BUILD_$pkg is to define the correct extern storage class # handling when making this package AC_DEFINE_UNQUOTED(BUILD_${PACKAGE_NAME}, [], [Building extension source?]) # Do this here as we have fully defined TEA_PLATFORM now if test "${TEA_PLATFORM}" = "windows" ; then EXEEXT=".exe" CLEANFILES="$CLEANFILES *.lib *.dll *.pdb *.exp" fi # TEA specific: AC_SUBST(CLEANFILES) AC_SUBST(TCL_LIBS) AC_SUBST(TCL_DEFS) AC_SUBST(TCL_EXTRA_CFLAGS) AC_SUBST(TCL_LD_FLAGS) AC_SUBST(TCL_SHLIB_LD_LIBS) ]) #------------------------------------------------------------------------ # TEA_LOAD_TKCONFIG -- # # Load the tkConfig.sh file # # Arguments: # # Requires the following vars to be set: # TK_BIN_DIR # # Results: # # Sets the following vars that should be in tkConfig.sh: # TK_BIN_DIR #------------------------------------------------------------------------ AC_DEFUN([TEA_LOAD_TKCONFIG], [ AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh]) if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then AC_MSG_RESULT([loading]) . "${TK_BIN_DIR}/tkConfig.sh" else AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh]) fi # If the TK_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable TK_LIB_SPEC will be set to the value # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC # instead of TK_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. if test -f "${TK_BIN_DIR}/Makefile" ; then TK_LIB_SPEC="${TK_BUILD_LIB_SPEC}" TK_STUB_LIB_SPEC="${TK_BUILD_STUB_LIB_SPEC}" TK_STUB_LIB_PATH="${TK_BUILD_STUB_LIB_PATH}" elif test "`uname -s`" = "Darwin"; then # If Tk was built as a framework, attempt to use the libraries # from the framework at the given location so that linking works # against Tk.framework installed in an arbitrary location. case ${TK_DEFS} in *TK_FRAMEWORK*) if test -f "${TK_BIN_DIR}/${TK_LIB_FILE}"; then for i in "`cd "${TK_BIN_DIR}"; pwd`" \ "`cd "${TK_BIN_DIR}"/../..; pwd`"; do if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then TK_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TK_LIB_FILE}" break fi done fi if test -f "${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"; then TK_STUB_LIB_SPEC="-L` echo "${TK_BIN_DIR}" | sed -e 's/ /\\\\ /g'` ${TK_STUB_LIB_FLAG}" TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}" fi ;; esac fi # TEA specific: Ensure windowingsystem is defined if test "${TEA_PLATFORM}" = "unix" ; then case ${TK_DEFS} in *MAC_OSX_TK*) AC_DEFINE(MAC_OSX_TK, 1, [Are we building against Mac OS X TkAqua?]) TEA_WINDOWINGSYSTEM="aqua" ;; *) TEA_WINDOWINGSYSTEM="x11" ;; esac elif test "${TEA_PLATFORM}" = "windows" ; then TEA_WINDOWINGSYSTEM="win32" fi AC_SUBST(TK_VERSION) AC_SUBST(TK_BIN_DIR) AC_SUBST(TK_SRC_DIR) AC_SUBST(TK_LIB_FILE) AC_SUBST(TK_LIB_FLAG) AC_SUBST(TK_LIB_SPEC) AC_SUBST(TK_STUB_LIB_FILE) AC_SUBST(TK_STUB_LIB_FLAG) AC_SUBST(TK_STUB_LIB_SPEC) # TEA specific: AC_SUBST(TK_LIBS) AC_SUBST(TK_XINCLUDES) ]) #------------------------------------------------------------------------ # TEA_PROG_TCLSH # Determine the fully qualified path name of the tclsh executable # in the Tcl build directory or the tclsh installed in a bin # directory. This macro will correctly determine the name # of the tclsh executable even if tclsh has not yet been # built in the build directory. The tclsh found is always # associated with a tclConfig.sh file. This tclsh should be used # only for running extension test cases. It should never be # or generation of files (like pkgIndex.tcl) at build time. # # Arguments: # none # # Results: # Substitutes the following vars: # TCLSH_PROG #------------------------------------------------------------------------ AC_DEFUN([TEA_PROG_TCLSH], [ AC_MSG_CHECKING([for tclsh]) if test -f "${TCL_BIN_DIR}/Makefile" ; then # tclConfig.sh is in Tcl build directory if test "${TEA_PLATFORM}" = "windows"; then if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" ; then TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" fi else TCLSH_PROG="${TCL_BIN_DIR}/tclsh" fi else # tclConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" else TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}" fi list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TCL_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${TCLSH_PROG}" ; then REAL_TCL_BIN_DIR="`cd "$i"; pwd`/" break fi done TCLSH_PROG="${REAL_TCL_BIN_DIR}${TCLSH_PROG}" fi AC_MSG_RESULT([${TCLSH_PROG}]) AC_SUBST(TCLSH_PROG) ]) #------------------------------------------------------------------------ # TEA_PROG_WISH # Determine the fully qualified path name of the wish executable # in the Tk build directory or the wish installed in a bin # directory. This macro will correctly determine the name # of the wish executable even if wish has not yet been # built in the build directory. The wish found is always # associated with a tkConfig.sh file. This wish should be used # only for running extension test cases. It should never be # or generation of files (like pkgIndex.tcl) at build time. # # Arguments: # none # # Results: # Substitutes the following vars: # WISH_PROG #------------------------------------------------------------------------ AC_DEFUN([TEA_PROG_WISH], [ AC_MSG_CHECKING([for wish]) if test -f "${TK_BIN_DIR}/Makefile" ; then # tkConfig.sh is in Tk build directory if test "${TEA_PLATFORM}" = "windows"; then if test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${EXEEXT}" ; then WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${EXEEXT}" elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}s${EXEEXT}" ; then WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}$s{EXEEXT}" elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}t${EXEEXT}" ; then WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}t${EXEEXT}" elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}st${EXEEXT}" ; then WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}st${EXEEXT}" fi else WISH_PROG="${TK_BIN_DIR}/wish" fi else # tkConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${EXEEXT}" else WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}" fi list="`ls -d ${TK_BIN_DIR}/../bin 2>/dev/null` \ `ls -d ${TK_BIN_DIR}/.. 2>/dev/null` \ `ls -d ${TK_PREFIX}/bin 2>/dev/null`" for i in $list ; do if test -f "$i/${WISH_PROG}" ; then REAL_TK_BIN_DIR="`cd "$i"; pwd`/" break fi done WISH_PROG="${REAL_TK_BIN_DIR}${WISH_PROG}" fi AC_MSG_RESULT([${WISH_PROG}]) AC_SUBST(WISH_PROG) ]) #------------------------------------------------------------------------ # TEA_ENABLE_SHARED -- # # Allows the building of shared libraries # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --enable-shared=yes|no # --enable-stubs=yes|no # # Defines the following vars: # STATIC_BUILD Used for building import/export libraries # on Windows. # # Sets the following vars: # SHARED_BUILD Value of 1 or 0 # STUBS_BUILD Value if 1 or 0 # USE_TCL_STUBS Value true: if SHARED_BUILD or --enable-stubs # USE_TCLOO_STUBS Value true: if SHARED_BUILD or --enable-stubs # USE_TK_STUBS Value true: if SHARED_BUILD or --enable-stubs # AND TEA_WINDOWING_SYSTEM != "" #------------------------------------------------------------------------ AC_DEFUN([TEA_ENABLE_SHARED], [ AC_MSG_CHECKING([how to build libraries]) AC_ARG_ENABLE(shared, AS_HELP_STRING([--enable-shared], [build and link with shared libraries (default: on)]), [shared_ok=$enableval], [shared_ok=yes]) if test "${enable_shared+set}" = set; then enableval="$enable_shared" shared_ok=$enableval else shared_ok=yes fi AC_ARG_ENABLE(stubs, AS_HELP_STRING([--enable-stubs], [build and link with stub libraries. Always true for shared builds (default: on)]), [stubs_ok=$enableval], [stubs_ok=yes]) if test "${enable_stubs+set}" = set; then enableval="$enable_stubs" stubs_ok=$enableval else stubs_ok=yes fi # Stubs are always enabled for shared builds if test "$shared_ok" = "yes" ; then AC_MSG_RESULT([shared]) SHARED_BUILD=1 STUBS_BUILD=1 else AC_MSG_RESULT([static]) SHARED_BUILD=0 AC_DEFINE(STATIC_BUILD, 1, [This a static build]) if test "$stubs_ok" = "yes" ; then STUBS_BUILD=1 else STUBS_BUILD=0 fi fi if test "${STUBS_BUILD}" = "1" ; then AC_DEFINE(USE_TCL_STUBS, 1, [Use Tcl stubs]) AC_DEFINE(USE_TCLOO_STUBS, 1, [Use TclOO stubs]) if test "${TEA_WINDOWINGSYSTEM}" != ""; then AC_DEFINE(USE_TK_STUBS, 1, [Use Tk stubs]) fi fi AC_SUBST(SHARED_BUILD) AC_SUBST(STUBS_BUILD) ]) #------------------------------------------------------------------------ # TEA_ENABLE_THREADS -- # # Specify if thread support should be enabled. If "yes" is specified # as an arg (optional), threads are enabled by default, "no" means # threads are disabled. "yes" is the default. # # TCL_THREADS is checked so that if you are compiling an extension # against a threaded core, your extension must be compiled threaded # as well. # # Note that it is legal to have a thread enabled extension run in a # threaded or non-threaded Tcl core, but a non-threaded extension may # only run in a non-threaded Tcl core. # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --enable-threads # # Sets the following vars: # THREADS_LIBS Thread library(s) # # Defines the following vars: # TCL_THREADS # _REENTRANT # _THREAD_SAFE #------------------------------------------------------------------------ AC_DEFUN([TEA_ENABLE_THREADS], [ AC_ARG_ENABLE(threads, AS_HELP_STRING([--enable-threads], [build with threads (default: on)]), [tcl_ok=$enableval], [tcl_ok=yes]) if test "${enable_threads+set}" = set; then enableval="$enable_threads" tcl_ok=$enableval else tcl_ok=yes fi if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then TCL_THREADS=1 if test "${TEA_PLATFORM}" != "windows" ; then # We are always OK on Windows, so check what this platform wants: # USE_THREAD_ALLOC tells us to try the special thread-based # allocator that significantly reduces lock contention AC_DEFINE(USE_THREAD_ALLOC, 1, [Do we want to use the threaded memory allocator?]) AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?]) if test "`uname -s`" = "SunOS" ; then AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Do we really want to follow the standard? Yes we do!]) fi AC_DEFINE(_THREAD_SAFE, 1, [Do we want the thread-safe OS API?]) AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no) if test "$tcl_ok" = "no"; then # Check a little harder for __pthread_mutex_init in the same # library, as some systems hide it there until pthread.h is # defined. We could alternatively do an AC_TRY_COMPILE with # pthread.h, but that will work with libpthread really doesn't # exist, like AIX 4.2. [Bug: 4359] AC_CHECK_LIB(pthread, __pthread_mutex_init, tcl_ok=yes, tcl_ok=no) fi if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthread" else AC_CHECK_LIB(pthreads, pthread_mutex_init, tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -lpthreads" else AC_CHECK_LIB(c, pthread_mutex_init, tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = "no"; then AC_CHECK_LIB(c_r, pthread_mutex_init, tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = "yes"; then # The space is needed THREADS_LIBS=" -pthread" else TCL_THREADS=0 AC_MSG_WARN([Do not know how to find pthread lib on your system - thread support disabled]) fi fi fi fi fi else TCL_THREADS=0 fi # Do checking message here to not mess up interleaved configure output AC_MSG_CHECKING([for building with threads]) if test "${TCL_THREADS}" = 1; then AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?]) AC_MSG_RESULT([yes (default)]) else AC_MSG_RESULT([no]) fi # TCL_THREADS sanity checking. See if our request for building with # threads is the same as the way Tcl was built. If not, warn the user. case ${TCL_DEFS} in *THREADS=1*) if test "${TCL_THREADS}" = "0"; then AC_MSG_WARN([ Building ${PACKAGE_NAME} without threads enabled, but building against Tcl that IS thread-enabled. It is recommended to use --enable-threads.]) fi ;; esac AC_SUBST(TCL_THREADS) ]) #------------------------------------------------------------------------ # TEA_ENABLE_SYMBOLS -- # # Specify if debugging symbols should be used. # Memory (TCL_MEM_DEBUG) debugging can also be enabled. # # Arguments: # none # # TEA varies from core Tcl in that C|LDFLAGS_DEFAULT receives # the value of C|LDFLAGS_OPTIMIZE|DEBUG already substituted. # Requires the following vars to be set in the Makefile: # CFLAGS_DEFAULT # LDFLAGS_DEFAULT # # Results: # # Adds the following arguments to configure: # --enable-symbols # # Defines the following vars: # CFLAGS_DEFAULT Sets to $(CFLAGS_DEBUG) if true # Sets to "$(CFLAGS_OPTIMIZE) -DNDEBUG" if false # LDFLAGS_DEFAULT Sets to $(LDFLAGS_DEBUG) if true # Sets to $(LDFLAGS_OPTIMIZE) if false #------------------------------------------------------------------------ AC_DEFUN([TEA_ENABLE_SYMBOLS], [ dnl TEA specific: Make sure we are initialized AC_REQUIRE([TEA_CONFIG_CFLAGS]) AC_MSG_CHECKING([for build with symbols]) AC_ARG_ENABLE(symbols, AS_HELP_STRING([--enable-symbols], [build with debugging symbols (default: off)]), [tcl_ok=$enableval], [tcl_ok=no]) if test "$tcl_ok" = "no"; then CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE} -DNDEBUG" LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}" AC_MSG_RESULT([no]) AC_DEFINE(TCL_CFG_OPTIMIZED, 1, [Is this an optimized build?]) else CFLAGS_DEFAULT="${CFLAGS_DEBUG}" LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}" if test "$tcl_ok" = "yes"; then AC_MSG_RESULT([yes (standard debugging)]) fi fi AC_SUBST(CFLAGS_DEFAULT) AC_SUBST(LDFLAGS_DEFAULT) if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then AC_DEFINE(TCL_MEM_DEBUG, 1, [Is memory debugging enabled?]) fi if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then if test "$tcl_ok" = "all"; then AC_MSG_RESULT([enabled symbols mem debugging]) else AC_MSG_RESULT([enabled $tcl_ok debugging]) fi fi ]) #------------------------------------------------------------------------ # TEA_ENABLE_LANGINFO -- # # Allows use of modern nl_langinfo check for better l10n. # This is only relevant for Unix. # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --enable-langinfo=yes|no (default is yes) # # Defines the following vars: # HAVE_LANGINFO Triggers use of nl_langinfo if defined. #------------------------------------------------------------------------ AC_DEFUN([TEA_ENABLE_LANGINFO], [ AC_ARG_ENABLE(langinfo, AS_HELP_STRING([--enable-langinfo], [use nl_langinfo if possible to determine encoding at startup, otherwise use old heuristic (default: on)]), [langinfo_ok=$enableval], [langinfo_ok=yes]) HAVE_LANGINFO=0 if test "$langinfo_ok" = "yes"; then AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no]) fi AC_MSG_CHECKING([whether to use nl_langinfo]) if test "$langinfo_ok" = "yes"; then AC_CACHE_VAL(tcl_cv_langinfo_h, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[nl_langinfo(CODESET);]])], [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])]) AC_MSG_RESULT([$tcl_cv_langinfo_h]) if test $tcl_cv_langinfo_h = yes; then AC_DEFINE(HAVE_LANGINFO, 1, [Do we have nl_langinfo()?]) fi else AC_MSG_RESULT([$langinfo_ok]) fi ]) #-------------------------------------------------------------------- # TEA_CONFIG_SYSTEM # # Determine what the system is (some things cannot be easily checked # on a feature-driven basis, alas). This can usually be done via the # "uname" command. # # Arguments: # none # # Results: # Defines the following var: # # system - System/platform/version identification code. # #-------------------------------------------------------------------- AC_DEFUN([TEA_CONFIG_SYSTEM], [ AC_CACHE_CHECK([system version], tcl_cv_sys_version, [ # TEA specific: if test "${TEA_PLATFORM}" = "windows" ; then tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then AC_MSG_WARN([can't find uname command]) tcl_cv_sys_version=unknown else if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then tcl_cv_sys_version=NetBSD-Debian fi fi fi ]) system=$tcl_cv_sys_version ]) #-------------------------------------------------------------------- # TEA_CONFIG_CFLAGS # # Try to determine the proper flags to pass to the compiler # for building shared libraries and other such nonsense. # # Arguments: # none # # Results: # # Defines and substitutes the following vars: # # DL_OBJS, DL_LIBS - removed for TEA, only needed by core. # LDFLAGS - Flags to pass to the compiler when linking object # files into an executable application binary such # as tclsh. # LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib", # that tell the run-time dynamic linker where to look # for shared libraries such as libtcl.so. Depends on # the variable LIB_RUNTIME_DIR in the Makefile. Could # be the same as CC_SEARCH_FLAGS if ${CC} is used to link. # CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib", # that tell the run-time dynamic linker where to look # for shared libraries such as libtcl.so. Depends on # the variable LIB_RUNTIME_DIR in the Makefile. # SHLIB_CFLAGS - Flags to pass to cc when compiling the components # of a shared library (may request position-independent # code, among other things). # SHLIB_LD - Base command to use for combining object files # into a shared library. # SHLIB_LD_LIBS - Dependent libraries for the linker to scan when # creating shared libraries. This symbol typically # goes at the end of the "ld" commands that build # shared libraries. The value of the symbol defaults to # "${LIBS}" if all of the dependent libraries should # be specified when creating a shared library. If # dependent libraries should not be specified (as on # SunOS 4.x, where they cause the link to fail, or in # general if Tcl and Tk aren't themselves shared # libraries), then this symbol has an empty string # as its value. # SHLIB_SUFFIX - Suffix to use for the names of dynamically loadable # extensions. An empty string means we don't know how # to use shared libraries on this platform. # LIB_SUFFIX - Specifies everything that comes after the "libfoo" # in a static or shared library name, using the $PACKAGE_VERSION variable # to put the version in the right place. This is used # by platforms that need non-standard library names. # Examples: ${PACKAGE_VERSION}.so.1.1 on NetBSD, since it needs # to have a version after the .so, and ${PACKAGE_VERSION}.a # on AIX, since a shared library needs to have # a .a extension whereas shared objects for loadable # extensions have a .so extension. Defaults to # ${PACKAGE_VERSION}${SHLIB_SUFFIX}. # CFLAGS_DEBUG - # Flags used when running the compiler in debug mode # CFLAGS_OPTIMIZE - # Flags used when running the compiler in optimize mode # CFLAGS - Additional CFLAGS added as necessary (usually 64-bit) #-------------------------------------------------------------------- AC_DEFUN([TEA_CONFIG_CFLAGS], [ dnl TEA specific: Make sure we are initialized AC_REQUIRE([TEA_INIT]) # Step 0.a: Enable 64 bit support? AC_MSG_CHECKING([if 64bit support is requested]) AC_ARG_ENABLE(64bit, AS_HELP_STRING([--enable-64bit], [enable 64bit support (default: off)]), [do64bit=$enableval], [do64bit=no]) AC_MSG_RESULT([$do64bit]) # Step 0.b: Enable Solaris 64 bit VIS support? AC_MSG_CHECKING([if 64bit Sparc VIS support is requested]) AC_ARG_ENABLE(64bit-vis, AS_HELP_STRING([--enable-64bit-vis], [enable 64bit Sparc VIS support (default: off)]), [do64bitVIS=$enableval], [do64bitVIS=no]) AC_MSG_RESULT([$do64bitVIS]) # Force 64bit on with VIS AS_IF([test "$do64bitVIS" = "yes"], [do64bit=yes]) # Step 0.c: Check if visibility support is available. Do this here so # that platform specific alternatives can be used below if this fails. AC_CACHE_CHECK([if compiler supports visibility "hidden"], tcl_cv_cc_visibility_hidden, [ hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" AC_LINK_IFELSE([AC_LANG_PROGRAM([[ extern __attribute__((__visibility__("hidden"))) void f(void); void f(void) {}]], [[f();]])],[tcl_cv_cc_visibility_hidden=yes], [tcl_cv_cc_visibility_hidden=no]) CFLAGS=$hold_cflags]) AS_IF([test $tcl_cv_cc_visibility_hidden = yes], [ AC_DEFINE(MODULE_SCOPE, [extern __attribute__((__visibility__("hidden")))], [Compiler support for module scope symbols]) AC_DEFINE(HAVE_HIDDEN, [1], [Compiler support for module scope symbols]) ]) # Step 0.d: Disable -rpath support? AC_MSG_CHECKING([if rpath support is requested]) AC_ARG_ENABLE(rpath, AS_HELP_STRING([--disable-rpath], [disable rpath support (default: on)]), [doRpath=$enableval], [doRpath=yes]) AC_MSG_RESULT([$doRpath]) # Set the variable "system" to hold the name and version number # for the system. TEA_CONFIG_SYSTEM # Require ranlib early so we can override it in special cases below. AC_REQUIRE([AC_PROG_RANLIB]) # Set configuration options based on system name and version. # This is similar to Tcl's unix/tcl.m4 except that we've added a # "windows" case and removed some core-only vars. do64bit_ok=no # default to '{$LIBS}' and set to "" on per-platform necessary basis SHLIB_LD_LIBS='${LIBS}' # When ld needs options to work in 64-bit mode, put them in # LDFLAGS_ARCH so they eventually end up in LDFLAGS even if [load] # is disabled by the user. [Bug 1016796] LDFLAGS_ARCH="" UNSHARED_LIB_SUFFIX="" # TEA specific: use PACKAGE_VERSION instead of VERSION TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`' ECHO_VERSION='`echo ${PACKAGE_VERSION}`' TCL_LIB_VERSIONS_OK=ok CFLAGS_DEBUG=-g AS_IF([test "$GCC" = yes], [ CFLAGS_OPTIMIZE=-O2 CFLAGS_WARNING="-Wall" ], [ CFLAGS_OPTIMIZE=-O CFLAGS_WARNING="" ]) AC_CHECK_TOOL(AR, ar) STLIB_LD='${AR} cr' LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" AS_IF([test "x$SHLIB_VERSION" = x],[SHLIB_VERSION=""],[SHLIB_VERSION=".$SHLIB_VERSION"]) case $system in # TEA specific: windows) MACHINE="X86" if test "$do64bit" != "no" ; then case "$do64bit" in amd64|x64|yes) MACHINE="AMD64" ; # default to AMD64 64-bit build ;; arm64|aarch64) MACHINE="ARM64" ;; ia64) MACHINE="IA64" ;; esac fi if test "$GCC" != "yes" ; then if test "${SHARED_BUILD}" = "0" ; then runtime=-MT else runtime=-MD fi case "x`echo \${VisualStudioVersion}`" in x1[[4-9]]*) lflags="${lflags} -nodefaultlib:libucrt.lib" TEA_ADD_LIBS([ucrt.lib]) ;; *) ;; esac if test "$do64bit" != "no" ; then CC="cl.exe" RC="rc.exe" lflags="${lflags} -nologo -MACHINE:${MACHINE} " LINKBIN="link.exe" CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d" CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}" # Avoid 'unresolved external symbol __security_cookie' # errors, c.f. http://support.microsoft.com/?id=894573 TEA_ADD_LIBS([bufferoverflowU.lib]) else RC="rc" lflags="${lflags} -nologo" LINKBIN="link" CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d" CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}" fi fi if test "$GCC" = "yes"; then # mingw gcc mode AC_CHECK_TOOL(RC, windres) CFLAGS_DEBUG="-g" CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" SHLIB_LD='${CC} -shared' UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}" LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}" AC_CACHE_CHECK(for cross-compile version of gcc, ac_cv_cross, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #ifdef _WIN32 #error cross-compiler #endif ]], [[]])], [ac_cv_cross=yes], [ac_cv_cross=no]) ) if test "$ac_cv_cross" = "yes"; then case "$do64bit" in amd64|x64|yes) CC="x86_64-w64-mingw32-${CC}" LD="x86_64-w64-mingw32-ld" AR="x86_64-w64-mingw32-ar" RANLIB="x86_64-w64-mingw32-ranlib" RC="x86_64-w64-mingw32-windres" ;; arm64|aarch64) CC="aarch64-w64-mingw32-clang" LD="aarch64-w64-mingw32-ld" AR="aarch64-w64-mingw32-ar" RANLIB="aarch64-w64-mingw32-ranlib" RC="aarch64-w64-mingw32-windres" ;; *) CC="i686-w64-mingw32-${CC}" LD="i686-w64-mingw32-ld" AR="i686-w64-mingw32-ar" RANLIB="i686-w64-mingw32-ranlib" RC="i686-w64-mingw32-windres" ;; esac fi else SHLIB_LD="${LINKBIN} -dll ${lflags}" # link -lib only works when -lib is the first arg STLIB_LD="${LINKBIN} -lib ${lflags}" UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib' PATHTYPE=-w # For information on what debugtype is most useful, see: # http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp # and also # http://msdn2.microsoft.com/en-us/library/y0zzbyt4%28VS.80%29.aspx # This essentially turns it all on. LDFLAGS_DEBUG="-debug -debugtype:cv" LDFLAGS_OPTIMIZE="-release" LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}" LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}" fi SHLIB_SUFFIX=".dll" SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll' TCL_LIB_VERSIONS_OK=nodots ;; AIX-*) AS_IF([test "$GCC" != "yes"], [ # AIX requires the _r compiler when gcc isn't being used case "${CC}" in *_r|*_r\ *) # ok ... ;; *) # Make sure only first arg gets _r CC=`echo "$CC" | sed -e 's/^\([[^ ]]*\)/\1_r/'` ;; esac AC_MSG_RESULT([Using $CC for compiling with threads]) ]) LIBS="$LIBS -lc" SHLIB_CFLAGS="" SHLIB_SUFFIX=".so" LD_LIBRARY_PATH_VAR="LIBPATH" # Check to enable 64-bit flags for compiler/linker AS_IF([test "$do64bit" = yes], [ AS_IF([test "$GCC" = yes], [ AC_MSG_WARN([64bit mode not supported with GCC on $system]) ], [ do64bit_ok=yes CFLAGS="$CFLAGS -q64" LDFLAGS_ARCH="-q64" RANLIB="${RANLIB} -X64" AR="${AR} -X64" SHLIB_LD_FLAGS="-b64" ]) ]) AS_IF([test "`uname -m`" = ia64], [ # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC SHLIB_LD="/usr/ccs/bin/ld -G -z text" AS_IF([test "$GCC" = yes], [ CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"' ], [ CC_SEARCH_FLAGS='"-R${LIB_RUNTIME_DIR}"' ]) LD_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"' ], [ AS_IF([test "$GCC" = yes], [ SHLIB_LD='${CC} -shared -Wl,-bexpall' ], [ SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bexpall -H512 -T512 -bnoentry" LDFLAGS="$LDFLAGS -brtl" ]) SHLIB_LD="${SHLIB_LD} ${SHLIB_LD_FLAGS}" CC_SEARCH_FLAGS='"-L${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ]) ;; BeOS*) SHLIB_CFLAGS="-fPIC" SHLIB_LD='${CC} -nostart' SHLIB_SUFFIX=".so" #----------------------------------------------------------- # Check for inet_ntoa in -lbind, for BeOS (which also needs # -lsocket, even if the network functions are in -lnet which # is always linked to, for compatibility. #----------------------------------------------------------- AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"]) ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" SHLIB_LD="shlicc -r" SHLIB_SUFFIX=".so" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; BSD/OS-4.*) SHLIB_CFLAGS="-export-dynamic -fPIC" SHLIB_LD='${CC} -shared' SHLIB_SUFFIX=".so" LDFLAGS="$LDFLAGS -export-dynamic" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; CYGWIN_*) SHLIB_CFLAGS="" SHLIB_LD='${CC} -shared' SHLIB_SUFFIX=".dll" SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -Wl,--out-implib,\$[@].a" EXEEXT=".exe" do64bit_ok=yes CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; dgux*) SHLIB_CFLAGS="-K PIC" SHLIB_LD='${CC} -G' SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; Haiku*) LDFLAGS="$LDFLAGS -Wl,--export-dynamic" SHLIB_CFLAGS="-fPIC" SHLIB_SUFFIX=".so" SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared' AC_CHECK_LIB(network, inet_ntoa, [LIBS="$LIBS -lnetwork"]) ;; HP-UX-*.11.*) # Use updated header definitions where possible AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Do we want to use the XOPEN network library?]) # TEA specific: Needed by Tcl, but not most extensions #AC_DEFINE(_XOPEN_SOURCE, 1, [Do we want to use the XOPEN network library?]) #LIBS="$LIBS -lxnet" # Use the XOPEN network library AS_IF([test "`uname -m`" = ia64], [ SHLIB_SUFFIX=".so" ], [ SHLIB_SUFFIX=".sl" ]) AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no) AS_IF([test "$tcl_ok" = yes], [ SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" LDFLAGS="$LDFLAGS -Wl,-E" CC_SEARCH_FLAGS='"-Wl,+s,+b,${LIB_RUNTIME_DIR}:."' LD_SEARCH_FLAGS='+s +b "${LIB_RUNTIME_DIR}:."' LD_LIBRARY_PATH_VAR="SHLIB_PATH" ]) AS_IF([test "$GCC" = yes], [ SHLIB_LD='${CC} -shared' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ], [ CFLAGS="$CFLAGS -z" ]) # Check to enable 64-bit flags for compiler/linker AS_IF([test "$do64bit" = "yes"], [ AS_IF([test "$GCC" = yes], [ case `${CC} -dumpmachine` in hppa64*) # 64-bit gcc in use. Fix flags for GNU ld. do64bit_ok=yes SHLIB_LD='${CC} -shared' AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"']) LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ;; *) AC_MSG_WARN([64bit mode not supported with GCC on $system]) ;; esac ], [ do64bit_ok=yes CFLAGS="$CFLAGS +DD64" LDFLAGS_ARCH="+DD64" ]) ]) ;; HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) SHLIB_SUFFIX=".sl" AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no) AS_IF([test "$tcl_ok" = yes], [ SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" SHLIB_LD_LIBS="" LDFLAGS="$LDFLAGS -Wl,-E" CC_SEARCH_FLAGS='"-Wl,+s,+b,${LIB_RUNTIME_DIR}:."' LD_SEARCH_FLAGS='+s +b "${LIB_RUNTIME_DIR}:."' LD_LIBRARY_PATH_VAR="SHLIB_PATH" ]) ;; IRIX-5.*) SHLIB_CFLAGS="" SHLIB_LD="ld -shared -rdata_shared" SHLIB_SUFFIX=".so" AC_LIBOBJ(mkstemp) AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"']) ;; IRIX-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_SUFFIX=".so" AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"']) AS_IF([test "$GCC" = yes], [ CFLAGS="$CFLAGS -mabi=n32" LDFLAGS="$LDFLAGS -mabi=n32" ], [ case $system in IRIX-6.3) # Use to build 6.2 compatible binaries on 6.3. CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS" ;; *) CFLAGS="$CFLAGS -n32" ;; esac LDFLAGS="$LDFLAGS -n32" ]) ;; IRIX64-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -n32 -shared -rdata_shared" SHLIB_SUFFIX=".so" AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"']) # Check to enable 64-bit flags for compiler/linker AS_IF([test "$do64bit" = yes], [ AS_IF([test "$GCC" = yes], [ AC_MSG_WARN([64bit mode not supported by gcc]) ], [ do64bit_ok=yes SHLIB_LD="ld -64 -shared -rdata_shared" CFLAGS="$CFLAGS -64" LDFLAGS_ARCH="-64" ]) ]) ;; Linux*|GNU*|NetBSD-Debian|DragonFly-*|FreeBSD-*) SHLIB_CFLAGS="-fPIC" SHLIB_SUFFIX=".so" # TEA specific: CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS_DEFAULT} -shared' LDFLAGS="$LDFLAGS -Wl,--export-dynamic" case $system in DragonFly-*|FreeBSD-*) AS_IF([test "${TCL_THREADS}" = "1"], [ # The -pthread needs to go in the LDFLAGS, not LIBS LIBS=`echo $LIBS | sed s/-pthread//` CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LDFLAGS="$LDFLAGS $PTHREAD_LIBS"]) ;; esac AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"']) LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} AS_IF([test "`uname -m`" = "alpha"], [CFLAGS="$CFLAGS -mieee"]) AS_IF([test $do64bit = yes], [ AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [ hold_cflags=$CFLAGS CFLAGS="$CFLAGS -m64" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [tcl_cv_cc_m64=yes],[tcl_cv_cc_m64=no]) CFLAGS=$hold_cflags]) AS_IF([test $tcl_cv_cc_m64 = yes], [ CFLAGS="$CFLAGS -m64" do64bit_ok=yes ]) ]) # The combo of gcc + glibc has a bug related to inlining of # functions like strtod(). The -fno-builtin flag should address # this problem but it does not work. The -fno-inline flag is kind # of overkill but it works. Disable inlining only when one of the # files in compat/*.c is being linked in. AS_IF([test x"${USE_COMPAT}" != x],[CFLAGS="$CFLAGS -fno-inline"]) ;; Lynx*) SHLIB_CFLAGS="-fPIC" SHLIB_SUFFIX=".so" CFLAGS_OPTIMIZE=-02 SHLIB_LD='${CC} -shared' LD_FLAGS="-Wl,--export-dynamic" AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"']) ;; OpenBSD-*) arch=`arch -s` case "$arch" in alpha|sparc64) SHLIB_CFLAGS="-fPIC" ;; *) SHLIB_CFLAGS="-fpic" ;; esac SHLIB_LD='${CC} ${SHLIB_CFLAGS} -shared' SHLIB_SUFFIX=".so" AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"']) LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so${SHLIB_VERSION}' LDFLAGS="$LDFLAGS -Wl,-export-dynamic" CFLAGS_OPTIMIZE="-O2" # On OpenBSD: Compile with -pthread # Don't link with -lpthread LIBS=`echo $LIBS | sed s/-lpthread//` CFLAGS="$CFLAGS -pthread" # OpenBSD doesn't do version numbers with dots. UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; NetBSD-*) # NetBSD has ELF and can use 'cc -shared' to build shared libs SHLIB_CFLAGS="-fPIC" SHLIB_LD='${CC} ${SHLIB_CFLAGS} -shared' SHLIB_SUFFIX=".so" LDFLAGS="$LDFLAGS -export-dynamic" AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"']) LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} # The -pthread needs to go in the CFLAGS, not LIBS LIBS=`echo $LIBS | sed s/-pthread//` CFLAGS="$CFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" ;; Darwin-*) CFLAGS_OPTIMIZE="-Os" SHLIB_CFLAGS="-fno-common" # To avoid discrepancies between what headers configure sees during # preprocessing tests and compiling tests, move any -isysroot and # -mmacosx-version-min flags from CFLAGS to CPPFLAGS: CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \ awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`" CFLAGS="`echo " ${CFLAGS}" | \ awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \ if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`" AS_IF([test $do64bit = yes], [ case `arch` in ppc) AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag], tcl_cv_cc_arch_ppc64, [ hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [tcl_cv_cc_arch_ppc64=yes],[tcl_cv_cc_arch_ppc64=no]) CFLAGS=$hold_cflags]) AS_IF([test $tcl_cv_cc_arch_ppc64 = yes], [ CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5" do64bit_ok=yes ]);; i386) AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag], tcl_cv_cc_arch_x86_64, [ hold_cflags=$CFLAGS CFLAGS="$CFLAGS -arch x86_64" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [tcl_cv_cc_arch_x86_64=yes],[tcl_cv_cc_arch_x86_64=no]) CFLAGS=$hold_cflags]) AS_IF([test $tcl_cv_cc_arch_x86_64 = yes], [ CFLAGS="$CFLAGS -arch x86_64" do64bit_ok=yes ]);; *) AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);; esac ], [ # Check for combined 32-bit and 64-bit fat build AS_IF([echo "$CFLAGS " |grep -E -q -- '-arch (ppc64|x86_64) ' \ && echo "$CFLAGS " |grep -E -q -- '-arch (ppc|i386) '], [ fat_32_64=yes]) ]) # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS_DEFAULT}' AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [ hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [tcl_cv_ld_single_module=yes],[tcl_cv_ld_single_module=no]) LDFLAGS=$hold_ldflags]) AS_IF([test $tcl_cv_ld_single_module = yes], [ SHLIB_LD="${SHLIB_LD} -Wl,-single_module" ]) # TEA specific: link shlib with current and compatibility version flags vers=`echo ${PACKAGE_VERSION} | sed -e 's/^\([[0-9]]\{1,5\}\)\(\(\.[[0-9]]\{1,3\}\)\{0,2\}\).*$/\1\2/p' -e d` SHLIB_LD="${SHLIB_LD} -current_version ${vers:-0} -compatibility_version ${vers:-0}" SHLIB_SUFFIX=".dylib" LDFLAGS="$LDFLAGS -headerpad_max_install_names" AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [ hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-search_paths_first" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [tcl_cv_ld_search_paths_first=yes],[tcl_cv_ld_search_paths_first=no]) LDFLAGS=$hold_ldflags]) AS_IF([test $tcl_cv_ld_search_paths_first = yes], [ LDFLAGS="$LDFLAGS -Wl,-search_paths_first" ]) AS_IF([test "$tcl_cv_cc_visibility_hidden" != yes], [ AC_DEFINE(MODULE_SCOPE, [__private_extern__], [Compiler support for module scope symbols]) tcl_cv_cc_visibility_hidden=yes ]) CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH" # TEA specific: for combined 32 & 64 bit fat builds of Tk # extensions, verify that 64-bit build is possible. AS_IF([test "$fat_32_64" = yes && test -n "${TK_BIN_DIR}"], [ AS_IF([test "${TEA_WINDOWINGSYSTEM}" = x11], [ AC_CACHE_CHECK([for 64-bit X11], tcl_cv_lib_x11_64, [ for v in CFLAGS CPPFLAGS LDFLAGS; do eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"' done CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include" LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[XrmInitialize();]])], [tcl_cv_lib_x11_64=yes],[tcl_cv_lib_x11_64=no]) for v in CFLAGS CPPFLAGS LDFLAGS; do eval $v'="$hold_'$v'"' done]) ]) AS_IF([test "${TEA_WINDOWINGSYSTEM}" = aqua], [ AC_CACHE_CHECK([for 64-bit Tk], tcl_cv_lib_tk_64, [ for v in CFLAGS CPPFLAGS LDFLAGS; do eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"' done CPPFLAGS="$CPPFLAGS -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 ${TCL_INCLUDES} ${TK_INCLUDES}" LDFLAGS="$LDFLAGS ${TCL_STUB_LIB_SPEC} ${TK_STUB_LIB_SPEC}" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[Tk_InitStubs(NULL, "", 0);]])], [tcl_cv_lib_tk_64=yes],[tcl_cv_lib_tk_64=no]) for v in CFLAGS CPPFLAGS LDFLAGS; do eval $v'="$hold_'$v'"' done]) ]) # remove 64-bit arch flags from CFLAGS et al. if configuration # does not support 64-bit. AS_IF([test "$tcl_cv_lib_tk_64" = no -o "$tcl_cv_lib_x11_64" = no], [ AC_MSG_NOTICE([Removing 64-bit architectures from compiler & linker flags]) for v in CFLAGS CPPFLAGS LDFLAGS; do eval $v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"' done]) ]) ;; OS/390-*) CFLAGS_OPTIMIZE="" # Optimizer is buggy AC_DEFINE(_OE_SOCKETS, 1, # needed in sys/socket.h [Should OS/390 do the right thing with sockets?]) ;; OSF1-V*) # Digital OSF/1 SHLIB_CFLAGS="" AS_IF([test "$SHARED_BUILD" = 1], [ SHLIB_LD='ld -shared -expect_unresolved "*"' ], [ SHLIB_LD='ld -non_shared -expect_unresolved "*"' ]) SHLIB_SUFFIX=".so" AS_IF([test $doRpath = yes], [ CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}']) AS_IF([test "$GCC" = yes], [CFLAGS="$CFLAGS -mieee"], [ CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"]) # see pthread_intro(3) for pthread support on osf1, k.furukawa CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE" CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64" LIBS=`echo $LIBS | sed s/-lpthreads//` AS_IF([test "$GCC" = yes], [ LIBS="$LIBS -lpthread -lmach -lexc" ], [ CFLAGS="$CFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" ]) ;; QNX-6*) # QNX RTP # This may work for all QNX, but it was only reported for v6. SHLIB_CFLAGS="-fPIC" SHLIB_LD="ld -Bshareable -x" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; SCO_SV-3.2*) AS_IF([test "$GCC" = yes], [ SHLIB_CFLAGS="-fPIC -melf" LDFLAGS="$LDFLAGS -melf -Wl,-Bexport" ], [ SHLIB_CFLAGS="-Kpic -belf" LDFLAGS="$LDFLAGS -belf -Wl,-Bexport" ]) SHLIB_LD="ld -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; SunOS-5.[[0-6]]) # Careful to not let 5.10+ fall into this case # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?]) AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Do we really want to follow the standard? Yes we do!]) SHLIB_CFLAGS="-KPIC" SHLIB_SUFFIX=".so" AS_IF([test "$GCC" = yes], [ SHLIB_LD='${CC} -shared' CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ], [ SHLIB_LD="/usr/ccs/bin/ld -G -z text" CC_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} ]) ;; SunOS-5*) # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?]) AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Do we really want to follow the standard? Yes we do!]) SHLIB_CFLAGS="-KPIC" # Check to enable 64-bit flags for compiler/linker AS_IF([test "$do64bit" = yes], [ arch=`isainfo` AS_IF([test "$arch" = "sparcv9 sparc"], [ AS_IF([test "$GCC" = yes], [ AS_IF([test "`${CC} -dumpversion | awk -F. '{print [$]1}'`" -lt 3], [ AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system]) ], [ do64bit_ok=yes CFLAGS="$CFLAGS -m64 -mcpu=v9" LDFLAGS="$LDFLAGS -m64 -mcpu=v9" SHLIB_CFLAGS="-fPIC" ]) ], [ do64bit_ok=yes AS_IF([test "$do64bitVIS" = yes], [ CFLAGS="$CFLAGS -xarch=v9a" LDFLAGS_ARCH="-xarch=v9a" ], [ CFLAGS="$CFLAGS -xarch=v9" LDFLAGS_ARCH="-xarch=v9" ]) # Solaris 64 uses this as well #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64" ]) ], [AS_IF([test "$arch" = "amd64 i386"], [ AS_IF([test "$GCC" = yes], [ case $system in SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*) do64bit_ok=yes CFLAGS="$CFLAGS -m64" LDFLAGS="$LDFLAGS -m64";; *) AC_MSG_WARN([64bit mode not supported with GCC on $system]);; esac ], [ do64bit_ok=yes case $system in SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*) CFLAGS="$CFLAGS -m64" LDFLAGS="$LDFLAGS -m64";; *) CFLAGS="$CFLAGS -xarch=amd64" LDFLAGS="$LDFLAGS -xarch=amd64";; esac ]) ], [AC_MSG_WARN([64bit mode not supported for $arch])])]) ]) SHLIB_SUFFIX=".so" AS_IF([test "$GCC" = yes], [ SHLIB_LD='${CC} -shared' CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} AS_IF([test "$do64bit_ok" = yes], [ AS_IF([test "$arch" = "sparcv9 sparc"], [ # We need to specify -static-libgcc or we need to # add the path to the sparv9 libgcc. # JH: static-libgcc is necessary for core Tcl, but may # not be necessary for extensions. SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc" # for finding sparcv9 libgcc, get the regular libgcc # path, remove so name and append 'sparcv9' #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..." #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir" ], [AS_IF([test "$arch" = "amd64 i386"], [ # JH: static-libgcc is necessary for core Tcl, but may # not be necessary for extensions. SHLIB_LD="$SHLIB_LD -m64 -static-libgcc" ])]) ]) ], [ case $system in SunOS-5.[[1-9]][[0-9]]*) # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS SHLIB_LD='${CC} -G -z text ${LDFLAGS_DEFAULT}';; *) SHLIB_LD='/usr/ccs/bin/ld -G -z text';; esac CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"' LD_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"' ]) ;; UNIX_SV* | UnixWare-5*) SHLIB_CFLAGS="-KPIC" SHLIB_LD='${CC} -G' SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers # that don't grok the -Bexport option. Test that it does. AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [ hold_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-Bexport" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [tcl_cv_ld_Bexport=yes],[tcl_cv_ld_Bexport=no]) LDFLAGS=$hold_ldflags]) AS_IF([test $tcl_cv_ld_Bexport = yes], [ LDFLAGS="$LDFLAGS -Wl,-Bexport" ]) CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; esac AS_IF([test "$do64bit" = yes -a "$do64bit_ok" = no], [ AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform]) ]) dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so dnl # until the end of configure, as configure's compile and link tests use dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's dnl # preprocessing tests use only CPPFLAGS. AC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""]) # Add in the arch flags late to ensure it wasn't removed. # Not necessary in TEA, but this is aligned with core LDFLAGS="$LDFLAGS $LDFLAGS_ARCH" # If we're running gcc, then change the C flags for compiling shared # libraries to the right flags for gcc, instead of those for the # standard manufacturer compiler. AS_IF([test "$GCC" = yes], [ case $system in AIX-*) ;; BSD/OS*) ;; CYGWIN_*|MINGW32_*|MINGW64_*|MSYS_*) ;; IRIX*) ;; NetBSD-*|DragonFly-*|FreeBSD-*|OpenBSD-*) ;; Darwin-*) ;; SCO_SV-3.2*) ;; windows) ;; *) SHLIB_CFLAGS="-fPIC" ;; esac]) AS_IF([test "$tcl_cv_cc_visibility_hidden" != yes], [ AC_DEFINE(MODULE_SCOPE, [extern], [No Compiler support for module scope symbols]) ]) AS_IF([test "$SHARED_LIB_SUFFIX" = ""], [ # TEA specific: use PACKAGE_VERSION instead of VERSION SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}']) AS_IF([test "$UNSHARED_LIB_SUFFIX" = ""], [ # TEA specific: use PACKAGE_VERSION instead of VERSION UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a']) if test "${GCC}" = "yes" -a ${SHLIB_SUFFIX} = ".dll"; then AC_CACHE_CHECK(for SEH support in compiler, tcl_cv_seh, AC_RUN_IFELSE([AC_LANG_SOURCE([[ #define WIN32_LEAN_AND_MEAN #include #undef WIN32_LEAN_AND_MEAN int main(int argc, char** argv) { int a, b = 0; __try { a = 666 / b; } __except (EXCEPTION_EXECUTE_HANDLER) { return 0; } return 1; } ]])], [tcl_cv_seh=yes], [tcl_cv_seh=no], [tcl_cv_seh=no]) ) if test "$tcl_cv_seh" = "no" ; then AC_DEFINE(HAVE_NO_SEH, 1, [Defined when mingw does not support SEH]) fi # # Check to see if the excpt.h include file provided contains the # definition for EXCEPTION_DISPOSITION; if not, which is the case # with Cygwin's version as of 2002-04-10, define it to be int, # sufficient for getting the current code to work. # AC_CACHE_CHECK(for EXCEPTION_DISPOSITION support in include files, tcl_cv_eh_disposition, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ # define WIN32_LEAN_AND_MEAN # include # undef WIN32_LEAN_AND_MEAN ]], [[ EXCEPTION_DISPOSITION x; ]])], [tcl_cv_eh_disposition=yes], [tcl_cv_eh_disposition=no]) ) if test "$tcl_cv_eh_disposition" = "no" ; then AC_DEFINE(EXCEPTION_DISPOSITION, int, [Defined when cygwin/mingw does not support EXCEPTION DISPOSITION]) fi # Check to see if winnt.h defines CHAR, SHORT, and LONG # even if VOID has already been #defined. The win32api # used by mingw and cygwin is known to do this. AC_CACHE_CHECK(for winnt.h that ignores VOID define, tcl_cv_winnt_ignore_void, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #define VOID void #define WIN32_LEAN_AND_MEAN #include #undef WIN32_LEAN_AND_MEAN ]], [[ CHAR c; SHORT s; LONG l; ]])], [tcl_cv_winnt_ignore_void=yes], [tcl_cv_winnt_ignore_void=no]) ) if test "$tcl_cv_winnt_ignore_void" = "yes" ; then AC_DEFINE(HAVE_WINNT_IGNORE_VOID, 1, [Defined when cygwin/mingw ignores VOID define in winnt.h]) fi fi # See if the compiler supports casting to a union type. # This is used to stop gcc from printing a compiler # warning when initializing a union member. AC_CACHE_CHECK(for cast to union support, tcl_cv_cast_to_union, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ union foo { int i; double d; }; union foo f = (union foo) (int) 0; ]])], [tcl_cv_cast_to_union=yes], [tcl_cv_cast_to_union=no]) ) if test "$tcl_cv_cast_to_union" = "yes"; then AC_DEFINE(HAVE_CAST_TO_UNION, 1, [Defined when compiler supports casting to union type.]) fi AC_CHECK_HEADER(stdbool.h, [AC_DEFINE(HAVE_STDBOOL_H, 1, [Do we have ?])],) AC_SUBST(CFLAGS_DEBUG) AC_SUBST(CFLAGS_OPTIMIZE) AC_SUBST(CFLAGS_WARNING) AC_SUBST(LDFLAGS_DEBUG) AC_SUBST(LDFLAGS_OPTIMIZE) AC_SUBST(STLIB_LD) AC_SUBST(SHLIB_LD) AC_SUBST(SHLIB_LD_LIBS) AC_SUBST(SHLIB_CFLAGS) AC_SUBST(LD_LIBRARY_PATH_VAR) # These must be called after we do the basic CFLAGS checks and # verify any possible 64-bit or similar switches are necessary TEA_TCL_EARLY_FLAGS TEA_TCL_64BIT_FLAGS ]) #-------------------------------------------------------------------- # TEA_SERIAL_PORT # # Determine which interface to use to talk to the serial port. # Note that #include lines must begin in leftmost column for # some compilers to recognize them as preprocessor directives, # and some build environments have stdin not pointing at a # pseudo-terminal (usually /dev/null instead.) # # Arguments: # none # # Results: # # Defines only one of the following vars: # HAVE_SYS_MODEM_H # USE_TERMIOS # USE_TERMIO # USE_SGTTY #-------------------------------------------------------------------- AC_DEFUN([TEA_SERIAL_PORT], [ AC_CHECK_HEADERS(sys/modem.h) AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [ AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include int main() { struct termios t; if (tcgetattr(0, &t) == 0) { cfsetospeed(&t, 0); t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; return 0; } return 1; }]])],[tcl_cv_api_serial=termios],[tcl_cv_api_serial=no],[tcl_cv_api_serial=no]) if test $tcl_cv_api_serial = no ; then AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include int main() { struct termio t; if (ioctl(0, TCGETA, &t) == 0) { t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; return 0; } return 1; }]])],[tcl_cv_api_serial=termio],[tcl_cv_api_serial=no],[tcl_cv_api_serial=no]) fi if test $tcl_cv_api_serial = no ; then AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include int main() { struct sgttyb t; if (ioctl(0, TIOCGETP, &t) == 0) { t.sg_ospeed = 0; t.sg_flags |= ODDP | EVENP | RAW; return 0; } return 1; }]])],[tcl_cv_api_serial=sgtty],[tcl_cv_api_serial=no],[tcl_cv_api_serial=no]) fi if test $tcl_cv_api_serial = no ; then AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include int main() { struct termios t; if (tcgetattr(0, &t) == 0 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { cfsetospeed(&t, 0); t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB; return 0; } return 1; }]])],[tcl_cv_api_serial=termios],[tcl_cv_api_serial=no],[tcl_cv_api_serial=no]) fi if test $tcl_cv_api_serial = no; then AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include int main() { struct termio t; if (ioctl(0, TCGETA, &t) == 0 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB; return 0; } return 1; }]])],[tcl_cv_api_serial=termio],[tcl_cv_api_serial=no],[tcl_cv_api_serial=no]) fi if test $tcl_cv_api_serial = no; then AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include int main() { struct sgttyb t; if (ioctl(0, TIOCGETP, &t) == 0 || errno == ENOTTY || errno == ENXIO || errno == EINVAL) { t.sg_ospeed = 0; t.sg_flags |= ODDP | EVENP | RAW; return 0; } return 1; }]])],[tcl_cv_api_serial=sgtty],[tcl_cv_api_serial=none],[tcl_cv_api_serial=none]) fi]) case $tcl_cv_api_serial in termios) AC_DEFINE(USE_TERMIOS, 1, [Use the termios API for serial lines]);; termio) AC_DEFINE(USE_TERMIO, 1, [Use the termio API for serial lines]);; sgtty) AC_DEFINE(USE_SGTTY, 1, [Use the sgtty API for serial lines]);; esac ]) #-------------------------------------------------------------------- # TEA_PATH_X # # Locate the X11 header files and the X11 library archive. Try # the ac_path_x macro first, but if it doesn't find the X stuff # (e.g. because there's no xmkmf program) then check through # a list of possible directories. Under some conditions the # autoconf macro will return an include directory that contains # no include files, so double-check its result just to be safe. # # This should be called after TEA_CONFIG_CFLAGS as setting the # LIBS line can confuse some configure macro magic. # # Arguments: # none # # Results: # # Sets the following vars: # XINCLUDES # XLIBSW # PKG_LIBS (appends to) #-------------------------------------------------------------------- AC_DEFUN([TEA_PATH_X], [ if test "${TEA_WINDOWINGSYSTEM}" = "x11" ; then TEA_PATH_UNIX_X fi ]) AC_DEFUN([TEA_PATH_UNIX_X], [ AC_PATH_X not_really_there="" if test "$no_x" = ""; then if test "$x_includes" = ""; then AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include ]])],[],[not_really_there="yes"]) else if test ! -r $x_includes/X11/Xlib.h; then not_really_there="yes" fi fi fi if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then AC_MSG_CHECKING([for X11 header files]) found_xincludes="no" AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include ]])],[found_xincludes="yes"],[found_xincludes="no"]) if test "$found_xincludes" = "no"; then dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include" for i in $dirs ; do if test -r $i/X11/Xlib.h; then AC_MSG_RESULT([$i]) XINCLUDES=" -I$i" found_xincludes="yes" break fi done fi else if test "$x_includes" != ""; then XINCLUDES="-I$x_includes" found_xincludes="yes" fi fi if test "$found_xincludes" = "no"; then AC_MSG_RESULT([couldn't find any!]) fi if test "$no_x" = yes; then AC_MSG_CHECKING([for X11 libraries]) XLIBSW=nope dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib" for i in $dirs ; do if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl -o -r $i/libX11.dylib; then AC_MSG_RESULT([$i]) XLIBSW="-L$i -lX11" x_libraries="$i" break fi done else if test "$x_libraries" = ""; then XLIBSW=-lX11 else XLIBSW="-L$x_libraries -lX11" fi fi if test "$XLIBSW" = nope ; then AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow) fi if test "$XLIBSW" = nope ; then AC_MSG_RESULT([could not find any! Using -lX11.]) XLIBSW=-lX11 fi # TEA specific: if test x"${XLIBSW}" != x ; then PKG_LIBS="${PKG_LIBS} ${XLIBSW}" fi ]) #-------------------------------------------------------------------- # TEA_BLOCKING_STYLE # # The statements below check for systems where POSIX-style # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. # On these systems (mostly older ones), use the old BSD-style # FIONBIO approach instead. # # Arguments: # none # # Results: # # Defines some of the following vars: # HAVE_SYS_IOCTL_H # HAVE_SYS_FILIO_H # USE_FIONBIO # O_NONBLOCK #-------------------------------------------------------------------- AC_DEFUN([TEA_BLOCKING_STYLE], [ AC_CHECK_HEADERS(sys/ioctl.h) AC_CHECK_HEADERS(sys/filio.h) TEA_CONFIG_SYSTEM AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O]) case $system in OSF*) AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?]) AC_MSG_RESULT([FIONBIO]) ;; *) AC_MSG_RESULT([O_NONBLOCK]) ;; esac ]) #-------------------------------------------------------------------- # TEA_TIME_HANDLER # # Checks how the system deals with time.h, what time structures # are used on the system, and what fields the structures have. # # Arguments: # none # # Results: # # Defines some of the following vars: # USE_DELTA_FOR_TZ # HAVE_TM_GMTOFF # HAVE_TM_TZADJ # HAVE_TIMEZONE_VAR # #-------------------------------------------------------------------- AC_DEFUN([TEA_TIME_HANDLER], [ AC_CHECK_HEADERS(sys/time.h) AC_HEADER_TIME AC_STRUCT_TIMEZONE AC_CHECK_FUNCS(gmtime_r localtime_r mktime) AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct tm tm; (void)tm.tm_tzadj;]])], [tcl_cv_member_tm_tzadj=yes], [tcl_cv_member_tm_tzadj=no])]) if test $tcl_cv_member_tm_tzadj = yes ; then AC_DEFINE(HAVE_TM_TZADJ, 1, [Should we use the tm_tzadj field of struct tm?]) fi AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct tm tm; (void)tm.tm_gmtoff;]])], [tcl_cv_member_tm_gmtoff=yes], [tcl_cv_member_tm_gmtoff=no])]) if test $tcl_cv_member_tm_gmtoff = yes ; then AC_DEFINE(HAVE_TM_GMTOFF, 1, [Should we use the tm_gmtoff field of struct tm?]) fi # # Its important to include time.h in this check, as some systems # (like convex) have timezone functions, etc. # AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[extern long timezone; timezone += 1; exit (0);]])], [tcl_cv_timezone_long=yes], [tcl_cv_timezone_long=no])]) if test $tcl_cv_timezone_long = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?]) else # # On some systems (eg IRIX 6.2), timezone is a time_t and not a long. # AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[extern time_t timezone; timezone += 1; exit (0);]])], [tcl_cv_timezone_time=yes], [tcl_cv_timezone_time=no])]) if test $tcl_cv_timezone_time = yes ; then AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?]) fi fi ]) #-------------------------------------------------------------------- # TEA_BUGGY_STRTOD # # Under Solaris 2.4, strtod returns the wrong value for the # terminating character under some conditions. Check for this # and if the problem exists use a substitute procedure # "fixstrtod" (provided by Tcl) that corrects the error. # Also, on Compaq's Tru64 Unix 5.0, # strtod(" ") returns 0.0 instead of a failure to convert. # # Arguments: # none # # Results: # # Might defines some of the following vars: # strtod (=fixstrtod) #-------------------------------------------------------------------- AC_DEFUN([TEA_BUGGY_STRTOD], [ AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0) if test "$tcl_strtod" = 1; then AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[ AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include extern double strtod(); int main() { char *infString="Inf", *nanString="NaN", *spaceString=" "; char *term; double value; value = strtod(infString, &term); if ((term != infString) && (term[-1] == 0)) { exit(1); } value = strtod(nanString, &term); if ((term != nanString) && (term[-1] == 0)) { exit(1); } value = strtod(spaceString, &term); if (term == (spaceString+1)) { exit(1); } exit(0); }]])], [tcl_cv_strtod_buggy=ok], [tcl_cv_strtod_buggy=buggy], [tcl_cv_strtod_buggy=buggy])]) if test "$tcl_cv_strtod_buggy" = buggy; then AC_LIBOBJ([fixstrtod]) USE_COMPAT=1 AC_DEFINE(strtod, fixstrtod, [Do we want to use the strtod() in compat?]) fi fi ]) #-------------------------------------------------------------------- # TEA_TCL_LINK_LIBS # # Search for the libraries needed to link the Tcl shell. # Things like the math library (-lm), socket stuff (-lsocket vs. # -lnsl), zlib (-lz) and libtommath (-ltommath) are dealt with here. # # Arguments: # None. # # Results: # # Might append to the following vars: # LIBS # MATH_LIBS # # Might define the following vars: # HAVE_NET_ERRNO_H # #-------------------------------------------------------------------- AC_DEFUN([TEA_TCL_LINK_LIBS], [ #-------------------------------------------------------------------- # On a few very rare systems, all of the libm.a stuff is # already in libc.a. Set compiler flags accordingly. #-------------------------------------------------------------------- AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm") #-------------------------------------------------------------------- # Interactive UNIX requires -linet instead of -lsocket, plus it # needs net/errno.h to define the socket-related error codes. #-------------------------------------------------------------------- AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"]) AC_CHECK_HEADER(net/errno.h, [ AC_DEFINE(HAVE_NET_ERRNO_H, 1, [Do we have ?])]) #-------------------------------------------------------------------- # Check for the existence of the -lsocket and -lnsl libraries. # The order here is important, so that they end up in the right # order in the command line generated by make. Here are some # special considerations: # 1. Use "connect" and "accept" to check for -lsocket, and # "gethostbyname" to check for -lnsl. # 2. Use each function name only once: can't redo a check because # autoconf caches the results of the last check and won't redo it. # 3. Use -lnsl and -lsocket only if they supply procedures that # aren't already present in the normal libraries. This is because # IRIX 5.2 has libraries, but they aren't needed and they're # bogus: they goof up name resolution if used. # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. # To get around this problem, check for both libraries together # if -lsocket doesn't work by itself. #-------------------------------------------------------------------- tcl_checkBoth=0 AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1) if test "$tcl_checkSocket" = 1; then AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt, LIBS="$LIBS -lsocket", tcl_checkBoth=1)]) fi if test "$tcl_checkBoth" = 1; then tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs]) fi AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"])]) AC_CHECK_FUNC(mp_log_u32, , [AC_CHECK_LIB(tommath, mp_log_u32, [LIBS="$LIBS -ltommath"])]) AC_CHECK_FUNC(deflateSetHeader, , [AC_CHECK_LIB(z, deflateSetHeader, [LIBS="$LIBS -lz"])]) ]) #-------------------------------------------------------------------- # TEA_TCL_EARLY_FLAGS # # Check for what flags are needed to be passed so the correct OS # features are available. # # Arguments: # None # # Results: # # Might define the following vars: # _ISOC99_SOURCE # _FILE_OFFSET_BITS # #-------------------------------------------------------------------- AC_DEFUN([TEA_TCL_EARLY_FLAG],[ AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]), AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$2]], [[$3]])], [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[[#define ]$1[ ]m4_default([$4],[1])[ ]$2]], [[$3]])], [tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)])) if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then AC_DEFINE($1, m4_default([$4],[1]), [Add the ]$1[ flag when building]) tcl_flags="$tcl_flags $1" fi ]) AC_DEFUN([TEA_TCL_EARLY_FLAGS],[ AC_MSG_CHECKING([for required early compiler flags]) tcl_flags="" TEA_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include ], [char *p = (char *)strtoll; char *q = (char *)strtoull;]) if test "${TCL_MAJOR_VERSION}" -ne 8 ; then TEA_TCL_EARLY_FLAG(_FILE_OFFSET_BITS,[#include ], [switch (0) { case 0: case (sizeof(off_t)==sizeof(long long)): ; }],64) fi if test "x${tcl_flags}" = "x" ; then AC_MSG_RESULT([none]) else AC_MSG_RESULT([${tcl_flags}]) fi ]) #-------------------------------------------------------------------- # TEA_TCL_64BIT_FLAGS # # Check for what is defined in the way of 64-bit features. # # Arguments: # None # # Results: # # Might define the following vars: # TCL_WIDE_INT_IS_LONG # TCL_WIDE_INT_TYPE # HAVE_STRUCT_DIRENT64, HAVE_DIR64 # HAVE_STRUCT_STAT64 # HAVE_TYPE_OFF64_T # _TIME_BITS # #-------------------------------------------------------------------- AC_DEFUN([TEA_TCL_64BIT_FLAGS], [ AC_MSG_CHECKING([for 64-bit integer type]) AC_CACHE_VAL(tcl_cv_type_64bit,[ tcl_cv_type_64bit=none # See if the compiler knows natively about __int64 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__int64 value = (__int64) 0;]])], [tcl_type_64bit=__int64],[tcl_type_64bit="long long"]) # See if we could use long anyway Note that we substitute in the # type that is our current guess for a 64-bit type inside this check # program, so it should be modified only carefully... AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[switch (0) { case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ; }]])],[tcl_cv_type_64bit=${tcl_type_64bit}],[])]) if test "${tcl_cv_type_64bit}" = none ; then AC_DEFINE(TCL_WIDE_INT_IS_LONG, 1, [Do 'long' and 'long long' have the same size (64-bit)?]) AC_MSG_RESULT([yes]) elif test "${tcl_cv_type_64bit}" = "__int64" \ -a "${TEA_PLATFORM}" = "windows" ; then # TEA specific: We actually want to use the default tcl.h checks in # this case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER* AC_MSG_RESULT([using Tcl header defaults]) else AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit}, [What type should be used to define wide integers?]) AC_MSG_RESULT([${tcl_cv_type_64bit}]) # Now check for auxiliary declarations if test "${TCL_MAJOR_VERSION}" -ne 8 ; then AC_CACHE_CHECK([for 64-bit time_t], tcl_cv_time_t_64,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[switch (0) {case 0: case (sizeof(time_t)==sizeof(long long)): ;}]])], [tcl_cv_time_t_64=yes],[tcl_cv_time_t_64=no])]) if test "x${tcl_cv_time_t_64}" = "xno" ; then # Note that _TIME_BITS=64 requires _FILE_OFFSET_BITS=64 # which SC_TCL_EARLY_FLAGS has defined if necessary. AC_CACHE_CHECK([if _TIME_BITS=64 enables 64-bit time_t], tcl_cv__time_bits,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _TIME_BITS 64 #include ]], [[switch (0) {case 0: case (sizeof(time_t)==sizeof(long long)): ;}]])], [tcl_cv__time_bits=yes],[tcl_cv__time_bits=no])]) if test "x${tcl_cv__time_bits}" = "xyes" ; then AC_DEFINE(_TIME_BITS, 64, [_TIME_BITS=64 enables 64-bit time_t.]) fi fi fi AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[struct dirent64 p;]])], [tcl_cv_struct_dirent64=yes],[tcl_cv_struct_dirent64=no])]) if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then AC_DEFINE(HAVE_STRUCT_DIRENT64, 1, [Is 'struct dirent64' in ?]) fi AC_CACHE_CHECK([for DIR64], tcl_cv_DIR64,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[struct dirent64 *p; DIR64 d = opendir64("."); p = readdir64(d); rewinddir64(d); closedir64(d);]])], [tcl_cv_DIR64=yes], [tcl_cv_DIR64=no])]) if test "x${tcl_cv_DIR64}" = "xyes" ; then AC_DEFINE(HAVE_DIR64, 1, [Is 'DIR64' in ?]) fi AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct stat64 p; ]])], [tcl_cv_struct_stat64=yes], [tcl_cv_struct_stat64=no])]) if test "x${tcl_cv_struct_stat64}" = "xyes" ; then AC_DEFINE(HAVE_STRUCT_STAT64, 1, [Is 'struct stat64' in ?]) fi AC_CHECK_FUNCS(open64 lseek64) AC_MSG_CHECKING([for off64_t]) AC_CACHE_VAL(tcl_cv_type_off64_t,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[off64_t offset; ]])], [tcl_cv_type_off64_t=yes], [tcl_cv_type_off64_t=no])]) dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the dnl functions lseek64 and open64 are defined. if test "x${tcl_cv_type_off64_t}" = "xyes" && \ test "x${ac_cv_func_lseek64}" = "xyes" && \ test "x${ac_cv_func_open64}" = "xyes" ; then AC_DEFINE(HAVE_TYPE_OFF64_T, 1, [Is off64_t in ?]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi fi ]) ## ## Here ends the standard Tcl configuration bits and starts the ## TEA specific functions ## #------------------------------------------------------------------------ # TEA_INIT -- # # Init various Tcl Extension Architecture (TEA) variables. # This should be the first called TEA_* macro. # # Arguments: # none # # Results: # # Defines and substs the following vars: # CYGPATH # EXEEXT # Defines only: # TEA_VERSION # TEA_INITED # TEA_PLATFORM (windows or unix) # # "cygpath" is used on windows to generate native path names for include # files. These variables should only be used with the compiler and linker # since they generate native path names. # # EXEEXT # Select the executable extension based on the host type. This # is a lightweight replacement for AC_EXEEXT that doesn't require # a compiler. #------------------------------------------------------------------------ AC_DEFUN([TEA_INIT], [ TEA_VERSION="3.13" AC_MSG_CHECKING([TEA configuration]) if test x"${PACKAGE_NAME}" = x ; then AC_MSG_ERROR([ The PACKAGE_NAME variable must be defined by your TEA configure.ac]) fi AC_MSG_RESULT([ok (TEA ${TEA_VERSION})]) # If the user did not set CFLAGS, set it now to keep macros # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi case "`uname -s`" in *win32*|*WIN32*|*MINGW32_*|*MINGW64_*|*MSYS_*) AC_CHECK_PROG(CYGPATH, cygpath, cygpath -m, echo) EXEEXT=".exe" TEA_PLATFORM="windows" ;; *CYGWIN_*) EXEEXT=".exe" # CYGPATH and TEA_PLATFORM are determined later in LOAD_TCLCONFIG ;; *) CYGPATH=echo # Maybe we are cross-compiling.... case ${host_alias} in *mingw32*) EXEEXT=".exe" TEA_PLATFORM="windows" ;; *) EXEEXT="" TEA_PLATFORM="unix" ;; esac ;; esac # Check if exec_prefix is set. If not use fall back to prefix. # Note when adjusted, so that TEA_PREFIX can correct for this. # This is needed for recursive configures, since autoconf propagates # $prefix, but not $exec_prefix (doh!). if test x$exec_prefix = xNONE ; then exec_prefix_default=yes exec_prefix=$prefix fi AC_MSG_NOTICE([configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}]) AC_SUBST(EXEEXT) AC_SUBST(CYGPATH) # This package name must be replaced statically for AC_SUBST to work AC_SUBST(PKG_LIB_FILE) AC_SUBST(PKG_LIB_FILE8) AC_SUBST(PKG_LIB_FILE9) # We AC_SUBST these here to ensure they are subst'ed, # in case the user doesn't call TEA_ADD_... AC_SUBST(PKG_STUB_SOURCES) AC_SUBST(PKG_STUB_OBJECTS) AC_SUBST(PKG_TCL_SOURCES) AC_SUBST(PKG_HEADERS) AC_SUBST(PKG_INCLUDES) AC_SUBST(PKG_LIBS) AC_SUBST(PKG_CFLAGS) # Configure the installer. TEA_INSTALLER ]) #------------------------------------------------------------------------ # TEA_ADD_SOURCES -- # # Specify one or more source files. Users should check for # the right platform before adding to their list. # It is not important to specify the directory, as long as it is # in the generic, win or unix subdirectory of $(srcdir). # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_SOURCES # PKG_OBJECTS #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_SOURCES], [ vars="$@" for i in $vars; do case $i in [\$]*) # allow $-var names PKG_SOURCES="$PKG_SOURCES $i" PKG_OBJECTS="$PKG_OBJECTS $i" ;; *) # check for existence - allows for generic/win/unix VPATH # To add more dirs here (like 'src'), you have to update VPATH # in Makefile.in as well if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ -a ! -f "${srcdir}/macosx/$i" \ ; then AC_MSG_ERROR([could not find source file '$i']) fi PKG_SOURCES="$PKG_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}" fi PKG_OBJECTS="$PKG_OBJECTS $j" ;; esac done AC_SUBST(PKG_SOURCES) AC_SUBST(PKG_OBJECTS) ]) #------------------------------------------------------------------------ # TEA_ADD_STUB_SOURCES -- # # Specify one or more source files. Users should check for # the right platform before adding to their list. # It is not important to specify the directory, as long as it is # in the generic, win or unix subdirectory of $(srcdir). # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_STUB_SOURCES # PKG_STUB_OBJECTS #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_STUB_SOURCES], [ vars="$@" for i in $vars; do # check for existence - allows for generic/win/unix VPATH if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \ -a ! -f "${srcdir}/macosx/$i" \ ; then AC_MSG_ERROR([could not find stub source file '$i']) fi PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i" # this assumes it is in a VPATH dir i=`basename $i` # handle user calling this before or after TEA_SETUP_COMPILER if test x"${OBJEXT}" != x ; then j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}" else j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}" fi PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j" done AC_SUBST(PKG_STUB_SOURCES) AC_SUBST(PKG_STUB_OBJECTS) ]) #------------------------------------------------------------------------ # TEA_ADD_TCL_SOURCES -- # # Specify one or more Tcl source files. These should be platform # independent runtime files. # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_TCL_SOURCES #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_TCL_SOURCES], [ vars="$@" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then AC_MSG_ERROR([could not find tcl source file '${srcdir}/$i']) fi PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i" done AC_SUBST(PKG_TCL_SOURCES) ]) #------------------------------------------------------------------------ # TEA_ADD_HEADERS -- # # Specify one or more source headers. Users should check for # the right platform before adding to their list. # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_HEADERS #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_HEADERS], [ vars="$@" for i in $vars; do # check for existence, be strict because it is installed if test ! -f "${srcdir}/$i" ; then AC_MSG_ERROR([could not find header file '${srcdir}/$i']) fi PKG_HEADERS="$PKG_HEADERS $i" done AC_SUBST(PKG_HEADERS) ]) #------------------------------------------------------------------------ # TEA_ADD_INCLUDES -- # # Specify one or more include dirs. Users should check for # the right platform before adding to their list. # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_INCLUDES #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_INCLUDES], [ vars="$@" for i in $vars; do PKG_INCLUDES="$PKG_INCLUDES $i" done AC_SUBST(PKG_INCLUDES) ]) #------------------------------------------------------------------------ # TEA_ADD_LIBS -- # # Specify one or more libraries. Users should check for # the right platform before adding to their list. For Windows, # libraries provided in "foo.lib" format will be converted to # "-lfoo" when using GCC (mingw). # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_LIBS #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_LIBS], [ vars="$@" for i in $vars; do if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then # Convert foo.lib to -lfoo for GCC. No-op if not *.lib i=`echo "$i" | sed -e 's/^\([[^-]].*\)\.[[lL]][[iI]][[bB]][$]/-l\1/'` fi PKG_LIBS="$PKG_LIBS $i" done AC_SUBST(PKG_LIBS) ]) #------------------------------------------------------------------------ # TEA_ADD_CFLAGS -- # # Specify one or more CFLAGS. Users should check for # the right platform before adding to their list. # # Arguments: # one or more file names # # Results: # # Defines and substs the following vars: # PKG_CFLAGS #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_CFLAGS], [ PKG_CFLAGS="$PKG_CFLAGS $@" AC_SUBST(PKG_CFLAGS) ]) #------------------------------------------------------------------------ # TEA_ADD_CLEANFILES -- # # Specify one or more CLEANFILES. # # Arguments: # one or more file names to clean target # # Results: # # Appends to CLEANFILES, already defined for subst in LOAD_TCLCONFIG #------------------------------------------------------------------------ AC_DEFUN([TEA_ADD_CLEANFILES], [ CLEANFILES="$CLEANFILES $@" ]) #------------------------------------------------------------------------ # TEA_PREFIX -- # # Handle the --prefix=... option by defaulting to what Tcl gave # # Arguments: # none # # Results: # # If --prefix or --exec-prefix was not specified, $prefix and # $exec_prefix will be set to the values given to Tcl when it was # configured. #------------------------------------------------------------------------ AC_DEFUN([TEA_PREFIX], [ if test "${prefix}" = "NONE"; then prefix_default=yes if test x"${TCL_PREFIX}" != x; then AC_MSG_NOTICE([--prefix defaulting to TCL_PREFIX ${TCL_PREFIX}]) prefix=${TCL_PREFIX} else AC_MSG_NOTICE([--prefix defaulting to /usr/local]) prefix=/usr/local fi fi if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \ -o x"${exec_prefix_default}" = x"yes" ; then if test x"${TCL_EXEC_PREFIX}" != x; then AC_MSG_NOTICE([--exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}]) exec_prefix=${TCL_EXEC_PREFIX} else AC_MSG_NOTICE([--exec-prefix defaulting to ${prefix}]) exec_prefix=$prefix fi fi ]) #------------------------------------------------------------------------ # TEA_SETUP_COMPILER_CC -- # # Do compiler checks the way we want. This is just a replacement # for AC_PROG_CC in TEA configure.ac files to make them cleaner. # # Arguments: # none # # Results: # # Sets up CC var and other standard bits we need to make executables. #------------------------------------------------------------------------ AC_DEFUN([TEA_SETUP_COMPILER_CC], [ # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE) # in this macro, they need to go into TEA_SETUP_COMPILER instead. AC_PROG_CC AC_PROG_CPP #-------------------------------------------------------------------- # Checks to see if the make program sets the $MAKE variable. #-------------------------------------------------------------------- AC_PROG_MAKE_SET #-------------------------------------------------------------------- # Find ranlib #-------------------------------------------------------------------- AC_CHECK_TOOL(RANLIB, ranlib) #-------------------------------------------------------------------- # Determines the correct binary file extension (.o, .obj, .exe etc.) #-------------------------------------------------------------------- AC_OBJEXT AC_EXEEXT ]) #------------------------------------------------------------------------ # TEA_SETUP_COMPILER -- # # Do compiler checks that use the compiler. This must go after # TEA_SETUP_COMPILER_CC, which does the actual compiler check. # # Arguments: # none # # Results: # # Sets up CC var and other standard bits we need to make executables. #------------------------------------------------------------------------ AC_DEFUN([TEA_SETUP_COMPILER], [ # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here. AC_REQUIRE([TEA_SETUP_COMPILER_CC]) #------------------------------------------------------------------------ # If we're using GCC, see if the compiler understands -pipe. If so, use it. # It makes compiling go faster. (This is only a performance feature.) #------------------------------------------------------------------------ if test -z "$no_pipe" -a -n "$GCC"; then AC_CACHE_CHECK([if the compiler understands -pipe], tcl_cv_cc_pipe, [ hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[tcl_cv_cc_pipe=yes],[tcl_cv_cc_pipe=no]) CFLAGS=$hold_cflags]) if test $tcl_cv_cc_pipe = yes; then CFLAGS="$CFLAGS -pipe" fi fi if test "${TCL_MAJOR_VERSION}" -lt 9 -a "${TCL_MINOR_VERSION}" -lt 7; then AC_DEFINE(Tcl_Size, int, [Is 'Tcl_Size' in ?]) fi #-------------------------------------------------------------------- # Common compiler flag setup #-------------------------------------------------------------------- AC_C_BIGENDIAN(,,,[#]) ]) #------------------------------------------------------------------------ # TEA_MAKE_LIB -- # # Generate a line that can be used to build a shared/unshared library # in a platform independent manner. # # Arguments: # none # # Requires: # # Results: # # Defines the following vars: # CFLAGS - Done late here to note disturb other AC macros # MAKE_LIB - Command to execute to build the Tcl library; # differs depending on whether or not Tcl is being # compiled as a shared library. # MAKE_SHARED_LIB Makefile rule for building a shared library # MAKE_STATIC_LIB Makefile rule for building a static library # MAKE_STUB_LIB Makefile rule for building a stub library # VC_MANIFEST_EMBED_DLL Makefile rule for embedded VC manifest in DLL # VC_MANIFEST_EMBED_EXE Makefile rule for embedded VC manifest in EXE #------------------------------------------------------------------------ AC_DEFUN([TEA_MAKE_LIB], [ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)" MAKE_SHARED_LIB="\${SHLIB_LD} \${LDFLAGS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}" AC_EGREP_CPP([manifest needed], [ #if defined(_MSC_VER) && _MSC_VER >= 1400 print("manifest needed") #endif ], [ # Could do a CHECK_PROG for mt, but should always be with MSVC8+ VC_MANIFEST_EMBED_DLL="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;2 ; fi" VC_MANIFEST_EMBED_EXE="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;1 ; fi" MAKE_SHARED_LIB="${MAKE_SHARED_LIB} ; ${VC_MANIFEST_EMBED_DLL}" TEA_ADD_CLEANFILES([*.manifest]) ]) MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\[$]@ \$(PKG_STUB_OBJECTS)" else MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)" MAKE_SHARED_LIB="\${SHLIB_LD} \${LDFLAGS} \${LDFLAGS_DEFAULT} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}" MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)" fi if test "${SHARED_BUILD}" = "1" ; then MAKE_LIB="${MAKE_SHARED_LIB} " else MAKE_LIB="${MAKE_STATIC_LIB} " fi #-------------------------------------------------------------------- # Shared libraries and static libraries have different names. # Use the double eval to make sure any variables in the suffix is # substituted. (@@@ Might not be necessary anymore) #-------------------------------------------------------------------- PACKAGE_LIB_PREFIX8="${PACKAGE_LIB_PREFIX}" PACKAGE_LIB_PREFIX9="${PACKAGE_LIB_PREFIX}tcl9" if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" == x; then PACKAGE_LIB_PREFIX="${PACKAGE_LIB_PREFIX9}" else PACKAGE_LIB_PREFIX="${PACKAGE_LIB_PREFIX8}" AC_DEFINE(TCL_MAJOR_VERSION, 8, [Compile for Tcl8?]) fi if test "${TEA_PLATFORM}" = "windows" ; then if test "${SHARED_BUILD}" = "1" ; then # We force the unresolved linking of symbols that are really in # the private libraries of Tcl and Tk. if test x"${TK_BIN_DIR}" != x ; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\"" fi SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\"" if test "$GCC" = "yes"; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -static-libgcc" fi eval eval "PKG_LIB_FILE8=${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE9=${PACKAGE_LIB_PREFIX9}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" else if test "$GCC" = "yes"; then PACKAGE_LIB_PREFIX=lib${PACKAGE_LIB_PREFIX} fi eval eval "PKG_LIB_FILE8=${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE9=${PACKAGE_LIB_PREFIX9}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" fi # Some packages build their own stubs libraries if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" == x; then eval eval "PKG_STUB_LIB_FILE=${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub.a" else eval eval "PKG_STUB_LIB_FILE=${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" fi if test "$GCC" = "yes"; then PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE} fi # These aren't needed on Windows (either MSVC or gcc) RANLIB=: RANLIB_STUB=: else RANLIB_STUB="${RANLIB}" if test "${SHARED_BUILD}" = "1" ; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}" if test x"${TK_BIN_DIR}" != x ; then SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}" fi eval eval "PKG_LIB_FILE8=lib${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE9=lib${PACKAGE_LIB_PREFIX9}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" RANLIB=: else eval eval "PKG_LIB_FILE8=lib${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE9=lib${PACKAGE_LIB_PREFIX9}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" eval eval "PKG_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" fi # Some packages build their own stubs libraries if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" == x; then eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub.a" else eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" fi fi # These are escaped so that only CFLAGS is picked up at configure time. # The other values will be substituted at make time. CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}" if test "${SHARED_BUILD}" = "1" ; then CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}" fi AC_SUBST(MAKE_LIB) AC_SUBST(MAKE_SHARED_LIB) AC_SUBST(MAKE_STATIC_LIB) AC_SUBST(MAKE_STUB_LIB) # Substitute STUB_LIB_FILE in case package creates a stub library too. AC_SUBST(PKG_STUB_LIB_FILE) AC_SUBST(RANLIB_STUB) AC_SUBST(VC_MANIFEST_EMBED_DLL) AC_SUBST(VC_MANIFEST_EMBED_EXE) ]) #------------------------------------------------------------------------ # TEA_LIB_SPEC -- # # Compute the name of an existing object library located in libdir # from the given base name and produce the appropriate linker flags. # # Arguments: # basename The base name of the library without version # numbers, extensions, or "lib" prefixes. # extra_dir Extra directory in which to search for the # library. This location is used first, then # $prefix/$exec-prefix, then some defaults. # # Requires: # TEA_INIT and TEA_PREFIX must be called first. # # Results: # # Defines the following vars: # ${basename}_LIB_NAME The computed library name. # ${basename}_LIB_SPEC The computed linker flags. #------------------------------------------------------------------------ AC_DEFUN([TEA_LIB_SPEC], [ AC_MSG_CHECKING([for $1 library]) # Look in exec-prefix for the library (defined by TEA_PREFIX). tea_lib_name_dir="${exec_prefix}/lib" # Or in a user-specified location. if test x"$2" != x ; then tea_extra_lib_dir=$2 else tea_extra_lib_dir=NONE fi for i in \ `ls -dr ${tea_extra_lib_dir}/$1[[0-9]]*.lib 2>/dev/null ` \ `ls -dr ${tea_extra_lib_dir}/lib$1[[0-9]]* 2>/dev/null ` \ `ls -dr ${tea_lib_name_dir}/$1[[0-9]]*.lib 2>/dev/null ` \ `ls -dr ${tea_lib_name_dir}/lib$1[[0-9]]* 2>/dev/null ` \ `ls -dr /usr/lib/$1[[0-9]]*.lib 2>/dev/null ` \ `ls -dr /usr/lib/lib$1[[0-9]]* 2>/dev/null ` \ `ls -dr /usr/lib64/$1[[0-9]]*.lib 2>/dev/null ` \ `ls -dr /usr/lib64/lib$1[[0-9]]* 2>/dev/null ` \ `ls -dr /usr/local/lib/$1[[0-9]]*.lib 2>/dev/null ` \ `ls -dr /usr/local/lib/lib$1[[0-9]]* 2>/dev/null ` ; do if test -f "$i" ; then tea_lib_name_dir=`dirname $i` $1_LIB_NAME=`basename $i` $1_LIB_PATH_NAME=$i break fi done if test "${TEA_PLATFORM}" = "windows"; then $1_LIB_SPEC=\"`${CYGPATH} ${$1_LIB_PATH_NAME} 2>/dev/null`\" else # Strip off the leading "lib" and trailing ".a" or ".so" tea_lib_name_lib=`echo ${$1_LIB_NAME}|sed -e 's/^lib//' -e 's/\.[[^.]]*$//' -e 's/\.so.*//'` $1_LIB_SPEC="-L${tea_lib_name_dir} -l${tea_lib_name_lib}" fi if test "x${$1_LIB_NAME}" = x ; then AC_MSG_ERROR([not found]) else AC_MSG_RESULT([${$1_LIB_SPEC}]) fi ]) #------------------------------------------------------------------------ # TEA_PRIVATE_TCL_HEADERS -- # # Locate the private Tcl include files # # Arguments: # # Requires: # TCL_SRC_DIR Assumes that TEA_LOAD_TCLCONFIG has # already been called. # # Results: # # Substitutes the following vars: # TCL_TOP_DIR_NATIVE # TCL_INCLUDES #------------------------------------------------------------------------ AC_DEFUN([TEA_PRIVATE_TCL_HEADERS], [ # Allow for --with-tclinclude to take effect and define ${ac_cv_c_tclh} AC_REQUIRE([TEA_PUBLIC_TCL_HEADERS]) AC_MSG_CHECKING([for Tcl private include files]) TCL_SRC_DIR_NATIVE=`${CYGPATH} ${TCL_SRC_DIR}` TCL_TOP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}\" # Check to see if tclPort.h isn't already with the public headers # Don't look for tclInt.h because that resides with tcl.h in the core # sources, but the Port headers are in a different directory if test "${TEA_PLATFORM}" = "windows" -a \ -f "${ac_cv_c_tclh}/tclWinPort.h"; then result="private headers found with public headers" elif test "${TEA_PLATFORM}" = "unix" -a \ -f "${ac_cv_c_tclh}/tclUnixPort.h"; then result="private headers found with public headers" else TCL_GENERIC_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/generic\" if test "${TEA_PLATFORM}" = "windows"; then TCL_PLATFORM_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/win\" else TCL_PLATFORM_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/unix\" fi # Overwrite the previous TCL_INCLUDES as this should capture both # public and private headers in the same set. # We want to ensure these are substituted so as not to require # any *_NATIVE vars be defined in the Makefile TCL_INCLUDES="-I${TCL_GENERIC_DIR_NATIVE} -I${TCL_PLATFORM_DIR_NATIVE}" if test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use # the framework's Headers and PrivateHeaders directories case ${TCL_DEFS} in *TCL_FRAMEWORK*) if test -d "${TCL_BIN_DIR}/Headers" -a \ -d "${TCL_BIN_DIR}/PrivateHeaders"; then TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}" else TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`" fi ;; esac result="Using ${TCL_INCLUDES}" else if test ! -f "${TCL_SRC_DIR}/generic/tclInt.h" ; then AC_MSG_ERROR([Cannot find private header tclInt.h in ${TCL_SRC_DIR}]) fi result="Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}" fi fi AC_SUBST(TCL_TOP_DIR_NATIVE) AC_SUBST(TCL_INCLUDES) AC_MSG_RESULT([${result}]) ]) #------------------------------------------------------------------------ # TEA_PUBLIC_TCL_HEADERS -- # # Locate the installed public Tcl header files # # Arguments: # None. # # Requires: # CYGPATH must be set # # Results: # # Adds a --with-tclinclude switch to configure. # Result is cached. # # Substitutes the following vars: # TCL_INCLUDES #------------------------------------------------------------------------ AC_DEFUN([TEA_PUBLIC_TCL_HEADERS], [ AC_MSG_CHECKING([for Tcl public headers]) AC_ARG_WITH(tclinclude, [ --with-tclinclude directory containing the public Tcl header files], with_tclinclude=${withval}) AC_CACHE_VAL(ac_cv_c_tclh, [ # Use the value from --with-tclinclude, if it was given if test x"${with_tclinclude}" != x ; then if test -f "${with_tclinclude}/tcl.h" ; then ac_cv_c_tclh=${with_tclinclude} else AC_MSG_ERROR([${with_tclinclude} directory does not contain tcl.h]) fi else list="" if test "`uname -s`" = "Darwin"; then # If Tcl was built as a framework, attempt to use # the framework's Headers directory case ${TCL_DEFS} in *TCL_FRAMEWORK*) list="`ls -d ${TCL_BIN_DIR}/Headers 2>/dev/null`" ;; esac fi # Look in the source dir only if Tcl is not installed, # and in that situation, look there before installed locations. if test -f "${TCL_BIN_DIR}/Makefile" ; then list="$list `ls -d ${TCL_SRC_DIR}/generic 2>/dev/null`" fi # Check order: pkg --prefix location, Tcl's --prefix location, # relative to directory of tclConfig.sh. eval "temp_includedir=${includedir}" list="$list \ `ls -d ${temp_includedir} 2>/dev/null` \ `ls -d ${TCL_PREFIX}/include 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`" if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then list="$list /usr/local/include /usr/include" if test x"${TCL_INCLUDE_SPEC}" != x ; then d=`echo "${TCL_INCLUDE_SPEC}" | sed -e 's/^-I//'` list="$list `ls -d ${d} 2>/dev/null`" fi fi for i in $list ; do if test -f "$i/tcl.h" ; then ac_cv_c_tclh=$i break fi done fi ]) # Print a message based on how we determined the include path if test x"${ac_cv_c_tclh}" = x ; then AC_MSG_ERROR([tcl.h not found. Please specify its location with --with-tclinclude]) else AC_MSG_RESULT([${ac_cv_c_tclh}]) fi # Convert to a native path and substitute into the output files. INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}` TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\" AC_SUBST(TCL_INCLUDES) ]) #------------------------------------------------------------------------ # TEA_PRIVATE_TK_HEADERS -- # # Locate the private Tk include files # # Arguments: # # Requires: # TK_SRC_DIR Assumes that TEA_LOAD_TKCONFIG has # already been called. # # Results: # # Substitutes the following vars: # TK_INCLUDES #------------------------------------------------------------------------ AC_DEFUN([TEA_PRIVATE_TK_HEADERS], [ # Allow for --with-tkinclude to take effect and define ${ac_cv_c_tkh} AC_REQUIRE([TEA_PUBLIC_TK_HEADERS]) AC_MSG_CHECKING([for Tk private include files]) TK_SRC_DIR_NATIVE=`${CYGPATH} ${TK_SRC_DIR}` TK_TOP_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}\" # Check to see if tkPort.h isn't already with the public headers # Don't look for tkInt.h because that resides with tk.h in the core # sources, but the Port headers are in a different directory if test "${TEA_PLATFORM}" = "windows" -a \ -f "${ac_cv_c_tkh}/tkWinPort.h"; then result="private headers found with public headers" elif test "${TEA_PLATFORM}" = "unix" -a \ -f "${ac_cv_c_tkh}/tkUnixPort.h"; then result="private headers found with public headers" else TK_GENERIC_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/generic\" TK_XLIB_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/xlib\" if test "${TEA_PLATFORM}" = "windows"; then TK_PLATFORM_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/win\" else TK_PLATFORM_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/unix\" fi # Overwrite the previous TK_INCLUDES as this should capture both # public and private headers in the same set. # We want to ensure these are substituted so as not to require # any *_NATIVE vars be defined in the Makefile TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}" # Detect and add ttk subdir if test -d "${TK_SRC_DIR}/generic/ttk"; then TK_INCLUDES="${TK_INCLUDES} -I\"${TK_SRC_DIR_NATIVE}/generic/ttk\"" fi if test "${TEA_WINDOWINGSYSTEM}" != "x11"; then TK_INCLUDES="${TK_INCLUDES} -I\"${TK_XLIB_DIR_NATIVE}\"" fi if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then TK_INCLUDES="${TK_INCLUDES} -I\"${TK_SRC_DIR_NATIVE}/macosx\"" fi if test "`uname -s`" = "Darwin"; then # If Tk was built as a framework, attempt to use # the framework's Headers and PrivateHeaders directories case ${TK_DEFS} in *TK_FRAMEWORK*) if test -d "${TK_BIN_DIR}/Headers" -a \ -d "${TK_BIN_DIR}/PrivateHeaders"; then TK_INCLUDES="-I\"${TK_BIN_DIR}/Headers\" -I\"${TK_BIN_DIR}/PrivateHeaders\" ${TK_INCLUDES}" else TK_INCLUDES="${TK_INCLUDES} ${TK_INCLUDE_SPEC} `echo "${TK_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`" fi ;; esac result="Using ${TK_INCLUDES}" else if test ! -f "${TK_SRC_DIR}/generic/tkInt.h" ; then AC_MSG_ERROR([Cannot find private header tkInt.h in ${TK_SRC_DIR}]) fi result="Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}" fi fi AC_SUBST(TK_TOP_DIR_NATIVE) AC_SUBST(TK_XLIB_DIR_NATIVE) AC_SUBST(TK_INCLUDES) AC_MSG_RESULT([${result}]) ]) #------------------------------------------------------------------------ # TEA_PUBLIC_TK_HEADERS -- # # Locate the installed public Tk header files # # Arguments: # None. # # Requires: # CYGPATH must be set # # Results: # # Adds a --with-tkinclude switch to configure. # Result is cached. # # Substitutes the following vars: # TK_INCLUDES #------------------------------------------------------------------------ AC_DEFUN([TEA_PUBLIC_TK_HEADERS], [ AC_MSG_CHECKING([for Tk public headers]) AC_ARG_WITH(tkinclude, [ --with-tkinclude directory containing the public Tk header files], with_tkinclude=${withval}) AC_CACHE_VAL(ac_cv_c_tkh, [ # Use the value from --with-tkinclude, if it was given if test x"${with_tkinclude}" != x ; then if test -f "${with_tkinclude}/tk.h" ; then ac_cv_c_tkh=${with_tkinclude} else AC_MSG_ERROR([${with_tkinclude} directory does not contain tk.h]) fi else list="" if test "`uname -s`" = "Darwin"; then # If Tk was built as a framework, attempt to use # the framework's Headers directory. case ${TK_DEFS} in *TK_FRAMEWORK*) list="`ls -d ${TK_BIN_DIR}/Headers 2>/dev/null`" ;; esac fi # Look in the source dir only if Tk is not installed, # and in that situation, look there before installed locations. if test -f "${TK_BIN_DIR}/Makefile" ; then list="$list `ls -d ${TK_SRC_DIR}/generic 2>/dev/null`" fi # Check order: pkg --prefix location, Tk's --prefix location, # relative to directory of tkConfig.sh, Tcl's --prefix location, # relative to directory of tclConfig.sh. eval "temp_includedir=${includedir}" list="$list \ `ls -d ${temp_includedir} 2>/dev/null` \ `ls -d ${TK_PREFIX}/include 2>/dev/null` \ `ls -d ${TK_BIN_DIR}/../include 2>/dev/null` \ `ls -d ${TCL_PREFIX}/include 2>/dev/null` \ `ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`" if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then list="$list /usr/local/include /usr/include" if test x"${TK_INCLUDE_SPEC}" != x ; then d=`echo "${TK_INCLUDE_SPEC}" | sed -e 's/^-I//'` list="$list `ls -d ${d} 2>/dev/null`" fi fi for i in $list ; do if test -f "$i/tk.h" ; then ac_cv_c_tkh=$i break fi done fi ]) # Print a message based on how we determined the include path if test x"${ac_cv_c_tkh}" = x ; then AC_MSG_ERROR([tk.h not found. Please specify its location with --with-tkinclude]) else AC_MSG_RESULT([${ac_cv_c_tkh}]) fi # Convert to a native path and substitute into the output files. INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tkh}` TK_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\" AC_SUBST(TK_INCLUDES) if test "${TEA_WINDOWINGSYSTEM}" != "x11"; then # On Windows and Aqua, we need the X compat headers AC_MSG_CHECKING([for X11 header files]) if test ! -r "${INCLUDE_DIR_NATIVE}/X11/Xlib.h"; then INCLUDE_DIR_NATIVE="`${CYGPATH} ${TK_SRC_DIR}/xlib`" TK_XINCLUDES=-I\"${INCLUDE_DIR_NATIVE}\" AC_SUBST(TK_XINCLUDES) fi AC_MSG_RESULT([${INCLUDE_DIR_NATIVE}]) fi ]) #------------------------------------------------------------------------ # TEA_PATH_CONFIG -- # # Locate the ${1}Config.sh file and perform a sanity check on # the ${1} compile flags. These are used by packages like # [incr Tk] that load *Config.sh files from more than Tcl and Tk. # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --with-$1=... # # Defines the following vars: # $1_BIN_DIR Full path to the directory containing # the $1Config.sh file #------------------------------------------------------------------------ AC_DEFUN([TEA_PATH_CONFIG], [ # # Ok, lets find the $1 configuration # First, look for one uninstalled. # the alternative search directory is invoked by --with-$1 # if test x"${no_$1}" = x ; then # we reset no_$1 in case something fails here no_$1=true AC_ARG_WITH($1, [ --with-$1 directory containing $1 configuration ($1Config.sh)], with_$1config=${withval}) AC_MSG_CHECKING([for $1 configuration]) AC_CACHE_VAL(ac_cv_c_$1config,[ # First check to see if --with-$1 was specified. if test x"${with_$1config}" != x ; then case ${with_$1config} in */$1Config.sh ) if test -f ${with_$1config}; then AC_MSG_WARN([--with-$1 argument should refer to directory containing $1Config.sh, not to $1Config.sh itself]) with_$1config=`echo ${with_$1config} | sed 's!/$1Config\.sh$!!'` fi;; esac if test -f "${with_$1config}/$1Config.sh" ; then ac_cv_c_$1config=`(cd ${with_$1config}; pwd)` else AC_MSG_ERROR([${with_$1config} directory doesn't contain $1Config.sh]) fi fi # then check for a private $1 installation if test x"${ac_cv_c_$1config}" = x ; then for i in \ ../$1 \ `ls -dr ../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \ `ls -dr ../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \ `ls -dr ../$1*[[0-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../$1*[[0-9]].[[0-9]]* 2>/dev/null` \ ../../$1 \ `ls -dr ../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \ `ls -dr ../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \ `ls -dr ../../$1*[[0-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \ ../../../$1 \ `ls -dr ../../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \ `ls -dr ../../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \ `ls -dr ../../../$1*[[0-9]].[[0-9]] 2>/dev/null` \ `ls -dr ../../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \ ${srcdir}/../$1 \ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]] 2>/dev/null` \ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]* 2>/dev/null` \ ; do if test -f "$i/$1Config.sh" ; then ac_cv_c_$1config=`(cd $i; pwd)` break fi if test -f "$i/unix/$1Config.sh" ; then ac_cv_c_$1config=`(cd $i/unix; pwd)` break fi done fi # check in a few common install locations if test x"${ac_cv_c_$1config}" = x ; then for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ ; do if test -f "$i/$1Config.sh" ; then ac_cv_c_$1config=`(cd $i; pwd)` break fi done fi ]) if test x"${ac_cv_c_$1config}" = x ; then $1_BIN_DIR="# no $1 configs found" AC_MSG_WARN([Cannot find $1 configuration definitions]) exit 0 else no_$1= $1_BIN_DIR=${ac_cv_c_$1config} AC_MSG_RESULT([found $$1_BIN_DIR/$1Config.sh]) fi fi ]) #------------------------------------------------------------------------ # TEA_LOAD_CONFIG -- # # Load the $1Config.sh file # # Arguments: # # Requires the following vars to be set: # $1_BIN_DIR # # Results: # # Substitutes the following vars: # $1_SRC_DIR # $1_LIB_FILE # $1_LIB_SPEC #------------------------------------------------------------------------ AC_DEFUN([TEA_LOAD_CONFIG], [ AC_MSG_CHECKING([for existence of ${$1_BIN_DIR}/$1Config.sh]) if test -f "${$1_BIN_DIR}/$1Config.sh" ; then AC_MSG_RESULT([loading]) . "${$1_BIN_DIR}/$1Config.sh" else AC_MSG_RESULT([file not found]) fi # # If the $1_BIN_DIR is the build directory (not the install directory), # then set the common variable name to the value of the build variables. # For example, the variable $1_LIB_SPEC will be set to the value # of $1_BUILD_LIB_SPEC. An extension should make use of $1_LIB_SPEC # instead of $1_BUILD_LIB_SPEC since it will work with both an # installed and uninstalled version of Tcl. # if test -f "${$1_BIN_DIR}/Makefile" ; then AC_MSG_WARN([Found Makefile - using build library specs for $1]) $1_LIB_SPEC=${$1_BUILD_LIB_SPEC} $1_STUB_LIB_SPEC=${$1_BUILD_STUB_LIB_SPEC} $1_STUB_LIB_PATH=${$1_BUILD_STUB_LIB_PATH} $1_INCLUDE_SPEC=${$1_BUILD_INCLUDE_SPEC} $1_LIBRARY_PATH=${$1_LIBRARY_PATH} fi AC_SUBST($1_VERSION) AC_SUBST($1_BIN_DIR) AC_SUBST($1_SRC_DIR) AC_SUBST($1_LIB_FILE) AC_SUBST($1_LIB_SPEC) AC_SUBST($1_STUB_LIB_FILE) AC_SUBST($1_STUB_LIB_SPEC) AC_SUBST($1_STUB_LIB_PATH) # Allow the caller to prevent this auto-check by specifying any 2nd arg AS_IF([test "x$2" = x], [ # Check both upper and lower-case variants # If a dev wanted non-stubs libs, this function could take an option # to not use _STUB in the paths below AS_IF([test "x${$1_STUB_LIB_SPEC}" = x], [TEA_LOAD_CONFIG_LIB(translit($1,[a-z],[A-Z])_STUB)], [TEA_LOAD_CONFIG_LIB($1_STUB)]) ]) ]) #------------------------------------------------------------------------ # TEA_LOAD_CONFIG_LIB -- # # Helper function to load correct library from another extension's # ${PACKAGE}Config.sh. # # Results: # Adds to LIBS the appropriate extension library #------------------------------------------------------------------------ AC_DEFUN([TEA_LOAD_CONFIG_LIB], [ AC_MSG_CHECKING([For $1 library for LIBS]) # This simplifies the use of stub libraries by automatically adding # the stub lib to your path. Normally this would add to SHLIB_LD_LIBS, # but this is called before CONFIG_CFLAGS. More importantly, this adds # to PKG_LIBS, which becomes LIBS, and that is only used by SHLIB_LD. if test "x${$1_LIB_SPEC}" != "x" ; then if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes" ; then TEA_ADD_LIBS([\"`${CYGPATH} ${$1_LIB_PATH}`\"]) AC_MSG_RESULT([using $1_LIB_PATH ${$1_LIB_PATH}]) else TEA_ADD_LIBS([${$1_LIB_SPEC}]) AC_MSG_RESULT([using $1_LIB_SPEC ${$1_LIB_SPEC}]) fi else AC_MSG_RESULT([file not found]) fi ]) #------------------------------------------------------------------------ # TEA_EXPORT_CONFIG -- # # Define the data to insert into the ${PACKAGE}Config.sh file # # Arguments: # # Requires the following vars to be set: # $1 # # Results: # Substitutes the following vars: #------------------------------------------------------------------------ AC_DEFUN([TEA_EXPORT_CONFIG], [ #-------------------------------------------------------------------- # These are for $1Config.sh #-------------------------------------------------------------------- # pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib) eval pkglibdir="[$]{libdir}/$1${PACKAGE_VERSION}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then eval $1_LIB_FLAG="-l$1${PACKAGE_VERSION}" eval $1_STUB_LIB_FLAG="-l$1stub${PACKAGE_VERSION}" else eval $1_LIB_FLAG="-l$1`echo ${PACKAGE_VERSION} | tr -d .`" eval $1_STUB_LIB_FLAG="-l$1stub`echo ${PACKAGE_VERSION} | tr -d .`" fi if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" == x; then eval $1_STUB_LIB_FLAG="-l$1stub" fi $1_BUILD_LIB_SPEC="-L`$CYGPATH $(pwd)` ${$1_LIB_FLAG}" $1_LIB_SPEC="-L`$CYGPATH ${pkglibdir}` ${$1_LIB_FLAG}" $1_BUILD_STUB_LIB_SPEC="-L`$CYGPATH $(pwd)` [$]{$1_STUB_LIB_FLAG}" $1_STUB_LIB_SPEC="-L`$CYGPATH ${pkglibdir}` [$]{$1_STUB_LIB_FLAG}" $1_BUILD_STUB_LIB_PATH="`$CYGPATH $(pwd)`/[$]{PKG_STUB_LIB_FILE}" $1_STUB_LIB_PATH="`$CYGPATH ${pkglibdir}`/[$]{PKG_STUB_LIB_FILE}" AC_SUBST($1_BUILD_LIB_SPEC) AC_SUBST($1_LIB_SPEC) AC_SUBST($1_BUILD_STUB_LIB_SPEC) AC_SUBST($1_STUB_LIB_SPEC) AC_SUBST($1_BUILD_STUB_LIB_PATH) AC_SUBST($1_STUB_LIB_PATH) AC_SUBST(MAJOR_VERSION) AC_SUBST(MINOR_VERSION) AC_SUBST(PATCHLEVEL) ]) #------------------------------------------------------------------------ # TEA_INSTALLER -- # # Configure the installer. # # Arguments: # none # # Results: # Substitutes the following vars: # INSTALL # INSTALL_DATA_DIR # INSTALL_DATA # INSTALL_PROGRAM # INSTALL_SCRIPT # INSTALL_LIBRARY #------------------------------------------------------------------------ AC_DEFUN([TEA_INSTALLER], [ INSTALL='$(SHELL) $(srcdir)/tclconfig/install-sh -c' INSTALL_DATA_DIR='${INSTALL} -d -m 755' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL} -m 755' INSTALL_SCRIPT='${INSTALL} -m 755' TEA_CONFIG_SYSTEM case $system in HP-UX-*) INSTALL_LIBRARY='${INSTALL} -m 755' ;; *) INSTALL_LIBRARY='${INSTALL} -m 644' ;; esac AC_SUBST(INSTALL) AC_SUBST(INSTALL_DATA_DIR) AC_SUBST(INSTALL_DATA) AC_SUBST(INSTALL_PROGRAM) AC_SUBST(INSTALL_SCRIPT) AC_SUBST(INSTALL_LIBRARY) ]) ### # Tip 430 - ZipFS Modifications ### #------------------------------------------------------------------------ # TEA_ZIPFS_SUPPORT # Locate a zip encoder installed on the system path, or none. # # Arguments: # none # # Results: # Substitutes the following vars: # MACHER_PROG # ZIP_PROG # ZIP_PROG_OPTIONS # ZIP_PROG_VFSSEARCH # ZIP_INSTALL_OBJS #------------------------------------------------------------------------ AC_DEFUN([TEA_ZIPFS_SUPPORT], [ MACHER_PROG="" ZIP_PROG="" ZIP_PROG_OPTIONS="" ZIP_PROG_VFSSEARCH="" ZIP_INSTALL_OBJS="" AC_MSG_CHECKING([for macher]) AC_CACHE_VAL(ac_cv_path_macher, [ search_path=`echo ${PATH} | sed -e 's/:/ /g'` for dir in $search_path ; do for j in `ls -r $dir/macher 2> /dev/null` \ `ls -r $dir/macher 2> /dev/null` ; do if test x"$ac_cv_path_macher" = x ; then if test -f "$j" ; then ac_cv_path_macher=$j break fi fi done done ]) if test -f "$ac_cv_path_macher" ; then MACHER_PROG="$ac_cv_path_macher" AC_MSG_RESULT([$MACHER_PROG]) AC_MSG_RESULT([Found macher in environment]) fi AC_MSG_CHECKING([for zip]) AC_CACHE_VAL(ac_cv_path_zip, [ search_path=`echo ${PATH} | sed -e 's/:/ /g'` for dir in $search_path ; do for j in `ls -r $dir/zip 2> /dev/null` \ `ls -r $dir/zip 2> /dev/null` ; do if test x"$ac_cv_path_zip" = x ; then if test -f "$j" ; then ac_cv_path_zip=$j break fi fi done done ]) if test -f "$ac_cv_path_zip" ; then ZIP_PROG="$ac_cv_path_zip" AC_MSG_RESULT([$ZIP_PROG]) ZIP_PROG_OPTIONS="-rq" ZIP_PROG_VFSSEARCH="*" AC_MSG_RESULT([Found INFO Zip in environment]) # Use standard arguments for zip else # It is not an error if an installed version of Zip can't be located. # We can use the locally distributed minizip instead ZIP_PROG="./minizip${EXEEXT_FOR_BUILD}" ZIP_PROG_OPTIONS="-o -r" ZIP_PROG_VFSSEARCH="*" ZIP_INSTALL_OBJS="minizip${EXEEXT_FOR_BUILD}" AC_MSG_RESULT([No zip found on PATH. Building minizip]) fi AC_SUBST(MACHER_PROG) AC_SUBST(ZIP_PROG) AC_SUBST(ZIP_PROG_OPTIONS) AC_SUBST(ZIP_PROG_VFSSEARCH) AC_SUBST(ZIP_INSTALL_OBJS) ]) # Local Variables: # mode: autoconf # End: ooxml/tclconfig/PaxHeader/README.txt000664 000765 000024 00000000410 14607757315 017743 xustar00alexstaff000000 000000 29 mtime=1713364685.15305108 127 LIBARCHIVE.xattr.com.apple.metadata:kMDItemTextContentLanguage=YnBsaXN0MDBSZW4IAAAAAAAAAQEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAs 108 SCHILY.xattr.com.apple.metadata:kMDItemTextContentLanguage=bplist00Ren ooxml/tclconfig/README.txt000664 000765 000024 00000001454 14607757315 016003 0ustar00alexstaff000000 000000 These files comprise the basic building blocks for a Tcl Extension Architecture (TEA) extension. For more information on TEA see: http://www.tcl.tk/doc/tea/ This package is part of the Tcl project at SourceForge, and latest sources should be available there: http://tcl.sourceforge.net/ This package is a freely available open source package. You can do virtually anything you like with it, such as modifying it, redistributing it, and selling it either in whole or in part. CONTENTS ======== The following is a short description of the files you will find in the sample extension. README.txt This file install-sh Program used for copying binaries and script files to their install locations. tcl.m4 Collection of Tcl autoconf macros. Included by a package's aclocal.m4 to define TEA_* macros. ooxml/tools/mkversion.tcl000664 000765 000024 00000010706 14610235053 016176 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh "$0" "$@" # # 2024 Alexander Schöpe, Bochum, DE # mkversion.c from fossil-scm ported to vanilla tcl # proc hash {zIn N} { set zL {} foreach c [split $zIn {}] { lappend zL [scan $c %c] } lappend zL 0 set zIn $zL unset zL set s {} for {set m 0} {$m < 256} {incr m} { lappend s $m } lappend s 0 for {set t 0; set j 0; set n 0; set m 0} {$m < 256} {incr m; incr n} { set j [expr {($j + [lindex $s $m] + [lindex $zIn $n]) & 0xff}] if {[lindex $zIn $n] == 0} { set n -1 } set t [lindex $s $j] set s [lreplace $s $j $j [lindex $s $m]] set s [lreplace $s $m $m $t] } set i 0 set j 0 set zOut {} for {set n 0} {$n < $N-2} {incr n 2} { incr i set t [lindex $s $i] set j [expr {($j + $t) & 0xff}] set s [lreplace $s $i $i [lindex $s $j]] set s [lreplace $s $j $j $t] set t [expr {($t + [lindex $s $i]) & 0xff}] append zOut [string index 0123456789abcdef [expr {($t >> 4) & 0xf}]] append zOut [string index 0123456789abcdef [expr {$t & 0xf}]] } return $zOut } set manifest {} if {![catch {open manifest.uuid r} fd]} { if {![eof $fd]} { if {[gets $fd uuid] > 0} { lappend manifest MANIFEST_UUID $uuid lappend manifest MANIFEST_VERSION [format {[%10.10s]} $uuid] if {[info exists ::env(SOURCE_DATE_EPOCH)] && [string is wideinteger $::env(SOURCE_DATE_EPOCH)]} { set ctime $::env(SOURCE_DATE_EPOCH) } else { set ctime [clock seconds] } append uuid $ctime lappend manifest FOSSIL_BUILD_HASH [hash $uuid 33] } } close $fd } else { puts stderr "can't open file manifest.uuid" } if {![catch {open manifest r} fd]} { while {![eof $fd]} { if {[gets $fd line] > 0} { if {[string match {D *} $line]} { set ctime [clock scan [lindex [split [lindex $line 1] .] 0] -gmt 1] lappend manifest MANIFEST_DATE [clock format $ctime -format {%Y-%m-%d %H:%M:%S} -gmt 1] lappend manifest MANIFEST_YEAR [clock format $ctime -format {%Y} -gmt 1] lappend manifest MANIFEST_NUMERIC_DATE [clock format $ctime -format {%Y%m%d} -gmt 1] lappend manifest MANIFEST_NUMERIC_TIME [clock format $ctime -format {%H%M%S} -gmt 1] break } } } close $fd } else { puts stderr "can't open file manifest" } if {![catch {open configure.ac r} fd]} { while {![eof $fd]} { if {[gets $fd line] > 0} { if {[string match {AC_INIT*} $line]} { if {[regexp {AC_INIT\(\[.*?\],\[(.*?)\]\)} $line match version]} { set versionList [lrange [split $version.0.0.0 .] 0 3] lappend manifest RELEASE_VERSION $version lappend manifest RELEASE_VERSION_NUMBER [format {%d%02d%d%d} {*}$versionList] lappend manifest RELEASE_RESOURCE_VERSION [format {%d,%d,%d,%d} {*}$versionList] } break } } } close $fd } else { puts stderr "can't open file configure.ac" } if {0} { # # Build Info Example Procedure # proc ::pkgname::build-info { {cmd {}} } { variable pkgPath # TIP 599: Extended build information # https://core.tcl-lang.org/tips/doc/trunk/tip/599.md set file [file join $pkgPath manifest.txt] if {[file readable $file] && ![catch {open $file r} fd]} { set manifest [read $fd] close $fd set uuid [dict get $manifest MANIFEST_UUID] set checkin [string map {[ {} ] {}} [dict get $manifest MANIFEST_VERSION]] set build [dict get $manifest FOSSIL_BUILD_HASH] set datetime [string map {{ } T} [dict get $manifest MANIFEST_DATE]]Z set version [dict get $manifest RELEASE_VERSION] set compiler {tcl.noarch} switch -- $cmd { commit { return $uuid } version - patchlevel { return $version } compiler { return $compiler } path { return $pkgPath } default { return ${version}+${checkin}.${datetime}.${compiler} } } } else { return {?.manifest_not_found} } } package provide 1.0 # info script ?filename? # If a Tcl script file is currently being evaluated (i.e. there is a call to Tcl_EvalFile active or there is an active invocation of the source command), # then this command returns the name of the innermost file being processed. If filename is specified, then the return value of this command will be modified # for the duration of the active invocation to return that name. This is useful in virtual file system applications. Otherwise the command returns an empty string. set ::pkgname::pkgPath [file dirname [info script]] } foreach {n v} $manifest { puts [list $n $v] }ooxml/tools/archive.sh000775 000765 000024 00000001727 14722274344 015452 0ustar00alexstaff000000 000000 #!/bin/sh PACKAGE_NAME=$1 PACKAGE_VERSION=$2 PKG_TCL_SOURCES=$3 # ignore AppleDouble files # macOS 10.4 COPY_EXTENDED_ATTRIBUTES_DISABLE=1 export COPY_EXTENDED_ATTRIBUTES_DISABLE # macOS >= 10.5 COPYFILE_DISABLE=1 export COPYFILE_DISABLE rm -f uv/ooxml*.zip uv/ooxml*.tar.gz mkdir -p uv/${PACKAGE_NAME}${PACKAGE_VERSION} cp ${PKG_TCL_SOURCES} manifest.txt pkgIndex.tcl uv/${PACKAGE_NAME}${PACKAGE_VERSION} cd uv zip -qr ${PACKAGE_NAME}${PACKAGE_VERSION}.zip ${PACKAGE_NAME}${PACKAGE_VERSION} tar -czf ${PACKAGE_NAME}${PACKAGE_VERSION}.tar.gz ${PACKAGE_NAME}${PACKAGE_VERSION} rm -fr ${PACKAGE_NAME}${PACKAGE_VERSION} cp template-download.html download.html ex - download.html < text data ]]> ooxml/tools/pp.tcl000664 000765 000024 00000003656 14712112641 014606 0ustar00alexstaff000000 000000 # This tool unzips every zip archive into a directory and pretty # prints the XML files in this new directory hierarchy. If called # just with a zip archive (mainly meat for open office documents) the # directory to unpack the content is the base-name of the file name of # the archive. The second argument overwrites this default with an # directory name. If the directory exists, its content will be # removed! package require Tcl 9.0- package require tdom package require fileutil::traverse if {$argc < 1 || $argc > 2} { puts stderr "usage: $argv0 ??" } proc unzip {zipfile dir} { file mkdir $dir set base [file join [zipfs root] pp] set baselen [string length $base] zipfs mount $zipfile $base ::fileutil::traverse filesInZip $base filesInZip foreach file { set target [file join $dir [string range $file $baselen+1 end]] if {[file isdirectory $file]} { file mkdir $target continue } set in [open $file rb] set out [open $target wb] fcopy $in $out close $in close $out #puts [file join $dir $target] #puts $target } } proc pp {xmlfile} { if {[file isdirectory $xmlfile]} return if {[catch {set data [::tdom::xmlReadFile $xmlfile]} errMsg]} { puts "cannot read $xmlfile (probably a binary file) - $errMsg" return } if {[catch {dom parse $data doc}]} { puts "$xmlfile failed to parse" return } set fd [open $xmlfile w+] $doc asXML -channel $fd close $fd } if {$argc == 1} { set file [lindex $argv 0] set basedir [file dirname $file] set name [file rootname [file tail $file]] set dir [file join $basedir $name] } else { set dir [lindex $argv 1] } if {[file exists $dir]} { file delete -force $dir } file mkdir $dir unzip $file $dir ::fileutil::traverse xmlfiles $dir xmlfiles foreach xmlfile { pp $xmlfile } ooxml/tools/languages/000755 000765 000024 00000000000 14607757315 015435 5ustar00alexstaff000000 000000 ooxml/tools/mkversion.c000664 000765 000024 00000015774 14607764414 015666 0ustar00alexstaff000000 000000 /* ** This C program generates the "VERSION.h" header file from information ** extracted out of the "manifest", "manifest.uuid", and "VERSION" files. ** Call this program with three arguments: ** ** ./a.out manifest.uuid manifest VERSION ** ** Note that the manifest.uuid and manifest files are generated by Fossil. ** ** The output becomes the "VERSION.h" file. The output is a C-language ** header that contains #defines for various properties of the build: ** ** MANIFEST_UUID These values are text strings that ** MANIFEST_VERSION identify the Fossil check-in to which ** the source tree belongs. They do not ** take into account any uncommitted edits. ** ** FOSSIL_BUILD_HASH A hexadecimal string that is a strong hash ** of the MANIFEST_UUID together with the ** current time of the build. We normally want ** this to be different on each build, as the ** value is used to expire ETag: fields in ** HTTP requests. But if you need to do ** repeatable byte-for-byte identical builds, ** add the -DFOSSIL_BUILD_EPOCH=n option. ** ** MANIFEST_DATE The date/time of the source-code check-in ** MANIFEST_YEAR in various formats. ** MANIFEST_NUMERIC_DATE ** MANIFEST_NUMERIC_TIME ** ** RELEASE_VERSION The version number (from the VERSION source ** RELEASE_VERSION_NUMBER file) in various format. ** RELEASE_RESOURCE_VERSION ** ** New #defines may be added in the future. */ #include #include #include #include #include #if defined(_MSC_VER) && (_MSC_VER < 1800) /* MSVS 2013 */ # define strtoll _strtoi64 #endif static FILE *open_for_reading(const char *zFilename){ FILE *f = fopen(zFilename, "r"); if( f==0 ){ fprintf(stderr, "cannot open \"%s\" for reading\n", zFilename); exit(1); } return f; } /* ** Given an arbitrary-length input string key zIn, generate ** an N-byte hexadecimal hash of that string into zOut. */ static void hash(const char *zIn, int N, char *zOut){ unsigned char i, j, t; int m, n; unsigned char s[256]; fprintf(stderr, "zIn len %d\n", strlen(zIn)); for(m=0; m<256; m++){ s[m] = m; } for(j=0, m=n=0; m<256; m++, n++){ fprintf(stderr, "j %d n %d m %d t %d s[m] %d zIn[n] %d\n", j, n, m, t, s[m], zIn[n]); j += s[m] + zIn[n]; if( zIn[n]==0 ){ n = -1; } t = s[j]; s[j] = s[m]; s[m] = t; } fprintf(stderr, "++\n"); i = j = 0; for(n=0; n>4)&0xf]; zOut[n+1] = "0123456789abcdef"[t&0xf]; } fprintf(stderr, "++\n"); zOut[n] = 0; } int main(int argc, char *argv[]){ FILE *m,*u,*v; char *z; #if defined(__DMC__) /* e.g. 0x857 */ int i = 0; #endif int j = 0, x = 0, d = 0; size_t n; int vn[3]; char b[1000]; char vx[1000]; if( argc!=4 ){ fprintf(stderr, "Usage: %s manifest.uuid manifest VERSION\n", argv[0]); exit(1); } memset(b,0,sizeof(b)); memset(vx,0,sizeof(vx)); u = open_for_reading(argv[1]); if( fgets(b, sizeof(b)-1,u)==0 ){ fprintf(stderr, "malformed manifest.uuid file: %s\n", argv[1]); exit(1); } fclose(u); for(z=b; z[0] && z[0]!='\r' && z[0]!='\n'; z++){} *z = 0; printf("#define MANIFEST_UUID \"%s\"\n",b); printf("#define MANIFEST_VERSION \"[%10.10s]\"\n",b); n = strlen(b); fprintf(stderr, "n %d\n", n); if( n + 50 < sizeof(b) ){ #ifdef FOSSIL_BUILD_EPOCH fprintf(stderr, "FOSSIL_BUILD_EPOCH\n"); #define str(s) #s snprintf(b+n, sizeof(b)-n, "%d", (int)strtoll(str(FOSSIL_BUILD_EPOCH), 0, 10)); #else fprintf(stderr, "!FOSSIL_BUILD_EPOCH\n"); const char *zEpoch = getenv("SOURCE_DATE_EPOCH"); if( zEpoch && isdigit(zEpoch[0]) ){ fprintf(stderr, "a %d\n", (int)strtoll(zEpoch, 0, 10)); snprintf(b+n, sizeof(b)-n, "%d", (int)strtoll(zEpoch, 0, 10)); }else{ fprintf(stderr, "b %d\n", (int)time(0)); snprintf(b+n, sizeof(b)-n, "%d", (int)time(0)); } #endif hash(b,33,vx); printf("#define FOSSIL_BUILD_HASH \"%s\"\n", vx); } m = open_for_reading(argv[2]); while(b == fgets(b, sizeof(b)-1,m)){ if(0 == strncmp("D ",b,2)){ int k, n; char zDateNum[30]; printf("#define MANIFEST_DATE \"%.10s %.8s\"\n",b+2,b+13); printf("#define MANIFEST_YEAR \"%.4s\"\n",b+2); n = 0; for(k=0; k<10; k++){ if( isdigit(b[k+2]) ) zDateNum[n++] = b[k+2]; } zDateNum[n] = 0; printf("#define MANIFEST_NUMERIC_DATE %s\n", zDateNum); n = 0; for(k=0; k<8; k++){ if( isdigit(b[k+13]) ) zDateNum[n++] = b[k+13]; } zDateNum[n] = 0; for(k=0; zDateNum[k]=='0'; k++){} printf("#define MANIFEST_NUMERIC_TIME %s\n", zDateNum+k); } } fclose(m); v = open_for_reading(argv[3]); if( fgets(b, sizeof(b)-1,v)==0 ){ fprintf(stderr, "malformed VERSION file: %s\n", argv[3]); exit(1); } fclose(v); for(z=b; z[0] && z[0]!='\r' && z[0]!='\n'; z++){} *z = 0; printf("#define RELEASE_VERSION \"%s\"\n", b); z=b; vn[0] = vn[1] = vn[2] = 0; while(1){ if( z[0]>='0' && z[0]<='9' ){ x = x*10 + z[0] - '0'; }else{ if( j<3 ) vn[j++] = x; x = 0; if( z[0]==0 ) break; } z++; } for(z=vx; z[0]=='0'; z++){} printf("#define RELEASE_VERSION_NUMBER %d%02d%02d\n", vn[0], vn[1], vn[2]); memset(vx,0,sizeof(vx)); strcpy(vx,b); for(z=vx; z[0]; z++){ if( z[0]=='-' ){ z[0] = 0; break; } if( z[0]!='.' ) continue; if ( d<3 ){ z[0] = ','; d++; }else{ z[0] = '\0'; break; } } printf("#define RELEASE_RESOURCE_VERSION %s", vx); while( d<3 ){ printf(",0"); d++; } printf("\n"); #if defined(__DMC__) /* e.g. 0x857 */ d = (__DMC__ & 0xF00) >> 8; /* major */ x = (__DMC__ & 0x0F0) >> 4; /* minor */ i = (__DMC__ & 0x00F); /* revision */ printf("#define COMPILER_VERSION \"%d.%d.%d\"\n", d, x, i); #elif defined(__POCC__) /* e.g. 700 */ d = (__POCC__ / 100); /* major */ x = (__POCC__ % 100); /* minor */ printf("#define COMPILER_VERSION \"%d.%02d\"\n", d, x); #elif defined(_MSC_VER) /* e.g. 1800 */ /* _MSC_FULL_VER also defined, e.g. 193030709 */ d = (_MSC_VER / 100); /* major */ x = (_MSC_VER % 100); /* minor */ printf("#define COMPILER_VERSION \"%d.%02d.", d, x); printf("%05d\"\n",(int)(_MSC_FULL_VER % 100000)); /* build (patch) */ #endif return 0; } ooxml/tools/xmltotdom.tcl000775 000765 000024 00000007612 14715362020 016216 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" # # xmltotdom.tcl # read xml file and build a source code to generate the original xml file # # Copyright (C) 2018 Alexander Schoepe, Bochum, DE, # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # 3. Neither the name of the project nor the names of its contributors may be used # to endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT # SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # package require tdom 0.9.1- set file [lindex $argv 0] if {[catch {open $file r} fd]} { puts stderr "open: $fd" return } fconfigure $fd -encoding utf-8 if {[catch {dom parse -keepCDATA [read $fd]} doc]} { puts stderr "dom parse: $doc" return } proc Parse { node {level 0} } { set indent [string repeat { } [expr {2 * $level}]] if {$level == 0} { set cn \$root puts "package require tdom 0.9.0-" puts "set encoding utf-8" puts "set doc \[dom createDocument [list [$node nodeName]]\]" puts "set root \[\$doc documentElement\]" } else { if {$level == 1} { set pn \$root } else { set pn \$node[expr {$level - 2}] } set cn \$node[expr {$level - 1}] switch -- [$node nodeType] { ELEMENT_NODE { puts "[string range $indent 0 end-2]$pn appendChild \[set [string range $cn 1 end] \[\$doc createElement [list [$node nodeName]]\]\]" } TEXT_NODE { puts "[string range $indent 0 end-2]$pn appendChild \[\$doc createTextNode [list [$node nodeValue]]\]" } CDATA_SECTION_NODE { puts "[string range $indent 0 end-2]$pn appendChild \[\$doc createCDATASection [list [$node nodeValue]]\]" } COMMENT_NODE { puts "[string range $indent 0 end-2]$pn appendChild \[\$doc createComment [list [$node nodeValue]]\]" } PROCESSING_INSTRUCTION_NODE { puts "[string range $indent 0 end-2]$pn appendChild \[\$doc createProcessingInstruction [$node nodeName] [list [$node nodeValue]]\]" } } } foreach attr [$node attributes] { set attr0 [lindex $attr 0] set attr1 [lindex $attr 1] if {$attr0 ne {} && $attr1 ne {}} { if {$attr0 eq $attr1} { set attr xmlns:$attr0 } else { set attr $attr1:$attr0 } } else { set attr $attr0 } puts "$indent$cn setAttribute $attr [list [$node getAttribute $attr]]" } if {[$node hasChildNodes]} { foreach child [$node childNodes] { Parse $child [expr {$level + 1}] } } if {$level == 0} { puts "fconfigure stdout -encoding \$encoding" puts "puts \[$cn asXML -indent 2 -xmlDeclaration 1 -encString \[string toupper \$encoding\]\]" } } set root [$doc documentElement] Parse $root $doc delete ooxml/tools/xmltotdomnodecmd.tcl000775 000765 000024 00000011242 14712112641 017541 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" # # xmltotdomnodecmd.tcl # read xml file and build a source code to generate the original xml file # # Copyright (C) 2018 Alexander Schoepe, Bochum, DE, # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # 3. Neither the name of the project nor the names of its contributors may be used # to endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT # SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # package require tdom 0.9.1- set file [lindex $argv 0] set cmds {} if {[catch {open $file r} fd]} { puts stderr "open: $fd" return } fconfigure $fd -encoding utf-8 if {[catch {dom parse -keepCDATA [read $fd]} doc]} { puts stderr "dom parse: $doc" return } proc Preparse { node {level 0} } { global cmds if {$level != 0} { switch -- [$node nodeType] { ELEMENT_NODE { set name [$node nodeName] } TEXT_NODE { set name @textNode } CDATA_SECTION_NODE { set name @cdataNode } COMMENT_NODE { set name @commentNode } PROCESSING_INSTRUCTION_NODE { set name @piNode } } if {$name ni $cmds} { lappend cmds $name } } if {[$node hasChildNodes]} { foreach child [$node childNodes] { Preparse $child [expr {$level + 1}] } } } proc Parse { node {level 0} } { global cmds set brace 0 set indent [string repeat { } [expr {2 * $level}]] set attributes {} foreach attr [$node attributes] { set attr0 [lindex $attr 0] set attr1 [lindex $attr 1] if {$attr0 ne {} && $attr1 ne {}} { if {$attr0 eq $attr1} { set attr xmlns:$attr0 } else { set attr $attr1:$attr0 } } else { set attr $attr0 } lappend attributes $attr [$node getAttribute $attr] } if {$level == 0} { puts "set root \[\$doc documentElement\]" foreach {n v} $attributes { puts "\$root setAttribute [list $n] [list $v]" } puts "\$root appendFromScript \{" } else { switch -- [$node nodeType] { ELEMENT_NODE { set cmd "Tag_[$node nodeName] $attributes" puts "${indent}[string trim $cmd] \{" set brace 1 } TEXT_NODE { puts "${indent}Text [$node nodeValue]" } CDATA_SECTION_NODE { puts "${indent}CData [list [$node nodeValue]]" } COMMENT_NODE { puts "${indent}Comment [list [$node nodeValue]]" } PROCESSING_INSTRUCTION_NODE { puts "${indent}PInstr [$node nodeName] [list [$node nodeValue]]" } } } if {[$node hasChildNodes]} { foreach child [$node childNodes] { Parse $child [expr {$level + 1}] } } if {$brace} { puts "${indent}\}" } if {$level == 0} { puts "\}" } } set root [$doc documentElement] puts "package require tdom 0.9.0-" puts "set encoding utf-8" Preparse $root foreach cmd [lsort $cmds] { switch -- $cmd { @textNode { puts "dom createNodeCmd textNode Text" } @cdataNode { puts "dom createNodeCmd cdataNode CData" } @commentNode { puts "dom createNodeCmd commentNode Comment" } @piNode { puts "dom createNodeCmd piNode PInstr" } default { puts "dom createNodeCmd -tagName $cmd elementNode Tag_$cmd" } } } puts "set doc \[dom createDocument [$root nodeName]\]" Parse $root puts "fconfigure stdout -encoding \$encoding" puts "puts \[\$root asXML -indent 2 -xmlDeclaration 1 -encString \[string toupper \$encoding\]\]" $doc delete ooxml/tools/getlanguageinfo.tcl000664 000765 000024 00000003766 14607757315 017350 0ustar00alexstaff000000 000000 #!/bin/sh #\ exec tclsh8.6 "$0" "$@" package require vfs::zip package require tdom 0.9.0- proc UnicodeCharsToHex { txt } { set new {} foreach {a b c d} [split [binary encode hex [encoding convertto unicode $txt]] {}] { if {[expr 0x${c}${d}${a}${b}] <= 0x7f} { append new [binary decode hex ${c}${d}${a}${b}] } else { append new \\u $c $d $a $b } } return [string map {\0 {}} $new] } foreach file [glob -directory languages *.xlsx] { set lang [lindex [split $file -.] 2] set files($lang) $file } set maptable {} foreach lang [lsort [array names files]] { set file $files($lang) set mnt [vfs::zip::Mount $file xlsx] set name [lindex [split [UnicodeCharsToHex $file] -.] 0] set translation [string trim [file tail $name] 1] if {[regexp -all {\s+} $translation]} { set translation \"$translation\" } puts "msgcat::mcset $lang [string trim Book1 1] $translation" if {![catch {open xlsx/docProps/app.xml r} fd]} { fconfigure $fd -encoding utf-8 if {![catch {dom parse [read $fd]} doc]} { set root [$doc documentElement] set idx -1 foreach node [$root selectNodes -namespaces [list X [$root namespaceURI] vt http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes] {/X:Properties/X:HeadingPairs/vt:vector/vt:variant/vt:lpstr/text()}] { set translation [UnicodeCharsToHex [$node nodeValue]] if {[regexp -all {\s+} $translation]} { set translation \"$translation\" } puts "msgcat::mcset $lang Worksheets $translation" } foreach node [$root selectNodes -namespaces [list X [$root namespaceURI] vt http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes] {/X:Properties/X:TitlesOfParts/vt:vector/vt:lpstr/text()}] { set translation [string trim [UnicodeCharsToHex [$node nodeValue]] 1] if {[regexp -all {\s+} $translation]} { set translation \"$translation\" } puts "msgcat::mcset $lang [string trim Sheet1 1] $translation" } $doc delete } close $fd } vfs::zip::Unmount $mnt xlsx } ooxml/tools/languages/PaxHeader/Classeur1-französisch-fr.xlsx000664 000765 000024 00000000132 14607757315 025534 xustar00alexstaff000000 000000 61 path=ooxml/tools/languages/Classeur1-französisch-fr.xlsx 29 mtime=1713364685.15723761 ooxml/tools/languages/Classeur1-französisch-fr.xlsx000664 000765 000024 00000017257 14607757315 023603 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~ m $ EՒ1/ ( ֕"`WD PjGєB!,{0l+ +L@h|_h|\)ܱҖBV˛N5>I7Хz!B7|y8(\ixd'ɢ)‡md ahOWWWҸ#Χ/V:A.jvhBEfjGbZǯxŚ[qӘJ[*1)D8|DFΡk\Ih G[%;Gh1Dd0/|<&Nfj[m_DSx!\9!A~%<|DY*PK!!3 xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-E @4Yt kүݽzZP},5`/Zx J>4;=[^j_"J5t)Uծ Ff LylXeb)bt"IO.fxF]D'Fx30åJiP 7Q!Kڐ#Nf_yOͭUYr(r/o?J>&O?x=?|I,:$"@Cu_Fpo or`e~8fp1a+j.y2uO&:BG(ܟπ^Ke7–(J$KO1v!_wɈ3&һE"N ɁH6!. j77U𑍄m!/DKt)돱.k 0;tH.ɡKbDa7Bi3I"8E5&]]f q@p$ iR 9wf~\ .ib6'̧Vj`L1caA,F_U+.#;Wst]N;DX)l=ij@I&{u+usRU::4{?S a$wk.,V^gdoZ 3DP`D"\bs޴y0Ꝙ$,~N=S S(x܊ߥD)' M`YCdΪW5Y-sV˜2R T6yG|- t_.(#fVqJj79%2H7VkD2H7# #xβlfyH-+!7xV$rhb2M_p2B?1|g;Bu!:{fq!{HD5lGIW@!ڶr5 A' ZJ!;s~Ar8( [Y'vͫ(C8e'I)\ƒ:`}Q`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK! ?V<YdocProps/core.xml (N0HC{-(Tqmj;mH8? A;ήmXѨ%QPBU9z)anm뫌iO`xc CyqI k>hxǷX:;`'"MHi$(gq%HgC̜R;qlqrmF'mܯ ݊*23@]ci\==>bCE"N0NdUkr 68?zF< _|PK!nF#docProps/app.xml (n0 n(@V1+zXI{ge:&Kɞ~NSo$'Jzc.R.l\ؗiwML*1`)OIoR0,"R6DJll!/X1@u,E{h1.GPau՝ 飦U_~ޝ:6{ygsI[ooxml/tools/languages/Bok1-schwedisch-sv.xlsx000664 000765 000024 00000017250 14607757315 021730 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~;+fYRM}ms=\;} 2L|bouTTj3-߿KڜZ(ʹ&!IJNtAh6VZgB!1oe)h\pIo+fo9tAH{PjJz@#2Lkt"CW|@9OK! ;M]m x9[0mj&wt{0a2@V:nu| zJ;ily _zwU52yݴڿ-CIOy5gK.D' }p,F<ԟAx7D ?zYűr<ŮW·LTJ"]])F&01;Xƿ ,\SV5\N>Y0"߂ȿ؋[D[GpϷ*;\OG+ e'xZy:~uӱj2PK!!3 xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-E9`5iAүT~_[4JS[lJ7Ȱ(ݫe o诮kP?X]נNӳkPv/[5($9\CZ\ 2at o^ɔ(ȆUv)&,r-Fw@)$b'hIEpi7C 0\*W@E[.D ){<1d&[Ϟ=ߞ?z/Z%)ǯ _xtxa_xzXq>yɋmLXxwŰ@Nb!bIt;Ted-u:vm,^ߵlݏ\W1F;;pUexx8OD5w%V+qF2EDS`!Ǝ!q&DzwA!9)!1e2BmfaԵ>-u?re4(vE2r#"=Ŕy1%sz_q}.b%9tE;F(9m&Idb?Ȼ !([~3r5MD2X^ޏ :A2m[ęJ]):Fc[9,谙+v%dzNk)r+emgoqx(ߤDJ]8TzM5)0IYgz|]p+~o`_=|j QkekZAj|&O3!ŻBw}ь0Q'j"5,ܔ#-q&?'2ڏ ZCeLTx3&cu'ЭNxNg x)\CJZ=ޭ~TwY(aLfQuQ_B^g^ٙXtXPꗡZFq 0mxEAAfc ΙFz3Pb/3 tSٺqyjuiE-#t00,;͖Yƺ2Obr3kE"'&&S;nj*#4kx#[SuInwaD:\N1{-_- 4m+W>Z@+qt;x2#iQNSp$½:7XX/+r1w`h׼9#:Pvd5O+Oٚ.<O7sig*t; CԲ*nN-rk.yJ}0-2MYNÊQ۴3, O6muF8='?ȝZu@,Jܼfw2_{]PK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!t<YdocProps/core.xml (_K0C{dRBہʞVBr4$nje{s/GUG_`]фhd9z)7q"繖n4L& O1`}. $09:xoN@q⮱{l{ Bn%wLD4"=@ 5(aP`WfNU ;ql)qr]5۶Me#mܯWTdR0a%8Y;^͝߆;*wsY> l}V^ BӘ1]0rÖn.PPWx 7PK!]ndocProps/app.xml (MO0דּPj l,;hï$KxCcbEބ}!v?ο,\Xg_&#YL[T]IL =w N^ykГ+B_by M`[m5@JhM )T=BNɹL1[\yy%TmƤUG %  $ AٔkEk^J`*\;W  ;KӯjA st9b:4-~l󴨶5D,>=/2d]c1\tzy/sYMϣֿPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!R;xl/workbook.xmlPK-!!3 4 xl/styles.xmlPK-!6 R  xl/theme/theme1.xmlPK-!4LZlxxl/worksheets/sheet1.xmlPK-!t<YdocProps/core.xmlPK-!]ndocProps/app.xmlPK >Tooxml/tools/languages/PaxHeader/Mappe1-dänisch-da.xlsx000664 000765 000024 00000000124 14607757315 024047 xustar00alexstaff000000 000000 54 path=ooxml/tools/languages/Mappe1-dänisch-da.xlsx 30 mtime=1713364685.158623995 ooxml/tools/languages/Mappe1-dänisch-da.xlsx000664 000765 000024 00000017253 14607757315 022111 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~|pD/k<Fؔ*Cn_ּ]c)Fv!abwm8Sm$Fh^[ >a'mRqOcAmo4 ` h2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-E4;=[^j_"J5t)Uծ Ff LyhXEb)bt"IO.fxF]D>'Fx30åJiP (ȐVXR|<1d&[Uϟ?zvǏͭUYr(r~WOI>&_שxӗϞ?zh߄IwyX ttKEۡ/# x} p2.=^8fp1aikj.y2uO&B(ܟ n-7)J$KO=c;Vwˮdę`%^Id \h ڲèk=|h#@A~e+h.QR9D15 d"#<=Ŕy1%sz _ v.]6Krҹ3=vЍPB{ccg6lAVƮXU uz! =h(ݓ\g\f & 7Hxω"4PY70"S=ތ aI't^ WХ)Vϻw+:]%%{d6D}9^x 3ath(KW-2P[y>=PoavX)m&/sdLjF=T\7.O. E7|giܥ=eېӨ7>U9hbf xG-V Pef-cg;B}u!:SL2)̸=$ZE b"1([Z*hsV@Bh5!|l鶓dGt1,BOswdsp^4>Bba 8&ʩ5NV,Svͣ(C8e;SN+:ne.[3t݄SJYHiek V&jJSyk.ssxîA-̢aQ%j#xםNF u|}bnj{`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!=YdocProps/core.xml (_K0C{dc=98| VlҐD}{?c9wϽ$]T}ue3D"Т>d+9ϵU!Cgphޤ0Q[xKpQ iDŽ{0v$8tU܇=`? œB{; wޗ σ8]2 AX gb颠[,۱`}A OcL@ϐPK!bdocProps/app.xml (n0 n(@VQzX`I{d:"Kɞ~κn$'عǔmX.JQ7~_ݷ/=벼x$5Wl(&UOkZ3)2Vw1:kњrhxc=_6Ŝ[4/IJS5p#t.o0o6ezZh("߼kQX%zH<16%cb#,O1wcY/. K%GD]yGv¹Kin|.y9n!?]U^ն5osA=L-=֯=;˛E?Ք|hPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!;HP:xl/workbook.xmlPK-!!3 3 xl/styles.xmlPK-!'#X  xl/theme/theme1.xmlPK-!4LZl}xl/worksheets/sheet1.xmlPK-!=YdocProps/core.xmlPK-!bdocProps/app.xmlPK >Wooxml/tools/languages/Book1-englisch-en.xlsx000664 000765 000024 00000017256 14607757315 021537 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~$aa0y3 o'c{cKp}x!J憦VrcK!*+X !|HR2q۷`<\ K}bbw\VjMY^*/-(F%m,+}WХ8!@+4 vE.xdG>9EaLz%x 9&l]-k`N0I_(9߁ =HO|pD/s<F0ٔꄶ6": XXn3"q88܄v$Fh^[ N`%?9. 24 n<x`*Zt,oqJ4eo˽ȗAwNЪ?PK!!3 xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-E\Çfgנ_[K^PkPDIr.jwd A)Q RSLX"7Z2>R$I O(9%o&`T) JU>#02]`XRxbL+7 /={=_*Kn%SSՏ__7'Ŀ˗:/}}O!c&a?0BĒ@v^[ uXsXa3W"`J+U`ek)r+emgoqx(ߤDJ]8TzM5)0IYgz|]p+~o`_=|j QkekZAj|&O3!ŻBw}ь0Q'j"5,ܔ#-q&?'2ڏ ZCeLTx3&cu+ЭNxNg x)\CJZ=ޭ~TwY(aLfQuQ_B^g^ٙXtXPꗡZFq 0mxEAAfc ΙFz3Pb/3 tSٺqyjuiE-#t00,;͖Yƺ2Obr3kE"'&&S;nj*#4kx#[SvInwaD:\N1{-_- 4m+W>Z@+qt;x2#iQNSp$½:7XX/+r1w`h׼9#:Pvd5O+Oٚ.<O7sig*t; CԲ*nN-rk.yJ}0-2MYNÊQ۴3, O6muF8='?ȝZu@,Jܼfw+zLdrQ J<.?| .xIOjB*2ǕdZs i4}0ozWey+k/PL״fࣗ1f`ίO֤@ - :%29hޒ.jk: 8B%? aXl"z^h8쯼+Q=$ 3 1v8!RȤdL1k籽Qs`09βCl ?sap4s7>9O{wy^TN>cdrɺ]wc8vQ^_g5%?ZPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!TӸ;xl/workbook.xmlPK-!!3 4 xl/styles.xmlPK-!N  xl/theme/theme1.xmlPK-!&zwtxl/worksheets/sheet1.xmlPK-!=g <Y!docProps/core.xmlPK-!^YdocProps/app.xmlPK >Zooxml/tools/languages/PaxHeader/Munkafüzet1-ungarisch-hu.xlsx000664 000765 000024 00000000132 14607757315 025543 xustar00alexstaff000000 000000 61 path=ooxml/tools/languages/Munkafüzet1-ungarisch-hu.xlsx 29 mtime=1713364685.15906504 ooxml/tools/languages/Munkafüzet1-ungarisch-hu.xlsx000664 000765 000024 00000017272 14607757315 023607 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~xl/workbook.xmlT]o }xO1UfZm~<``/]s-/|=\X+MI5)g%+K݇ќ䠭)}g߭ 2zɘZ) `vNBK)CYESV2GX`آPB^YT҄I VUM=b O(%X^uH'2NO+%g"OqSV򡗝@]͢)&WA)ahԗҸ#Χe/V8ЄNxҞDR:Hg ȵ55aK[QNbSe+X@(ItJٽG, 76+ԿD˖!ݾ~'l6K6$Ger{HF< 8bx6Uʔ(yY(ծ ,ŶWLHLACT8q9@?h&Cwp/ahC3׸.d+QrgDhx2Jx4Oh\śls|]/-=>/]s:Qj6PK!1\ xl/styles.xmlj0{{WgI]B7`-'9{=^lGH\:Xұ|)l@XU#J]q"cdUZ ŗ7uGv9e3sn$Ė;&{OfK0ZYH HKYDRp{ - #Y.oJ DM43pCkzvVD5/s <2R0Z+gQAE/ ]yjG*c _#oQTn|c7Trqݹ5֢ojs֟"k .IiE!O! U$)(NFH{an>1Ly*X@۝w4iV+*+4wJ&ĝ/vS#ut7U|)8O;^1c)#ODG2O3Z5>wP5 g k>o}5B}gb}]<\̓%"YdzZEW?FFn9`5iAүT~_[4JS[lJ7Ȱ(ݫe o诮kP?X]נNӳkPv/[5($9\CZ\ 2at o^ɔ(ȆUv)&,r-F@)$b'hYEpi7C 0\*W@E[.D ){<1d&[egO<_>xZ%)/3_{txa~zXqg_?zѳoLJmLXx{ػbX~|Lb!bIt;Tedpl&q/o[G|.c+QlwƝ2<<'S|n#t䚻+ 蕸Tv#lyD)Nocnbu8l"[ tɐX mp|{0ZuH:bjKTQLM _ bʼ ᒹaFЯøþKt Ldv#Ϝ6$2CHQ]ceQl Mpn& ~sG,/af b6-vms̎|j1ލOtynXe2sU='X`O5Cx6س8A< ĈoҼQRN9'^CG|q:Fr7i!R nuo/A kf5A0CnA .U-6wMM #މID;e9ǭ]JM}ل5=4Oa8I9묪9j}Ui/2gY-zz/L^@ewyt'J>h(ݓ\g|Lnʑ8Ghn`NEz*1úO}yi\V]ԅ|ơK%StwVu?tKaLfQuQ_B^f^٩XtXPꗡZFq 0mxEAAfc ΩFz3Pb/3 tSٺqyjuiF-#t00,;͖iƺ2Obr3kE"'&&S;nj*#4kx#[SvInaD:\N1{-_- 4m+W>X@+qt;x2#iQNSp$½:XX/+r1w`h׼9#:Pvd5O+Oٚ.<OWsig*t; CԲ*nN-rk.yJ}0-2MYNÊQ۴S, O6muF8='?ȝZu@,Jܼf2_{]PK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!8:YdocProps/core.xml (MK0ަiEvAeO.Vo! 6${ӏ1;CQX'IRb KW(r*N[B'ph]__L[xڀ\HT)0v$8TwJgiz%xʩf& ٌ4ahA+ݟ pJO&4]9}tb6v]t#'m< ߊK fzm/oÝwi\g=€G!H1>+CAuUbrӐ YA~>XlA<_|PK!docProps/app.xml (Mo0  9P bH7`t,D11:NGsE)+1@oBmO۟7D | .x ן?u Y[\(.̦۞;MHi'CX:$oNXċ=}ԴfSd`W5)Pc=?Sb CtҥTm 8\݀˨[A=" [MY= /V/qDɂ'dcr]̔ ,p\ ׈[Kf C<Fkqj~čK}~.M k/Ln0YwXjm xl/workbook.xmlPK-!1\ 7 xl/styles.xmlPK-!@ɳpU  xl/theme/theme1.xmlPK-!4LZlxl/worksheets/sheet1.xmlPK-!8:Y1docProps/core.xmlPK-!docProps/app.xmlPK >fooxml/tools/languages/Livro1-portugiesisch-pt.xlsx000664 000765 000024 00000017263 14607757315 023053 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~$qw7a<SF_7ǽ1G% q%sCS ;%q,sT$ )ԸC{0LK.ֆץоB1BVG+{Jfu5বb/ۃ6>q +RrkHW_J;"JdjG[*+܊mc*F60یo)7C{p#n4'W68Χ Ao4 n<x`*Zt,/% f2~AK;P'hWMPK!!3 xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-Es| CDHNPR I'|Jy'7Z SxJ:koq縉$|*p'ZrX^ o3.QS@oʵJQN0MԎAM9= ̑*&Li$ӓFȕ3N10ӔC :AkWx/bj%72\.0=9x3iFaoLmac3N_}߾O>ͦ>67>R+.\?O<ڻ1MDX~r,^NbcHt{TUo0zu},^_>pl=RQ7rz\xpSeyxL7wN+1ésoޥ!.Lw)auɘ;Tv|sx8z@N]$l <Ə sx/N|*8a}F H h8%Rdn X0U"'>s9'' 4mR;\!ӝO= Wۤ"A/Kub3L|,î]A[Ν> 3<%{cA/F߈U/n`7WsJ$A٦*="sÞ9Y4b[u'uRm69(/^ܖJ.wb]Yu%}e%Ȑbaߌ1s&(f-8/DjĖ^i0@a; M[+{0PRg+pve/;Nmκj._˗e-sY޾^K-S/P]Iv|f#b@7M;$7-E _ ld/5T5ιU%Zp #3lnwZ&|u:U\(*+fT*C7EnC˺6@˾du Dᯌ0+++ZZ:T(n\m^;AfdhAy>qʚ\hw9%:H;W D1J7+ cxγn_dEH+ֻ0z$rXj3KY'h#WE'A& ߺ0Dlÿ ,T,t26H"1tM6pZBZAwLf32Qvح> FZ/!G !ŢfU;pJ%\T3oN)܄mȿsSNUɡlE& nHtcyz v\}Q=gfqf:OM?C޲8D26Բ QsN8,ӊӴ49;uMDc6gzĺ4o.[m~cK %Y E_vl*Z ޫDݰ_J+zX)nԍzuU+^,*NQva?+ ʯ}2I+1\Wk}v f>@HFmԮ{RAUjҠoF~jԀn6RFEja 0>XyF/ƮkPK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK! .;YdocProps/core.xml (_K0C{d1JہʞVBr4$nje{s/GUG_`lthBP7B}^MBL V7 tUM O1`v7:xo2?b. ]ci0, wLD4"=@p 5(aP`WfN%ɄƸs8NNƶm6cmUc[q@e.x-0زs<+tǫpqw=c0Q kzPmP tULo*J2f 68?t9#e/>C PK!}̦#docProps/app.xml (n0 n(@V1+zXI{d:&Kfϲmɟ=^E!+|_}" | Xfyk޿ӛ;L0  QR*[ +uL-ib];wZ F0TX]ugC99z_*ځ/?N뼳@|Kl9$@17ѢjަsL<[ <3jZ6R6Ub^K2`!9ĀC۔2%s}YT(ֿy{Q+n1Y \6 ;GzA u9ΓxcA8p#?ux/k,m +~M~0Y7X- yfy(>VPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!^{9<xl/workbook.xmlPK-!!3 5 xl/styles.xmlPK-!h<}V  xl/theme/theme1.xmlPK-!4LZl}xl/worksheets/sheet1.xmlPK-! .;YdocProps/core.xmlPK-!}̦#docProps/app.xmlPK >_ooxml/tools/languages/PaxHeader/Työkirja1-finnisch-fi.xlsx000664 000765 000024 00000000130 14607757315 025004 xustar00alexstaff000000 000000 58 path=ooxml/tools/languages/Työkirja1-finnisch-fi.xlsx 30 mtime=1713364685.159905213 ooxml/tools/languages/Työkirja1-finnisch-fi.xlsx000664 000765 000024 00000017272 14607757315 023052 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~cd %մk{bϽ KWa4:tb$47ԧ?>sg:chgMlly4D] %!bndja'7bB{"eWDa8%K 璋M%APC*ٲn RI܁bTeG/t2 gr?(yŗҞrʥgVYF9ˤYgm6 viHŊ;2F0tMړ@Vya5bc zu؛€;^|il /1_ƪndpӑWkBd[%?8_"!dF;VS-k/ƾ#0v ß)&Cwp-#n4o37.OΧ+Aro4og"xEqlmvzv98Y܋|t}WPK! xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-E)}[;>,+X.-!'}"!ᇖ_~qbmeBTn5/Ƈ='& 0W5u\ޯk+}F#Xij^_{^l 5ۡXx Jk ^5|ivz~ J5|uKE$kRXv]A&80+ٰ.5ń%rS.( E$\ N]2 f(aKҠTo:h #CZ!e'Fd˿Z}ٳ>G?%[vP25^N}/L˟|S+]'/>yWءс  >nI #D, n꾌,.\.́e\󻖭Kj[=hq =9 p>z%.[fޠ(h,=;ر;X~##H:8]2$V"B;$,\B-:VG6㇘Zn.CSHF.#|dBB2?BdsX0El#$.1c3$LgRy7tC3%}`+o&[@Iy_˘qA'Xc]ۜ83Z1Ehw36|}%Vĺ\U u:Ea> -N%14_[ Jѡ F|q:Fr7i!R nm˻ݗ O-־"jM'A[ŸsU͝r{aȪwb9QN.`Πq+~Rg(p6eM͓Nu:jΫ_ly-s^˸޾>H-/P]7|&}xW讏7u;J$W-Y_re!kzP4)gC̜J;qlqrmfS{xWMnU9wqU >xV0v{ =we·^ն?y為F7;z> x>^,o9?֯PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!4=xl/workbook.xmlPK-! 6 xl/styles.xmlPK-!ʐS  xl/theme/theme1.xmlPK-!&zw|xl/worksheets/sheet1.xmlPK-!`r:Y)docProps/core.xmlPK-!uc$docProps/app.xmlPK >fooxml/tools/languages/PaxHeader/חוברת1-hebräisch-he.xlsx000664 000765 000024 00000000132 14607757315 027114 xustar00alexstaff000000 000000 61 path=ooxml/tools/languages/חוברת1-hebräisch-he.xlsx 29 mtime=1713364685.16066401 ooxml/tools/languages/חוברת1-hebräisch-he.xlsx000664 000765 000024 00000017443 14607757315 025160 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~|ߌ'RyeMJQD4flRzz3P 52ӓWu۵[Ƨ1E!KGwrJh 󕓐BPjGш f%6ϕVԥ4qRC}*ߣ%p%m] -+X+} JI)fc5ϠK%6Gź #yb+-o; T{([4%|Xf*,c4NVwyţWd2Zãh4'&ut<& ?WZ¢:Z~X m9A` v:c 3kg̦ \Ͽ D=T,MA*HmLS&NG]yP4qT"vԎĴp|zߗw4e5%np.3h7C8·vDUJ?$:Gd-d28'r8^^,φQYR4Qʁr-3X]B/GSPK!c xl/styles.xml[k0Bl7N`4M n ^[NDu 9;%qFbIOsSzH\ G!FLjᯏE0:**b>2R뎂w9e3sn Ė;&{OfK0ZYH H YDRt{ - #Y.J &DM45pCkzuVD5/ks2'<6R0Z+gQAE/ ]yjg*c _#oQTnǍTxSM%؝Qc!goj3֟+ .Ig%!O!U)(NFH{an:Ly*X@۝w$iV+*+4wJ&W:B* >[xֱߍEMđO#_[N@-9p``V9πt Db5=xABgZDh`{P^0y8Y0dI0O .WbQ7'OV@^lhokdixDaP\Q0Y0^&ADj:Y%E2ҞI F% %\ 24B`'Ȑ r~PK!`);n xl/theme/theme1.xmlY[7~_[U_C_=gli{ɣ[%H7,}!6#Uu4/20ts霣SG}0tJ<kt§4wQ p:Ō ޽o= ORrYN`k|ARmE>h |l4!!g>O`X8ԑ1Yak‡xszolj<ඞ˲xo>N Hԧ=S$% !սOcC:\BSk1=vڧ e#vls8z@N]$l <DŽ9f '>c0X>G+1qCs8N>k96d*qB̹~3Mc<W>!ww~?tR$WR &~\&,]z;}@gxJzA/oŐU/na7VsJ$ANT:!{D|Յiji.wN)MwޡP BxrW+ދsvgוp*{ ݗ C^[+f3A0c /݂BDFl镛pFNυ'es _)uv .`Y3d;g]U5WUM_WU-sU޾J-S/P]Iv|f#b@7M;$7-E _ ldTG1^@kjsK:FfشUݦL4tVPbUW8tTn4FMuM@˾ k2DC/ KahikW1Px^w(:Ќ|5ιTO2&#Junk;W+x!aK ^[vR6z74kD.ڙ4ܰL̠c _Ďo] fD$,T,&d h 7RC j ¯\ʯ8u2DnFGYj%}O1[B,jVTA5M&w`Ӯ}eb(lDy7ItC8(S˅wihL0]%l+0f6W亞,iPGLz̢&Z/rT(szT u la8>&28٭0[ٶ/+`g'Ŭd,n 50UWZLz(ŅV-h-PK!'NdocProps/core.xml (_K0C{vcZK=9(v 6H2MۭV&crK^˕,P(IrS2LQ`JB`ѼȩΨ2h8ͨ.9alwH/Vl&lO pGp @DG$RLP,N{a蔑Spwо1h/僱iv1|!(2g4S\qjU S wLGv5n_q`_fbWX#g}2[/Q940lv%[|[D'Yr="eϾMPK!3B1docProps/app.xml (SMk0Yy"+MJ ]M<^ؒ&f_@!!=`xy~fFgd hK|p̺mo6o^sQLAzB!HŔBh tQQ&Hǰ>ϭ o+p(Teգ  hM/n5VKk4Rښϑ]kcX˝R)M5`q)G6%P.#HW Q Ex{3F6z\j?ڇk~$"NN}=!|Qb ]|@a?Z~mq(= QbZ=%FֺxSoFxaP  KNdYhw PYrж'1)PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!ooxml/tools/languages/Bok1-norwegisch-no.xlsx000664 000765 000024 00000017245 14607757315 021744 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~|pD/k<Fؔ*Cn_ּ]c)Fv!abwm8Sm$Fh^[ >a'mRqOcAmo4 ` h2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-E9`5iAүT~_[4JS[lJ7Ȱ(ݫe o诮kP?X]נNӳkPv/[5($9\CZ\ 2at o^ɔ(ȆUv)&,r-Fw@)$b'hIEpi7C 0\*W@E[.D ){<1d&[Ϟ=ߞ?z/Z%)ǯ _xtxa_xzXq>yɋmLXxwŰ@Nb!bIt;Ted-u:vm,^ߵlݏ\W1F;;pUexx8OD5w%V+qF2EDS`!Ǝ!q&DzwA!9)!1e2BmfaԵ>-u?re4(vE2r#"=Ŕy1%sz_q}.b%9tE;F(9m&Idb?Ȼ !([~3r5MD2X^ޏ :A2m[ęJ]):Fc[9,谙+v%dzNk)r+emgoqx(ߤDJ]8TzM5)0IYgz|]p+~o`_=|j QkekZAj|&O3!ŻBw}ь0Q'j"5,ܔ#-q&?'2ڏ ZCeLTx3&cu'ЭNxNg x)\CJZ=ޭ~TwY(aLfQuQ_B^g^ٙXtXPꗡZFq 0mxEAAfc ΙFz3Pb/3 tSٺqyjuiE-#t00,;͖Yƺ2Obr3kE"'&&S;nj*#4kx#[SuInwaD:\N1{-_- 4m+W>Z@+qt;x2#iQNSp$½:7XX/+r1w`h׼9#:Pvd5O+Oٚ.<O7sig*t; CԲ*nN-rk.yJ}0-2MYNÊQ۴3, O6muF8='?ȝZu@,Jܼfw2_{]PK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!^Ф=YdocProps/core.xml (N0EHC}bYI*JHY6{GCPY;g9 AhJrREs-yhZ0L4lc \H1ar0؃. mciwpw`K9hDJ1!ͧ{jP4*gC̜GvR >j2m>FO_5tw+Ȥ`-Jp>óBw; wV 8}2 A.5*1IczUR-&_]'(2|oPK!bdocProps/app.xml (n0 n(@VQzX`I{d:"Kɞ~κn$'عǔmX.JQ7~_ݷ/=벼x$5Wl(&UOkZ3)2Vw1:kњrhxc=_6Ŝ[4/IJS5p#t.o0o6ezZh("߼kQX%zH<16%cb#,O1wcY/. K%GD]yGv¹Kin|.y9n!?]U^ն5osA=L-=֯=;˛E?Ք|hPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!;HP:xl/workbook.xmlPK-!!3 3 xl/styles.xmlPK-!6 R  xl/theme/theme1.xmlPK-!4LZlwxl/worksheets/sheet1.xmlPK-!^Ф=YdocProps/core.xmlPK-!bdocProps/app.xmlPK >Qooxml/tools/languages/PaxHeader/Kitap1-türkisch-tr.xlsx000664 000765 000024 00000000124 14607757315 024345 xustar00alexstaff000000 000000 55 path=ooxml/tools/languages/Kitap1-türkisch-tr.xlsx 29 mtime=1713364685.15744732 ooxml/tools/languages/Kitap1-türkisch-tr.xlsx000664 000765 000024 00000017305 14607757315 022405 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~,}ƑLPp&q2f'A:A OU{]Xtʯr-]vBAj=gM^H A4lJROM?(yDlBrzT&DŽoĹcP$4GE@ŧ#<ה"Ci8^V\7R ':-BLp3')ֈ9tr+ mSCV }BWh>Dx0l4&ގv5[m_DSx.9|[ne-q:Qj֟JPK!QQ xl/styles.xml[k0Bl7`,M n ^[NDu 9;%qFbIOsSvJ\G!FLUje0:j*b9>22뎂sx~IvLR{LFI,͖ؽa$ÔH KYDRx{  #Y-oJ fBmx3DhwPWYZI})JHY @JW"?`1)J m`(*Y 1*8܎ YQigr6"Om,'"$8fT 4{^zL8 ݅EѦii-sSҲkX<=ӛ;\d$A{Bd(Kp_`_Gіp=OjbQ`slmx$ @4bWA5@W^W-[xCus;T A` ?t^R|;N֯A)ڽnנp ] kr+Ȅm'z%S VѥDnf|HēqQrC %LpR_}M{madH+^D )>q2-2h ȳ'OOJ\*h^(h,=;ر[Xv%#H:8M2$V B$,\ՖmvozF]# Q!/DK4L\_HSXU5~2tH.ɡKbDa7Bə$DB"..wz?dolՉ$WR 9wf~\ ®,汕]ۜ83Z1EhwY6I_ lcW`]Fv U(A]"wBvO>gMV)LW(!^F*@MZE:Գp[{=Ko,m3DԚ !ÕnAr.U-6wMM #މID;e9ǭ]JM)eD ,kzh\p笳欪Uͦ|V˜2g2yM=xcgB(ݗ wx`PtOrE5k0Y)GZL~Jdʺ9fL@Hf*>[.rYu5S $R.Lѵz޽[Щ. (7!aLf:Hԗ+;MRtҋ+SWۃiqPfһ9MƤf@MuP{ O[$pIapf4}]jSXF>|ȉ@3S;nj*#4kx#[SxIn,3.d(5N:i6ܣ$njh![ %ׄNƓ Iƈt>_ۃ$w@: ee1pqPN9&pJdy8k^EJE(;Qdu]O+Oٚ&<OWrFL+SӝL!oQU;s]s P+N8 jd5x= N 0,Q`۞ w2j+uKsV܆у9BzAї@iՈ͛svЭB A5(aZha˥^r0]dz|>^Ҝ|QW^sV4NЬiZЫuA6{wA jFVv A7zPz2V`^?PK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!h<YdocProps/core.xml (_K0C{fQCہʞVBr4$nje{s/GUG_`ltH4oT8CL V7 tU 卅'^I;MP%kb><?"MWXgy;`l&"OHi 8h0Iz+3dNc9[AG''c۶IcmUc[q@e.8olY9mN;z(C6\$,&7Ii 68?x9 7PK!P&docProps/app.xml (n0 n(@V1zXI{d:*K^`g3{6:N(CcbEބ}!v>,\XoߨM -F25Q2H =+U q/CUYW<6I/ጌ9x{:4-ctl5D,1? /5d]c0"jJ~pPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!E֭;xl/workbook.xmlPK-!QQ 4 xl/styles.xmlPK-!U  xl/theme/theme1.xmlPK-!4LZlxl/worksheets/sheet1.xmlPK-!h<Y&docProps/core.xmlPK-!P&docProps/app.xmlPK >qooxml/tools/languages/PaxHeader/Map1-niederländisch-nl.xlsx000664 000765 000024 00000000131 14607757315 025110 xustar00alexstaff000000 000000 59 path=ooxml/tools/languages/Map1-niederländisch-nl.xlsx 30 mtime=1713364685.158088825 ooxml/tools/languages/Map1-niederländisch-nl.xlsx000664 000765 000024 00000017267 14607757315 023161 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~;+fYRM}ms=\;} 2L|bouTTj3-߿KڜZ(ʹ&!IJNtAh6VZgB!1oe)h\pIo+fo9tAH{PjJz@#2Lkt"CW|@9OK! ;M]m x9[0mj&wt{0a2@V:nu| zJ;ily _zwU52yݴڿ-CIOy5gK.D' }p,F<ԟAx7D ?zYűr<ŮW·LTJ"]])F&01;Xƿ ,\SV5\N>Y0"߂ȿ؋[D[GpϷ*;\OG+ e'xZy:~uӱj2PK!>o# xl/styles.xmlT[k0~?;8K45:(*$s6wKұ:;߹)n@XUISec1 XOԺ`=c;wXb=N)Sk#=F+/IA0IR"y:Ru|w #Y.vJ@DM435 "yiյ(uK,-G$}R0Z+gQAݓ^>)]7v^yjg*c ņ\#oQT 5k*8u^۟Or"GXą8=0)1 PP/?^lt0?w8@ڀyզY1TQw{:}V;-ӊӝVTT:Lo F( " "$ҋ^xKݰ_w7~;'09=p\0`VXweisXM=fx%,Uk!2VO T1GK*8Rz[UU"?f%PK>{&{ KEe%{?yx~LCaI/_(NFlLi˿='$JƈK~rmDlI9*f8wc$Oc@oLRVI|/A1W*iOaD 50|Oƶ "KwhˇhKߣHHxK_t2!*7r/='& 0W5u\ޯk+}F#Xjj^?{^l 5ۡAh5(Ňklkkz ~ (IХV.WLv›a0W29 a^j Kd=PH$I< Aw%x;dAP *A @!E[00E )<1d&[Uϟ?zvǏͭUYr(r~WOI>&_שxӗϞ?zh߄IwyX t؏$"@Cu_FQm@3.=ֽ%q|--.cø\dꞜM-]swQb?n-3oR l4 z0v.!_wɈ3&һK"N ɾH6!. j7wU𡍄m!DKtȽ)돱.k0;tH.ɁKbDA7Bi3I"8EM&]]f q@p! 6iR ͜;by3{?.a˴ylkgvtS+w01n氠fsF*ؕXW9{Y"S Y$F|u+usR ::0 /NH&7#d]Yu}yde7CD "(0\t "VsujSnbo< PYNL7?'ʞ){ekZAj|&oO3!;B}|Ҍ0R-j",ܔ#-q&?'2ڋ zCeœLTx3&eu7ЭOx^gx)\CJZ=߭T7Z(aLfQuQ_B^g^ٙXtXPꗡZFq 0m8n+zL_zjx},Lkpc%ōAmRb.JDq%e6-viB8M{ CO,%}E<q |iw ՗5@J`M 94To# 4 xl/styles.xmlPK-! W  xl/theme/theme1.xmlPK-!&zw}xl/worksheets/sheet1.xmlPK-!+;Y*docProps/core.xmlPK-!edocProps/app.xmlPK >cooxml/tools/languages/PaxHeader/Βιβλίο1-griechisch-el.xlsx000664 000765 000024 00000000135 14607757315 027565 xustar00alexstaff000000 000000 63 path=ooxml/tools/languages/Βιβλίο1-griechisch-el.xlsx 30 mtime=1713364685.160304966 ooxml/tools/languages/Βιβλίο1-griechisch-el.xlsx000664 000765 000024 00000017427 14607757315 025630 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~~of98 }IcLFBsJMoLL-b|/H^=9 .ƹsQ070[0WZR E I[} 2ڷ V(!}uh \*{%@줒Ũ^v hCt!5dPM/ -dI%n[+OQ):^1Ch[J*#L'+,JE*`B Gi8WK̋4`/skV@QԲ%s3>c;w|*bLn'MGI ۦ~Xt'uj1 ܈.#L}pDOcoG0X섦ᤦEqϏ_FWcS;IMJn/gu,S:+k%ĸ9[;9 '``؋&Ӱ7aop^Ç[{*sf2~Zd ['eM]PK!FLk" xl/styles.xmlj0{{W{I]Bv[ŖQ}I霍o {Nұ"t$?_J; S2CI<*KU1л#X"+•R/Rc^( cS DZiA,L28  $SQD}Ykbقqf- y^.dAjH5a %ZUbU׬NHHas>\~uc~v}abøeҁ^5`.ֵR}da1CZwewʶ W.ga2Ph6ed~QD8)I<|6 ?zݾ?y m75^⯏ &ZAP$JqiqrEFd4x=~0ܿ!MO-3>CC+$ q3{PK!M:Vn xl/theme/theme1.xmlY[~/@̻ی. ˁػ+Qz9Cv- 'yKi}C4A$ l~M#zi_.bWBC}9g8aIy *"Oi:ƣR+@RtOI'X{]{*& A = b{岜0ی+xT3ЛrRiL8矝~/'lF'$f`TI=0aHOBrY ;=j\>N3N٘ 4la@WAsP:xK}s7o@p ?ހ2|zo@oV7d ]zȌ}/f-W^ 6ѥT튵?b dXՂ⹏=y )0\UF:ן|3{[Қ0[CAyϞ~7>sU>NO=音/⥍^|/x/^||؆iB$C}=ɱx=q#cQ=Ṫׄd(KE=3ߎx9q5m=e2'KwS}:.^Oe?&{ IJҿB$czR!OG\!q[Hyȏ sx/N|*8a}$VbbRq4)}2wrm0~U"'>s9'' /g6=y!=|C ~Nw?qH6"@/KMb3L|Y+'vFGo9wB=_86/Hߊ!_`nHL]"tB> g]םЅSΛJɉ CxVpwic+UG/A $W3g"` _>W+7s7m(z'K eO){%<~ſٕR/8pe/{NuU\U5}Uk/_2WU-{z+LQ@eStyL'QƎԊi>h#4(ӓܴ1|Ln.AbP4;2W=h%t̰i MiiVuW33ĪDqR hݻz.뚀}d.Ds=^%fe¢a׮Z{qc r#xQQuT)k&seLfG(<\w.O. WC 71i/¥=mn(h4[o:\ ,3KY'h#_E'A& ߺ0DlÿIfYXƙMɲABѤo&n$,69pd2nhKg\Ո9XK%(c1XԬjNjf)M"+]*P6"b' n膎yz 6\}Q-g%t>5uXeۼS"׵׹{J}VLPӌӰK vۜ^KrVlFz(Q)Zv+ `4GIN 8ac*5~)lT4V kn춆aI^ʳkxPK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!6;YdocProps/core.xml (_K0C{f:BہʞVBr4$nje{s/6GUG_`ltH4oU^mFL V7rt6U 卅'^I;MP%ob>N DN{`PFC+BG q "APn){oʝ+!ŲTr~ #ʮ!.tIiۣw]PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!21Lxl/workbook.xmlPK-!FLk" E xl/styles.xmlPK-!M:Vn (xl/theme/theme1.xmlPK-!4LZlxl/worksheets/sheet1.xmlPK-!6;YidocProps/core.xmlPK-!1docProps/app.xmlPK >ooxml/tools/languages/Book1-japanisch-ja.xlsx000664 000765 000024 00000017414 14607757315 021667 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~c %Qk{bν ͹T蛰N`: 0LCv3g:chp&}.>{sD] !dnh*a%7dB{ e—A0!%w  璋u)@PCJc] )+K%ŨA hGt)5~P+/ 4ΥUgV6YF9ɤY퇭e-Ҁ &we"g;0<7;ԭjhT_jWwнZK+)/1_ڪnwӑWkBdv%u?qR/)c(@xjd3(4sM 2/mpŚqۘ]HmF[gns:ˆkk$M+i #- ln.mOΗB*` 8w`Ž= 4WR'˒ֱ7p~@ا!Mi\Jaˍ0 QHcѹ ƹdR9 i6"0'͎],1l,7WXi0MM-P4?5 ?aͫ2vHc0%28rZz= z0R: 1#(\ٯk]HcતqAR l csNޗqs^$^z7aL3p(Cs{;rƸ}NU~/@^}z Yl(3T4YT2Ecz]= T %0s_Latá!+ij2| t6}5e;#wpL"wMgn48fϽ~Sw45 jm&q8_Gf~x䎆ǑEA8gQGOp]hb('ΫΡ~L#Ix' PK!%Z xl/theme/theme1.xmlY[7~/? 6o5d7 Y'%Z[hW32S%  iKKPJ-BBB/?GGZͥҖ]⑿s霣3GW=w ,i+%ɈI2mBDQ¿[Wіp=OjbQ`+lmx$_~Iw xwY t$"@Cu_FQme\C~8fp1aij.y2uO&.BǮ(ܟ n-w(J$KOƎ0v!]Ȉ3&{@"N ɁH/ Ape^Qת{F¶@A~eh.QR9D15 d"#<=Ŕy1%sz ߄ v]6Krҹ3=vԍPƖτP/ F3nG8k`pSǙ|h?B3h us*2S͘T|N;=6N;j&Hp5]*k{RSe]PB˜&Qu/ EBBX4,JUK/LV^Wn^[~dhAy>V~JK*\7%2rO7׍SKC%XI9{?xt"^VԚc7aD߹)KUtYL)\' nƒ:`ZYHieuj; V!jJS~yk.sxA-̢aQ%j:#xݓG: u|}mnjCH=?S)+Κ#(4my(ysNZ{t+aPjBP JFخaX-rש=58ン g=\IKUƱ_Wl79k?G8ȌZze]RY]z(7,x;iN_V `e#E^wL0Ţ<6_GRUON,emAJ| =_PK!F1;YdocProps/core.xml (N0EHC}8EXI*JHQi?d=Σ!lXz3wFWGD_`]UHעVVx" tVU ³E@ HPAi+Odž-`F|ڦ ;Lt6)k2a1- N'c۶Ico7O/q[q@e.8׶ &yW?z(Cxx֨ReLn*R{7Wl(qY6#e/>C PK!EOU#docProps/app.xml (n0y{L9  N jN+uR$A^cm2vEBI#7jӘNrUv]gE[q Ȯ'c 1K6&3Σ8IMJBҰ殪kЖX!g-iTV[ (Ri\tew%F|&cдT,Q𷂸Eַ-ZTB3XZ,%mHHAwO~ gƱӾ!Ǎcԕ&{@O==,kDfIx]npi3׵Ųezq6Lg2|y/tarz9o[PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!).:xl/workbook.xmlPK-!_ 3 xl/styles.xmlPK-!%Z 5xl/theme/theme1.xmlPK-!RR|vxl/worksheets/sheet1.xmlPK-!F1;YldocProps/core.xmlPK-!EOU#docProps/app.xmlPK >ooxml/tools/languages/PaxHeader/Zošit1-slowakisch-sl.xlsx000664 000765 000024 00000000127 14607757315 024665 xustar00alexstaff000000 000000 57 path=ooxml/tools/languages/Zošit1-slowakisch-sl.xlsx 30 mtime=1713364685.160093131 ooxml/tools/languages/Zošit1-slowakisch-sl.xlsx000664 000765 000024 00000017335 14607757315 022725 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~c %߲?k{bϽ չT苰N`: 0LCw3g:ch'U]|27@W B/DTBNnl<@\e\!/ `BJ&5-&%kRh߁X]!+ף-p%ǺpSVJ/m,+}Х8!@ 4 v8J1Ly*X@۝w4iV+*+4wJ&ĝ/vS#ut7U|)8O;^1c)#ODG2O(TOA?hl՜$8Cm|NA0*VӃp>?$ZԮEd<Ɋfָ[ #:׫wup5dj.a^5+Z}xmi4ߝm-:mE< 'Q0 3:IIguR$# Dx4Qt\2Ր!Cc+$ q W= PK!d xl/theme/theme1.xmlY͏@]׌>}zcچWv#%QZ@Rs%@%@o=F4@^zȟbF}4䊊?.bWBC=>yӄs"$i'ިS><JIf<%`Cdѭ&>R1ITN+:*W$\$XXg_ބkJ`( =hُ/ݟ L*L9H.jag˪Fȍ310_S :A[7(bꀬ%72\.0[̜b1MQSas6v OҌY9e_=A-=He=h+:x>{WeY¦߀bF5jw9g^x; GZ@A4KO1:k ~Ȱ)R)s3:E )0\UF:ן|3G[Қ0{CSAWy/^~sU1NO_?fS_K^?V\՟{w|xb4!#!O`d"MbcHt{TUm0z5cY~p=ZQwrz\x pWeYxN=7wWSُCé o|IguPN|'0dL'N B4l|ՎmNgUȹm0njZħrfGl#6n(xzAG's_z-߅ w)$.R(<_ci؏B\!Ӄ~L7'G\mJE_ۄqLW$Nv ꍎz ! _!=rl^CV9&X)f?EPY|N7 4; 7gӥ GxVpi}cm'/A $3g"` _>W+7w7m(z'KeO){<~ſ9R/8peNu]\W5}Ush/_2׵u-{ LQ@eStyL'9SԆi>hf#4(ӓܵW1|Ln!AQxiv.dz!ъKaS%t:9峬YffBU1^vХR,w;0]--.$\uvs$ʮEâo]@mxF 0 C3SLzW;J=}Ș̎(Px\^]join. + cxΣn_ۅKzPh>uXjg NШGp2ūN01|MV;Ruaن̲R 3e*"I'EKM1ܪ5HZrmH+6rtd>'Seі!gkpY<@1XԬjΨjf]"+]*P6*b' n莎yz 7d_|֖fqf:YEdyUq:mީe\=%pŁ`Q+&siiX|ԥve%Qm]iܝ۷|LIJ2KEFoh-h'u~-*hX aԊR7aT zgp8Fٽ0&7{7Ɣ'enˆ֜|($OQ5JzwT VoJF9 Q=zs~Jj_ M.5Z6a}1,}^PK!&zwxl/worksheets/sheet1.xmln0 Ek9}7S v1`Z2m DCbvbl)R'(VzVZaԸUF;nyk="+!\ymrAFi)` Sg)xsVW&zO0mM{HB, @ 'iN-AwT`]_ ჳ2\=|knƉvLb26wV zHh=>K[Qj@5 @v` iYWn9ov+Vpq= : s1+TtUSBLz}UMQ/GYsYk!PPK!1;YdocProps/core.xml (]K0C}dS@eW+w!9ۂIۿ7V捐ssH>&%A hn=כt1JtEm΍Gg, '}m!cϢCGqgb!^[ 00H'pMC tfx8|+3dLc9[AG/'c۶YcnQS]q@U!x`\U5̇mN=z$ɇޠjA*%^Ք,[.PPc37*gPK!"docProps/app.xml (n0 n(@V1rXI{d:bKfϲmɟ?MaLֻB,_Zw('%WB$wj}HS.& +)`ٱRqW5KmI<˛p6㪣5- kњ蓯({cTg_N%m9wh^^JS3G J^ j0o 6&:Zuh,ٟ[X!:16%c܄DQo~^Ic׍5R{H]iG9^|g}?.jWCĒ6 &מC˻E!OՔPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!w-Bxl/workbook.xmlPK-!Gq ; xl/styles.xmlPK-!d xl/theme/theme1.xmlPK-!&zwxl/worksheets/sheet1.xmlPK-!1;YPdocProps/core.xmlPK-!"docProps/app.xmlPK >ooxml/tools/languages/PaxHeader/통합 문서1-koreanisch-ko.xlsx000664 000765 000024 00000000136 14607757315 027541 xustar00alexstaff000000 000000 64 path=ooxml/tools/languages/통합 문서1-koreanisch-ko.xlsx 30 mtime=1713364685.161415307 ooxml/tools/languages/통합 문서1-koreanisch-ko.xlsx000664 000765 000024 00000017435 14607757315 025602 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~:3߮4V;ml(7 3~b>s=: IcLFBsJUoLL-b|_%/_̏vh2"\M)4dChĕVBB0Ƥ`R!0Y&X^B ¹'·L͈t_JbS$L& Dw3zh6`č敵`Vb'd#.c\Oٰp: { -p=Wq=꞉Yqق9# buUTPK!T xl/styles.xmlUj1Bʞ?Krz"&+k7 bԚJX)T/}֔܏` $n&"A˕X30t)& Rp@rTCu u`VF@}U,O=>) jϒRIkP6Ҧ8M K{tI8a?KrŕF i."͎}n~J"6ljnSmR }'OMWe߭LT9LP;خc?{6&̒΃_dbT8{I|'˛럷WZ0nl(]Qw'e =;fAKb-F@3hwf)ޏϜqʞxERdb<;G(!qR$I OҸ(9!o&`T) JU>#02]`XRxbL7 O~>gskU6JG?~g?'OaŹ+Ó~xgСс  oxY t؏I #D, n꾌,Qm2.e~8fp1aj.y2uO&6BǮ(ܟπ^Ke7–(J$KOƎ0v=B,gM:8]2$V"B$,\B-:V6㇘Zn.CS;HF.#|dBB2?BdnrX0El#$G.;1cG3$L5q)[L!‒Kg WӤƖτP/F3nG8k`pSǙ|h?B3h us*2Sֽ͘T|F;]6N;j.Hp5]*k{RSe]d_c2ۈÈrOF蕝M ~eWVQWn^[~dhAy>VqJk79%2H7VsD2H7# #xβlgyH-+!7xV$rhb2M_p2B?1|g;Bu!:{fq!{HD5lGIW@!ڶr5 A' ZJ!;s~Ar8( [Ygvͫ(C8e'I)\ƒ:`_}Q,2az_?+ n}4bq6\ܗ+=~2hVZYm A(4NW{^7l4}XvBZIhAF?hXyJ/ڮ+PK!xl/worksheets/sheet1.xmln0 m N1(Ca[3-ӶI$i~r鍤ďO^W/EUkRǿgZ؁cWϟV;ʛ2"B,ҘbG P*J奧̓))#tsRK]7\2A},ސ|d]*GZțm: ZgV.HZ/s.=gTJp̗iL0ɮ2fyr+lAi5imTs{;k+ ^vwoݡF[``ez<ڼO"GkfK0Ţ<«Z{=ת%f Go@Y~]}RLCPK!];YdocProps/core.xml (N0EHC}-(Tik?d=Σ!lXz3wF.GD_`ЪD$IQi.ԾD/&PC PK!OkdocProps/app.xml (n0HC{ق*r\-*Vm3X8vdO]n\7GP;0I6 ͟O<uk\aL6BgЛPZ-+%_  $gjC,-|*DM.LҌ۞;U q+CUY6I/@D 6Q߿=|y×;%Y2pcȍ%}H`O77Q/Cӂscn77z\T"  ꒗]oo|/fooxml/tools/languages/Mappe1-deutsch-de.xlsx000664 000765 000024 00000017307 14607757315 021535 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~a!a<9SF? ogcOcNKq} RT̍L-4VChVܕBJ( 'bRaa߂aBr1=y(ߕvZW1{jꀛT?wU|;jcA Md^AW[LGE"ҐPSΖTⱗ̪6H1緹"OBs-ئ^5R. )`XqgQ. (x88̣= nV3/F{W. ŗFZMʖ-%jJ1yp@xF7y%1/DfeKn_R?zlQ%b˓Թ983C8''2,_> y,=(>a-U!S7"9X{+vمC~LqphNqyc-8wir>[zqx; qnIQ0Q76n7U8ؾ^YmŊ9h# Z UPK!f9 xl/styles.xmlT[k0~?8K456*b$s6wKұ:;߹)i@OXU#J]qׇ"X`dUZ 7wu'e3|pYb^)Sk#m qΉ\a%<Բaa$^iCwь&#tA$/vWJt]$KB `_%$YTrP~@WJW卽W Ęi6A![ ƚJ.Ng彈1.q!άbO y w̨4+S'H0OwT0S=FS V; jOsв<8kEO9 NɄyV?nk0L/(B"ǿD 9> ^~F~gxm`v;re@کҕjQ{8$f?JX Ү$>k' ':w]pf, z$fS,8uoSXfHv lPIwS //y1 `6`1N"|K{w"$Q4mLp5jХ_ c'PK!X7N xl/theme/theme1.xmlY͋7? sw5%l$dQV32%9R(Bo=@ $'#$lJZv G~ztҽzG ’_P=ؘ$Ӗk8(4|OHe n ,K۟~rmDlI9*f8&H#ޘ+R#^bP{}2!#o/)NP#RB,Drі3ߓGC/?}2!*7reÊOVA+@:_> @4Yt kүݽzZP},5`/Zx J>4;=[^j_"J5t)Uծ Fwf LylXeb)bt"IO.fxF]D'.Fx30åJiP 7Q!Kڐ#Nf_yO?GͭUYr;(r~WI>&_שx퓗O?zIw {7Y t؏$"@Cu_FQm2.]%q|5-cøW\dꞜMM\swQb?n-3oPH4 bXB,gMwxD.+rC\.!Ԗon{F]# QCL-7^Fsb!]$# >2q}!!SLc!\29U`w"\C]ĘnfD&3q)L{!‒M7- WӤύ`Wb]Av f"wRvO{'gMAԭԅSI^#PA8r]#ވuvg6{ Kbk &fp-XEԹNi0@ad;1IX({q0gPORvN8p ':gW5Uj6Z漖9e\o_l.[>B\P+tGx{,YM92gs"͠5TΩTO7c:FzX7Q ݺ48t˪P 8tdJNuui=dU DuF蕝M ~eWVQWn^[~dhAy>VqJi79%2H7V[D2H7# #xβleyH-+!7V$rhb2M_p2B?1|g;Bu!: fq!{HD5lGIW@!ڶr5 A' ZJ!;s~Ar8( [Y'vͫ(C8e'I)\ƒ:`}QQ9oIՐ3߮^ pN_u=靨Enw\ܾv)3@_!u.f屝J3,d4ղ\|\-51Se/Á2eA/(uvPK! >RA=YdocProps/core.xml (N0EHC}(VJ ;˞C!<ʂ9sg|}u %)@1ͅ+9OVP#8.//rf6`r7c KCq><>,MO9،D4 93 5HP,׃φN8GvNٜ>81Iy#sj,T{+9#ږ8I=^M w s^.v }R^w4[*UzC ~oo9 ?qIfS P3PK!8ַ docProps/app.xml (n0 n(@VѦzXI{gd:&Kɞolɟ7.0 Y.2& quCdKpc!HRV1"eS!jv!%Y}RƝ Ue ؠgy=qgM`z>zU:k-51P8c={NiJk4AJNS6pF uЯo6V/:4bF_Zȶ@؃hsd]KUܢeں'fJQilА`I)ƲCS )0B8ǙSiehZ$vneE!bcAݦuFכ,k;,_z _x?_oyzIMׯPK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!x7.<xl/workbook.xmlPK-!f9 5 xl/styles.xmlPK-!X7N  xl/theme/theme1.xmlPK-!;vxl/worksheets/sheet1.xmlPK-! >RA=Y0docProps/core.xmlPK-!8ַ docProps/app.xmlPK >sooxml/tools/languages/PaxHeader/สมุดงาน1-thailändisch-th.xlsx000664 000765 000024 00000000151 14607757315 033756 xustar00alexstaff000000 000000 75 path=ooxml/tools/languages/สมุดงาน1-thailändisch-th.xlsx 30 mtime=1713364685.161030387 ooxml/tools/languages/สมุดงาน1-thailändisch-th.xlsx000664 000765 000024 00000017512 14607757315 032016 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~kY)R%AEW ]9Q:&m6)ڍ8C罙xW=X'N; IZTuB^$p+!!wʘM%$RDwG'5uFa8S eRUڷ e:B<vS=a!VRI׀6ޱAB kB6'|YHk)gTp|ˋEŝ_Cf mت\TR) #:U J+,B$ԑHDy{85ڣ?W`uKxWI l~>*B\:+1,U\+GIΟ/DfO~bk)|V7􍄭{vݭԩ&d"e!V>OH4f{AsqS*ff tOa.: TaS֐`W;^a4a:v͊˄|`qx2 'q/\x4-o aX.k5PK!PZg xl/styles.xmln0x)md"M iEM֚?*) +^>N$m2 nb\Ղ{Td‹yTdrܟ X"K•)Sׯcm( I cSl Bm?҂XX56[MIi!qc,%D?AnJle+ƙ7,bvJu8"WcnhLO.ʨ^b}u= #1,+NZ?НٽTe~9c+KpDgIҞ`H"hcI6Jg`|Zc $!EQckR Nb' g,Xe /[P$\ZLך(ͅYRCt2e 7nj ߕ%%#k% w)(w?Uuɝȅ-Sp#ݴ Z^]=q +?ÏTV;- G4|ǣbO(6h4sd tphy9ۉm),ZMi4aAdOƗa7q|>er&O:ehh$/NS&pgPK!Ivj xl/theme/theme1.xmlY[7~/? 6'mG-{Ռ$Ɣ@IJ_ >ҥ/+ ^~D4cK7-#9GGg.^SsAXJdo 1,-һ\D[21@>[GRζE1a$.N 1ȧ1GG7JT+ƈ$Ԟ?:9'ǏO?nL&dK˙KP#<87ヲBR"a1;(~h%/],L @erդAJP~mOh+M:na PաWU_]kP?X]נNӳkPv/[5($9XCZ\ 2at o^ɔ(Ut)&,b-F@)$b'h!Esi7C 0\*W@E[Ҋ0kC'Fd˿ Z}ç죏=>[Q25~?퇯txa_<ϿzXqn_>yGmMXxwŰ@_Ob!bIt;Ted/u:6Y2gq݋\ע2F;; pMeXx8OB5w%WRٍE&EDS`Ǝ%IJ.q&DzwAi!ٷ)&1e"l{0ZuH:1x%]*(w\$|dB2?BdnpXkanߥFrI\:wc&gN$L{By7twC3%}`/O!Q̹×W0Nve6 ):Bc9t̲yNjYe*cU='X`O5)r+dm೻8x(ߤ:x ]8圩jAQnaw֛.,^edk@be &fp[ܟsU͝r{nȪwb9UL.`Πq+;Φ}ل5=4Onb8IsyUs^f^>ekZVj|&O3!;Bw}ь0Q'j"5,ܔ#-q&'2ڋ ZCe윊LTx3&cu_ҭNxNg x)\CJZ=ޭ~TwY0&IT$A_+;MRtҋ+SWۃiqPfһ9gMƤf@MuP{O[$pIapf,}]jSXF6|ȩ@3S;jjW,#4kx#[SIn7,3.d(5N:i6ܣ$njh![ _K iFn;O&x$M##d4W8oVlދG>[B,DA9M*w`Үyc(GtD1y ItEG?l`>O1Q<1z8><)N`pc++p#L#巸>a vԍ[,+߸fe.lY 9^> vU'2/^C]l>IG9F= PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!Zxl/workbook.xmlPK-!PZg S xl/styles.xmlPK-!Ivj 1xl/theme/theme1.xmlPK-!10wxl/worksheets/sheet1.xmlPK-!?PNydocProps/core.xmlPK-!e{<docProps/app.xmlPK >ooxml/tools/languages/Libro1-spanisch-es.xlsx000664 000765 000024 00000017262 14607757315 021732 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~M;xl/workbook.xmlT]o }xO0)U154UU>c %Ѵk{bϽ ͹T諰N`: 0LCw3g:chp&}.>{sD] !dnh*a'7dB{ e—A0!%w  璋u)@PCJc] )+K%ŨA hGt)5~P+/ 4ΥOU'V6YF9ɤYmղ vi@Ŋ{2Zd@Vya5be zث€;A|li _l/PmUɣ7һ+ٵ!2 [tӸi')NMRg1(@xj7e zYPxP|bS« mCvDu|fnXs)مfLq0ڃpNGqym-Yt>ae(hlFA4Y4 hnz/G)`,GxZDd:uT}դ+PK!!3 xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-Es| CDHNPR I'|Jy'7Z SxJ:koq縉$|*p'ZrX^ o3.QS@oʵJQN0MԎAM = ̑*&Li$ӓFȕ3N10ӔC :AkWx/bj%72\.0=9x3iFaoLmac3N_}߾O>ͦ>67>R+.\?O<ڻ1MDX~r,^NbcHt{TUo0zu},^_>pl=RQ7rz\xpSeyxL7wN+1ésoޥ!.Lw)auɘ;Tv|sx8z@N]$l <Ə sx/N|*8a}F H h8%Rdn X0U"'>s9'' 4mR;\!ӝO= Wۤ"A/Kub3L|,î]A[Ν> 3<%{cA/F߈U/n`7WsJ$A٦*="sÞ9Y4b[u'uRm69(/^ܖJ.wb]Yu%}e%Ȑbaߌ1s&(f-8/DjĖ^i0@a; M[+{0PRg+pve/;Nmκj._˗e-sY޾^K-S/P]Iv|f#b@7M;$7-E _ ld/5T5ιU%Zp #3lnwZ&|u:U\(*+fT*C7EnC˺6@˾du Dᯌ0+++ZZ:T(n\m^;AfdhAy>qʚ\hw9%:H;W D1J7+ cxγn_dEH+ֻ0z$rXj3KY'h#WE'A& ߺ0Dlÿ ,T,t26H"1tM6pZBZAwLf32Qvح> FZ/!G !ŢfU;pJ%\T3oN)܄mȿsSNUɡlE& nHtcyz v\}Q=gfqf:OM?C޲8D26Բ QsN8,ӊӴ49;uMDc6gzĺ4o.[m~cK %Y E_vl*Z ޫDݰ_J+zX)nԍzuU+^,*NQva?+ ʯ}2I+1\Wk}v f>@HFmԮ{RAUjҠoF~jԀn6RFEja 0>XyF/ƮkPK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!ai;YdocProps/core.xml (N0EHC}YI*JHQi?d=Σ!lXz3wFWGD_`]UHעVV8CL h:C*rmj@RrSb$sIp ̇c^`F|ڦ ;Lt6)k2a1- N'c۶Ico7O/q[q@e.8׶ &yW?z(C|x֨\$,&7IiJ(} 9q͈g@P~PK!Ԝ1!docProps/app.xml (n0 (@V1+rXI{d:&Kfϲlɟ|8uY:+v%>], wX#&>u#L,[T(,H,.+-PNN6޷HŽ'C>:.:_/n!+)k4Pz6:kbϠ#J1msz U!4 y&\+~}k01)ѢCM>d~p `% p1bE! RQil|heco0dtkbZ!?Sa>#xwKp,/H/amEi bSA>M Vo= gxϊ"&o?PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!Y>M;xl/workbook.xmlPK-!!3 4 xl/styles.xmlPK-!MlV  xl/theme/theme1.xmlPK-!4LZl|xl/worksheets/sheet1.xmlPK-!ai;YdocProps/core.xmlPK-!Ԝ1!docProps/app.xmlPK >^ooxml/tools/languages/PaxHeader/Книга1-russisch-ru.xlsx000664 000765 000024 00000000131 14607757315 026552 xustar00alexstaff000000 000000 59 path=ooxml/tools/languages/Книга1-russisch-ru.xlsx 30 mtime=1713364685.160492175 ooxml/tools/languages/Книга1-russisch-ru.xlsx000664 000765 000024 00000017417 14607757315 024620 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~ .V3/F{W ŇJZMQ˖91q@xF:7y&1;/DffKn[R;z2V%bӝԩ9xH'p#p <6w2yI=r{P|b]³ MCfDq/_)ܲblj_13 Iiə`r=4G0FZ0s ;1n2|2$1DrL^ {d& -U׫bv98?Yyق9# ruUPK!X"d  xl/styles.xmlIn0z{EC,6$uR@R[Zl" N]w;]v;87[AH6"D~Qm)O,T*nroD+ISe_%8^Sj IMTJ baWhJJ GA0a("nB l8(f+4YrZ#R:먿1=DB+*{P_U+SSHHaQxTJZ t'zv+'_YR(4l5tImwΖ9cEܞ[m k * FnS`Agn0bFN`9,P7m@zi1;^i xpo.̒%1F)K8,lvU.,)Y)Is&NA9v5zĮ+$"L1t B?Gik?cQ]=q @?=BUu(2np`1˄upDr{s-V@u޳;eD+p2Pf0f)r13]\7 otJco^<:/4󯃎~A?7O@ ם-ŃE+U=>8 4јL48"/HaaCC+$ q37PK!:| xl/theme/theme1.xmlYn7;4><׊-ن5v#5ÙnHa pN$]ed/{X/,6WP){I ǖ9.$R7bcuGbb.KZ~Rp2bcL[=!Q2F%/?іp=OjbQ`Klx6a%H$'3{ó>{lnʒFԔ{~/?S _?R+]/?C{}>$1 |f1,a?o&1$P27pl.q[E|.cQlwƝ2<<'S|nn#t蚻+ 藸Tv#lyD)N3vcuKF 6=uqdHDʅI qY P[ٽuum$:bj*KTQLM [ bʼ ᒹaFЯøþKt Ldt#Ϝ6$2HQbe!([~=r5MD=sG,bf :A2m[ęJ):Bc;;,谙k6v%5d窺Os)r+emgwqx(ߤDJ]TzL ")70IY{|]p+~gyོ%7b?oZ 3DP`D"j_bs~i0@d;1I^[*{?q0PRgl*p6˚'0$uQ\T5}U]e.jZNj|&P|ЄP'3nWE82k@Y)GZL~Bdʺ9fL@I+>[.rYu=S $RLѵz[ҩ. Pob1mDaD}9QyzebEaEC_jŕ+UT܃isPUf2*8MΤf@ɽ̀05C]?Uu_U+]Mn77Q˪7ȹ:HT.] aZ>exggiXmjpzmw~;jX֙:)y y`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!]=YdocProps/core.xml (N0EHC}T$uE%$@,{Fنh* {̝A6XWk#(ŵUrP!ͧmz$!JgC̜Gvق>z2m>FO_5Uw+%8Y;^Ü߆;jws^> t}R^t4% 68%(2|oPK!4docProps/app.xml (Mn0zrZA1(Y4;OET" r"ݵ1e$!d<8ukØwr3n["K;,oߨU#YL[T(,LҌێ;-q+}UYWܷH+< GC1:.:_қ/mBc RX}e7`#`Ts>Z\i\]AP為F׷V-:4c^ȾAD 7!Q~~~+ɂ8S4|pp* Fn"n,5V+ |J<0)jҷܞum+ |iQkX'7~,k^flze nebk'5%[?PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!zP9Jxl/workbook.xmlPK-!X"d  C xl/styles.xmlPK-!:| 'xl/theme/theme1.xmlPK-!4LZlxl/worksheets/sheet1.xmlPK-!]=YvdocProps/core.xmlPK-!4docProps/app.xmlPK >ooxml/tools/languages/PaxHeader/الكتاب1-arabisch-ar.xlsx000664 000765 000024 00000000133 14607757315 027130 xustar00alexstaff000000 000000 61 path=ooxml/tools/languages/الكتاب1-arabisch-ar.xlsx 30 mtime=1713364685.160843719 ooxml/tools/languages/الكتاب1-arabisch-ar.xlsx000664 000765 000024 00000017402 14607757315 025166 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~ ΕV3/F{W ĻJZMQ˖m%91v@xF:7y$1{_x͖ݶv'd^7K:D[SsNFp <42yI=r{P|b]£ MCfDq/w?}p˱$L: P7gS:+kĸ.F]q0zj0Ei؛Dj8^-WÏYXԅe|O̕.o9B YW5J~PK!.¸ xl/styles.xml[k0Bl7N`4M n ^[NDu 9;%qFbIOsSzH\ G!FLjᯏE0:**b>2R뎂w9e3sn Ė;&{OfK0ZYH H YDRt{ - #Y.J &DM45pCkzuVD5/ks2'<6R0Z+gQAE/ ]yjg*c _#oQTnǍTxSM%؝Qc!gj7OJF3nj*`qTKicc'0O7TP <v ΏNAtޕr;%b+[Hd!}aa ӎ-<LƢ~H ѧ둯 -'zp\A00gis"Q{\ xl/theme/theme1.xmlY[7~/? 6M Y'%Z[(Iލ @/B[R[Jio4ρ6=Ҍ=ZuSҲkX,+X.-&!#}"!ᇖ_~"ʄ k _& +zN>=XMaPkk~_V4F[g 2J:tjk6CAh5(Ňklkkz ~ (IХV.WLv›a0W29 a]j K\mP@$I< Aw%x;dAP *A 'tDF ,kCO8ɖGO?|r'h(ݓ\g|Lnʑ8GhnvNEz*1úO}yi\V]ԅ|ơK%StwVu?tKaLfQuQ_B^d^٩XtXPꗡZFq 0mxEAAfc ΩFz3Pb/3 tSٺqyjuiB-#t00,;͖iƺ2Obr3wkE"'&&S;nj*#4kx#[SwIn7aD:\N1{-_- 4m+W[@+qt;x2#iQNSp$½:XX/+r1w`h׼9#:Pvd5O+Oٚ.<Oݗsig*t; CԲ*nN-rk.yJ}0-2MYNÊQ۴S, O6muF8='?ȝZu@,Jܼf8(S˅wihL0]%l+0f6W亞,iPGLz̢&Z/rT(szT u la8>&28٭0[ٶ/+`g'Ŭd,n 50UWZLz(ŅV-h-PK!<=YdocProps/core.xml (N0EHC}b/UVJA v=m#bDz iT,=Ι;#/uhBPZԲԇ x"繖5d mۛT&j O6`} . $0:zoNAq⾶l3BVX{[`lF"RHi  h0M(z)*لS8OM$ͼS{|VKJS)}mO%Ȼ๮NBǾ(b똬c((atfv6X_PW,' OgȿPK!XY-docProps/app.xml (n0HC{ق*r\-*Vmƙl,;.ǪHđ#o f '.|??ό8U6i D]泔%ύfz K"*+dl˗/* I^pu 3J;>T [h4M8\I}dͽf_o^)>+CN|Z&s 6T+ZYXR Y(A𧀸ՏoLR4h@I4_h,"`kT0!e3ضdjtw }^p9mjr>q\ L8?+)0?cݵ?SaYj8X덿P>u䴓qI Ym!;xr~6K_IL;PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!3Pxl/workbook.xmlPK-!.¸ I xl/styles.xmlPK-!z>\ xl/theme/theme1.xmlPK-!҇O~xl/worksheets/sheet1.xmlPK-!<=YTdocProps/core.xmlPK-!XY-docProps/app.xmlPK >ooxml/tools/languages/Skoroszyt1-polnisch-pl.xlsx000664 000765 000024 00000017301 14607757315 022717 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~c %]k{bϽ KWa4:t`$47? f9tƔ"O\x_ń8^ؒy푸 B_*Lj!-&%Rh߁X]!+ף-p%pSVqJǻ6оq +RrkHW_J;"JdjG[Ǘ;\]*F60)7C{p#n4+װ6OΧ Apgi0v4Dy8Ep6v1RNm9e3w$Ė{&OfG0ZYH HKYDRx< N- #Y.vJ DM43pCkzqV D5/K :R0Z+gQAE/ ]yj'*c _#oQTn |k7Trqݹ=5֢ojs֟"k .YiE!O! U$)(NFH{an>/1Ly*X@ỽ>w4iN+*+<wJ&:B* >[xֱߌEMđg#_NSA#?Hj\8Bmx@,*Vӣp?%Z ҮEd2fָ{ #:៷mp5dj.a:}wmio. JAX"( I$ $׳6)oGHhx;(Y:.jՐ˿8ALˣPK!EPKc xl/theme/theme1.xmlY͏@]׌>}zc "GDihqIZ ΩҢ zcF}4zu{ݏ^$ !)O;AN%@$)MxTjH*N1)k"7wIBȧwXA,'0$)6" ż<&\T4@)N@1W J =6 ̔*&L)H.ybdl颪r-Ls:L;cBaNP1A2>ȅ#kɍ_. L53m' (lt ]ܰ9l [}'XpfY9e_=A-8x;Ѩ^t|k~|MGŌt%jn!3v\yl&bSuE%9#i<ÊHd'}虠cȿ%NJ2 ,> ؒArgHDХ@k`AW߿~ן}7F#wӹ-߾_~_ԗƿoϟR+.\O߾7__}̆iB$zD.=3q=q#cQ=T|ׅ̇xܱ4+E=3?x9quC=*'+s}:@ԧS$% >1.LO(auɘ9Tv|s 8z@]$l <Ə sxN|*8aÏ}F H h8%Rd X0u" #̹E?k3Mc\@bt•~!8gP\o[?r%ѿ' w0LW$vfGo5wR/c=t|^ V9$z\)f"tR{חg}AԝԅSKdaQ( !_Ny,A}ZOb]Yu-}dȵe7c̜ c(0|t "N }Wnn" P9NB+KeO){ <~?G) }òfW dn۪&W5m-s[2R T6EǴ~:?3ةZ3r$MG‹t9eۆ2y62Hp;/CT5йU%Zr #3ln~Z%|=U<)*+vU*C7E/otG1@^k2׈LjfSF݈m-~MӶQ7o ~2J8eMtupn4 J{EֽӫR"ak1i7o2"yPl}Xk. ,4\L̠q _%/_NfD߇YBqpC:$TM:^6Xj8V!bkҌA&(;ֈt qW#`-WxzJ`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!7l;YdocProps/core.xml (]K0C}d@eW+w!9ۂIۿ7V捐ssH>&%A hn=כt1JtEm΍Gg, '}m!cϢCGqgb!^[k 00H'pMC tfx8|+3dLc9[AG/'c۶YcnQS]q@U!x`\U5̇mN=z$ɇޠjA*%^Ք&]!. |/PK!adocProps/app.xml (n0 n(@VQzXI{d:*KI~Nn$'.J,( X7Q PT(nOjcL`hJJ-t,V;C潌M,G{ . GPC}Άbr\u>NK;k_cCţ.PĶ~)܂=dG']*9Ok|/06eԪUb.нE `Mv&mS2>!e}_N17cU/.K#٘L]qG v8 QױK&X8G?]xmEmM^x&ք=o= mooxml/tools/languages/PaxHeader/Sešit1-tschechisch-cs.xlsx000664 000765 000024 00000000130 14607757315 024746 xustar00alexstaff000000 000000 58 path=ooxml/tools/languages/Sešit1-tschechisch-cs.xlsx 30 mtime=1713364685.159374959 ooxml/tools/languages/Sešit1-tschechisch-cs.xlsx000664 000765 000024 00000017272 14607757315 023014 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~$qi0y3 oҏ'c{cKp}x!J憦vrcK!*+X !|HR2q`<\ K}bbw\VjMY^*/-(F%m,+}WХ8!@+4 vE.xdGɢ0RM&<Мo TKJ'V[N&pܜR +=hSի^Ak-hdKe1:TځP7[?:Z;iӊӍVTxW:iL/vS#t7U|SpvnCZ~55S>>]| d#4OAEshV9 ςMtDb5 ww^B>ZD[h`Pb0~x7[^q0 ` Q0i0Hx9/"hO^z$G%s%\su I_ LPK! V xl/theme/theme1.xmlY͋7? sw5%l$dQV32%9R(Bo=@ $'#$lJZv G~ztҽzG ’_P=ؘ$Ӗk8(4|OHe n ,K۟~rmDlI9*f8&H#ޘ+R#^bP$9O&d>)}gv|XV]ʽ#D[>3fC|OEB-"ʄ k _& +zN>=XMaPkk~_V4F[g 2J:tjk6CAh5(Ňklkkz ~ (IХV.WLq›a0W29 a]j K\]P@$I< Aw%xdAP *A 'tDF ,kCO8ɖųg>}=K6Vedjʽ뿿^=&$^??^VŷO^>}⻯C{>$15|d1,a?>৓FX(}Yk D]]x˸w-[#>1({N\UsΓ{r>7q7:rE|J\*̼AQ"'Xz7vcuwGF 6uqdHDʅvH qY P[ٻuul$l D1x%]*(w\F/HO1e^p\^#WaaߣFrI]:wc&gNI!(n01{gJ66VL\MQ̹#1NvL9qfGg>R{ccg :lf<7J]uٹ,u%J}&J9Ql˚'70$u^՜W5ٴkZ漖q}}Z&/_ɻ<olLrA]o4 vIZf & 7Hxω#4PY7;"S=ތ aJ't^ WХ)Vϻw+:]֥J4FFTFԗWv&V4V4eQ\L[E^=xQoavX)m&/sLjf #Tn\Z]joi#l#4E8N~n!SX܌zCZ n4[~­Z:5Aօ]F]eƅ!פAL$%qW_eM4h ָ&f2LHa7FG`+jw+I6pGcM)ʁc"⠜zsL&lEdy825t"(&pM+sSfp }SGAi:5dyêJ[SKDuo8u@0L'LSӰl6  ~[NOr'V˺R'27o] Ω:pg} dJEɬFoޜn%J_AB; ~X.:p(.u0"kˆEp}q_X57T7Gt*f٩:B[zn7uFs48hWA(n!fT*nܫPK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!4-;YdocProps/core.xml (N0EHC}T$uE%$@,{Fنh*{̝A6XWk#(ŵUrP!ͧmz$!JgC̜Gvق>z2m>FO_5Uw+%8Y;^Ü߆;jws^> t}R^t4 68?bF< }PK!;KdocProps/app.xml (n0 v(@V1zhI{ge:fK~&NSo$'6Y1Y \"Cg|iݾO?E\ wX߿M#YL[T(L҂eJc iK_U7-:y~-@J,/PLjZz3]X_!4+5'_Q:%m9h^^JS5G J aXlLZuАYx"{X!:16%c܄DQ?DMc獃9ROH.#Äz›Fwkp= )--򼨶5D,yE wd]cQyr^W9謦PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!x2;xl/workbook.xmlPK-!磬 4 xl/styles.xmlPK-! V  xl/theme/theme1.xmlPK-!4LZlxl/worksheets/sheet1.xmlPK-!4-;Y4docProps/core.xmlPK-!;KdocProps/app.xmlPK >fooxml/tools/languages/PaxHeader/工作簿1-chinesisch-zh.xlsx000664 000765 000024 00000000132 14607757315 026545 xustar00alexstaff000000 000000 60 path=ooxml/tools/languages/工作簿1-chinesisch-zh.xlsx 30 mtime=1713364685.161213847 ooxml/tools/languages/工作簿1-chinesisch-zh.xlsx000664 000765 000024 00000017440 14607757315 024606 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~fNxl/workbook.xmlTˎ0#]5MJF8UC[6,V H|7 7Ͻk.Boun$R"|yc< SFg1{E8x&r溦VRcs!; +X2!|HC3q0O0i*X^B <2Y-O˙ݗETҟjPr>]ﴱlZdA[LE"ҀPPgTⶑx*H1W"Bse1/UP:$~ʢDT~&q8j'T^XͼXAß^5"3oJi4E%[(\f+c1S NhLqppB{qyi-שѿr>.`ޠOθ ;2\ Fj>mOۗ*["K-TV\iY$ /%bCWQoZHW Bm1.&ghMH8-Բ6'Ⱥ%,<"㐢$cxRr'Lb y?xטACbi)TBZ̉;qVcNY+ qH=vsjeOi4Q<DW-d.pskQ 0OWRUpGPugSFjQto#\IcbiEZ lzNtJإwĎ\TEHS3hQ.ׯ|^Sk9HN={]30AQfpcCEcǺ-Y:|Q~M*0ݩ7Z"CGv414xx1[? S<"?KK?-b٧~yviwa’k;Huv_m(.Cg$|D_OԟNF_$QI bO }DPN} $PH";4oPK!^ xl/theme/theme1.xmlY[7~/? 6o5d7 Y'Z[(Iލ >BJ_PJ -4/ݒˏfr]s>9ΝzG ’_P=ؘ$Ӗs8(4|OHe n ,w~"ڒB-?rU, #qpMG>-9:1-VJZ1F$ŠdBF/|>?{9GDj`D[;>,+X.-!#}"!ዖ_?~qbmeBTn5'Ƈ='& 0W5u\ޯk+}F#Xij^{^l 5ۡAh5(Ňklkkz ~ (IХV.WLq›a0W29 a]j K\mP@$I< A2w%xdAP *A o?鈢- ieX"ֆ=q2-2h GNxr?<]6Vedj_txa|ѓ}zXqǟ?o89:0Cc] bKEۡ/# xu oq`e~8fp1a+j.y2uO&BG(ܟπ^Ke7–)J$KO}1v}B,gM>:8]2$V"B;$,\B-:VG6㇘Zn.CSHF.#|dBB2?BdqX+0El#$.1c3$LRyיtC3%}`+&@IyoKqA'Xc]ۜ83Z1Ehw]6|}9Vĺ\U u:Ea> -N%14_[ Jѡ J |q:Fr7i!R ny//A sf5A0CnA .U-6wMM #މIT;e9ǭUJMsل5=4Oc8I9뼪9j}Ui/2y-zz-L^@ewyt'J]>h(ݓ\g|Lnʑ8Ghn`NEz*1úO}yi\V]ԅ|ơK%StwVu?tKaLfQuQ_Bf^ٙXtXPꗡZFq 0mxEAAfc ΙFz3Pb/3 tSٺqyjui=G-#t00,;͖Yƺ2Obr3kE"&&S;nj+#4kx#[S}InaD:\N1{-_- 4m+WX@+oqt;x2#iQNSp~_$½:7XX/+r1w`h׼9#:Pvd5O+Oٚ.<Ogsig*t; CԲ*nN-rk.yJ<}0-2MYNÊQ۴3, O6muF8='?ȝZu@,JܼfysNZR[(5~!B#lW 0aT" ^[ #/j}⺿y#@:wkA j{PzF٭u Za9{GݠojnJFP*vPo7A^VS|vmPK!1꓁xl/worksheets/sheet1.xmln0 m N1(C3-ӶI$i޾r鍤ďO^W/EUkRϷg?* OǢ֟?v7eDd%X=21ŎT0KO9SRF͗0\2A},ސ|d]*GZțm: ZgV.HZ/s.=gTJp̗iL0ɮ2fpWC-c';jҾ%L$TO$v! ^: ;GB7,ы7 4Yy*$yDH͔`{ȃEyWWߵl39zUK(Gљz?PK!&=YdocProps/core.xml (N0HC{b-PYI*JHqm;mH8? A;ή AhQR3Z%Z֐8ʯRa-<ڀ%(cda;q]:* Y5g.c颠9c`nB<_|PK!3isdocProps/app.xml (n0 n(@V1zXI{d:fKɞe v۬@cNn$'b6Y1Y 1"Cg|iݶ7'"K;,Я_U#YL[T(,LҌeJc iJ_U7w-:y~&qGJ,OP״K}``ޅXįD|E5ȧ:{3(9mS̹Fs-u4Uk .yIsA]![I1K+/Td!aVG ط7!Q?!NcVχ{cӧj< # qqx5O{mg}K  O=.u KuˌMom|[/vfNxl/workbook.xmlPK-!-',} G xl/styles.xmlPK-!^ >xl/theme/theme1.xmlPK-!1꓁xl/worksheets/sheet1.xmlPK-!&=YdocProps/core.xmlPK-!3isdocProps/app.xmlPK >ooxml/tools/languages/Cartel1-italienisch-it.xlsx000664 000765 000024 00000017260 14607757315 022564 0ustar00alexstaff000000 000000 PK!SN[Content_Types].xml (N0EHC-ݲ@5(`Ib/y=@j7bs=36kؘXJbSxfVK)< uV"4>Z7"z)[уKRz 6@#W&9`ϻU1ѵLTE)N9;l01HO>4Q+(2wiɆ%?-27AzeCHr+;>(2~YD[2geϢԯyir#~> $1i8PD R"PK!U0#L _rels/.rels (MO0 HݐBKwAH!T~I$ݿ'TG~=xl/workbook.xmlT]o }xO0eŮj``/]s-/|=\XܜK #ɤ>$qw7a<SF_7ǽ1G% q%sCS ;%q,sT$ )ԸC{0LK.ֆץоB1BVG+{Jfu5বb/ۃ6>q +RrkHW_J;"JdjG[AIC5b۸%L6-Dgs:ˆkk$+F\&;i0f4Dy8Epf<ݬ7q=Yqy9# bUPK! xl/styles.xmlT[k0~?8K451h{Ul9HJlȗĥcuwsSzJ\ G!FLjE:**b>2R뎂s ޹fE-LR{OT#1V_a8'r{,DRxhRˆ:傻c,W; F3Z6xЙ^4](uK, -H:(!a'V΢R'zT*/o@OT%$OK-A Fޢd5|k7Trqݽ?P-Es| CDHNPR I'|Jy'7Z SxJ:koq縉$|*p'ZrX^ o3.QS@oʵJQN0MԎAM)= ̑*&Li$ӓFȕ3N10ӔC :AkWx/bj%72\.0=9x3iFaoLmac3N_}߾O>ͦ>67>R+.\?O<ڻ1MDX~r,^NbcHt{TUo0zu},^_>pl=RQ7rz\xpSeyxL7wN+1ésoޥ!.Lw)auɘ;Tv|sx8z@N]$l <Ə sx/N|*8a}F H h8%Rdn X0U"'>s9'' 4mR;\!ӝO= Wۤ"A/Kub3L|,î]A[Ν> 3<%{cA/F߈U/n`7WsJ$A٦*="sÞ9Y4b[u'uRm69(/^ܖJ.wb]Yu%}e%Ȑbaߌ1s&(f-8/DjĖ^i0@a; M[+{0PRg+pve/;Nmκj._˗e-sY޾^K-S/P]Iv|f#b@7M;$7-E _ ld/5T5ιU%Zp #3lnwZ&|u:U\(*+fT*C7EnC˺6@˾du Dᯌ0+++ZZ:T(n\m^;AfdhAy>qʚ\hw9%:H;W D1J7+ cxγn_dEH+ֻ0z$rXj3KY'h#WE'A& ߺ0Dlÿ ,T,t26H"1tM6pZBZAwLf32Qvح> FZ/!G !ŢfU;pJ%\T3oN)܄mȿsSNUɡlE& nHtcyz v\}Q=gfqf:OM?C޲8D26Բ QsN8,ӊӴ49;uMDc6gzĺ4o.[m~cK %Y E_vl*Z ޫDݰ_J+zX)nԍzuU+^,*NQva?+ ʯ}2I+1\Wk}v f>@HFmԮ{RAUjҠoF~jԀn6RFEja 0>XyF/ƮkPK!4LZlxl/worksheets/sheet1.xmlMO0 H(-Bu1Mp@B|m%qx{V ]vsY~0eGL+*Bm&ZeX>`ַ6s[naL-S0JP MpQE:Au,F! =̟[_ZX JV.H J/`M8scZVNuڬ9_Wh+ّV%Ѷ(Yjz7Iv_hiYWkVo5034q1+uI42$bLI,W5a?ZPK!$ g<YdocProps/core.xml (N0EHC}-Tik?d=Σ!lXz3wFGYG_`Ъ@Y\}^MDTqZk:C*g0mj pQ )G){C0v$8TwJKSOq HDi>m8PΒ x=Xl蔉S 2a!Y/iw1B mUc[1@ea׶O j6y'ߝe=p= x>Yy?TTl8[Tܬ|ގ rb5!e/>C PK!v̒!docProps/app.xml (n0 (@V1-zXI{d:&Kɞ~Nn$'Jzc.R.l\ؗexUL*1`)坹7)valr)nT ,VZ N^źv}k1*[Pauٝ Mh;v l-ͳ)Xx܈EռM3[rt4VTo-x\SϨGA?! ۀKV=ZIdx%O8 mS2ƾ˔c{'*'<1EkRp~`88o &9w<{9&hNjOv,./.Rϋz@ŠSA?>L =V= gx~Y._wVo?PK-!SN[Content_Types].xmlPK-!U0#L _rels/.relsPK-!p-xl/_rels/workbook.xml.relsPK-!ae>=xl/workbook.xmlPK-! 6 xl/styles.xmlPK-! V  xl/theme/theme1.xmlPK-!4LZlxl/worksheets/sheet1.xmlPK-!$ g<Y!docProps/core.xmlPK-!v̒!docProps/app.xmlPK >\ooxml/tools/debugging/builddiff.sh000664 000765 000024 00000002642 14607757315 017714 0ustar00alexstaff000000 000000 #!/bin/sh mkdir -p /Users/alex/src/ooxml/t rm -fr /Users/alex/src/ooxml/t/* cd /Users/alex/src/ooxml/t unzip -q /Users/alex/src/ooxml/examples/ok/export${1}.xlsx xmllint --format [Content_Types].xml > 0Content_Types.xml xmllint --format xl/workbook.xml > 0workbook.xml xmllint --format xl/_rels/workbook.xml.rels > 0workbook.xml.rels xmllint --format docProps/core.xml > 0core.xml xmllint --format xl/worksheets/sheet1.xml > 0sheet1.xml xmllint --format xl/theme/theme1.xml > 0theme1.xml xmllint --format _rels/.rels > 0rels xmllint --format docProps/app.xml > 0app.xml xmllint --format xl/sharedStrings.xml > 0sharedStrings.xml rm -fr [Content_Types].xml _rels docProps xl unzip -q /Users/alex/src/ooxml/examples/export${1}.xlsx xmllint --format [Content_Types].xml > 1Content_Types.xml xmllint --format xl/workbook.xml > 1workbook.xml xmllint --format xl/_rels/workbook.xml.rels > 1workbook.xml.rels xmllint --format docProps/core.xml > 1core.xml xmllint --format xl/worksheets/sheet1.xml > 1sheet1.xml xmllint --format xl/theme/theme1.xml > 1theme1.xml xmllint --format _rels/.rels > 1rels xmllint --format docProps/app.xml > 1app.xml xmllint --format xl/sharedStrings.xml > 1sharedStrings.xml rm -fr [Content_Types].xml _rels docProps xl > diff.txt for i in Content_Types.xml workbook.xml workbook.xml.rels core.xml sheet1.xml theme1.xml rels app.xml sharedStrings.xml do echo === $i === >> diff.txt diff 0$i 1$i >> diff.txt done