@@ -36,7 +36,7 @@ CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR) -I$(SQLITE_DIR) -I$(CU
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
@@ -48,11 +48,22 @@ VPATH = $(SRC_DIR):$(SQLITE_DIR):$(TEST_DIR)
4848BUILD_RELEASE = build/release
4949BUILD_TEST = build/test
5050BUILD_DIRS = $(BUILD_TEST ) $(BUILD_RELEASE )
51+ OPENSSL_DIR = openssl
5152CURL_DIR = curl
5253CURL_SRC = $(CURL_DIR ) /src/curl-$(CURL_VERSION )
5354COV_DIR = coverage
5455CUSTOM_CSS = $(TEST_DIR ) /sqliteai.css
5556
57+ # Android OpenSSL local installation directory
58+ ifeq ($(PLATFORM ) ,android)
59+ OPENSSL_INSTALL_DIR = $(OPENSSL_DIR)/$(PLATFORM)/$(ARCH)
60+ endif
61+
62+ # Android OpenSSL local installation directory
63+ ifeq ($(PLATFORM ) ,android)
64+ OPENSSL_INSTALL_DIR = $(OPENSSL_DIR)/$(PLATFORM)/$(ARCH)
65+ endif
66+
5667SRC_FILES = $(wildcard $(SRC_DIR ) /* .c)
5768TEST_SRC = $(wildcard $(TEST_DIR ) /* .c)
5869TEST_FILES = $(SRC_FILES ) $(TEST_SRC ) $(wildcard $(SQLITE_DIR ) /* .c)
@@ -108,11 +119,13 @@ else ifeq ($(PLATFORM),android)
108119 ANDROID_ABI := android26
109120 endif
110121
111- OPENSSL := $(BIN)/../sysroot/usr/include/openssl
122+ OPENSSL := $(OPENSSL_INSTALL_DIR)/lib/libssl.a
112123 CC = $(BIN)/$(ARCH)-linux-$(ANDROID_ABI)-clang
113- 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
124+ CURL_LIB = $(CURL_DIR)/$(PLATFORM)/$(ARCH)/libcurl.a
125+ 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
114126 TARGET := $(DIST_DIR)/cloudsync.so
115- LDFLAGS += -shared -lssl -lcrypto
127+ CFLAGS += -fPIC -I$(OPENSSL_INSTALL_DIR)/include
128+ LDFLAGS += -shared -fPIC -L$(OPENSSL_INSTALL_DIR)/lib -lssl -lcrypto
116129 STRIP = $(BIN)/llvm-strip --strip-unneeded $@
117130else ifeq ($(PLATFORM),ios)
118131 TARGET := $(DIST_DIR)/cloudsync.dylib
@@ -207,23 +220,23 @@ ifneq ($(COVERAGE),false)
207220 genhtml $(COV_DIR)/coverage.info --output-directory $(COV_DIR)
208221endif
209222
210- OPENSSL_TARBALL = $(CURL_DIR ) /src/$(OPENSSL_VERSION ) .tar.gz
211- OPENSSL_SRC = $(CURL_DIR ) /src/$(OPENSSL_VERSION )
223+ OPENSSL_TARBALL = $(OPENSSL_DIR ) /$(OPENSSL_VERSION ) .tar.gz
212224
213225$(OPENSSL_TARBALL ) :
214- mkdir -p $(CURL_DIR ) /src
226+ mkdir -p $(OPENSSL_DIR )
215227 curl -L -o $(OPENSSL_TARBALL ) https://github.com/openssl/openssl/releases/download/$(OPENSSL_VERSION ) /$(OPENSSL_VERSION ) .tar.gz
216228
217229$(OPENSSL ) : $(OPENSSL_TARBALL )
218- mkdir -p $(CURL_DIR ) /src
219- tar -xzf $(OPENSSL_TARBALL ) -C $(CURL_DIR ) /src
220- cd $(OPENSSL_SRC ) && \
230+ mkdir -p $(OPENSSL_DIR )
231+ tar -xzf $(OPENSSL_TARBALL ) -C $(OPENSSL_DIR )
232+ cd $(OPENSSL_DIR ) / $( OPENSSL_VERSION ) && \
221233 ./Configure android-$(if $(filter aarch64,$(ARCH ) ) ,arm64,$(if $(filter armv7a,$(ARCH ) ) ,arm,$(ARCH ) ) ) \
222- --prefix=$(BIN ) /../sysroot/usr \
234+ --prefix=$(CURDIR ) / $( OPENSSL_INSTALL_DIR ) \
223235 no-shared no-unit-test \
236+ -fPIC \
224237 -D__ANDROID_API__=26 && \
225238 $(MAKE ) && $(MAKE ) install_sw
226- rm -rf $(OPENSSL_SRC )
239+ rm -rf $(OPENSSL_DIR ) / $( OPENSSL_VERSION )
227240
228241ifeq ($(PLATFORM ) ,android)
229242$(CURL_LIB ) : $(OPENSSL )
@@ -308,8 +321,8 @@ endif
308321
309322 cd $(CURL_SRC) && $(MAKE)
310323
311- mkdir -p $(CURL_DIR)/$(PLATFORM )
312- mv $(CURL_SRC)/lib/.libs/libcurl.a $(CURL_DIR)/$(PLATFORM )
324+ mkdir -p $(dir $(CURL_LIB) )
325+ mv $(CURL_SRC)/lib/.libs/libcurl.a $(CURL_LIB )
313326 rm -rf $(CURL_DIR)/src
314327
315328.NOTPARALLEL : % .dylib
@@ -373,26 +386,17 @@ xcframework: $(DIST_DIR)/CloudSync.xcframework
373386AAR_ARM64 = packages/android/src/main/jniLibs/arm64-v8a/
374387AAR_ARM = packages/android/src/main/jniLibs/armeabi-v7a/
375388AAR_X86 = packages/android/src/main/jniLibs/x86_64/
376- AAR_USR = $(ANDROID_NDK ) /toolchains/llvm/prebuilt/$(HOST ) -x86_64/sysroot/usr/
377- 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
378389aar :
379390 mkdir -p $(AAR_ARM64 ) $(AAR_ARM ) $(AAR_X86 )
380- $(AAR_CLEAN )
381391 $(MAKE ) clean && $(MAKE ) PLATFORM=android ARCH=arm64-v8a
382392 mv $(DIST_DIR ) /cloudsync.so $(AAR_ARM64 )
383- $(AAR_CLEAN )
384393 $(MAKE ) clean && $(MAKE ) PLATFORM=android ARCH=armeabi-v7a
385394 mv $(DIST_DIR ) /cloudsync.so $(AAR_ARM )
386- $(AAR_CLEAN )
387395 $(MAKE ) clean && $(MAKE ) PLATFORM=android ARCH=x86_64
388396 mv $(DIST_DIR ) /cloudsync.so $(AAR_X86 )
389397 cd packages/android && ./gradlew clean assembleRelease
390398 cp packages/android/build/outputs/aar/android-release.aar $(DIST_DIR ) /cloudsync.aar
391399
392- clean-aar :
393- rm -rf packages/android/build $(AAR_ARM64 ) $(AAR_ARM ) $(AAR_X86 )
394- $(AAR_CLEAN )
395-
396400# Tools
397401version :
398402 @echo $(shell sed -n 's/^#define CLOUDSYNC_VERSION[[:space:]]* "\([^"]* \) " .*/\1/p' src/cloudsync.h)
0 commit comments