mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-27 07:34:15 +02:00
Added SQLite.
This commit is contained in:
parent
3a8e7405a6
commit
3027ea1758
@ -5,9 +5,7 @@ include aminclude.am
|
|||||||
|
|
||||||
SUBDIRS = \
|
SUBDIRS = \
|
||||||
compat \
|
compat \
|
||||||
ltdl \
|
third-party \
|
||||||
mmatch \
|
|
||||||
cJSON \
|
|
||||||
base \
|
base \
|
||||||
jsonrpc \
|
jsonrpc \
|
||||||
icinga \
|
icinga \
|
||||||
|
@ -48,11 +48,11 @@ libbase_la_SOURCES = \
|
|||||||
win32.cpp \
|
win32.cpp \
|
||||||
win32.h
|
win32.h
|
||||||
|
|
||||||
libbase_la_CXXFLAGS = \
|
libbase_la_CPPFLAGS = \
|
||||||
-DI2_BASE_BUILD \
|
-DI2_BASE_BUILD \
|
||||||
$(LTDLINCL) \
|
$(LTDLINCL) \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/mmatch
|
-I${top_srcdir}/third-party/mmatch
|
||||||
|
|
||||||
libbase_la_LDFLAGS = \
|
libbase_la_LDFLAGS = \
|
||||||
-no-undefined \
|
-no-undefined \
|
||||||
@ -62,4 +62,4 @@ libbase_la_LDFLAGS = \
|
|||||||
libbase_la_LIBADD = \
|
libbase_la_LIBADD = \
|
||||||
$(LIBLTDL) \
|
$(LIBLTDL) \
|
||||||
$(BOOST_LDFLAGS) \
|
$(BOOST_LDFLAGS) \
|
||||||
${top_builddir}/mmatch/libmmatch.la
|
${top_builddir}/third-party/mmatch/libmmatch.la
|
||||||
|
@ -8,12 +8,12 @@ configfile_la_SOURCES = \
|
|||||||
configfilecomponent.h \
|
configfilecomponent.h \
|
||||||
i2-configfile.h
|
i2-configfile.h
|
||||||
|
|
||||||
configfile_la_CXXFLAGS = \
|
configfile_la_CPPFLAGS = \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
-I${top_srcdir}/icinga \
|
-I${top_srcdir}/icinga \
|
||||||
-I${top_srcdir}/jsonrpc \
|
-I${top_srcdir}/jsonrpc \
|
||||||
-I${top_srcdir}/cJSON
|
-I${top_srcdir}/third-party/cJSON
|
||||||
|
|
||||||
configfile_la_LDFLAGS = \
|
configfile_la_LDFLAGS = \
|
||||||
-module \
|
-module \
|
||||||
@ -25,4 +25,4 @@ configfile_la_LIBADD = \
|
|||||||
$(BOOST_LDFLAGS) \
|
$(BOOST_LDFLAGS) \
|
||||||
$(top_builddir)/base/libbase.la \
|
$(top_builddir)/base/libbase.la \
|
||||||
$(top_builddir)/icinga/libicinga.la \
|
$(top_builddir)/icinga/libicinga.la \
|
||||||
$(top_builddir)/cJSON/libcJSON.la
|
$(top_builddir)/third-party/cJSON/libcJSON.la
|
||||||
|
@ -8,7 +8,7 @@ configrpc_la_SOURCES = \
|
|||||||
configrpccomponent.h \
|
configrpccomponent.h \
|
||||||
i2-configrpc.h
|
i2-configrpc.h
|
||||||
|
|
||||||
configrpc_la_CXXFLAGS = \
|
configrpc_la_CPPFLAGS = \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
-I${top_srcdir}/jsonrpc \
|
-I${top_srcdir}/jsonrpc \
|
||||||
|
@ -8,11 +8,10 @@ demo_la_SOURCES = \
|
|||||||
democomponent.h \
|
democomponent.h \
|
||||||
i2-demo.h
|
i2-demo.h
|
||||||
|
|
||||||
demo_la_CXXFLAGS = \
|
demo_la_CPPFLAGS = \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
-I${top_srcdir}/jsonrpc \
|
-I${top_srcdir}/jsonrpc \
|
||||||
-I${top_srcdir}/cJSON \
|
|
||||||
-I${top_srcdir}/icinga
|
-I${top_srcdir}/icinga
|
||||||
|
|
||||||
demo_la_LDFLAGS = \
|
demo_la_LDFLAGS = \
|
||||||
|
@ -10,11 +10,10 @@ discovery_la_SOURCES = \
|
|||||||
discoverymessage.h \
|
discoverymessage.h \
|
||||||
i2-discovery.h
|
i2-discovery.h
|
||||||
|
|
||||||
discovery_la_CXXFLAGS = \
|
discovery_la_CPPFLAGS = \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
-I${top_srcdir}/jsonrpc \
|
-I${top_srcdir}/jsonrpc \
|
||||||
-I${top_srcdir}/cJSON \
|
|
||||||
-I${top_srcdir}/icinga
|
-I${top_srcdir}/icinga
|
||||||
|
|
||||||
discovery_la_LDFLAGS = \
|
discovery_la_LDFLAGS = \
|
||||||
@ -27,5 +26,4 @@ discovery_la_LIBADD = \
|
|||||||
$(BOOST_LDFLAGS) \
|
$(BOOST_LDFLAGS) \
|
||||||
${top_builddir}/base/libbase.la \
|
${top_builddir}/base/libbase.la \
|
||||||
${top_builddir}/jsonrpc/libjsonrpc.la \
|
${top_builddir}/jsonrpc/libjsonrpc.la \
|
||||||
${top_builddir}/cJSON/libcJSON.la \
|
|
||||||
${top_builddir}/icinga/libicinga.la
|
${top_builddir}/icinga/libicinga.la
|
||||||
|
25
configure.ac
25
configure.ac
@ -24,26 +24,19 @@ AX_SET_VERSION_INFO
|
|||||||
AC_CONFIG_AUX_DIR([config])
|
AC_CONFIG_AUX_DIR([config])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
|
AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
|
||||||
AM_SILENT_RULES([yes])
|
#AM_SILENT_RULES([yes])
|
||||||
|
|
||||||
|
AC_CONFIG_SUBDIRS([third-party/sqlite])
|
||||||
|
|
||||||
AC_PROG_CXX
|
AC_PROG_CXX
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_LANG_C
|
AC_LANG_C
|
||||||
|
|
||||||
AC_PROG_INSTALL
|
LT_INIT([dlopen])
|
||||||
AC_PROG_LIBTOOL
|
LT_CONFIG_LTDL_DIR([third-party/ltdl])
|
||||||
AX_CXX_COMPILE_STDCXX_0X
|
|
||||||
AX_CXX_GCC_ABI_DEMANGLE
|
|
||||||
AX_PTHREAD
|
|
||||||
|
|
||||||
LT_INIT([dlopen shared disable-static win32-dll])
|
|
||||||
LT_CONFIG_LTDL_DIR([ltdl])
|
|
||||||
LTDL_INIT
|
LTDL_INIT
|
||||||
|
|
||||||
AX_BOOST_BASE
|
|
||||||
AX_BOOST_UNIT_TEST_FRAMEWORK
|
|
||||||
|
|
||||||
DX_HTML_FEATURE(ON)
|
DX_HTML_FEATURE(ON)
|
||||||
DX_CHM_FEATURE(OFF)
|
DX_CHM_FEATURE(OFF)
|
||||||
DX_CHI_FEATURE(OFF)
|
DX_CHI_FEATURE(OFF)
|
||||||
@ -55,11 +48,12 @@ DX_PS_FEATURE(OFF)
|
|||||||
DX_INIT_DOXYGEN([icinga], [Doxyfile], [doc])
|
DX_INIT_DOXYGEN([icinga], [Doxyfile], [doc])
|
||||||
|
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_LIBTOOL
|
AC_PROG_LIBTOOL
|
||||||
AX_CXX_COMPILE_STDCXX_0X
|
AX_CXX_COMPILE_STDCXX_0X
|
||||||
AX_CXX_GCC_ABI_DEMANGLE
|
AX_CXX_GCC_ABI_DEMANGLE
|
||||||
AX_PTHREAD
|
AX_PTHREAD
|
||||||
|
AX_BOOST_BASE
|
||||||
|
AX_BOOST_UNIT_TEST_FRAMEWORK
|
||||||
|
|
||||||
AC_CHECK_LIB(ssl, SSL_new)
|
AC_CHECK_LIB(ssl, SSL_new)
|
||||||
AC_CHECK_LIB(crypto, X509_NAME_oneline)
|
AC_CHECK_LIB(crypto, X509_NAME_oneline)
|
||||||
@ -79,7 +73,6 @@ AC_OUTPUT([
|
|||||||
Makefile
|
Makefile
|
||||||
compat/Makefile
|
compat/Makefile
|
||||||
base/Makefile
|
base/Makefile
|
||||||
cJSON/Makefile
|
|
||||||
components/Makefile
|
components/Makefile
|
||||||
components/configfile/Makefile
|
components/configfile/Makefile
|
||||||
components/configrpc/Makefile
|
components/configrpc/Makefile
|
||||||
@ -88,7 +81,9 @@ components/discovery/Makefile
|
|||||||
icinga/Makefile
|
icinga/Makefile
|
||||||
icinga-app/Makefile
|
icinga-app/Makefile
|
||||||
jsonrpc/Makefile
|
jsonrpc/Makefile
|
||||||
mmatch/Makefile
|
|
||||||
test/Makefile
|
test/Makefile
|
||||||
|
third-party/Makefile
|
||||||
|
third-party/cJSON/Makefile
|
||||||
|
third-party/mmatch/Makefile
|
||||||
Doxyfile
|
Doxyfile
|
||||||
])
|
])
|
||||||
|
@ -7,12 +7,11 @@ bin_PROGRAMS = \
|
|||||||
icinga_SOURCES = \
|
icinga_SOURCES = \
|
||||||
icinga.cpp
|
icinga.cpp
|
||||||
|
|
||||||
icinga_CXXFLAGS = \
|
icinga_CPPFLAGS = \
|
||||||
-DI2_ICINGALAUNCHER_BUILD \
|
-DI2_ICINGALAUNCHER_BUILD \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
-I${top_srcdir}/jsonrpc \
|
-I${top_srcdir}/jsonrpc \
|
||||||
-I${top_srcdir}/cJSON \
|
|
||||||
-I${top_srcdir}/icinga \
|
-I${top_srcdir}/icinga \
|
||||||
-I${top_srcdir}
|
-I${top_srcdir}
|
||||||
|
|
||||||
|
@ -19,9 +19,7 @@ libicinga_la_SOURCES = \
|
|||||||
virtualendpoint.cpp \
|
virtualendpoint.cpp \
|
||||||
virtualendpoint.h
|
virtualendpoint.h
|
||||||
|
|
||||||
libicinga_la_CFLAGS = -DI2_ICINGA_BUILD
|
libicinga_la_CPPFLAGS = \
|
||||||
|
|
||||||
libicinga_la_CXXFLAGS = \
|
|
||||||
-DI2_ICINGA_BUILD \
|
-DI2_ICINGA_BUILD \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
|
@ -19,11 +19,11 @@ libjsonrpc_la_SOURCES = \
|
|||||||
responsemessage.cpp \
|
responsemessage.cpp \
|
||||||
responsemessage.h
|
responsemessage.h
|
||||||
|
|
||||||
libjsonrpc_la_CXXFLAGS = \
|
libjsonrpc_la_CPPFLAGS = \
|
||||||
-DI2_JSONRPC_BUILD \
|
-DI2_JSONRPC_BUILD \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
-I${top_srcdir}/cJSON
|
-I${top_srcdir}/third-party/cJSON
|
||||||
|
|
||||||
libjsonrpc_la_LDFLAGS = \
|
libjsonrpc_la_LDFLAGS = \
|
||||||
-no-undefined \
|
-no-undefined \
|
||||||
@ -33,4 +33,4 @@ libjsonrpc_la_LDFLAGS = \
|
|||||||
libjsonrpc_la_LIBADD = \
|
libjsonrpc_la_LIBADD = \
|
||||||
$(BOOST_LDFLAGS) \
|
$(BOOST_LDFLAGS) \
|
||||||
${top_builddir}/base/libbase.la \
|
${top_builddir}/base/libbase.la \
|
||||||
${top_builddir}/cJSON/libcJSON.la
|
${top_builddir}/third-party/cJSON/libcJSON.la
|
||||||
|
@ -9,12 +9,16 @@ check_PROGRAMS = \
|
|||||||
base_dictionary_SOURCES = \
|
base_dictionary_SOURCES = \
|
||||||
base-dictionary.cpp
|
base-dictionary.cpp
|
||||||
|
|
||||||
base_dictionary_CXXFLAGS = \
|
base_dictionary_CPPFLAGS = \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
-I${top_srcdir}/base \
|
-I${top_srcdir}/base \
|
||||||
|
-I${top_srcdir}/jsonrpc \
|
||||||
|
-I${top_srcdir}/icinga \
|
||||||
-I${top_srcdir}
|
-I${top_srcdir}
|
||||||
|
|
||||||
base_dictionary_LDADD = \
|
base_dictionary_LDADD = \
|
||||||
$(BOOST_LDFLAGS) \
|
$(BOOST_LDFLAGS) \
|
||||||
$(BOOST_UNIT_TEST_FRAMEWORK_LIB) \
|
$(BOOST_UNIT_TEST_FRAMEWORK_LIB) \
|
||||||
${top_builddir}/base/libbase.la
|
${top_builddir}/base/libbase.la \
|
||||||
|
${top_builddir}/jsonrpc/libjsonrpc.la \
|
||||||
|
${top_builddir}/icinga/libicinga.la
|
||||||
|
236
third-party/sqlite/INSTALL
vendored
Normal file
236
third-party/sqlite/INSTALL
vendored
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||||
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. (Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.)
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You only need
|
||||||
|
`configure.ac' if you want to change it or regenerate `configure' using
|
||||||
|
a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that the
|
||||||
|
`configure' script does not know about. Run `./configure --help' for
|
||||||
|
details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not support the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a
|
||||||
|
time in the source code directory. After you have installed the
|
||||||
|
package for one architecture, use `make distclean' before reconfiguring
|
||||||
|
for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' installs the package's commands under
|
||||||
|
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||||
|
can specify an installation prefix other than `/usr/local' by giving
|
||||||
|
`configure' the option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||||
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out automatically,
|
||||||
|
but needs to determine by the type of machine the package will run on.
|
||||||
|
Usually, assuming the package is built to be run on the _same_
|
||||||
|
architectures, `configure' can figure that out, but if it prints a
|
||||||
|
message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the option `--target=TYPE' to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share, you
|
||||||
|
can create a site shell script called `config.site' that gives default
|
||||||
|
values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script). Here is a another example:
|
||||||
|
|
||||||
|
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||||
|
configuration-related scripts to be executed by `/bin/bash'.
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
19
third-party/sqlite/Makefile.am
vendored
Normal file
19
third-party/sqlite/Makefile.am
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libsqlite3.la
|
||||||
|
libsqlite3_la_SOURCES = sqlite3.c
|
||||||
|
libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8
|
||||||
|
|
||||||
|
bin_PROGRAMS = sqlite3
|
||||||
|
sqlite3_SOURCES = shell.c sqlite3.h
|
||||||
|
sqlite3_LDADD = $(top_builddir)/libsqlite3.la @READLINE_LIBS@
|
||||||
|
sqlite3_DEPENDENCIES = $(top_builddir)/libsqlite3.la
|
||||||
|
|
||||||
|
include_HEADERS = sqlite3.h sqlite3ext.h
|
||||||
|
|
||||||
|
EXTRA_DIST = sqlite3.pc sqlite3.1 tea
|
||||||
|
pkgconfigdir = ${libdir}/pkgconfig
|
||||||
|
pkgconfig_DATA = sqlite3.pc
|
||||||
|
|
||||||
|
man_MANS = sqlite3.1
|
32
third-party/sqlite/README
vendored
Normal file
32
third-party/sqlite/README
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
This package contains:
|
||||||
|
|
||||||
|
* the SQLite library amalgamation (single file) source code distribution,
|
||||||
|
* the shell.c file used to build the sqlite3 shell too, and
|
||||||
|
* the sqlite3.h and sqlite3ext.h header files required to link programs
|
||||||
|
and sqlite extensions against the installed libary.
|
||||||
|
* autoconf/automake installation infrastucture.
|
||||||
|
|
||||||
|
The generic installation instructions for autoconf/automake are found
|
||||||
|
in the INSTALL file.
|
||||||
|
|
||||||
|
The following SQLite specific boolean options are supported:
|
||||||
|
|
||||||
|
--enable-readline use readline in shell tool [default=yes]
|
||||||
|
--enable-threadsafe build a thread-safe library [default=yes]
|
||||||
|
--enable-dynamic-extensions support loadable extensions [default=yes]
|
||||||
|
|
||||||
|
The default value for the CFLAGS variable (options passed to the C
|
||||||
|
compiler) includes debugging symbols in the build, resulting in larger
|
||||||
|
binaries than are necessary. Override it on the configure command
|
||||||
|
line like this:
|
||||||
|
|
||||||
|
$ CFLAGS="-Os" ./configure
|
||||||
|
|
||||||
|
to produce a smaller installation footprint.
|
||||||
|
|
||||||
|
Other SQLite compilation parameters can also be set using CFLAGS. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
$ CFLAGS="-Os -DSQLITE_OMIT_TRIGGERS" ./configure
|
||||||
|
|
108
third-party/sqlite/configure.ac
vendored
Normal file
108
third-party/sqlite/configure.ac
vendored
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# Supports the following non-standard switches.
|
||||||
|
#
|
||||||
|
# --enable-threadsafe
|
||||||
|
# --enable-readline
|
||||||
|
# --enable-dynamic-extensions
|
||||||
|
#
|
||||||
|
|
||||||
|
AC_PREREQ(2.61)
|
||||||
|
AC_INIT(sqlite, 3.7.12.1, http://www.sqlite.org)
|
||||||
|
AC_CONFIG_SRCDIR([sqlite3.c])
|
||||||
|
|
||||||
|
# Use automake.
|
||||||
|
AM_INIT_AUTOMAKE([foreign])
|
||||||
|
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
# Check for required programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_RANLIB
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
AC_PROG_MKDIR_P
|
||||||
|
|
||||||
|
# Check for library functions that SQLite can optionally use.
|
||||||
|
AC_CHECK_FUNCS([fdatasync usleep fullfsync localtime_r gmtime_r])
|
||||||
|
AC_FUNC_STRERROR_R
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile sqlite3.pc])
|
||||||
|
AC_SUBST(BUILD_CFLAGS)
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-readline
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(readline, [AS_HELP_STRING(
|
||||||
|
[--enable-readline],
|
||||||
|
[use readline in shell tool (yes, no) [default=yes]])],
|
||||||
|
[], [enable_readline=yes])
|
||||||
|
if test x"$enable_readline" != xno ; then
|
||||||
|
sLIBS=$LIBS
|
||||||
|
LIBS=""
|
||||||
|
AC_SEARCH_LIBS(tgetent, curses ncurses ncursesw, [], [])
|
||||||
|
AC_SEARCH_LIBS(readline, readline, [], [enable_readline=no])
|
||||||
|
AC_CHECK_FUNCS(readline, [], [])
|
||||||
|
READLINE_LIBS=$LIBS
|
||||||
|
LIBS=$sLIBS
|
||||||
|
fi
|
||||||
|
AC_SUBST(READLINE_LIBS)
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-threadsafe
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(threadsafe, [AS_HELP_STRING(
|
||||||
|
[--enable-threadsafe], [build a thread-safe library [default=yes]])],
|
||||||
|
[], [enable_threadsafe=yes])
|
||||||
|
THREADSAFE_FLAGS=-DSQLITE_THREADSAFE=0
|
||||||
|
if test x"$enable_threadsafe" != "xno"; then
|
||||||
|
THREADSAFE_FLAGS="-D_REENTRANT=1 -DSQLITE_THREADSAFE=1"
|
||||||
|
AC_SEARCH_LIBS(pthread_create, pthread)
|
||||||
|
fi
|
||||||
|
AC_SUBST(THREADSAFE_FLAGS)
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# --enable-dynamic-extensions
|
||||||
|
#
|
||||||
|
AC_ARG_ENABLE(dynamic-extensions, [AS_HELP_STRING(
|
||||||
|
[--enable-dynamic-extensions], [support loadable extensions [default=yes]])],
|
||||||
|
[], [enable_dynamic_extensions=yes])
|
||||||
|
if test x"$enable_dynamic_extensions" != "xno"; then
|
||||||
|
AC_SEARCH_LIBS(dlopen, dl)
|
||||||
|
else
|
||||||
|
DYNAMIC_EXTENSION_FLAGS=-DSQLITE_OMIT_LOAD_EXTENSION=1
|
||||||
|
fi
|
||||||
|
AC_MSG_CHECKING([for whether to support dynamic extensions])
|
||||||
|
AC_MSG_RESULT($enable_dynamic_extensions)
|
||||||
|
AC_SUBST(DYNAMIC_EXTENSION_FLAGS)
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
AC_CHECK_FUNCS(posix_fallocate)
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# UPDATE: Maybe it's better if users just set CFLAGS before invoking
|
||||||
|
# configure. This option doesn't really add much...
|
||||||
|
#
|
||||||
|
# --enable-tempstore
|
||||||
|
#
|
||||||
|
# AC_ARG_ENABLE(tempstore, [AS_HELP_STRING(
|
||||||
|
# [--enable-tempstore],
|
||||||
|
# [in-memory temporary tables (never, no, yes, always) [default=no]])],
|
||||||
|
# [], [enable_tempstore=no])
|
||||||
|
# AC_MSG_CHECKING([for whether or not to store temp tables in-memory])
|
||||||
|
# case "$enable_tempstore" in
|
||||||
|
# never ) TEMP_STORE=0 ;;
|
||||||
|
# no ) TEMP_STORE=1 ;;
|
||||||
|
# always ) TEMP_STORE=3 ;;
|
||||||
|
# yes ) TEMP_STORE=3 ;;
|
||||||
|
# * )
|
||||||
|
# TEMP_STORE=1
|
||||||
|
# enable_tempstore=yes
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
# AC_MSG_RESULT($enable_tempstore)
|
||||||
|
# AC_SUBST(TEMP_STORE)
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
AC_OUTPUT
|
3137
third-party/sqlite/shell.c
vendored
Normal file
3137
third-party/sqlite/shell.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
229
third-party/sqlite/sqlite3.1
vendored
Normal file
229
third-party/sqlite/sqlite3.1
vendored
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" First parameter, NAME, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.TH SQLITE3 1 "Mon Apr 15 23:49:17 2002"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7)
|
||||||
|
.SH NAME
|
||||||
|
.B sqlite3
|
||||||
|
\- A command line interface for SQLite version 3
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B sqlite3
|
||||||
|
.RI [ options ]
|
||||||
|
.RI [ databasefile ]
|
||||||
|
.RI [ SQL ]
|
||||||
|
|
||||||
|
.SH SUMMARY
|
||||||
|
.PP
|
||||||
|
.B sqlite3
|
||||||
|
is a terminal-based front-end to the SQLite library that can evaluate
|
||||||
|
queries interactively and display the results in multiple formats.
|
||||||
|
.B sqlite3
|
||||||
|
can also be used within shell scripts and other applications to provide
|
||||||
|
batch processing features.
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
To start a
|
||||||
|
.B sqlite3
|
||||||
|
interactive session, invoke the
|
||||||
|
.B sqlite3
|
||||||
|
command and optionally provide the name of a database file. If the
|
||||||
|
database file does not exist, it will be created. If the database file
|
||||||
|
does exist, it will be opened.
|
||||||
|
|
||||||
|
For example, to create a new database file named "mydata.db", create
|
||||||
|
a table named "memos" and insert a couple of records into that table:
|
||||||
|
.sp
|
||||||
|
$
|
||||||
|
.B sqlite3 mydata.db
|
||||||
|
.br
|
||||||
|
SQLite version 3.1.3
|
||||||
|
.br
|
||||||
|
Enter ".help" for instructions
|
||||||
|
.br
|
||||||
|
sqlite>
|
||||||
|
.B create table memos(text, priority INTEGER);
|
||||||
|
.br
|
||||||
|
sqlite>
|
||||||
|
.B insert into memos values('deliver project description', 10);
|
||||||
|
.br
|
||||||
|
sqlite>
|
||||||
|
.B insert into memos values('lunch with Christine', 100);
|
||||||
|
.br
|
||||||
|
sqlite>
|
||||||
|
.B select * from memos;
|
||||||
|
.br
|
||||||
|
deliver project description|10
|
||||||
|
.br
|
||||||
|
lunch with Christine|100
|
||||||
|
.br
|
||||||
|
sqlite>
|
||||||
|
.sp
|
||||||
|
|
||||||
|
If no database name is supplied, the ATTACH sql command can be used
|
||||||
|
to attach to existing or create new database files. ATTACH can also
|
||||||
|
be used to attach to multiple databases within the same interactive
|
||||||
|
session. This is useful for migrating data between databases,
|
||||||
|
possibly changing the schema along the way.
|
||||||
|
|
||||||
|
Optionally, a SQL statement or set of SQL statements can be supplied as
|
||||||
|
a single argument. Multiple statements should be separated by
|
||||||
|
semi-colons.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
.sp
|
||||||
|
$
|
||||||
|
.B sqlite3 -line mydata.db 'select * from memos where priority > 20;'
|
||||||
|
.br
|
||||||
|
text = lunch with Christine
|
||||||
|
.br
|
||||||
|
priority = 100
|
||||||
|
.br
|
||||||
|
.sp
|
||||||
|
|
||||||
|
.SS SQLITE META-COMMANDS
|
||||||
|
.PP
|
||||||
|
The interactive interpreter offers a set of meta-commands that can be
|
||||||
|
used to control the output format, examine the currently attached
|
||||||
|
database files, or perform administrative operations upon the
|
||||||
|
attached databases (such as rebuilding indices). Meta-commands are
|
||||||
|
always prefixed with a dot (.).
|
||||||
|
|
||||||
|
A list of available meta-commands can be viewed at any time by issuing
|
||||||
|
the '.help' command. For example:
|
||||||
|
.sp
|
||||||
|
sqlite>
|
||||||
|
.B .help
|
||||||
|
.nf
|
||||||
|
.cc |
|
||||||
|
.databases List names and files of attached databases
|
||||||
|
.dump ?TABLE? ... Dump the database in an SQL text format
|
||||||
|
.echo ON|OFF Turn command echo on or off
|
||||||
|
.exit Exit this program
|
||||||
|
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
|
||||||
|
.header(s) ON|OFF Turn display of headers on or off
|
||||||
|
.help Show this message
|
||||||
|
.import FILE TABLE Import data from FILE into TABLE
|
||||||
|
.indices TABLE Show names of all indices on TABLE
|
||||||
|
.mode MODE ?TABLE? Set output mode where MODE is one of:
|
||||||
|
csv Comma-separated values
|
||||||
|
column Left-aligned columns. (See .width)
|
||||||
|
html HTML <table> code
|
||||||
|
insert SQL insert statements for TABLE
|
||||||
|
line One value per line
|
||||||
|
list Values delimited by .separator string
|
||||||
|
tabs Tab-separated values
|
||||||
|
tcl TCL list elements
|
||||||
|
.nullvalue STRING Print STRING in place of NULL values
|
||||||
|
.output FILENAME Send output to FILENAME
|
||||||
|
.output stdout Send output to the screen
|
||||||
|
.prompt MAIN CONTINUE Replace the standard prompts
|
||||||
|
.quit Exit this program
|
||||||
|
.read FILENAME Execute SQL in FILENAME
|
||||||
|
.schema ?TABLE? Show the CREATE statements
|
||||||
|
.separator STRING Change separator used by output mode and .import
|
||||||
|
.show Show the current values for various settings
|
||||||
|
.tables ?PATTERN? List names of tables matching a LIKE pattern
|
||||||
|
.timeout MS Try opening locked tables for MS milliseconds
|
||||||
|
.width NUM NUM ... Set column widths for "column" mode
|
||||||
|
sqlite>
|
||||||
|
|cc .
|
||||||
|
.sp
|
||||||
|
.fi
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.B sqlite3
|
||||||
|
has the following options:
|
||||||
|
.TP
|
||||||
|
.BI \-init\ file
|
||||||
|
Read and execute commands from
|
||||||
|
.I file
|
||||||
|
, which can contain a mix of SQL statements and meta-commands.
|
||||||
|
.TP
|
||||||
|
.B \-echo
|
||||||
|
Print commands before execution.
|
||||||
|
.TP
|
||||||
|
.B \-[no]header
|
||||||
|
Turn headers on or off.
|
||||||
|
.TP
|
||||||
|
.B \-column
|
||||||
|
Query results will be displayed in a table like form, using
|
||||||
|
whitespace characters to separate the columns and align the
|
||||||
|
output.
|
||||||
|
.TP
|
||||||
|
.B \-html
|
||||||
|
Query results will be output as simple HTML tables.
|
||||||
|
.TP
|
||||||
|
.B \-line
|
||||||
|
Query results will be displayed with one value per line, rows
|
||||||
|
separated by a blank line. Designed to be easily parsed by
|
||||||
|
scripts or other programs
|
||||||
|
.TP
|
||||||
|
.B \-list
|
||||||
|
Query results will be displayed with the separator (|, by default)
|
||||||
|
character between each field value. The default.
|
||||||
|
.TP
|
||||||
|
.BI \-separator\ separator
|
||||||
|
Set output field separator. Default is '|'.
|
||||||
|
.TP
|
||||||
|
.BI \-nullvalue\ string
|
||||||
|
Set string used to represent NULL values. Default is ''
|
||||||
|
(empty string).
|
||||||
|
.TP
|
||||||
|
.B \-version
|
||||||
|
Show SQLite version.
|
||||||
|
.TP
|
||||||
|
.B \-help
|
||||||
|
Show help on options and exit.
|
||||||
|
|
||||||
|
|
||||||
|
.SH INIT FILE
|
||||||
|
.B sqlite3
|
||||||
|
reads an initialization file to set the configuration of the
|
||||||
|
interactive environment. Throughout initialization, any previously
|
||||||
|
specified setting can be overridden. The sequence of initialization is
|
||||||
|
as follows:
|
||||||
|
|
||||||
|
o The default configuration is established as follows:
|
||||||
|
|
||||||
|
.sp
|
||||||
|
.nf
|
||||||
|
.cc |
|
||||||
|
mode = LIST
|
||||||
|
separator = "|"
|
||||||
|
main prompt = "sqlite> "
|
||||||
|
continue prompt = " ...> "
|
||||||
|
|cc .
|
||||||
|
.sp
|
||||||
|
.fi
|
||||||
|
|
||||||
|
o If the file
|
||||||
|
.B ~/.sqliterc
|
||||||
|
exists, it is processed first.
|
||||||
|
can be found in the user's home directory, it is
|
||||||
|
read and processed. It should generally only contain meta-commands.
|
||||||
|
|
||||||
|
o If the -init option is present, the specified file is processed.
|
||||||
|
|
||||||
|
o All other command line options are processed.
|
||||||
|
|
||||||
|
.SH SEE ALSO
|
||||||
|
http://www.sqlite.org/
|
||||||
|
.br
|
||||||
|
The sqlite-doc package
|
||||||
|
.SH AUTHOR
|
||||||
|
This manual page was originally written by Andreas Rottmann
|
||||||
|
<rotty@debian.org>, for the Debian GNU/Linux system (but may be used
|
||||||
|
by others). It was subsequently revised by Bill Bumgarner <bbum@mac.com>.
|
136691
third-party/sqlite/sqlite3.c
vendored
Normal file
136691
third-party/sqlite/sqlite3.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7016
third-party/sqlite/sqlite3.h
vendored
Normal file
7016
third-party/sqlite/sqlite3.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
13
third-party/sqlite/sqlite3.pc
vendored
Normal file
13
third-party/sqlite/sqlite3.pc
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Package Information for pkg-config
|
||||||
|
|
||||||
|
prefix=/tmp/i2
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
libdir=${exec_prefix}/lib
|
||||||
|
includedir=${prefix}/include
|
||||||
|
|
||||||
|
Name: SQLite
|
||||||
|
Description: SQL database engine
|
||||||
|
Version: 3.7.12.1
|
||||||
|
Libs: -L${libdir} -lsqlite3
|
||||||
|
Libs.private: -ldl -lpthread
|
||||||
|
Cflags: -I${includedir}
|
447
third-party/sqlite/sqlite3ext.h
vendored
Normal file
447
third-party/sqlite/sqlite3ext.h
vendored
Normal file
@ -0,0 +1,447 @@
|
|||||||
|
/*
|
||||||
|
** 2006 June 7
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
*************************************************************************
|
||||||
|
** This header file defines the SQLite interface for use by
|
||||||
|
** shared libraries that want to be imported as extensions into
|
||||||
|
** an SQLite instance. Shared libraries that intend to be loaded
|
||||||
|
** as extensions by SQLite should #include this file instead of
|
||||||
|
** sqlite3.h.
|
||||||
|
*/
|
||||||
|
#ifndef _SQLITE3EXT_H_
|
||||||
|
#define _SQLITE3EXT_H_
|
||||||
|
#include "sqlite3.h"
|
||||||
|
|
||||||
|
typedef struct sqlite3_api_routines sqlite3_api_routines;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** The following structure holds pointers to all of the SQLite API
|
||||||
|
** routines.
|
||||||
|
**
|
||||||
|
** WARNING: In order to maintain backwards compatibility, add new
|
||||||
|
** interfaces to the end of this structure only. If you insert new
|
||||||
|
** interfaces in the middle of this structure, then older different
|
||||||
|
** versions of SQLite will not be able to load each others' shared
|
||||||
|
** libraries!
|
||||||
|
*/
|
||||||
|
struct sqlite3_api_routines {
|
||||||
|
void * (*aggregate_context)(sqlite3_context*,int nBytes);
|
||||||
|
int (*aggregate_count)(sqlite3_context*);
|
||||||
|
int (*bind_blob)(sqlite3_stmt*,int,const void*,int n,void(*)(void*));
|
||||||
|
int (*bind_double)(sqlite3_stmt*,int,double);
|
||||||
|
int (*bind_int)(sqlite3_stmt*,int,int);
|
||||||
|
int (*bind_int64)(sqlite3_stmt*,int,sqlite_int64);
|
||||||
|
int (*bind_null)(sqlite3_stmt*,int);
|
||||||
|
int (*bind_parameter_count)(sqlite3_stmt*);
|
||||||
|
int (*bind_parameter_index)(sqlite3_stmt*,const char*zName);
|
||||||
|
const char * (*bind_parameter_name)(sqlite3_stmt*,int);
|
||||||
|
int (*bind_text)(sqlite3_stmt*,int,const char*,int n,void(*)(void*));
|
||||||
|
int (*bind_text16)(sqlite3_stmt*,int,const void*,int,void(*)(void*));
|
||||||
|
int (*bind_value)(sqlite3_stmt*,int,const sqlite3_value*);
|
||||||
|
int (*busy_handler)(sqlite3*,int(*)(void*,int),void*);
|
||||||
|
int (*busy_timeout)(sqlite3*,int ms);
|
||||||
|
int (*changes)(sqlite3*);
|
||||||
|
int (*close)(sqlite3*);
|
||||||
|
int (*collation_needed)(sqlite3*,void*,void(*)(void*,sqlite3*,
|
||||||
|
int eTextRep,const char*));
|
||||||
|
int (*collation_needed16)(sqlite3*,void*,void(*)(void*,sqlite3*,
|
||||||
|
int eTextRep,const void*));
|
||||||
|
const void * (*column_blob)(sqlite3_stmt*,int iCol);
|
||||||
|
int (*column_bytes)(sqlite3_stmt*,int iCol);
|
||||||
|
int (*column_bytes16)(sqlite3_stmt*,int iCol);
|
||||||
|
int (*column_count)(sqlite3_stmt*pStmt);
|
||||||
|
const char * (*column_database_name)(sqlite3_stmt*,int);
|
||||||
|
const void * (*column_database_name16)(sqlite3_stmt*,int);
|
||||||
|
const char * (*column_decltype)(sqlite3_stmt*,int i);
|
||||||
|
const void * (*column_decltype16)(sqlite3_stmt*,int);
|
||||||
|
double (*column_double)(sqlite3_stmt*,int iCol);
|
||||||
|
int (*column_int)(sqlite3_stmt*,int iCol);
|
||||||
|
sqlite_int64 (*column_int64)(sqlite3_stmt*,int iCol);
|
||||||
|
const char * (*column_name)(sqlite3_stmt*,int);
|
||||||
|
const void * (*column_name16)(sqlite3_stmt*,int);
|
||||||
|
const char * (*column_origin_name)(sqlite3_stmt*,int);
|
||||||
|
const void * (*column_origin_name16)(sqlite3_stmt*,int);
|
||||||
|
const char * (*column_table_name)(sqlite3_stmt*,int);
|
||||||
|
const void * (*column_table_name16)(sqlite3_stmt*,int);
|
||||||
|
const unsigned char * (*column_text)(sqlite3_stmt*,int iCol);
|
||||||
|
const void * (*column_text16)(sqlite3_stmt*,int iCol);
|
||||||
|
int (*column_type)(sqlite3_stmt*,int iCol);
|
||||||
|
sqlite3_value* (*column_value)(sqlite3_stmt*,int iCol);
|
||||||
|
void * (*commit_hook)(sqlite3*,int(*)(void*),void*);
|
||||||
|
int (*complete)(const char*sql);
|
||||||
|
int (*complete16)(const void*sql);
|
||||||
|
int (*create_collation)(sqlite3*,const char*,int,void*,
|
||||||
|
int(*)(void*,int,const void*,int,const void*));
|
||||||
|
int (*create_collation16)(sqlite3*,const void*,int,void*,
|
||||||
|
int(*)(void*,int,const void*,int,const void*));
|
||||||
|
int (*create_function)(sqlite3*,const char*,int,int,void*,
|
||||||
|
void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xFinal)(sqlite3_context*));
|
||||||
|
int (*create_function16)(sqlite3*,const void*,int,int,void*,
|
||||||
|
void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xFinal)(sqlite3_context*));
|
||||||
|
int (*create_module)(sqlite3*,const char*,const sqlite3_module*,void*);
|
||||||
|
int (*data_count)(sqlite3_stmt*pStmt);
|
||||||
|
sqlite3 * (*db_handle)(sqlite3_stmt*);
|
||||||
|
int (*declare_vtab)(sqlite3*,const char*);
|
||||||
|
int (*enable_shared_cache)(int);
|
||||||
|
int (*errcode)(sqlite3*db);
|
||||||
|
const char * (*errmsg)(sqlite3*);
|
||||||
|
const void * (*errmsg16)(sqlite3*);
|
||||||
|
int (*exec)(sqlite3*,const char*,sqlite3_callback,void*,char**);
|
||||||
|
int (*expired)(sqlite3_stmt*);
|
||||||
|
int (*finalize)(sqlite3_stmt*pStmt);
|
||||||
|
void (*free)(void*);
|
||||||
|
void (*free_table)(char**result);
|
||||||
|
int (*get_autocommit)(sqlite3*);
|
||||||
|
void * (*get_auxdata)(sqlite3_context*,int);
|
||||||
|
int (*get_table)(sqlite3*,const char*,char***,int*,int*,char**);
|
||||||
|
int (*global_recover)(void);
|
||||||
|
void (*interruptx)(sqlite3*);
|
||||||
|
sqlite_int64 (*last_insert_rowid)(sqlite3*);
|
||||||
|
const char * (*libversion)(void);
|
||||||
|
int (*libversion_number)(void);
|
||||||
|
void *(*malloc)(int);
|
||||||
|
char * (*mprintf)(const char*,...);
|
||||||
|
int (*open)(const char*,sqlite3**);
|
||||||
|
int (*open16)(const void*,sqlite3**);
|
||||||
|
int (*prepare)(sqlite3*,const char*,int,sqlite3_stmt**,const char**);
|
||||||
|
int (*prepare16)(sqlite3*,const void*,int,sqlite3_stmt**,const void**);
|
||||||
|
void * (*profile)(sqlite3*,void(*)(void*,const char*,sqlite_uint64),void*);
|
||||||
|
void (*progress_handler)(sqlite3*,int,int(*)(void*),void*);
|
||||||
|
void *(*realloc)(void*,int);
|
||||||
|
int (*reset)(sqlite3_stmt*pStmt);
|
||||||
|
void (*result_blob)(sqlite3_context*,const void*,int,void(*)(void*));
|
||||||
|
void (*result_double)(sqlite3_context*,double);
|
||||||
|
void (*result_error)(sqlite3_context*,const char*,int);
|
||||||
|
void (*result_error16)(sqlite3_context*,const void*,int);
|
||||||
|
void (*result_int)(sqlite3_context*,int);
|
||||||
|
void (*result_int64)(sqlite3_context*,sqlite_int64);
|
||||||
|
void (*result_null)(sqlite3_context*);
|
||||||
|
void (*result_text)(sqlite3_context*,const char*,int,void(*)(void*));
|
||||||
|
void (*result_text16)(sqlite3_context*,const void*,int,void(*)(void*));
|
||||||
|
void (*result_text16be)(sqlite3_context*,const void*,int,void(*)(void*));
|
||||||
|
void (*result_text16le)(sqlite3_context*,const void*,int,void(*)(void*));
|
||||||
|
void (*result_value)(sqlite3_context*,sqlite3_value*);
|
||||||
|
void * (*rollback_hook)(sqlite3*,void(*)(void*),void*);
|
||||||
|
int (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*,
|
||||||
|
const char*,const char*),void*);
|
||||||
|
void (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*));
|
||||||
|
char * (*snprintf)(int,char*,const char*,...);
|
||||||
|
int (*step)(sqlite3_stmt*);
|
||||||
|
int (*table_column_metadata)(sqlite3*,const char*,const char*,const char*,
|
||||||
|
char const**,char const**,int*,int*,int*);
|
||||||
|
void (*thread_cleanup)(void);
|
||||||
|
int (*total_changes)(sqlite3*);
|
||||||
|
void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*);
|
||||||
|
int (*transfer_bindings)(sqlite3_stmt*,sqlite3_stmt*);
|
||||||
|
void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*,
|
||||||
|
sqlite_int64),void*);
|
||||||
|
void * (*user_data)(sqlite3_context*);
|
||||||
|
const void * (*value_blob)(sqlite3_value*);
|
||||||
|
int (*value_bytes)(sqlite3_value*);
|
||||||
|
int (*value_bytes16)(sqlite3_value*);
|
||||||
|
double (*value_double)(sqlite3_value*);
|
||||||
|
int (*value_int)(sqlite3_value*);
|
||||||
|
sqlite_int64 (*value_int64)(sqlite3_value*);
|
||||||
|
int (*value_numeric_type)(sqlite3_value*);
|
||||||
|
const unsigned char * (*value_text)(sqlite3_value*);
|
||||||
|
const void * (*value_text16)(sqlite3_value*);
|
||||||
|
const void * (*value_text16be)(sqlite3_value*);
|
||||||
|
const void * (*value_text16le)(sqlite3_value*);
|
||||||
|
int (*value_type)(sqlite3_value*);
|
||||||
|
char *(*vmprintf)(const char*,va_list);
|
||||||
|
/* Added ??? */
|
||||||
|
int (*overload_function)(sqlite3*, const char *zFuncName, int nArg);
|
||||||
|
/* Added by 3.3.13 */
|
||||||
|
int (*prepare_v2)(sqlite3*,const char*,int,sqlite3_stmt**,const char**);
|
||||||
|
int (*prepare16_v2)(sqlite3*,const void*,int,sqlite3_stmt**,const void**);
|
||||||
|
int (*clear_bindings)(sqlite3_stmt*);
|
||||||
|
/* Added by 3.4.1 */
|
||||||
|
int (*create_module_v2)(sqlite3*,const char*,const sqlite3_module*,void*,
|
||||||
|
void (*xDestroy)(void *));
|
||||||
|
/* Added by 3.5.0 */
|
||||||
|
int (*bind_zeroblob)(sqlite3_stmt*,int,int);
|
||||||
|
int (*blob_bytes)(sqlite3_blob*);
|
||||||
|
int (*blob_close)(sqlite3_blob*);
|
||||||
|
int (*blob_open)(sqlite3*,const char*,const char*,const char*,sqlite3_int64,
|
||||||
|
int,sqlite3_blob**);
|
||||||
|
int (*blob_read)(sqlite3_blob*,void*,int,int);
|
||||||
|
int (*blob_write)(sqlite3_blob*,const void*,int,int);
|
||||||
|
int (*create_collation_v2)(sqlite3*,const char*,int,void*,
|
||||||
|
int(*)(void*,int,const void*,int,const void*),
|
||||||
|
void(*)(void*));
|
||||||
|
int (*file_control)(sqlite3*,const char*,int,void*);
|
||||||
|
sqlite3_int64 (*memory_highwater)(int);
|
||||||
|
sqlite3_int64 (*memory_used)(void);
|
||||||
|
sqlite3_mutex *(*mutex_alloc)(int);
|
||||||
|
void (*mutex_enter)(sqlite3_mutex*);
|
||||||
|
void (*mutex_free)(sqlite3_mutex*);
|
||||||
|
void (*mutex_leave)(sqlite3_mutex*);
|
||||||
|
int (*mutex_try)(sqlite3_mutex*);
|
||||||
|
int (*open_v2)(const char*,sqlite3**,int,const char*);
|
||||||
|
int (*release_memory)(int);
|
||||||
|
void (*result_error_nomem)(sqlite3_context*);
|
||||||
|
void (*result_error_toobig)(sqlite3_context*);
|
||||||
|
int (*sleep)(int);
|
||||||
|
void (*soft_heap_limit)(int);
|
||||||
|
sqlite3_vfs *(*vfs_find)(const char*);
|
||||||
|
int (*vfs_register)(sqlite3_vfs*,int);
|
||||||
|
int (*vfs_unregister)(sqlite3_vfs*);
|
||||||
|
int (*xthreadsafe)(void);
|
||||||
|
void (*result_zeroblob)(sqlite3_context*,int);
|
||||||
|
void (*result_error_code)(sqlite3_context*,int);
|
||||||
|
int (*test_control)(int, ...);
|
||||||
|
void (*randomness)(int,void*);
|
||||||
|
sqlite3 *(*context_db_handle)(sqlite3_context*);
|
||||||
|
int (*extended_result_codes)(sqlite3*,int);
|
||||||
|
int (*limit)(sqlite3*,int,int);
|
||||||
|
sqlite3_stmt *(*next_stmt)(sqlite3*,sqlite3_stmt*);
|
||||||
|
const char *(*sql)(sqlite3_stmt*);
|
||||||
|
int (*status)(int,int*,int*,int);
|
||||||
|
int (*backup_finish)(sqlite3_backup*);
|
||||||
|
sqlite3_backup *(*backup_init)(sqlite3*,const char*,sqlite3*,const char*);
|
||||||
|
int (*backup_pagecount)(sqlite3_backup*);
|
||||||
|
int (*backup_remaining)(sqlite3_backup*);
|
||||||
|
int (*backup_step)(sqlite3_backup*,int);
|
||||||
|
const char *(*compileoption_get)(int);
|
||||||
|
int (*compileoption_used)(const char*);
|
||||||
|
int (*create_function_v2)(sqlite3*,const char*,int,int,void*,
|
||||||
|
void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xFinal)(sqlite3_context*),
|
||||||
|
void(*xDestroy)(void*));
|
||||||
|
int (*db_config)(sqlite3*,int,...);
|
||||||
|
sqlite3_mutex *(*db_mutex)(sqlite3*);
|
||||||
|
int (*db_status)(sqlite3*,int,int*,int*,int);
|
||||||
|
int (*extended_errcode)(sqlite3*);
|
||||||
|
void (*log)(int,const char*,...);
|
||||||
|
sqlite3_int64 (*soft_heap_limit64)(sqlite3_int64);
|
||||||
|
const char *(*sourceid)(void);
|
||||||
|
int (*stmt_status)(sqlite3_stmt*,int,int);
|
||||||
|
int (*strnicmp)(const char*,const char*,int);
|
||||||
|
int (*unlock_notify)(sqlite3*,void(*)(void**,int),void*);
|
||||||
|
int (*wal_autocheckpoint)(sqlite3*,int);
|
||||||
|
int (*wal_checkpoint)(sqlite3*,const char*);
|
||||||
|
void *(*wal_hook)(sqlite3*,int(*)(void*,sqlite3*,const char*,int),void*);
|
||||||
|
int (*blob_reopen)(sqlite3_blob*,sqlite3_int64);
|
||||||
|
int (*vtab_config)(sqlite3*,int op,...);
|
||||||
|
int (*vtab_on_conflict)(sqlite3*);
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
** The following macros redefine the API routines so that they are
|
||||||
|
** redirected throught the global sqlite3_api structure.
|
||||||
|
**
|
||||||
|
** This header file is also used by the loadext.c source file
|
||||||
|
** (part of the main SQLite library - not an extension) so that
|
||||||
|
** it can get access to the sqlite3_api_routines structure
|
||||||
|
** definition. But the main library does not want to redefine
|
||||||
|
** the API. So the redefinition macros are only valid if the
|
||||||
|
** SQLITE_CORE macros is undefined.
|
||||||
|
*/
|
||||||
|
#ifndef SQLITE_CORE
|
||||||
|
#define sqlite3_aggregate_context sqlite3_api->aggregate_context
|
||||||
|
#ifndef SQLITE_OMIT_DEPRECATED
|
||||||
|
#define sqlite3_aggregate_count sqlite3_api->aggregate_count
|
||||||
|
#endif
|
||||||
|
#define sqlite3_bind_blob sqlite3_api->bind_blob
|
||||||
|
#define sqlite3_bind_double sqlite3_api->bind_double
|
||||||
|
#define sqlite3_bind_int sqlite3_api->bind_int
|
||||||
|
#define sqlite3_bind_int64 sqlite3_api->bind_int64
|
||||||
|
#define sqlite3_bind_null sqlite3_api->bind_null
|
||||||
|
#define sqlite3_bind_parameter_count sqlite3_api->bind_parameter_count
|
||||||
|
#define sqlite3_bind_parameter_index sqlite3_api->bind_parameter_index
|
||||||
|
#define sqlite3_bind_parameter_name sqlite3_api->bind_parameter_name
|
||||||
|
#define sqlite3_bind_text sqlite3_api->bind_text
|
||||||
|
#define sqlite3_bind_text16 sqlite3_api->bind_text16
|
||||||
|
#define sqlite3_bind_value sqlite3_api->bind_value
|
||||||
|
#define sqlite3_busy_handler sqlite3_api->busy_handler
|
||||||
|
#define sqlite3_busy_timeout sqlite3_api->busy_timeout
|
||||||
|
#define sqlite3_changes sqlite3_api->changes
|
||||||
|
#define sqlite3_close sqlite3_api->close
|
||||||
|
#define sqlite3_collation_needed sqlite3_api->collation_needed
|
||||||
|
#define sqlite3_collation_needed16 sqlite3_api->collation_needed16
|
||||||
|
#define sqlite3_column_blob sqlite3_api->column_blob
|
||||||
|
#define sqlite3_column_bytes sqlite3_api->column_bytes
|
||||||
|
#define sqlite3_column_bytes16 sqlite3_api->column_bytes16
|
||||||
|
#define sqlite3_column_count sqlite3_api->column_count
|
||||||
|
#define sqlite3_column_database_name sqlite3_api->column_database_name
|
||||||
|
#define sqlite3_column_database_name16 sqlite3_api->column_database_name16
|
||||||
|
#define sqlite3_column_decltype sqlite3_api->column_decltype
|
||||||
|
#define sqlite3_column_decltype16 sqlite3_api->column_decltype16
|
||||||
|
#define sqlite3_column_double sqlite3_api->column_double
|
||||||
|
#define sqlite3_column_int sqlite3_api->column_int
|
||||||
|
#define sqlite3_column_int64 sqlite3_api->column_int64
|
||||||
|
#define sqlite3_column_name sqlite3_api->column_name
|
||||||
|
#define sqlite3_column_name16 sqlite3_api->column_name16
|
||||||
|
#define sqlite3_column_origin_name sqlite3_api->column_origin_name
|
||||||
|
#define sqlite3_column_origin_name16 sqlite3_api->column_origin_name16
|
||||||
|
#define sqlite3_column_table_name sqlite3_api->column_table_name
|
||||||
|
#define sqlite3_column_table_name16 sqlite3_api->column_table_name16
|
||||||
|
#define sqlite3_column_text sqlite3_api->column_text
|
||||||
|
#define sqlite3_column_text16 sqlite3_api->column_text16
|
||||||
|
#define sqlite3_column_type sqlite3_api->column_type
|
||||||
|
#define sqlite3_column_value sqlite3_api->column_value
|
||||||
|
#define sqlite3_commit_hook sqlite3_api->commit_hook
|
||||||
|
#define sqlite3_complete sqlite3_api->complete
|
||||||
|
#define sqlite3_complete16 sqlite3_api->complete16
|
||||||
|
#define sqlite3_create_collation sqlite3_api->create_collation
|
||||||
|
#define sqlite3_create_collation16 sqlite3_api->create_collation16
|
||||||
|
#define sqlite3_create_function sqlite3_api->create_function
|
||||||
|
#define sqlite3_create_function16 sqlite3_api->create_function16
|
||||||
|
#define sqlite3_create_module sqlite3_api->create_module
|
||||||
|
#define sqlite3_create_module_v2 sqlite3_api->create_module_v2
|
||||||
|
#define sqlite3_data_count sqlite3_api->data_count
|
||||||
|
#define sqlite3_db_handle sqlite3_api->db_handle
|
||||||
|
#define sqlite3_declare_vtab sqlite3_api->declare_vtab
|
||||||
|
#define sqlite3_enable_shared_cache sqlite3_api->enable_shared_cache
|
||||||
|
#define sqlite3_errcode sqlite3_api->errcode
|
||||||
|
#define sqlite3_errmsg sqlite3_api->errmsg
|
||||||
|
#define sqlite3_errmsg16 sqlite3_api->errmsg16
|
||||||
|
#define sqlite3_exec sqlite3_api->exec
|
||||||
|
#ifndef SQLITE_OMIT_DEPRECATED
|
||||||
|
#define sqlite3_expired sqlite3_api->expired
|
||||||
|
#endif
|
||||||
|
#define sqlite3_finalize sqlite3_api->finalize
|
||||||
|
#define sqlite3_free sqlite3_api->free
|
||||||
|
#define sqlite3_free_table sqlite3_api->free_table
|
||||||
|
#define sqlite3_get_autocommit sqlite3_api->get_autocommit
|
||||||
|
#define sqlite3_get_auxdata sqlite3_api->get_auxdata
|
||||||
|
#define sqlite3_get_table sqlite3_api->get_table
|
||||||
|
#ifndef SQLITE_OMIT_DEPRECATED
|
||||||
|
#define sqlite3_global_recover sqlite3_api->global_recover
|
||||||
|
#endif
|
||||||
|
#define sqlite3_interrupt sqlite3_api->interruptx
|
||||||
|
#define sqlite3_last_insert_rowid sqlite3_api->last_insert_rowid
|
||||||
|
#define sqlite3_libversion sqlite3_api->libversion
|
||||||
|
#define sqlite3_libversion_number sqlite3_api->libversion_number
|
||||||
|
#define sqlite3_malloc sqlite3_api->malloc
|
||||||
|
#define sqlite3_mprintf sqlite3_api->mprintf
|
||||||
|
#define sqlite3_open sqlite3_api->open
|
||||||
|
#define sqlite3_open16 sqlite3_api->open16
|
||||||
|
#define sqlite3_prepare sqlite3_api->prepare
|
||||||
|
#define sqlite3_prepare16 sqlite3_api->prepare16
|
||||||
|
#define sqlite3_prepare_v2 sqlite3_api->prepare_v2
|
||||||
|
#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2
|
||||||
|
#define sqlite3_profile sqlite3_api->profile
|
||||||
|
#define sqlite3_progress_handler sqlite3_api->progress_handler
|
||||||
|
#define sqlite3_realloc sqlite3_api->realloc
|
||||||
|
#define sqlite3_reset sqlite3_api->reset
|
||||||
|
#define sqlite3_result_blob sqlite3_api->result_blob
|
||||||
|
#define sqlite3_result_double sqlite3_api->result_double
|
||||||
|
#define sqlite3_result_error sqlite3_api->result_error
|
||||||
|
#define sqlite3_result_error16 sqlite3_api->result_error16
|
||||||
|
#define sqlite3_result_int sqlite3_api->result_int
|
||||||
|
#define sqlite3_result_int64 sqlite3_api->result_int64
|
||||||
|
#define sqlite3_result_null sqlite3_api->result_null
|
||||||
|
#define sqlite3_result_text sqlite3_api->result_text
|
||||||
|
#define sqlite3_result_text16 sqlite3_api->result_text16
|
||||||
|
#define sqlite3_result_text16be sqlite3_api->result_text16be
|
||||||
|
#define sqlite3_result_text16le sqlite3_api->result_text16le
|
||||||
|
#define sqlite3_result_value sqlite3_api->result_value
|
||||||
|
#define sqlite3_rollback_hook sqlite3_api->rollback_hook
|
||||||
|
#define sqlite3_set_authorizer sqlite3_api->set_authorizer
|
||||||
|
#define sqlite3_set_auxdata sqlite3_api->set_auxdata
|
||||||
|
#define sqlite3_snprintf sqlite3_api->snprintf
|
||||||
|
#define sqlite3_step sqlite3_api->step
|
||||||
|
#define sqlite3_table_column_metadata sqlite3_api->table_column_metadata
|
||||||
|
#define sqlite3_thread_cleanup sqlite3_api->thread_cleanup
|
||||||
|
#define sqlite3_total_changes sqlite3_api->total_changes
|
||||||
|
#define sqlite3_trace sqlite3_api->trace
|
||||||
|
#ifndef SQLITE_OMIT_DEPRECATED
|
||||||
|
#define sqlite3_transfer_bindings sqlite3_api->transfer_bindings
|
||||||
|
#endif
|
||||||
|
#define sqlite3_update_hook sqlite3_api->update_hook
|
||||||
|
#define sqlite3_user_data sqlite3_api->user_data
|
||||||
|
#define sqlite3_value_blob sqlite3_api->value_blob
|
||||||
|
#define sqlite3_value_bytes sqlite3_api->value_bytes
|
||||||
|
#define sqlite3_value_bytes16 sqlite3_api->value_bytes16
|
||||||
|
#define sqlite3_value_double sqlite3_api->value_double
|
||||||
|
#define sqlite3_value_int sqlite3_api->value_int
|
||||||
|
#define sqlite3_value_int64 sqlite3_api->value_int64
|
||||||
|
#define sqlite3_value_numeric_type sqlite3_api->value_numeric_type
|
||||||
|
#define sqlite3_value_text sqlite3_api->value_text
|
||||||
|
#define sqlite3_value_text16 sqlite3_api->value_text16
|
||||||
|
#define sqlite3_value_text16be sqlite3_api->value_text16be
|
||||||
|
#define sqlite3_value_text16le sqlite3_api->value_text16le
|
||||||
|
#define sqlite3_value_type sqlite3_api->value_type
|
||||||
|
#define sqlite3_vmprintf sqlite3_api->vmprintf
|
||||||
|
#define sqlite3_overload_function sqlite3_api->overload_function
|
||||||
|
#define sqlite3_prepare_v2 sqlite3_api->prepare_v2
|
||||||
|
#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2
|
||||||
|
#define sqlite3_clear_bindings sqlite3_api->clear_bindings
|
||||||
|
#define sqlite3_bind_zeroblob sqlite3_api->bind_zeroblob
|
||||||
|
#define sqlite3_blob_bytes sqlite3_api->blob_bytes
|
||||||
|
#define sqlite3_blob_close sqlite3_api->blob_close
|
||||||
|
#define sqlite3_blob_open sqlite3_api->blob_open
|
||||||
|
#define sqlite3_blob_read sqlite3_api->blob_read
|
||||||
|
#define sqlite3_blob_write sqlite3_api->blob_write
|
||||||
|
#define sqlite3_create_collation_v2 sqlite3_api->create_collation_v2
|
||||||
|
#define sqlite3_file_control sqlite3_api->file_control
|
||||||
|
#define sqlite3_memory_highwater sqlite3_api->memory_highwater
|
||||||
|
#define sqlite3_memory_used sqlite3_api->memory_used
|
||||||
|
#define sqlite3_mutex_alloc sqlite3_api->mutex_alloc
|
||||||
|
#define sqlite3_mutex_enter sqlite3_api->mutex_enter
|
||||||
|
#define sqlite3_mutex_free sqlite3_api->mutex_free
|
||||||
|
#define sqlite3_mutex_leave sqlite3_api->mutex_leave
|
||||||
|
#define sqlite3_mutex_try sqlite3_api->mutex_try
|
||||||
|
#define sqlite3_open_v2 sqlite3_api->open_v2
|
||||||
|
#define sqlite3_release_memory sqlite3_api->release_memory
|
||||||
|
#define sqlite3_result_error_nomem sqlite3_api->result_error_nomem
|
||||||
|
#define sqlite3_result_error_toobig sqlite3_api->result_error_toobig
|
||||||
|
#define sqlite3_sleep sqlite3_api->sleep
|
||||||
|
#define sqlite3_soft_heap_limit sqlite3_api->soft_heap_limit
|
||||||
|
#define sqlite3_vfs_find sqlite3_api->vfs_find
|
||||||
|
#define sqlite3_vfs_register sqlite3_api->vfs_register
|
||||||
|
#define sqlite3_vfs_unregister sqlite3_api->vfs_unregister
|
||||||
|
#define sqlite3_threadsafe sqlite3_api->xthreadsafe
|
||||||
|
#define sqlite3_result_zeroblob sqlite3_api->result_zeroblob
|
||||||
|
#define sqlite3_result_error_code sqlite3_api->result_error_code
|
||||||
|
#define sqlite3_test_control sqlite3_api->test_control
|
||||||
|
#define sqlite3_randomness sqlite3_api->randomness
|
||||||
|
#define sqlite3_context_db_handle sqlite3_api->context_db_handle
|
||||||
|
#define sqlite3_extended_result_codes sqlite3_api->extended_result_codes
|
||||||
|
#define sqlite3_limit sqlite3_api->limit
|
||||||
|
#define sqlite3_next_stmt sqlite3_api->next_stmt
|
||||||
|
#define sqlite3_sql sqlite3_api->sql
|
||||||
|
#define sqlite3_status sqlite3_api->status
|
||||||
|
#define sqlite3_backup_finish sqlite3_api->backup_finish
|
||||||
|
#define sqlite3_backup_init sqlite3_api->backup_init
|
||||||
|
#define sqlite3_backup_pagecount sqlite3_api->backup_pagecount
|
||||||
|
#define sqlite3_backup_remaining sqlite3_api->backup_remaining
|
||||||
|
#define sqlite3_backup_step sqlite3_api->backup_step
|
||||||
|
#define sqlite3_compileoption_get sqlite3_api->compileoption_get
|
||||||
|
#define sqlite3_compileoption_used sqlite3_api->compileoption_used
|
||||||
|
#define sqlite3_create_function_v2 sqlite3_api->create_function_v2
|
||||||
|
#define sqlite3_db_config sqlite3_api->db_config
|
||||||
|
#define sqlite3_db_mutex sqlite3_api->db_mutex
|
||||||
|
#define sqlite3_db_status sqlite3_api->db_status
|
||||||
|
#define sqlite3_extended_errcode sqlite3_api->extended_errcode
|
||||||
|
#define sqlite3_log sqlite3_api->log
|
||||||
|
#define sqlite3_soft_heap_limit64 sqlite3_api->soft_heap_limit64
|
||||||
|
#define sqlite3_sourceid sqlite3_api->sourceid
|
||||||
|
#define sqlite3_stmt_status sqlite3_api->stmt_status
|
||||||
|
#define sqlite3_strnicmp sqlite3_api->strnicmp
|
||||||
|
#define sqlite3_unlock_notify sqlite3_api->unlock_notify
|
||||||
|
#define sqlite3_wal_autocheckpoint sqlite3_api->wal_autocheckpoint
|
||||||
|
#define sqlite3_wal_checkpoint sqlite3_api->wal_checkpoint
|
||||||
|
#define sqlite3_wal_hook sqlite3_api->wal_hook
|
||||||
|
#define sqlite3_blob_reopen sqlite3_api->blob_reopen
|
||||||
|
#define sqlite3_vtab_config sqlite3_api->vtab_config
|
||||||
|
#define sqlite3_vtab_on_conflict sqlite3_api->vtab_on_conflict
|
||||||
|
#endif /* SQLITE_CORE */
|
||||||
|
|
||||||
|
#define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api = 0;
|
||||||
|
#define SQLITE_EXTENSION_INIT2(v) sqlite3_api = v;
|
||||||
|
|
||||||
|
#endif /* _SQLITE3EXT_H_ */
|
36
third-party/sqlite/tea/README
vendored
Normal file
36
third-party/sqlite/tea/README
vendored
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.
|
3813
third-party/sqlite/tea/generic/tclsqlite3.c
vendored
Normal file
3813
third-party/sqlite/tea/generic/tclsqlite3.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
third-party/sqlite/tea/license.terms
vendored
Normal file
6
third-party/sqlite/tea/license.terms
vendored
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.
|
3997
third-party/sqlite/tea/tclconfig/tcl.m4
vendored
Normal file
3997
third-party/sqlite/tea/tclconfig/tcl.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
420
third-party/sqlite/tea/win/makefile.vc
vendored
Normal file
420
third-party/sqlite/tea/win/makefile.vc
vendored
Normal file
@ -0,0 +1,420 @@
|
|||||||
|
# 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(VCToolkitInstallDir)
|
||||||
|
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 = sample
|
||||||
|
!include "rules.vc"
|
||||||
|
|
||||||
|
DOTVERSION = 0.5
|
||||||
|
VERSION = $(DOTVERSION:.=)
|
||||||
|
STUBPREFIX = $(PROJECT)stub
|
||||||
|
|
||||||
|
DLLOBJS = \
|
||||||
|
$(TMP_DIR)\tclsample.obj \
|
||||||
|
$(TMP_DIR)\sample.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 $(PENT_0F_ERRATA)
|
||||||
|
cflags = $(cflags) -QI0f
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if $(ITAN_B_ERRATA)
|
||||||
|
cflags = $(cflags) -QIA64_Bx
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!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)"
|
||||||
|
BASE_CLFAGS = $(cflags) $(cdebug) $(crt) $(INCLUDES)
|
||||||
|
CON_CFLAGS = $(cflags) $(cdebug) $(crt) -DCONSOLE
|
||||||
|
TCL_CFLAGS = -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
|
||||||
|
|
||||||
|
### Automatic creation of pkgIndex
|
||||||
|
#install-libraries:
|
||||||
|
# @echo Installing library files to '$(SCRIPT_INSTALL_DIR)'
|
||||||
|
# @if exist $(LIBDIR) $(CPY) $(LIBDIR)\*.tcl "$(SCRIPT_INSTALL_DIR)"
|
||||||
|
# @echo cd "$(SCRIPT_INSTALL_DIR:\=/)" ; pkg_mkIndex . | $(TCLSH)
|
||||||
|
|
||||||
|
### Manual creation of pkgIndex
|
||||||
|
### Normally the ifneeded command would be:
|
||||||
|
### package ifneeded $(PROJECT) $(DOTVERSION) \
|
||||||
|
### [list load [file join $$dir $(PROJECT)$(VERSION).$(EXT)]]
|
||||||
|
### but this project has been named oddly. It has Sample_Init but provides
|
||||||
|
### the Tclsha1 package.
|
||||||
|
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"
|
||||||
|
# Hand-crafted pkgIndex.tcl
|
||||||
|
package ifneeded Tclsha1 $(DOTVERSION) [list load [file join $$dir $(PROJECT)$(VERSION).$(EXT)] Sample]
|
||||||
|
<<
|
||||||
|
|
||||||
|
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
|
355
third-party/sqlite/tea/win/nmakehlp.c
vendored
Normal file
355
third-party/sqlite/tea/win/nmakehlp.c
vendored
Normal file
@ -0,0 +1,355 @@
|
|||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* nmakehlp.c --
|
||||||
|
*
|
||||||
|
* This is used to fix limitations within nmake and the environment.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2002 by David Gravereaux.
|
||||||
|
* Copyright (c) 2003 by Patrick Thoyts
|
||||||
|
*
|
||||||
|
* See the file "license.terms" for information on usage and redistribution
|
||||||
|
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
*
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
* RCS: @(#) $Id: nmakehlp.c,v 1.2 2003/10/01 14:56:00 patthoyts Exp $
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#include <windows.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#pragma comment (lib, "user32.lib")
|
||||||
|
#pragma comment (lib, "kernel32.lib")
|
||||||
|
|
||||||
|
/* protos */
|
||||||
|
int CheckForCompilerFeature (const char *option);
|
||||||
|
int CheckForLinkerFeature (const char *option);
|
||||||
|
int IsIn (const char *string, const char *substring);
|
||||||
|
DWORD WINAPI ReadFromPipe (LPVOID args);
|
||||||
|
int GetVersionFromHeader(const char *tclh, const char *tkh);
|
||||||
|
|
||||||
|
/* globals */
|
||||||
|
typedef struct {
|
||||||
|
HANDLE pipe;
|
||||||
|
char buffer[1000];
|
||||||
|
} 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;
|
||||||
|
|
||||||
|
if (argc > 1 && *argv[1] == '-') {
|
||||||
|
switch (*(argv[1]+1)) {
|
||||||
|
case 'c':
|
||||||
|
if (argc != 3) {
|
||||||
|
chars = wsprintf(msg, "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 = wsprintf(msg, "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 = wsprintf(msg, "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 'v':
|
||||||
|
if (argc != 4) {
|
||||||
|
chars = wsprintf(msg, "usage: %s -v <tcl.h> <tk.h>\n"
|
||||||
|
"Search for versions from the tcl and tk headers.",
|
||||||
|
argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars, &dwWritten, NULL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return GetVersionFromHeader(argv[2], argv[3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chars = wsprintf(msg, "usage: %s -c|-l|-f ...\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;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 */
|
||||||
|
strcpy(cmdline, "cl.exe -nologo -c -TC -Fdtemp ");
|
||||||
|
/* append our option for testing */
|
||||||
|
strcat(cmdline, option);
|
||||||
|
/* filename to compile, which exists, but is nothing and empty. */
|
||||||
|
strcat(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 = wsprintf(msg, "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, strlen(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);
|
||||||
|
|
||||||
|
/* clean up temporary files before returning */
|
||||||
|
DeleteFile("temp.idb");
|
||||||
|
DeleteFile("temp.pdb");
|
||||||
|
|
||||||
|
/* 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. */
|
||||||
|
return !(strstr(Out.buffer, "D4002") != NULL || strstr(Err.buffer, "D4002") != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
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 */
|
||||||
|
strcpy(cmdline, "link.exe -nologo ");
|
||||||
|
/* append our option for testing */
|
||||||
|
strcat(cmdline, option);
|
||||||
|
/* filename to compile, which exists, but is nothing and empty. */
|
||||||
|
// strcat(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 = wsprintf(msg, "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, strlen(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI
|
||||||
|
ReadFromPipe (LPVOID args)
|
||||||
|
{
|
||||||
|
pipeinfo *pi = (pipeinfo *) args;
|
||||||
|
char *lastBuf = pi->buffer;
|
||||||
|
DWORD dwRead;
|
||||||
|
BOOL ok;
|
||||||
|
|
||||||
|
again:
|
||||||
|
ok = ReadFile(pi->pipe, lastBuf, 25, &dwRead, 0L);
|
||||||
|
if (!ok || dwRead == 0) {
|
||||||
|
CloseHandle(pi->pipe);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
lastBuf += dwRead;
|
||||||
|
goto again;
|
||||||
|
|
||||||
|
return 0; /* makes the compiler happy */
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
IsIn (const char *string, const char *substring)
|
||||||
|
{
|
||||||
|
return (strstr(string, substring) != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static double
|
||||||
|
ReadVersionFromHeader(const char *file, const char *macro)
|
||||||
|
{
|
||||||
|
double d = 0.0;
|
||||||
|
CHAR szBuffer[100];
|
||||||
|
LPSTR p;
|
||||||
|
DWORD cbBuffer = 100;
|
||||||
|
FILE *fp = fopen(file, "r");
|
||||||
|
if (fp != NULL) {
|
||||||
|
while (fgets(szBuffer, cbBuffer, fp) != NULL) {
|
||||||
|
if ((p = strstr(szBuffer, macro)) != NULL) {
|
||||||
|
while (*p && !isdigit(*p)) ++p;
|
||||||
|
d = strtod(p, NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
GetVersionFromHeader(const char *tclh, const char *tkh)
|
||||||
|
{
|
||||||
|
double dTcl = 0.0, dTk = 0.0;
|
||||||
|
|
||||||
|
if (tclh != NULL)
|
||||||
|
dTcl = ReadVersionFromHeader(tclh, "TCL_VERSION");
|
||||||
|
if (tkh != NULL)
|
||||||
|
dTk = ReadVersionFromHeader(tkh, "TK_VERSION");
|
||||||
|
|
||||||
|
if (dTcl > 0 || dTk > 0) {
|
||||||
|
FILE *ofp = fopen("version.vc", "w");
|
||||||
|
if (dTcl > 0)
|
||||||
|
fprintf(ofp, "TCL_DOTVERSION\t= %0.1f\nTCL_VERSION\t= %u\n",
|
||||||
|
dTcl, (int)(dTcl * 10.0));
|
||||||
|
if (dTk > 0)
|
||||||
|
fprintf(ofp, "TK_DOTVERSION\t= %0.1f\nTK_VERSION\t= %u\n",
|
||||||
|
dTk, (int)(dTk * 10.0));
|
||||||
|
fclose(ofp);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
436
third-party/sqlite/tea/win/rules.vc
vendored
Normal file
436
third-party/sqlite/tea/win/rules.vc
vendored
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# rules.vc --
|
||||||
|
#
|
||||||
|
# Microsoft Visual C++ makefile include for decoding the commandline
|
||||||
|
# macros. This file does not need editing to build Tcl.
|
||||||
|
#
|
||||||
|
# This version is modified from the Tcl source version to support
|
||||||
|
# building extensions using nmake.
|
||||||
|
#
|
||||||
|
# See the file "license.terms" for information on usage and redistribution
|
||||||
|
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2001-2002 David Gravereaux.
|
||||||
|
# Copyright (c) 2003 Patrick Thoyts
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# RCS: @(#) $Id: rules.vc,v 1.3 2004/07/04 23:15:23 patthoyts Exp $
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!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
|
||||||
|
|
||||||
|
!ifndef MACHINE
|
||||||
|
MACHINE = IX86
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifndef CFG_ENCODING
|
||||||
|
CFG_ENCODING = \"cp1252\"
|
||||||
|
!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
|
||||||
|
!if ![ver | find "4.0" > nul]
|
||||||
|
CPY = echo y | xcopy /i
|
||||||
|
!else
|
||||||
|
CPY = xcopy /i /y
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
CPY = xcopy /i
|
||||||
|
RMDIR = deltree /Y
|
||||||
|
!endif
|
||||||
|
|
||||||
|
|
||||||
|
!message ===============================================================================
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# build the helper app we need to overcome nmake's limiting
|
||||||
|
# environment.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if !exist(nmakehlp.exe)
|
||||||
|
!if [$(cc32) -nologo -ML nmakehlp.c -link -subsystem:console > nul]
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Test for compiler features
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
### test for optimizations
|
||||||
|
!if [nmakehlp -c -Otip]
|
||||||
|
!message *** Compiler has 'Optimizations'
|
||||||
|
OPTIMIZING = 1
|
||||||
|
!else
|
||||||
|
!message *** Compiler doesn't have 'Optimizations'
|
||||||
|
OPTIMIZING = 0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(MACHINE)" == "IX86"
|
||||||
|
### test for pentium errata
|
||||||
|
!if [nmakehlp -c -QI0f]
|
||||||
|
!message *** Compiler has 'Pentium 0x0f fix'
|
||||||
|
PENT_0F_ERRATA = 1
|
||||||
|
!else
|
||||||
|
!message *** Compiler doesn't have 'Pentium 0x0f fix'
|
||||||
|
PENT_0F_ERRATA = 0
|
||||||
|
!endif
|
||||||
|
### 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 doesn't have 'Win98 alignment problem'
|
||||||
|
ALIGN98_HACK = 0
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
PENT_0F_ERRATA = 0
|
||||||
|
ALIGN98_HACK = 0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(MACHINE)" == "IA64"
|
||||||
|
### test for Itanium errata
|
||||||
|
!if [nmakehlp -c -QIA64_Bx]
|
||||||
|
!message *** Compiler has 'B-stepping errata workarounds'
|
||||||
|
ITAN_B_ERRATA = 1
|
||||||
|
!else
|
||||||
|
!message *** Compiler doesn't have 'B-stepping errata workarounds'
|
||||||
|
ITAN_B_ERRATA = 0
|
||||||
|
!endif
|
||||||
|
!else
|
||||||
|
ITAN_B_ERRATA = 0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Decode the options requested.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(OPTS)" == "" || [nmakehlp -f "$(OPTS)" "none"]
|
||||||
|
STATIC_BUILD = 0
|
||||||
|
TCL_THREADS = 0
|
||||||
|
DEBUG = 0
|
||||||
|
PROFILE = 0
|
||||||
|
MSVCRT = 0
|
||||||
|
LOIMPACT = 0
|
||||||
|
TCL_USE_STATIC_PACKAGES = 0
|
||||||
|
USE_THREAD_ALLOC = 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) "threads"]
|
||||||
|
!message *** Doing threads
|
||||||
|
TCL_THREADS = 1
|
||||||
|
!else
|
||||||
|
TCL_THREADS = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "symbols"]
|
||||||
|
!message *** Doing symbols
|
||||||
|
DEBUG = 1
|
||||||
|
!else
|
||||||
|
DEBUG = 0
|
||||||
|
!endif
|
||||||
|
!if [nmakehlp -f $(OPTS) "profile"]
|
||||||
|
!message *** Doing profile
|
||||||
|
PROFILE = 1
|
||||||
|
!else
|
||||||
|
PROFILE = 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
|
||||||
|
!else
|
||||||
|
USE_THREAD_ALLOC = 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.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
SUFX = tsgx
|
||||||
|
|
||||||
|
!if $(DEBUG)
|
||||||
|
BUILDDIRTOP = Debug
|
||||||
|
DBGX = g
|
||||||
|
!else
|
||||||
|
BUILDDIRTOP = Release
|
||||||
|
DBGX =
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Set our defines now armed with our options.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTDEFINES = -DTCL_CFGVAL_ENCODING=$(CFG_ENCODING)
|
||||||
|
|
||||||
|
!if $(TCL_MEM_DEBUG)
|
||||||
|
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 $(DEBUG)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DEBUG
|
||||||
|
!elseif $(OPTIMIZING)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_OPTIMIZED
|
||||||
|
!endif
|
||||||
|
!if $(PROFILE)
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_PROFILED
|
||||||
|
!endif
|
||||||
|
!if "$(MACHINE)" == "IA64"
|
||||||
|
OPTDEFINES = $(OPTDEFINES) -DTCL_CFG_DO64BIT
|
||||||
|
!endif
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Get common info used when building extensions.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(PROJECT)" != "tcl"
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
!if [nmakehlp -v $(_TCL_H) ""] == 0
|
||||||
|
!include version.vc
|
||||||
|
!else
|
||||||
|
TCL_DOTVERSION = 8.5
|
||||||
|
TCL_VERSION = $(TCL_DOTVERSION:.=)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if $(TCLINSTALL)
|
||||||
|
TCLSH = "$(_TCLDIR)\bin\tclsh$(TCL_VERSION)$(SUFX).exe"
|
||||||
|
TCLSTUBLIB = "$(_TCLDIR)\lib\tclstub$(TCL_VERSION).lib"
|
||||||
|
TCLIMPLIB = "$(_TCLDIR)\lib\tcl$(TCL_VERSION)$(SUFX).lib"
|
||||||
|
TCL_LIBRARY = $(_TCLDIR)\lib
|
||||||
|
TCL_INCLUDES = -I"$(_TCLDIR)\include"
|
||||||
|
!else
|
||||||
|
TCLSH = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(TCL_VERSION)$(SUFX).exe"
|
||||||
|
TCLSTUBLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tclstub$(TCL_VERSION).lib"
|
||||||
|
TCLIMPLIB = "$(_TCLDIR)\win\$(BUILDDIRTOP)\tcl$(TCL_VERSION)$(SUFX).lib"
|
||||||
|
TCL_LIBRARY = $(_TCLDIR)\library
|
||||||
|
TCL_INCLUDES = -I"$(_TCLDIR)\generic" -I"$(_TCLDIR)\win"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# Get Tk info for building extensions.
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
!if "$(PROJECT)" != "tcl" && "$(PROJECT)" != "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)
|
||||||
|
!else
|
||||||
|
MSG =^
|
||||||
|
Failed to find tk.h. Set the TKDIR macro.
|
||||||
|
!error $(MSG)
|
||||||
|
!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
|
||||||
|
|
||||||
|
!if [nmakehlp -v $(_TCL_H) $(_TK_H)] == 0
|
||||||
|
!include version.vc
|
||||||
|
!else
|
||||||
|
TK_DOTVERSION = 8.5
|
||||||
|
TK_VERSION = $(TK_DOTVERSION:.=)
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# 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)'
|
||||||
|
|
||||||
|
!endif
|
Loading…
x
Reference in New Issue
Block a user