try to compile directly for android without android build system

This commit is contained in:
Edouard Dupin 2012-08-08 18:15:54 +02:00
parent c20f2f4f84
commit d97b385a78
6 changed files with 158 additions and 128 deletions

View File

@ -5,62 +5,78 @@ JAVA_FOLDER=src/com/$(PROJECT_VENDOR)/$(PROJECT_NAME)
EWOL_JAVA_FOLDER=src/org/ewol EWOL_JAVA_FOLDER=src/org/ewol
all: USER_PACKAGES += $(EWOL_FOLDER)/Sources/
@echo "------------------------------------------------------------------------" TARGET_OS = Android
@echo ' Project name : $(PROJECT_NAME)' TARGET_ARCH = ARM
@echo ' Project Vendor : $(PROJECT_VENDOR)' CROSS = $(PROJECT_NDK)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
@echo ' Build date : $(BUILD_TIME) '
@echo ' Tag : $(PROJECT_VERSION_TAG) '
@echo "------------------------------------------------------------------------"
@rm -rf bin
@echo " (sh) Clear previous sources " $(info ------------------------------------------------------------------------)
@rm -rf src jni/ewolAndroidAbstraction.cpp $(info Project name : $(PROJECT_NAME))
@echo " (sh) Create folder : $(JAVA_FOLDER)/ & $(EWOL_JAVA_FOLDER)" $(info Project Vendor : $(PROJECT_VENDOR))
@mkdir -p $(JAVA_FOLDER)/ $(info Build date : $(BUILD_TIME) )
@mkdir -p $(EWOL_JAVA_FOLDER)/ $(info Tag : $(PROJECT_VERSION_TAG) )
$(info ------------------------------------------------------------------------)
@echo " (sh) copy the java Files & Replace __XXX__ element with project properties" $(info (sh) Create folder : $(JAVA_FOLDER)/ & $(EWOL_JAVA_FOLDER))
@cp $(EWOL_FOLDER)/Java/PROJECT_NAME.java $(JAVA_FOLDER)/$(PROJECT_NAME).java $(shell mkdir -p $(JAVA_FOLDER)/)
@sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java $(shell mkdir -p $(EWOL_JAVA_FOLDER)/)
@sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
@sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java $(info (sh) copy the java Files & Replace __XXX__ element with project properties)
tmp=$(shell cp -v $(EWOL_FOLDER)/Java/PROJECT_NAME.java $(JAVA_FOLDER)/$(PROJECT_NAME).java)
tmp+=$(shell sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java)
tmp+=$(shell sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java)
tmp+=$(shell sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java)
# copy the Ewol java files : # copy the Ewol java files :
@cp $(EWOL_FOLDER)/Java/interfaceJNI.java $(EWOL_JAVA_FOLDER)/ tmp+=$(shell cp $(EWOL_FOLDER)/Java/interfaceJNI.java $(EWOL_JAVA_FOLDER)/)
@cp $(EWOL_FOLDER)/Java/interfaceOpenGL.java $(EWOL_JAVA_FOLDER)/ tmp+=$(shell cp $(EWOL_FOLDER)/Java/interfaceOpenGL.java $(EWOL_JAVA_FOLDER)/)
@cp $(EWOL_FOLDER)/Java/interfaceSurfaceView.java $(EWOL_JAVA_FOLDER)/ tmp+=$(shell cp $(EWOL_FOLDER)/Java/interfaceSurfaceView.java $(EWOL_JAVA_FOLDER)/)
@cp $(EWOL_FOLDER)/Java/interfaceAudio.java $(EWOL_JAVA_FOLDER)/ tmp+=$(shell cp $(EWOL_FOLDER)/Java/interfaceAudio.java $(EWOL_JAVA_FOLDER)/)
$(info $(tmp))
@echo " (sh) copy the cpp for jni File : $(EWOL_FOLDER)/SourcesJava/ewolAndroidAbstraction.cpp" $(info (sh) copy the cpp for jni File : $(EWOL_FOLDER)/Java/ewolAndroidAbstraction.cpp)
@cp $(EWOL_FOLDER)/Java/ewolAndroidAbstraction.cpp jni/ tmp=$(shell cp -v $(EWOL_FOLDER)/Java/ewolAndroidAbstraction.cpp jni/)
@sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" jni/ewolAndroidAbstraction.cpp tmp+=$(shell sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" jni/ewolAndroidAbstraction.cpp)
@sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" jni/ewolAndroidAbstraction.cpp tmp+=$(shell sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" jni/ewolAndroidAbstraction.cpp)
@sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" jni/ewolAndroidAbstraction.cpp tmp+=$(shell sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" jni/ewolAndroidAbstraction.cpp)
$(info $(tmp))
@echo " (ndk-build) build native code" TARGET_GLOBAL_C_INCLUDES=-I/home/edupin/dev/perso/android/ndk/sources/cxx-stl/stlport/stlport
cd $(PROJECT_NDK) ; NDK_PROJECT_PATH=$(PROJECT_PATH) NDK_MODULE_PATH=$(PROJECT_MODULE) ./ndk-build TARGET_GLOBAL_C_INCLUDES+=-I/home/edupin/dev/perso/android/ndk/sources/cxx-stl//gabi++/include
@echo " (ant) build java code" TARGET_GLOBAL_C_INCLUDES+=-I/home/edupin/dev/perso/android/ndk/platforms/android-14/arch-arm/usr/include
PATH=$(PROJECT_SDK)/tools/:$(PROJECT_SDK)/platform-tools/:$(PATH) ant -Dsdk.dir=$(PROJECT_SDK) debug
@echo " (sh) Clear previous sources "
@rm -rf src jni/ewolAndroidAbstraction.cpp
install: all
@echo "------------------------------------------------------------------------"
@echo ' INSTALL : ./bin/$(PROJECT_NAME)-debug.apk'
@echo "------------------------------------------------------------------------"
@# $(PROJECT_SDK)/platform-tools/adb kill-server
@# install application
sudo $(PROJECT_SDK)/platform-tools/adb install -r ./bin/$(PROJECT_NAME)-debug.apk
clean: $(info ------------------------------------------------------------------------)
@echo "------------------------------------------------------------------------" include $(EWOL_FOLDER)/Build/coreLinux/main.mk
@echo ' CLEANING : bin libs gen obj'
@echo "------------------------------------------------------------------------"
cd $(PROJECT_NDK) ; NDK_PROJECT_PATH=$(PROJECT_PATH) NDK_MODULE_PATH=$(PROJECT_MODULE) ./ndk-build clean
localclean: $(info " (ant) build java code")
@echo "------------------------------------------------------------------------" PATH:=$(PROJECT_SDK)/tools/:$(PROJECT_SDK)/platform-tools/:$(PATH) ant -Dsdk.dir=$(PROJECT_SDK) debug)
@echo ' Remove : bin libs gen obj' $(info " (sh) Clear previous sources ")
@echo "------------------------------------------------------------------------" #$(shell rm -rf src jni/ewolAndroidAbstraction.cpp)
rm -rf bin libs gen obj
TARGET_GLOBAL_LDLIBS_SHARED = -shared --sysroot=/home/edupin/dev/perso/android/ndk/platforms/android-14/arch-arm \
/home/edupin/dev/perso/copyDirectServeur/yourDevFolder/edn/obj/local/armeabi/libstdc++.a \
/home/edupin/dev/perso/android/ndk/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libsupc++.a \
-lstdc++
#install: all
# @echo "------------------------------------------------------------------------"
# @echo ' INSTALL : ./bin/$(PROJECT_NAME)-debug.apk'
# @echo "------------------------------------------------------------------------"
# @# $(PROJECT_SDK)/platform-tools/adb kill-server
# @# install application
# sudo $(PROJECT_SDK)/platform-tools/adb install -r ./bin/$(PROJECT_NAME)-debug.apk
#
#clean:
# @echo "------------------------------------------------------------------------"
# @echo ' CLEANING : bin libs gen obj'
# @echo "------------------------------------------------------------------------"
# cd $(PROJECT_NDK) ; NDK_PROJECT_PATH=$(PROJECT_PATH) NDK_MODULE_PATH=$(PROJECT_MODULE) ./ndk-build clean
#
#localclean:
# @echo "------------------------------------------------------------------------"
# @echo ' Remove : bin libs gen obj'
# @echo "------------------------------------------------------------------------"
# rm -rf bin libs gen obj

View File

@ -274,7 +274,7 @@ __modules-get-closure = \
$(eval __closure_wq := $(__closure_deps)) \ $(eval __closure_wq := $(__closure_deps)) \
$(eval __closure_field := $(strip $2)) \ $(eval __closure_field := $(strip $2)) \
$(call __modules-closure)) \ $(call __modules-closure)) \
$(__closure_deps) $(__closure_deps) \
# Used internally by modules-get-all-dependencies. Note the tricky use of # Used internally by modules-get-all-dependencies. Note the tricky use of
# conditional recursion to work around the fact that the GNU Make language does # conditional recursion to work around the fact that the GNU Make language does
@ -296,10 +296,10 @@ module-get-build-dir = \
$(TARGET_OUT_BUILD)/$1 $(TARGET_OUT_BUILD)/$1
module-get-build-filename = \ module-get-build-filename = \
$(TARGET_OUT_BUILD)/$1/$(__modules.$1.MODULE_FILENAME) $(if $(__modules.$1.MODULE_FILENAME), $(TARGET_OUT_BUILD)/$1/$(__modules.$1.MODULE_FILENAME) )
module-get-staging-filename = \ module-get-staging-filename = \
$(TARGET_OUT_STAGING)/$(__modules.$1.DESTDIR)/$(__modules.$1.MODULE_FILENAME) $(if $(__modules.$1.MODULE_FILENAME), $(TARGET_OUT_STAGING)/$(__modules.$1.DESTDIR)/$(__modules.$1.MODULE_FILENAME) )
############################################################################### ###############################################################################
## Generate autoconf.h file from config file. ## Generate autoconf.h file from config file.
@ -357,7 +357,7 @@ $(Q)$(CCACHE) $(GXX) \
$(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \ $(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \
$(TARGET_GLOBAL_CFLAGS) $(TARGET_GLOBAL_CPPFLAGS) $(GXX_FLAGS_WARNINGS) \ $(TARGET_GLOBAL_CFLAGS) $(TARGET_GLOBAL_CPPFLAGS) $(GXX_FLAGS_WARNINGS) \
$(PRIVATE_CFLAGS) $(PRIVATE_CPPFLAGS) \ $(PRIVATE_CFLAGS) $(PRIVATE_CPPFLAGS) \
-c -MMD -MP -o $@ \ -c -MMD -MP -g -o $@ \
$(call path-from-top,$<) $(call path-from-top,$<)
endef endef
@ -374,7 +374,7 @@ $(Q)$(CCACHE) $(GCC) \
$(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \ $(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \
$(TARGET_GLOBAL_CFLAGS) $(GCC_FLAGS_WARNINGS) \ $(TARGET_GLOBAL_CFLAGS) $(GCC_FLAGS_WARNINGS) \
$(PRIVATE_CFLAGS) \ $(PRIVATE_CFLAGS) \
-c -MMD -MP -o $@ \ -c -MMD -MP -g -o $@ \
$(call path-from-top,$<) $(call path-from-top,$<)
endef endef
@ -391,7 +391,7 @@ $(Q)$(CCACHE) $(GCC) \
$(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \ $(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \
$(TARGET_GLOBAL_CFLAGS) $(GCC_FLAGS_WARNINGS) \ $(TARGET_GLOBAL_CFLAGS) $(GCC_FLAGS_WARNINGS) \
$(PRIVATE_CFLAGS) \ $(PRIVATE_CFLAGS) \
-c -MMD -MP -o $@ \ -c -MMD -MP -g -o $@ \
$(call path-from-top,$<) $(call path-from-top,$<)
endef endef
@ -417,7 +417,10 @@ define transform-o-to-shared-lib
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
@echo "SharedLib: $(PRIVATE_MODULE) ==> $(call path-from-top,$@)" @echo "SharedLib: $(PRIVATE_MODULE) ==> $(call path-from-top,$@)"
$(call check-pwd-is-top-dir) $(call check-pwd-is-top-dir)
$(Q)$(GXX) \ @#$(info PRIVATE_ALL_SHARED_LIBRARIES = $(PRIVATE_ALL_SHARED_LIBRARIES))
@#$(info PRIVATE_ALL_STATIC_LIBRARIES = $(PRIVATE_ALL_STATIC_LIBRARIES))
$(Q)
$(GXX) \
$(TARGET_GLOBAL_LDFLAGS_SHARED) \ $(TARGET_GLOBAL_LDFLAGS_SHARED) \
-Wl,-Map -Wl,$(basename $@).map \ -Wl,-Map -Wl,$(basename $@).map \
-shared \ -shared \

View File

@ -27,6 +27,13 @@ ifeq ("$(V)","0")
Q := @ Q := @
endif endif
# Tools for host
HOST_GCC ?= gcc
HOST_GXX ?= g++
HOST_AR ?= ar
HOST_LD ?= ld
HOST_STRIP ?= strip
# Tools for target # Tools for target
ifneq ("$(CLANG)","1") ifneq ("$(CLANG)","1")
GCC ?= $(CROSS)gcc GCC ?= $(CROSS)gcc
@ -113,8 +120,6 @@ TARGET_OUT_FINAL ?= $(shell pwd)/out_$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/bin
# Makefile with the list of all makefiles available and include them # Makefile with the list of all makefiles available and include them
SCAN_TARGET := scan SCAN_TARGET := scan
#TODO : change this in function of the platform ...
USER_MAKEFILE_NAME := Linux.mk
#display the properties of the currend building folder ... #display the properties of the currend building folder ...
ifeq ("$(V)","1") ifeq ("$(V)","1")
@ -122,10 +127,11 @@ ifeq ("$(V)","1")
$(info pwd="$(shell pwd)") $(info pwd="$(shell pwd)")
$(info TOP_DIR="$(TOP_DIR)") $(info TOP_DIR="$(TOP_DIR)")
$(info USER_PACKAGES="$(USER_PACKAGES)") $(info USER_PACKAGES="$(USER_PACKAGES)")
$(info list packet=$(shell find $(USER_PACKAGES) -name $(TARGET_OS).mk))
endif endif
# Get the list of all makefiles available and include them # Get the list of all makefiles available and include them
makefiles += $(shell find $(USER_PACKAGES) -name $(USER_MAKEFILE_NAME)) makefiles += $(shell find $(USER_PACKAGES) -name $(TARGET_OS).mk)
include $(makefiles) include $(makefiles)

View File

@ -31,7 +31,6 @@ LOCAL_C_INCLUDES := $(build_dir) $(LOCAL_PATH) $(LOCAL_C_INCLUDES)
## ARM specific checks. ## ARM specific checks.
############################################################################### ###############################################################################
ifeq ("$(TARGET_ARCH)","ARM") ifeq ("$(TARGET_ARCH)","ARM")
# Make sure LOCAL_ARM_MODE is valid # Make sure LOCAL_ARM_MODE is valid
# If not set, use default mode # If not set, use default mode
# Convert to upper case for further use # Convert to upper case for further use
@ -68,7 +67,6 @@ $(call check-flags-arm-mode,LOCAL_CFLAGS)
$(call check-flags-arm-mode,LOCAL_CPPFLAGS) $(call check-flags-arm-mode,LOCAL_CPPFLAGS)
$(call check-flags-arm-mode,LOCAL_EXPORT_CFLAGS) $(call check-flags-arm-mode,LOCAL_EXPORT_CFLAGS)
$(call check-flags-arm-mode,LOCAL_EXPORT_CPPFLAGS) $(call check-flags-arm-mode,LOCAL_EXPORT_CPPFLAGS)
endif endif
############################################################################### ###############################################################################
@ -311,3 +309,4 @@ $(LOCAL_TARGETS): PRIVATE_ALL_WHOLE_STATIC_LIBRARIES := $(all_whole_static_libra
$(LOCAL_TARGETS): PRIVATE_ALL_EXTERNAL_LIBRARIES := $(all_external_libraries) $(LOCAL_TARGETS): PRIVATE_ALL_EXTERNAL_LIBRARIES := $(all_external_libraries)
$(LOCAL_TARGETS): PRIVATE_ALL_OBJECTS := $(all_objects) $(LOCAL_TARGETS): PRIVATE_ALL_OBJECTS := $(all_objects)

View File

@ -23,7 +23,7 @@ ifneq ("$(shell echo $$OSTYPE | grep msys)","")
HOST_EXE_SUFFIX := .exe HOST_EXE_SUFFIX := .exe
HOST_SHARED_LIB_SUFFIX := .dll HOST_SHARED_LIB_SUFFIX := .dll
else else
HOST_OS := LINUX HOST_OS := Linux
HOST_EXE_SUFFIX := HOST_EXE_SUFFIX :=
HOST_SHARED_LIB_SUFFIX := .so HOST_SHARED_LIB_SUFFIX := .so
endif endif

View File

@ -5,19 +5,27 @@
## ##
## Setup warning flags. ## Setup warning flags.
############################################################################### ###############################################################################
ifeq ("$(TARGET_OS)","Android")
COMMON_FLAGS_WARNINGS := -DANDROID -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \
-fpic -ffunction-sections -funwind-tables -fstack-protector \
-Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -mthumb \
-fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -MMD -MP -MF -D_STLP_USE_SIMPLE_NODE_ALLOC
GCC_FLAGS_WARNINGS :=
GXX_FLAGS_WARNINGS := -fno-rtti -Wa,--noexecstack
else
COMMON_FLAGS_WARNINGS := COMMON_FLAGS_WARNINGS :=
GCC_FLAGS_WARNINGS := GCC_FLAGS_WARNINGS :=
GXX_FLAGS_WARNINGS := GXX_FLAGS_WARNINGS :=
endif
# show option associated with warning (gcc >= 4.0.0) # show option associated with warning (gcc >= 4.0.0)
ifneq (0,$(shell expr $(GCC_VERSION) \>= 4.0.0)) ifneq (0,$(shell expr $(GCC_VERSION) \>= 4.0.0))
COMMON_FLAGS_WARNINGS += -fdiagnostics-show-option COMMON_FLAGS_WARNINGS += -fdiagnostics-show-option
endif endif
COMMON_FLAGS_WARNINGS += -Wall ###COMMON_FLAGS_WARNINGS += -Wall
#COMMON_FLAGS_WARNINGS += -Wextra #COMMON_FLAGS_WARNINGS += -Wextra
COMMON_FLAGS_WARNINGS += -Wno-unused -Wno-unused-parameter -Wunused-value -Wunused-variable -Wunused-label ###COMMON_FLAGS_WARNINGS += -Wno-unused -Wno-unused-parameter -Wunused-value -Wunused-variable -Wunused-label
#COMMON_FLAGS_WARNINGS += -Wshadow #COMMON_FLAGS_WARNINGS += -Wshadow
#COMMON_FLAGS_WARNINGS += -Wswitch-default #COMMON_FLAGS_WARNINGS += -Wswitch-default
#COMMON_FLAGS_WARNINGS += -Wwrite-strings #COMMON_FLAGS_WARNINGS += -Wwrite-strings
@ -38,14 +46,16 @@ COMMON_FLAGS_WARNINGS += -Wno-unused -Wno-unused-parameter -Wunused-value -Wunus
#GXX_FLAGS_WARNINGS += -Wreorder #GXX_FLAGS_WARNINGS += -Wreorder
#GXX_FLAGS_WARNINGS += -Woverloaded-virtual #GXX_FLAGS_WARNINGS += -Woverloaded-virtual
ifneq ("$(CLANG)","1")
# gcc >= 4.5.0 (too many false positives with previous versions) # gcc >= 4.5.0 (too many false positives with previous versions)
ifneq (0,$(shell expr $(GCC_VERSION) \>= 4.5.0)) ifneq (0,$(shell expr $(GCC_VERSION) \>= 4.5.0))
#COMMON_FLAGS_WARNINGS += -Wunreachable-code COMMON_FLAGS_WARNINGS += -Wunreachable-code
endif endif
# gcc >= 4.5.2 # gcc >= 4.5.2
ifneq (0,$(shell expr $(GCC_VERSION) \>= 4.5.2)) ifneq (0,$(shell expr $(GCC_VERSION) \>= 4.5.2))
#COMMON_FLAGS_WARNINGS += -Wlogical-op COMMON_FLAGS_WARNINGS += -Wlogical-op
endif
endif endif
# Extra warnings # Extra warnings
@ -63,7 +73,3 @@ endif
GCC_FLAGS_WARNINGS += $(COMMON_FLAGS_WARNINGS) GCC_FLAGS_WARNINGS += $(COMMON_FLAGS_WARNINGS)
GXX_FLAGS_WARNINGS += $(COMMON_FLAGS_WARNINGS) GXX_FLAGS_WARNINGS += $(COMMON_FLAGS_WARNINGS)
ifeq ("$(DEBUG)","1")
TARGET_GLOBAL_CFLAGS += -g
TARGET_GLOBAL_CPPFLAGS += -g
endif