mirror of
https://github.com/sqlite/sqlite.git
synced 2024-11-21 19:29:09 +01:00
Add --with-icu-config flag to use the icu-config binary to find the required ldflags for linking the ICU libraries.
FossilOrigin-Name: 64f33bb125102b3fec3901f4b56098429509ec0b6ce6e6b88af2393c344ac864
This commit is contained in:
parent
e550d98bbf
commit
1682fedaa0
88
auto.def
88
auto.def
@ -173,8 +173,10 @@ set flags {
|
||||
editline=0 => {BSD editline support}
|
||||
# </line-editing>
|
||||
# <icu>
|
||||
with-icu-ldflags:LDFLAGS => {Enable SQLITE_ENABLE_ICU and add the given linker flags for the ICU libraries}
|
||||
icu-collations=0 => {Enable SQLITE_ENABLE_ICU_COLLATIONS. Requires --with-icu-ldflags=...}
|
||||
with-icu-ldflags:LDFLAGS
|
||||
=> {Enable SQLITE_ENABLE_ICU and add the given linker flags for the ICU libraries}
|
||||
icu-collations=0 => {Enable SQLITE_ENABLE_ICU_COLLATIONS. Requires --with-icu-ldflags=...}
|
||||
with-icu-config:=auto => {Enable SQLITE_ENABLE_ICU and fetch linker flags from the given icu-config binary}
|
||||
# </icu>
|
||||
# <alternative-builds>
|
||||
with-wasi-sdk:=/opt/wasi-sdk
|
||||
@ -878,6 +880,26 @@ proc sqlite-check-line-editing {} {
|
||||
show-notices
|
||||
sqlite-add-shell-opt -DSQLITE_OMIT_READLINE_COMPLETION
|
||||
}
|
||||
|
||||
# Now check whether rl_completion_matches() has a signature we can use.
|
||||
# cctest is producing unexpected test output when using:
|
||||
# -includes {stdio.h readline/readline.h}
|
||||
# so we have to use -source instead and write the whole test app inline
|
||||
if {[cctest \
|
||||
-cflags $rlInc -libs $rlLib -nooutput 1 -source {
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
static char * rcg(const char *z, int i){return 0;}
|
||||
int main(void) {
|
||||
char ** x = rl_completion_matches("one", rcg);
|
||||
return 0;
|
||||
}
|
||||
}]} {
|
||||
user-notice "Readline completion enabled"
|
||||
} else {
|
||||
user-notice "WARNING: readline completion disabled due to rl_completion_matches() signature mismatch"
|
||||
add-shell-opt -DSQLITE_OMIT_READLINE_COMPLETION
|
||||
}
|
||||
return "readline"
|
||||
}
|
||||
|
||||
@ -929,21 +951,63 @@ unset emccsh
|
||||
|
||||
########################################################################
|
||||
# ICU - International Components for Unicode
|
||||
if {"" ne [define LDFLAGS_ICU [join [opt-val with-icu-ldflags ""]]]} {
|
||||
#
|
||||
# Handles these flags:
|
||||
#
|
||||
# --with-icu-ldflags=LDFLAGS
|
||||
# --with-icu-config[=/path/to/icu-config]
|
||||
# --enable-icu-collations
|
||||
#
|
||||
# If both icu-ldflags and icu-config are provided, they are
|
||||
# cumulative. If neither are provided, icu-collations is not honored
|
||||
# and a warning is emitted if it is provided.
|
||||
#
|
||||
# Design note: though we can automatically enable ICU if the
|
||||
# icu-config binary is found, we specifically do not. ICU is always an
|
||||
# opt-in feature.
|
||||
proc sqlite-check-icu {} {
|
||||
define LDFLAGS_ICU [join [opt-val with-icu-ldflags ""]]
|
||||
# Flags sets seen in the wild for ICU:
|
||||
# - -licui18n -licuuc -licudata
|
||||
# - -licui18n -licuuc
|
||||
# - /usr/local/bin/icu-config --ldflags
|
||||
sqlite-add-feature-flag -shell -DSQLITE_ENABLE_ICU
|
||||
msg-result "Enabling ICU support with libs: [get-define LDFLAGS_ICU]"
|
||||
if {[opt-bool icu-collations]} {
|
||||
msg-result "Enabling ICU collations."
|
||||
sqlite-add-feature-flag -shell -DSQLITE_ENABLE_ICU_COLLATIONS
|
||||
# Recall that shell.c builds with sqlite3.c
|
||||
if {[hwaci-opt-was-provided with-icu-config]} {
|
||||
set bin [opt-val with-icu-config]
|
||||
if {"auto" eq $bin} {
|
||||
set bin [hwaci-first-bin-of \
|
||||
[get-define prefix]/bin/icu-config \
|
||||
/usr/local/bin/icu-config \
|
||||
/usr/bin/icu-config]
|
||||
if {"" eq $bin} {
|
||||
hwaci-fatal "--with-icu-config=auto cannot find icu-config binary"
|
||||
}
|
||||
}
|
||||
if {[file-isexec $bin]} {
|
||||
set x [exec $bin --ldflags]
|
||||
if {"" eq $x} {
|
||||
hwaci-fatal "$bin --ldflags returned no data"
|
||||
}
|
||||
define-append LDFLAGS_ICU $x
|
||||
} else {
|
||||
hwaci-fatal "--with-icu-config=$bin does not refer to an executable"
|
||||
}
|
||||
}
|
||||
} elseif {[opt-bool icu-collations]} {
|
||||
hwaci-warn "ignoring --enable-icu-collations because --with-icu-ldflags was not specified"
|
||||
}
|
||||
set flags [define LDFLAGS_ICU [string trim [get-define LDFLAGS_ICU]]]
|
||||
if {"" ne $flags} {
|
||||
sqlite-add-feature-flag -shell -DSQLITE_ENABLE_ICU
|
||||
msg-result "Enabling ICU support with libs: $flags"
|
||||
if {[opt-bool icu-collations]} {
|
||||
msg-result "Enabling ICU collations."
|
||||
sqlite-add-feature-flag -shell -DSQLITE_ENABLE_ICU_COLLATIONS
|
||||
# Recall that shell.c builds with sqlite3.c
|
||||
}
|
||||
} elseif {[opt-bool icu-collations]} {
|
||||
hwaci-warn "ignoring --enable-icu-collations because neither --with-icu-ldflags nor --with-icu-config provided any linker flags"
|
||||
} else {
|
||||
msg-result "ICU support is disabled."
|
||||
}
|
||||
}; # sqlite-check-icu
|
||||
sqlite-check-icu
|
||||
|
||||
########################################################################
|
||||
# Check for log(3) in libm and die with an error if it is not
|
||||
|
@ -187,7 +187,7 @@ proc hwaci-find-executable-path {args} {
|
||||
set verbose 0
|
||||
if {[lindex $args 0] eq "-v"} {
|
||||
set verbose 1
|
||||
set binName [lrange $args 1 end]
|
||||
set args [lassign $args - binName]
|
||||
msg-checking "Looking for $binName ... "
|
||||
}
|
||||
set check [find-executable-path $binName]
|
||||
@ -255,6 +255,15 @@ proc hwaci-require-bash {} {
|
||||
return $bash
|
||||
}
|
||||
|
||||
########################################################################
|
||||
# Returns 1 if the user specifically provided the given configure
|
||||
# flag, else 0. This can be used to distinguish between options which
|
||||
# have a default value and those which were specifically provided by
|
||||
# the user.
|
||||
proc hwaci-opt-was-provided {key} {
|
||||
return [dict exists $::autosetup(optset) $key]
|
||||
}
|
||||
|
||||
########################################################################
|
||||
# Force-set autosetup option $flag to $val. The value can be fetched
|
||||
# later with [opt-val], [opt-bool], and friends.
|
||||
|
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Expand\sthe\s'make\shelp'\starget\sand\sclean\sup\ssome\soverly-noisy\sconfigure\soutput.
|
||||
D 2024-10-27T22:34:07.986
|
||||
C Add\s--with-icu-config\sflag\sto\suse\sthe\sicu-config\sbinary\sto\sfind\sthe\srequired\sldflags\sfor\slinking\sthe\sICU\slibraries.
|
||||
D 2024-10-28T00:56:31.767
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md b6e6c1baf38e4339bd3f1e0e5e5bfd0a9a93d133360691b2785c2d4b2f2dcec2
|
||||
@ -13,7 +13,7 @@ F art/icon-80x90.gif 65509ce3e5f86a9cd64fe7fca2d23954199f31fe44c1e09e208c80fb83d
|
||||
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
|
||||
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
|
||||
F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
|
||||
F auto.def ccbcecdf3a348fb463cd11e5fbcc1b2954059103e99531bf84d18a5f56c1351f
|
||||
F auto.def a876018881cc52bd5ac45015d460164fa0c5bc0c92bb820aee3b49c3f38d1394
|
||||
F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
|
||||
F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
|
||||
F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
|
||||
@ -47,7 +47,7 @@ F autosetup/cc-lib.tcl 493c5935b5dd3bf9bd4eca89b07c8b1b1a9356d61783035144e21795f
|
||||
F autosetup/cc-shared.tcl 4f024e94a47f427ba61de1739f6381ef0080210f9fae89112d5c1de1e5460d78
|
||||
F autosetup/cc.tcl 7e2fe943ae9d45cf39e9f5b05b6230df8e719415edea5af06c30eb68680bde14
|
||||
F autosetup/default.auto 5cdf016de2140e50f1db190a02039dc42fb390af1dda4cc4853e3042a9ef0e82
|
||||
F autosetup/hwaci-common.tcl bc48c6ddfcd33a0eaf17f1709cde60622ff29c479e0356e8c6bcabe5b58a4d51
|
||||
F autosetup/hwaci-common.tcl e3913fd13debb4e0382c9e68ae46c61f9bc1afcfd2e9996a9b43557deefefb03
|
||||
F autosetup/jimsh0.c 27ea5f221359ef6c58780fc6c185aadbf8d3bee9a021331a3e5de0eba0dc6de6
|
||||
F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
|
||||
F autosetup/system.tcl 3a39d6e0b3bfba526fd39afe07c1d0d325e5a31925013a1ba7c671e1128e31bb
|
||||
@ -2237,8 +2237,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P ab95ee33dfe56bd3b223f978626e6014414881c30443a2b88c782de724c39ae1
|
||||
R 4f2f3f9048608d15144b74fa8694e059
|
||||
P c895766ed31f55c02f05d357333e9cf45e82ec5af4d8b0491270e4fda7a57d42
|
||||
R 0c3cc11e229eb9f60e9d6e1a23d1a429
|
||||
U stephan
|
||||
Z f0d4b898dbccc821754c02bc4f1ee2af
|
||||
Z cf4b95e7dea0c78a9db6ff8b45d5a758
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
@ -1 +1 @@
|
||||
c895766ed31f55c02f05d357333e9cf45e82ec5af4d8b0491270e4fda7a57d42
|
||||
64f33bb125102b3fec3901f4b56098429509ec0b6ce6e6b88af2393c344ac864
|
||||
|
Loading…
Reference in New Issue
Block a user