• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1##
2##
3## Build the library
4##
5##
6
7LOCAL_PATH:= $(call my-dir)
8
9# NOTE the following flags,
10#   SQLITE_TEMP_STORE=3 causes all TEMP files to go into RAM. and thats the behavior we want
11#   SQLITE_ENABLE_FTS3   enables usage of FTS3 - NOT FTS1 or 2.
12#   SQLITE_DEFAULT_AUTOVACUUM=1  causes the databases to be subject to auto-vacuum
13minimal_sqlite_flags := \
14	-DNDEBUG=1 \
15	-DHAVE_USLEEP=1 \
16	-DSQLITE_HAVE_ISNAN \
17	-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
18	-DSQLITE_THREADSAFE=2 \
19	-DSQLITE_TEMP_STORE=3 \
20	-DSQLITE_POWERSAFE_OVERWRITE=1 \
21	-DSQLITE_DEFAULT_FILE_FORMAT=4 \
22	-DSQLITE_DEFAULT_AUTOVACUUM=1 \
23	-DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 \
24	-DSQLITE_ENABLE_FTS3 \
25	-DSQLITE_ENABLE_FTS3_BACKWARDS \
26	-DSQLITE_ENABLE_FTS4 \
27	-DSQLITE_OMIT_BUILTIN_TEST \
28	-DSQLITE_OMIT_COMPILEOPTION_DIAGS \
29	-DSQLITE_OMIT_LOAD_EXTENSION \
30	-DSQLITE_DEFAULT_FILE_PERMISSIONS=0600 \
31	-DSQLITE_SECURE_DELETE
32
33minimal_linux_flags := \
34    -DHAVE_POSIX_FALLOCATE=1 \
35
36device_sqlite_flags := $(minimal_sqlite_flags) \
37    -DSQLITE_ENABLE_ICU \
38    -DUSE_PREAD64 \
39    -Dfdatasync=fdatasync \
40    -DHAVE_MALLOC_H=1 \
41    -DHAVE_MALLOC_USABLE_SIZE
42
43common_src_files := sqlite3.c
44
45# b/31938382, disable most clang-tidy checks to avoid segmentation fault.
46common_local_tidy_checks := -*,google-*,-google-readability-*
47
48# the device library
49include $(CLEAR_VARS)
50
51LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
52LOCAL_SRC_FILES := $(common_src_files)
53
54LOCAL_CFLAGS += $(device_sqlite_flags)
55LOCAL_CFLAGS_linux += $(minimal_linux_flags)
56
57LOCAL_SHARED_LIBRARIES := libdl
58
59LOCAL_MODULE:= libsqlite
60
61LOCAL_C_INCLUDES += $(call include-path-for, system-core)/cutils
62
63LOCAL_SHARED_LIBRARIES += liblog \
64            libicuuc \
65            libicui18n \
66            libutils \
67            liblog
68
69# include android specific methods
70LOCAL_WHOLE_STATIC_LIBRARIES := libsqlite3_android
71LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
72
73include $(BUILD_SHARED_LIBRARY)
74
75
76include $(CLEAR_VARS)
77LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
78LOCAL_SRC_FILES := $(common_src_files)
79LOCAL_LDLIBS += -lpthread -ldl
80LOCAL_CFLAGS += $(minimal_sqlite_flags)
81LOCAL_CFLAGS_linux += $(minimal_linux_flags)
82LOCAL_MODULE:= libsqlite
83LOCAL_SHARED_LIBRARIES += libicuuc libicui18n
84LOCAL_STATIC_LIBRARIES := liblog libutils libcutils
85
86# include android specific methods
87LOCAL_WHOLE_STATIC_LIBRARIES := libsqlite3_android
88LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
89
90include $(BUILD_HOST_SHARED_LIBRARY)
91
92##
93##
94## Build the device command line tool sqlite3
95##
96##
97ifneq ($(SDK_ONLY),true)  # SDK doesn't need device version of sqlite3
98
99include $(CLEAR_VARS)
100
101LOCAL_SRC_FILES := shell.c
102
103LOCAL_C_INCLUDES := \
104    $(LOCAL_PATH)/../android \
105    $(call include-path-for, system-core)/cutils
106
107LOCAL_SHARED_LIBRARIES := libsqlite \
108            libicuuc \
109            libicui18n \
110            liblog \
111            libutils
112
113LOCAL_STATIC_LIBRARIES := libicuandroid_utils
114
115LOCAL_CFLAGS += $(device_sqlite_flags)
116LOCAL_CFLAGS_linux += $(minimal_linux_flags)
117
118LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
119
120LOCAL_MODULE_TAGS := debug
121
122LOCAL_MODULE := sqlite3
123
124include $(BUILD_EXECUTABLE)
125
126endif # !SDK_ONLY
127
128
129##
130##
131## Build the host command line tool sqlite3
132##
133##
134
135include $(CLEAR_VARS)
136
137LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
138LOCAL_SRC_FILES := $(common_src_files) shell.c
139LOCAL_CFLAGS += $(minimal_sqlite_flags) \
140    -DNO_ANDROID_FUNCS=1
141LOCAL_CFLAGS_linux += $(minimal_linux_flags)
142
143# sqlite3MemsysAlarm uses LOG()
144LOCAL_STATIC_LIBRARIES += liblog
145
146LOCAL_LDLIBS_darwin += -lpthread -ldl
147LOCAL_LDLIBS_linux += -lpthread -ldl
148
149LOCAL_MODULE_HOST_OS := darwin linux windows
150
151LOCAL_MODULE := sqlite3
152
153include $(BUILD_HOST_EXECUTABLE)
154
155# Build a minimal version of sqlite3 without any android specific
156# features against the NDK. This is used by libcore's JDBC related
157# unit tests.
158include $(CLEAR_VARS)
159LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
160LOCAL_SRC_FILES := $(common_src_files)
161LOCAL_CFLAGS += $(minimal_sqlite_flags)
162LOCAL_CFLAGS_linux += $(minimal_linux_flags)
163LOCAL_MODULE:= libsqlite_static_minimal
164LOCAL_SDK_VERSION := 23
165LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
166
167include $(BUILD_STATIC_LIBRARY)
168
169# Same as libsqlite_static_minimal, except that this is for the host.
170include $(CLEAR_VARS)
171LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
172LOCAL_SRC_FILES := $(common_src_files)
173LOCAL_CFLAGS += $(minimal_sqlite_flags)
174LOCAL_CFLAGS_linux += $(minimal_linux_flags)
175LOCAL_MODULE:= libsqlite_static_minimal
176LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
177
178include $(BUILD_HOST_STATIC_LIBRARY)
179