diff options
author | Angelo Mantellini (manangel) <angelo.mantellini@irt-systemx.fr> | 2017-03-29 18:00:06 +0200 |
---|---|---|
committer | Angelo Mantellini (manangel) <angelo.mantellini@irt-systemx.fr> | 2017-03-30 18:58:33 +0200 |
commit | 3137acdd5a45285dab9903f9d41560c63eca8523 (patch) | |
tree | 38bd8525a9e214d848a73fc40e81ddb182cf91b6 /Makefile | |
parent | 9b30fc10fb1cbebe651e5a107e8ca5b24de54675 (diff) |
first commit
Change-Id: I8412b8e7d966c2fbc508b537fd9a9bbcfc628ca8
Signed-off-by: Angelo Mantellini (manangel) <angelo.mantellini@irt-systemx.fr>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..61a36eb2 --- /dev/null +++ b/Makefile @@ -0,0 +1,319 @@ + ############################################################################# + # Copyright (c) 2017 Cisco and/or its affiliates. + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at: + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + ############################################################################## + +DISTILLERY_VERSION=2.0 + +default.target: help + +all: init_depend install-all + +############################################################## +# Variables +# +# Set some variables +DISTILLERY_STAMP=.distillery.stamp +REBUILD_DEPENDS= + +############################################################## +# Load the configuration +# +# For more information please see config.default.mk +# +DISTILLERY_CONFIG_DIR ?= config + +##DISTILLERY_DEFAULT_CONFIG ?= ${DISTILLERY_CONFIG_DIR}/config.mk +##DISTILLERY_LOCAL_CONFIG ?= ${DISTILLERY_CONFIG_DIR}/local/config.mk +DISTILLERY_USER_CONFIG ?= ${DISTILLERY_CONFIG_DIR}/config.mk + +ifneq (,$(wildcard ${DISTILLERY_USER_CONFIG})) + include ${DISTILLERY_USER_CONFIG} + REBUILD_DEPENDS+=${DISTILLERY_USER_CONFIG} +else + DISTILLERY_USER_CONFIG+="[Not Found]" +endif + +ifneq (,$(wildcard ${DISTILLERY_LOCAL_CONFIG})) + include ${DISTILLERY_LOCAL_CONFIG} + REBUILD_DEPENDS+=${DISTILLERY_LOCAL_CONFIG} +endif + +include ${DISTILLERY_DEFAULT_CONFIG} + + +############################################################## +# Set the paths +# +# PATH: add our install dir, build dependencies and system dependencies +# LD_RUN_PATH: add our install dir + +export PATH := $(DISTILLERY_INSTALL_DIR)/bin:$(DISTILLERY_TOOLS_DIR)/bin:$(PATH) +#export LD_RUN_PATH := $(DISTILLERY_INSTALL_DIR)/lib +#export LD_LIBRARY_PATH := $(DISTILLERY_INSTALL_DIR)/lib +export CCNX_HOME +export FOUNDATION_HOME + + +############################################################## +# Modules +# +# Load the modules config. Please refer to that file for more information +DISTILLERY_MODULES_DIR=${DISTILLERY_CONFIG_DIR}/modules + +# The modules variable is a list of modules. It will be populated by the +# modules config files. +modules= +modules_dir= + include config/modules/000-distillery-update.mk + include config/modules/000-gitModule.mk + include config/modules/001-modules.mk + include config/modules/002-cmake-modules.mk + include config/modules/002-make-modules.mk + include config/modules/100-distillery.mk + include config/modules/110-longbow.mk + include config/modules/120-libparc.mk + include config/modules/210-libccnx-common.mk + include config/modules/220-libccnx-transport-rta.mk + include config/modules/230-libccnx-portal.mk + include config/modules/510-Metis.mk + include config/modules/610-libicnet.mk + include config/modules/610-libdash.mk + +# Load user defined modules +DISTILLERY_USER_MODULES_DIR=${DISTILLERY_USER_CONFIG_DIR}/modules +ifneq (,$(wildcard ${DISTILLERY_USER_MODULES_DIR})) + include ${DISTILLERY_USER_MODULES_DIR}/*.mk +else + DISTILLERY_USER_MODULES_DIR+="[Not Found]" +endif + +ifdef ${DISTILLERY_LOCAL_MODULES_DIR} + include ${DISTILLERY_LOCAL_MODULES_DIR}/*.mk +else + DISTILLERY_LOCAL_MODULES_DIR="[Undefined]" +endif + + +############################################################## +# Build variables and rules +# + +# We're going to create lists of targets as convenience +modules_clean=$(modules:=.clean) +modules_check=$(modules:=.check) +modules_step=$(modules:=.step) +modules_average-coverage=$(modules:=.average-coverage) + +# These are the basic build rules. They will call the module specific rules +install-all: install-directories pre-requisites ${modules} + +#distillery-sync: distillery-update ${DISTILLERY_ROOT_DIR}/tools/bin/syncOriginMasterWithCCNXUpstream +# @${DISTILLERY_ROOT_DIR}/tools/bin/syncOriginMasterWithCCNXUpstream + +init_depend: + ./scripts/init.sh ${ABI} ${DISTILLERY_INSTALL_DIR}; +android_metis: + ./scripts/compile_androidmetis.sh +android_metis_debug: + ./scripts/compile_androidmetis.sh DEBUG +android_iget: + ./scripts/compile_androidiget.sh +android_iget_debug: + ./scripts/compile_androidiget.sh DEBUG + +clobber: distclean + @rm -rf ${CONFIGURE_CACHE_FILE} + @rm -rf ${DISTILLERY_INSTALL_DIR}/bin + @rm -rf ${DISTILLERY_INSTALL_DIR}/lib + @rm -rf ${DISTILLERY_INSTALL_DIR}/include + @rm -rf ${DISTILLERY_INSTALL_DIR}/share + @rm -rf ${DISTILLERY_INSTALL_DIR}/etc + @rm -rf ${DISTILLERY_XCODE_DIR} + @rm -rf .*.stamp + +clean: ${modules_clean} + @rm -rf report.txt + +distclean: + @rm -rf ${DISTILLERY_BUILD_DIR} + @rm -rf report.txt + +#distillery-update: +# @echo "Fetching Distillery..." +# @git fetch --all +# @git pull + +distillery-upstream: + git remote add ${DISTILLERY_GITHUB_UPSTREAM_NAME} ${DISTILLERY_GITHUB_UPSTREAM_REPO} + +check: ${modules_check} + +step: ${modules_step} + +# From Distillery, 'make coverage' actually runs the summary version of coverage +# You can also run 'make <module>.coverage' to get the output showing each file and its coverage. +coverage: ${modules_average-coverage} + +dependencies: + @${MAKE} -C dependencies + +dependencies.clean: + @${MAKE} -C dependencies clean + +dependencies.clobber: + @${MAKE} -C dependencies clobber + +pre-requisites: + +help: + @echo "Simple instructions: run \"make update step\"" + @echo + @echo "---- Basic build targets ----" + @echo "make help - This help message" + @echo "make info - Show basic information" + @echo "make status - Show status of modules" + @echo "make update - git clone and pull the different modules to the head of master" + @echo "make sync - fetch all remotes, merge upstream master, push to origin master" + @echo "make step - Module by module: configure, compile and install all software" + @echo " in the install directory (see make info) and run tests" + @echo "make all - Configure, compile and install all software in DISTILLERY_INSTALL_DIR" + @echo "make check - Run all the tests" + @echo "make clobber - Clean the build, remove the install software" + @echo + @echo "make sanity - Run simple sanity checks to test that the build is functional" + @echo + @echo "make coverage - Show the average coverage of each module." + @echo "make <module>.coverage - Show the coverage of each file in the specified module." + @echo + @echo "---- Advanced targets ----" + @echo "make nuke-all-modules - DANGEROUS! Clean all the modules to git checkout (git clean -dfx)" + @echo " - You will lose all uncommitted changes" + @echo "make clean - Clean the build" + @echo "make distclean - Distclean the build" + @echo "make *-debug - make a target with DEBUG on (e.g. all-debug or check-debug)" + @echo "make *-release - make a target with RELEASE on (optimized)" + @echo "make *-nopants - make a target with NOPANTS on (no validation - use at your own risk)" + @echo + @echo "---- IDE support targets ----" + @echo "make xcode - Create xcode projects [only works on Mac]" + @echo "make MasterIDE.xcode - Makes an xcode uber-project (based on all-debug) that contains" + @echo " - the various sub-mdules" + @echo "make MasterIDE.xcodeopen - Makes MasterIDE.xcode and the starts xcode" + @echo "make MasterIDE.clionopen - Creates an uber CMakeLists.txt and starts CLion with the necessary" + @echo " - environment for development" + @echo + @echo "---- Basic module targets ----" + @echo "Module Directory = ${MODULES_DIRECTORY_DEFAULT}" + @echo "Modules Loaded = ${modules}" + @echo "GitModules Loaded = ${gitmodules}" + @echo "Per-module targets: \"Module\" \"Module.distclean\" \"Module.nuke\" \"Module-debug\"" + + +${DISTILLERY_STAMP}: ${REBUILD_DEPENDS} + touch $@ + +debug-%: export CMAKE_BUILD_TYPE_FLAG = -DCMAKE_BUILD_TYPE=DEBUG +debug-%: export DISTILLERY_BUILD_NAME = -debug +debug-%: + @${MAKE} $* + +%-debug: debug-% ; + +release-%: export CMAKE_BUILD_TYPE_FLAG = "-DCMAKE_BUILD_TYPE=RELEASE" +release-%: export DISTILLERY_BUILD_NAME = -release +release-%: + @${MAKE} $* + +%-release: release-% ; + +nopants-%: export CMAKE_BUILD_TYPE_FLAG = "-DCMAKE_BUILD_TYPE=NOPANTS" +nopants-%: export DISTILLERY_BUILD_NAME = -nopants +nopants-%: + @${MAKE} $* + +%-nopants: nopants-% ; + +releasedebug-%: export CMAKE_BUILD_TYPE_FLAG = "-DCMAKE_BUILD_TYPE=RELWITHDEBINFO" +releasedebug-%: export DISTILLERY_BUILD_NAME = -releasedebug +releasedebug-%: + @${MAKE} $* + +%-releasedebug: releasedebug-% ; + +install-directories: + @mkdir -p ${DISTILLERY_INSTALL_DIR}/include + @mkdir -p ${DISTILLERY_INSTALL_DIR}/lib + @mkdir -p ${DISTILLERY_INSTALL_DIR}/bin + +Distillery.report: + @echo '###################################' + @echo 'Distillery report' + @echo "#" `date "+%Y-%m-%d %H:%M:%S"` + @echo "#" `uname -sr` "-" `uname -pm` + @echo "#" `uname -n` + @echo "#" PATH=${PATH} + + @git status + @git log -1 + @git diff -U1 + +report.txt: + $(MAKE) report > report.txt + @cat report.txt + +distillery.checkout.error: + @echo + @echo =========================================================== + @echo + @echo DISTILLERY ERROR: You have not checked out a repository! + @echo Please make sure to run \"make update\" at least once + @echo + @echo Otherwise there is a misconfigured module, + @echo please check the module config files at .distillery/modules + @echo + @echo =========================================================== + @echo + + +info: + @echo "############ Distillery Info ##################" + @${MAKE} env + + +# env produces shell interpretable output. It is read by some scripts. +# DO NOT ALTER THE FORMAT +env: + @echo DISTILLERY_ROOT_DIR=${DISTILLERY_ROOT_DIR} + @echo DISTILLERY_SOURCE_DIR=${DISTILLERY_SOURCE_DIR} + @echo DISTILLERY_BUILD_DIR=${DISTILLERY_BUILD_DIR} + @echo DISTILLERY_DEFAULT_CONFIG=${DISTILLERY_DEFAULT_CONFIG} + @echo DISTILLERY_LOCAL_CONFIG=${DISTILLERY_LOCAL_CONFIG} + @echo DISTILLERY_USER_CONFIG=${DISTILLERY_USER_CONFIG} + @echo DISTILLERY_MODULES_DIR=${DISTILLERY_MODULES_DIR} + @echo DISTILLERY_LOCAL_MODULES_DIR=${DISTILLERY_LOCAL_MODULES_DIR} + @echo DISTILLERY_USER_MODULES_DIR=${DISTILLERY_USER_MODULES_DIR} + @echo DISTILLERY_INSTALL_DIR=${DISTILLERY_INSTALL_DIR} + @echo DISTILLERY_DEPENDENCIES_DIR=${DISTILLERY_DEPENDENCIES_DIR} + @echo DISTILLERY_EXTERN_DIR=${DISTILLERY_EXTERN_DIR} + @echo DISTILLERY_TOOLS_DIR=${DISTILLERY_TOOLS_DIR} + @echo DISTILLERY_GITHUB_URL=${DISTILLERY_GITHUB_URL} + @echo DISTILLERY_GITHUB_URL_USER=${DISTILLERY_GITHUB_URL_USER} + @echo DISTILLERY_GITHUB_UPSTREAM_URL=${DISTILLERY_GITHUB_UPSTREAM_URL} + @echo CCNX_DEPENDENCIES=${CCNX_DEPENDENCIES} + @echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} + @echo LD_RUN_PATH=${LD_RUN_PATH} + @echo CCNX_HOME=${CCNX_HOME} + @echo PATH=${PATH} + +.PHONY: dependencies |