mirror of
https://github.com/sqlite/sqlite.git
synced 2024-11-24 16:18:08 +01:00
2d0b1ae73b
FossilOrigin-Name: c223dbb4fb8e800089752617c6c986b6c80be0d180e9d1610f28cf95253e5674
923 lines
28 KiB
Modula-2
923 lines
28 KiB
Modula-2
# Created by migrate-autoconf - fix items marked XXX
|
|
global autosetup
|
|
use cc cc-shared cc-lib hwaci-common
|
|
set DUMP_DEFINES_FILE defines.list
|
|
set cross_compiling 0
|
|
set enable_shared 1
|
|
|
|
########################################################################
|
|
# Note that boolean flags...
|
|
#
|
|
# 1) Are in the form flagname (default=false) or flagname=0 (false) or
|
|
# flagname=1 (true).
|
|
#
|
|
# 2) If they default to false, the actual flag mapped to them is
|
|
# --enable-FLAG.
|
|
#
|
|
# 3) If they default to true, the actual flag mapped to them is
|
|
# --disable-FLAG.
|
|
#
|
|
# 4) For boolean options, configure will accept any of --flag, --enable-flag,
|
|
# or --disable-flag. Unfortunately, it reserves --debug for its own use.
|
|
#
|
|
# 5) Mapping with their full name, e.g. enable-foo=1 or disable-bar=0,
|
|
# will lead to breakage in calls to either [opt-bool foo] or
|
|
# [opt-bool enable-foo].
|
|
#
|
|
# (2) and (3) mean that the help text for flag=1 should start with
|
|
# "Disable" and flag=0 should start with "Enable".
|
|
#
|
|
# In trying to helpfully map between --foo/--enable-foo/--disable-foo,
|
|
# it ends up creating some degree of confusion.
|
|
#
|
|
# Reminders about flag handling quirks..
|
|
#
|
|
# 1) autosetup treats prefixes of 'enable' and 'disable' specially,
|
|
# leading to some incompatibilities with the historical sqlite3
|
|
# configure script flags.
|
|
#
|
|
# Defining non-boolean flags named enable-foo requires different
|
|
# downstream handling of those flags. e.g.
|
|
#
|
|
# enable-tempstore:=no => {...}
|
|
#
|
|
# requires that [opt-val enable-tempstore], rather than [opt-val
|
|
# tempstore], be used, which is in constrast to boolean flags, where
|
|
# [opt-bool flag] must be used instead of [opt-bool enable-flag].
|
|
#
|
|
# Also, passing --enable-tempstore with no value (to presumably get the
|
|
# default value) breaks: autosetup tries to find a boolean-type tempstore
|
|
# flag and cannot, so it complains that flag --tempstore is not defined.
|
|
# i.e. --enable-tempstore requires that it be passed a value.
|
|
#
|
|
# An awkward workaround for that, discovered only by random trial and
|
|
# error, is to define both {tempstore=1} and {enable-tempstore:}. With
|
|
# that in place --enable-tempstore, with no value, works as expected
|
|
# (why? Nobody knows!) but --tempstore can only ever be legally passed
|
|
# a boolean value (0, 1, yes, no, enabled, disabled).
|
|
options {
|
|
with-tclsh:PATHNAME => {Full pathname of tclsh to use}
|
|
with-tcl:DIR => {Directory containing tclConfig.sh}
|
|
tcl=1 => {Disable building accessory programs that require TCL-dev}
|
|
test-status => {Enable status of tests}
|
|
threadsafe=1 => {Disable mutexing}
|
|
releasemode => {libtool link to release mode}
|
|
tempstore=1 => {}
|
|
enable-tempstore: => {Use an in-ram database for temporary tables: never,no,yes,always}
|
|
editline=0 => {BSD editline support}
|
|
readline=0 => {readline support}
|
|
with-readline-lib => {readline library}
|
|
with-readline-inc => {readline include paths}
|
|
with-linenoise:DIR => {}
|
|
amalgamation=1 => {Disable the amalgamation and instead build all files separately}
|
|
load-extension=1 => {Disable loading of external extensions}
|
|
math=1 => {Disable math functions}
|
|
json=1 => {Disable JSON functions}
|
|
all => {Enable FTS4, FTS5, Geopoly, RTree, Sessions}
|
|
memsys5 => {Enable MEMSYS5}
|
|
memsys3 => {Enable MEMSYS3}
|
|
fts3 => {Enable the FTS3 extension}
|
|
fts4 => {Enable the FTS4 extension}
|
|
fts5 => {Enable the FTS5 extension}
|
|
update-limit => {Enable the UPDATE/DELETE LIMIT clause}
|
|
geopoly => {Enable the GEOPOLY extension}
|
|
rtree => {Enable the RTREE extension}
|
|
session => {Enable the SESSION extension}
|
|
gcov => {Enable coverage testing using gcov}
|
|
linemacros => {Enable #line macros in the amalgamation.}
|
|
with-wasi-sdk:=/opt/wasi-sdk
|
|
=> {Top-most dir of the wasi-sdk for a WASI build}
|
|
dump-defines=1 => {Dump autosetup defines to $DUMP_DEFINES_FILE}
|
|
}
|
|
# debug=0 => {debugging & verbose explain}
|
|
|
|
set srcdir $autosetup(srcdir)
|
|
puts "srcdir = $srcdir"
|
|
set VERSION [readfile $srcdir/VERSION]
|
|
puts "VERSION = $VERSION"
|
|
puts "with-wasi-sdk? = [opt-val with-wasi-sdk]"
|
|
|
|
#
|
|
# The build process allows for using a cross-compiler. But the default
|
|
# action is to target the same platform that we are running on. The
|
|
# configure script needs to discover the following properties of the
|
|
# build and target systems:
|
|
#
|
|
# srcdir
|
|
#
|
|
# The is the name of the directory that contains the
|
|
# "configure" shell script. All source files are
|
|
# located relative to this directory.
|
|
#
|
|
# bindir
|
|
#
|
|
# The name of the directory where executables should be
|
|
# written by the "install" target of the makefile.
|
|
#
|
|
# program_prefix
|
|
#
|
|
# Add this prefix to the names of all executables that run
|
|
# on the target machine. Default: ""
|
|
#
|
|
# ENABLE_SHARED
|
|
#
|
|
# True if shared libraries should be generated.
|
|
#
|
|
# BUILD_CC
|
|
#
|
|
# The name of a command that is used to convert C
|
|
# source files into executables that run on the build
|
|
# platform.
|
|
#
|
|
# BUILD_CFLAGS
|
|
#
|
|
# Switches that the build compiler needs in order to construct
|
|
# command-line programs.
|
|
#
|
|
# BUILD_LIBS
|
|
#
|
|
# Libraries that the build compiler needs in order to construct
|
|
# command-line programs.
|
|
#
|
|
# TCL_*
|
|
#
|
|
# Lots of values are read in from the tclConfig.sh script,
|
|
# if that script is available. This values are used for
|
|
# constructing and installing the TCL extension.
|
|
#
|
|
# TARGET_READLINE_LIBS
|
|
#
|
|
# This is the library directives passed to the target linker
|
|
# that cause the executable to link against the readline library.
|
|
# This might be a switch like "-lreadline" or pathnames of library
|
|
# file like "../../src/libreadline.a".
|
|
#
|
|
# TARGET_READLINE_INC
|
|
#
|
|
# This variables define the directory that contain header
|
|
# files for the readline library. If the compiler is able
|
|
# to find <readline.h> on its own, then this can be blank.
|
|
|
|
########################################################################
|
|
# OPT_FEATURE_FLAGS = -DSQLITE_OMIT/ENABLE flags.
|
|
define OPT_FEATURE_FLAGS {}
|
|
proc add-feature-flag {flag} {
|
|
define-append OPT_FEATURE_FLAGS $flag
|
|
}
|
|
# add-feature-flag -DSQLITE_JUST_TESTING=3
|
|
|
|
hwaci-check-exeext
|
|
if {".exe" eq [get-define TARGET_EXEEXT]} {
|
|
define SQLITE_OS_UNIX 0
|
|
define SQLITE_OS_WIN 1
|
|
# todo? add -DSQLITE_OS_WIN=1 to CFLAGS?
|
|
} else {
|
|
define SQLITE_OS_UNIX 1
|
|
define SQLITE_OS_WIN 0
|
|
# todo? add -DSQLITE_OS_UNIX=1 to CFLAGS?
|
|
}
|
|
|
|
########################################################################
|
|
# Force-set autosetup option $flag to $val.
|
|
proc opt-set {flag {val 1}} {
|
|
global autosetup
|
|
if {$flag ni $::autosetup(options)} {
|
|
# We have to add this to autosetup(options) or else future calls
|
|
# to [opt-bool $flag] will fail validation of $flag.
|
|
lappend ::autosetup(options) $flag
|
|
}
|
|
dict set ::autosetup(optset) $flag $val
|
|
}
|
|
|
|
########################################################################
|
|
# If [opt-bool $boolFlag] is true, eval $then, else eval $else.
|
|
proc if-enabled {boolFlag then {else {}}} {
|
|
if {[opt-bool $boolFlag]} {eval $then} else {eval $else}
|
|
}
|
|
|
|
########################################################################
|
|
# If [opt-bool $boolFlag] is false, eval $then, else eval $else.
|
|
proc if-disabled {boolFlag then {else {}}} {
|
|
if {![opt-bool $boolFlag]} {eval $then} else {eval $else}
|
|
}
|
|
|
|
#########
|
|
# Programs needed
|
|
if {"" eq [hwaci-bin-define install]} {
|
|
msg-result "Cannot find install binary, so 'make install' will not work."
|
|
}
|
|
|
|
#########
|
|
# Enable large file support (if special flags are necessary)
|
|
cc-check-lfs
|
|
|
|
#########
|
|
# Check for needed/wanted data types
|
|
cc-check-types int8_t int16_t int32_t int64_t intptr_t \
|
|
uint8_t uint16_t uint32_t uint64_t uintptr_t
|
|
|
|
#########
|
|
# Check for needed/wanted headers
|
|
cc-check-includes sys/types.h stdlib.h stdint.h inttypes.h malloc.h
|
|
|
|
#########
|
|
# Figure out whether or not we have these functions
|
|
cc-check-functions fdatasync gmtime_r isnan localtime_r localtime_s \
|
|
malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64
|
|
|
|
##########
|
|
# Handle --with-wasi-sdk=DIR
|
|
#
|
|
# This must be early because it changes the toolchain.
|
|
#
|
|
# It's unclear whether we can actually get away with making these
|
|
# changes to the autosetup environment.
|
|
if {1} {
|
|
set wasiSdkDir [opt-val with-wasi-sdk] ; # ??? [lindex [opt-val with-wasi-sdk] end]
|
|
#puts "x wasiSdkDir=$wasiSdkDir foo=[lindex [opt-val with-wasi-sdk] end]"
|
|
if {$wasiSdkDir eq ""} {
|
|
define HAVE_WASI_SDK 0
|
|
define WASI_SDK_DIR ""
|
|
} else {
|
|
msg-checking "Checking WASI SDK directory \[$wasiSdkDir]... "
|
|
if {![file exists $wasiSdkDir/bin/clang]} {
|
|
user-error "--with-wasi-sdk=${wasiSdkDir} directory does not contain bin/clang"
|
|
}
|
|
msg-result "using wasi-sdk clang, disabling: tcl, CLI shell, DLL"
|
|
define HAVE_WASI_SDK 1
|
|
define WASI_SDK_DIR $wasiSdkDir
|
|
opt-set tcl 0
|
|
opt-set threadsafe 0
|
|
set cross_compiling 1
|
|
set enable_shared 0
|
|
|
|
# Changing --host and --target have no effect here except to possibly
|
|
# cause confusion. autoconf has finished processing them by this
|
|
# point.
|
|
#
|
|
# host_alias=wasm32-wasi
|
|
# target=wasm32-wasi
|
|
#
|
|
# Merely changing CC and LD to the wasi-sdk's is enough to get
|
|
# sqlite3.o building in WASM format.
|
|
# XXX CC="${wasiSdkDir}/bin/clang"
|
|
# XXX LD="${wasiSdkDir}/bin/wasm-ld"
|
|
# XXX RANLIB="${wasiSdkDir}/bin/llvm-ranlib"
|
|
# set cross_compiling yes
|
|
# opt-set threadsafe 0
|
|
# set use_tcl no
|
|
# opt-set tcl 0
|
|
# libtool is apparently hard-coded to use gcc for linking DLLs, so
|
|
# we disable the DLL build...
|
|
# set enable_shared no
|
|
}
|
|
# unset wasiSdkDir
|
|
}; # --wasi-sdk-dir
|
|
|
|
#########
|
|
# By default, we use the amalgamation (this may be changed below...)
|
|
#
|
|
# XXX USE_AMALGAMATION=1
|
|
|
|
if {0} {
|
|
#########
|
|
# Figure out all the name of a working tclsh and parameters needed to compile against Tcl.
|
|
# The --with-tcl= and/or --with-tclsh= configuration arguments might be useful for this.
|
|
#
|
|
# XXX AC_ARG_WITH tclsh AS_HELP_STRING([--with-tclsh=PATHNAME],[full pathname of a tclsh to use])
|
|
# XXX AC_ARG_WITH tcl AS_HELP_STRING([--with-tcl=DIR],[directory containing (tclConfig.sh)])
|
|
# if {![opt-bool tcl]} {
|
|
# set use_tcl $enableval
|
|
# } else {
|
|
# set use_tcl yes
|
|
# }
|
|
#set original_use_tcl ${use_tcl}
|
|
# XXX if test x"${with_tclsh}" == x -a x"${with_tcl}" == x; then
|
|
# XXX AC_CHECK_PROGS TCLSH_CMD tclsh8.6 tclsh tclsh9.0 none
|
|
#set with_tclsh ${TCLSH_CMD}
|
|
# XXX fi
|
|
# XXX if test x"${with_tclsh}" != x -a x"${with_tclsh}" != xnone; then
|
|
# XXX TCLSH_CMD=${with_tclsh}
|
|
#msg-result "using tclsh at \"$TCLSH_CMD\""
|
|
# XXX if test x"${use_tcl}" = "xyes"; then
|
|
#set with_tcl `${with_tclsh} <${srcdir}/tool/find_tclconfig.tcl`
|
|
# XXX if test x"${with_tcl}" != x; then
|
|
#msg-result "$TCLSH_CMD recommends the tclConfig.sh at ${with_tcl}"
|
|
# XXX else
|
|
#msg-result Warning: "$TCLSH_CMD is unable to recommend a tclConfig.sh"
|
|
#set use_tcl no
|
|
# XXX fi
|
|
# XXX fi
|
|
# XXX fi
|
|
# XXX if test x"${use_tcl}" = "xyes"; then
|
|
# XXX if test x"${with_tcl}" != x; then
|
|
# XXX if test -r ${with_tcl}/tclConfig.sh; then
|
|
# set tclconfig "${with_tcl}/tclConfig.sh"
|
|
# XXX else
|
|
# XXX for i in tcl8.6 tcl9.0 lib; do
|
|
# XXX if test -r ${with_tcl}/$i/tclConfig.sh; then
|
|
#set tclconfig ${with_tcl}/$i/tclConfig.sh
|
|
# XXX break
|
|
# XXX fi
|
|
# XXX done
|
|
# XXX fi
|
|
# XXX if test ! -r "${tclconfig}"; then
|
|
#user-error "no tclConfig.sh file found under ${with_tcl}"
|
|
# XXX fi
|
|
# XXX else
|
|
# If we have not yet found a tclConfig.sh file, look in $libdir whic is
|
|
# set automatically by autoconf or by the --prefix command-line option.
|
|
# See https://sqlite.org/forum/forumpost/e04e693439a22457
|
|
#set libdir ${prefix}/lib
|
|
# XXX if test -r ${libdir}/tclConfig.sh; then
|
|
#set tclconfig ${libdir}/tclConfig.sh
|
|
# XXX else
|
|
# XXX for i in tcl8.6 tcl9.0 lib; do
|
|
# XXX if test -r ${libdir}/$i/tclConfig.sh; then
|
|
#set tclconfig ${libdir}/$i/tclConfig.sh
|
|
# XXX break
|
|
# XXX fi
|
|
# XXX done
|
|
# XXX fi
|
|
# XXX if test ! -r "${tclconfig}"; then
|
|
#user-error "cannot find a usable tclConfig.sh file.
|
|
# Use --with-tcl=DIR to specify a directory where tclConfig.sh can be found.
|
|
# SQLite does not use TCL internally, but TCL is required to build SQLite
|
|
# from canonical sources and TCL is required for testing."
|
|
# XXX fi
|
|
# XXX fi
|
|
# msg-result "loading TCL configuration from ${tclconfig}"
|
|
# XXX . ${tclconfig}
|
|
# XXX autosetup automatically substitutes all define'd values
|
|
# In general, simply 'define' the value rather than using a shell
|
|
# variable and AC_SUBST.
|
|
#
|
|
# XXX AC_SUBST TCL_INCLUDE_SPEC
|
|
# XXX AC_SUBST TCL_LIB_SPEC
|
|
# XXX AC_SUBST TCL_STUB_LIB_SPEC
|
|
# There are lots of other configuration variables that are provided by the
|
|
# tclConfig.sh file and that could be included here. But as of right now,
|
|
# TCL_LIB_SPEC is the only what that the Makefile uses.
|
|
# XXX HAVE_TCL=1
|
|
# XXX elif test x"${original_use_tcl}" = "xno"; then
|
|
# msg-result "unable to run tests because of --disable-tcl"
|
|
# XXX HAVE_TCL=0
|
|
# XXX else
|
|
# msg-result "unable to run tests because no tclConfig.sh file could be located"
|
|
# XXX HAVE_TCL=0
|
|
# XXX fi
|
|
# XXX AC_SUBST HAVE_TCL
|
|
# XXX if test x"$TCLSH_CMD" == x; then
|
|
# XXX TCLSH_CMD=${TCL_EXEC_PREFIX}/bin/tclsh${TCL_VERSION}
|
|
# XXX if test ! -x ${TCLSH_CMD}; then
|
|
# set _2 ${TCL_EXEC_PREFIX}/bin/tclsh
|
|
# XXX if test ! -x ${TCLSH_CMD_2}; then
|
|
# msg-result Warning: "cannot find a usable tclsh at either ${TCLSH_CMD} or ${TCLSH_CMD_2}"
|
|
# XXX TCLSH_CMD=none
|
|
# XXX else
|
|
# XXX TCLSH_CMD=${TCLSH_CMD_2}
|
|
# XXX fi
|
|
# XXX fi
|
|
# XXX fi
|
|
# XXX if test "$TCLSH_CMD" = "none"; then
|
|
# If we can't find a local tclsh, then building the amalgamation will fail.
|
|
# We act as though --disable-amalgamation has been used.
|
|
# msg-result Warning: "Warning: can't find tclsh - defaulting to non-amalgamation build."
|
|
# XXX USE_AMALGAMATION=0
|
|
# XXX TCLSH_CMD="tclsh"
|
|
# XXX fi
|
|
# XXX AC_SUBST TCLSH_CMD
|
|
|
|
# XXX AC_ARG_VAR TCLLIBDIR Where to install tcl plugin
|
|
# XXX if test "x${TCLLIBDIR+set}" != "xset" ; then
|
|
# XXX for i in `echo 'puts stdout $auto_path' | ${TCLSH_CMD}` ; do
|
|
# XXX if test -d $i ; then
|
|
# XXX TCLLIBDIR=$i
|
|
# XXX break
|
|
# XXX fi
|
|
# XXX done
|
|
# XXX TCLLIBDIR="${TCLLIBDIR}/sqlite3"
|
|
# XXX fi
|
|
}
|
|
|
|
if {0} {
|
|
#########
|
|
# Set up options for running tests.
|
|
#
|
|
if {[opt-bool test-status]} {
|
|
define TSTRNNR_OPTS {--status}
|
|
} else {
|
|
define TSTRNNR_OPTS {}
|
|
}
|
|
# XXX if test $use_vt100 != no; then
|
|
# XXX TSTRNNR_OPTS=--status
|
|
# XXX else
|
|
# XXX TSTRNNR_OPTS=
|
|
# XXX fi
|
|
# XXX AC_SUBST TSTRNNR_OPTS
|
|
}
|
|
|
|
#########
|
|
# Locate a compiler for the build machine. This compiler should
|
|
# generate command-line programs that run on the build machine.
|
|
#
|
|
# XXX if test x"$cross_compiling" = xno; then
|
|
# XXX BUILD_CC=$CC
|
|
# XXX BUILD_CFLAGS=$CFLAGS
|
|
# XXX else
|
|
# XXX if test "${BUILD_CC+set}" != set; then
|
|
# XXX AC_CHECK_PROGS BUILD_CC gcc cc cl
|
|
# XXX fi
|
|
# XXX if test "${BUILD_CFLAGS+set}" != set; then
|
|
# XXX BUILD_CFLAGS="-g"
|
|
# XXX fi
|
|
# XXX fi
|
|
# XXX AC_SUBST BUILD_CC
|
|
|
|
if-enabled all {
|
|
opt-set fts4
|
|
opt-set fts5
|
|
opt-set geopoly
|
|
opt-set rtree
|
|
opt-set session
|
|
} {
|
|
if-enabled geopoly {opt-set rtree}
|
|
}
|
|
|
|
|
|
##########
|
|
# Do we want to support multithreaded use of sqlite
|
|
#
|
|
if {0} {
|
|
if {![opt-bool threadsafe]} {
|
|
}
|
|
msg-checking "Checking whether to support threadsafe operation..."
|
|
# XXX if test "$enable_threadsafe" = "no"; then
|
|
# XXX SQLITE_THREADSAFE=0
|
|
msg-result "no"
|
|
# XXX else
|
|
# XXX SQLITE_THREADSAFE=1
|
|
msg-result "yes"
|
|
# XXX fi
|
|
# XXX AC_SUBST SQLITE_THREADSAFE
|
|
|
|
# XXX if test "$SQLITE_THREADSAFE" = "1"; then
|
|
cc-check-function-in-lib pthread_create pthread
|
|
cc-check-function-in-lib pthread_mutexattr_init pthread
|
|
# XXX fi
|
|
}
|
|
|
|
##########
|
|
# Do we want to support release
|
|
#
|
|
if-enabled releasemode {
|
|
msg-result "Release-mode build."
|
|
set enable_releasemode 1
|
|
} {
|
|
msg-result "Non-release-mode build."
|
|
set enable_releasemode 0
|
|
}
|
|
|
|
if {0} {
|
|
msg-checking "Checking whether to support shared library linked as release mode or not..."
|
|
# XXX if test "$enable_releasemode" = "no"; then
|
|
# XXX ALLOWRELEASE=""
|
|
msg-result "no"
|
|
# XXX else
|
|
# XXX ALLOWRELEASE="-release `cat $srcdir/VERSION`"
|
|
msg-result "yes"
|
|
# XXX fi
|
|
# XXX AC_SUBST ALLOWRELEASE
|
|
}
|
|
|
|
##########
|
|
# Do we want temporary databases in memory
|
|
if {1} {
|
|
set ts [opt-val enable-tempstore no]
|
|
set tsn 1
|
|
msg-checking "Use an in-ram database for temporary tables? "
|
|
switch -- $ts {
|
|
never { set tsn 0 }
|
|
no { set tsn 1 }
|
|
yes { set tsn 2 }
|
|
always { set tsn 3 }
|
|
default {
|
|
user-error "Invalid enable-tempstore value \[$ts]. Use one of: no, yes, always, never"
|
|
}
|
|
}
|
|
msg-result $ts
|
|
define TEMP_STORE $tsn
|
|
unset ts tsn
|
|
}
|
|
|
|
if {0} {
|
|
###########
|
|
# Lots of things are different if we are compiling for Windows using
|
|
# the CYGWIN environment. So check for that special case and handle
|
|
# things accordingly.
|
|
#
|
|
msg-checking "Checking if executables have the .exe suffix..."
|
|
# XXX if test "$config_BUILD_EXEEXT" = ".exe"; then
|
|
# XXX CYGWIN=yes
|
|
msg-result "yes"
|
|
# XXX else
|
|
msg-result "unknown"
|
|
# XXX fi
|
|
# XXX if test "$CYGWIN" != "yes"; then
|
|
# XXX m4_warn([obsolete],
|
|
# XXX [AC_CYGWIN is obsolete: use AC_CANONICAL_HOST and check if $host_os
|
|
# XXX matches *cygwin*])
|
|
# XXX case $host_os in
|
|
# XXX *cygwin* ) CYGWIN=yes;;
|
|
# XXX * ) CYGWIN=no;;
|
|
# XXX esac
|
|
|
|
# XXX fi
|
|
# XXX if test "$CYGWIN" = "yes"; then
|
|
# XXX BUILD_EXEEXT=.exe
|
|
# XXX else
|
|
# XXX BUILD_EXEEXT=$EXEEXT
|
|
# XXX fi
|
|
# XXX if test x"$cross_compiling" = xno; then
|
|
# XXX TARGET_EXEEXT=$BUILD_EXEEXT
|
|
# XXX else
|
|
# XXX TARGET_EXEEXT=$config_TARGET_EXEEXT
|
|
# XXX fi
|
|
# XXX if test "$TARGET_EXEEXT" = ".exe"; then
|
|
# XXX SQLITE_OS_UNIX=0
|
|
# XXX SQLITE_OS_WIN=1
|
|
# XXX CFLAGS="$CFLAGS -DSQLITE_OS_WIN=1"
|
|
# XXX else
|
|
# XXX SQLITE_OS_UNIX=1
|
|
# XXX SQLITE_OS_WIN=0
|
|
# XXX CFLAGS="$CFLAGS -DSQLITE_OS_UNIX=1"
|
|
# XXX fi
|
|
|
|
# XXX AC_SUBST BUILD_EXEEXT
|
|
# XXX AC_SUBST SQLITE_OS_UNIX
|
|
# XXX AC_SUBST SQLITE_OS_WIN
|
|
# XXX AC_SUBST TARGET_EXEEXT
|
|
}
|
|
|
|
if {0} {
|
|
##########
|
|
# Figure out what C libraries are required to compile programs
|
|
# that use "readline()" library.
|
|
#
|
|
# XXX TARGET_READLINE_LIBS=""
|
|
# XXX TARGET_READLINE_INC=""
|
|
# XXX TARGET_HAVE_READLINE=0
|
|
# XXX TARGET_HAVE_EDITLINE=0
|
|
if {[opt-bool editline]} {
|
|
set with_editline $enableval
|
|
} else {
|
|
set with_editline auto
|
|
}
|
|
if {![opt-bool readline]} {
|
|
set with_readline $enableval
|
|
} else {
|
|
set with_readline auto
|
|
}
|
|
|
|
# XXX if test x"$with_editline" != xno; then
|
|
# XXX sLIBS=$LIBS
|
|
# XXX LIBS=""
|
|
# XXX TARGET_HAVE_EDITLINE=1
|
|
if {[cc-check-function-in-lib readline edit]} {
|
|
set with_readline no
|
|
} else {
|
|
# XXX TARGET_HAVE_EDITLINE=0
|
|
}
|
|
# XXX TARGET_READLINE_LIBS=$LIBS
|
|
# XXX LIBS=$sLIBS
|
|
# XXX fi
|
|
# XXX if test x"$with_readline" != xno; then
|
|
set found "yes"
|
|
|
|
if {[opt-val with-readline-lib] ne {}} {
|
|
set withval [lindex [opt-val with-readline-lib] end]
|
|
set with_readline_lib $withval
|
|
} else {
|
|
set with_readline_lib "auto"
|
|
}
|
|
# XXX if test "x$with_readline_lib" = xauto; then
|
|
# XXX save_LIBS="$LIBS"
|
|
# XXX LIBS=""
|
|
if {[cc-check-function-in-lib tgetent readline ncurses curses termcap]} {
|
|
# XXX term_LIBS="$LIBS"
|
|
} else {
|
|
# XXX term_LIBS=""
|
|
}
|
|
if {[cc-check-function-in-lib readline readline]} {
|
|
# XXX TARGET_READLINE_LIBS="-lreadline"
|
|
} else {
|
|
set found "no"
|
|
}
|
|
# XXX TARGET_READLINE_LIBS="$TARGET_READLINE_LIBS $term_LIBS"
|
|
# XXX LIBS="$save_LIBS"
|
|
# XXX else
|
|
# XXX TARGET_READLINE_LIBS="$with_readline_lib"
|
|
# XXX fi
|
|
|
|
if {[opt-val with-readline-inc] ne {}} {
|
|
set withval [lindex [opt-val with-readline-inc] end]
|
|
set with_readline_inc $withval
|
|
} else {
|
|
set with_readline_inc "auto"
|
|
}
|
|
# XXX if test "x$with_readline_inc" = xauto; then
|
|
if {[cc-check-includes readline.h]} {
|
|
set found "yes"
|
|
} else {
|
|
set found "no"
|
|
# XXX if test "$cross_compiling" != yes; then
|
|
# XXX for dir in /usr /usr/local /usr/local/readline /usr/contrib /mingw; do
|
|
# XXX for subdir in include include/readline; do
|
|
# XXX AC_CHECK_FILE $dir/$subdir/readline.h found=yes
|
|
# XXX if test "$found" = "yes"; then
|
|
# XXX TARGET_READLINE_INC="-I$dir/$subdir"
|
|
# XXX break
|
|
# XXX fi
|
|
# XXX done
|
|
# XXX test "$found" = "yes" && break
|
|
# XXX done
|
|
# XXX fi
|
|
}
|
|
# XXX else
|
|
# XXX TARGET_READLINE_INC="$with_readline_inc"
|
|
# XXX fi
|
|
|
|
# XXX if test x"$found" = xno; then
|
|
# XXX TARGET_READLINE_LIBS=""
|
|
# XXX TARGET_READLINE_INC=""
|
|
# XXX TARGET_HAVE_READLINE=0
|
|
# XXX else
|
|
# XXX TARGET_HAVE_READLINE=1
|
|
# XXX fi
|
|
# XXX fi
|
|
if {[opt-val with-linenoise] ne {}} {
|
|
set withval [lindex [opt-val with-linenoise] end]
|
|
set with_linenoise $withval
|
|
} else {
|
|
set with_linenoise "no"
|
|
}
|
|
# XXX if test "x$with_linenoise" != "xno"; then
|
|
# XXX TARGET_HAVE_READLINE=0
|
|
# XXX TARGET_HAVE_EDITLINE=0
|
|
# XXX TARGET_HAVE_LINENOISE=1
|
|
# XXX TARGET_READLINE_INC="-I${with_linenoise}"
|
|
# XXX TARGET_READLINE_LIBS="${with_linenoise}/linenoise.c"
|
|
# XXX echo "using linenoise source code at ${with_linenoise}"
|
|
# XXX else
|
|
# XXX TARGET_HAVE_LINENOISE=0
|
|
# XXX echo "not using linenoise"
|
|
# XXX fi
|
|
|
|
# XXX AC_SUBST TARGET_READLINE_LIBS
|
|
# XXX AC_SUBST TARGET_READLINE_INC
|
|
# XXX AC_SUBST TARGET_HAVE_READLINE
|
|
# XXX AC_SUBST TARGET_HAVE_EDITLINE
|
|
# XXX AC_SUBST TARGET_HAVE_LINENOISE
|
|
}
|
|
|
|
if {0} {
|
|
##########
|
|
# Figure out what C libraries are required to compile programs
|
|
# that use "fdatasync()" function.
|
|
#
|
|
cc-check-function-in-lib fdatasync rt
|
|
}
|
|
|
|
if {0} {
|
|
#########
|
|
# check for debug enabled
|
|
if {[opt-bool debug]} {
|
|
}
|
|
msg-checking "Checking build type..."
|
|
# XXX if test "${enable_debug}" = "yes" ; then
|
|
# XXX TARGET_DEBUG="-DSQLITE_DEBUG=1 -DSQLITE_ENABLE_SELECTTRACE -DSQLITE_ENABLE_WHERETRACE -O0 -Wall"
|
|
msg-result "debug"
|
|
# XXX else
|
|
# XXX TARGET_DEBUG="-DNDEBUG"
|
|
msg-result "release"
|
|
# XXX fi
|
|
# XXX AC_SUBST TARGET_DEBUG
|
|
}
|
|
|
|
if {0} {
|
|
#########
|
|
# See whether we should use the amalgamation to build
|
|
|
|
if {![opt-bool amalgamation]} {
|
|
}
|
|
# XXX if test "${enable_amalgamation}" = "no" ; then
|
|
# XXX USE_AMALGAMATION=0
|
|
# XXX fi
|
|
# XXX AC_SUBST USE_AMALGAMATION
|
|
}
|
|
|
|
if {0} {
|
|
#########
|
|
# Look for zlib. Only needed by extensions and by the sqlite3.exe shell
|
|
cc-check-includes zlib.h
|
|
if {[cc-check-function-in-lib deflate z]} {
|
|
define HAVE_ZLIB 1; # "-DSQLITE_HAVE_ZLIB=1"
|
|
} else {
|
|
define HAVE_ZLIB 0; # HAVE_ZLIB=""
|
|
}
|
|
# XXX AC_SUBST HAVE_ZLIB
|
|
}
|
|
|
|
if-enabled load-extension {
|
|
if {[cc-check-function-in-lib dlopen dl]} {
|
|
define LDFLAGS_DLOPEN [get-define lib_dlopen]
|
|
} else {
|
|
user-error "dlopen() not found. Use --disable-load-extension to bypass this check."
|
|
}
|
|
} {
|
|
define LDFLAGS_DLOPEN ""
|
|
add-feature-flag {-DSQLITE_OMIT_LOAD_EXTENSION=1}
|
|
msg-result "Disabling loadable extensions."
|
|
}
|
|
|
|
if-enabled math {
|
|
if {![cc-check-function-in-lib ceil m]} {
|
|
user-error "Cannot find libm functions. Use --disable-math to bypass this."
|
|
}
|
|
define LDFLAGS_MATH [get-define lib_ceil]
|
|
undefine lib_ceil
|
|
add-feature-flag {-DSQLITE_ENABLE_MATH_FUNCTIONS}
|
|
msg-result "Enabling math SQL functions"
|
|
} {
|
|
define LDFLAGS_MATH ""
|
|
msg-result "Disabling math SQL functions"
|
|
}
|
|
|
|
if-enabled json {
|
|
msg-result "Enabling JSON SQL functions"
|
|
} {
|
|
add-feature-flag {-DSQLITE_OMIT_JSON}
|
|
msg-result "Disabling JSON SQL functions"
|
|
}
|
|
|
|
if {0} {
|
|
##########
|
|
# Do we want to support memsys3 and/or memsys5
|
|
#
|
|
if {[opt-bool memsys5]} {
|
|
}
|
|
msg-checking "Checking whether to support MEMSYS5..."
|
|
# XXX if test "${enable_memsys5}" = "yes"; then
|
|
# XXX OPT_FEATURE_FLAGS="${OPT_FEATURE_FLAGS} -DSQLITE_ENABLE_MEMSYS5"
|
|
msg-result "yes"
|
|
# XXX else
|
|
msg-result "no"
|
|
# XXX fi
|
|
if {[opt-bool memsys3]} {
|
|
}
|
|
msg-checking "Checking whether to support MEMSYS3..."
|
|
# XXX if test "${enable_memsys3}" = "yes" -a "${enable_memsys5}" = "no"; then
|
|
# XXX OPT_FEATURE_FLAGS="${OPT_FEATURE_FLAGS} -DSQLITE_ENABLE_MEMSYS3"
|
|
msg-result "yes"
|
|
# XXX else
|
|
msg-result "no"
|
|
# XXX fi
|
|
}
|
|
|
|
if {0} {
|
|
#########
|
|
# See whether we should enable Full Text Search extensions
|
|
if {[opt-bool fts3]} {
|
|
}
|
|
msg-checking "Checking whether to support FTS3..."
|
|
# XXX if test "${enable_fts3}" = "yes" ; then
|
|
# XXX OPT_FEATURE_FLAGS="${OPT_FEATURE_FLAGS} -DSQLITE_ENABLE_FTS3"
|
|
msg-result "yes"
|
|
# XXX else
|
|
msg-result "no"
|
|
# XXX fi
|
|
if {[opt-bool fts4]} {
|
|
}
|
|
msg-checking "Checking whether to support FTS4..."
|
|
# XXX if test "${enable_fts4}" = "yes" -o "${enable_all}" = "yes" ; then
|
|
msg-result "yes"
|
|
# XXX OPT_FEATURE_FLAGS="${OPT_FEATURE_FLAGS} -DSQLITE_ENABLE_FTS4"
|
|
cc-check-function-in-lib log m
|
|
# XXX else
|
|
msg-result "no"
|
|
# XXX fi
|
|
if {[opt-bool fts5]} {
|
|
}
|
|
msg-checking "Checking whether to support FTS5..."
|
|
# XXX if test "${enable_fts5}" = "yes" -o "${enable_all}" = "yes" ; then
|
|
msg-result "yes"
|
|
# XXX OPT_FEATURE_FLAGS="${OPT_FEATURE_FLAGS} -DSQLITE_ENABLE_FTS5"
|
|
cc-check-function-in-lib log m
|
|
# XXX else
|
|
msg-result "no"
|
|
# XXX fi
|
|
}
|
|
|
|
#########
|
|
# attempt to duplicate any OMITS and ENABLES into the ${OPT_FEATURE_FLAGS} parameter
|
|
# XXX for option in $CFLAGS $CPPFLAGS
|
|
# XXX do
|
|
# XXX case $option in
|
|
# XXX -DSQLITE_OMIT*) OPT_FEATURE_FLAGS="$OPT_FEATURE_FLAGS $option";;
|
|
# XXX -DSQLITE_ENABLE*) OPT_FEATURE_FLAGS="$OPT_FEATURE_FLAGS $option";;
|
|
# XXX esac
|
|
# XXX done
|
|
# XXX AC_SUBST OPT_FEATURE_FLAGS
|
|
|
|
# attempt to remove any OMITS and ENABLES from the $(CFLAGS) parameter
|
|
# XXX ac_temp_CFLAGS=""
|
|
# XXX for option in $CFLAGS
|
|
# XXX do
|
|
# XXX case $option in
|
|
# XXX -DSQLITE_OMIT*) ;;
|
|
# XXX -DSQLITE_ENABLE*) ;;
|
|
# XXX *) ac_temp_CFLAGS="$ac_temp_CFLAGS $option";;
|
|
# XXX esac
|
|
# XXX done
|
|
# XXX CFLAGS=$ac_temp_CFLAGS
|
|
|
|
# attempt to remove any OMITS and ENABLES from the $(CPPFLAGS) parameter
|
|
# XXX ac_temp_CPPFLAGS=""
|
|
# XXX for option in $CPPFLAGS
|
|
# XXX do
|
|
# XXX case $option in
|
|
# XXX -DSQLITE_OMIT*) ;;
|
|
# XXX -DSQLITE_ENABLE*) ;;
|
|
# XXX *) ac_temp_CPPFLAGS="$ac_temp_CPPFLAGS $option";;
|
|
# XXX esac
|
|
# XXX done
|
|
# XXX CPPFLAGS=$ac_temp_CPPFLAGS
|
|
|
|
# attempt to remove any OMITS and ENABLES from the $(BUILD_CFLAGS) parameter
|
|
# XXX ac_temp_BUILD_CFLAGS=""
|
|
# XXX for option in $BUILD_CFLAGS
|
|
# XXX do
|
|
# XXX case $option in
|
|
# XXX -DSQLITE_OMIT*) ;;
|
|
# XXX -DSQLITE_ENABLE*) ;;
|
|
# XXX *) ac_temp_BUILD_CFLAGS="$ac_temp_BUILD_CFLAGS $option";;
|
|
# XXX esac
|
|
# XXX done
|
|
# XXX BUILD_CFLAGS=$ac_temp_BUILD_CFLAGS
|
|
|
|
|
|
if-enabled gcov {
|
|
define USE_GCOV 1
|
|
msg-result "Enabling gcov"
|
|
} {
|
|
define USE_GCOV 0
|
|
}
|
|
|
|
foreach {boolFlag featureFlag} {
|
|
fts4 -DSQLITE_ENABLE_FTS4
|
|
fts5 -DSQLITE_ENABLE_FTS5
|
|
geopoly -DSQLITE_ENABLE_GEOPOLY
|
|
rtree -DSQLITE_ENABLE_RTREE
|
|
session {-DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK}
|
|
update-limit -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
|
} {
|
|
if {[opt-bool $boolFlag]} {
|
|
add-feature-flag $featureFlag
|
|
msg-checking "Enabling "
|
|
} else {
|
|
msg-checking "Not enabling "
|
|
}
|
|
msg-result "$boolFlag"
|
|
}
|
|
|
|
msg-checking "Use #line macros in the amalgamation: "
|
|
if-enabled linemacros {
|
|
define AMALGAMATION_LINE_MACROS {--linemacros=1}
|
|
msg-result yes
|
|
} {
|
|
define AMALGAMATION_LINE_MACROS {--linemacros=0}
|
|
msg-result no
|
|
}
|
|
|
|
if {0} {
|
|
#########
|
|
# Generate the output files.
|
|
#
|
|
# XXX AC_SUBST BUILD_CFLAGS
|
|
make-template Makefile.in
|
|
make-template sqlite3.pc.in
|
|
make-config-header sqlite_cfg.h
|
|
}
|
|
|
|
if {"" ne [get-define OPT_FEATURE_FLAGS]} {
|
|
msg-result "Final feature flags: [get-define OPT_FEATURE_FLAGS]"
|
|
}
|
|
|
|
if-enabled dump-defines {
|
|
global DUMP_DEFINES_FILE
|
|
msg-result "--dump-defines is creating file: $DUMP_DEFINES_FILE"
|
|
make-config-header $DUMP_DEFINES_FILE -bare {OPT_FEATURE_FLAGS SQLITE_OS_*} -auto {*}
|
|
# achtung: ^^^^ whichever SQLITE_OS_foo flag which is set to 0 will
|
|
# get _undefined_ here unless it's part of the -bare set.
|
|
}
|