Skip to content

Commit 89c0326

Browse files
authored
Merge pull request #1004 from SpaceIm/sqlite3-3.31.1
Sqlite3 3.31.1 + build CLI
2 parents 885cc36 + c7cfcbe commit 89c0326

File tree

6 files changed

+61
-51
lines changed

6 files changed

+61
-51
lines changed

recipes/sqlite3/all/CMakeLists.txt

+10-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ include(conanbuildinfo.cmake)
55
conan_basic_setup()
66

77
# Add some options from https://sqlite.org/compile.html
8+
option(SQLITE3_BUILD_EXECUTABLE "Build sqlite command line utility for accessing SQLite databases")
89
option(ENABLE_JSON1 "Enable JSON SQL functions")
910
option(ENABLE_COLUMN_METADATA "Enable additional APIs that provide convenient access to meta-data about tables and queries")
1011
option(ENABLE_EXPLAIN_COMMENTS "Enable SQLite to insert comment text into the output of EXPLAIN")
@@ -21,9 +22,7 @@ option(HAVE_STRERROR_R "Use strerror_r()")
2122
option(HAVE_USLEEP "Use usleep() system call to implement the xSleep method")
2223
option(DISABLE_GETHOSTUUID "Disable function gethostuuid")
2324

24-
add_library(${PROJECT_NAME} source_subfolder/sqlite3.c
25-
source_subfolder/sqlite3.h
26-
source_subfolder/sqlite3ext.h)
25+
add_library(${PROJECT_NAME} source_subfolder/sqlite3.c)
2726
if (WIN32 AND MSVC AND BUILD_SHARED_LIBS)
2827
set_target_properties(${PROJECT_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
2928
endif(MSVC AND BUILD_SHARED_LIBS)
@@ -81,3 +80,11 @@ install(TARGETS ${PROJECT_NAME}
8180

8281
install(DIRECTORY source_subfolder/ DESTINATION include
8382
FILES_MATCHING PATTERN "*.h")
83+
84+
if(SQLITE3_BUILD_EXECUTABLE)
85+
add_executable(sqlite3-bin source_subfolder/shell.c source_subfolder/sqlite3.c)
86+
target_compile_definitions(sqlite3-bin PRIVATE "SQLITE_THREADSAFE=0")
87+
target_link_libraries(sqlite3-bin PRIVATE ${CMAKE_DL_LIBS})
88+
set_target_properties(sqlite3-bin PROPERTIES OUTPUT_NAME "sqlite3")
89+
install(TARGETS sqlite3-bin RUNTIME DESTINATION bin)
90+
endif()

recipes/sqlite3/all/conandata.yml

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
sources:
2+
"3.31.1":
3+
url: "https://www.sqlite.org/2020/sqlite-amalgamation-3310100.zip"
4+
sha256: "f3c79bc9f4162d0b06fa9fe09ee6ccd23bb99ce310b792c5145f87fbcc30efca"
25
"3.31.0":
36
url: "https://www.sqlite.org/2020/sqlite-amalgamation-3310000.zip"
47
sha256: "75836c58be49e9aba539d36e80e72f432e9dedff46618ad2a3adfe5730400bed"

recipes/sqlite3/all/conanfile.py

+45-42
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class ConanSqlite3(ConanFile):
2525
"omit_load_extension": [True, False],
2626
"enable_unlock_notify": [True, False],
2727
"disable_gethostuuid": [True, False],
28+
"build_executable": [True, False],
2829
}
2930
default_options = {"shared": False,
3031
"fPIC": True,
@@ -39,15 +40,14 @@ class ConanSqlite3(ConanFile):
3940
"omit_load_extension": False,
4041
"enable_unlock_notify": True,
4142
"disable_gethostuuid": False,
43+
"build_executable": True,
4244
}
43-
_source_subfolder = "source_subfolder"
4445

45-
def source(self):
46-
tools.get(**self.conan_data["sources"][self.version])
47-
url = self.conan_data["sources"][self.version]["url"]
48-
archive_name = os.path.basename(url)
49-
archive_name = os.path.splitext(archive_name)[0]
50-
os.rename(archive_name, self._source_subfolder)
46+
_cmake = None
47+
48+
@property
49+
def _source_subfolder(self):
50+
return "source_subfolder"
5151

5252
def config_options(self):
5353
if self.settings.os == "Windows":
@@ -57,35 +57,37 @@ def configure(self):
5757
del self.settings.compiler.libcxx
5858
del self.settings.compiler.cppstd
5959

60+
def source(self):
61+
tools.get(**self.conan_data["sources"][self.version])
62+
url = self.conan_data["sources"][self.version]["url"]
63+
archive_name = os.path.basename(url)
64+
archive_name = os.path.splitext(archive_name)[0]
65+
os.rename(archive_name, self._source_subfolder)
66+
6067
def _configure_cmake(self):
61-
cmake = CMake(self)
62-
cmake.definitions["THREADSAFE"] = self.options.threadsafe
63-
cmake.definitions["ENABLE_COLUMN_METADATA"] = self.options.enable_column_metadata
64-
cmake.definitions["ENABLE_EXPLAIN_COMMENTS"] = self.options.enable_explain_comments
65-
cmake.definitions["ENABLE_FTS3"] = self.options.enable_fts3
66-
cmake.definitions["ENABLE_FTS4"] = self.options.enable_fts4
67-
cmake.definitions["ENABLE_FTS5"] = self.options.enable_fts5
68-
cmake.definitions["ENABLE_JSON1"] = self.options.enable_json1
69-
cmake.definitions["ENABLE_RTREE"] = self.options.enable_rtree
70-
cmake.definitions["OMIT_LOAD_EXTENSION"] = self.options.omit_load_extension
71-
cmake.definitions["SQLITE_ENABLE_UNLOCK_NOTIFY"] = self.options.enable_unlock_notify
72-
cmake.definitions["HAVE_FDATASYNC"] = True
73-
cmake.definitions["HAVE_GMTIME_R"] = True
74-
cmake.definitions["HAVE_LOCALTIME_R"] = True
75-
cmake.definitions["HAVE_POSIX_FALLOCATE"] = True
76-
cmake.definitions["HAVE_STRERROR_R"] = True
77-
cmake.definitions["HAVE_USLEEP"] = True
78-
if self.settings.os == "Windows":
79-
cmake.definitions["HAVE_LOCALTIME_R"] = False
80-
cmake.definitions["HAVE_POSIX_FALLOCATE"] = False
81-
if tools.is_apple_os(self.settings.os):
82-
cmake.definitions["HAVE_POSIX_FALLOCATE"] = False
83-
if self.settings.os == "Android":
84-
cmake.definitions["HAVE_POSIX_FALLOCATE"] = False
85-
if self.options.disable_gethostuuid:
86-
cmake.definitions["DISABLE_GETHOSTUUID"] = True
87-
cmake.configure()
88-
return cmake
68+
if self._cmake:
69+
return self._cmake
70+
self._cmake = CMake(self)
71+
self._cmake.definitions["SQLITE3_BUILD_EXECUTABLE"] = self.options.build_executable
72+
self._cmake.definitions["THREADSAFE"] = self.options.threadsafe
73+
self._cmake.definitions["ENABLE_COLUMN_METADATA"] = self.options.enable_column_metadata
74+
self._cmake.definitions["ENABLE_EXPLAIN_COMMENTS"] = self.options.enable_explain_comments
75+
self._cmake.definitions["ENABLE_FTS3"] = self.options.enable_fts3
76+
self._cmake.definitions["ENABLE_FTS4"] = self.options.enable_fts4
77+
self._cmake.definitions["ENABLE_FTS5"] = self.options.enable_fts5
78+
self._cmake.definitions["ENABLE_JSON1"] = self.options.enable_json1
79+
self._cmake.definitions["ENABLE_RTREE"] = self.options.enable_rtree
80+
self._cmake.definitions["OMIT_LOAD_EXTENSION"] = self.options.omit_load_extension
81+
self._cmake.definitions["SQLITE_ENABLE_UNLOCK_NOTIFY"] = self.options.enable_unlock_notify
82+
self._cmake.definitions["HAVE_FDATASYNC"] = True
83+
self._cmake.definitions["HAVE_GMTIME_R"] = True
84+
self._cmake.definitions["HAVE_LOCALTIME_R"] = self.settings.os != "Windows"
85+
self._cmake.definitions["HAVE_POSIX_FALLOCATE"] = not (self.settings.os in ["Windows", "Android"] or tools.is_apple_os(self.settings.os))
86+
self._cmake.definitions["HAVE_STRERROR_R"] = True
87+
self._cmake.definitions["HAVE_USLEEP"] = True
88+
self._cmake.definitions["DISABLE_GETHOSTUUID"] = self.options.disable_gethostuuid
89+
self._cmake.configure()
90+
return self._cmake
8991

9092
def build(self):
9193
cmake = self._configure_cmake()
@@ -94,17 +96,18 @@ def build(self):
9496
def package(self):
9597
header = tools.load(os.path.join(self._source_subfolder, "sqlite3.h"))
9698
license_content = header[3:header.find("***", 1)]
97-
tools.save("LICENSE", license_content)
98-
99-
self.copy("LICENSE", dst="licenses")
100-
99+
tools.save(os.path.join(self.package_folder, "licenses", "LICENSE"), license_content)
101100
cmake = self._configure_cmake()
102101
cmake.install()
103102

104103
def package_info(self):
105104
self.cpp_info.libs = tools.collect_libs(self)
106105
if self.settings.os == "Linux":
107106
if self.options.threadsafe:
108-
self.cpp_info.libs.append("pthread")
109-
if self.options.omit_load_extension == "False":
110-
self.cpp_info.libs.append("dl")
107+
self.cpp_info.system_libs.append("pthread")
108+
if not self.options.omit_load_extension:
109+
self.cpp_info.system_libs.append("dl")
110+
if self.options.build_executable:
111+
bin_path = os.path.join(self.package_folder, "bin")
112+
self.output.info("Appending PATH env var with : {}".format(bin_path))
113+
self.env_info.PATH.append(bin_path)

recipes/sqlite3/all/test_package/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
cmake_minimum_required(VERSION 3.1.3)
1+
cmake_minimum_required(VERSION 2.8.11)
22
project(test_package)
33

4-
set(CMAKE_VERBOSE_MAKEFILE TRUE)
5-
64
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
75
conan_basic_setup()
86

recipes/sqlite3/all/test_package/conanfile.py

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
#!/usr/bin/env python
2-
# -*- coding: utf-8 -*-
3-
41
from conans import ConanFile, CMake, tools
52
import os
63

recipes/sqlite3/config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
versions:
2+
"3.31.1":
3+
folder: all
24
"3.31.0":
35
folder: all
46
"3.30.1":

0 commit comments

Comments
 (0)