forked from gyf304/sqlite3-fts5-html
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile.vc
More file actions
85 lines (65 loc) · 3.49 KB
/
Makefile.vc
File metadata and controls
85 lines (65 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
EXT = .dll
SQLITE_VERSION = version-3.49.1
SQLITE_TARBALL_URL = https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=$(SQLITE_VERSION)
SQLITE_SRC = deps\$(SQLITE_VERSION)\src
SQLITE_AMALGAMATION_URL = https://sqlite.org/2025/sqlite-amalgamation-3490100.zip
SQLITE_AMALGAMATION_PATH = deps\sqlite-amalgamation-3490100
TCL_DOWNLOAD_URL = https://www.irontcl.com/downloads/irontcl-amd64-8.6.7.zip
TCLSH_PATH = deps\IronTcl\bin\tclsh86t.exe
LEXBOR_VERSION = v2.4.0
LEXBOR_PATH = deps\lexbor
!IF "$(ARCH)" == ""
ARCH = x64
!ENDIF
LEXBOR_LIB = $(LEXBOR_PATH)\build\Release\lexbor_static.lib
CFLAGS = -I$(SQLITE_AMALGAMATION_PATH) -Ideps\$(SQLITE_VERSION)\src -Ideps\$(SQLITE_VERSION)\ext\fts5 -I$(LEXBOR_PATH)\source -Os -Wall -DLEXBOR_STATIC /MT
prefix=dist
$(prefix):
if not exist $(prefix) mkdir $(prefix)
TARGET_LOADABLE=$(prefix)\fts5-html$(EXT)
TARGET_FTS5=$(prefix)\fts5$(EXT)
TARGET_LEMON=$(prefix)\lemon.exe
TARGET_LIBSQLITE=$(prefix)\sqlite3$(EXT)
all: test loadable
loadable: $(TARGET_LOADABLE)
clean:
if exist deps rmdir /S /Q deps
if exist $(prefix) rmdir /S /Q $(prefix)
if exist *.obj del *.obj
$(SQLITE_SRC):
if not exist deps\$(SQLITE_VERSION) git clone --depth=1 --branch=$(SQLITE_VERSION) https://github.com/sqlite/sqlite.git deps\$(SQLITE_VERSION)
REM curl -LsS $(SQLITE_TARBALL_URL) | tar -xzf - -C deps\$(SQLITE_VERSION)\ --strip-components=1
$(SQLITE_AMALGAMATION_PATH):
@echo Downloading SQLite amalgamation...
powershell -Command "iwr -Uri $(SQLITE_AMALGAMATION_URL) -OutFile sqlite.zip"
@echo Extracting SQLite amalgamation...
powershell -Command "Expand-Archive -Path sqlite.zip -DestinationPath deps/"
del sqlite.zip
$(TCLSH_PATH):
@echo Downloading Tcl/Tk...
powershell -Command "iwr -Uri $(TCL_DOWNLOAD_URL) -OutFile tcl.zip"
@echo Extracting Tcl/Tk...
powershell -Command "Expand-Archive -Path tcl.zip -DestinationPath deps/"
del tcl.zip
$(LEXBOR_LIB):
@echo Setting up Lexbor...
if not exist deps mkdir deps
git clone --depth 1 --branch $(LEXBOR_VERSION) https://github.com/lexbor/lexbor.git $(LEXBOR_PATH)
cd $(LEXBOR_PATH) && mkdir build
cd $(LEXBOR_PATH)\build && cmake .. -DLEXBOR_BUILD_STATIC=ON -DLEXBOR_BUILD_SHARED=OFF -DLEXBOR_BUILD_EXAMPLES=OFF -DLEXBOR_BUILD_TESTS=OFF -DLEXBOR_OPTIMIZATION_LEVEL=-O2 -DCMAKE_GENERATOR_PLATFORM=$(ARCH) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
cd $(LEXBOR_PATH)\build && cmake --build . --target lexbor_static --config Release
@echo Finding lexbor .lib...
dir $(LEXBOR_PATH)\build\Release
$(TARGET_LOADABLE): $(SQLITE_AMALGAMATION_PATH) $(SQLITE_SRC) $(LEXBOR_LIB) $(prefix)
cl $(CFLAGS) /LD /Fe$@ fts5-html.c $(LEXBOR_LIB) /link /LIBPATH:$(LEXBOR_PATH)\build
$(TARGET_LEMON): $(SQLITE_SRC) $(prefix)
cl /MT deps\$(SQLITE_VERSION)\tool\lemon.c /Fe$@
copy deps\$(SQLITE_VERSION)\tool\lempar.c $(prefix)\lempar.c
$(TARGET_FTS5): $(TARGET_LEMON) $(TCLSH_PATH) $(SQLITE_SRC) $(SQLITE_AMALGAMATION_PATH) $(prefix)
$(TARGET_LEMON) deps\$(SQLITE_VERSION)\ext\fts5\fts5parse.y
powershell -Command "$$CWD = pwd; cd deps\$(SQLITE_VERSION)\ext\fts5; & $$CWD\$(TCLSH_PATH) $$CWD\deps\$(SQLITE_VERSION)\ext\fts5\tool\mkfts5c.tcl"
cl /DSQLITE_TEST -I$(SQLITE_AMALGAMATION_PATH) /MT /LD /Fe$(TARGET_FTS5) deps\$(SQLITE_VERSION)\ext\fts5\fts5.c
$(TARGET_LIBSQLITE): $(SQLITE_AMALGAMATION_PATH) $(prefix)
cl $(CFLAGS) /LD /Fe$@ $(SQLITE_AMALGAMATION_PATH)\sqlite3.c
test: $(TARGET_FTS5) $(TARGET_LOADABLE) $(TARGET_LIBSQLITE)
set SQLITE_LIB_PATH=$(TARGET_LIBSQLITE) && bun test