1# Makefile for building Android.JDBC for DBSQL
2# @DB_VERSION_FULL_STRING@
3#
4# This Makefile will generate 3 files:
5#   1. Static libdb_sql library. An internal library and users don't
6#      need it. Just as the base of below two compontents.
7#   2. Shared Android.JDBC (.so) file.
8#   3. DBSQL shell. Staticed linking. So that users can use it on
9#      Android directly.
10###################################################################
11LOCAL_PATH := $(call my-dir)
12BDB_ENABLE_ENCRYPTION := false
13
14###################################################################
15# Common variables
16###################################################################
17BDB_TOP := ../../..
18BDB_PATH := $(LOCAL_PATH)/$(BDB_TOP)
19
20# Common include paths
21COMMON_C_INCLUDES := $(BDB_PATH)/build_android $(BDB_PATH)/src \
22	$(BDB_PATH)/build_android/sql $(BDB_PATH)/lang/sql/generated
23
24#
25# flags -- most of these are from the SQLite build, some are not.
26# Here are some that may be changed for tuning or behavior:
27# SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT -- default size of BDB log file in bytes
28# SQLITE_DEFAULT_PAGE_SIZE -- explicit control over page size for cache
29#  and databases
30# SQLITE_DEFAULT_CACHE_SIZE -- sizes the BDB cache, in pages
31# BDBSQL_SHARE_PRIVATE -- uses private environments but still shares databases
32#  among processes using external synchronization.
33# BDBSQL_CONVERT_SQLITE -- define this to convert SQLite databases to BDB SQL
34#  format -- this has other requirements so do not do this without consulting
35#  Oracle.
36#
37COMMON_CFLAGS := -Wall -DHAVE_USLEEP=1 \
38	-DSQLITE_DEFAULT_PAGE_SIZE=4096 \
39	-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=524288 \
40	-DSQLITE_DEFAULT_CACHE_SIZE=128 \
41	-DSQLITE_THREADSAFE=1 -DNDEBUG=1 -DSQLITE_TEMP_STORE=3 \
42	-DSQLITE_OMIT_TRUNCATE_OPTIMIZATION -DSQLITE_OS_UNIX=1 \
43	-D_HAVE_SQLITE_CONFIG_H -DSQLITE_THREAD_OVERRIDE_LOCK=-1 \
44	-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_BACKWARDS -Dfdatasync=fsync
45
46ifeq ($(BDB_ENABLE_ENCRYPTION),true)
47COMMON_CFLAGS += -DSQLITE_HAS_CODEC -DHAVE_CRYPTO -DHAVE_SQLITE3_KEY
48endif
49
50# Required for JDBC building
51# Most of these are from configured <db>/lang/sql/jdbc/Makefile.in
52COMMON_CFLAGS += \
53	-DHAVE_SQLITE2=0 -DHAVE_SQLITE3=1 \
54	-DHAVE_SQLITE_FUNCTION_TYPE=0 \
55	-DHAVE_SQLITE_OPEN_AUX_FILE=0 \
56	-DHAVE_SQLITE_SET_AUTHORIZER=0 \
57	-DHAVE_SQLITE_TRACE=0 \
58	-DHAVE_SQLITE_COMPILE=0 \
59	-DHAVE_SQLITE_PROGRESS_HANDLER=0 \
60	-DHAVE_SQLITE3_MALLOC=1 \
61	-DHAVE_SQLITE3_PREPARE_V2=1 \
62	-DHAVE_SQLITE3_PREPARE16_V2=1 \
63	-DHAVE_SQLITE3_BIND_ZEROBLOB=1 \
64	-DHAVE_SQLITE3_CLEAR_BINDINGS=1 \
65	-DHAVE_SQLITE3_COLUMN_TABLE_NAME16=1 \
66	-DHAVE_SQLITE3_COLUMN_DATABASE_NAME16=1 \
67	-DHAVE_SQLITE3_COLUMN_ORIGIN_NAME16=1 \
68	-DHAVE_SQLITE3_BIND_PARAMETER_COUNT=1 \
69	-DHAVE_SQLITE3_BIND_PARAMETER_NAME=1 \
70	-DHAVE_SQLITE3_BIND_PARAMETER_INDEX=1 \
71	-DHAVE_SQLITE3_RESULT_ZEROBLOB=1 \
72	-DHAVE_SQLITE3_INCRBLOBIO=1 \
73	-DHAVE_SQLITE3_SHARED_CACHE=1 \
74	-DHAVE_SQLITE3_OPEN_V2=1 \
75	-DHAVE_SQLITE3_LOAD_EXTENSION=0 \
76	-DHAVE_SQLITE3_BACKUPAPI=1 \
77	-DHAVE_SQLITE3_PROFILE=1 \
78	-DHAVE_SQLITE3_STATUS=1 \
79	-DHAVE_SQLITE3_DB_STATUS=1 \
80	-DHAVE_SQLITE3_STMT_STATUS=1 \
81	-DCANT_PASS_VALIST_AS_CHARPTR=1 \
82	-DHAVE_ERRNO_H -DHAVE_SQLITE_CONFIG_H \
83	-DHAVE_SQLITE3_MALLOC -O3 -D_GNU_SOURCE -D_REENTRANT \
84	-DSQLITE_ENABLE_COLUMN_METADATA=1
85
86################################################################################
87# Build static library libdb_sql -- base of JDBC Driver and DBSQL shell
88################################################################################
89include $(CLEAR_VARS)
90LOCAL_MODULE := libdb_sql_static
91
92# This directive results in arm (vs thumb) code.  It's necessary to
93# allow some BDB assembler code (for mutexes) to compile.
94LOCAL_ARM_MODE := arm
95
96# Import common flags
97LOCAL_C_INCLUDES += $(COMMON_C_INCLUDES)
98LOCAL_CFLAGS += $(COMMON_CFLAGS)
99
100# Source files
101LOCAL_SRC_FILES := \
102	@SOURCE_FILES@
103	$(BDB_TOP)/lang/sql/generated/sqlite3.c
104
105ifeq ($(BDB_ENABLE_ENCRYPTION),true)
106LOCAL_SRC_FILES += \
107	$(BDB_TOP)/src/crypto/crypto.c \
108	$(BDB_TOP)/src/crypto/aes_method.c \
109	$(BDB_TOP)/src/crypto/mersenne/mt19937db.c \
110	$(BDB_TOP)/src/crypto/rijndael/rijndael-api-fst.c \
111	$(BDB_TOP)/src/crypto/rijndael/rijndael-alg-fst.c
112else
113LOCAL_SRC_FILES += $(BDB_TOP)/src/common/crypto_stub.c
114endif
115
116ifneq ($(TARGET_ARCH),arm)
117LOCAL_LDLIBS += -lpthread -ldl
118endif
119
120ifneq ($(TARGET_SIMULATOR),true)
121LOCAL_SHARED_LIBRARIES := libdl
122endif
123
124LOCAL_C_INCLUDES += $(call include-path-for, system-core)/cutils
125LOCAL_SHARED_LIBRARIES += liblog libicuuc libicui18n libutils
126
127include $(BUILD_STATIC_LIBRARY)
128
129
130################################################################################
131# Build Android.JDBC shared library
132################################################################################
133include $(CLEAR_VARS)
134LOCAL_MODULE := oracle-jdbc
135
136LOCAL_ARM_MODE := arm
137LOCAL_STATIC_LIBRARIES := libdb_sql_static # Based on above static library
138LOCAL_SRC_FILES := $(BDB_TOP)/build_unix/jdbc/native/sqlite_jni.c
139
140# Import common flags
141LOCAL_C_INCLUDES += $(COMMON_C_INCLUDES)
142LOCAL_CFLAGS += $(COMMON_CFLAGS)
143
144# For Android.JDBC native code
145LOCAL_C_INCLUDES += $(BDB_TOP)/build_unix/jdbc/native
146
147include $(BUILD_SHARED_LIBRARY)
148
149
150################################################################################
151##device commande line tool: dbsql
152################################################################################
153ifneq ($(SDK_ONLY),true)  # SDK doesn't need device version of dbsql
154include $(CLEAR_VARS)
155LOCAL_MODULE := dbsql
156
157LOCAL_ARM_MODE := arm
158LOCAL_STATIC_LIBRARIES := libdb_sql_static # Based on above static library
159LOCAL_SRC_FILES := $(BDB_TOP)/lang/sql/sqlite/src/shell.c
160
161# Import common flags
162LOCAL_C_INCLUDES += $(COMMON_C_INCLUDES)
163LOCAL_CFLAGS += $(COMMON_CFLAGS)
164
165# Add flags for shell.c
166LOCAL_CFLAGS += -DNO_ANDROID_FUNCS
167
168ifneq ($(TARGET_ARCH),arm)
169LOCAL_LDLIBS += -lpthread -ldl
170endif
171
172LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
173LOCAL_MODULE_TAGS := debug
174include $(BUILD_EXECUTABLE)
175endif # !SDK_ONLY
176
177