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