Skip to content

Commit 81b8ba6

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

File tree

2 files changed

+28
-23
lines changed

2 files changed

+28
-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: 27 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$(SQLITE_DIR) -I$(CU
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
@@ -48,11 +48,22 @@ VPATH = $(SRC_DIR):$(SQLITE_DIR):$(TEST_DIR)
4848
BUILD_RELEASE = build/release
4949
BUILD_TEST = build/test
5050
BUILD_DIRS = $(BUILD_TEST) $(BUILD_RELEASE)
51+
OPENSSL_DIR = openssl
5152
CURL_DIR = curl
5253
CURL_SRC = $(CURL_DIR)/src/curl-$(CURL_VERSION)
5354
COV_DIR = coverage
5455
CUSTOM_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+
5667
SRC_FILES = $(wildcard $(SRC_DIR)/*.c)
5768
TEST_SRC = $(wildcard $(TEST_DIR)/*.c)
5869
TEST_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 $@
117130
else 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)
208221
endif
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

228241
ifeq ($(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
373386
AAR_ARM64 = packages/android/src/main/jniLibs/arm64-v8a/
374387
AAR_ARM = packages/android/src/main/jniLibs/armeabi-v7a/
375388
AAR_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
378389
aar:
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
397401
version:
398402
@echo $(shell sed -n 's/^#define CLOUDSYNC_VERSION[[:space:]]*"\([^"]*\)".*/\1/p' src/cloudsync.h)

0 commit comments

Comments
 (0)