1######################################################################## 2# This is a main makefile for the "autoconf" bundle of SQLite. This is 3# a trimmed-down version of the canonical makefile, devoid of most 4# documentation. For the full docs, see /main.mk in the canonical 5# source tree. 6# 7# Maintenance reminders: 8# 9# - To keep this working with an out-of-tree build, be sure to prefix 10# input file names with $(TOP)/ where appropriate (which is most 11# places). 12# 13# - The original/canonical recipes can be found in /main.mk in the 14# canonical source tree. 15all: 16 17TOP = @abs_top_srcdir@ 18 19PACKAGE_VERSION = @PACKAGE_VERSION@ 20 21# 22# Filename extensions for binaries and libraries 23# 24B.exe = @BUILD_EXEEXT@ 25T.exe = @TARGET_EXEEXT@ 26B.dll = @BUILD_DLLEXT@ 27T.dll = @TARGET_DLLEXT@ 28B.lib = @BUILD_LIBEXT@ 29T.lib = @TARGET_LIBEXT@ 30 31# 32# Autotools-compatibility dirs 33# 34prefix = @prefix@ 35datadir = @datadir@ 36mandir = @mandir@ 37includedir = @includedir@ 38exec_prefix = @exec_prefix@ 39bindir = @bindir@ 40libdir = @libdir@ 41 42# 43# Required binaries 44# 45INSTALL = @BIN_INSTALL@ 46AR = @AR@ 47AR.flags = cr 48CC = @CC@ 49 50 51ENABLE_LIB_SHARED = @ENABLE_LIB_SHARED@ 52ENABLE_LIB_STATIC = @ENABLE_LIB_STATIC@ 53HAVE_WASI_SDK = @HAVE_WASI_SDK@ 54 55CFLAGS = @CFLAGS@ @CPPFLAGS@ 56# 57# $(LDFLAGS.configure) represents any LDFLAGS=... the client passes to 58# configure. See main.mk. 59# 60LDFLAGS.configure = @LDFLAGS@ 61 62CFLAGS.core = @SH_CFLAGS@ 63LDFLAGS.shlib = @SH_LDFLAGS@ 64LDFLAGS.zlib = @LDFLAGS_ZLIB@ 65LDFLAGS.math = @LDFLAGS_MATH@ 66LDFLAGS.rpath = @LDFLAGS_RPATH@ 67LDFLAGS.pthread = @LDFLAGS_PTHREAD@ 68LDFLAGS.dlopen = @LDFLAGS_DLOPEN@ 69LDFLAGS.readline = @LDFLAGS_READLINE@ 70CFLAGS.readline = @CFLAGS_READLINE@ 71LDFLAGS.rt = @LDFLAGS_RT@ 72LDFLAGS.icu = @LDFLAGS_ICU@ 73CFLAGS.icu = @CFLAGS_ICU@ 74 75# INSTALL reminder: we specifically do not strip binaries, 76# as discussed in https://sqlite.org/forum/forumpost/9a67df63eda9925c. 77INSTALL.noexec = $(INSTALL) -m 0644 78 79install-dir.bin = $(DESTDIR)$(bindir) 80install-dir.lib = $(DESTDIR)$(libdir) 81install-dir.include = $(DESTDIR)$(includedir) 82install-dir.pkgconfig = $(DESTDIR)$(libdir)/pkgconfig 83install-dir.man1 = $(DESTDIR)$(mandir)/man1 84install-dir.all = $(install-dir.bin) $(install-dir.include) \ 85 $(install-dir.lib) $(install-dir.man1) \ 86 $(install-dir.pkgconfig) 87$(install-dir.all): 88 @if [ ! -d "$@" ]; then set -x; $(INSTALL) -d "$@"; fi 89# ^^^^ on some platforms, install -d fails if the target already exists. 90 91 92# 93# Vars with the AS_ prefix are specifically related to AutoSetup. 94# 95# AS_AUTO_DEF is the main configure script. 96# 97AS_AUTO_DEF = $(TOP)/auto.def 98 99# 100# Shell commands to re-run $(TOP)/configure with the same args it was 101# invoked with to produce this makefile. 102# 103AS_AUTORECONFIG = @SQLITE_AUTORECONFIG@ 104Makefile: $(TOP)/Makefile.in $(AS_AUTO_DEF) 105 $(AS_AUTORECONFIG) 106 @touch $@ 107 108sqlite3.pc: $(TOP)/sqlite3.pc.in $(AS_AUTO_DEF) 109 $(AS_AUTORECONFIG) 110 @touch $@ 111 112sqlite_cfg.h: $(AS_AUTO_DEF) 113 $(AS_AUTORECONFIG) 114 @touch $@ 115 116# 117# CFLAGS for sqlite3$(T.exe) 118# 119SHELL_OPT ?= @OPT_SHELL@ 120 121# 122# Library-level feature flags 123# 124OPT_FEATURE_FLAGS = @OPT_FEATURE_FLAGS@ 125 126LDFLAGS.libsqlite3.soname = @LDFLAGS_LIBSQLITE3_SONAME@ 127# soname: see https://sqlite.org/src/forumpost/5a3b44f510df8ded 128LDFLAGS.libsqlite3.os-specific = \ 129 @LDFLAGS_MAC_CVERSION@ @LDFLAGS_MAC_INSTALL_NAME@ @LDFLAGS_OUT_IMPLIB@ 130 131LDFLAGS.libsqlite3 = \ 132 $(LDFLAGS.rpath) $(LDFLAGS.pthread) \ 133 $(LDFLAGS.math) $(LDFLAGS.dlopen) \ 134 $(LDFLAGS.zlib) $(LDFLAGS.icu) \ 135 $(LDFLAGS.rt) $(LDFLAGS.configure) 136CFLAGS.libsqlite3 = -I. $(CFLAGS.core) $(CFLAGS.icu) $(OPT_FEATURE_FLAGS) 137 138sqlite3.o: $(TOP)/sqlite3.h $(TOP)/sqlite3.c 139 $(CC) -c $(TOP)/sqlite3.c -o $@ $(CFLAGS) $(CFLAGS.libsqlite3) 140 141libsqlite3.LIB = libsqlite3$(T.lib) 142libsqlite3.DLL.basename = @SQLITE_DLL_BASENAME@ 143libsqlite3.out.implib = @SQLITE_OUT_IMPLIB@ 144libsqlite3.DLL = $(libsqlite3.DLL.basename)$(T.dll) 145libsqlite3.DLL.install-rules = @SQLITE_DLL_INSTALL_RULES@ 146 147$(libsqlite3.DLL): sqlite3.o 148 $(CC) -o $@ sqlite3.o $(LDFLAGS.shlib) \ 149 $(LDFLAGS) $(LDFLAGS.libsqlite3) \ 150 $(LDFLAGS.libsqlite3.os-specific) $(LDFLAGS.libsqlite3.soname) 151$(libsqlite3.DLL)-1: $(libsqlite3.DLL) 152$(libsqlite3.DLL)-0: 153all: $(libsqlite3.DLL)-$(ENABLE_LIB_SHARED) 154 155$(libsqlite3.LIB): sqlite3.o 156 $(AR) $(AR.flags) $@ sqlite3.o 157$(libsqlite3.LIB)-1: $(libsqlite3.LIB) 158$(libsqlite3.LIB)-0: 159all: $(libsqlite3.LIB)-$(ENABLE_LIB_STATIC) 160 161# 162# Maintenance reminder: the install-dll-... rules must be kept in sync 163# with the main copies rom /main.mk. 164# 165install-dll-out-implib: $(install-dir.lib) $(libsqlite3.DLL) 166 if [ x != "x$(libsqlite3.out.implib)" ] && [ -f "$(libsqlite3.out.implib)" ]; then \ 167 $(INSTALL) $(libsqlite3.out.implib) "$(install-dir.lib)"; \ 168 fi 169 170install-dll-unix-generic: install-dll-out-implib 171 $(INSTALL) $(libsqlite3.DLL) "$(install-dir.lib)" 172 @echo "Setting up $(libsqlite3.DLL) version symlinks..."; \ 173 cd "$(install-dir.lib)" || exit $$?; \ 174 rm -f $(libsqlite3.DLL).0 $(libsqlite3.DLL).$(PACKAGE_VERSION) || exit $$?; \ 175 mv $(libsqlite3.DLL) $(libsqlite3.DLL).$(PACKAGE_VERSION) || exit $$?; \ 176 ln -s $(libsqlite3.DLL).$(PACKAGE_VERSION) $(libsqlite3.DLL) || exit $$?; \ 177 ln -s $(libsqlite3.DLL).$(PACKAGE_VERSION) $(libsqlite3.DLL).0 || exit $$?; \ 178 ls -la $(libsqlite3.DLL) $(libsqlite3.DLL).[a03]*; \ 179 if [ -e $(libsqlite3.DLL).0.8.6 ]; then \ 180 echo "ACHTUNG: legacy libtool-compatible install found. Re-linking it..."; \ 181 rm -f libsqlite3.la $(libsqlite3.DLL).0.8.6 || exit $$?; \ 182 ln -s $(libsqlite3.DLL).$(PACKAGE_VERSION) $(libsqlite3.DLL).0.8.6 || exit $$?; \ 183 ls -la $(libsqlite3.DLL).0.8.6; \ 184 elif [ x1 = "x$(INSTALL_SO_086_LINK)" ]; then \ 185 echo "ACHTUNG: installing legacy libtool-style links because INSTALL_SO_086_LINK=1"; \ 186 rm -f libsqlite3.la $(libsqlite3.DLL).0.8.6 || exit $$?; \ 187 ln -s $(libsqlite3.DLL).$(PACKAGE_VERSION) $(libsqlite3.DLL).0.8.6 || exit $$?; \ 188 ls -la $(libsqlite3.DLL).0.8.6; \ 189 fi 190 191install-dll-msys: install-dll-out-implib $(install-dir.bin) 192 $(INSTALL) $(libsqlite3.DLL) "$(install-dir.bin)" 193# ----------------------------------------------^^^ yes, bin 194# Each of {msys,mingw,cygwin} uses a different name for the DLL, but 195# that is already accounted for via $(libsqlite3.DLL). 196install-dll-mingw: install-dll-msys 197install-dll-cygwin: install-dll-msys 198 199install-dll-darwin: $(install-dir.lib) $(libsqlite3.DLL) 200 $(INSTALL) $(libsqlite3.DLL) "$(install-dir.lib)" 201 @echo "Setting up $(libsqlite3.DLL) version symlinks..."; \ 202 cd "$(install-dir.lib)" || exit $$?; \ 203 rm -f libsqlite3.0$(T.dll) libsqlite3.$(PACKAGE_VERSION)$(T.dll) || exit $$?; \ 204 dllname=libsqlite3.$(PACKAGE_VERSION)$(T.dll); \ 205 mv $(libsqlite3.DLL) $$dllname || exit $$?; \ 206 ln -s $$dllname $(libsqlite3.DLL) || exit $$?; \ 207 ln -s $$dllname libsqlite3.0$(T.dll) || exit $$?; \ 208 ls -la $$dllname $(libsqlite3.DLL) libsqlite3.0$(T.dll) 209 210install-dll-1: install-dll-$(libsqlite3.DLL.install-rules) 211install-dll-0 install-dll-: 212install-dll: install-dll-$(ENABLE_LIB_SHARED) 213install: install-dll 214 215install-lib-1: $(install-dir.lib) $(libsqlite3.LIB) 216 $(INSTALL.noexec) $(libsqlite3.LIB) "$(install-dir.lib)" 217install-lib-0 install-lib-: 218install-lib: install-lib-$(ENABLE_LIB_STATIC) 219install: install-lib 220 221# 222# Flags to link the shell app either directly against sqlite3.c 223# (ENABLE_STATIC_SHELL==1) or libsqlite3.so (ENABLE_STATIC_SHELL==0). 224# 225ENABLE_STATIC_SHELL = @ENABLE_STATIC_SHELL@ 226sqlite3-shell-link-flags.1 = $(TOP)/sqlite3.c $(LDFLAGS.libsqlite3) 227sqlite3-shell-link-flags.0 = -L. -lsqlite3 $(LDFLAGS.zlib) $(LDFLAGS.math) 228sqlite3-shell-deps.1 = $(TOP)/sqlite3.c 229sqlite3-shell-deps.0 = $(libsqlite3.DLL) 230# 231# STATIC_CLI_SHELL = 1 to statically link sqlite3$(T.exe), else 232# 0. Requires static versions of all requisite libraries. Primarily 233# intended for use with static-friendly environments like Alpine 234# Linux. 235# 236STATIC_CLI_SHELL = @STATIC_CLI_SHELL@ 237# 238# sqlite3-shell-static.flags.N = N is $(STATIC_CLI_SHELL) 239# 240sqlite3-shell-static.flags.1 = -static 241sqlite3-shell-static.flags.0 = 242sqlite3$(T.exe): $(TOP)/shell.c $(sqlite3-shell-deps.$(ENABLE_STATIC_SHELL)) 243 $(CC) -o $@ \ 244 $(TOP)/shell.c $(sqlite3-shell-link-flags.$(ENABLE_STATIC_SHELL)) \ 245 $(sqlite3-shell-static.flags.$(STATIC_CLI_SHELL)) \ 246 -I. $(OPT_FEATURE_FLAGS) $(SHELL_OPT) \ 247 $(CFLAGS) $(CFLAGS.readline) $(CFLAGS.icu) \ 248 $(LDFLAGS) $(LDFLAGS.readline) 249 250sqlite3$(T.exe)-1: 251sqlite3$(T.exe)-0: sqlite3$(T.exe) 252all: sqlite3$(T.exe)-$(HAVE_WASI_SDK) 253 254install-shell-0: sqlite3$(T.exe) $(install-dir.bin) 255 $(INSTALL) sqlite3$(T.exe) "$(install-dir.bin)" 256install-shell-1: 257install: install-shell-$(HAVE_WASI_SDK) 258 259install-headers: $(TOP)/sqlite3.h $(install-dir.include) 260 $(INSTALL.noexec) $(TOP)/sqlite3.h $(TOP)/sqlite3ext.h "$(install-dir.include)" 261install: install-headers 262 263install-pc: sqlite3.pc $(install-dir.pkgconfig) 264 $(INSTALL.noexec) sqlite3.pc "$(install-dir.pkgconfig)" 265install: install-pc 266 267install-man1: $(TOP)/sqlite3.1 $(install-dir.man1) 268 $(INSTALL.noexec) $(TOP)/sqlite3.1 "$(install-dir.man1)" 269install: install-man1 270 271clean: 272 rm -f *.o sqlite3$(T.exe) 273 rm -f $(libsqlite3.LIB) $(libsqlite3.DLL) libsqlite3$(T.dll).a 274 275distclean: clean 276 rm -f jimsh0$(T.exe) config.* sqlite3.pc sqlite_cfg.h Makefile 277 278DIST_FILES := \ 279 README.txt VERSION \ 280 auto.def autosetup configure tea \ 281 sqlite3.h sqlite3.c shell.c sqlite3ext.h \ 282 Makefile.in Makefile.msc Makefile.fallback \ 283 sqlite3.rc sqlite3rc.h Replace.cs \ 284 sqlite3.pc.in sqlite3.1 285 286# 287# Maintenance note: dist_name must be sqlite-$(PACKAGE_VERSION) so 288# that tool/mkautoconfamal.sh knows how to find it. 289# 290dist_name = sqlite-$(PACKAGE_VERSION) 291dist_tarball = $(dist_name).tar.gz 292dist: 293 rm -fr $(dist_name) 294 mkdir -p $(dist_name) 295 cp -rp $(DIST_FILES) $(dist_name)/. 296 tar czf $(dist_tarball) $(dist_name) 297 rm -fr $(dist_name) 298 ls -l $(dist_tarball) 299