0

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 =


Sam
  • 3
  • 3

0 Answers0