@@ -36,7 +36,7 @@ CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR) -I$(SRC_DIR)/sqlite -I
3636T_CFLAGS = $(CFLAGS ) -DSQLITE_CORE -DCLOUDSYNC_UNITTEST -DCLOUDSYNC_OMIT_NETWORK -DCLOUDSYNC_OMIT_PRINT_RESULT
3737COVERAGE = false
3838ifndef NATIVE_NETWORK
39- LDFLAGS = -L./$(CURL_DIR)/$(PLATFORM ) -lcurl
39+ LDFLAGS = -L./$(dir $(CURL_LIB) ) -lcurl
4040endif
4141
4242# Directories
@@ -50,11 +50,17 @@ VPATH = $(SRC_DIR):$(SQLITE_IMPL_DIR):$(POSTGRES_IMPL_DIR):$(SQLITE_DIR):$(TEST_
5050BUILD_RELEASE = build/release
5151BUILD_TEST = build/test
5252BUILD_DIRS = $(BUILD_TEST ) $(BUILD_RELEASE )
53+ OPENSSL_DIR = openssl
5354CURL_DIR = curl
5455CURL_SRC = $(CURL_DIR ) /src/curl-$(CURL_VERSION )
5556COV_DIR = coverage
5657CUSTOM_CSS = $(TEST_DIR ) /sqliteai.css
5758
59+ # Android OpenSSL local installation directory
60+ ifeq ($(PLATFORM ) ,android)
61+ OPENSSL_INSTALL_DIR = $(OPENSSL_DIR)/$(PLATFORM)/$(ARCH)
62+ endif
63+
5864# Multi-platform source files (at src/ root) - exclude database_*.c as they're in subdirs
5965CORE_SRC = $(filter-out $(SRC_DIR ) /database_% .c, $(wildcard $(SRC_DIR ) /* .c) )
6066# SQLite-specific files
@@ -116,11 +122,13 @@ else ifeq ($(PLATFORM),android)
116122 ANDROID_ABI := android26
117123 endif
118124
119- OPENSSL := $(BIN)/../sysroot/usr/include/openssl
125+ OPENSSL := $(OPENSSL_INSTALL_DIR)/lib/libssl.a
120126 CC = $(BIN)/$(ARCH)-linux-$(ANDROID_ABI)-clang
121- CURL_CONFIG = --host $(ARCH)-linux-$(ANDROID_ABI) --with-openssl=$(BIN)/../sysroot/usr LIBS="-lssl -lcrypto" AR=$(BIN)/llvm-ar AS=$(BIN)/llvm-as CC=$(CC) CXX=$(BIN)/$(ARCH)-linux-$(ANDROID_ABI)-clang++ LD=$(BIN)/ld RANLIB=$(BIN)/llvm-ranlib STRIP=$(BIN)/llvm-strip
127+ CURL_LIB = $(CURL_DIR)/$(PLATFORM)/$(ARCH)/libcurl.a
128+ CURL_CONFIG = --host $(ARCH)-linux-$(ANDROID_ABI) --with-openssl=$(CURDIR)/$(OPENSSL_INSTALL_DIR) LDFLAGS="-L$(CURDIR)/$(OPENSSL_INSTALL_DIR)/lib" LIBS="-lssl -lcrypto" AR=$(BIN)/llvm-ar AS=$(BIN)/llvm-as CC=$(CC) CXX=$(BIN)/$(ARCH)-linux-$(ANDROID_ABI)-clang++ LD=$(BIN)/ld RANLIB=$(BIN)/llvm-ranlib STRIP=$(BIN)/llvm-strip
122129 TARGET := $(DIST_DIR)/cloudsync.so
123- LDFLAGS += -shared -lssl -lcrypto
130+ CFLAGS += -fPIC -I$(OPENSSL_INSTALL_DIR)/include
131+ LDFLAGS += -shared -fPIC -L$(OPENSSL_INSTALL_DIR)/lib -lssl -lcrypto
124132 STRIP = $(BIN)/llvm-strip --strip-unneeded $@
125133else ifeq ($(PLATFORM),ios)
126134 TARGET := $(DIST_DIR)/cloudsync.dylib
@@ -222,23 +230,23 @@ endif
222230unittest : $(TARGET ) $(DIST_DIR ) /unit$(EXE )
223231 @./$(DIST_DIR ) /unit$(EXE )
224232
225- OPENSSL_TARBALL = $(CURL_DIR ) /src/$(OPENSSL_VERSION ) .tar.gz
226- OPENSSL_SRC = $(CURL_DIR ) /src/$(OPENSSL_VERSION )
233+ OPENSSL_TARBALL = $(OPENSSL_DIR ) /$(OPENSSL_VERSION ) .tar.gz
227234
228235$(OPENSSL_TARBALL ) :
229- mkdir -p $(CURL_DIR ) /src
236+ mkdir -p $(OPENSSL_DIR )
230237 curl -L -o $(OPENSSL_TARBALL ) https://github.com/openssl/openssl/releases/download/$(OPENSSL_VERSION ) /$(OPENSSL_VERSION ) .tar.gz
231238
232239$(OPENSSL ) : $(OPENSSL_TARBALL )
233- mkdir -p $(CURL_DIR ) /src
234- tar -xzf $(OPENSSL_TARBALL ) -C $(CURL_DIR ) /src
235- cd $(OPENSSL_SRC ) && \
240+ mkdir -p $(OPENSSL_DIR )
241+ tar -xzf $(OPENSSL_TARBALL ) -C $(OPENSSL_DIR )
242+ cd $(OPENSSL_DIR ) / $( OPENSSL_VERSION ) && \
236243 ./Configure android-$(if $(filter aarch64,$(ARCH ) ) ,arm64,$(if $(filter armv7a,$(ARCH ) ) ,arm,$(ARCH ) ) ) \
237- --prefix=$(BIN ) /../sysroot/usr \
244+ --prefix=$(CURDIR ) / $( OPENSSL_INSTALL_DIR ) \
238245 no-shared no-unit-test \
246+ -fPIC \
239247 -D__ANDROID_API__=26 && \
240248 $(MAKE ) && $(MAKE ) install_sw
241- rm -rf $(OPENSSL_SRC )
249+ rm -rf $(OPENSSL_DIR ) / $( OPENSSL_VERSION )
242250
243251ifeq ($(PLATFORM ) ,android)
244252$(CURL_LIB ) : $(OPENSSL )
@@ -323,8 +331,8 @@ endif
323331
324332 cd $(CURL_SRC) && $(MAKE)
325333
326- mkdir -p $(CURL_DIR)/$(PLATFORM )
327- mv $(CURL_SRC)/lib/.libs/libcurl.a $(CURL_DIR)/$(PLATFORM )
334+ mkdir -p $(dir $(CURL_LIB) )
335+ mv $(CURL_SRC)/lib/.libs/libcurl.a $(CURL_LIB )
328336 rm -rf $(CURL_DIR)/src
329337
330338.NOTPARALLEL : % .dylib
@@ -388,26 +396,17 @@ xcframework: $(DIST_DIR)/CloudSync.xcframework
388396AAR_ARM64 = packages/android/src/main/jniLibs/arm64-v8a/
389397AAR_ARM = packages/android/src/main/jniLibs/armeabi-v7a/
390398AAR_X86 = packages/android/src/main/jniLibs/x86_64/
391- AAR_USR = $(ANDROID_NDK ) /toolchains/llvm/prebuilt/$(HOST ) -x86_64/sysroot/usr/
392- AAR_CLEAN = rm -rf $(CURL_DIR ) /android $(AAR_USR ) bin/openssl $(AAR_USR ) include/openssl $(AAR_USR ) lib/libssl.a $(AAR_USR ) lib/libcrypto.a $(AAR_USR ) lib/ossl-modules
393399aar :
394400 mkdir -p $(AAR_ARM64 ) $(AAR_ARM ) $(AAR_X86 )
395- $(AAR_CLEAN )
396401 $(MAKE ) clean && $(MAKE ) PLATFORM=android ARCH=arm64-v8a
397402 mv $(DIST_DIR ) /cloudsync.so $(AAR_ARM64 )
398- $(AAR_CLEAN )
399403 $(MAKE ) clean && $(MAKE ) PLATFORM=android ARCH=armeabi-v7a
400404 mv $(DIST_DIR ) /cloudsync.so $(AAR_ARM )
401- $(AAR_CLEAN )
402405 $(MAKE ) clean && $(MAKE ) PLATFORM=android ARCH=x86_64
403406 mv $(DIST_DIR ) /cloudsync.so $(AAR_X86 )
404407 cd packages/android && ./gradlew clean assembleRelease
405408 cp packages/android/build/outputs/aar/android-release.aar $(DIST_DIR ) /cloudsync.aar
406409
407- clean-aar :
408- rm -rf packages/android/build $(AAR_ARM64 ) $(AAR_ARM ) $(AAR_X86 )
409- $(AAR_CLEAN )
410-
411410# Tools
412411version :
413412 @echo $(shell sed -n 's/^#define CLOUDSYNC_VERSION[[:space:]]* "\([^"]* \) " .*/\1/p' src/cloudsync.h)
0 commit comments