-- 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