diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f3fee85..e070695 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,8 +21,6 @@ jobs: target: docker-all-linux - platform: android target: docker-all-android - - platform: webgl - target: docker-all-webgl steps: - uses: actions/checkout@v3 - name: Cache Docker files @@ -37,7 +35,6 @@ jobs: with: name: gilzoide-sqlite-net-${{ matrix.platform }} path: | - Plugins/lib/${{ matrix.platform }}/**/*.bc Plugins/lib/${{ matrix.platform }}/**/*.dll Plugins/lib/${{ matrix.platform }}/**/*.dylib Plugins/lib/${{ matrix.platform }}/**/*.so diff --git a/Plugins/Makefile b/Plugins/Makefile index 0fe7e91..5fc15b8 100644 --- a/Plugins/Makefile +++ b/Plugins/Makefile @@ -1,7 +1,5 @@ # Android setup ANDROID_NDK_ROOT ?= -# WebGL/Emscripten setup -EMCC ?= emcc # macOS code signing setup CODESIGN ?= codesign MACOS_CODESIGN_SIGNATURE ?= @@ -20,27 +18,17 @@ BUILD_DIRS = \ lib/windows/x86_64 lib/windows/x86 lib/windows/arm64 \ lib/linux/x86_64 lib/linux/x86 \ lib/macos \ - lib/android/arm64 lib/android/arm32 lib/android/x86 lib/android/x86_64 \ - lib/webgl + lib/android/arm64 lib/android/arm32 lib/android/x86 lib/android/x86_64 SQLITE_SRC = sqlite-amalgamation/sqlite3.c -SQLITE_CFLAGS_SRC = tools~/sqlite-cflags.txt SQLITE_NET_SRC = $(wildcard sqlite-net~/src/*.cs) sqlite-net~/LICENSE.txt SQLITE_NET_DEST = ../Runtime/sqlite-net SQLITE_NET_SED_SCRIPT = tools~/fix-library-path.sed -ifneq ($(findstring 4.,$(MAKE_VERSION)),) - SQLITE_CFLAGS = $(file < $(SQLITE_CFLAGS_SRC)) -else - SQLITE_CFLAGS = $(shell cat $(SQLITE_CFLAGS_SRC)) -endif -CFLAGS += $(SQLITE_CFLAGS) - $(BUILD_DIRS): mkdir -p $@ .PRECIOUS: lib/%/sqlite3.o~ -lib/%/sqlite3.o~: .EXTRA_PREREQS = $(SQLITE_CFLAGS_SRC) lib/%/sqlite3.o~: $(SQLITE_SRC) | lib/% $(CC) -c -o $@ $< $(CFLAGS) @@ -64,11 +52,6 @@ ifdef MACOS_CODESIGN_SIGNATURE $(CODESIGN) -s "$(MACOS_CODESIGN_SIGNATURE)" $@ endif -# iOS/tvOS/visionOS compile flags -sqlite-amalgamation/sqlite3.c.meta: .EXTRA_PREREQS = $(SQLITE_CFLAGS_SRC) -sqlite-amalgamation/sqlite3.c.meta: - sed -i '' -E -e 's/(\s*CompileFlags:).*/\1 $(SQLITE_CFLAGS)/' $@ - # Android check-ndk-root: ifndef ANDROID_NDK_ROOT @@ -85,10 +68,6 @@ lib/android/arm32/libgilzoide-sqlite-net.so: CC = $(wildcard $(ANDROID_NDK_ROOT) lib/android/x86_64/libgilzoide-sqlite-net.so: CC = $(wildcard $(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/*/bin/x86_64-linux-android21-clang) lib/android/x86/libgilzoide-sqlite-net.so: CC = $(wildcard $(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/*/bin/i686-linux-android21-clang) -# WebGL -lib/webgl/libgilzoide-sqlite-net.bc: .EXTRA_PREREQS = $(SQLITE_CFLAGS_SRC) -lib/webgl/libgilzoide-sqlite-net.bc: $(SQLITE_SRC) | lib/webgl - $(EMCC) -c -emit-llvm -o $@ $< $(CFLAGS) # Source $(SQLITE_NET_DEST)/%.cs: sqlite-net~/src/%.cs $(SQLITE_NET_SED_SCRIPT) @@ -123,14 +102,11 @@ android-arm32: lib/android/arm32/libgilzoide-sqlite-net.so android-x86_64: lib/android/x86_64/libgilzoide-sqlite-net.so android-x86: lib/android/x86/libgilzoide-sqlite-net.so -webgl: lib/webgl/libgilzoide-sqlite-net.bc - source: $(SQLITE_NET_DEST)/License.txt $(SQLITE_NET_DEST)/AssemblyInfo.cs $(SQLITE_NET_DEST)/SQLite.cs $(SQLITE_NET_DEST)/SQLiteAsync.cs all-android: android-arm64 android-arm32 android-x86_64 android-x86 -all-apple: macos-universal sqlite-amalgamation/sqlite3.c.meta +all-apple: macos-universal all-linux: linux-x86_64 -all-webgl: webgl all-windows: windows-x86_64 windows-x86 all-windows-mingw: windows-mingw-x86_64 windows-mingw-x86 all-windows-llvm-mingw: windows-mingw-x86_64 windows-mingw-x86 windows-mingw-arm64 @@ -142,9 +118,6 @@ docker-all-android: docker-all-linux: docker build -f tools~/Dockerfile.build.linux --platform=linux/amd64 -t gilzoide-sqlite-net-build-linux:latest $(DOCKER_BUILD_ARGS) . docker run --rm -v "$(CURDIR)":/src -w /src --platform=linux/amd64 gilzoide-sqlite-net-build-linux:latest make all-linux -docker-all-webgl: - docker build -f tools~/Dockerfile.build.webgl -t gilzoide-sqlite-net-build-webgl:latest $(DOCKER_BUILD_ARGS) . - docker run --rm -v "$(CURDIR)":/src -w /src gilzoide-sqlite-net-build-webgl:latest make all-webgl docker-all-windows: docker build -f tools~/Dockerfile.build.windows -t gilzoide-sqlite-net-build-windows:latest $(DOCKER_BUILD_ARGS) . docker run --rm -v "$(CURDIR)":/src -w /src gilzoide-sqlite-net-build-windows:latest make all-windows-mingw @@ -159,5 +132,4 @@ download-latest-build: rsync -r $(TMPDIR)/gilzoide-sqlite-net-linux/* lib/linux/ rsync -r $(TMPDIR)/gilzoide-sqlite-net-android/* lib/android/ rsync -r $(TMPDIR)/gilzoide-sqlite-net-macos/* lib/macos/ - rsync -r $(TMPDIR)/gilzoide-sqlite-net-webgl/* lib/webgl/ $(RM) -r $(TMPDIR) diff --git a/Plugins/lib/webgl.meta b/Plugins/lib/webgl.meta deleted file mode 100644 index cd95ada..0000000 --- a/Plugins/lib/webgl.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ff46416828dce4dafa08281e68f7d620 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Plugins/lib/webgl/libgilzoide-sqlite-net.bc b/Plugins/lib/webgl/libgilzoide-sqlite-net.bc deleted file mode 100644 index 4dfbfdf..0000000 Binary files a/Plugins/lib/webgl/libgilzoide-sqlite-net.bc and /dev/null differ diff --git a/Plugins/sqlite-amalgamation/sqlite3.c b/Plugins/sqlite-amalgamation/sqlite3.c index 80433f6..7bb2158 100644 --- a/Plugins/sqlite-amalgamation/sqlite3.c +++ b/Plugins/sqlite-amalgamation/sqlite3.c @@ -1,3 +1,5 @@ +#include "sqlite3_defines.h" + /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite ** version 3.48.0. By combining all the individual C code files into this diff --git a/Plugins/sqlite-amalgamation/sqlite3.c.meta b/Plugins/sqlite-amalgamation/sqlite3.c.meta index 8afcbd2..d0c0c92 100644 --- a/Plugins/sqlite-amalgamation/sqlite3.c.meta +++ b/Plugins/sqlite-amalgamation/sqlite3.c.meta @@ -21,7 +21,7 @@ PluginImporter: Exclude Linux64: 1 Exclude OSXUniversal: 1 Exclude VisionOS: 0 - Exclude WebGL: 1 + Exclude WebGL: 0 Exclude Win: 1 Exclude Win64: 1 Exclude iOS: 0 @@ -77,8 +77,13 @@ PluginImporter: settings: AddToEmbeddedBinaries: false CPU: ARM64 - CompileFlags: -w -DSQLITE_USE_URI -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MATH_FUNCTIONS -DHAVE_ISNAN -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_HIDDEN_COLUMNS + CompileFlags: FrameworkDependencies: + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} - first: iPhone: iOS second: @@ -86,15 +91,16 @@ PluginImporter: settings: AddToEmbeddedBinaries: false CPU: AnyCPU - CompileFlags: -w -DSQLITE_USE_URI -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MATH_FUNCTIONS -DHAVE_ISNAN -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_HIDDEN_COLUMNS + CompileFlags: FrameworkDependencies: - first: tvOS: tvOS second: enabled: 1 settings: + AddToEmbeddedBinaries: false CPU: AnyCPU - CompileFlags: -w -DSQLITE_USE_URI -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MATH_FUNCTIONS -DHAVE_ISNAN -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_HIDDEN_COLUMNS + CompileFlags: FrameworkDependencies: userData: assetBundleName: diff --git a/Plugins/sqlite-amalgamation/sqlite3.h b/Plugins/sqlite-amalgamation/sqlite3.h index 4ed8428..27053c6 100644 --- a/Plugins/sqlite-amalgamation/sqlite3.h +++ b/Plugins/sqlite-amalgamation/sqlite3.h @@ -1,3 +1,5 @@ +#include "sqlite3_defines.h" + /* ** 2001-09-15 ** diff --git a/Plugins/sqlite-amalgamation/sqlite3.h.meta b/Plugins/sqlite-amalgamation/sqlite3.h.meta index 83ed923..6430ea3 100644 --- a/Plugins/sqlite-amalgamation/sqlite3.h.meta +++ b/Plugins/sqlite-amalgamation/sqlite3.h.meta @@ -21,7 +21,7 @@ PluginImporter: Exclude Linux64: 1 Exclude OSXUniversal: 1 Exclude VisionOS: 0 - Exclude WebGL: 1 + Exclude WebGL: 0 Exclude Win: 1 Exclude Win64: 1 Exclude iOS: 0 @@ -66,6 +66,11 @@ PluginImporter: second: enabled: 1 settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} - first: iPhone: iOS second: diff --git a/Plugins/sqlite-amalgamation/sqlite3_defines.h b/Plugins/sqlite-amalgamation/sqlite3_defines.h new file mode 100644 index 0000000..a8c5696 --- /dev/null +++ b/Plugins/sqlite-amalgamation/sqlite3_defines.h @@ -0,0 +1,19 @@ +// Compile-time definitions used to build SQLite +// This is a separate file so that IL2CPP can use the same flags on all platforms +#define SQLITE_USE_URI 1 +#define SQLITE_DQS 0 +#define SQLITE_DEFAULT_MEMSTATUS 0 +#define SQLITE_DEFAULT_WAL_SYNCHRONOUS 1 +#define SQLITE_LIKE_DOESNT_MATCH_BLOBS 1 +#define SQLITE_MAX_EXPR_DEPTH 0 +#define SQLITE_OMIT_DECLTYPE 1 +#define SQLITE_OMIT_DEPRECATED 1 +#define SQLITE_OMIT_PROGRESS_CALLBACK 1 +#define SQLITE_OMIT_SHARED_CACHE 1 +#define SQLITE_USE_ALLOCA 1 +#define SQLITE_ENABLE_RTREE 1 +#define SQLITE_ENABLE_MATH_FUNCTIONS 1 +#define HAVE_ISNAN 1 +#define SQLITE_ENABLE_GEOPOLY 1 +#define SQLITE_ENABLE_FTS5 1 +#define SQLITE_ENABLE_HIDDEN_COLUMNS 1 diff --git a/Plugins/lib/webgl/libgilzoide-sqlite-net.bc.meta b/Plugins/sqlite-amalgamation/sqlite3_defines.h.meta similarity index 86% rename from Plugins/lib/webgl/libgilzoide-sqlite-net.bc.meta rename to Plugins/sqlite-amalgamation/sqlite3_defines.h.meta index e2cf1bf..0e5906d 100644 --- a/Plugins/lib/webgl/libgilzoide-sqlite-net.bc.meta +++ b/Plugins/sqlite-amalgamation/sqlite3_defines.h.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f0f536a8a94394879805a4972d2d79db +guid: 437dfc5ab03b74410aea0f06ebc8467b PluginImporter: externalObjects: {} serializedVersion: 2 @@ -20,12 +20,12 @@ PluginImporter: Exclude Editor: 1 Exclude Linux64: 1 Exclude OSXUniversal: 1 - Exclude VisionOS: 1 + Exclude VisionOS: 0 Exclude WebGL: 0 Exclude Win: 1 Exclude Win64: 1 - Exclude iOS: 1 - Exclude tvOS: 1 + Exclude iOS: 0 + Exclude tvOS: 0 - first: Android: Android second: @@ -51,32 +51,32 @@ PluginImporter: second: enabled: 0 settings: - CPU: AnyCPU + CPU: None - first: Standalone: OSXUniversal second: enabled: 0 settings: - CPU: AnyCPU + CPU: None - first: Standalone: Win second: enabled: 0 settings: - CPU: AnyCPU + CPU: None - first: Standalone: Win64 second: enabled: 0 settings: - CPU: AnyCPU + CPU: None - first: VisionOS: VisionOS second: - enabled: 0 + enabled: 1 settings: AddToEmbeddedBinaries: false - CPU: ARM64 + CPU: AnyCPU CompileFlags: FrameworkDependencies: - first: @@ -87,7 +87,7 @@ PluginImporter: - first: iPhone: iOS second: - enabled: 0 + enabled: 1 settings: AddToEmbeddedBinaries: false CPU: AnyCPU @@ -96,8 +96,9 @@ PluginImporter: - first: tvOS: tvOS second: - enabled: 0 + enabled: 1 settings: + AddToEmbeddedBinaries: false CPU: AnyCPU CompileFlags: FrameworkDependencies: diff --git a/Plugins/sqlite-amalgamation/sqlite3ext.h b/Plugins/sqlite-amalgamation/sqlite3ext.h index ae0949b..32ae66b 100644 --- a/Plugins/sqlite-amalgamation/sqlite3ext.h +++ b/Plugins/sqlite-amalgamation/sqlite3ext.h @@ -1,3 +1,5 @@ +#include "sqlite3_defines.h" + /* ** 2006 June 7 ** diff --git a/Plugins/sqlite-amalgamation/sqlite3ext.h.meta b/Plugins/sqlite-amalgamation/sqlite3ext.h.meta index 0f59d4e..7d7b0d1 100644 --- a/Plugins/sqlite-amalgamation/sqlite3ext.h.meta +++ b/Plugins/sqlite-amalgamation/sqlite3ext.h.meta @@ -21,7 +21,7 @@ PluginImporter: Exclude Linux64: 1 Exclude OSXUniversal: 1 Exclude VisionOS: 0 - Exclude WebGL: 1 + Exclude WebGL: 0 Exclude Win: 1 Exclude Win64: 1 Exclude iOS: 0 @@ -66,6 +66,11 @@ PluginImporter: second: enabled: 1 settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} - first: iPhone: iOS second: diff --git a/Plugins/tools~/Dockerfile.build.webgl b/Plugins/tools~/Dockerfile.build.webgl deleted file mode 100644 index 3f92e5d..0000000 --- a/Plugins/tools~/Dockerfile.build.webgl +++ /dev/null @@ -1,3 +0,0 @@ -# syntax=docker/dockerfile:1 -# Using Emscripten 1.X for Unity <= 2021.2 support. It still works in 2021.3+. -FROM emscripten/emsdk:1.40.1 diff --git a/Plugins/tools~/sqlite-cflags.txt b/Plugins/tools~/sqlite-cflags.txt deleted file mode 100644 index 6caea8e..0000000 --- a/Plugins/tools~/sqlite-cflags.txt +++ /dev/null @@ -1 +0,0 @@ --w -DSQLITE_USE_URI -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MATH_FUNCTIONS -DHAVE_ISNAN -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_HIDDEN_COLUMNS \ No newline at end of file diff --git a/README.md b/README.md index 64ffc2b..600d476 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,7 @@ This package provides the excelent [SQLite-net](https://github.com/praeclarum/sq + `SQLiteConnection.Deserialize` extension method for deserializing memory (`byte[]`, `NativeArray` or `ReadOnlySpan`) into an open database (reference: [SQLite Deserialization](https://www.sqlite.org/c3ref/deserialize.html)). - [SQLite 3.48.0](https://sqlite.org/releaselog/3_48_0.html) + Enabled modules: [R\*Tree](https://sqlite.org/rtree.html), [Geopoly](https://sqlite.org/geopoly.html), [FTS5](https://sqlite.org/fts5.html), [Built-In Math Functions](https://www.sqlite.org/lang_mathfunc.html) - + Prebuilt for Windows, Linux, macOS, Android and WebGL - + Built from source in iOS, tvOS and visionOS projects + + Supports Windows, Linux, macOS, WebGL, Android, iOS, tvOS and visionOS platforms + Supports persisting data in WebGL builds by using a [custom VFS backed by Indexed DB](https://github.com/gilzoide/idbvfs).