mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-06 16:40:47 +00:00
MFV r342175:
Update sqlite3-3.23.1 --> sqlite3-3.26.0 (3260000) MFC after: 3 days Security: https://blade.tencent.com/magellan/index_en.html No known CVE was apparently registered.
This commit is contained in:
commit
076b94438c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=342183
|
@ -1,6 +1,5 @@
|
||||||
|
|
||||||
AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ @ZLIB_FLAGS@ @SESSION_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE
|
AM_CFLAGS = @BUILD_CFLAGS@
|
||||||
|
|
||||||
lib_LTLIBRARIES = libsqlite3.la
|
lib_LTLIBRARIES = libsqlite3.la
|
||||||
libsqlite3_la_SOURCES = sqlite3.c
|
libsqlite3_la_SOURCES = sqlite3.c
|
||||||
libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8
|
libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8
|
||||||
|
@ -14,7 +13,7 @@ sqlite3_CFLAGS = $(AM_CFLAGS) -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_D
|
||||||
|
|
||||||
include_HEADERS = sqlite3.h sqlite3ext.h
|
include_HEADERS = sqlite3.h sqlite3ext.h
|
||||||
|
|
||||||
EXTRA_DIST = sqlite3.1 tea Makefile.msc sqlite3.rc README.txt Replace.cs
|
EXTRA_DIST = sqlite3.1 tea Makefile.msc sqlite3.rc README.txt Replace.cs Makefile.fallback
|
||||||
pkgconfigdir = ${libdir}/pkgconfig
|
pkgconfigdir = ${libdir}/pkgconfig
|
||||||
pkgconfig_DATA = sqlite3.pc
|
pkgconfig_DATA = sqlite3.pc
|
||||||
|
|
||||||
|
|
19
contrib/sqlite3/Makefile.fallback
Normal file
19
contrib/sqlite3/Makefile.fallback
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/make
|
||||||
|
#
|
||||||
|
# If the configure script does not work, then this Makefile is available
|
||||||
|
# as a backup. Manually configure the variables below.
|
||||||
|
#
|
||||||
|
# Note: This makefile works out-of-the-box on MacOS 10.2 (Jaguar)
|
||||||
|
#
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -O0 -I.
|
||||||
|
LIBS = -lz
|
||||||
|
COPTS += -D_BSD_SOURCE
|
||||||
|
COPTS += -DSQLITE_ENABLE_LOCKING_STYLE=0
|
||||||
|
COPTS += -DSQLITE_THREADSAFE=0
|
||||||
|
COPTS += -DSQLITE_OMIT_LOAD_EXTENSION
|
||||||
|
COPTS += -DSQLITE_WITHOUT_ZONEMALLOC
|
||||||
|
COPTS += -DSQLITE_ENABLE_RTREE
|
||||||
|
|
||||||
|
sqlite3: shell.c sqlite3.c
|
||||||
|
$(CC) $(CFLAGS) $(COPTS) -o sqlite3 shell.c sqlite3.c $(LIBS)
|
|
@ -260,7 +260,6 @@ DEPDIR = @DEPDIR@
|
||||||
DLLTOOL = @DLLTOOL@
|
DLLTOOL = @DLLTOOL@
|
||||||
DSYMUTIL = @DSYMUTIL@
|
DSYMUTIL = @DSYMUTIL@
|
||||||
DUMPBIN = @DUMPBIN@
|
DUMPBIN = @DUMPBIN@
|
||||||
DYNAMIC_EXTENSION_FLAGS = @DYNAMIC_EXTENSION_FLAGS@
|
|
||||||
ECHO_C = @ECHO_C@
|
ECHO_C = @ECHO_C@
|
||||||
ECHO_N = @ECHO_N@
|
ECHO_N = @ECHO_N@
|
||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
|
@ -268,14 +267,12 @@ EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
EXTRA_SHELL_OBJ = @EXTRA_SHELL_OBJ@
|
EXTRA_SHELL_OBJ = @EXTRA_SHELL_OBJ@
|
||||||
FGREP = @FGREP@
|
FGREP = @FGREP@
|
||||||
FTS5_FLAGS = @FTS5_FLAGS@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
JSON1_FLAGS = @JSON1_FLAGS@
|
|
||||||
LD = @LD@
|
LD = @LD@
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
LIBOBJS = @LIBOBJS@
|
LIBOBJS = @LIBOBJS@
|
||||||
|
@ -305,14 +302,11 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
READLINE_LIBS = @READLINE_LIBS@
|
READLINE_LIBS = @READLINE_LIBS@
|
||||||
SED = @SED@
|
SED = @SED@
|
||||||
SESSION_FLAGS = @SESSION_FLAGS@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
SHELL_CFLAGS = @SHELL_CFLAGS@
|
SHELL_CFLAGS = @SHELL_CFLAGS@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
THREADSAFE_FLAGS = @THREADSAFE_FLAGS@
|
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
ZLIB_FLAGS = @ZLIB_FLAGS@
|
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
@ -365,7 +359,7 @@ target_alias = @target_alias@
|
||||||
top_build_prefix = @top_build_prefix@
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ @ZLIB_FLAGS@ @SESSION_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE
|
AM_CFLAGS = @BUILD_CFLAGS@
|
||||||
lib_LTLIBRARIES = libsqlite3.la
|
lib_LTLIBRARIES = libsqlite3.la
|
||||||
libsqlite3_la_SOURCES = sqlite3.c
|
libsqlite3_la_SOURCES = sqlite3.c
|
||||||
libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8
|
libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8
|
||||||
|
@ -375,7 +369,7 @@ sqlite3_LDADD = @EXTRA_SHELL_OBJ@ @READLINE_LIBS@
|
||||||
sqlite3_DEPENDENCIES = @EXTRA_SHELL_OBJ@
|
sqlite3_DEPENDENCIES = @EXTRA_SHELL_OBJ@
|
||||||
sqlite3_CFLAGS = $(AM_CFLAGS) -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_DBSTAT_VTAB $(SHELL_CFLAGS)
|
sqlite3_CFLAGS = $(AM_CFLAGS) -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_DBSTAT_VTAB $(SHELL_CFLAGS)
|
||||||
include_HEADERS = sqlite3.h sqlite3ext.h
|
include_HEADERS = sqlite3.h sqlite3ext.h
|
||||||
EXTRA_DIST = sqlite3.1 tea Makefile.msc sqlite3.rc README.txt Replace.cs
|
EXTRA_DIST = sqlite3.1 tea Makefile.msc sqlite3.rc README.txt Replace.cs Makefile.fallback
|
||||||
pkgconfigdir = ${libdir}/pkgconfig
|
pkgconfigdir = ${libdir}/pkgconfig
|
||||||
pkgconfig_DATA = sqlite3.pc
|
pkgconfig_DATA = sqlite3.pc
|
||||||
man_MANS = sqlite3.1
|
man_MANS = sqlite3.1
|
||||||
|
|
|
@ -277,6 +277,12 @@ SQLITE3EXEPDB = /pdb:sqlite3sh.pdb
|
||||||
!IF $(MINIMAL_AMALGAMATION)==0
|
!IF $(MINIMAL_AMALGAMATION)==0
|
||||||
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1
|
||||||
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1
|
||||||
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_GEOPOLY=1
|
||||||
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_JSON1=1
|
||||||
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_STMTVTAB=1
|
||||||
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DBPAGE_VTAB=1
|
||||||
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DBSTAT_VTAB=1
|
||||||
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_INTROSPECTION_PRAGMAS=1
|
||||||
!ENDIF
|
!ENDIF
|
||||||
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1
|
OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
@ -928,10 +934,9 @@ LIBRESOBJS =
|
||||||
# when the shell is not being dynamically linked.
|
# when the shell is not being dynamically linked.
|
||||||
#
|
#
|
||||||
!IF $(DYNAMIC_SHELL)==0 && $(FOR_WIN10)==0
|
!IF $(DYNAMIC_SHELL)==0 && $(FOR_WIN10)==0
|
||||||
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_STMTVTAB
|
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_FTS4=1
|
||||||
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_DBSTAT_VTAB
|
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_EXPLAIN_COMMENTS=1
|
||||||
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_OFFSET_SQL_FUNC -DSQLITE_INTROSPECTION_PRAGMAS
|
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_OFFSET_SQL_FUNC=1
|
||||||
SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_ENABLE_RTREE
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
@ -966,7 +971,7 @@ Replace.exe:
|
||||||
sqlite3.def: Replace.exe $(LIBOBJ)
|
sqlite3.def: Replace.exe $(LIBOBJ)
|
||||||
echo EXPORTS > sqlite3.def
|
echo EXPORTS > sqlite3.def
|
||||||
dumpbin /all $(LIBOBJ) \
|
dumpbin /all $(LIBOBJ) \
|
||||||
| .\Replace.exe "^\s+/EXPORT:_?(sqlite3(?:session|changeset|changegroup)?_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \
|
| .\Replace.exe "^\s+/EXPORT:_?(sqlite3(?:session|changeset|changegroup|rebaser)?_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \
|
||||||
| sort >> sqlite3.def
|
| sort >> sqlite3.def
|
||||||
|
|
||||||
$(SQLITE3EXE): shell.c $(SHELL_CORE_DEP) $(LIBRESOBJS) $(SHELL_CORE_SRC) $(SQLITE3H)
|
$(SQLITE3EXE): shell.c $(SHELL_CORE_DEP) $(LIBRESOBJS) $(SHELL_CORE_SRC) $(SQLITE3H)
|
||||||
|
|
115
contrib/sqlite3/configure
vendored
115
contrib/sqlite3/configure
vendored
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for sqlite 3.23.1.
|
# Generated by GNU Autoconf 2.69 for sqlite 3.26.0.
|
||||||
#
|
#
|
||||||
# Report bugs to <http://www.sqlite.org>.
|
# Report bugs to <http://www.sqlite.org>.
|
||||||
#
|
#
|
||||||
|
@ -590,8 +590,8 @@ MAKEFLAGS=
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='sqlite'
|
PACKAGE_NAME='sqlite'
|
||||||
PACKAGE_TARNAME='sqlite'
|
PACKAGE_TARNAME='sqlite'
|
||||||
PACKAGE_VERSION='3.23.1'
|
PACKAGE_VERSION='3.26.0'
|
||||||
PACKAGE_STRING='sqlite 3.23.1'
|
PACKAGE_STRING='sqlite 3.26.0'
|
||||||
PACKAGE_BUGREPORT='http://www.sqlite.org'
|
PACKAGE_BUGREPORT='http://www.sqlite.org'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
|
@ -637,13 +637,7 @@ am__EXEEXT_TRUE
|
||||||
LTLIBOBJS
|
LTLIBOBJS
|
||||||
LIBOBJS
|
LIBOBJS
|
||||||
SHELL_CFLAGS
|
SHELL_CFLAGS
|
||||||
ZLIB_FLAGS
|
|
||||||
EXTRA_SHELL_OBJ
|
EXTRA_SHELL_OBJ
|
||||||
SESSION_FLAGS
|
|
||||||
JSON1_FLAGS
|
|
||||||
FTS5_FLAGS
|
|
||||||
DYNAMIC_EXTENSION_FLAGS
|
|
||||||
THREADSAFE_FLAGS
|
|
||||||
READLINE_LIBS
|
READLINE_LIBS
|
||||||
BUILD_CFLAGS
|
BUILD_CFLAGS
|
||||||
CPP
|
CPP
|
||||||
|
@ -777,9 +771,13 @@ enable_editline
|
||||||
enable_readline
|
enable_readline
|
||||||
enable_threadsafe
|
enable_threadsafe
|
||||||
enable_dynamic_extensions
|
enable_dynamic_extensions
|
||||||
|
enable_fts4
|
||||||
|
enable_fts3
|
||||||
enable_fts5
|
enable_fts5
|
||||||
enable_json1
|
enable_json1
|
||||||
|
enable_rtree
|
||||||
enable_session
|
enable_session
|
||||||
|
enable_debug
|
||||||
enable_static_shell
|
enable_static_shell
|
||||||
'
|
'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
|
@ -1332,7 +1330,7 @@ if test "$ac_init_help" = "long"; then
|
||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures sqlite 3.23.1 to adapt to many kinds of systems.
|
\`configure' configures sqlite 3.26.0 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1402,7 +1400,7 @@ fi
|
||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of sqlite 3.23.1:";;
|
short | recursive ) echo "Configuration of sqlite 3.26.0:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1427,9 +1425,13 @@ Optional Features:
|
||||||
--enable-threadsafe build a thread-safe library [default=yes]
|
--enable-threadsafe build a thread-safe library [default=yes]
|
||||||
--enable-dynamic-extensions
|
--enable-dynamic-extensions
|
||||||
support loadable extensions [default=yes]
|
support loadable extensions [default=yes]
|
||||||
--enable-fts5 include fts5 support [default=no]
|
--enable-fts4 include fts4 support [default=yes]
|
||||||
--enable-json1 include json1 support [default=no]
|
--enable-fts3 include fts3 support [default=no]
|
||||||
|
--enable-fts5 include fts5 support [default=yes]
|
||||||
|
--enable-json1 include json1 support [default=yes]
|
||||||
|
--enable-rtree include rtree support [default=yes]
|
||||||
--enable-session enable the session extension [default=no]
|
--enable-session enable the session extension [default=no]
|
||||||
|
--enable-debug build with debugging features enabled [default=no]
|
||||||
--enable-static-shell statically link libsqlite3 into shell tool
|
--enable-static-shell statically link libsqlite3 into shell tool
|
||||||
[default=yes]
|
[default=yes]
|
||||||
|
|
||||||
|
@ -1523,7 +1525,7 @@ fi
|
||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
sqlite configure 3.23.1
|
sqlite configure 3.26.0
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
@ -1938,7 +1940,7 @@ cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by sqlite $as_me 3.23.1, which was
|
It was created by sqlite $as_me 3.26.0, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
|
@ -2804,7 +2806,7 @@ fi
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='sqlite'
|
PACKAGE='sqlite'
|
||||||
VERSION='3.23.1'
|
VERSION='3.26.0'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
@ -13040,6 +13042,7 @@ fi
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile sqlite3.pc"
|
ac_config_files="$ac_config_files Makefile sqlite3.pc"
|
||||||
|
|
||||||
|
BUILD_CFLAGS=
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -13304,9 +13307,8 @@ else
|
||||||
enable_threadsafe=yes
|
enable_threadsafe=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=0
|
|
||||||
if test x"$enable_threadsafe" != "xno"; then
|
if test x"$enable_threadsafe" != "xno"; then
|
||||||
THREADSAFE_FLAGS="-D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
|
BUILD_CFLAGS="$BUILD_CFLAGS -D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5
|
||||||
$as_echo_n "checking for library containing pthread_create... " >&6; }
|
$as_echo_n "checking for library containing pthread_create... " >&6; }
|
||||||
if ${ac_cv_search_pthread_create+:} false; then :
|
if ${ac_cv_search_pthread_create+:} false; then :
|
||||||
|
@ -13420,7 +13422,6 @@ if test "$ac_res" != no; then :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -13491,13 +13492,40 @@ if test "$ac_res" != no; then :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
DYNAMIC_EXTENSION_FLAGS=-DSQLITE_OMIT_LOAD_EXTENSION=1
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_OMIT_LOAD_EXTENSION=1"
|
||||||
fi
|
fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for whether to support dynamic extensions" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for whether to support dynamic extensions" >&5
|
||||||
$as_echo_n "checking for whether to support dynamic extensions... " >&6; }
|
$as_echo_n "checking for whether to support dynamic extensions... " >&6; }
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dynamic_extensions" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dynamic_extensions" >&5
|
||||||
$as_echo "$enable_dynamic_extensions" >&6; }
|
$as_echo "$enable_dynamic_extensions" >&6; }
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-fts4
|
||||||
|
#
|
||||||
|
# Check whether --enable-fts4 was given.
|
||||||
|
if test "${enable_fts4+set}" = set; then :
|
||||||
|
enableval=$enable_fts4;
|
||||||
|
else
|
||||||
|
enable_fts4=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x"$enable_fts4" = "xyes"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_FTS4"
|
||||||
|
fi
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-fts3
|
||||||
|
#
|
||||||
|
# Check whether --enable-fts3 was given.
|
||||||
|
if test "${enable_fts3+set}" = set; then :
|
||||||
|
enableval=$enable_fts3;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x"$enable_fts3" = "xyes" -a x"$enable_fts4" = "xno"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_FTS3"
|
||||||
|
fi
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -13507,7 +13535,7 @@ $as_echo "$enable_dynamic_extensions" >&6; }
|
||||||
if test "${enable_fts5+set}" = set; then :
|
if test "${enable_fts5+set}" = set; then :
|
||||||
enableval=$enable_fts5;
|
enableval=$enable_fts5;
|
||||||
else
|
else
|
||||||
enable_fts5=no
|
enable_fts5=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$enable_fts5" = "xyes"; then
|
if test x"$enable_fts5" = "xyes"; then
|
||||||
|
@ -13567,9 +13595,8 @@ if test "$ac_res" != no; then :
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FTS5_FLAGS=-DSQLITE_ENABLE_FTS5
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_FTS5"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -13579,13 +13606,27 @@ fi
|
||||||
if test "${enable_json1+set}" = set; then :
|
if test "${enable_json1+set}" = set; then :
|
||||||
enableval=$enable_json1;
|
enableval=$enable_json1;
|
||||||
else
|
else
|
||||||
enable_json1=no
|
enable_json1=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$enable_json1" = "xyes"; then
|
if test x"$enable_json1" = "xyes"; then
|
||||||
JSON1_FLAGS=-DSQLITE_ENABLE_JSON1
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_JSON1"
|
||||||
|
fi
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-rtree
|
||||||
|
#
|
||||||
|
# Check whether --enable-rtree was given.
|
||||||
|
if test "${enable_rtree+set}" = set; then :
|
||||||
|
enableval=$enable_rtree;
|
||||||
|
else
|
||||||
|
enable_rtree=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x"$enable_rtree" = "xyes"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE"
|
||||||
|
fi
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -13594,14 +13635,25 @@ fi
|
||||||
# Check whether --enable-session was given.
|
# Check whether --enable-session was given.
|
||||||
if test "${enable_session+set}" = set; then :
|
if test "${enable_session+set}" = set; then :
|
||||||
enableval=$enable_session;
|
enableval=$enable_session;
|
||||||
else
|
|
||||||
enable_session=no
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$enable_session" = "xyes"; then
|
if test x"$enable_session" = "xyes"; then
|
||||||
SESSION_FLAGS="-DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK"
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK"
|
||||||
|
fi
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-debug
|
||||||
|
#
|
||||||
|
# Check whether --enable-debug was given.
|
||||||
|
if test "${enable_debug+set}" = set; then :
|
||||||
|
enableval=$enable_debug;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x"$enable_debug" = "xyes"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_DEBUG -DSQLITE_ENABLE_SELECTTRACE -DSQLITE_ENABLE_WHERETRACE"
|
||||||
|
CFLAGS="-g -O0"
|
||||||
|
fi
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -13694,7 +13746,7 @@ $as_echo "$ac_cv_search_deflate" >&6; }
|
||||||
ac_res=$ac_cv_search_deflate
|
ac_res=$ac_cv_search_deflate
|
||||||
if test "$ac_res" != no; then :
|
if test "$ac_res" != no; then :
|
||||||
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
|
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
|
||||||
ZLIB_FLAGS="-DSQLITE_HAVE_ZLIB"
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_HAVE_ZLIB"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
@ -13703,7 +13755,6 @@ fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing system" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing system" >&5
|
||||||
$as_echo_n "checking for library containing system... " >&6; }
|
$as_echo_n "checking for library containing system... " >&6; }
|
||||||
if ${ac_cv_search_system+:} false; then :
|
if ${ac_cv_search_system+:} false; then :
|
||||||
|
@ -14359,7 +14410,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by sqlite $as_me 3.23.1, which was
|
This file was extended by sqlite $as_me 3.26.0, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -14416,7 +14467,7 @@ _ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
sqlite config.status 3.23.1
|
sqlite config.status 3.26.0
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_PREREQ(2.61)
|
AC_PREREQ(2.61)
|
||||||
AC_INIT(sqlite, 3.23.1, http://www.sqlite.org)
|
AC_INIT(sqlite, 3.26.0, http://www.sqlite.org)
|
||||||
AC_CONFIG_SRCDIR([sqlite3.c])
|
AC_CONFIG_SRCDIR([sqlite3.c])
|
||||||
AC_CONFIG_AUX_DIR([.])
|
AC_CONFIG_AUX_DIR([.])
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ AC_CHECK_FUNCS([fdatasync usleep fullfsync localtime_r gmtime_r])
|
||||||
AC_FUNC_STRERROR_R
|
AC_FUNC_STRERROR_R
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile sqlite3.pc])
|
AC_CONFIG_FILES([Makefile sqlite3.pc])
|
||||||
|
BUILD_CFLAGS=
|
||||||
AC_SUBST(BUILD_CFLAGS)
|
AC_SUBST(BUILD_CFLAGS)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -86,13 +87,11 @@ AC_SUBST(READLINE_LIBS)
|
||||||
AC_ARG_ENABLE(threadsafe, [AS_HELP_STRING(
|
AC_ARG_ENABLE(threadsafe, [AS_HELP_STRING(
|
||||||
[--enable-threadsafe], [build a thread-safe library [default=yes]])],
|
[--enable-threadsafe], [build a thread-safe library [default=yes]])],
|
||||||
[], [enable_threadsafe=yes])
|
[], [enable_threadsafe=yes])
|
||||||
THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=0
|
|
||||||
if test x"$enable_threadsafe" != "xno"; then
|
if test x"$enable_threadsafe" != "xno"; then
|
||||||
THREADSAFE_FLAGS="-D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
|
BUILD_CFLAGS="$BUILD_CFLAGS -D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
|
||||||
AC_SEARCH_LIBS(pthread_create, pthread)
|
AC_SEARCH_LIBS(pthread_create, pthread)
|
||||||
AC_SEARCH_LIBS(pthread_mutexattr_init, pthread)
|
AC_SEARCH_LIBS(pthread_mutexattr_init, pthread)
|
||||||
fi
|
fi
|
||||||
AC_SUBST(THREADSAFE_FLAGS)
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -104,36 +103,66 @@ AC_ARG_ENABLE(dynamic-extensions, [AS_HELP_STRING(
|
||||||
if test x"$enable_dynamic_extensions" != "xno"; then
|
if test x"$enable_dynamic_extensions" != "xno"; then
|
||||||
AC_SEARCH_LIBS(dlopen, dl)
|
AC_SEARCH_LIBS(dlopen, dl)
|
||||||
else
|
else
|
||||||
DYNAMIC_EXTENSION_FLAGS=-DSQLITE_OMIT_LOAD_EXTENSION=1
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_OMIT_LOAD_EXTENSION=1"
|
||||||
fi
|
fi
|
||||||
AC_MSG_CHECKING([for whether to support dynamic extensions])
|
AC_MSG_CHECKING([for whether to support dynamic extensions])
|
||||||
AC_MSG_RESULT($enable_dynamic_extensions)
|
AC_MSG_RESULT($enable_dynamic_extensions)
|
||||||
AC_SUBST(DYNAMIC_EXTENSION_FLAGS)
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-fts4
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(fts4, [AS_HELP_STRING(
|
||||||
|
[--enable-fts4], [include fts4 support [default=yes]])],
|
||||||
|
[], [enable_fts4=yes])
|
||||||
|
if test x"$enable_fts4" = "xyes"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_FTS4"
|
||||||
|
fi
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-fts3
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(fts3, [AS_HELP_STRING(
|
||||||
|
[--enable-fts3], [include fts3 support [default=no]])],
|
||||||
|
[], [])
|
||||||
|
if test x"$enable_fts3" = "xyes" -a x"$enable_fts4" = "xno"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_FTS3"
|
||||||
|
fi
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
# --enable-fts5
|
# --enable-fts5
|
||||||
#
|
#
|
||||||
AC_ARG_ENABLE(fts5, [AS_HELP_STRING(
|
AC_ARG_ENABLE(fts5, [AS_HELP_STRING(
|
||||||
[--enable-fts5], [include fts5 support [default=no]])],
|
[--enable-fts5], [include fts5 support [default=yes]])],
|
||||||
[], [enable_fts5=no])
|
[], [enable_fts5=yes])
|
||||||
if test x"$enable_fts5" = "xyes"; then
|
if test x"$enable_fts5" = "xyes"; then
|
||||||
AC_SEARCH_LIBS(log, m)
|
AC_SEARCH_LIBS(log, m)
|
||||||
FTS5_FLAGS=-DSQLITE_ENABLE_FTS5
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_FTS5"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(FTS5_FLAGS)
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
# --enable-json1
|
# --enable-json1
|
||||||
#
|
#
|
||||||
AC_ARG_ENABLE(json1, [AS_HELP_STRING(
|
AC_ARG_ENABLE(json1, [AS_HELP_STRING(
|
||||||
[--enable-json1], [include json1 support [default=no]])],
|
[--enable-json1], [include json1 support [default=yes]])],
|
||||||
[], [enable_json1=no])
|
[],[enable_json1=yes])
|
||||||
if test x"$enable_json1" = "xyes"; then
|
if test x"$enable_json1" = "xyes"; then
|
||||||
JSON1_FLAGS=-DSQLITE_ENABLE_JSON1
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_JSON1"
|
||||||
|
fi
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-rtree
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(rtree, [AS_HELP_STRING(
|
||||||
|
[--enable-rtree], [include rtree support [default=yes]])],
|
||||||
|
[], [enable_rtree=yes])
|
||||||
|
if test x"$enable_rtree" = "xyes"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(JSON1_FLAGS)
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -141,11 +170,22 @@ AC_SUBST(JSON1_FLAGS)
|
||||||
#
|
#
|
||||||
AC_ARG_ENABLE(session, [AS_HELP_STRING(
|
AC_ARG_ENABLE(session, [AS_HELP_STRING(
|
||||||
[--enable-session], [enable the session extension [default=no]])],
|
[--enable-session], [enable the session extension [default=no]])],
|
||||||
[], [enable_session=no])
|
[], [])
|
||||||
if test x"$enable_session" = "xyes"; then
|
if test x"$enable_session" = "xyes"; then
|
||||||
SESSION_FLAGS="-DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK"
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK"
|
||||||
|
fi
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-debug
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(debug, [AS_HELP_STRING(
|
||||||
|
[--enable-debug], [build with debugging features enabled [default=no]])],
|
||||||
|
[], [])
|
||||||
|
if test x"$enable_debug" = "xyes"; then
|
||||||
|
BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_DEBUG -DSQLITE_ENABLE_SELECTTRACE -DSQLITE_ENABLE_WHERETRACE"
|
||||||
|
CFLAGS="-g -O0"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(SESSION_FLAGS)
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
@ -165,9 +205,8 @@ AC_SUBST(EXTRA_SHELL_OBJ)
|
||||||
|
|
||||||
AC_CHECK_FUNCS(posix_fallocate)
|
AC_CHECK_FUNCS(posix_fallocate)
|
||||||
AC_CHECK_HEADERS(zlib.h,[
|
AC_CHECK_HEADERS(zlib.h,[
|
||||||
AC_SEARCH_LIBS(deflate,z,[ZLIB_FLAGS="-DSQLITE_HAVE_ZLIB"])
|
AC_SEARCH_LIBS(deflate,z,[BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_HAVE_ZLIB"])
|
||||||
])
|
])
|
||||||
AC_SUBST(ZLIB_FLAGS)
|
|
||||||
|
|
||||||
AC_SEARCH_LIBS(system,,,[SHELL_CFLAGS="-DSQLITE_NOHAVE_SYSTEM"])
|
AC_SEARCH_LIBS(system,,,[SHELL_CFLAGS="-DSQLITE_NOHAVE_SYSTEM"])
|
||||||
AC_SUBST(SHELL_CFLAGS)
|
AC_SUBST(SHELL_CFLAGS)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -295,6 +295,30 @@ struct sqlite3_api_routines {
|
||||||
int (*vtab_nochange)(sqlite3_context*);
|
int (*vtab_nochange)(sqlite3_context*);
|
||||||
int (*value_nochange)(sqlite3_value*);
|
int (*value_nochange)(sqlite3_value*);
|
||||||
const char *(*vtab_collation)(sqlite3_index_info*,int);
|
const char *(*vtab_collation)(sqlite3_index_info*,int);
|
||||||
|
/* Version 3.24.0 and later */
|
||||||
|
int (*keyword_count)(void);
|
||||||
|
int (*keyword_name)(int,const char**,int*);
|
||||||
|
int (*keyword_check)(const char*,int);
|
||||||
|
sqlite3_str *(*str_new)(sqlite3*);
|
||||||
|
char *(*str_finish)(sqlite3_str*);
|
||||||
|
void (*str_appendf)(sqlite3_str*, const char *zFormat, ...);
|
||||||
|
void (*str_vappendf)(sqlite3_str*, const char *zFormat, va_list);
|
||||||
|
void (*str_append)(sqlite3_str*, const char *zIn, int N);
|
||||||
|
void (*str_appendall)(sqlite3_str*, const char *zIn);
|
||||||
|
void (*str_appendchar)(sqlite3_str*, int N, char C);
|
||||||
|
void (*str_reset)(sqlite3_str*);
|
||||||
|
int (*str_errcode)(sqlite3_str*);
|
||||||
|
int (*str_length)(sqlite3_str*);
|
||||||
|
char *(*str_value)(sqlite3_str*);
|
||||||
|
/* Version 3.25.0 and later */
|
||||||
|
int (*create_window_function)(sqlite3*,const char*,int,int,void*,
|
||||||
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xFinal)(sqlite3_context*),
|
||||||
|
void (*xValue)(sqlite3_context*),
|
||||||
|
void (*xInv)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void(*xDestroy)(void*));
|
||||||
|
/* Version 3.26.0 and later */
|
||||||
|
const char *(*normalized_sql)(sqlite3_stmt*);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -565,6 +589,25 @@ typedef int (*sqlite3_loadext_entry)(
|
||||||
#define sqlite3_vtab_nochange sqlite3_api->vtab_nochange
|
#define sqlite3_vtab_nochange sqlite3_api->vtab_nochange
|
||||||
#define sqlite3_value_nochange sqlite3_api->value_nochange
|
#define sqlite3_value_nochange sqlite3_api->value_nochange
|
||||||
#define sqlite3_vtab_collation sqlite3_api->vtab_collation
|
#define sqlite3_vtab_collation sqlite3_api->vtab_collation
|
||||||
|
/* Version 3.24.0 and later */
|
||||||
|
#define sqlite3_keyword_count sqlite3_api->keyword_count
|
||||||
|
#define sqlite3_keyword_name sqlite3_api->keyword_name
|
||||||
|
#define sqlite3_keyword_check sqlite3_api->keyword_check
|
||||||
|
#define sqlite3_str_new sqlite3_api->str_new
|
||||||
|
#define sqlite3_str_finish sqlite3_api->str_finish
|
||||||
|
#define sqlite3_str_appendf sqlite3_api->str_appendf
|
||||||
|
#define sqlite3_str_vappendf sqlite3_api->str_vappendf
|
||||||
|
#define sqlite3_str_append sqlite3_api->str_append
|
||||||
|
#define sqlite3_str_appendall sqlite3_api->str_appendall
|
||||||
|
#define sqlite3_str_appendchar sqlite3_api->str_appendchar
|
||||||
|
#define sqlite3_str_reset sqlite3_api->str_reset
|
||||||
|
#define sqlite3_str_errcode sqlite3_api->str_errcode
|
||||||
|
#define sqlite3_str_length sqlite3_api->str_length
|
||||||
|
#define sqlite3_str_value sqlite3_api->str_value
|
||||||
|
/* Version 3.25.0 and later */
|
||||||
|
#define sqlite3_create_window_function sqlite3_api->create_window_function
|
||||||
|
/* Version 3.26.0 and later */
|
||||||
|
#define sqlite3_normalized_sql sqlite3_api->normalized_sql
|
||||||
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
||||||
|
|
||||||
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
||||||
|
|
440
contrib/sqlite3/tea/Makefile.in
Normal file
440
contrib/sqlite3/tea/Makefile.in
Normal file
|
@ -0,0 +1,440 @@
|
||||||
|
# Makefile.in --
|
||||||
|
#
|
||||||
|
# This file is a Makefile for Sample TEA Extension. If it has the name
|
||||||
|
# "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) 1999 Scriptics Corporation.
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# RCS: @(#) $Id: Makefile.in,v 1.59 2005/07/26 19:17:02 mdejong Exp $
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Add additional lines to handle any additional AC_SUBST cases that
|
||||||
|
# have been added in a customized configure script.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
#SAMPLE_NEW_VAR = @SAMPLE_NEW_VAR@
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Nothing of the variables below this line should need to be changed.
|
||||||
|
# Please check the TARGETS section below to make sure the make targets
|
||||||
|
# are correct.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# The names of the source files is defined in the configure script.
|
||||||
|
# The object files are used for linking into the final library.
|
||||||
|
# This will be used when a dist target is added to the Makefile.
|
||||||
|
# It is not important to specify the directory, as long as it is the
|
||||||
|
# $(srcdir) or in the generic, win or unix subdirectory.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
PKG_SOURCES = @PKG_SOURCES@
|
||||||
|
PKG_OBJECTS = @PKG_OBJECTS@
|
||||||
|
|
||||||
|
PKG_STUB_SOURCES = @PKG_STUB_SOURCES@
|
||||||
|
PKG_STUB_OBJECTS = @PKG_STUB_OBJECTS@
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# PKG_TCL_SOURCES identifies Tcl runtime files that are associated with
|
||||||
|
# this package that need to be installed, if any.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
PKG_TCL_SOURCES = @PKG_TCL_SOURCES@
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# This is a list of public header files to be installed, if any.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
PKG_HEADERS = @PKG_HEADERS@
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# "PKG_LIB_FILE" refers to the library (dynamic or static as per
|
||||||
|
# configuration options) composed of the named objects.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
PKG_LIB_FILE = @PKG_LIB_FILE@
|
||||||
|
PKG_STUB_LIB_FILE = @PKG_STUB_LIB_FILE@
|
||||||
|
|
||||||
|
lib_BINARIES = $(PKG_LIB_FILE)
|
||||||
|
BINARIES = $(lib_BINARIES)
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
libdir = @libdir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
|
||||||
|
DESTDIR =
|
||||||
|
|
||||||
|
PKG_DIR = $(PACKAGE_NAME)$(PACKAGE_VERSION)
|
||||||
|
pkgdatadir = $(datadir)/$(PKG_DIR)
|
||||||
|
pkglibdir = $(libdir)/$(PKG_DIR)
|
||||||
|
pkgincludedir = $(includedir)/$(PKG_DIR)
|
||||||
|
|
||||||
|
top_builddir = .
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
CC = @CC@
|
||||||
|
CFLAGS_DEFAULT = @CFLAGS_DEFAULT@
|
||||||
|
CFLAGS_WARNING = @CFLAGS_WARNING@
|
||||||
|
CLEANFILES = @CLEANFILES@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
LDFLAGS_DEFAULT = @LDFLAGS_DEFAULT@
|
||||||
|
MAKE_LIB = @MAKE_LIB@
|
||||||
|
MAKE_SHARED_LIB = @MAKE_SHARED_LIB@
|
||||||
|
MAKE_STATIC_LIB = @MAKE_STATIC_LIB@
|
||||||
|
MAKE_STUB_LIB = @MAKE_STUB_LIB@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
RANLIB_STUB = @RANLIB_STUB@
|
||||||
|
SHLIB_CFLAGS = @SHLIB_CFLAGS@
|
||||||
|
SHLIB_LD = @SHLIB_LD@
|
||||||
|
SHLIB_LD_LIBS = @SHLIB_LD_LIBS@
|
||||||
|
STLIB_LD = @STLIB_LD@
|
||||||
|
#TCL_DEFS = @TCL_DEFS@
|
||||||
|
TCL_BIN_DIR = @TCL_BIN_DIR@
|
||||||
|
TCL_SRC_DIR = @TCL_SRC_DIR@
|
||||||
|
#TK_BIN_DIR = @TK_BIN_DIR@
|
||||||
|
#TK_SRC_DIR = @TK_SRC_DIR@
|
||||||
|
|
||||||
|
# This is no longer necessary even for packages that use private Tcl headers
|
||||||
|
#TCL_TOP_DIR_NATIVE = @TCL_TOP_DIR_NATIVE@
|
||||||
|
# Not used, but retained for reference of what libs Tcl required
|
||||||
|
#TCL_LIBS = @TCL_LIBS@
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# 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).
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR)
|
||||||
|
#EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR):$(TK_BIN_DIR)
|
||||||
|
TCLLIBPATH = $(top_builddir)
|
||||||
|
TCLSH_ENV = TCL_LIBRARY=`@CYGPATH@ $(TCL_SRC_DIR)/library` \
|
||||||
|
@LD_LIBRARY_PATH_VAR@="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \
|
||||||
|
PATH="$(EXTRA_PATH):$(PATH)" \
|
||||||
|
TCLLIBPATH="$(TCLLIBPATH)"
|
||||||
|
# TK_LIBRARY=`@CYGPATH@ $(TK_SRC_DIR)/library`
|
||||||
|
|
||||||
|
TCLSH_PROG = @TCLSH_PROG@
|
||||||
|
TCLSH = $(TCLSH_ENV) $(TCLSH_PROG)
|
||||||
|
|
||||||
|
#WISH_PROG = @WISH_PROG@
|
||||||
|
#WISH = $(TCLSH_ENV) $(WISH_PROG)
|
||||||
|
|
||||||
|
|
||||||
|
SHARED_BUILD = @SHARED_BUILD@
|
||||||
|
|
||||||
|
INCLUDES = @PKG_INCLUDES@ @TCL_INCLUDES@ -I$(srcdir)/..
|
||||||
|
#INCLUDES = @PKG_INCLUDES@ @TCL_INCLUDES@ @TK_INCLUDES@ @TK_XINCLUDES@
|
||||||
|
|
||||||
|
PKG_CFLAGS = @PKG_CFLAGS@
|
||||||
|
|
||||||
|
# TCL_DEFS is not strictly need here, but if you remove it, then you
|
||||||
|
# must make sure that configure.in checks for the necessary components
|
||||||
|
# that your library may use. TCL_DEFS can actually be a problem if
|
||||||
|
# you do not compile with a similar machine setup as the Tcl core was
|
||||||
|
# compiled with.
|
||||||
|
#DEFS = $(TCL_DEFS) @DEFS@ $(PKG_CFLAGS)
|
||||||
|
DEFS = @DEFS@ $(PKG_CFLAGS)
|
||||||
|
|
||||||
|
CONFIG_CLEAN_FILES = Makefile pkgIndex.tcl
|
||||||
|
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
LIBS = @PKG_LIBS@ @LIBS@
|
||||||
|
AR = @AR@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Start of user-definable TARGETS section
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# TEA TARGETS. Please note that the "libraries:" target refers to platform
|
||||||
|
# independent files, and the "binaries:" target inclues executable programs and
|
||||||
|
# platform-dependent libraries. Modify these targets so that they install
|
||||||
|
# the various pieces of your package. The make and install rules
|
||||||
|
# for the BINARIES that you specified above have already been done.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
all: binaries libraries doc
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# The binaries target builds executable programs, Windows .dll's, unix
|
||||||
|
# shared/static libraries, and any other platform-dependent files.
|
||||||
|
# The list of targets to build for "binaries:" is specified at the top
|
||||||
|
# of the Makefile, in the "BINARIES" variable.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
binaries: $(BINARIES)
|
||||||
|
|
||||||
|
libraries:
|
||||||
|
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Your doc target should differentiate from doc builds (by the developer)
|
||||||
|
# and doc installs (see install-doc), which just install the docs on the
|
||||||
|
# end user machine when building from source.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
doc:
|
||||||
|
@echo "If you have documentation to create, place the commands to"
|
||||||
|
@echo "build the docs in the 'doc:' target. For example:"
|
||||||
|
@echo " xml2nroff sample.xml > sample.n"
|
||||||
|
@echo " xml2html sample.xml > sample.html"
|
||||||
|
|
||||||
|
install: all install-binaries install-libraries install-doc
|
||||||
|
|
||||||
|
install-binaries: binaries install-lib-binaries install-bin-binaries
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# This rule installs platform-independent files, such as header files.
|
||||||
|
# The list=...; for p in $$list handles the empty list case x-platform.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
install-libraries: libraries
|
||||||
|
@mkdir -p $(DESTDIR)$(includedir)
|
||||||
|
@echo "Installing header files in $(DESTDIR)$(includedir)"
|
||||||
|
@list='$(PKG_HEADERS)'; for i in $$list; do \
|
||||||
|
echo "Installing $(srcdir)/$$i" ; \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir) ; \
|
||||||
|
done;
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Install documentation. Unix manpages should go in the $(mandir)
|
||||||
|
# directory.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
install-doc: doc
|
||||||
|
@mkdir -p $(DESTDIR)$(mandir)/mann
|
||||||
|
@echo "Installing documentation in $(DESTDIR)$(mandir)"
|
||||||
|
@list='$(srcdir)/doc/*.n'; for i in $$list; do \
|
||||||
|
echo "Installing $$i"; \
|
||||||
|
rm -f $(DESTDIR)$(mandir)/mann/`basename $$i`; \
|
||||||
|
$(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/mann ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
test: binaries libraries
|
||||||
|
@echo "SQLite TEA distribution does not include tests"
|
||||||
|
|
||||||
|
shell: binaries libraries
|
||||||
|
@$(TCLSH) $(SCRIPT)
|
||||||
|
|
||||||
|
gdb:
|
||||||
|
$(TCLSH_ENV) gdb $(TCLSH_PROG) $(SCRIPT)
|
||||||
|
|
||||||
|
depend:
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# $(PKG_LIB_FILE) should be listed as part of the BINARIES variable
|
||||||
|
# mentioned above. That will ensure that this target is built when you
|
||||||
|
# run "make binaries".
|
||||||
|
#
|
||||||
|
# The $(PKG_OBJECTS) objects are created and linked into the final
|
||||||
|
# library. In most cases these object files will correspond to the
|
||||||
|
# source files above.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
$(PKG_LIB_FILE): $(PKG_OBJECTS)
|
||||||
|
-rm -f $(PKG_LIB_FILE)
|
||||||
|
${MAKE_LIB}
|
||||||
|
$(RANLIB) $(PKG_LIB_FILE)
|
||||||
|
|
||||||
|
$(PKG_STUB_LIB_FILE): $(PKG_STUB_OBJECTS)
|
||||||
|
-rm -f $(PKG_STUB_LIB_FILE)
|
||||||
|
${MAKE_STUB_LIB}
|
||||||
|
$(RANLIB_STUB) $(PKG_STUB_LIB_FILE)
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# We need to enumerate the list of .c to .o lines here.
|
||||||
|
#
|
||||||
|
# In the following lines, $(srcdir) refers to the toplevel directory
|
||||||
|
# containing your extension. If your sources are in a subdirectory,
|
||||||
|
# you will have to modify the paths to reflect this:
|
||||||
|
#
|
||||||
|
# sample.$(OBJEXT): $(srcdir)/generic/sample.c
|
||||||
|
# $(COMPILE) -c `@CYGPATH@ $(srcdir)/generic/sample.c` -o $@
|
||||||
|
#
|
||||||
|
# Setting the VPATH variable to a list of paths will cause the makefile
|
||||||
|
# to look into these paths when resolving .c to .obj dependencies.
|
||||||
|
# As necessary, add $(srcdir):$(srcdir)/compat:....
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
VPATH = $(srcdir):$(srcdir)/generic:$(srcdir)/unix:$(srcdir)/win
|
||||||
|
|
||||||
|
.c.@OBJEXT@:
|
||||||
|
$(COMPILE) -c `@CYGPATH@ $<` -o $@
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Distribution creation
|
||||||
|
# You may need to tweak this target to make it work correctly.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
#COMPRESS = tar cvf $(PKG_DIR).tar $(PKG_DIR); compress $(PKG_DIR).tar
|
||||||
|
COMPRESS = gtar zcvf $(PKG_DIR).tar.gz $(PKG_DIR)
|
||||||
|
DIST_ROOT = /tmp/dist
|
||||||
|
DIST_DIR = $(DIST_ROOT)/$(PKG_DIR)
|
||||||
|
|
||||||
|
dist-clean:
|
||||||
|
rm -rf $(DIST_DIR) $(DIST_ROOT)/$(PKG_DIR).tar.*
|
||||||
|
|
||||||
|
dist: dist-clean
|
||||||
|
mkdir -p $(DIST_DIR)
|
||||||
|
cp -p $(srcdir)/README* $(srcdir)/license* \
|
||||||
|
$(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/*.in \
|
||||||
|
$(DIST_DIR)/
|
||||||
|
chmod 664 $(DIST_DIR)/Makefile.in $(DIST_DIR)/aclocal.m4
|
||||||
|
chmod 775 $(DIST_DIR)/configure $(DIST_DIR)/configure.in
|
||||||
|
|
||||||
|
for i in $(srcdir)/*.[ch]; do \
|
||||||
|
if [ -f $$i ]; then \
|
||||||
|
cp -p $$i $(DIST_DIR)/ ; \
|
||||||
|
fi; \
|
||||||
|
done;
|
||||||
|
|
||||||
|
mkdir $(DIST_DIR)/tclconfig
|
||||||
|
cp $(srcdir)/tclconfig/install-sh $(srcdir)/tclconfig/tcl.m4 \
|
||||||
|
$(DIST_DIR)/tclconfig/
|
||||||
|
chmod 664 $(DIST_DIR)/tclconfig/tcl.m4
|
||||||
|
chmod +x $(DIST_DIR)/tclconfig/install-sh
|
||||||
|
|
||||||
|
list='demos doc generic library mac tests unix win'; \
|
||||||
|
for p in $$list; do \
|
||||||
|
if test -d $(srcdir)/$$p ; then \
|
||||||
|
mkdir $(DIST_DIR)/$$p; \
|
||||||
|
cp -p $(srcdir)/$$p/*.* $(DIST_DIR)/$$p/; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
(cd $(DIST_ROOT); $(COMPRESS);)
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# End of user-definable section
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Don't modify the file to clean here. Instead, set the "CLEANFILES"
|
||||||
|
# variable in configure.in
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-test -z "$(BINARIES)" || rm -f $(BINARIES)
|
||||||
|
-rm -f *.$(OBJEXT) core *.core
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
-rm -f *.tab.c
|
||||||
|
-rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-rm -f config.h config.cache config.log config.status
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Install binary object libraries. On Windows this includes both .dll and
|
||||||
|
# .lib files. Because the .lib files are not explicitly listed anywhere,
|
||||||
|
# we need to deduce their existence from the .dll file of the same name.
|
||||||
|
# Library files go into the lib directory.
|
||||||
|
# In addition, this will generate the pkgIndex.tcl
|
||||||
|
# file in the install location (assuming it can find a usable tclsh shell)
|
||||||
|
#
|
||||||
|
# You should not have to modify this target.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
install-lib-binaries: binaries
|
||||||
|
@mkdir -p $(DESTDIR)$(pkglibdir)
|
||||||
|
@list='$(lib_BINARIES)'; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(pkglibdir)/$$p"; \
|
||||||
|
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(pkglibdir)/$$p; \
|
||||||
|
stub=`echo $$p|sed -e "s/.*\(stub\).*/\1/"`; \
|
||||||
|
if test "x$$stub" = "xstub"; then \
|
||||||
|
echo " $(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p"; \
|
||||||
|
$(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p; \
|
||||||
|
else \
|
||||||
|
echo " $(RANLIB) $(DESTDIR)$(pkglibdir)/$$p"; \
|
||||||
|
$(RANLIB) $(DESTDIR)$(pkglibdir)/$$p; \
|
||||||
|
fi; \
|
||||||
|
ext=`echo $$p|sed -e "s/.*\.//"`; \
|
||||||
|
if test "x$$ext" = "xdll"; then \
|
||||||
|
lib=`basename $$p|sed -e 's/.[^.]*$$//'`.lib; \
|
||||||
|
if test -f $$lib; then \
|
||||||
|
echo " $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib"; \
|
||||||
|
$(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
|
||||||
|
if test -f $(srcdir)/$$p; then \
|
||||||
|
destp=`basename $$p`; \
|
||||||
|
echo " Install $$destp $(DESTDIR)$(pkglibdir)/$$destp"; \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkglibdir)/$$destp; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@if test "x$(SHARED_BUILD)" = "x1"; then \
|
||||||
|
echo " Install pkgIndex.tcl $(DESTDIR)$(pkglibdir)"; \
|
||||||
|
$(INSTALL_DATA) pkgIndex.tcl $(DESTDIR)$(pkglibdir); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
#========================================================================
|
||||||
|
# Install binary executables (e.g. .exe files and dependent .dll files)
|
||||||
|
# This is for files that must go in the bin directory (located next to
|
||||||
|
# wish and tclsh), like dependent .dll files on Windows.
|
||||||
|
#
|
||||||
|
# You should not have to modify this target, except to define bin_BINARIES
|
||||||
|
# above if necessary.
|
||||||
|
#========================================================================
|
||||||
|
|
||||||
|
install-bin-binaries: binaries
|
||||||
|
@mkdir -p $(DESTDIR)$(bindir)
|
||||||
|
@list='$(bin_BINARIES)'; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p"; \
|
||||||
|
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.SUFFIXES: .c .$(OBJEXT)
|
||||||
|
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||||
|
|
||||||
|
uninstall-binaries:
|
||||||
|
list='$(lib_BINARIES)'; for p in $$list; do \
|
||||||
|
rm -f $(DESTDIR)$(pkglibdir)/$$p; \
|
||||||
|
done
|
||||||
|
list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
|
||||||
|
p=`basename $$p`; \
|
||||||
|
rm -f $(DESTDIR)$(pkglibdir)/$$p; \
|
||||||
|
done
|
||||||
|
list='$(bin_BINARIES)'; for p in $$list; do \
|
||||||
|
rm -f $(DESTDIR)$(bindir)/$$p; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.PHONY: all binaries clean depend distclean doc install libraries test
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
36
contrib/sqlite3/tea/README
Normal file
36
contrib/sqlite3/tea/README
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
This is the SQLite extension for Tcl using the Tcl Extension
|
||||||
|
Architecture (TEA). For additional information on SQLite see
|
||||||
|
|
||||||
|
http://www.sqlite.org/
|
||||||
|
|
||||||
|
|
||||||
|
UNIX BUILD
|
||||||
|
==========
|
||||||
|
|
||||||
|
Building under most UNIX systems is easy, just run the configure script
|
||||||
|
and then run make. For more information about the build process, see
|
||||||
|
the tcl/unix/README file in the Tcl src dist. The following minimal
|
||||||
|
example will install the extension in the /opt/tcl directory.
|
||||||
|
|
||||||
|
$ cd sqlite-*-tea
|
||||||
|
$ ./configure --prefix=/opt/tcl
|
||||||
|
$ make
|
||||||
|
$ make install
|
||||||
|
|
||||||
|
WINDOWS BUILD
|
||||||
|
=============
|
||||||
|
|
||||||
|
The recommended method to build extensions under windows is to use the
|
||||||
|
Msys + Mingw build process. This provides a Unix-style build while
|
||||||
|
generating native Windows binaries. Using the Msys + Mingw build tools
|
||||||
|
means that you can use the same configure script as per the Unix build
|
||||||
|
to create a Makefile. See the tcl/win/README file for the URL of
|
||||||
|
the Msys + Mingw download.
|
||||||
|
|
||||||
|
If you have VC++ then you may wish to use the files in the win
|
||||||
|
subdirectory and build the extension using just VC++. These files have
|
||||||
|
been designed to be as generic as possible but will require some
|
||||||
|
additional maintenance by the project developer to synchronise with
|
||||||
|
the TEA configure.in and Makefile.in files. Instructions for using the
|
||||||
|
VC++ makefile are written in the first part of the Makefile.vc
|
||||||
|
file.
|
9
contrib/sqlite3/tea/aclocal.m4
vendored
Normal file
9
contrib/sqlite3/tea/aclocal.m4
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#
|
||||||
|
# Include the TEA standard macro set
|
||||||
|
#
|
||||||
|
|
||||||
|
builtin(include,tclconfig/tcl.m4)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Add here whatever m4 macros you want to define for your package
|
||||||
|
#
|
9977
contrib/sqlite3/tea/configure
vendored
Executable file
9977
contrib/sqlite3/tea/configure
vendored
Executable file
File diff suppressed because it is too large
Load diff
201
contrib/sqlite3/tea/configure.ac
Normal file
201
contrib/sqlite3/tea/configure.ac
Normal file
|
@ -0,0 +1,201 @@
|
||||||
|
#!/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.
|
||||||
|
#
|
||||||
|
# RCS: @(#) $Id: configure.in,v 1.43 2005/07/26 19:17:05 mdejong Exp $
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# Sample configure.in for Tcl Extensions. The only places you should
|
||||||
|
# need to modify this file are marked by the string __CHANGE__
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# __CHANGE__
|
||||||
|
# Set your package name and version numbers here.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
AC_INIT([sqlite], [3.26.0])
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# 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([3.9])
|
||||||
|
|
||||||
|
AC_CONFIG_AUX_DIR(tclconfig)
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Load the tclConfig.sh file
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_PATH_TCLCONFIG
|
||||||
|
TEA_LOAD_TCLCONFIG
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Load the tkConfig.sh file if necessary (Tk extension)
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
#TEA_PATH_TKCONFIG
|
||||||
|
#TEA_LOAD_TKCONFIG
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# Handle the --prefix=... option by defaulting to what Tcl gave.
|
||||||
|
# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_PREFIX
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# Standard compiler checks.
|
||||||
|
# This sets up CC by using the CC env var, or looks for gcc otherwise.
|
||||||
|
# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
|
||||||
|
# the basic setup necessary to compile executables.
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_SETUP_COMPILER
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# __CHANGE__
|
||||||
|
# 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_SOURCES([tclsqlite3.c])
|
||||||
|
TEA_ADD_HEADERS([])
|
||||||
|
TEA_ADD_INCLUDES([-I\"`\${CYGPATH} \${srcdir}/generic`\"])
|
||||||
|
TEA_ADD_LIBS([])
|
||||||
|
TEA_ADD_CFLAGS([-DSQLITE_ENABLE_FTS3=1])
|
||||||
|
TEA_ADD_CFLAGS([-DSQLITE_3_SUFFIX_ONLY=1])
|
||||||
|
TEA_ADD_CFLAGS([-DSQLITE_ENABLE_RTREE=1])
|
||||||
|
TEA_ADD_STUB_SOURCES([])
|
||||||
|
TEA_ADD_TCL_SOURCES([])
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# The --with-system-sqlite causes the TCL bindings to SQLite to use
|
||||||
|
# the system shared library for SQLite rather than statically linking
|
||||||
|
# against its own private copy. This is dangerous and leads to
|
||||||
|
# undersirable dependences and is not recommended.
|
||||||
|
# Patchs from rmax.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
AC_ARG_WITH([system-sqlite],
|
||||||
|
[AC_HELP_STRING([--with-system-sqlite],
|
||||||
|
[use a system-supplied libsqlite3 instead of the bundled one])],
|
||||||
|
[], [with_system_sqlite=no])
|
||||||
|
if test x$with_system_sqlite != xno; then
|
||||||
|
AC_CHECK_HEADER([sqlite3.h],
|
||||||
|
[AC_CHECK_LIB([sqlite3],[sqlite3_initialize],
|
||||||
|
[AC_DEFINE(USE_SYSTEM_SQLITE)
|
||||||
|
LIBS="$LIBS -lsqlite3"])])
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# __CHANGE__
|
||||||
|
# Choose which headers you need. Extension authors should try very
|
||||||
|
# hard to only rely on the Tcl public header files. Internal headers
|
||||||
|
# contain private data structures and are subject to change without
|
||||||
|
# notice.
|
||||||
|
# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_PUBLIC_TCL_HEADERS
|
||||||
|
#TEA_PRIVATE_TCL_HEADERS
|
||||||
|
|
||||||
|
#TEA_PUBLIC_TK_HEADERS
|
||||||
|
#TEA_PRIVATE_TK_HEADERS
|
||||||
|
#TEA_PATH_X
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Check whether --enable-threads or --disable-threads was given.
|
||||||
|
# This auto-enables if Tcl was compiled threaded.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_ENABLE_THREADS
|
||||||
|
if test "${TCL_THREADS}" = "1" ; then
|
||||||
|
AC_DEFINE(SQLITE_THREADSAFE, 1, [Trigger sqlite threadsafe build])
|
||||||
|
# Not automatically added by Tcl because its assumed Tcl links to them,
|
||||||
|
# but it may not if it isn't really a threaded build.
|
||||||
|
TEA_ADD_LIBS([$THREADS_LIBS])
|
||||||
|
else
|
||||||
|
AC_DEFINE(SQLITE_THREADSAFE, 0, [Trigger sqlite non-threadsafe build])
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# The statement below defines a collection of symbols related to
|
||||||
|
# building as a shared library instead of a static library.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_ENABLE_SHARED
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# This macro figures out what flags to use with the compiler/linker
|
||||||
|
# when building shared/static debug/optimized objects. This information
|
||||||
|
# can be taken from the tclConfig.sh file, but this figures it all out.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_CONFIG_CFLAGS
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Set the default compiler switches based on the --enable-symbols option.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_ENABLE_SYMBOLS
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Everyone should be linking against the Tcl stub library. If you
|
||||||
|
# can't for some reason, remove this definition. If you aren't using
|
||||||
|
# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
|
||||||
|
# link against the non-stubbed Tcl library. Add Tk too if necessary.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
AC_DEFINE(USE_TCL_STUBS, 1, [Use Tcl stubs])
|
||||||
|
#AC_DEFINE(USE_TK_STUBS, 1, [Use Tk stubs])
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Redefine fdatasync as fsync on systems that lack fdatasync
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
#AC_CHECK_FUNC(fdatasync, , AC_DEFINE(fdatasync, fsync))
|
||||||
|
# Check for library functions that SQLite can optionally use.
|
||||||
|
AC_CHECK_FUNCS([fdatasync usleep fullfsync localtime_r gmtime_r])
|
||||||
|
|
||||||
|
AC_FUNC_STRERROR_R
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# This macro generates a line to use when building a library. It
|
||||||
|
# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
|
||||||
|
# and TEA_LOAD_TCLCONFIG macros above.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
TEA_MAKE_LIB
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# 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
|
||||||
|
#TEA_PROG_WISH
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# 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_OUTPUT([Makefile pkgIndex.tcl])
|
15
contrib/sqlite3/tea/doc/sqlite3.n
Normal file
15
contrib/sqlite3/tea/doc/sqlite3.n
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
.TH sqlite3 n 4.1 "Tcl-Extensions"
|
||||||
|
.HS sqlite3 tcl
|
||||||
|
.BS
|
||||||
|
.SH NAME
|
||||||
|
sqlite3 \- an interface to the SQLite3 database engine
|
||||||
|
.SH SYNOPSIS
|
||||||
|
\fBsqlite3\fI command_name ?filename?\fR
|
||||||
|
.br
|
||||||
|
.SH DESCRIPTION
|
||||||
|
SQLite3 is a self-contains, zero-configuration, transactional SQL database
|
||||||
|
engine. This extension provides an easy to use interface for accessing
|
||||||
|
SQLite database files from Tcl.
|
||||||
|
.PP
|
||||||
|
For full documentation see \fIhttp://www.sqlite.org/\fR and
|
||||||
|
in particular \fIhttp://www.sqlite.org/tclsqlite.html\fR.
|
3793
contrib/sqlite3/tea/generic/tclsqlite3.c
Normal file
3793
contrib/sqlite3/tea/generic/tclsqlite3.c
Normal file
File diff suppressed because it is too large
Load diff
6
contrib/sqlite3/tea/license.terms
Normal file
6
contrib/sqlite3/tea/license.terms
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
The author disclaims copyright to this source code. In place of
|
||||||
|
a legal notice, here is a blessing:
|
||||||
|
|
||||||
|
May you do good and not evil.
|
||||||
|
May you find forgiveness for yourself and forgive others.
|
||||||
|
May you share freely, never taking more than you give.
|
7
contrib/sqlite3/tea/pkgIndex.tcl.in
Normal file
7
contrib/sqlite3/tea/pkgIndex.tcl.in
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#
|
||||||
|
# Tcl package index file
|
||||||
|
#
|
||||||
|
# Note sqlite*3* init specifically
|
||||||
|
#
|
||||||
|
package ifneeded sqlite3 @PACKAGE_VERSION@ \
|
||||||
|
[list load [file join $dir @PKG_LIB_FILE@] Sqlite3]
|
528
contrib/sqlite3/tea/tclconfig/install-sh
Normal file
528
contrib/sqlite3/tea/tclconfig/install-sh
Normal file
|
@ -0,0 +1,528 @@
|
||||||
|
#!/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:
|
4168
contrib/sqlite3/tea/tclconfig/tcl.m4
Normal file
4168
contrib/sqlite3/tea/tclconfig/tcl.m4
Normal file
File diff suppressed because it is too large
Load diff
414
contrib/sqlite3/tea/win/makefile.vc
Normal file
414
contrib/sqlite3/tea/win/makefile.vc
Normal file
|
@ -0,0 +1,414 @@
|
||||||
|
# makefile.vc -- -*- Makefile -*-
|
||||||
|
#
|
||||||
|
# Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+)
|
||||||
|
#
|
||||||
|
# This makefile is based upon the Tcl 8.4 Makefile.vc and modified to
|
||||||
|
# make it suitable as a general package makefile. Look for the word EDIT
|
||||||
|
# which marks sections that may need modification. As a minumum you will
|
||||||
|
# need to change the PROJECT, DOTVERSION and DLLOBJS variables to values
|
||||||
|
# relevant to your package.
|
||||||
|
#
|
||||||
|
# See the file "license.terms" for information on usage and redistribution
|
||||||
|
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
#
|
||||||
|
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
|
||||||
|
# Copyright (c) 1998-2000 Ajuba Solutions.
|
||||||
|
# Copyright (c) 2001 ActiveState Corporation.
|
||||||
|
# Copyright (c) 2001-2002 David Gravereaux.
|
||||||
|
# Copyright (c) 2003 Pat Thoyts
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# RCS: @(#)$Id: makefile.vc,v 1.4 2004/07/26 08:22:05 patthoyts Exp $
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!if !defined(MSDEVDIR) && !defined(MSVCDIR) && !defined(VCINSTALLDIR) && !defined(MSSDK) && !defined(WINDOWSSDKDIR)
|
||||||
|
MSG = ^
|
||||||
|
You will need to run vcvars32.bat from Developer Studio, first, to setup^
|
||||||
|
the environment. Jump to this line to read the new instructions.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# HOW TO USE this makefile:
|
||||||
|
#
|
||||||
|
# 1) It is now necessary to have %MSVCDir% set in the environment. This is
|
||||||
|
# used as a check to see if vcvars32.bat had been run prior to running
|
||||||
|
# nmake or during the installation of Microsoft Visual C++, MSVCDir had
|
||||||
|
# been set globally and the PATH adjusted. Either way is valid.
|
||||||
|
#
|
||||||
|
# You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin
|
||||||
|
# directory to setup the proper environment, if needed, for your current
|
||||||
|
# setup. This is a needed bootstrap requirement and allows the swapping of
|
||||||
|
# different environments to be easier.
|
||||||
|
#
|
||||||
|
# 2) To use the Platform SDK (not expressly needed), run setenv.bat after
|
||||||
|
# vcvars32.bat according to the instructions for it. This can also turn on
|
||||||
|
# the 64-bit compiler, if your SDK has it.
|
||||||
|
#
|
||||||
|
# 3) Targets are:
|
||||||
|
# all -- Builds everything.
|
||||||
|
# <project> -- Builds the project (eg: nmake sample)
|
||||||
|
# test -- Builds and runs the test suite.
|
||||||
|
# install -- Installs the built binaries and libraries to $(INSTALLDIR)
|
||||||
|
# in an appropriate subdirectory.
|
||||||
|
# clean/realclean/distclean -- varying levels of cleaning.
|
||||||
|
#
|
||||||
|
# 4) Macros usable on the commandline:
|
||||||
|
# INSTALLDIR=<path>
|
||||||
|
# Sets where to install Tcl from the built binaries.
|
||||||
|
# C:\Progra~1\Tcl is assumed when not specified.
|
||||||
|
#
|
||||||
|
# OPTS=static,msvcrt,staticpkg,threads,symbols,profile,loimpact,none
|
||||||
|
# Sets special options for the core. The default is for none.
|
||||||
|
# Any combination of the above may be used (comma separated).
|
||||||
|
# 'none' will over-ride everything to nothing.
|
||||||
|
#
|
||||||
|
# static = Builds a static library of the core instead of a
|
||||||
|
# dll. The shell will be static (and large), as well.
|
||||||
|
# msvcrt = Effects the static option only to switch it from
|
||||||
|
# using libcmt(d) as the C runtime [by default] to
|
||||||
|
# msvcrt(d). This is useful for static embedding
|
||||||
|
# support.
|
||||||
|
# staticpkg = Effects the static option only to switch
|
||||||
|
# tclshXX.exe to have the dde and reg extension linked
|
||||||
|
# inside it.
|
||||||
|
# threads = Turns on full multithreading support.
|
||||||
|
# thrdalloc = Use the thread allocator (shared global free pool).
|
||||||
|
# symbols = Adds symbols for step debugging.
|
||||||
|
# profile = Adds profiling hooks. Map file is assumed.
|
||||||
|
# loimpact = Adds a flag for how NT treats the heap to keep memory
|
||||||
|
# in use, low. This is said to impact alloc performance.
|
||||||
|
#
|
||||||
|
# STATS=memdbg,compdbg,none
|
||||||
|
# Sets optional memory and bytecode compiler debugging code added
|
||||||
|
# to the core. The default is for none. Any combination of the
|
||||||
|
# above may be used (comma separated). 'none' will over-ride
|
||||||
|
# everything to nothing.
|
||||||
|
#
|
||||||
|
# memdbg = Enables the debugging memory allocator.
|
||||||
|
# compdbg = Enables byte compilation logging.
|
||||||
|
#
|
||||||
|
# MACHINE=(IX86|IA64|ALPHA)
|
||||||
|
# Set the machine type used for the compiler, linker, and
|
||||||
|
# resource compiler. This hook is needed to tell the tools
|
||||||
|
# when alternate platforms are requested. IX86 is the default
|
||||||
|
# when not specified.
|
||||||
|
#
|
||||||
|
# TMP_DIR=<path>
|
||||||
|
# OUT_DIR=<path>
|
||||||
|
# Hooks to allow the intermediate and output directories to be
|
||||||
|
# changed. $(OUT_DIR) is assumed to be
|
||||||
|
# $(BINROOT)\(Release|Debug) based on if symbols are requested.
|
||||||
|
# $(TMP_DIR) will de $(OUT_DIR)\<buildtype> by default.
|
||||||
|
#
|
||||||
|
# TESTPAT=<file>
|
||||||
|
# Reads the tests requested to be run from this file.
|
||||||
|
#
|
||||||
|
# CFG_ENCODING=encoding
|
||||||
|
# name of encoding for configuration information. Defaults
|
||||||
|
# to cp1252
|
||||||
|
#
|
||||||
|
# 5) Examples:
|
||||||
|
#
|
||||||
|
# Basic syntax of calling nmake looks like this:
|
||||||
|
# nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]]
|
||||||
|
#
|
||||||
|
# Standard (no frills)
|
||||||
|
# c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat
|
||||||
|
# Setting environment for using Microsoft Visual C++ tools.
|
||||||
|
# c:\tcl_src\win\>nmake -f makefile.vc all
|
||||||
|
# c:\tcl_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl
|
||||||
|
#
|
||||||
|
# Building for Win64
|
||||||
|
# c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat
|
||||||
|
# Setting environment for using Microsoft Visual C++ tools.
|
||||||
|
# c:\tcl_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL
|
||||||
|
# Targeting Windows pre64 RETAIL
|
||||||
|
# c:\tcl_src\win\>nmake -f makefile.vc MACHINE=IA64
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
#==============================================================================
|
||||||
|
###############################################################################
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!if !exist("makefile.vc")
|
||||||
|
MSG = ^
|
||||||
|
You must run this makefile only from the directory it is in.^
|
||||||
|
Please `cd` to its location first.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# Project specific information (EDIT)
|
||||||
|
#
|
||||||
|
# You should edit this with the name and version of your project. This
|
||||||
|
# information is used to generate the name of the package library and
|
||||||
|
# it's install location.
|
||||||
|
#
|
||||||
|
# For example, the sample extension is going to build sample04.dll and
|
||||||
|
# would install it into $(INSTALLDIR)\lib\sample04
|
||||||
|
#
|
||||||
|
# You need to specify the object files that need to be linked into your
|
||||||
|
# binary here.
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
PROJECT = sqlite3
|
||||||
|
!include "rules.vc"
|
||||||
|
|
||||||
|
# nmakehelp -V <file> <tag> will search the file for tag, skips until a
|
||||||
|
# number and returns all character until a character not in [0-9.ab]
|
||||||
|
# is read.
|
||||||
|
|
||||||
|
!if [echo REM = This file is generated from Makefile.vc > versions.vc]
|
||||||
|
!endif
|
||||||
|
# get project version from row "AC_INIT([sqlite], [3.7.14])"
|
||||||
|
!if [echo DOTVERSION = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\configure.in AC_INIT >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!include "versions.vc"
|
||||||
|
|
||||||
|
VERSION = $(DOTVERSION:.=)
|
||||||
|
STUBPREFIX = $(PROJECT)stub
|
||||||
|
|
||||||
|
DLLOBJS = \
|
||||||
|
$(TMP_DIR)\tclsqlite3.obj
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# Target names and paths ( shouldn't need changing )
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BINROOT = .
|
||||||
|
ROOT = ..
|
||||||
|
|
||||||
|
PRJIMPLIB = $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib
|
||||||
|
PRJLIBNAME = $(PROJECT)$(VERSION)$(SUFX).$(EXT)
|
||||||
|
PRJLIB = $(OUT_DIR)\$(PRJLIBNAME)
|
||||||
|
|
||||||
|
PRJSTUBLIBNAME = $(STUBPREFIX)$(VERSION).lib
|
||||||
|
PRJSTUBLIB = $(OUT_DIR)\$(PRJSTUBLIBNAME)
|
||||||
|
|
||||||
|
### Make sure we use backslash only.
|
||||||
|
PRJ_INSTALL_DIR = $(_INSTALLDIR)\$(PROJECT)$(DOTVERSION)
|
||||||
|
LIB_INSTALL_DIR = $(PRJ_INSTALL_DIR)
|
||||||
|
BIN_INSTALL_DIR = $(PRJ_INSTALL_DIR)
|
||||||
|
DOC_INSTALL_DIR = $(PRJ_INSTALL_DIR)
|
||||||
|
SCRIPT_INSTALL_DIR = $(PRJ_INSTALL_DIR)
|
||||||
|
INCLUDE_INSTALL_DIR = $(_TCLDIR)\include
|
||||||
|
|
||||||
|
### The following paths CANNOT have spaces in them.
|
||||||
|
GENERICDIR = $(ROOT)\generic
|
||||||
|
WINDIR = $(ROOT)\win
|
||||||
|
LIBDIR = $(ROOT)\library
|
||||||
|
DOCDIR = $(ROOT)\doc
|
||||||
|
TOOLSDIR = $(ROOT)\tools
|
||||||
|
COMPATDIR = $(ROOT)\compat
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# Compile flags
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
!if !$(DEBUG)
|
||||||
|
!if $(OPTIMIZING)
|
||||||
|
### This cranks the optimization level to maximize speed
|
||||||
|
cdebug = -O2 -Op -Gs
|
||||||
|
!else
|
||||||
|
cdebug =
|
||||||
|
!endif
|
||||||
|
!else if "$(MACHINE)" == "IA64"
|
||||||
|
### Warnings are too many, can't support warnings into errors.
|
||||||
|
cdebug = -Z7 -Od -GZ
|
||||||
|
!else
|
||||||
|
cdebug = -Z7 -WX -Od -GZ
|
||||||
|
!endif
|
||||||
|
|
||||||
|
### Declarations common to all compiler options
|
||||||
|
cflags = -nologo -c -W3 -YX -Fp$(TMP_DIR)^\
|
||||||
|
|
||||||
|
!if $(MSVCRT)
|
||||||
|
!if $(DEBUG)
|
||||||
|
crt = -MDd
|
||||||
|
!else
|
||||||
|
crt = -MD
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
!if $(DEBUG)
|
||||||
|
crt = -MTd
|
||||||
|
!else
|
||||||
|
crt = -MT
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
INCLUDES = $(TCL_INCLUDES) -I"$(WINDIR)" -I"$(GENERICDIR)" \
|
||||||
|
-I"$(ROOT)\.."
|
||||||
|
BASE_CLFAGS = $(cflags) $(cdebug) $(crt) $(INCLUDES) \
|
||||||
|
-DSQLITE_3_SUFFIX_ONLY=1 -DSQLITE_ENABLE_RTREE=1 \
|
||||||
|
-DSQLITE_ENABLE_FTS3=1 -DSQLITE_OMIT_DEPRECATED=1
|
||||||
|
CON_CFLAGS = $(cflags) $(cdebug) $(crt) -DCONSOLE -DSQLITE_ENABLE_FTS3=1
|
||||||
|
TCL_CFLAGS = -DBUILD_sqlite -DUSE_TCL_STUBS \
|
||||||
|
-DPACKAGE_VERSION="\"$(DOTVERSION)\"" $(BASE_CLFAGS) \
|
||||||
|
$(OPTDEFINES)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# Link flags
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
!if $(DEBUG)
|
||||||
|
ldebug = -debug:full -debugtype:cv
|
||||||
|
!else
|
||||||
|
ldebug = -release -opt:ref -opt:icf,3
|
||||||
|
!endif
|
||||||
|
|
||||||
|
### Declarations common to all linker options
|
||||||
|
lflags = -nologo -machine:$(MACHINE) $(ldebug)
|
||||||
|
|
||||||
|
!if $(PROFILE)
|
||||||
|
lflags = $(lflags) -profile
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if $(ALIGN98_HACK) && !$(STATIC_BUILD)
|
||||||
|
### Align sections for PE size savings.
|
||||||
|
lflags = $(lflags) -opt:nowin98
|
||||||
|
!else if !$(ALIGN98_HACK) && $(STATIC_BUILD)
|
||||||
|
### Align sections for speed in loading by choosing the virtual page size.
|
||||||
|
lflags = $(lflags) -align:4096
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if $(LOIMPACT)
|
||||||
|
lflags = $(lflags) -ws:aggressive
|
||||||
|
!endif
|
||||||
|
|
||||||
|
dlllflags = $(lflags) -dll
|
||||||
|
conlflags = $(lflags) -subsystem:console
|
||||||
|
guilflags = $(lflags) -subsystem:windows
|
||||||
|
baselibs = $(TCLSTUBLIB)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# TclTest flags
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
!IF "$(TESTPAT)" != ""
|
||||||
|
TESTFLAGS = $(TESTFLAGS) -file $(TESTPAT)
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# Project specific targets (EDIT)
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
all: setup $(PROJECT)
|
||||||
|
$(PROJECT): setup $(PRJLIB)
|
||||||
|
install: install-binaries install-libraries install-docs
|
||||||
|
|
||||||
|
# Tests need to ensure we load the right dll file we
|
||||||
|
# have to handle the output differently on Win9x.
|
||||||
|
#
|
||||||
|
!if "$(OS)" == "Windows_NT" || "$(MSVCDIR)" == "IDE"
|
||||||
|
test: setup $(PROJECT)
|
||||||
|
set TCL_LIBRARY=$(ROOT)/library
|
||||||
|
$(TCLSH) <<
|
||||||
|
load $(PRJLIB:\=/)
|
||||||
|
cd "$(ROOT)/tests"
|
||||||
|
set argv "$(TESTFLAGS)"
|
||||||
|
source all.tcl
|
||||||
|
<<
|
||||||
|
!else
|
||||||
|
test: setup $(PROJECT)
|
||||||
|
echo Please wait while the test results are collected
|
||||||
|
set TCL_LIBRARY=$(ROOT)/library
|
||||||
|
$(TCLSH) << >tests.log
|
||||||
|
load $(PRJLIB:\=/)
|
||||||
|
cd "$(ROOT)/tests"
|
||||||
|
set argv "$(TESTFLAGS)"
|
||||||
|
source all.tcl
|
||||||
|
<<
|
||||||
|
type tests.log | more
|
||||||
|
!endif
|
||||||
|
|
||||||
|
setup:
|
||||||
|
@if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR)
|
||||||
|
@if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR)
|
||||||
|
|
||||||
|
$(PRJLIB): $(DLLOBJS)
|
||||||
|
$(link32) $(dlllflags) -out:$@ $(baselibs) @<<
|
||||||
|
$**
|
||||||
|
<<
|
||||||
|
-@del $*.exp
|
||||||
|
|
||||||
|
$(PRJSTUBLIB): $(PRJSTUBOBJS)
|
||||||
|
$(lib32) -nologo -out:$@ $(PRJSTUBOBJS)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# Implicit rules
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
{$(WINDIR)}.c{$(TMP_DIR)}.obj::
|
||||||
|
$(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ @<<
|
||||||
|
$<
|
||||||
|
<<
|
||||||
|
|
||||||
|
{$(GENERICDIR)}.c{$(TMP_DIR)}.obj::
|
||||||
|
$(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ @<<
|
||||||
|
$<
|
||||||
|
<<
|
||||||
|
|
||||||
|
{$(COMPATDIR)}.c{$(TMP_DIR)}.obj::
|
||||||
|
$(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ @<<
|
||||||
|
$<
|
||||||
|
<<
|
||||||
|
|
||||||
|
{$(WINDIR)}.rc{$(TMP_DIR)}.res:
|
||||||
|
$(rc32) -fo $@ -r -i "$(GENERICDIR)" -D__WIN32__ \
|
||||||
|
!if $(DEBUG)
|
||||||
|
-d DEBUG \
|
||||||
|
!endif
|
||||||
|
!if $(TCL_THREADS)
|
||||||
|
-d TCL_THREADS \
|
||||||
|
!endif
|
||||||
|
!if $(STATIC_BUILD)
|
||||||
|
-d STATIC_BUILD \
|
||||||
|
!endif
|
||||||
|
$<
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES:.c .rc
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# Installation. (EDIT)
|
||||||
|
#
|
||||||
|
# You may need to modify this section to reflect the final distribution
|
||||||
|
# of your files and possibly to generate documentation.
|
||||||
|
#
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
install-binaries:
|
||||||
|
@echo Installing binaries to '$(SCRIPT_INSTALL_DIR)'
|
||||||
|
@if not exist "$(SCRIPT_INSTALL_DIR)" mkdir "$(SCRIPT_INSTALL_DIR)"
|
||||||
|
@$(CPY) $(PRJLIB) "$(SCRIPT_INSTALL_DIR)" >NUL
|
||||||
|
|
||||||
|
install-libraries:
|
||||||
|
@echo Installing libraries to '$(SCRIPT_INSTALL_DIR)'
|
||||||
|
@if exist $(LIBDIR) $(CPY) $(LIBDIR)\*.tcl "$(SCRIPT_INSTALL_DIR)"
|
||||||
|
@echo Installing package index in '$(SCRIPT_INSTALL_DIR)'
|
||||||
|
@type << >"$(SCRIPT_INSTALL_DIR)\pkgIndex.tcl"
|
||||||
|
package ifneeded $(PROJECT) $(DOTVERSION) \
|
||||||
|
[list load [file join $$dir $(PRJLIBNAME)] sqlite3]
|
||||||
|
<<
|
||||||
|
|
||||||
|
install-docs:
|
||||||
|
@echo Installing documentation files to '$(DOC_INSTALL_DIR)'
|
||||||
|
@if exist $(DOCDIR) $(CPY) $(DOCDIR)\*.n "$(DOC_INSTALL_DIR)"
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
# Clean up
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@if exist $(TMP_DIR)\nul $(RMDIR) $(TMP_DIR)
|
||||||
|
@if exist $(WINDIR)\version.vc del $(WINDIR)\version.vc
|
||||||
|
|
||||||
|
realclean: clean
|
||||||
|
@if exist $(OUT_DIR)\nul $(RMDIR) $(OUT_DIR)
|
||||||
|
|
||||||
|
distclean: realclean
|
||||||
|
@if exist $(WINDIR)\nmakehlp.exe del $(WINDIR)\nmakehlp.exe
|
||||||
|
@if exist $(WINDIR)\nmakehlp.obj del $(WINDIR)\nmakehlp.obj
|
694
contrib/sqlite3/tea/win/nmakehlp.c
Normal file
694
contrib/sqlite3/tea/win/nmakehlp.c
Normal file
|
@ -0,0 +1,694 @@
|
||||||
|
/*
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
* nmakehlp.c --
|
||||||
|
*
|
||||||
|
* This is used to fix limitations within nmake and the environment.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2002 by David Gravereaux.
|
||||||
|
* Copyright (c) 2006 by Pat Thoyts
|
||||||
|
*
|
||||||
|
* See the file "license.terms" for information on usage and redistribution of
|
||||||
|
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define _CRT_SECURE_NO_DEPRECATE
|
||||||
|
#include <windows.h>
|
||||||
|
#define NO_SHLWAPI_GDI
|
||||||
|
#define NO_SHLWAPI_STREAM
|
||||||
|
#define NO_SHLWAPI_REG
|
||||||
|
#include <shlwapi.h>
|
||||||
|
#pragma comment (lib, "user32.lib")
|
||||||
|
#pragma comment (lib, "kernel32.lib")
|
||||||
|
#pragma comment (lib, "shlwapi.lib")
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This library is required for x64 builds with _some_ versions of MSVC
|
||||||
|
*/
|
||||||
|
#if defined(_M_IA64) || defined(_M_AMD64)
|
||||||
|
#if _MSC_VER >= 1400 && _MSC_VER < 1500
|
||||||
|
#pragma comment(lib, "bufferoverflowU")
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ISO hack for dumb VC++ */
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* protos */
|
||||||
|
|
||||||
|
static int CheckForCompilerFeature(const char *option);
|
||||||
|
static int CheckForLinkerFeature(const char *option);
|
||||||
|
static int IsIn(const char *string, const char *substring);
|
||||||
|
static int SubstituteFile(const char *substs, const char *filename);
|
||||||
|
static int QualifyPath(const char *path);
|
||||||
|
static const char *GetVersionFromFile(const char *filename, const char *match);
|
||||||
|
static DWORD WINAPI ReadFromPipe(LPVOID args);
|
||||||
|
|
||||||
|
/* globals */
|
||||||
|
|
||||||
|
#define CHUNK 25
|
||||||
|
#define STATICBUFFERSIZE 1000
|
||||||
|
typedef struct {
|
||||||
|
HANDLE pipe;
|
||||||
|
char buffer[STATICBUFFERSIZE];
|
||||||
|
} pipeinfo;
|
||||||
|
|
||||||
|
pipeinfo Out = {INVALID_HANDLE_VALUE, '\0'};
|
||||||
|
pipeinfo Err = {INVALID_HANDLE_VALUE, '\0'};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* exitcodes: 0 == no, 1 == yes, 2 == error
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
main(
|
||||||
|
int argc,
|
||||||
|
char *argv[])
|
||||||
|
{
|
||||||
|
char msg[300];
|
||||||
|
DWORD dwWritten;
|
||||||
|
int chars;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure children (cl.exe and link.exe) are kept quiet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure the compiler and linker aren't effected by the outside world.
|
||||||
|
*/
|
||||||
|
|
||||||
|
SetEnvironmentVariable("CL", "");
|
||||||
|
SetEnvironmentVariable("LINK", "");
|
||||||
|
|
||||||
|
if (argc > 1 && *argv[1] == '-') {
|
||||||
|
switch (*(argv[1]+1)) {
|
||||||
|
case 'c':
|
||||||
|
if (argc != 3) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -c <compiler option>\n"
|
||||||
|
"Tests for whether cl.exe supports an option\n"
|
||||||
|
"exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return CheckForCompilerFeature(argv[2]);
|
||||||
|
case 'l':
|
||||||
|
if (argc != 3) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -l <linker option>\n"
|
||||||
|
"Tests for whether link.exe supports an option\n"
|
||||||
|
"exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return CheckForLinkerFeature(argv[2]);
|
||||||
|
case 'f':
|
||||||
|
if (argc == 2) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -f <string> <substring>\n"
|
||||||
|
"Find a substring within another\n"
|
||||||
|
"exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
} else if (argc == 3) {
|
||||||
|
/*
|
||||||
|
* If the string is blank, there is no match.
|
||||||
|
*/
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return IsIn(argv[2], argv[3]);
|
||||||
|
}
|
||||||
|
case 's':
|
||||||
|
if (argc == 2) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -s <substitutions file> <file>\n"
|
||||||
|
"Perform a set of string map type substutitions on a file\n"
|
||||||
|
"exitcodes: 0\n",
|
||||||
|
argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return SubstituteFile(argv[2], argv[3]);
|
||||||
|
case 'V':
|
||||||
|
if (argc != 4) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -V filename matchstring\n"
|
||||||
|
"Extract a version from a file:\n"
|
||||||
|
"eg: pkgIndex.tcl \"package ifneeded http\"",
|
||||||
|
argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
printf("%s\n", GetVersionFromFile(argv[2], argv[3]));
|
||||||
|
return 0;
|
||||||
|
case 'Q':
|
||||||
|
if (argc != 3) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -Q path\n"
|
||||||
|
"Emit the fully qualified path\n"
|
||||||
|
"exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return QualifyPath(argv[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -c|-f|-l|-Q|-s|-V ...\n"
|
||||||
|
"This is a little helper app to equalize shell differences between WinNT and\n"
|
||||||
|
"Win9x and get nmake.exe to accomplish its job.\n",
|
||||||
|
argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
CheckForCompilerFeature(
|
||||||
|
const char *option)
|
||||||
|
{
|
||||||
|
STARTUPINFO si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
SECURITY_ATTRIBUTES sa;
|
||||||
|
DWORD threadID;
|
||||||
|
char msg[300];
|
||||||
|
BOOL ok;
|
||||||
|
HANDLE hProcess, h, pipeThreads[2];
|
||||||
|
char cmdline[100];
|
||||||
|
|
||||||
|
hProcess = GetCurrentProcess();
|
||||||
|
|
||||||
|
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
|
||||||
|
ZeroMemory(&si, sizeof(STARTUPINFO));
|
||||||
|
si.cb = sizeof(STARTUPINFO);
|
||||||
|
si.dwFlags = STARTF_USESTDHANDLES;
|
||||||
|
si.hStdInput = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
|
ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
|
||||||
|
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||||
|
sa.lpSecurityDescriptor = NULL;
|
||||||
|
sa.bInheritHandle = FALSE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a non-inheritible pipe.
|
||||||
|
*/
|
||||||
|
|
||||||
|
CreatePipe(&Out.pipe, &h, &sa, 0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dupe the write side, make it inheritible, and close the original.
|
||||||
|
*/
|
||||||
|
|
||||||
|
DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE,
|
||||||
|
DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Same as above, but for the error side.
|
||||||
|
*/
|
||||||
|
|
||||||
|
CreatePipe(&Err.pipe, &h, &sa, 0);
|
||||||
|
DuplicateHandle(hProcess, h, hProcess, &si.hStdError, 0, TRUE,
|
||||||
|
DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Base command line.
|
||||||
|
*/
|
||||||
|
|
||||||
|
lstrcpy(cmdline, "cl.exe -nologo -c -TC -Zs -X -Fp.\\_junk.pch ");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Append our option for testing
|
||||||
|
*/
|
||||||
|
|
||||||
|
lstrcat(cmdline, option);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filename to compile, which exists, but is nothing and empty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
lstrcat(cmdline, " .\\nul");
|
||||||
|
|
||||||
|
ok = CreateProcess(
|
||||||
|
NULL, /* Module name. */
|
||||||
|
cmdline, /* Command line. */
|
||||||
|
NULL, /* Process handle not inheritable. */
|
||||||
|
NULL, /* Thread handle not inheritable. */
|
||||||
|
TRUE, /* yes, inherit handles. */
|
||||||
|
DETACHED_PROCESS, /* No console for you. */
|
||||||
|
NULL, /* Use parent's environment block. */
|
||||||
|
NULL, /* Use parent's starting directory. */
|
||||||
|
&si, /* Pointer to STARTUPINFO structure. */
|
||||||
|
&pi); /* Pointer to PROCESS_INFORMATION structure. */
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
|
DWORD err = GetLastError();
|
||||||
|
int chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
|
||||||
|
|
||||||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|
|
||||||
|
FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID)&msg[chars],
|
||||||
|
(300-chars), 0);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, lstrlen(msg), &err,NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Close our references to the write handles that have now been inherited.
|
||||||
|
*/
|
||||||
|
|
||||||
|
CloseHandle(si.hStdOutput);
|
||||||
|
CloseHandle(si.hStdError);
|
||||||
|
|
||||||
|
WaitForInputIdle(pi.hProcess, 5000);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start the pipe reader threads.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pipeThreads[0] = CreateThread(NULL, 0, ReadFromPipe, &Out, 0, &threadID);
|
||||||
|
pipeThreads[1] = CreateThread(NULL, 0, ReadFromPipe, &Err, 0, &threadID);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Block waiting for the process to end.
|
||||||
|
*/
|
||||||
|
|
||||||
|
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait for our pipe to get done reading, should it be a little slow.
|
||||||
|
*/
|
||||||
|
|
||||||
|
WaitForMultipleObjects(2, pipeThreads, TRUE, 500);
|
||||||
|
CloseHandle(pipeThreads[0]);
|
||||||
|
CloseHandle(pipeThreads[1]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Look for the commandline warning code in both streams.
|
||||||
|
* - in MSVC 6 & 7 we get D4002, in MSVC 8 we get D9002.
|
||||||
|
*/
|
||||||
|
|
||||||
|
return !(strstr(Out.buffer, "D4002") != NULL
|
||||||
|
|| strstr(Err.buffer, "D4002") != NULL
|
||||||
|
|| strstr(Out.buffer, "D9002") != NULL
|
||||||
|
|| strstr(Err.buffer, "D9002") != NULL
|
||||||
|
|| strstr(Out.buffer, "D2021") != NULL
|
||||||
|
|| strstr(Err.buffer, "D2021") != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
CheckForLinkerFeature(
|
||||||
|
const char *option)
|
||||||
|
{
|
||||||
|
STARTUPINFO si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
SECURITY_ATTRIBUTES sa;
|
||||||
|
DWORD threadID;
|
||||||
|
char msg[300];
|
||||||
|
BOOL ok;
|
||||||
|
HANDLE hProcess, h, pipeThreads[2];
|
||||||
|
char cmdline[100];
|
||||||
|
|
||||||
|
hProcess = GetCurrentProcess();
|
||||||
|
|
||||||
|
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
|
||||||
|
ZeroMemory(&si, sizeof(STARTUPINFO));
|
||||||
|
si.cb = sizeof(STARTUPINFO);
|
||||||
|
si.dwFlags = STARTF_USESTDHANDLES;
|
||||||
|
si.hStdInput = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
|
ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
|
||||||
|
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||||
|
sa.lpSecurityDescriptor = NULL;
|
||||||
|
sa.bInheritHandle = TRUE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a non-inheritible pipe.
|
||||||
|
*/
|
||||||
|
|
||||||
|
CreatePipe(&Out.pipe, &h, &sa, 0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dupe the write side, make it inheritible, and close the original.
|
||||||
|
*/
|
||||||
|
|
||||||
|
DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE,
|
||||||
|
DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Same as above, but for the error side.
|
||||||
|
*/
|
||||||
|
|
||||||
|
CreatePipe(&Err.pipe, &h, &sa, 0);
|
||||||
|
DuplicateHandle(hProcess, h, hProcess, &si.hStdError, 0, TRUE,
|
||||||
|
DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Base command line.
|
||||||
|
*/
|
||||||
|
|
||||||
|
lstrcpy(cmdline, "link.exe -nologo ");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Append our option for testing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
lstrcat(cmdline, option);
|
||||||
|
|
||||||
|
ok = CreateProcess(
|
||||||
|
NULL, /* Module name. */
|
||||||
|
cmdline, /* Command line. */
|
||||||
|
NULL, /* Process handle not inheritable. */
|
||||||
|
NULL, /* Thread handle not inheritable. */
|
||||||
|
TRUE, /* yes, inherit handles. */
|
||||||
|
DETACHED_PROCESS, /* No console for you. */
|
||||||
|
NULL, /* Use parent's environment block. */
|
||||||
|
NULL, /* Use parent's starting directory. */
|
||||||
|
&si, /* Pointer to STARTUPINFO structure. */
|
||||||
|
&pi); /* Pointer to PROCESS_INFORMATION structure. */
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
|
DWORD err = GetLastError();
|
||||||
|
int chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
|
||||||
|
|
||||||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|
|
||||||
|
FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID)&msg[chars],
|
||||||
|
(300-chars), 0);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, lstrlen(msg), &err,NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Close our references to the write handles that have now been inherited.
|
||||||
|
*/
|
||||||
|
|
||||||
|
CloseHandle(si.hStdOutput);
|
||||||
|
CloseHandle(si.hStdError);
|
||||||
|
|
||||||
|
WaitForInputIdle(pi.hProcess, 5000);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start the pipe reader threads.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pipeThreads[0] = CreateThread(NULL, 0, ReadFromPipe, &Out, 0, &threadID);
|
||||||
|
pipeThreads[1] = CreateThread(NULL, 0, ReadFromPipe, &Err, 0, &threadID);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Block waiting for the process to end.
|
||||||
|
*/
|
||||||
|
|
||||||
|
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait for our pipe to get done reading, should it be a little slow.
|
||||||
|
*/
|
||||||
|
|
||||||
|
WaitForMultipleObjects(2, pipeThreads, TRUE, 500);
|
||||||
|
CloseHandle(pipeThreads[0]);
|
||||||
|
CloseHandle(pipeThreads[1]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Look for the commandline warning code in the stderr stream.
|
||||||
|
*/
|
||||||
|
|
||||||
|
return !(strstr(Out.buffer, "LNK1117") != NULL ||
|
||||||
|
strstr(Err.buffer, "LNK1117") != NULL ||
|
||||||
|
strstr(Out.buffer, "LNK4044") != NULL ||
|
||||||
|
strstr(Err.buffer, "LNK4044") != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DWORD WINAPI
|
||||||
|
ReadFromPipe(
|
||||||
|
LPVOID args)
|
||||||
|
{
|
||||||
|
pipeinfo *pi = (pipeinfo *) args;
|
||||||
|
char *lastBuf = pi->buffer;
|
||||||
|
DWORD dwRead;
|
||||||
|
BOOL ok;
|
||||||
|
|
||||||
|
again:
|
||||||
|
if (lastBuf - pi->buffer + CHUNK > STATICBUFFERSIZE) {
|
||||||
|
CloseHandle(pi->pipe);
|
||||||
|
return (DWORD)-1;
|
||||||
|
}
|
||||||
|
ok = ReadFile(pi->pipe, lastBuf, CHUNK, &dwRead, 0L);
|
||||||
|
if (!ok || dwRead == 0) {
|
||||||
|
CloseHandle(pi->pipe);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
lastBuf += dwRead;
|
||||||
|
goto again;
|
||||||
|
|
||||||
|
return 0; /* makes the compiler happy */
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
IsIn(
|
||||||
|
const char *string,
|
||||||
|
const char *substring)
|
||||||
|
{
|
||||||
|
return (strstr(string, substring) != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GetVersionFromFile --
|
||||||
|
* Looks for a match string in a file and then returns the version
|
||||||
|
* following the match where a version is anything acceptable to
|
||||||
|
* package provide or package ifneeded.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
GetVersionFromFile(
|
||||||
|
const char *filename,
|
||||||
|
const char *match)
|
||||||
|
{
|
||||||
|
size_t cbBuffer = 100;
|
||||||
|
static char szBuffer[100];
|
||||||
|
char *szResult = NULL;
|
||||||
|
FILE *fp = fopen(filename, "rt");
|
||||||
|
|
||||||
|
if (fp != NULL) {
|
||||||
|
/*
|
||||||
|
* Read data until we see our match string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
while (fgets(szBuffer, cbBuffer, fp) != NULL) {
|
||||||
|
LPSTR p, q;
|
||||||
|
|
||||||
|
p = strstr(szBuffer, match);
|
||||||
|
if (p != NULL) {
|
||||||
|
/*
|
||||||
|
* Skip to first digit.
|
||||||
|
*/
|
||||||
|
|
||||||
|
while (*p && !isdigit(*p)) {
|
||||||
|
++p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find ending whitespace.
|
||||||
|
*/
|
||||||
|
|
||||||
|
q = p;
|
||||||
|
while (*q && (isalnum(*q) || *q == '.')) {
|
||||||
|
++q;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(szBuffer, p, q - p);
|
||||||
|
szBuffer[q-p] = 0;
|
||||||
|
szResult = szBuffer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
return szResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List helpers for the SubstituteFile function
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct list_item_t {
|
||||||
|
struct list_item_t *nextPtr;
|
||||||
|
char * key;
|
||||||
|
char * value;
|
||||||
|
} list_item_t;
|
||||||
|
|
||||||
|
/* insert a list item into the list (list may be null) */
|
||||||
|
static list_item_t *
|
||||||
|
list_insert(list_item_t **listPtrPtr, const char *key, const char *value)
|
||||||
|
{
|
||||||
|
list_item_t *itemPtr = malloc(sizeof(list_item_t));
|
||||||
|
if (itemPtr) {
|
||||||
|
itemPtr->key = strdup(key);
|
||||||
|
itemPtr->value = strdup(value);
|
||||||
|
itemPtr->nextPtr = NULL;
|
||||||
|
|
||||||
|
while(*listPtrPtr) {
|
||||||
|
listPtrPtr = &(*listPtrPtr)->nextPtr;
|
||||||
|
}
|
||||||
|
*listPtrPtr = itemPtr;
|
||||||
|
}
|
||||||
|
return itemPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
list_free(list_item_t **listPtrPtr)
|
||||||
|
{
|
||||||
|
list_item_t *tmpPtr, *listPtr = *listPtrPtr;
|
||||||
|
while (listPtr) {
|
||||||
|
tmpPtr = listPtr;
|
||||||
|
listPtr = listPtr->nextPtr;
|
||||||
|
free(tmpPtr->key);
|
||||||
|
free(tmpPtr->value);
|
||||||
|
free(tmpPtr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SubstituteFile --
|
||||||
|
* As windows doesn't provide anything useful like sed and it's unreliable
|
||||||
|
* to use the tclsh you are building against (consider x-platform builds -
|
||||||
|
* eg compiling AMD64 target from IX86) we provide a simple substitution
|
||||||
|
* option here to handle autoconf style substitutions.
|
||||||
|
* The substitution file is whitespace and line delimited. The file should
|
||||||
|
* consist of lines matching the regular expression:
|
||||||
|
* \s*\S+\s+\S*$
|
||||||
|
*
|
||||||
|
* Usage is something like:
|
||||||
|
* nmakehlp -S << $** > $@
|
||||||
|
* @PACKAGE_NAME@ $(PACKAGE_NAME)
|
||||||
|
* @PACKAGE_VERSION@ $(PACKAGE_VERSION)
|
||||||
|
* <<
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int
|
||||||
|
SubstituteFile(
|
||||||
|
const char *substitutions,
|
||||||
|
const char *filename)
|
||||||
|
{
|
||||||
|
size_t cbBuffer = 1024;
|
||||||
|
static char szBuffer[1024], szCopy[1024];
|
||||||
|
char *szResult = NULL;
|
||||||
|
list_item_t *substPtr = NULL;
|
||||||
|
FILE *fp, *sp;
|
||||||
|
|
||||||
|
fp = fopen(filename, "rt");
|
||||||
|
if (fp != NULL) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Build a list of substutitions from the first filename
|
||||||
|
*/
|
||||||
|
|
||||||
|
sp = fopen(substitutions, "rt");
|
||||||
|
if (sp != NULL) {
|
||||||
|
while (fgets(szBuffer, cbBuffer, sp) != NULL) {
|
||||||
|
unsigned char *ks, *ke, *vs, *ve;
|
||||||
|
ks = (unsigned char*)szBuffer;
|
||||||
|
while (ks && *ks && isspace(*ks)) ++ks;
|
||||||
|
ke = ks;
|
||||||
|
while (ke && *ke && !isspace(*ke)) ++ke;
|
||||||
|
vs = ke;
|
||||||
|
while (vs && *vs && isspace(*vs)) ++vs;
|
||||||
|
ve = vs;
|
||||||
|
while (ve && *ve && !(*ve == '\r' || *ve == '\n')) ++ve;
|
||||||
|
*ke = 0, *ve = 0;
|
||||||
|
list_insert(&substPtr, (char*)ks, (char*)vs);
|
||||||
|
}
|
||||||
|
fclose(sp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* debug: dump the list */
|
||||||
|
#ifdef _DEBUG
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
list_item_t *p = NULL;
|
||||||
|
for (p = substPtr; p != NULL; p = p->nextPtr, ++n) {
|
||||||
|
fprintf(stderr, "% 3d '%s' => '%s'\n", n, p->key, p->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Run the substitutions over each line of the input
|
||||||
|
*/
|
||||||
|
|
||||||
|
while (fgets(szBuffer, cbBuffer, fp) != NULL) {
|
||||||
|
list_item_t *p = NULL;
|
||||||
|
for (p = substPtr; p != NULL; p = p->nextPtr) {
|
||||||
|
char *m = strstr(szBuffer, p->key);
|
||||||
|
if (m) {
|
||||||
|
char *cp, *op, *sp;
|
||||||
|
cp = szCopy;
|
||||||
|
op = szBuffer;
|
||||||
|
while (op != m) *cp++ = *op++;
|
||||||
|
sp = p->value;
|
||||||
|
while (sp && *sp) *cp++ = *sp++;
|
||||||
|
op += strlen(p->key);
|
||||||
|
while (*op) *cp++ = *op++;
|
||||||
|
*cp = 0;
|
||||||
|
memcpy(szBuffer, szCopy, sizeof(szCopy));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf(szBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
list_free(&substPtr);
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* QualifyPath --
|
||||||
|
*
|
||||||
|
* This composes the current working directory with a provided path
|
||||||
|
* and returns the fully qualified and normalized path.
|
||||||
|
* Mostly needed to setup paths for testing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int
|
||||||
|
QualifyPath(
|
||||||
|
const char *szPath)
|
||||||
|
{
|
||||||
|
char szCwd[MAX_PATH + 1];
|
||||||
|
char szTmp[MAX_PATH + 1];
|
||||||
|
char *p;
|
||||||
|
GetCurrentDirectory(MAX_PATH, szCwd);
|
||||||
|
while ((p = strchr(szPath, '/')) && *p)
|
||||||
|
*p = '\\';
|
||||||
|
PathCombine(szTmp, szCwd, szPath);
|
||||||
|
PathCanonicalize(szCwd, szTmp);
|
||||||
|
printf("%s\n", szCwd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Local variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 4
|
||||||
|
* fill-column: 78
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
*/
|
711
contrib/sqlite3/tea/win/rules.vc
Normal file
711
contrib/sqlite3/tea/win/rules.vc
Normal file
|
@ -0,0 +1,711 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# rules.vc --
|
||||||
|
#
|
||||||
|
# Microsoft Visual C++ makefile include for decoding the commandline
|
||||||
|
# macros. This file does not need editing to build Tcl.
|
||||||
|
#
|
||||||
|
# See the file "license.terms" for information on usage and redistribution
|
||||||
|
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2001-2003 David Gravereaux.
|
||||||
|
# Copyright (c) 2003-2008 Patrick Thoyts
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!ifndef _RULES_VC
|
||||||
|
_RULES_VC = 1
|
||||||
|
|
||||||
|
cc32 = $(CC) # built-in default.
|
||||||
|
link32 = link
|
||||||
|
lib32 = lib
|
||||||
|
rc32 = $(RC) # built-in default.
|
||||||
|
|
||||||
|
!ifndef INSTALLDIR
|
||||||
|
### Assume the normal default.
|
||||||
|
_INSTALLDIR = C:\Program Files\Tcl
|
||||||
|
!else
|
||||||
|
### Fix the path separators.
|
||||||
|
_INSTALLDIR = $(INSTALLDIR:/=\)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Set the proper copy method to avoid overwrite questions
|
||||||
|
# to the user when copying files and selecting the right
|
||||||
|
# "delete all" method.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(OS)" == "Windows_NT"
|
||||||
|
RMDIR = rmdir /S /Q
|
||||||
|
ERRNULL = 2>NUL
|
||||||
|
!if ![ver | find "4.0" > nul]
|
||||||
|
CPY = echo y | xcopy /i >NUL
|
||||||
|
COPY = copy >NUL
|
||||||
|
!else
|
||||||
|
CPY = xcopy /i /y >NUL
|
||||||
|
COPY = copy /y >NUL
|
||||||
|
!endif
|
||||||
|
!else # "$(OS)" != "Windows_NT"
|
||||||
|
CPY = xcopy /i >_JUNK.OUT # On Win98 NUL does not work here.
|
||||||
|
COPY = copy >_JUNK.OUT # On Win98 NUL does not work here.
|
||||||
|
RMDIR = deltree /Y
|
||||||
|
NULL = \NUL # Used in testing directory existence
|
||||||
|
ERRNULL = >NUL # Win9x shell cannot redirect stderr
|
||||||
|
!endif
|
||||||
|
MKDIR = mkdir
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Determine the host and target architectures and compiler version.
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
_HASH=^#
|
||||||
|
_VC_MANIFEST_EMBED_EXE=
|
||||||
|
_VC_MANIFEST_EMBED_DLL=
|
||||||
|
VCVER=0
|
||||||
|
!if ![echo VCVERSION=_MSC_VER > vercl.x] \
|
||||||
|
&& ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
|
||||||
|
&& ![echo ARCH=IX86 >> vercl.x] \
|
||||||
|
&& ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
|
||||||
|
&& ![echo ARCH=AMD64 >> vercl.x] \
|
||||||
|
&& ![echo $(_HASH)endif >> vercl.x] \
|
||||||
|
&& ![cl -nologo -TC -P vercl.x $(ERRNULL)]
|
||||||
|
!include vercl.i
|
||||||
|
!if ![echo VCVER= ^\> vercl.vc] \
|
||||||
|
&& ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
|
||||||
|
!include vercl.vc
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if ![reg query HKLM\Hardware\Description\System\CentralProcessor\0 /v Identifier | findstr /i x86]
|
||||||
|
NATIVE_ARCH=IX86
|
||||||
|
!else
|
||||||
|
NATIVE_ARCH=AMD64
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Since MSVC8 we must deal with manifest resources.
|
||||||
|
!if $(VCVERSION) >= 1400
|
||||||
|
_VC_MANIFEST_EMBED_EXE=if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;1
|
||||||
|
_VC_MANIFEST_EMBED_DLL=if exist $@.manifest mt -nologo -manifest $@.manifest -outputresource:$@;2
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifndef MACHINE
|
||||||
|
MACHINE=$(ARCH)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifndef CFG_ENCODING
|
||||||
|
CFG_ENCODING = \"cp1252\"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!message ===============================================================================
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# build the helper app we need to overcome nmake's limiting
|
||||||
|
# environment.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if !exist(nmakehlp.exe)
|
||||||
|
!if [$(cc32) -nologo nmakehlp.c -link -subsystem:console > nul]
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Test for compiler features
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
### test for optimizations
|
||||||
|
!if [nmakehlp -c -Ot]
|
||||||
|
!message *** Compiler has 'Optimizations'
|
||||||
|
OPTIMIZING = 1
|
||||||
|
!else
|
||||||
|
!message *** Compiler does not have 'Optimizations'
|
||||||
|
OPTIMIZING = 0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
OPTIMIZATIONS =
|
||||||
|
|
||||||
|
!if [nmakehlp -c -Ot]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -Ot
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if [nmakehlp -c -Oi]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -Oi
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if [nmakehlp -c -Op]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -Op
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if [nmakehlp -c -fp:strict]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -fp:strict
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if [nmakehlp -c -Gs]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -Gs
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if [nmakehlp -c -GS]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -GS
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if [nmakehlp -c -GL]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -GL
|
||||||
|
!endif
|
||||||
|
|
||||||
|
DEBUGFLAGS =
|
||||||
|
|
||||||
|
!if [nmakehlp -c -RTC1]
|
||||||
|
DEBUGFLAGS = $(DEBUGFLAGS) -RTC1
|
||||||
|
!elseif [nmakehlp -c -GZ]
|
||||||
|
DEBUGFLAGS = $(DEBUGFLAGS) -GZ
|
||||||
|
!endif
|
||||||
|
|
||||||
|
COMPILERFLAGS =-W3 -DUNICODE -D_UNICODE
|
||||||
|
|
||||||
|
# In v13 -GL and -YX are incompatible.
|
||||||
|
!if [nmakehlp -c -YX]
|
||||||
|
!if ![nmakehlp -c -GL]
|
||||||
|
OPTIMIZATIONS = $(OPTIMIZATIONS) -YX
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(MACHINE)" == "IX86"
|
||||||
|
### test for pentium errata
|
||||||
|
!if [nmakehlp -c -QI0f]
|
||||||
|
!message *** Compiler has 'Pentium 0x0f fix'
|
||||||
|
COMPILERFLAGS = $(COMPILERFLAGS) -QI0f
|
||||||
|
!else
|
||||||
|
!message *** Compiler does not have 'Pentium 0x0f fix'
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(MACHINE)" == "IA64"
|
||||||
|
### test for Itanium errata
|
||||||
|
!if [nmakehlp -c -QIA64_Bx]
|
||||||
|
!message *** Compiler has 'B-stepping errata workarounds'
|
||||||
|
COMPILERFLAGS = $(COMPILERFLAGS) -QIA64_Bx
|
||||||
|
!else
|
||||||
|
!message *** Compiler does not have 'B-stepping errata workarounds'
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(MACHINE)" == "IX86"
|
||||||
|
### test for -align:4096, when align:512 will do.
|
||||||
|
!if [nmakehlp -l -opt:nowin98]
|
||||||
|
!message *** Linker has 'Win98 alignment problem'
|
||||||
|
ALIGN98_HACK = 1
|
||||||
|
!else
|
||||||
|
!message *** Linker does not have 'Win98 alignment problem'
|
||||||
|
ALIGN98_HACK = 0
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
ALIGN98_HACK = 0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
LINKERFLAGS =
|
||||||
|
|
||||||
|
!if [nmakehlp -l -ltcg]
|
||||||
|
LINKERFLAGS =-ltcg
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Decode the options requested.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(OPTS)" == "" || [nmakehlp -f "$(OPTS)" "none"]
|
||||||
|
STATIC_BUILD = 0
|
||||||
|
TCL_THREADS = 1
|
||||||
|
DEBUG = 0
|
||||||
|
SYMBOLS = 0
|
||||||
|
PROFILE = 0
|
||||||
|
PGO = 0
|
||||||
|
MSVCRT = 0
|
||||||
|
LOIMPACT = 0
|
||||||
|
TCL_USE_STATIC_PACKAGES = 0
|
||||||
|
USE_THREAD_ALLOC = 1
|
||||||
|
UNCHECKED = 0
|
||||||
|
!else
|
||||||
|
!if [nmakehlp -f $(OPTS) "static"]
|
||||||
|
!message *** Doing static
|
||||||
|
STATIC_BUILD = 1
|
||||||
|
!else
|
||||||
|
STATIC_BUILD = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "msvcrt"]
|
||||||
|
!message *** Doing msvcrt
|
||||||
|
MSVCRT = 1
|
||||||
|
!else
|
||||||
|
MSVCRT = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "staticpkg"]
|
||||||
|
!message *** Doing staticpkg
|
||||||
|
TCL_USE_STATIC_PACKAGES = 1
|
||||||
|
!else
|
||||||
|
TCL_USE_STATIC_PACKAGES = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "nothreads"]
|
||||||
|
!message *** Compile explicitly for non-threaded tcl
|
||||||
|
TCL_THREADS = 0
|
||||||
|
!else
|
||||||
|
TCL_THREADS = 1
|
||||||
|
USE_THREAD_ALLOC= 1
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "symbols"]
|
||||||
|
!message *** Doing symbols
|
||||||
|
DEBUG = 1
|
||||||
|
!else
|
||||||
|
DEBUG = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "pdbs"]
|
||||||
|
!message *** Doing pdbs
|
||||||
|
SYMBOLS = 1
|
||||||
|
!else
|
||||||
|
SYMBOLS = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "profile"]
|
||||||
|
!message *** Doing profile
|
||||||
|
PROFILE = 1
|
||||||
|
!else
|
||||||
|
PROFILE = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "pgi"]
|
||||||
|
!message *** Doing profile guided optimization instrumentation
|
||||||
|
PGO = 1
|
||||||
|
!elseif [nmakehlp -f $(OPTS) "pgo"]
|
||||||
|
!message *** Doing profile guided optimization
|
||||||
|
PGO = 2
|
||||||
|
!else
|
||||||
|
PGO = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "loimpact"]
|
||||||
|
!message *** Doing loimpact
|
||||||
|
LOIMPACT = 1
|
||||||
|
!else
|
||||||
|
LOIMPACT = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "thrdalloc"]
|
||||||
|
!message *** Doing thrdalloc
|
||||||
|
USE_THREAD_ALLOC = 1
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "tclalloc"]
|
||||||
|
!message *** Doing tclalloc
|
||||||
|
USE_THREAD_ALLOC = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "unchecked"]
|
||||||
|
!message *** Doing unchecked
|
||||||
|
UNCHECKED = 1
|
||||||
|
!else
|
||||||
|
UNCHECKED = 0
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
|
||||||
|
!if !$(STATIC_BUILD)
|
||||||
|
# Make sure we don't build overly fat DLLs.
|
||||||
|
MSVCRT = 1
|
||||||
|
# We shouldn't statically put the extensions inside the shell when dynamic.
|
||||||
|
TCL_USE_STATIC_PACKAGES = 0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Figure-out how to name our intermediate and output directories.
|
||||||
|
# We wouldn't want different builds to use the same .obj files
|
||||||
|
# by accident.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
#----------------------------------------
|
||||||
|
# Naming convention:
|
||||||
|
# t = full thread support.
|
||||||
|
# s = static library (as opposed to an
|
||||||
|
# import library)
|
||||||
|
# g = linked to the debug enabled C
|
||||||
|
# run-time.
|
||||||
|
# x = special static build when it
|
||||||
|
# links to the dynamic C run-time.
|
||||||
|
#----------------------------------------
|
||||||
|
SUFX = tsgx
|
||||||
|
|
||||||
|
!if $(DEBUG)
|
||||||
|
BUILDDIRTOP = Debug
|
||||||
|
!else
|
||||||
|
BUILDDIRTOP = Release
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(MACHINE)" != "IX86"
|
||||||
|
BUILDDIRTOP =$(BUILDDIRTOP)_$(MACHINE)
|
||||||
|
!endif
|
||||||
|
!if $(VCVER) > 6
|
||||||
|
BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if !$(DEBUG) || $(DEBUG) && $(UNCHECKED)
|
||||||
|
SUFX = $(SUFX:g=)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX
|
||||||
|
|
||||||
|
!if !$(STATIC_BUILD)
|
||||||
|
TMP_DIRFULL = $(TMP_DIRFULL:Static=)
|
||||||
|
SUFX = $(SUFX:s=)
|
||||||
|
EXT = dll
|
||||||
|
!if $(MSVCRT)
|
||||||
|
TMP_DIRFULL = $(TMP_DIRFULL:X=)
|
||||||
|
SUFX = $(SUFX:x=)
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
TMP_DIRFULL = $(TMP_DIRFULL:Dynamic=)
|
||||||
|
EXT = lib
|
||||||
|
!if !$(MSVCRT)
|
||||||
|
TMP_DIRFULL = $(TMP_DIRFULL:X=)
|
||||||
|
SUFX = $(SUFX:x=)
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if !$(TCL_THREADS)
|
||||||
|
TMP_DIRFULL = $(TMP_DIRFULL:Threaded=)
|
||||||
|
SUFX = $(SUFX:t=)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifndef TMP_DIR
|
||||||
|
TMP_DIR = $(TMP_DIRFULL)
|
||||||
|
!ifndef OUT_DIR
|
||||||
|
OUT_DIR = .\$(BUILDDIRTOP)
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
!ifndef OUT_DIR
|
||||||
|
OUT_DIR = $(TMP_DIR)
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Decode the statistics requested.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(STATS)" == "" || [nmakehlp -f "$(STATS)" "none"]
|
||||||
|
TCL_MEM_DEBUG = 0
|
||||||
|
TCL_COMPILE_DEBUG = 0
|
||||||
|
!else
|
||||||
|
!if [nmakehlp -f $(STATS) "memdbg"]
|
||||||
|
!message *** Doing memdbg
|
||||||
|
TCL_MEM_DEBUG = 1
|
||||||
|
!else
|
||||||
|
TCL_MEM_DEBUG = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(STATS) "compdbg"]
|
||||||
|
!message *** Doing compdbg
|
||||||
|
TCL_COMPILE_DEBUG = 1
|
||||||
|
!else
|
||||||
|
TCL_COMPILE_DEBUG = 0
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Decode the checks requested.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(CHECKS)" == "" || [nmakehlp -f "$(CHECKS)" "none"]
|
||||||
|
TCL_NO_DEPRECATED = 0
|
||||||
|
WARNINGS = -W3
|
||||||
|
!else
|
||||||
|
!if [nmakehlp -f $(CHECKS) "nodep"]
|
||||||
|
!message *** Doing nodep check
|
||||||
|
TCL_NO_DEPRECATED = 1
|
||||||
|
!else
|
||||||
|
TCL_NO_DEPRECATED = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(CHECKS) "fullwarn"]
|
||||||
|
!message *** Doing full warnings check
|
||||||
|
WARNINGS = -W4
|
||||||
|
!if [nmakehlp -l -warn:3]
|
||||||
|
LINKERFLAGS = $(LINKERFLAGS) -warn:3
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
WARNINGS = -W3
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(CHECKS) "64bit"] && [nmakehlp -c -Wp64]
|
||||||
|
!message *** Doing 64bit portability warnings
|
||||||
|
WARNINGS = $(WARNINGS) -Wp64
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if $(PGO) > 1
|
||||||
|
!if [nmakehlp -l -ltcg:pgoptimize]
|
||||||
|
LINKERFLAGS = $(LINKERFLAGS:-ltcg=) -ltcg:pgoptimize
|
||||||
|
!else
|
||||||
|
MSG=^
|
||||||
|
This compiler does not support profile guided optimization.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
!elseif $(PGO) > 0
|
||||||
|
!if [nmakehlp -l -ltcg:pginstrument]
|
||||||
|
LINKERFLAGS = $(LINKERFLAGS:-ltcg=) -ltcg:pginstrument
|
||||||
|
!else
|
||||||
|
MSG=^
|
||||||
|
This compiler does not support profile guided optimization.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Set our defines now armed with our options.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTDEFINES = -DTCL_CFGVAL_ENCODING=$(CFG_ENCODING) -DSTDC_HEADERS
|
||||||
|
|
||||||
|
!if $(TCL_MEM_DEBUG)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_MEM_DEBUG
|
||||||
|
!endif
|
||||||
|
!if $(TCL_COMPILE_DEBUG)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
|
||||||
|
!endif
|
||||||
|
!if $(TCL_THREADS)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_THREADS=1
|
||||||
|
!if $(USE_THREAD_ALLOC)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DUSE_THREAD_ALLOC=1
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
!if $(STATIC_BUILD)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DSTATIC_BUILD
|
||||||
|
!endif
|
||||||
|
!if $(TCL_NO_DEPRECATED)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_NO_DEPRECATED
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if !$(DEBUG)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DNDEBUG
|
||||||
|
!if $(OPTIMIZING)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_OPTIMIZED
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
!if $(PROFILE)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_PROFILED
|
||||||
|
!endif
|
||||||
|
!if "$(MACHINE)" == "IA64" || "$(MACHINE)" == "AMD64"
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DO64BIT
|
||||||
|
!endif
|
||||||
|
!if $(VCVERSION) < 1300
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DNO_STRTOI64
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Locate the Tcl headers to build against
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(PROJECT)" == "tcl"
|
||||||
|
|
||||||
|
_TCL_H = ..\generic\tcl.h
|
||||||
|
|
||||||
|
!else
|
||||||
|
|
||||||
|
# If INSTALLDIR set to tcl root dir then reset to the lib dir.
|
||||||
|
!if exist("$(_INSTALLDIR)\include\tcl.h")
|
||||||
|
_INSTALLDIR=$(_INSTALLDIR)\lib
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if !defined(TCLDIR)
|
||||||
|
!if exist("$(_INSTALLDIR)\..\include\tcl.h")
|
||||||
|
TCLINSTALL = 1
|
||||||
|
_TCLDIR = $(_INSTALLDIR)\..
|
||||||
|
_TCL_H = $(_INSTALLDIR)\..\include\tcl.h
|
||||||
|
TCLDIR = $(_INSTALLDIR)\..
|
||||||
|
!else
|
||||||
|
MSG=^
|
||||||
|
Failed to find tcl.h. Set the TCLDIR macro.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
_TCLDIR = $(TCLDIR:/=\)
|
||||||
|
!if exist("$(_TCLDIR)\include\tcl.h")
|
||||||
|
TCLINSTALL = 1
|
||||||
|
_TCL_H = $(_TCLDIR)\include\tcl.h
|
||||||
|
!elseif exist("$(_TCLDIR)\generic\tcl.h")
|
||||||
|
TCLINSTALL = 0
|
||||||
|
_TCL_H = $(_TCLDIR)\generic\tcl.h
|
||||||
|
!else
|
||||||
|
MSG =^
|
||||||
|
Failed to find tcl.h. The TCLDIR macro does not appear correct.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
# Extract various version numbers from tcl headers
|
||||||
|
# The generated file is then included in the makefile.
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
|
||||||
|
!if [echo REM = This file is generated from rules.vc > versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo TCL_MAJOR_VERSION = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V "$(_TCL_H)" TCL_MAJOR_VERSION >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo TCL_MINOR_VERSION = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V "$(_TCL_H)" TCL_MINOR_VERSION >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo TCL_PATCH_LEVEL = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V "$(_TCL_H)" TCL_PATCH_LEVEL >> versions.vc]
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# If building the tcl core then we need additional package versions
|
||||||
|
!if "$(PROJECT)" == "tcl"
|
||||||
|
!if [echo PKG_HTTP_VER = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\http\pkgIndex.tcl http >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo PKG_TCLTEST_VER = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\tcltest\pkgIndex.tcl tcltest >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo PKG_MSGCAT_VER = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\msgcat\pkgIndex.tcl msgcat >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo PKG_PLATFORM_VER = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\platform\pkgIndex.tcl "platform " >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo PKG_SHELL_VER = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\platform\pkgIndex.tcl "platform::shell" >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo PKG_DDE_VER = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\dde\pkgIndex.tcl "dde " >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo PKG_REG_VER =\>> versions.vc] \
|
||||||
|
&& [nmakehlp -V ..\library\reg\pkgIndex.tcl registry >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!include versions.vc
|
||||||
|
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
# Setup tcl version dependent stuff headers
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(PROJECT)" != "tcl"
|
||||||
|
|
||||||
|
TCL_VERSION = $(TCL_MAJOR_VERSION)$(TCL_MINOR_VERSION)
|
||||||
|
|
||||||
|
!if $(TCL_VERSION) < 81
|
||||||
|
TCL_DOES_STUBS = 0
|
||||||
|
!else
|
||||||
|
TCL_DOES_STUBS = 1
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if $(TCLINSTALL)
|
||||||
|
TCLSH = "$(_TCLDIR)\bin\tclsh$(TCL_VERSION)$(SUFX).exe"
|
||||||
|
!if !exist($(TCLSH)) && $(TCL_THREADS)
|
||||||
|
TCLSH = "$(_TCLDIR)\bin\tclsh$(TCL_VERSION)t$(SUFX).exe"
|
||||||
|
!endif
|
||||||
|
TCLSTUBLIB = "$(_TCLDIR)\lib\tclstub$(TCL_VERSION).lib"
|
||||||
|
TCLIMPLIB = "$(_TCLDIR)\lib\tcl$(TCL_VERSION)$(SUFX).lib"
|
||||||
|
TCL_LIBRARY = $(_TCLDIR)\lib
|
||||||
|
TCLREGLIB = "$(_TCLDIR)\lib\tclreg13$(SUFX:t=).lib"
|
||||||
|
TCLDDELIB = "$(_TCLDIR)\lib\tcldde14$(SUFX:t=).lib"
|
||||||
|
COFFBASE = \must\have\tcl\sources\to\build\this\target
|
||||||
|
TCLTOOLSDIR = \must\have\tcl\sources\to\build\this\target
|
||||||
|
TCL_INCLUDES = -I"$(_TCLDIR)\include"
|
||||||
|
!else
|
||||||
|
TCLSH = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(TCL_VERSION)$(SUFX).exe"
|
||||||
|
!if !exist($(TCLSH)) && $(TCL_THREADS)
|
||||||
|
TCLSH = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(TCL_VERSION)t$(SUFX).exe"
|
||||||
|
!endif
|
||||||
|
TCLSTUBLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclstub$(TCL_VERSION).lib"
|
||||||
|
TCLIMPLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcl$(TCL_VERSION)$(SUFX).lib"
|
||||||
|
TCL_LIBRARY = $(_TCLDIR)\library
|
||||||
|
TCLREGLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclreg13$(SUFX:t=).lib"
|
||||||
|
TCLDDELIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcldde14$(SUFX:t=).lib"
|
||||||
|
COFFBASE = "$(_TCLDIR)\win\coffbase.txt"
|
||||||
|
TCLTOOLSDIR = $(_TCLDIR)\tools
|
||||||
|
TCL_INCLUDES = -I"$(_TCLDIR)\generic" -I"$(_TCLDIR)\win"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# Locate the Tk headers to build against
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(PROJECT)" == "tk"
|
||||||
|
_TK_H = ..\generic\tk.h
|
||||||
|
_INSTALLDIR = $(_INSTALLDIR)\..
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PROJECT_REQUIRES_TK
|
||||||
|
!if !defined(TKDIR)
|
||||||
|
!if exist("$(_INSTALLDIR)\..\include\tk.h")
|
||||||
|
TKINSTALL = 1
|
||||||
|
_TKDIR = $(_INSTALLDIR)\..
|
||||||
|
_TK_H = $(_TKDIR)\include\tk.h
|
||||||
|
TKDIR = $(_TKDIR)
|
||||||
|
!elseif exist("$(_TCLDIR)\include\tk.h")
|
||||||
|
TKINSTALL = 1
|
||||||
|
_TKDIR = $(_TCLDIR)
|
||||||
|
_TK_H = $(_TKDIR)\include\tk.h
|
||||||
|
TKDIR = $(_TKDIR)
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
_TKDIR = $(TKDIR:/=\)
|
||||||
|
!if exist("$(_TKDIR)\include\tk.h")
|
||||||
|
TKINSTALL = 1
|
||||||
|
_TK_H = $(_TKDIR)\include\tk.h
|
||||||
|
!elseif exist("$(_TKDIR)\generic\tk.h")
|
||||||
|
TKINSTALL = 0
|
||||||
|
_TK_H = $(_TKDIR)\generic\tk.h
|
||||||
|
!else
|
||||||
|
MSG =^
|
||||||
|
Failed to find tk.h. The TKDIR macro does not appear correct.
|
||||||
|
!error $(MSG)
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# Extract Tk version numbers
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!if defined(PROJECT_REQUIRES_TK) || "$(PROJECT)" == "tk"
|
||||||
|
|
||||||
|
!if [echo TK_MAJOR_VERSION = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V $(_TK_H) TK_MAJOR_VERSION >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo TK_MINOR_VERSION = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V $(_TK_H) TK_MINOR_VERSION >> versions.vc]
|
||||||
|
!endif
|
||||||
|
!if [echo TK_PATCH_LEVEL = \>> versions.vc] \
|
||||||
|
&& [nmakehlp -V $(_TK_H) TK_PATCH_LEVEL >> versions.vc]
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!include versions.vc
|
||||||
|
|
||||||
|
TK_DOTVERSION = $(TK_MAJOR_VERSION).$(TK_MINOR_VERSION)
|
||||||
|
TK_VERSION = $(TK_MAJOR_VERSION)$(TK_MINOR_VERSION)
|
||||||
|
|
||||||
|
!if "$(PROJECT)" != "tk"
|
||||||
|
!if $(TKINSTALL)
|
||||||
|
WISH = "$(_TKDIR)\bin\wish$(TK_VERSION)$(SUFX).exe"
|
||||||
|
TKSTUBLIB = "$(_TKDIR)\lib\tkstub$(TK_VERSION).lib"
|
||||||
|
TKIMPLIB = "$(_TKDIR)\lib\tk$(TK_VERSION)$(SUFX).lib"
|
||||||
|
TK_INCLUDES = -I"$(_TKDIR)\include"
|
||||||
|
!else
|
||||||
|
WISH = "$(_TKDIR)\win\$(BUILDDIRTOP)\wish$(TCL_VERSION)$(SUFX).exe"
|
||||||
|
TKSTUBLIB = "$(_TKDIR)\win\$(BUILDDIRTOP)\tkstub$(TCL_VERSION).lib"
|
||||||
|
TKIMPLIB = "$(_TKDIR)\win\$(BUILDDIRTOP)\tk$(TCL_VERSION)$(SUFX).lib"
|
||||||
|
TK_INCLUDES = -I"$(_TKDIR)\generic" -I"$(_TKDIR)\win" -I"$(_TKDIR)\xlib"
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Display stats being used.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!message *** Intermediate directory will be '$(TMP_DIR)'
|
||||||
|
!message *** Output directory will be '$(OUT_DIR)'
|
||||||
|
!message *** Suffix for binaries will be '$(SUFX)'
|
||||||
|
!message *** Optional defines are '$(OPTDEFINES)'
|
||||||
|
!message *** Compiler version $(VCVER). Target machine is $(MACHINE)
|
||||||
|
!message *** Host architecture is $(NATIVE_ARCH)
|
||||||
|
!message *** Compiler options '$(COMPILERFLAGS) $(OPTIMIZATIONS) $(DEBUGFLAGS) $(WARNINGS)'
|
||||||
|
!message *** Link options '$(LINKERFLAGS)'
|
||||||
|
|
||||||
|
!endif
|
||||||
|
|
Loading…
Reference in a new issue