Building Harbour for Android from OSX

Post Reply
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Building Harbour for Android from OSX

Post by Antonio Linares »

go_android.sh

Code: Select all

export HB_PLATFORM=android
export HB_COMPILER=clang
export HB_CCPREFIX=/Users/anto/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/
export HB_INSTALL_PREFIX=/Users/anto/harbour
export HB_HOST_BIN=/Users/anto/harbour/bin/darwin/clang

export QT_PATH=/Users/anto/Qt/5.12.1/android_armv7
export HB_WITH_QT=$QT_PATH/include
export HB_QTPATH=$QT_PATH/bin

export HB_USER_CFLAGS="-D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain /Users/anto/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/arm-linux-androideabi/bin/ar$"
export HB_USER_DFLAGS=
export HB_USER_LDFLAGS=

make clean
make

# /Users/anto/harbour/bin/hbmk2 qtcontribs.hbp
clang.mk

Code: Select all

ifeq ($(HB_BUILD_MODE),cpp)
   ifneq ($(findstring clang$(subst x, ,x)version$(subst x, ,x)1,$(shell clang --version)),)
      HB_BUILD_MODE := c
   endif
endif

ifeq ($(HB_BUILD_MODE),cpp)
   HB_CMP := clang++
else
   HB_CMP := /bin/armv7a-linux-androideabi28-clang
endif

OBJ_EXT := .o
LIB_PREF := lib
LIB_EXT := .a

HB_DYN_COPT := -DHB_DYNLIB -fPIC

CC := $(HB_CCACHE) $(HB_CCPREFIX)$(HB_CMP)$(HB_CCSUFFIX)
ifneq ($(filter --analyze, $(HB_USER_CFLAGS)),)
   CC_IN :=
else
   CC_IN := -c
endif
CC_OUT := -o

CFLAGS += -I. -I$(HB_HOST_INC)

ifneq ($(HB_BUILD_WARN),no)
   CFLAGS += -W -Wall
else
   CFLAGS += -Wmissing-braces -Wreturn-type -Wformat
   ifneq ($(HB_BUILD_MODE),cpp)
      CFLAGS += -Wimplicit-int -Wimplicit-function-declaration
   endif
endif

ifneq ($(HB_BUILD_OPTIM),no)
   CFLAGS += -O3
endif

ifeq ($(HB_BUILD_DEBUG),yes)
   CFLAGS += -g
endif

LD := $(CC)
LD_OUT := -o

LIBPATHS := $(foreach dir,$(LIB_DIR) $(SYSLIBPATHS),-L$(dir))
LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))

LDFLAGS += $(LIBPATHS)

AR := $(HB_CCPREFIX)/arm-linux-androideabi/bin/ar
AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) )

DY := $(CC)
DFLAGS += -shared $(LIBPATHS)
DY_OUT := -o$(subst x,x, )
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))

DY_RULE = $(DY) $(DFLAGS) -Wl,-soname,$(DYN_NAME_CPT) $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ $^ $(DLIBS) $(DYSTRIP) && $(LN) $(@F) $(DYN_FILE_NVR) && $(LN) $(@F) $(DYN_FILE_CPT)

include $(TOP)$(ROOT)config/rules.mk
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Building Harbour for Android from OSX

Post by Antonio Linares »

Building qtcontribs for Android from OSX:

https://groups.google.com/forum/#!topic ... pIc-AaHzEA

As QT Creator changes as Android Studio, etc. change too, the best way to find the right flags is to create a project with QT Creator and review the used flags in the generated Makefile

Also I have found that building Harbour on Android itself (using termux) is simpler (can't build qtcontribs there, thats the disadvantage)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Building Harbour for Android from OSX

Post by Antonio Linares »

There were some errors in my previous post. This one is ok:

https://groups.google.com/d/msg/qtcontr ... oyHzJ5CAAJ

You may download the Harbour and qtcontribs libraries for Android already built from here:
https://github.com/FiveTechSoft/harbour ... 190308.zip
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply