0
0
mirror of https://github.com/tursodatabase/libsql.git synced 2024-12-15 21:29:01 +00:00
2024-01-09 18:12:03 +01:00

551 lines
14 KiB
Lua

-- Build SQLite3 Multiple Ciphers
-- static or shared library
-- Encryption support for Multiple Ciphers
-- Debug or Release
-- Win32 or Win64
dofile "wx_config.lua"
-- Target directory for the build files generated by premake5
newoption {
trigger = "builddir",
value = "build",
description = "Directory for the generated build files"
}
BUILDDIR = _OPTIONS["builddir"] or "build"
-- SQLite3MultipleCiphers workspace
workspace "sqlite3mc"
if (is_msvc) then
local wks = workspace()
wks.filename = "sqlite3mc_" .. vc_with_ver
end
wxWorkspaceCommon()
-- SQLite3 static library
project "sqlite3mc_lib"
language "C++"
kind "StaticLib"
if (is_msvc) then
local prj = project()
prj.filename = "sqlite3mc_" .. vc_with_ver .. "_lib"
if (msvc_useProps) then
wxUseProps(true)
end
else
toolset("gcc")
buildoptions { "-msse4.2", "-maes" }
-- buildoptions { "-march=native" }
end
makesettings { "include config.gcc" }
files { "src/sqlite3mc.c", "src/*.h" }
vpaths {
["Header Files"] = { "**.h" },
["Source Files"] = { "**/sqlite3mc.c", "**.def", "**.rc" }
}
characterset ("Unicode")
staticruntime "On"
includedirs { "src" }
location( BUILDDIR )
targetname "sqlite3mc"
defines {
"_LIB",
"CODEC_TYPE=$(CODEC_TYPE)",
"SQLITE_ENABLE_DEBUG=$(SQLITE_ENABLE_DEBUG)",
"SQLITE_THREADSAFE=1",
"SQLITE_DQS=0",
"SQLITE_MAX_ATTACHED=10",
"SQLITE_ENABLE_EXPLAIN_COMMENTS=1",
"SQLITE_SOUNDEX=1",
"SQLITE_ENABLE_COLUMN_METADATA=1",
"SQLITE_SECURE_DELETE=1",
"SQLITE_ENABLE_DESERIALIZE=1",
"SQLITE_ENABLE_FTS3=1",
"SQLITE_ENABLE_FTS3_PARENTHESIS=1",
"SQLITE_ENABLE_FTS4=1",
"SQLITE_ENABLE_FTS5=1",
"SQLITE_ENABLE_RTREE=1",
"SQLITE_ENABLE_GEOPOLY=1",
"SQLITE_ENABLE_PREUPDATE_HOOK=1",
"SQLITE_ENABLE_SESSION=1",
"SQLITE_CORE=1",
"SQLITE_ENABLE_EXTFUNC=1",
"SQLITE_ENABLE_MATH_FUNCTIONS=1",
"SQLITE_ENABLE_CSV=1",
"SQLITE_ENABLE_VSV=1",
-- "SQLITE_ENABLE_SHA3=1",
"SQLITE_ENABLE_CARRAY=1",
-- "SQLITE_ENABLE_FILEIO=1",
-- "SQLITE_ENABLE_SERIES=1",
"SQLITE_ENABLE_UUID=1",
-- "SQLITE_ENABLE_REGEXP=1",
-- "SQLITE3MC_USE_MINIZ=$(SQLITE3MC_USE_MINIZ)",
-- "SQLITE_ENABLE_COMPRESS=1"
-- "SQLITE_ENABLE_SQLAR=1"
-- "SQLITE_ENABLE_ZIPFILE=1"
"SQLITE3MC_SECURE_MEMORY=$(SQLITE3MC_SECURE_MEMORY)",
-- "SQLITE3MC_USE_RANDOM_FILL_MEMORY=$(SQLITE3MC_USE_RANDOM_FILL_MEMORY)",
"SQLITE_TEMP_STORE=2",
"SQLITE_USE_URI=1",
"SQLITE_USER_AUTHENTICATION=1",
-- Compatibility with official SQLite3 shell
"SQLITE_ENABLE_DBPAGE_VTAB=1",
"SQLITE_ENABLE_DBSTAT_VTAB=1",
"SQLITE_ENABLE_STMTVTAB=1",
"SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION=1"
}
-- Intermediate directory
if (is_msvc) then
objdir (BUILDDIR .. "/obj/" .. vc_with_ver)
else
objdir (BUILDDIR .. "/obj/gcc")
end
-- Target directory
filter { "configurations:Debug*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/debug")
else
targetdir "bin/gcc/lib/debug"
end
filter { "configurations:Release*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/release")
else
targetdir "bin/gcc/lib/release"
end
-- SQLite3 shared library
project "sqlite3mc_dll"
language "C++"
kind "SharedLib"
if (is_msvc) then
local prj = project()
prj.filename = "sqlite3mc_" .. vc_with_ver .. "_dll"
if (msvc_useProps) then
wxUseProps(true)
end
else
toolset("gcc")
buildoptions { "-msse4.2", "-maes" }
-- buildoptions { "-march=native" }
end
makesettings { "include config.gcc" }
files { "src/sqlite3mc.c", "src/*.h", "src/sqlite3mc.rc" }
filter {}
vpaths {
["Header Files"] = { "**.h" },
["Source Files"] = { "**/sqlite3mc.c", "**.def", "**.rc" }
}
characterset ("Unicode")
staticruntime "On"
includedirs { "src" }
location( BUILDDIR )
targetname "sqlite3mc"
defines {
"_USRDLL",
"SQLITE_API=__declspec(dllexport)",
"CODEC_TYPE=$(CODEC_TYPE)",
"SQLITE_ENABLE_DEBUG=$(SQLITE_ENABLE_DEBUG)",
"SQLITE_THREADSAFE=1",
"SQLITE_DQS=0",
"SQLITE_MAX_ATTACHED=10",
"SQLITE_SOUNDEX=1",
"SQLITE_ENABLE_COLUMN_METADATA=1",
"SQLITE_SECURE_DELETE=1",
"SQLITE_ENABLE_DESERIALIZE=1",
"SQLITE_ENABLE_FTS3=1",
"SQLITE_ENABLE_FTS3_PARENTHESIS=1",
"SQLITE_ENABLE_FTS4=1",
"SQLITE_ENABLE_FTS5=1",
"SQLITE_ENABLE_RTREE=1",
"SQLITE_ENABLE_GEOPOLY=1",
"SQLITE_ENABLE_PREUPDATE_HOOK=1",
"SQLITE_ENABLE_SESSION=1",
"SQLITE_CORE=1",
"SQLITE_ENABLE_EXTFUNC=1",
"SQLITE_ENABLE_MATH_FUNCTIONS=1",
"SQLITE_ENABLE_CSV=1",
"SQLITE_ENABLE_VSV=1",
"SQLITE_ENABLE_SHA3=1",
"SQLITE_ENABLE_CARRAY=1",
"SQLITE_ENABLE_FILEIO=1",
"SQLITE_ENABLE_SERIES=1",
"SQLITE_ENABLE_UUID=1",
"SQLITE_ENABLE_REGEXP=1",
-- "SQLITE3MC_USE_MINIZ=$(SQLITE3MC_USE_MINIZ)",
-- "SQLITE_ENABLE_COMPRESS=1"
-- "SQLITE_ENABLE_SQLAR=1"
-- "SQLITE_ENABLE_ZIPFILE=1"
"SQLITE3MC_SECURE_MEMORY=$(SQLITE3MC_SECURE_MEMORY)",
-- "SQLITE3MC_USE_RANDOM_FILL_MEMORY=$(SQLITE3MC_USE_RANDOM_FILL_MEMORY)",
"SQLITE_TEMP_STORE=2",
"SQLITE_USE_URI=1",
"SQLITE_USER_AUTHENTICATION=1"
}
-- Intermediate directory
if (is_msvc) then
objdir (BUILDDIR .. "/obj/" .. vc_with_ver)
else
objdir (BUILDDIR .. "/obj/gcc")
end
-- Target directory
filter { "configurations:Debug*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/dll/debug")
else
targetdir "bin/gcc/dll/debug"
end
filter { "configurations:Release*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/dll/release")
else
targetdir "bin/gcc/dll/release"
end
-- SQLite3 Shell
project "sqlite3mc_shell"
kind "ConsoleApp"
language "C++"
if (is_msvc) then
local prj = project()
prj.filename = "sqlite3mc_" .. vc_with_ver .. "_shell"
if (msvc_useProps) then
wxUseProps(true)
end
else
toolset("gcc")
buildoptions { "-msse4.2", "-maes" }
-- buildoptions { "-march=native" }
end
makesettings { "include config.gcc" }
vpaths {
["Header Files"] = { "**.h" },
["Source Files"] = { "**.c", "**.rc" }
}
files { "src/sqlite3.h", "src/shell.c", "src/sqlite3mc_shell.rc" }
characterset ("Unicode")
staticruntime "On"
includedirs { "src" }
links { "sqlite3mc_lib" }
location( BUILDDIR )
defines {
"SQLITE3MC_USE_MINIZ=$(SQLITE3MC_USE_MINIZ)",
"SQLITE_SHELL_IS_UTF8=1",
"SQLITE_ENABLE_SESSION=1",
"SQLITE_ENABLE_DBPAGE_VTAB=1",
"SQLITE_USER_AUTHENTICATION=1"
}
-- Intermediate directory
if (is_msvc) then
objdir (BUILDDIR .. "/obj/" .. vc_with_ver)
else
objdir (BUILDDIR .. "/obj/gcc")
end
-- Target directory
filter { "configurations:Debug*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/debug")
else
targetdir "bin/gcc/lib/debug"
end
filter { "configurations:Release*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/release")
else
targetdir "bin/gcc/lib/release"
end
-- ICU support
-- SQLite3 static library with ICU support
project "sqlite3mc_libicu"
language "C++"
kind "StaticLib"
if (is_msvc) then
local prj = project()
prj.filename = "sqlite3mc_" .. vc_with_ver .. "_libicu"
if (msvc_useProps) then
wxUseProps(true)
end
else
toolset("gcc")
buildoptions { "-msse4.2", "-maes" }
-- buildoptions { "-march=native" }
end
makesettings { "include config.gcc" }
files { "src/sqlite3mc.c", "src/*.h" }
vpaths {
["Header Files"] = { "**.h" },
["Source Files"] = { "**/sqlite3mc.c", "**.def", "**.rc" }
}
characterset ("Unicode")
staticruntime "On"
includedirs { "src", "$(LIBICU_PATH)/include" }
location( BUILDDIR )
targetname "sqlite3mc_icu"
defines {
"_LIB",
"CODEC_TYPE=$(CODEC_TYPE)",
"SQLITE_ENABLE_DEBUG=$(SQLITE_ENABLE_DEBUG)",
"SQLITE_THREADSAFE=1",
"SQLITE_ENABLE_ICU=1",
"SQLITE_DQS=0",
"SQLITE_MAX_ATTACHED=10",
"SQLITE_ENABLE_EXPLAIN_COMMENTS=1",
"SQLITE_SOUNDEX=1",
"SQLITE_ENABLE_COLUMN_METADATA=1",
"SQLITE_SECURE_DELETE=1",
"SQLITE_ENABLE_DESERIALIZE=1",
"SQLITE_ENABLE_FTS3=1",
"SQLITE_ENABLE_FTS3_PARENTHESIS=1",
"SQLITE_ENABLE_FTS4=1",
"SQLITE_ENABLE_FTS5=1",
"SQLITE_ENABLE_RTREE=1",
"SQLITE_ENABLE_GEOPOLY=1",
"SQLITE_ENABLE_PREUPDATE_HOOK=1",
"SQLITE_ENABLE_SESSION=1",
"SQLITE_CORE=1",
"SQLITE_ENABLE_EXTFUNC=1",
"SQLITE_ENABLE_MATH_FUNCTIONS=1",
"SQLITE_ENABLE_CSV=1",
"SQLITE_ENABLE_VSV=1",
-- "SQLITE_ENABLE_SHA3=1",
"SQLITE_ENABLE_CARRAY=1",
-- "SQLITE_ENABLE_FILEIO=1",
-- "SQLITE_ENABLE_SERIES=1",
"SQLITE_ENABLE_UUID=1",
-- "SQLITE_ENABLE_REGEXP=1",
-- "SQLITE3MC_USE_MINIZ=$(SQLITE3MC_USE_MINIZ)",
-- "SQLITE_ENABLE_COMPRESS=1"
-- "SQLITE_ENABLE_SQLAR=1"
-- "SQLITE_ENABLE_ZIPFILE=1"
"SQLITE3MC_SECURE_MEMORY=$(SQLITE3MC_SECURE_MEMORY)",
-- "SQLITE3MC_USE_RANDOM_FILL_MEMORY=$(SQLITE3MC_USE_RANDOM_FILL_MEMORY)",
"SQLITE_TEMP_STORE=2",
"SQLITE_USE_URI=1",
"SQLITE_USER_AUTHENTICATION=1",
-- Compatibility with official SQLite3 shell
"SQLITE_ENABLE_DBPAGE_VTAB=1",
"SQLITE_ENABLE_DBSTAT_VTAB=1",
"SQLITE_ENABLE_STMTVTAB=1",
"SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION=1"
}
-- Intermediate directory
if (is_msvc) then
objdir (BUILDDIR .. "/obj/" .. vc_with_ver)
else
objdir (BUILDDIR .. "/obj/gcc")
end
-- Target directory
filter { "configurations:Debug*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/debug")
else
targetdir "bin/gcc/lib/debug"
end
filter { "configurations:Release*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/release")
else
targetdir "bin/gcc/lib/release"
end
-- SQLite3 shared library with ICU support
project "sqlite3mc_dllicu"
language "C++"
kind "SharedLib"
if (is_msvc) then
local prj = project()
prj.filename = "sqlite3mc_" .. vc_with_ver .. "_dllicu"
if (msvc_useProps) then
wxUseProps(true)
end
else
toolset("gcc")
buildoptions { "-msse4.2", "-maes" }
-- buildoptions { "-march=native" }
end
makesettings { "include config.gcc" }
files { "src/sqlite3mc.c", "src/*.h", "src/sqlite3mc.rc" }
filter {}
vpaths {
["Header Files"] = { "**.h" },
["Source Files"] = { "**/sqlite3mc.c", "**.def", "**.rc" }
}
characterset ("Unicode")
staticruntime "On"
includedirs { "src", "$(LIBICU_PATH)/include" }
filter { "platforms:Win32" }
libdirs { "$(LIBICU_PATH)/lib" }
filter { "platforms:Win64" }
libdirs { "$(LIBICU_PATH)/lib64" }
filter {}
filter { "configurations:Debug*" }
links { "icuind", "icuucd" }
filter { "configurations:Release*" }
links { "icuin", "icuuc" }
filter {}
location( BUILDDIR )
targetname "sqlite3mc_icu"
defines {
"_USRDLL",
"SQLITE_API=__declspec(dllexport)",
"CODEC_TYPE=$(CODEC_TYPE)",
"SQLITE_ENABLE_DEBUG=$(SQLITE_ENABLE_DEBUG)",
"SQLITE_THREADSAFE=1",
"SQLITE_ENABLE_ICU=1",
"SQLITE_DQS=0",
"SQLITE_MAX_ATTACHED=10",
"SQLITE_SOUNDEX=1",
"SQLITE_ENABLE_COLUMN_METADATA=1",
"SQLITE_SECURE_DELETE=1",
"SQLITE_ENABLE_DESERIALIZE=1",
"SQLITE_ENABLE_FTS3=1",
"SQLITE_ENABLE_FTS3_PARENTHESIS=1",
"SQLITE_ENABLE_FTS4=1",
"SQLITE_ENABLE_FTS5=1",
"SQLITE_ENABLE_RTREE=1",
"SQLITE_ENABLE_GEOPOLY=1",
"SQLITE_ENABLE_PREUPDATE_HOOK=1",
"SQLITE_ENABLE_SESSION=1",
"SQLITE_CORE=1",
"SQLITE_ENABLE_EXTFUNC=1",
"SQLITE_ENABLE_MATH_FUNCTIONS=1",
"SQLITE_ENABLE_CSV=1",
"SQLITE_ENABLE_VSV=1",
"SQLITE_ENABLE_SHA3=1",
"SQLITE_ENABLE_CARRAY=1",
"SQLITE_ENABLE_FILEIO=1",
"SQLITE_ENABLE_SERIES=1",
"SQLITE_ENABLE_UUID=1",
"SQLITE_ENABLE_REGEXP=1",
-- "SQLITE3MC_USE_MINIZ=$(SQLITE3MC_USE_MINIZ)",
-- "SQLITE_ENABLE_COMPRESS=1"
-- "SQLITE_ENABLE_SQLAR=1"
-- "SQLITE_ENABLE_ZIPFILE=1"
"SQLITE3MC_SECURE_MEMORY=$(SQLITE3MC_SECURE_MEMORY)",
-- "SQLITE3MC_USE_RANDOM_FILL_MEMORY=$(SQLITE3MC_USE_RANDOM_FILL_MEMORY)",
"SQLITE_TEMP_STORE=2",
"SQLITE_USE_URI=1",
"SQLITE_USER_AUTHENTICATION=1"
}
-- Intermediate directory
if (is_msvc) then
objdir (BUILDDIR .. "/obj/" .. vc_with_ver)
else
objdir (BUILDDIR .. "/obj/gcc")
end
-- Target directory
filter { "configurations:Debug*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/dll/debug")
else
targetdir "bin/gcc/dll/debug"
end
filter { "configurations:Release*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/dll/release")
else
targetdir "bin/gcc/dll/release"
end
-- SQLite3 Shell with ICU support
project "sqlite3mc_shellicu"
kind "ConsoleApp"
language "C++"
if (is_msvc) then
local prj = project()
prj.filename = "sqlite3mc_" .. vc_with_ver .. "_shellicu"
if (msvc_useProps) then
wxUseProps(true)
end
else
toolset("gcc")
buildoptions { "-msse4.2", "-maes" }
-- buildoptions { "-march=native" }
end
makesettings { "include config.gcc" }
vpaths {
["Header Files"] = { "**.h" },
["Source Files"] = { "**.c", "**.rc" }
}
files { "src/sqlite3.h", "src/shell.c", "src/sqlite3mc_shell.rc" }
characterset ("Unicode")
staticruntime "On"
includedirs { "src" }
links { "sqlite3mc_libicu" }
filter { "platforms:Win32" }
libdirs { "$(LIBICU_PATH)/lib" }
filter { "platforms:Win64" }
libdirs { "$(LIBICU_PATH)/lib64" }
filter {}
filter { "configurations:Debug*" }
links { "icuind", "icuucd" }
filter { "configurations:Release*" }
links { "icuin", "icuuc" }
filter {}
location( BUILDDIR )
defines {
"SQLITE3MC_USE_MINIZ=$(SQLITE3MC_USE_MINIZ)",
"SQLITE_SHELL_IS_UTF8=1",
"SQLITE_ENABLE_SESSION=1",
"SQLITE_ENABLE_DBPAGE_VTAB=1",
"SQLITE_USER_AUTHENTICATION=1"
}
-- Intermediate directory
if (is_msvc) then
objdir (BUILDDIR .. "/obj/" .. vc_with_ver)
else
objdir (BUILDDIR .. "/obj/gcc")
end
-- Target directory
filter { "configurations:Debug*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/debug")
else
targetdir "bin/gcc/lib/debug"
end
filter { "configurations:Release*" }
if (is_msvc) then
targetdir ("bin/" .. vc_with_ver .. "/lib/release")
else
targetdir "bin/gcc/lib/release"
end