From 762a9ebe4c0e37fdc4d06c4cfa24693c1ca7df36 Mon Sep 17 00:00:00 2001 From: Edouard Dupin Date: Sat, 18 Aug 2012 21:07:46 +0200 Subject: [PATCH] some normalisation of file namingg and header file --- Makefile.Android.mk | 61 ++++--- Makefile.Linux.mk | 92 +++++++---- Makefile.Windows.mk | 21 ++- Makefile.mk | 2 +- core/{executable.mk => build-executable.mk} | 7 +- core/{prebuilt.mk => build-prebuilt.mk} | 5 +- core/{shared.mk => build-shared.mk} | 7 +- core/{static.mk => build-static.mk} | 7 +- core/clearvars.mk | 5 +- core/config.mk | 5 +- core/defs.mk | 5 +- core/main.mk | 18 +-- core/module.mk | 5 +- core/rules.mk | 7 +- core/setup-host.mk | 53 ++++++ core/setup-target.mk | 150 +++++++++++++++++ core/setup.mk | 170 +------------------- core/warnings.mk | 5 +- 18 files changed, 367 insertions(+), 258 deletions(-) rename core/{executable.mk => build-executable.mk} (79%) rename core/{prebuilt.mk => build-prebuilt.mk} (85%) rename core/{shared.mk => build-shared.mk} (79%) rename core/{static.mk => build-static.mk} (79%) create mode 100644 core/setup-host.mk create mode 100644 core/setup-target.mk diff --git a/Makefile.Android.mk b/Makefile.Android.mk index dab9cc1..3dbe01a 100644 --- a/Makefile.Android.mk +++ b/Makefile.Android.mk @@ -2,7 +2,6 @@ PROJECT_PACKAGE=$(PROJECT_NAME)package -USER_PACKAGES += $(EWOL_FOLDER)/Sources/ TARGET_OS = Android TARGET_ARCH = ARM TARGET_CROSS = $(PROJECT_NDK)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- @@ -22,40 +21,52 @@ TARGET_GLOBAL_LDLIBS_SHARED = --sysroot=$(PROJECT_NDK)/platforms/android-$(ANDRO #generic makefile include $(EWOL_FOLDER)/Build/core/main.mk -ANDROID_BASIC_FOLDER=./out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/ant/ -JAVA_FOLDER=$(ANDROID_BASIC_FOLDER)src/com/$(PROJECT_VENDOR)/$(PROJECT_NAME) -EWOL_JAVA_FOLDER=$(ANDROID_BASIC_FOLDER)src/org/ewol -java : - @mkdir -p $(JAVA_FOLDER)/ - @mkdir -p $(EWOL_JAVA_FOLDER)/ + +FINAL_FOLDER_ANT=$(TARGET_OUT_FINAL)/ant +FINAL_FOLDER_JAVA_PROJECT=$(FINAL_FOLDER_ANT)/src/com/$(PROJECT_VENDOR)/$(PROJECT_NAME) +FINAL_FOLDER_JAVA_EWOL=$(FINAL_FOLDER_ANT)/src/org/ewol + +FINAL_FILE_ABSTRACTION = $(FINAL_FOLDER_JAVA_PROJECT)/$(PROJECT_NAME).java + +final : all + @mkdir -p $(FINAL_FOLDER_JAVA_PROJECT)/ + @mkdir -p $(FINAL_FOLDER_JAVA_EWOL)/ - @cp $(EWOL_FOLDER)/Java/PROJECT_NAME.java $(JAVA_FOLDER)/$(PROJECT_NAME).java - @sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java - @sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java - @sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java + @cp $(EWOL_FOLDER)/Java/PROJECT_NAME.java $(FINAL_FILE_ABSTRACTION) + @sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" $(FINAL_FILE_ABSTRACTION) + @sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" $(FINAL_FILE_ABSTRACTION) + @sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" $(FINAL_FILE_ABSTRACTION) @# copy the Ewol java files : - @cp $(EWOL_FOLDER)/Java/interfaceJNI.java $(EWOL_JAVA_FOLDER)/ - @cp $(EWOL_FOLDER)/Java/interfaceOpenGL.java $(EWOL_JAVA_FOLDER)/ - @cp $(EWOL_FOLDER)/Java/interfaceSurfaceView.java $(EWOL_JAVA_FOLDER)/ - @cp $(EWOL_FOLDER)/Java/interfaceAudio.java $(EWOL_JAVA_FOLDER)/ + @cp $(EWOL_FOLDER)/Java/interfaceJNI.java $(FINAL_FOLDER_JAVA_EWOL)/ + @cp $(EWOL_FOLDER)/Java/interfaceOpenGL.java $(FINAL_FOLDER_JAVA_EWOL)/ + @cp $(EWOL_FOLDER)/Java/interfaceSurfaceView.java $(FINAL_FOLDER_JAVA_EWOL)/ + @cp $(EWOL_FOLDER)/Java/interfaceAudio.java $(FINAL_FOLDER_JAVA_EWOL)/ @# copy android specific data : - @cp -r Android/* $(ANDROID_BASIC_FOLDER)/ + @cp -r os-Android/* $(FINAL_FOLDER_ANT)/ @# copy user data - @cp -r share $(ANDROID_BASIC_FOLDER)/assets - @mkdir -p $(ANDROID_BASIC_FOLDER)libs/armeabi/ + @cp -r share $(FINAL_FOLDER_ANT)/assets + @mkdir -p $(FINAL_FOLDER_ANT)/libs/armeabi/ @# note : this change the lib name ... - @cp ./out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/obj/usr/lib/$(PROJECT_PACKAGE).so $(ANDROID_BASIC_FOLDER)libs/armeabi/lib$(PROJECT_PACKAGE).so + @cp $(TARGET_OUT_STAGING)/usr/lib/$(PROJECT_PACKAGE).so $(FINAL_FOLDER_ANT)/libs/armeabi/lib$(PROJECT_PACKAGE).so @echo " (ant) build java code" - @cd $(ANDROID_BASIC_FOLDER) ; PATH=$(PROJECT_SDK)/tools/:$(PROJECT_SDK)/platform-tools/:$(PATH) ant -Dsdk.dir=$(PROJECT_SDK) $(BUILD_DIRECTORY_MODE) + @cd $(FINAL_FOLDER_ANT) ; PATH=$(PROJECT_SDK)/tools/:$(PROJECT_SDK)/platform-tools/:$(PATH) ant -Dsdk.dir=$(PROJECT_SDK) $(BUILD_DIRECTORY_MODE) + @# cp the release package in the final folder to facilitate the find + @cp -f $(FINAL_FOLDER_ANT)/bin/$(PROJECT_NAME)-$(BUILD_DIRECTORY_MODE).apk $(TARGET_OUT_FINAL)/$(PROJECT_NAME)-$(BUILD_DIRECTORY_MODE).apk -install: - @echo "------------------------------------------------------------------------" - @echo ' INSTALL : ./bin/$(PROJECT_NAME)-debug.apk' - @echo "------------------------------------------------------------------------" +install: final + @echo ------------------------------------------------------------------------ + @echo Install : $(TARGET_OUT_FINAL)/$(PROJECT_NAME)-$(BUILD_DIRECTORY_MODE).apk + @echo ------------------------------------------------------------------------ @# $(PROJECT_SDK)/platform-tools/adb kill-server @# install application - sudo $(PROJECT_SDK)/platform-tools/adb install -r $(ANDROID_BASIC_FOLDER)bin/$(PROJECT_NAME)-$(BUILD_DIRECTORY_MODE).apk + sudo $(PROJECT_SDK)/platform-tools/adb install -r $(TARGET_OUT_FINAL)/$(PROJECT_NAME)-$(BUILD_DIRECTORY_MODE).apk +uninstall: + @echo ------------------------------------------------------------------------ + @echo UnInstall : $(ANDROID_BASIC_FOLDER)bin/$(PROJECT_NAME)-$(BUILD_DIRECTORY_MODE).apk + @echo ------------------------------------------------------------------------ + @echo ... TODO ... + diff --git a/Makefile.Linux.mk b/Makefile.Linux.mk index e8a0971..8f487c5 100644 --- a/Makefile.Linux.mk +++ b/Makefile.Linux.mk @@ -1,37 +1,65 @@ -USER_PACKAGES += $(EWOL_FOLDER)/Sources/ - +# include generic makefile : include $(EWOL_FOLDER)/Build/core/main.mk +FINAL_FOLDER_DEBIAN= $(TARGET_OUT_FINAL)/$(PROJECT_NAME)/DEBIAN +FINAL_FOLDER_BIN= $(TARGET_OUT_FINAL)/$(PROJECT_NAME)/usr/bin +FINAL_FOLDER_LIB= $(TARGET_OUT_FINAL)/$(PROJECT_NAME)/usr/lib +FINAL_FOLDER_SHARED_DOC= $(TARGET_OUT_FINAL)/$(PROJECT_NAME)/share/doc +FINAL_FOLDER_SHARED_DATA=$(TARGET_OUT_FINAL)/$(PROJECT_NAME)/share/$(PROJECT_NAME) + +FINAL_FILE_CONTROL=$(FINAL_FOLDER_DEBIAN)/control +FINAL_FILE_POST_RM=$(FINAL_FOLDER_DEBIAN)/postrm + +FINAL_VERSION_TAG_SHORT=$(shell git describe --tags --abbrev=0) + # http://alp.developpez.com/tutoriels/debian/creer-paquet/ -#package: .encadrer -# @echo 'Create Folders ...' -# @mkdir -p package/$(PROJECT_NAME)/DEBIAN/ -# @mkdir -p package/$(PROJECT_NAME)/usr/bin/ -# @mkdir -p package/$(PROJECT_NAME)/usr/share/doc/ -# @mkdir -p package/$(PROJECT_NAME)/usr/share/edn/ -# # Create the control file -# @echo "Package: "$(PROJECT_NAME) > package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Version: "$(VERSION_TAG_SHORT) >> package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Section: Development,Editors" >> package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Priority: optional" >>package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Architecture: all" >> package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Depends: bash" >> package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Maintainer: Mr DUPIN Edouard " >> package/$(PROJECT_NAME)/DEBIAN/control -# @echo "Description: Text editor for sources code with ctags management" >> package/$(PROJECT_NAME)/DEBIAN/control -# @echo "" >> package/$(PROJECT_NAME)/DEBIAN/control -# # Create the PostRm -# @echo "#!/bin/bash" > package/$(PROJECT_NAME)/DEBIAN/postrm -# @echo "rm ~/."$(PROJECT_NAME) >> package/$(PROJECT_NAME)/DEBIAN/postrm -# @echo "" >> package/$(PROJECT_NAME)/DEBIAN/postrm -# # Enable Execution in script -# @chmod 755 package/$(PROJECT_NAME)/DEBIAN/post* -# @#chmod 755 package/$(PROJECT_NAME)/DEBIAN/pre* -# # copy licence and information : -# @cp README package/$(PROJECT_NAME)/usr/share/doc/README -# @cp licence.txt package/$(PROJECT_NAME)/usr/share/doc/copyright -# @echo "First generation in progress" >> package/$(PROJECT_NAME)/usr/share/doc/changelog -# @cp -vf $(PROJECT_NAME) package/$(PROJECT_NAME)/usr/bin/ -# @cp -vf data/*.xml package/$(PROJECT_NAME)/usr/share/edn/ -# @cd package; dpkg-deb --build $(PROJECT_NAME) +final: all + @echo ------------------------------------------------------------------------ + @echo Final + @echo ------------------------------------------------------------------------ + @echo 'Create Folders ...' + @mkdir -p $(FINAL_FOLDER_DEBIAN) + @mkdir -p $(FINAL_FOLDER_BIN) + @mkdir -p $(FINAL_FOLDER_SHARED_DOC) + @mkdir -p $(FINAL_FOLDER_SHARED_DATA) + # Create the control file + @echo "Package: "$(PROJECT_NAME) > $(FINAL_FILE_CONTROL) + @echo "Version: "$(FINAL_VERSION_TAG_SHORT) >> $(FINAL_FILE_CONTROL) + @echo "Section: Development,Editors" >> $(FINAL_FILE_CONTROL) + @echo "Priority: optional" >> $(FINAL_FILE_CONTROL) + @echo "Architecture: all" >> $(FINAL_FILE_CONTROL) + @echo "Depends: bash" >> $(FINAL_FILE_CONTROL) + @echo "Maintainer: Mr DUPIN Edouard " >> $(FINAL_FILE_CONTROL) + @echo "Description: Text editor for sources code with ctags management" >> $(FINAL_FILE_CONTROL) + @echo "" >> $(FINAL_FILE_CONTROL) + # Create the PostRm + @echo "#!/bin/bash" > $(FINAL_FILE_POST_RM) + @echo "rm ~/."$(PROJECT_NAME) >> $(FINAL_FILE_POST_RM) + @echo "" >> $(FINAL_FILE_POST_RM) + # Enable Execution in script + @chmod 755 $(FINAL_FILE_POST_RM)* + @#chmod 755 $(PROJECT_NAME)/DEBIAN/pre* + # copy licence and information : + @cp -f os-Linux/README $(FINAL_FOLDER_SHARED_DOC)/README + @cp -f licence.txt $(FINAL_FOLDER_SHARED_DOC)/copyright + @cp -f changelog $(FINAL_FOLDER_SHARED_DOC)/changelog + @cp -f $(TARGET_OUT_STAGING)/usr/bin/* $(FINAL_FOLDER_BIN) + $(if $(wildcard $(TARGET_OUT_STAGING)/usr/lib/*.so), cp -f $(TARGET_OUT_STAGING)/usr/lib/*.so $(FINAL_FOLDER_LIB)) + $(if $(wildcard ./share/*), cp -rf share/* $(FINAL_FOLDER_SHARED_DATA)) + @echo pachage <== $(TARGET_OUT_FINAL)/$(PROJECT_NAME).deb + @cd $(TARGET_OUT_FINAL)/; dpkg-deb --build $(PROJECT_NAME) + +install: final + @echo ------------------------------------------------------------------------ + @echo Install : $(TARGET_OUT_FINAL)/$(PROJECT_NAME).deb + @echo ------------------------------------------------------------------------ + sudo dpkg -i $(TARGET_OUT_FINAL)/$(PROJECT_NAME).deb + +uninstall: + @echo ------------------------------------------------------------------------ + @echo UnInstall : $(TARGET_OUT_FINAL)/$(PROJECT_NAME).deb + @echo ------------------------------------------------------------------------ + sudo dpkg -r $(TARGET_OUT_FINAL)/$(PROJECT_NAME).deb + diff --git a/Makefile.Windows.mk b/Makefile.Windows.mk index ef8306e..0927a45 100644 --- a/Makefile.Windows.mk +++ b/Makefile.Windows.mk @@ -1,5 +1,4 @@ -USER_PACKAGES += $(EWOL_FOLDER)/Sources/ # defien the target OS of this system TARGET_OS=Windows @@ -7,3 +6,23 @@ TARGET_OS=Windows TARGET_CROSS=i586-mingw32msvc- include $(EWOL_FOLDER)/Build/core/main.mk + + +final: all + @echo ------------------------------------------------------------------------ + @echo Final : + @echo ------------------------------------------------------------------------ + @echo ... TODO ... + +install: final + @echo ------------------------------------------------------------------------ + @echo Install : + @echo ------------------------------------------------------------------------ + @echo ... TODO ... + +uninstall: + @echo ------------------------------------------------------------------------ + @echo UnInstall : + @echo ------------------------------------------------------------------------ + @echo ... TODO ... + diff --git a/Makefile.mk b/Makefile.mk index a3c1e6e..e3d0f4c 100644 --- a/Makefile.mk +++ b/Makefile.mk @@ -10,7 +10,7 @@ PLATFORM?=$(DEFAULT_PLATFORM) PROJECT_PATH=$(shell pwd) -PROJECT_MODULE=$(PROJECT_PATH)/../ +PROJECT_MODULE=$(shell realpath $(PROJECT_PATH)/../) ifeq ($(PLATFORM), Linux) PROJECT_NDK?=$(realpath $(PROJECT_MODULE)/ewol/) diff --git a/core/executable.mk b/core/build-executable.mk similarity index 79% rename from core/executable.mk rename to core/build-executable.mk index f69bf10..0c2f681 100644 --- a/core/executable.mk +++ b/core/build-executable.mk @@ -1,9 +1,10 @@ ############################################################################### ## @file executable.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## -## Build an executable. +## Register an executable (can be build). ############################################################################### LOCAL_MODULE_CLASS := EXECUTABLE diff --git a/core/prebuilt.mk b/core/build-prebuilt.mk similarity index 85% rename from core/prebuilt.mk rename to core/build-prebuilt.mk index 56b1432..1f9b9bd 100644 --- a/core/prebuilt.mk +++ b/core/build-prebuilt.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file prebuilt.mk -## @author Y.M. Morgan -## @date 2012/08/08 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Register a prebuilt module. ############################################################################### diff --git a/core/shared.mk b/core/build-shared.mk similarity index 79% rename from core/shared.mk rename to core/build-shared.mk index 000b61c..4de1258 100644 --- a/core/shared.mk +++ b/core/build-shared.mk @@ -1,9 +1,10 @@ ############################################################################### ## @file shared.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## -## Build a shared library. +## Register a shared library (can be build). ############################################################################### LOCAL_MODULE_CLASS := SHARED_LIBRARY diff --git a/core/static.mk b/core/build-static.mk similarity index 79% rename from core/static.mk rename to core/build-static.mk index 0065b49..b99e065 100644 --- a/core/static.mk +++ b/core/build-static.mk @@ -1,9 +1,10 @@ ############################################################################### ## @file static.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## -## Build a static library. +## Register a static library (can be build). ############################################################################### LOCAL_MODULE_CLASS := STATIC_LIBRARY diff --git a/core/clearvars.mk b/core/clearvars.mk index 12738a3..ea795b0 100644 --- a/core/clearvars.mk +++ b/core/clearvars.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file clearvars.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Clear out values of all variables used by rule templates. ############################################################################### diff --git a/core/config.mk b/core/config.mk index d521c5d..a20c096 100644 --- a/core/config.mk +++ b/core/config.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file config.mk -## @author Y.M. Morgan -## @date 2012/07/09 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Configuration management. ############################################################################### diff --git a/core/defs.mk b/core/defs.mk index fd1a0d9..896cdc7 100644 --- a/core/defs.mk +++ b/core/defs.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file defs.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## This file contains macros used by other makefiles. ############################################################################### diff --git a/core/main.mk b/core/main.mk index 8d47a67..0275e79 100644 --- a/core/main.mk +++ b/core/main.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file main.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Main Makefile. ############################################################################### @@ -53,23 +54,22 @@ TOP_DIR := $(shell pwd) BUILD_SYSTEM := $(call my-dir) # Setup configuration +include $(BUILD_SYSTEM)/setup-host.mk +include $(BUILD_SYSTEM)/setup-target.mk include $(BUILD_SYSTEM)/setup.mk - # Setup macros definitions include $(BUILD_SYSTEM)/defs.mk - # Setup warnings flags include $(BUILD_SYSTEM)/warnings.mk - # Load configuration include $(BUILD_SYSTEM)/config.mk # Names of makefiles that can be included by user Makefiles CLEAR_VARS := $(BUILD_SYSTEM)/clearvars.mk -BUILD_STATIC_LIBRARY := $(BUILD_SYSTEM)/static.mk -BUILD_SHARED_LIBRARY := $(BUILD_SYSTEM)/shared.mk -BUILD_EXECUTABLE := $(BUILD_SYSTEM)/executable.mk -BUILD_PREBUILT := $(BUILD_SYSTEM)/prebuilt.mk +BUILD_STATIC_LIBRARY := $(BUILD_SYSTEM)/build-static.mk +BUILD_SHARED_LIBRARY := $(BUILD_SYSTEM)/build-shared.mk +BUILD_EXECUTABLE := $(BUILD_SYSTEM)/build-executable.mk +BUILD_PREBUILT := $(BUILD_SYSTEM)/build-prebuilt.mk BUILD_RULES := $(BUILD_SYSTEM)/rules.mk ############################################################################### diff --git a/core/module.mk b/core/module.mk index e26aa0d..63540b2 100644 --- a/core/module.mk +++ b/core/module.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file module.mk -## @author Y.M. Morgan -## @date 2012/04/17 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Build a module. ############################################################################### diff --git a/core/rules.mk b/core/rules.mk index 19f2de5..6098b26 100644 --- a/core/rules.mk +++ b/core/rules.mk @@ -1,7 +1,8 @@ ############################################################################### -## @file binary-rules.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @file rules.mk +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Generate rules for building an executable or library. ############################################################################### diff --git a/core/setup-host.mk b/core/setup-host.mk new file mode 100644 index 0000000..c1ead81 --- /dev/null +++ b/core/setup-host.mk @@ -0,0 +1,53 @@ +############################################################################### +## @file setup-host.mk +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL +############################################################################### + +# check if the user does not decide to force an other HOST_OS +ifneq ("$(HOST_OS)","") + $(error User must not define $(HOST_OS)) +endif + +############################################################################### +## Tools for host. +############################################################################### + +ifneq ("$(CLANG)","1") + HOST_CC := gcc + HOST_CXX := g++ +else + HOST_CC := clang + HOST_CXX := clang++ +endif +HOST_AR := ar +HOST_LD := ld +HOST_NM := nm +HOST_STRIP := strip +HOST_RANLIB := ranlib +HOST_DLLTOOL := dlltool + +############################################################################### +# Target global variables. +############################################################################### +HOST_GLOBAL_C_INCLUDES ?= +HOST_GLOBAL_CFLAGS ?= +HOST_GLOBAL_CPPFLAGS ?= +HOST_GLOBAL_ARFLAGS ?= rcs +HOST_GLOBAL_LDFLAGS ?= +HOST_GLOBAL_LDFLAGS_SHARED ?= +HOST_GLOBAL_LDLIBS ?= +HOST_GLOBAL_LDLIBS_SHARED ?= + +# Host OS +ifneq ("$(shell echo $$OSTYPE | grep msys)","") + HOST_OS := Windows + HOST_EXE_SUFFIX := .exe + HOST_SHARED_LIB_SUFFIX := .dll +else + HOST_OS := Linux + HOST_EXE_SUFFIX := + HOST_SHARED_LIB_SUFFIX := .so +endif + diff --git a/core/setup-target.mk b/core/setup-target.mk new file mode 100644 index 0000000..cca6dd9 --- /dev/null +++ b/core/setup-target.mk @@ -0,0 +1,150 @@ +############################################################################### +## @file setup-target.mk +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL +############################################################################### + + + + +############################################################################### +## Tools for target. +############################################################################### + +ifneq ("$(CLANG)","1") + TARGET_CC := $(TARGET_CROSS)gcc + TARGET_CXX := $(TARGET_CROSS)g++ +else + TARGET_CC := $(TARGET_CROSS)clang + TARGET_CXX := $(TARGET_CROSS)clang++ +endif +TARGET_AR := $(TARGET_CROSS)ar +TARGET_LD := $(TARGET_CROSS)ld +TARGET_NM := $(TARGET_CROSS)nm +TARGET_STRIP := $(TARGET_CROSS)strip +TARGET_STRIP := $(TARGET_CROSS)strip +TARGET_RANLIB := $(TARGET_CROSS)ranlib +TARGET_DLLTOOL := $(TARGET_CROSS)dlltool + + +############################################################################### +# Target global variables. +############################################################################### +TARGET_GLOBAL_C_INCLUDES ?= +TARGET_GLOBAL_CFLAGS ?= +TARGET_GLOBAL_CPPFLAGS ?= +TARGET_GLOBAL_ARFLAGS ?= rcs +TARGET_GLOBAL_LDFLAGS ?= +TARGET_GLOBAL_LDFLAGS_SHARED ?= +TARGET_GLOBAL_LDLIBS ?= +TARGET_GLOBAL_LDLIBS_SHARED ?= +TARGET_GLOBAL_CFLAGS_ARM ?= +TARGET_GLOBAL_CFLAGS_THUMB ?= + +TARGET_PCH_FLAGS ?= +TARGET_DEFAULT_ARM_MODE ?= THUMB + +# Target OS : default to HOST_OS unless set +ifndef TARGET_OS + TARGET_OS := $(HOST_OS) +endif + +# Exe/dll suffix under mingw +TARGET_STATIC_LIB_SUFFIX := .a +ifeq ("$(TARGET_OS)","Windows") + TARGET_EXE_SUFFIX := .exe + TARGET_SHARED_LIB_SUFFIX := .dll +else + TARGET_EXE_SUFFIX := + TARGET_SHARED_LIB_SUFFIX := .so +endif + +ifeq ("$(TARGET_OS)","Windows") + # may be overridden in make command line + STATIC := 1 + TARGET_GLOBAL_CFLAGS += -D__MINGW_FEATURES__=0 + TARGET_GLOBAL_LDFLAGS += -Wl,--enable-auto-import + ifeq ("$(STATIC)","1") + TARGET_GLOBAL_LDFLAGS += -Wl,-Bstatic + endif + # remove CLANG if defined + ifeq ("$(CLANG)","1") + $(error CLANG is not supported on $(TARGET_OS) platform ==> disable it) + endif +else ifeq ("$(TARGET_OS)","Android") + TARGET_GLOBAL_CFLAGS += -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 + TARGET_GLOBAL_CPPFLAGS += -fno-rtti -Wa,--noexecstack + TARGET_GLOBAL_LDFLAGS += + # remove CLANG if defined ==> TODO : Support it later ... + ifeq ("$(CLANG)","1") + $(error CLANG is not supported on $(TARGET_OS) platform ==> disable it) + endif +else ifeq ("$(TARGET_OS)","Linux") + +else ifeq ("$(TARGET_OS)","MacOs") + +else ifeq ("$(TARGET_OS)","IOs") + +endif + + +# define the target OS type for the compilation system ... +TARGET_GLOBAL_CFLAGS += -D__TARGET_OS__$(TARGET_OS) +# basic define of the build time : +TARGET_GLOBAL_CFLAGS += -DBUILD_TIME="\"$(shell date)\"" \ + +ifeq ($(DEBUG),1) + TARGET_GLOBAL_CFLAGS += -DDEBUG_LEVEL=3 + ifeq ("$(OPTIMISE)","1") + TARGET_GLOBAL_CFLAGS += -O2 + endif +else + TARGET_GLOBAL_CFLAGS += -DDEBUG_LEVEL=1 +endif + + +# Pre-compiled header generation flag +ifneq ("$(CLANG)","1") + TARGET_PCH_FLAGS := -c +else + TARGET_PCH_FLAGS := -x c++-header +endif + + + +TARGET_GLOBAL_LDFLAGS += -L$(TARGET_OUT_STAGING)/lib +TARGET_GLOBAL_LDFLAGS += -L$(TARGET_OUT_STAGING)/usr/lib +TARGET_GLOBAL_LDFLAGS_SHARED += -L$(TARGET_OUT_STAGING)/lib +TARGET_GLOBAL_LDFLAGS_SHARED += -L$(TARGET_OUT_STAGING)/usr/lib + +############################################################################### +## Determine CC path and version. and check if installed ... +############################################################################### + +TARGET_CC_PATH := $(shell which $(CC)) + +ifeq ("$(TARGET_CC_PATH)","") + ifeq ("$(TARGET_OS)","Windows") + $(error Compilator does not exist : $(TARGET_CC) ==> if not installed ... "apt-get install mingw32") + else ifeq ("$(TARGET_OS)","Android") + $(error Compilator does not exist : $(TARGET_CC) ==> add and define the android NDK "http://developer.android.com/tools/sdk/ndk/index.html") + else + ifneq ("$(CLANG)","1") + $(error Compilator does not exist : $(TARGET_CC) ==> if not installed ... "apt-get install gcc g++") + else + $(error Compilator does not exist : $(TARGET_CC) ==> if not installed ... "apt-get install clang") + endif + endif +endif + +ifneq ("$(CLANG)","1") +TARGET_CC_VERSION := $(shell $(TARGET_CC) --version | head -1 | sed "s/.*\([0-9]\.[0-9]\.[0-9]\).*/\1/") +else +TARGET_CC_VERSION := $(shell $(TARGET_CC) --version | head -1 | sed "s/.*\([0-9]\.[0-9]-[0-9]\).*/\1/") +endif + + diff --git a/core/setup.mk b/core/setup.mk index f6f0ec6..50bc3b4 100644 --- a/core/setup.mk +++ b/core/setup.mk @@ -1,7 +1,8 @@ ############################################################################### -## @file config.mk -## @author Y.M. Morgan -## @date 2011/05/14 +## @file setup.mk +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ############################################################################### ############################################################################### @@ -13,139 +14,7 @@ ifneq ("$(words $(shell pwd))","1") $(error Top directory contains space characters) endif -############################################################################### -## Tools for target. -############################################################################### -ifneq ("$(CLANG)","1") - TARGET_CC := $(TARGET_CROSS)gcc - TARGET_CXX := $(TARGET_CROSS)g++ -else - TARGET_CC := $(TARGET_CROSS)clang - TARGET_CXX := $(TARGET_CROSS)clang++ -endif -TARGET_AR := $(TARGET_CROSS)ar -TARGET_LD := $(TARGET_CROSS)ld -TARGET_NM := $(TARGET_CROSS)nm -TARGET_STRIP := $(TARGET_CROSS)strip -TARGET_STRIP := $(TARGET_CROSS)strip -TARGET_RANLIB := $(TARGET_CROSS)ranlib -TARGET_DLLTOOL := $(TARGET_CROSS)dlltool - -############################################################################### -## Tools for host. -############################################################################### -HOST_GCC ?= gcc -HOST_GXX ?= g++ -HOST_AR ?= ar -HOST_LD ?= ld -HOST_NM ?= nm -HOST_STRIP ?= strip - -############################################################################### -# Target global variables. -############################################################################### -TARGET_GLOBAL_C_INCLUDES ?= -TARGET_GLOBAL_CFLAGS ?= -TARGET_GLOBAL_CPPFLAGS ?= -TARGET_GLOBAL_ARFLAGS ?= rcs -TARGET_GLOBAL_LDFLAGS ?= -TARGET_GLOBAL_LDFLAGS_SHARED ?= -TARGET_GLOBAL_LDLIBS ?= -TARGET_GLOBAL_LDLIBS_SHARED ?= -TARGET_GLOBAL_CFLAGS_ARM ?= -TARGET_GLOBAL_CFLAGS_THUMB ?= - -TARGET_PCH_FLAGS ?= -TARGET_DEFAULT_ARM_MODE ?= THUMB - -############################################################################### -## Host/Target OS. -############################################################################### - -# Host OS -ifneq ("$(shell echo $$OSTYPE | grep msys)","") - HOST_OS := Windows - HOST_EXE_SUFFIX := .exe - HOST_SHARED_LIB_SUFFIX := .dll -else - HOST_OS := Linux - HOST_EXE_SUFFIX := - HOST_SHARED_LIB_SUFFIX := .so -endif - -# Target OS : default to HOST_OS unless set -ifndef TARGET_OS - TARGET_OS := $(HOST_OS) -endif - -# Exe/dll suffix under mingw -TARGET_STATIC_LIB_SUFFIX := .a -ifeq ("$(TARGET_OS)","Windows") - TARGET_EXE_SUFFIX := .exe - TARGET_SHARED_LIB_SUFFIX := .dll -else - TARGET_EXE_SUFFIX := - TARGET_SHARED_LIB_SUFFIX := .so -endif - -ifeq ("$(TARGET_OS)","Windows") - # may be overridden in make command line - STATIC := 1 - TARGET_GLOBAL_CFLAGS += -D__MINGW_FEATURES__=0 - TARGET_GLOBAL_LDFLAGS += -Wl,--enable-auto-import - ifeq ("$(STATIC)","1") - TARGET_GLOBAL_LDFLAGS += -Wl,-Bstatic - endif - # remove CLANG if defined - ifeq ("$(CLANG)","1") - $(error CLANG is not supported on $(TARGET_OS) platform ==> disable it) - endif -else ifeq ("$(TARGET_OS)","Android") - TARGET_GLOBAL_CFLAGS += -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 - TARGET_GLOBAL_CPPFLAGS += -fno-rtti -Wa,--noexecstack - TARGET_GLOBAL_LDFLAGS += - # remove CLANG if defined ==> TODO : Support it later ... - ifeq ("$(CLANG)","1") - $(error CLANG is not supported on $(TARGET_OS) platform ==> disable it) - endif -endif - -# define the target OS type for the compilation system ... -TARGET_GLOBAL_CFLAGS += -D__TARGET_OS__$(TARGET_OS) -# basic define of the build time : -TARGET_GLOBAL_CFLAGS += -DBUILD_TIME="\"$(shell date)\"" \ - -ifeq ($(DEBUG),1) - TARGET_GLOBAL_CFLAGS += -DDEBUG_LEVEL=3 - ifeq ("$(OPTIMISE)","1") - TARGET_GLOBAL_CFLAGS += -O2 - endif -else - TARGET_GLOBAL_CFLAGS += -DDEBUG_LEVEL=1 -endif - - -# To be able to use ccache with pre-complied headers, some env variables are required -CCACHE := -ifeq ("$(CCACHE)","1") - ifneq ("$(shell which ccache)","") - CCACHE := CCACHE_SLOPPINESS=time_macros ccache - TARGET_GLOBAL_CFLAGS += -fpch-preprocess - endif -else - CCACHE := -endif - -# Pre-compiled header generation flag -ifneq ("$(CLANG)","1") - TARGET_PCH_FLAGS := -c -else - TARGET_PCH_FLAGS := -x c++-header -endif # Architecture #ifndef TARGET_ARCH @@ -163,34 +32,3 @@ endif #else # TARGET_GLOBAL_CFLAGS += -m32 #endif - -TARGET_GLOBAL_LDFLAGS += -L$(TARGET_OUT_STAGING)/lib -TARGET_GLOBAL_LDFLAGS += -L$(TARGET_OUT_STAGING)/usr/lib -TARGET_GLOBAL_LDFLAGS_SHARED += -L$(TARGET_OUT_STAGING)/lib -TARGET_GLOBAL_LDFLAGS_SHARED += -L$(TARGET_OUT_STAGING)/usr/lib - -############################################################################### -## Determine CC path and version. and check if installed ... -############################################################################### - -TARGET_CC_PATH := $(shell which $(CC)) - -ifeq ("$(TARGET_CC_PATH)","") - ifeq ("$(TARGET_OS)","Windows") - $(error Compilator does not exist : $(TARGET_CC) ==> if not installed ... "apt-get install mingw32") - else ifeq ("$(TARGET_OS)","Android") - $(error Compilator does not exist : $(TARGET_CC) ==> add and define the android NDK "http://developer.android.com/tools/sdk/ndk/index.html") - else - ifneq ("$(CLANG)","1") - $(error Compilator does not exist : $(TARGET_CC) ==> if not installed ... "apt-get install gcc g++") - else - $(error Compilator does not exist : $(TARGET_CC) ==> if not installed ... "apt-get install clang") - endif - endif -endif - -ifneq ("$(CLANG)","1") -TARGET_CC_VERSION := $(shell $(TARGET_CC) --version | head -1 | sed "s/.*\([0-9]\.[0-9]\.[0-9]\).*/\1/") -else -TARGET_CC_VERSION := $(shell $(TARGET_CC) --version | head -1 | sed "s/.*\([0-9]\.[0-9]-[0-9]\).*/\1/") -endif diff --git a/core/warnings.mk b/core/warnings.mk index e4d6a3f..1044d95 100644 --- a/core/warnings.mk +++ b/core/warnings.mk @@ -1,7 +1,8 @@ ############################################################################### ## @file warnings.mk -## @author Y.M. Morgan -## @date 2012/06/09 +## @author Edouard DUPIN +## @date 17-08-2012 +## @project EWOL ## ## Setup warning flags. ###############################################################################