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	-Wno-unused-parameter \
33	-Werror
34
35minimal_linux_flags := \
36    -DHAVE_POSIX_FALLOCATE=1 \
37
38device_sqlite_flags := $(minimal_sqlite_flags) \
39    -DSQLITE_ENABLE_ICU \
40    -DUSE_PREAD64 \
41    -Dfdatasync=fdatasync \
42    -DHAVE_MALLOC_H=1 \
43    -DHAVE_MALLOC_USABLE_SIZE
44
45common_src_files := sqlite3.c
46
47# b/31938382, disable most clang-tidy checks to avoid segmentation fault.
48common_local_tidy_checks := -*,google-*,-google-readability-*
49
50# the device library
51include $(CLEAR_VARS)
52
53LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
54LOCAL_SRC_FILES := $(common_src_files)
55
56LOCAL_CFLAGS += $(device_sqlite_flags)
57LOCAL_CFLAGS_linux += $(minimal_linux_flags)
58
59LOCAL_SHARED_LIBRARIES := libdl
60
61LOCAL_MODULE:= libsqlite
62
63LOCAL_C_INCLUDES += $(call include-path-for, system-core)/cutils
64
65LOCAL_SHARED_LIBRARIES += liblog \
66            libicuuc \
67            libicui18n \
68            libutils \
69            liblog
70
71# include android specific methods
72LOCAL_WHOLE_STATIC_LIBRARIES := libsqlite3_android
73LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
74
75include $(BUILD_SHARED_LIBRARY)
76
77
78include $(CLEAR_VARS)
79LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
80LOCAL_SRC_FILES := $(common_src_files)
81LOCAL_LDLIBS += -lpthread -ldl
82LOCAL_CFLAGS += $(minimal_sqlite_flags)
83LOCAL_CFLAGS_linux += $(minimal_linux_flags)
84LOCAL_MODULE:= libsqlite
85LOCAL_SHARED_LIBRARIES += libicuuc libicui18n
86LOCAL_STATIC_LIBRARIES := liblog libutils libcutils
87
88# include android specific methods
89LOCAL_WHOLE_STATIC_LIBRARIES := libsqlite3_android
90LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
91
92include $(BUILD_HOST_SHARED_LIBRARY)
93
94##
95##
96## Build the device command line tool sqlite3
97##
98##
99ifneq ($(SDK_ONLY),true)  # SDK doesn't need device version of sqlite3
100
101include $(CLEAR_VARS)
102
103LOCAL_SRC_FILES := shell.c
104
105LOCAL_C_INCLUDES := \
106    $(LOCAL_PATH)/../android \
107    $(call include-path-for, system-core)/cutils
108
109LOCAL_SHARED_LIBRARIES := libsqlite \
110            libicuuc \
111            libicui18n \
112            liblog \
113            libutils
114
115LOCAL_STATIC_LIBRARIES := libicuandroid_utils
116
117LOCAL_CFLAGS += $(device_sqlite_flags)
118LOCAL_CFLAGS_linux += $(minimal_linux_flags)
119
120LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
121
122LOCAL_MODULE_TAGS := debug
123
124LOCAL_MODULE := sqlite3
125
126include $(BUILD_EXECUTABLE)
127
128endif # !SDK_ONLY
129
130
131##
132##
133## Build the host command line tool sqlite3
134##
135##
136
137include $(CLEAR_VARS)
138
139LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
140LOCAL_SRC_FILES := $(common_src_files) shell.c
141LOCAL_CFLAGS += $(minimal_sqlite_flags) \
142    -DNO_ANDROID_FUNCS=1
143LOCAL_CFLAGS_linux += $(minimal_linux_flags)
144
145# sqlite3MemsysAlarm uses LOG()
146LOCAL_STATIC_LIBRARIES += liblog
147
148LOCAL_LDLIBS_darwin += -lpthread -ldl
149LOCAL_LDLIBS_linux += -lpthread -ldl
150
151LOCAL_MODULE_HOST_OS := darwin linux windows
152
153LOCAL_MODULE := sqlite3
154
155include $(BUILD_HOST_EXECUTABLE)
156
157# Build a minimal version of sqlite3 without any android specific
158# features against the NDK. This is used by libcore's JDBC related
159# unit tests.
160include $(CLEAR_VARS)
161LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
162LOCAL_SRC_FILES := $(common_src_files)
163LOCAL_CFLAGS += $(minimal_sqlite_flags)
164LOCAL_CFLAGS_linux += $(minimal_linux_flags)
165LOCAL_MODULE:= libsqlite_static_minimal
166LOCAL_SDK_VERSION := 23
167LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
168
169include $(BUILD_STATIC_LIBRARY)
170
171# Same as libsqlite_static_minimal, except that this is for the host.
172include $(CLEAR_VARS)
173LOCAL_TIDY_CHECKS := $(common_local_tidy_checks)
174LOCAL_SRC_FILES := $(common_src_files)
175LOCAL_CFLAGS += $(minimal_sqlite_flags)
176LOCAL_CFLAGS_linux += $(minimal_linux_flags)
177LOCAL_MODULE:= libsqlite_static_minimal
178LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
179
180include $(BUILD_HOST_STATIC_LIBRARY)
181