-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.android
104 lines (84 loc) · 2.86 KB
/
Makefile.android
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#
# Makefile
#
# Copyright (C) 2014 Creytiv.com
#
#!/bin/sh
TOBUILD := bin/sysv/$(TARGET)/crapchat
# Paths to your Android SDK/NDK
# currently it compiles only with android-ndk-r15c
# NDK_PATH := /opt/android-ndk
NDK_PATH := $(shell which ndk-build)
NDK_PATH := $(shell dirname $(NDK_PATH))
NDK_PATH := $(shell readlink -f $(NDK_PATH))
SDK_PATH := /opt/android-sdk
PLATFORM := android-14
# Path to install binaries on your Android-device
TARGET_PATH=/data/local/tmp
OS := $(shell uname -s | tr "[A-Z]" "[a-z]")
HOST_OS=linux-x86
ifeq ($(OS),linux)
HOST_OS=linux-$(shell uname -m)
endif
ifeq ($(OS),darwin)
HOST_OS=darwin-$(shell uname -m)
endif
ifeq ($(OS),windows)
HOST_OS=windows-$(shell uname -m)
endif
GCCPREFIX := arm-linux-androideabi
GCCVER := 4.9
ARCH := armeabi-v7a
# Tools
SYSROOT := $(NDK_PATH)/platforms/$(PLATFORM)/arch-arm
PREBUILT := $(NDK_PATH)/toolchains/$(GCCPREFIX)-$(GCCVER)/prebuilt
BIN := $(PREBUILT)/$(HOST_OS)/bin
CC := $(BIN)/$(GCCPREFIX)-gcc
CXX := $(BIN)/$(GCCPREFIX)-g++
RANLIB := $(BIN)/$(GCCPREFIX)-ranlib
AR := $(BIN)/$(GCCPREFIX)-ar
ADB := $(SDK_PATH)/platform-tools/adb
PWD := $(shell pwd)
LD := $(BIN)/$(GCCPREFIX)-ld
CPP := $(BIN)/$(GCCPREFIX)-cpp
CXXCPP := $(BIN)/$(GCCPREFIX)-cpp -x c++
NM := $(BIN)/$(GCCPREFIX)-nm
AS := $(BIN)/$(GCCPREFIX)-as
STRIP := $(BIN)/$(GCCPREFIX)-strip
UNRESOLVED := -Wl,--no-undefined
SHARED := -Wl,--gc-sections -Wl,-z,nocopyreloc
STL_SHARED := $(NDK_PATH)/sources/cxx-stl/gnu-libstdc++/$(GCCVER)/libs/$(ARCH)/libgnustl_shared.so
# Compiler and Linker Flags
#
# NOTE: use -isystem to avoid warnings in system header files
CFLAGS := \
-isystem $(SYSROOT)/usr/include/ \
$(HDRS) \
-march=armv7-a \
-fPIE \
-DANDROID \
-D_LINUX_IPC_H \
-Wl,--fix-cortex-a8 \
$(DBG_FLAGS)
CXXFLAGS := \
$(CFLAGS) \
-isystem $(NDK)/sources/cxx-stl/gnu-libstdc++/$(GCCVER)/include \
-isystem $(NDK)/sources/cxx-stl/gnu-libstdc++/$(GCCVER)/libs/$(ARCH)/include \
LDFLAGS := \
--sysroot=$(NDK_PATH)/platforms/$(PLATFORM)/arch-arm \
-L$(NDK_PATH)/platforms/$(PLATFORM)/arch-arm/usr/lib \
-no-canonical-prefixes $(UNRESOLVED) -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \
-L$(SYSROOT)/usr/lib/ \
-L$(NDK_PATH)/sources/cxx-stl/gnu-libstdc++/$(GCCVER)/libs/$(ARCH) \
-lc -lm -ldl -lz \
-lgnustl_shared \
-lsupc++ \
-lstdc++ \
-fPIE -pie
LDFLAGS += \
--sysroot=$(NDK_PATH)/platforms/$(PLATFORM)/arch-arm
all: $(TOBUILD)
install: all
@$(ADB) push --sync $(TOBUILD) $(STL_SHARED) $(TARGET_PATH)
run: install
@$(ADB) shell "cd $(TARGET_PATH) && LD_LIBRARY_PATH=. ./crapchat $(RUN_ARGS)"