diff options
author | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-11-19 03:05:16 +0000 |
---|---|---|
committer | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-11-19 03:05:16 +0000 |
commit | aee3755b6d780c3261bdec2aef4d517bc7c7b148 (patch) | |
tree | 71dd1e301aab7780c23db9dd62de0ce7ce85a1d8 /configure | |
parent | a0a93b21ebfbf51e3926a6819b46632703c33d90 (diff) | |
download | hercules-aee3755b6d780c3261bdec2aef4d517bc7c7b148.tar.gz hercules-aee3755b6d780c3261bdec2aef4d517bc7c7b148.tar.bz2 hercules-aee3755b6d780c3261bdec2aef4d517bc7c7b148.tar.xz hercules-aee3755b6d780c3261bdec2aef4d517bc7c7b148.zip |
* Nullpo's disabled on release builds.
* Added timestamps to the log of memory leaks.
* Moved definition of __func__ to cbasetypes.h.
* Configure script updated:
- added option to select the memory manager
- added option to enable MAPREGSQL
- added option to enable DEBUG
* common's Makefile deleting svnversion.h on 'clean' target.
(run ./configure again to update your Makefile)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11760 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 521 |
1 files changed, 520 insertions, 1 deletions
@@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 11695. +# From configure.in Revision: 11760. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61. # @@ -1249,6 +1249,16 @@ if test -n "$ac_init_help"; then cat <<\_ACEOF +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-manager=ARG memory managers: no, builtin, memwatch, dmalloc, + gcollect, bcheck (defaults to builtin) + --enable-mapregsql Makes map-wide script variables be saved to SQL + instead of TXT files in the sql map-server. (defauts + to no) + --enable-debug Compiles in debug mode. (defauts to no) + Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) @@ -1707,6 +1717,76 @@ ac_config_files="$ac_config_files src/map/Makefile src/plugins/Makefile src/tool # +# Memory managers +# +# Check whether --enable-manager was given. +if test "${enable_manager+set}" = set; then + enableval=$enable_manager; + enable_manager="$enableval" + case $enableval in + "no");; + "builtin");; + "memwatch");; + "dmalloc");; + "gcollect");; + "bcheck");; + *) { { echo "$as_me:$LINENO: error: unknown memory manager '$enable_manager'... stopping" >&5 +echo "$as_me: error: unknown memory manager '$enable_manager'... stopping" >&2;} + { (exit 1); exit 1; }; };; + esac + +else + enable_manager="builtin" + +fi + + + +# +# mapregsql +# +# Check whether --enable-mapregsql was given. +if test "${enable_mapregsql+set}" = set; then + enableval=$enable_mapregsql; + enable_mapregsql="$enableval" + case $enableval in + no);; + yes);; + *) { { echo "$as_me:$LINENO: error: invalid argument --enable-mapregsql=$enable_mapregsql... stopping" >&5 +echo "$as_me: error: invalid argument --enable-mapregsql=$enable_mapregsql... stopping" >&2;} + { (exit 1); exit 1; }; };; + esac + +else + enable_mapregsql="no" + +fi + + + +# +# debug +# +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then + enableval=$enable_debug; + enable_debug="$enableval" + case $enableval in + no);; + yes);; + *) { { echo "$as_me:$LINENO: error: invalid argument --enable-debug=$enable_mapregsql... stopping" >&5 +echo "$as_me: error: invalid argument --enable-debug=$enable_mapregsql... stopping" >&2;} + { (exit 1); exit 1; }; };; + esac + +else + enable_debug="no" + +fi + + + +# # Enable/disable MySql and optionally specify the path (optional library) # @@ -3837,6 +3917,445 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +case $enableval in + "no") + CFLAGS="$CFLAGS -DNO_MEMMGR" + ;; + "builtin") + # enabled by default + ;; + "memwatch") + CFLAGS="$CFLAGS -DMEMWATCH" + if test "${ac_cv_header_memwatch_h+set}" = set; then + { echo "$as_me:$LINENO: checking for memwatch.h" >&5 +echo $ECHO_N "checking for memwatch.h... $ECHO_C" >&6; } +if test "${ac_cv_header_memwatch_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_memwatch_h" >&5 +echo "${ECHO_T}$ac_cv_header_memwatch_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking memwatch.h usability" >&5 +echo $ECHO_N "checking memwatch.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <memwatch.h> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking memwatch.h presence" >&5 +echo $ECHO_N "checking memwatch.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <memwatch.h> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: memwatch.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: memwatch.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: memwatch.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: memwatch.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: memwatch.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: memwatch.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: memwatch.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: memwatch.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: memwatch.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: memwatch.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: memwatch.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: memwatch.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: memwatch.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: memwatch.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: memwatch.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: memwatch.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for memwatch.h" >&5 +echo $ECHO_N "checking for memwatch.h... $ECHO_C" >&6; } +if test "${ac_cv_header_memwatch_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_memwatch_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_memwatch_h" >&5 +echo "${ECHO_T}$ac_cv_header_memwatch_h" >&6; } + +fi +if test $ac_cv_header_memwatch_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: memwatch header not found... stopping" >&5 +echo "$as_me: error: memwatch header not found... stopping" >&2;} + { (exit 1); exit 1; }; } +fi + + + ;; + "dmalloc") + CFLAGS="$CFLAGS -DDMALLOC -DDMALLOC_FUNC_CHECK" + LIBS="$LIBS -ldmalloc" + if test "${ac_cv_header_dmalloc_h+set}" = set; then + { echo "$as_me:$LINENO: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6; } +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking dmalloc.h usability" >&5 +echo $ECHO_N "checking dmalloc.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <dmalloc.h> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking dmalloc.h presence" >&5 +echo $ECHO_N "checking dmalloc.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <dmalloc.h> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dmalloc.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dmalloc.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dmalloc.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dmalloc.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dmalloc.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dmalloc.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dmalloc.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dmalloc.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dmalloc.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dmalloc.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6; } +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dmalloc_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6; } + +fi +if test $ac_cv_header_dmalloc_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: dmalloc header not found... stopping" >&5 +echo "$as_me: error: dmalloc header not found... stopping" >&2;} + { (exit 1); exit 1; }; } +fi + + + ;; + "gcollect") + CFLAGS="$CFLAGS -DGCOLLECT" + LIBS="$LIBS -lgc" + if test "${ac_cv_header_gc_h+set}" = set; then + { echo "$as_me:$LINENO: checking for gc.h" >&5 +echo $ECHO_N "checking for gc.h... $ECHO_C" >&6; } +if test "${ac_cv_header_gc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_gc_h" >&5 +echo "${ECHO_T}$ac_cv_header_gc_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking gc.h usability" >&5 +echo $ECHO_N "checking gc.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <gc.h> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking gc.h presence" >&5 +echo $ECHO_N "checking gc.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <gc.h> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: gc.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: gc.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: gc.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: gc.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: gc.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: gc.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: gc.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: gc.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: gc.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: gc.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: gc.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: gc.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: gc.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: gc.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: gc.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: gc.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for gc.h" >&5 +echo $ECHO_N "checking for gc.h... $ECHO_C" >&6; } +if test "${ac_cv_header_gc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_gc_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_gc_h" >&5 +echo "${ECHO_T}$ac_cv_header_gc_h" >&6; } + +fi +if test $ac_cv_header_gc_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: gcollect header not found... stopping" >&5 +echo "$as_me: error: gcollect header not found... stopping" >&2;} + { (exit 1); exit 1; }; } +fi + + + ;; + "bcheck") + CFLAGS="$CFLAGS -DBCHECK" + ;; +esac + + + +if test "$enable_mapregsql" = "yes" ; then + CFLAGS="$CFLAGS -DMAPREGSQL" +fi + + + +if test "$enable_debug" = "yes" ; then + CFLAGS="$CFLAGS -DDEBUG" +fi + + + MYSQL_VERSION="" MYSQL_CFLAGS="" MYSQL_LIBS="" |