Skip to content

Commit ddcb824

Browse files
committed
fix(android): update OpenSSL install path to a local one, instead of a system wide path
1 parent 347c73d commit ddcb824

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dist/
55
*.a
66
*.sqlite
77
/curl/src
8+
openssl/
89

910
# Test artifacts
1011
/coverage

Makefile

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR) -I$(SRC_DIR)/sqlite -I
3636
T_CFLAGS = $(CFLAGS) -DSQLITE_CORE -DCLOUDSYNC_UNITTEST -DCLOUDSYNC_OMIT_NETWORK -DCLOUDSYNC_OMIT_PRINT_RESULT
3737
COVERAGE = false
3838
ifndef NATIVE_NETWORK
39-
LDFLAGS = -L./$(CURL_DIR)/$(PLATFORM) -lcurl
39+
LDFLAGS = -L./$(dir $(CURL_LIB)) -lcurl
4040
endif
4141

4242
# Directories
@@ -50,11 +50,17 @@ VPATH = $(SRC_DIR):$(SQLITE_IMPL_DIR):$(POSTGRES_IMPL_DIR):$(SQLITE_DIR):$(TEST_
5050
BUILD_RELEASE = build/release
5151
BUILD_TEST = build/test
5252
BUILD_DIRS = $(BUILD_TEST) $(BUILD_RELEASE)
53+
OPENSSL_DIR = openssl
5354
CURL_DIR = curl
5455
CURL_SRC = $(CURL_DIR)/src/curl-$(CURL_VERSION)
5556
COV_DIR = coverage
5657
CUSTOM_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
5965
CORE_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 $@
125133
else ifeq ($(PLATFORM),ios)
126134
TARGET := $(DIST_DIR)/cloudsync.dylib
@@ -222,23 +230,23 @@ endif
222230
unittest: $(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

243251
ifeq ($(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
388396
AAR_ARM64 = packages/android/src/main/jniLibs/arm64-v8a/
389397
AAR_ARM = packages/android/src/main/jniLibs/armeabi-v7a/
390398
AAR_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
393399
aar:
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
412411
version:
413412
@echo $(shell sed -n 's/^#define CLOUDSYNC_VERSION[[:space:]]*"\([^"]*\)".*/\1/p' src/cloudsync.h)

0 commit comments

Comments
 (0)