[DEV] change project management and add doc
This commit is contained in:
parent
60735a1abf
commit
b3554e26a1
@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
APPL_DATA_FOLDER=/usr/share/$(PROJECT_NAME)
|
||||||
|
|
||||||
# include generic makefile :
|
# include generic makefile :
|
||||||
include $(EWOL_FOLDER)/Build/core/main.mk
|
include $(EWOL_FOLDER)/Build/core/main.mk
|
||||||
|
|
||||||
|
106
README.md
Normal file
106
README.md
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
build
|
||||||
|
====
|
||||||
|
|
||||||
|
`build` this is not a name ... but it is a FREE software tool.
|
||||||
|
|
||||||
|
Instructions
|
||||||
|
============
|
||||||
|
|
||||||
|
this is a makefile chain to generate the binary, shared lib and static lib independently of the OS
|
||||||
|
|
||||||
|
Create a makefile for all librairies
|
||||||
|
====================================
|
||||||
|
|
||||||
|
the makefile must be set directly in the root folder of the lib and named :
|
||||||
|
* Generic.mk ==> if it was no special platform difined
|
||||||
|
* Linux.mk ==> only for linux
|
||||||
|
* Windows.mk ==> only for windows
|
||||||
|
* Android.mk ==> only for android
|
||||||
|
* Mac.mk ==> only for mac
|
||||||
|
* Ios.mk ==> only for ios
|
||||||
|
|
||||||
|
==> if the platform specific file was not found, the system search the Generic.mk file
|
||||||
|
|
||||||
|
|
||||||
|
a minimal makefile for static lib :
|
||||||
|
|
||||||
|
# requested for all makefile
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
# remove previous variable of a module (remove all LOCAL_*** variable)
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
# librairie or program name
|
||||||
|
LOCAL_MODULE := exemple
|
||||||
|
# list of sources files
|
||||||
|
LOCAL_SRC_FILES := plop.cpp plop2.c
|
||||||
|
# request the type of generation
|
||||||
|
include $(BUILD_STATIC_LIBRARY)
|
||||||
|
|
||||||
|
you can have some other :
|
||||||
|
|
||||||
|
# prebuild librairie ==> no comilation needed
|
||||||
|
include $(BUILD_PREBUILT)
|
||||||
|
# binary file generation (automatic add .exe at the end when windows binary)
|
||||||
|
include $(BUILD_EXECUTABLE)
|
||||||
|
# shared librairie (automatic .so or .dll when needed)
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
|
||||||
|
define include folder:
|
||||||
|
# inside module
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/monPath/
|
||||||
|
# outside module >> automaticly added to LOCAL_C_INCLUDES
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/mon/path/export
|
||||||
|
|
||||||
|
define c compilation flags : CFLAGS
|
||||||
|
# inside module
|
||||||
|
LOCAL_CFLAGS := -DEXEMPLE_TAG="\"SuperPlop\""
|
||||||
|
# outside module
|
||||||
|
LOCAL_EXPORT_CFLAGS := -DEXEMPLE_EXTERN_DEFINE
|
||||||
|
|
||||||
|
define linker flags:
|
||||||
|
# local
|
||||||
|
LOCAL_LDLIBS := -lm
|
||||||
|
# expoerted
|
||||||
|
LOCAL_EXPORT_LDLIBS := -lm
|
||||||
|
|
||||||
|
define dependency between librairies (note : automaticly include sub dependence of adependence
|
||||||
|
LOCAL_LIBRARIES := etk tinyxml
|
||||||
|
|
||||||
|
copy files and folder :
|
||||||
|
# use the makefile folder as reference and output is in the application data directory
|
||||||
|
# copy secyfy file in the destination : folder/SRC.xxx:folderPLOP/folder/dst.yyy
|
||||||
|
LOCAL_COPY_FILES := ../share/Font/freefont/FreeSerif.ttf:Font/freefont/FreeSerif.ttf
|
||||||
|
# copy multiple file in a folder : (wildcard search) : folder/src*.txt:dstFolder
|
||||||
|
LOCAL_COPY_FOLDERS := ../share/*.xml:/
|
||||||
|
# note : the destination name is not needed ...
|
||||||
|
|
||||||
|
License (DSB like)
|
||||||
|
==================
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in
|
||||||
|
the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
3. The name of the author may not be used to endorse or promote
|
||||||
|
products derived from this software without specific prior
|
||||||
|
written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -33,6 +33,8 @@ ifeq ("$(V)","0")
|
|||||||
Q := @
|
Q := @
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CONFIG___EWOL_APPL_NAME__:="$(PROJECT_NAME)"
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## The folowing 2 macros can NOT be put in defs.mk as it will be included
|
## The folowing 2 macros can NOT be put in defs.mk as it will be included
|
||||||
@ -86,6 +88,7 @@ BUILD_RULES := $(BUILD_SYSTEM)/rules.mk
|
|||||||
|
|
||||||
TARGET_OUT_BUILD ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/obj
|
TARGET_OUT_BUILD ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/obj
|
||||||
TARGET_OUT_STAGING ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/staging
|
TARGET_OUT_STAGING ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/staging
|
||||||
|
TARGET_OUT_STAGING_DATA ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/staging
|
||||||
TARGET_OUT_FINAL ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/final
|
TARGET_OUT_FINAL ?= $(shell pwd)/out/$(TARGET_OS)/$(BUILD_DIRECTORY_MODE)/final
|
||||||
|
|
||||||
# Makefile with the list of all makefiles available and include them
|
# Makefile with the list of all makefiles available and include them
|
||||||
@ -164,6 +167,8 @@ ALL_BUILD_MODULES := \
|
|||||||
$(foreach __mod,$(__modules), \
|
$(foreach __mod,$(__modules), \
|
||||||
$(if $(call is-module-in-build-config,$(__mod)),$(__mod)))
|
$(if $(call is-module-in-build-config,$(__mod)),$(__mod)))
|
||||||
|
|
||||||
|
$(info ALL_BUILD_MODULES=$(ALL_BUILD_MODULES))
|
||||||
|
|
||||||
# TODO : Set ALL_BUILD_MODULES ==> find the end point module (SHARED/BINARY)
|
# TODO : Set ALL_BUILD_MODULES ==> find the end point module (SHARED/BINARY)
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(ALL_BUILD_MODULES)
|
all: $(ALL_BUILD_MODULES)
|
||||||
|
@ -68,6 +68,8 @@ include $(BUILD_RULES)
|
|||||||
$(LOCAL_BUILD_MODULE): $(all_objects)
|
$(LOCAL_BUILD_MODULE): $(all_objects)
|
||||||
$(transform-o-to-static-lib)
|
$(transform-o-to-static-lib)
|
||||||
|
|
||||||
|
copy_to_staging := 1
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -125,16 +127,18 @@ all_copy_files :=
|
|||||||
$(foreach __pair,$(LOCAL_COPY_FILES), \
|
$(foreach __pair,$(LOCAL_COPY_FILES), \
|
||||||
$(eval __pair2 := $(subst :,$(space),$(__pair))) \
|
$(eval __pair2 := $(subst :,$(space),$(__pair))) \
|
||||||
$(eval __src := $(addprefix $(LOCAL_PATH)/,$(word 1,$(__pair2)))) \
|
$(eval __src := $(addprefix $(LOCAL_PATH)/,$(word 1,$(__pair2)))) \
|
||||||
$(eval __dst := $(addprefix $(TARGET_OUT_STAGING)/,$(word 2,$(__pair2)))) \
|
$(eval __dst := $(TARGET_OUT_STAGING)/usr/share/$(PROJECT_NAME)/$(word 2,$(__pair2))) \
|
||||||
$(eval all_copy_files += $(__dst)) \
|
$(foreach __file_src,$(__src), \
|
||||||
$(eval $(call copy-one-file,$(__src),$(__dst))) \
|
$(eval all_copy_files += $(__dst)) \
|
||||||
|
$(eval $(call copy-one-file,$(__file_src),$(__dst))) \
|
||||||
|
) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generate a rule to copy all files
|
# Generate a rule to copy all files
|
||||||
$(foreach __pair,$(LOCAL_COPY_FOLDERS), \
|
$(foreach __pair,$(LOCAL_COPY_FOLDERS), \
|
||||||
$(eval __pair2 := $(subst :,$(space),$(__pair))) \
|
$(eval __pair2 := $(subst :,$(space),$(__pair))) \
|
||||||
$(eval __folder_src := $(addprefix $(LOCAL_PATH)/,$(word 1,$(__pair2)))) \
|
$(eval __folder_src := $(addprefix $(LOCAL_PATH)/,$(word 1,$(__pair2)))) \
|
||||||
$(eval __folder_dest := $(addprefix $(TARGET_OUT_STAGING)/,$(word 2,$(__pair2)))) \
|
$(eval __folder_dest := $(TARGET_OUT_STAGING)/usr/share/$(PROJECT_NAME)/$(word 2,$(__pair2))) \
|
||||||
$(eval __list_file_src := $(wildcard $(__folder_src))) \
|
$(eval __list_file_src := $(wildcard $(__folder_src))) \
|
||||||
$(foreach __file_src,$(__list_file_src), \
|
$(foreach __file_src,$(__list_file_src), \
|
||||||
$(eval __file_dest := $(__folder_dest)/$(notdir $(__file_src))) \
|
$(eval __file_dest := $(__folder_dest)/$(notdir $(__file_src))) \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user