I have a C project which contains makefiles to generate binary for linux. i want to build the same source for android(arm64-v8a). Being a noob in NDK development, Can someone please guide step by step or any reference for the same?
I have taken the following reference too for preserving the same compiler and linker flags. ref: Convert Makefile into CMakeLists, where to start
Sample makefile:
TOOLS = /usr
CC = $(TOOLS)/bin/gcc
OBJOUT = -o
COBJT = -c
CINCD = -I
CDEFN = -D
OEXT = .o
AS = $(TOOLS)/bin/as
LD = $(TOOLS)/bin/gcc
EXEOUT = -o
EXE = .exe
AR = $(TOOLS)/bin/ar
LIBTYPE = .a
LIBOUT =
INCLUDE = $(TOOLS)/include
COMPILER_FLAGS = -g -O2 $(CDEFN)NDEBUG $(CDEFN)HOST_EXAMPLE_CODE=1 -std=gnu99
COMPILER_NOOPT = -O0 -g $(CDEFN)NDEBUG $(CDEFN)HOST_EXAMPLE_CODE=1
COMPILER_DEBUG = -O0 -g $(CDEFN)HOST_EXAMPLE_CODE=1 -DBMDEBUG=1 -DTHDEBUG=1
PACK_OPTS =
#Variable: CFLAGS
# Options for the compiler.
ifdef DDB
CFLAGS = $(COMPILER_DEBUG) $(COMPILER_DEFS) $(PLATFORM_DEFS) $(PACK_OPTS)
else
ifdef DDN
CFLAGS = $(COMPILER_NOOPT) $(COMPILER_DEFS) $(PLATFORM_DEFS) $(PACK_OPTS)
else
CFLAGS = $(COMPILER_FLAGS) $(COMPILER_DEFS) $(PLATFORM_DEFS) $(PACK_OPTS)
endif
endif
ifdef DDT
CFLAGS += -DTHDEBUG=1
endif
WARNING_OPTIONS = \
-Wall -Wno-long-long -fno-asm -fsigned-char
COMPILER_INCLUDES =
COMPILER_DEFINES += HAVE_SYS_STAT_H=1 USE_NATIVE_PTHREAD=1 GCC_INLINE_MACRO=1 NO_RESTRICT_QUALIFIER=1
COMPILER_DEFINES += EE_SIZEOF_LONG=8 EE_SIZEOF_PTR=8 EE_PTR_ALIGN=8
ifeq ($(DO_MICA),yes)
COMPILER_DEFINES += DO_MICA=1
endif
COMPILER_DEFS = $(addprefix $(CDEFN),$(COMPILER_DEFINES))
PLATFORM_DEFS = $(addprefix $(CDEFN),$(PLATFORM_DEFINES))
# LINKER SECTION
# -lm is optional. Some linkers (linux gcc) do not include math library by default.
LINKER_FLAGS +=
ifeq ($(PLATFORM),cygwin)
LINKER_FLAGS += -Wl,--stack,33554432
endif
LINKER_INCLUDES =
ifneq ($(PLATFORM),cygwin)
LINKER_LAST += -lm -lrt -lpthread
endif
# LIBRARIAN SECTION
LIBRARY_FLAGS = scr
# SIZE SECTION
SIZE = $(TOOLS)/bin/size
SIZE_FLAGS =
# CONTROL SECTION
ifeq ($(DO_PROFILE),yes)
# Make PG overrides
DIR_BUILD = $(DIR_TARGET)/obj-pg
DIR_IMG = $(DIR_TARGET)/bin-pg
DIR_LOG = $(DIR_TARGET)/logs-pg
COMPILER_FLAGS += -pg
LINKER_FLAGS += -pg
else
ifeq ($(DO_VALGRIND),yes)
DIR_LOG = $(DIR_TARGET)/logs-vg
COMPILER_FLAGS += -g
endif
endif
ALL_TARGETS = $(EXTRA_TARGETS_S) mkdir targets run results $(EXTRA_TARGETS_F)
#PGO options
ifeq ($(TRAINING),yes)
COMPILER_FLAGS += -DTRAINING=1 -fprofile-generate
LINKER_FLAGS += -fprofile-generate
endif
ifeq ($(TRAINING_UNIQUE),yes)
COMPILER_FLAGS += -DTRAINING=1 -DTRAINING_UNIQUE=1 -fprofile-generate
LINKER_FLAGS += -fprofile-generate
endif
ifeq ($(USEPGO),yes)
COMPILER_FLAGS += -fprofile-use
LINKER_FLAGS += -fprofile-use
endif
ARFLAGS = $(LIBRARY_FLAGS)
LIBRARY = $(AR) $(ARFLAGS)
LIBRARY_LAST =