108 linhas
3.5 KiB
Makefile
108 linhas
3.5 KiB
Makefile
include ../common.mk
|
|
|
|
DBG ?= 0
|
|
SRCDIR = src
|
|
OBJDIR = obj
|
|
BORINGSSL_DIR = ../bssl/src
|
|
MBEDTLS_DIR = ../mbedtls/src
|
|
|
|
## Debug/Release configuration
|
|
ifeq ($(DBG),1)
|
|
DEBUG = -DDEBUG -g -O0
|
|
RELEASE =
|
|
STRIP = true
|
|
else
|
|
DEBUG =
|
|
RELEASE = -Os -fdata-sections -ffunction-sections
|
|
STRIP = $(NDK)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/strip
|
|
endif
|
|
|
|
## NDK configuration.
|
|
NDK = $(ANDROID_NDK)
|
|
NDK_TARGETARCH = aarch64-linux-android
|
|
NDK_TARGETSHORTARCH = arm64
|
|
NDK_TOOLVER = 4.9
|
|
NDK_HOSTARCH = linux-x86_64
|
|
NDK_TOOLS = $(NDK)/toolchains/llvm/prebuilt/$(NDK_HOSTARCH)/bin
|
|
NDK_SYSROOT = $(NDK)/sysroot
|
|
NDK_TOOL = $(NDK_TOOLS)/clang
|
|
NDK_LIBS = $(NDK)/toolchains/$(NDK_TARGETARCH)-$(NDK_TOOLVER)/prebuilt/linux-x86_64/lib/gcc/$(NDK_TARGETARCH)/4.9.x
|
|
NDK_INCLUDES = -I$(NDK)/sysroot/usr/include \
|
|
-I$(NDK)/sysroot/usr/include/$(NDK_TARGETARCH)
|
|
NDK_SYSROOT = $(NDK)/platforms/android-$(NDK_TARGETVER)/arch-$(NDK_TARGETSHORTARCH)
|
|
|
|
OPT = $(DEBUG) \
|
|
$(RELEASE) \
|
|
-std=c99 \
|
|
-fPIE \
|
|
-Wall \
|
|
-target $(NDK_TARGETARCH)
|
|
CFLAGS = $(OPT) \
|
|
$(NDK_INCLUDES)
|
|
CFLAGS_BORINGSSL = $(CFLAGS) \
|
|
-I$(BORINGSSL_DIR) -I$(BORINGSSL_DIR)/include
|
|
CFLAGS_MBEDTLS = $(CFLAGS) \
|
|
-I$(MBEDTLS_DIR)/include
|
|
LDFLAGS = $(OPT) \
|
|
$(DEBUG) $(RELEASE) \
|
|
-pie \
|
|
--sysroot=$(NDK_SYSROOT) \
|
|
-B $(ANDROID_NDK)/toolchains/$(NDK_TARGETARCH)-$(NDK_TOOLVER)/prebuilt/linux-x86_64/$(NDK_TARGETARCH)/bin \
|
|
-L$(NDK_LIBS) \
|
|
-Wl,--gc-sections
|
|
|
|
LDFLAGS_BORINGSSL = $(LDFLAGS) \
|
|
-L$(BORINGSSL_DIR)/build/crypto -L$(BORINGSSL_DIR)/build/ssl \
|
|
-lssl -lcrypto
|
|
|
|
LDFLAGS_MBEDTLS = $(LDFLAGS) \
|
|
-L$(MBEDTLS_DIR)/library -lmbedx509 -lmbedtls -lmbedcrypto
|
|
|
|
.PHONY: print_boring_ld print_mbed_ld
|
|
|
|
all: init b_client m_client server
|
|
|
|
init:
|
|
mkdir -p $(OBJDIR)
|
|
# Create 1MB file with random data
|
|
dd if=/dev/urandom of=etc/random_data bs=1024 count=1024
|
|
|
|
clean:
|
|
rm -rf $(OBJDIR)
|
|
rm -rf b_client
|
|
rm -rf m_client
|
|
rm -rf server
|
|
|
|
b_client: common
|
|
$(NDK_TOOL) -c $(SRCDIR)/b_client.c -o $(OBJDIR)/b_client.o $(CFLAGS_BORINGSSL)
|
|
$(NDK_TOOL) -o b_client $(OBJDIR)/b_client.o $(OBJDIR)/common.o $(OBJDIR)/common_boring.o $(LDFLAGS_BORINGSSL)
|
|
$(STRIP) -s b_client
|
|
|
|
m_client: common
|
|
$(NDK_TOOL) -c $(SRCDIR)/m_client.c -o $(OBJDIR)/m_client.o $(CFLAGS_MBEDTLS)
|
|
$(NDK_TOOL) -o m_client $(OBJDIR)/m_client.o $(OBJDIR)/common.o $(LDFLAGS_MBEDTLS)
|
|
$(STRIP) -s m_client
|
|
|
|
server: common
|
|
$(NDK_TOOL) -c $(SRCDIR)/server.c -o $(OBJDIR)/server.o $(CFLAGS_BORINGSSL)
|
|
$(NDK_TOOL) -o server $(OBJDIR)/server.o $(OBJDIR)/common.o $(OBJDIR)/common_boring.o $(LDFLAGS_BORINGSSL)
|
|
$(STRIP) -s server
|
|
|
|
common:
|
|
$(NDK_TOOL) -c $(SRCDIR)/common.c -o $(OBJDIR)/common.o $(CFLAGS)
|
|
$(NDK_TOOL) -c $(SRCDIR)/common_boring.c -o $(OBJDIR)/common_boring.o $(CFLAGS_BORINGSSL)
|
|
|
|
adb-prepare:
|
|
adb root
|
|
adb remount
|
|
adb shell rm -rf /data/app/test_space/*
|
|
adb shell mkdir -p /data/app/test_space/etc
|
|
# Need to reset date to 10th of April this year, otherwise, cert verification fails
|
|
adb shell "toybox date 041910002018"
|
|
|
|
push: adb-prepare
|
|
adb push b_client /data/app/test_space/
|
|
adb push m_client /data/app/test_space/
|
|
adb push server /data/app/test_space/
|
|
adb push etc/* /data/app/test_space/etc/
|