Skip to content
Snippets Groups Projects
Commit 9ded87d3 authored by Jeong Han Lee's avatar Jeong Han Lee
Browse files

register target_path_test

parent bb2efafd
No related branches found
No related tags found
No related merge requests found
Showing
with 474 additions and 216 deletions
*.local
*~
\#*
[submodule "e3-env"]
path = e3-env
url = https://github.com/icshwi/e3-env
ignore=dirty
[submodule "devlib2"]
path = devlib2
url = https://github.com/epics-modules/devlib2
......
#
# Copyright (c) 2017 - Present Jeong Han Lee
# Copyright (c) 2017 - Present European Spallation Source ERIC
#
# The program is free software: you can redistribute
......@@ -14,163 +15,16 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt
#
#
# Author : Jeong Han Lee
# email : han.lee@esss.se
# Date : Thursday, November 30 21:38:27 CET 2017
# version : 0.2.1
#
# email : jeonghan.lee@gmail.com
# Date : 2018Feb12-1455-29CET
# version : 0.0.1
TOP:=$(CURDIR)
include $(TOP)/configure/CONFIG
-include $(TOP)/$(E3_ENV_NAME)/$(E3_ENV_NAME)
-include $(TOP)/$(E3_ENV_NAME)/epics-community-env
# Keep always the module up-to-date
define git_update =
@git submodule deinit -f $@/
git submodule deinit -f $@/
sed -i '/submodule/,$$d' $(TOP)/.git/config
rm -rf $(TOP)/.git/modules/$@
git submodule init $@/
git submodule update --init --recursive --recursive $@/.
git submodule update --remote --merge $@/
endef
ifndef VERBOSE
QUIET := @
endif
ifdef DEBUG_SHELL
SHELL = /bin/sh -x
endif
# Pass necessary driver.makefile variables through makefile options
#
M_OPTIONS := -C $(EPICS_MODULE_SRC_PATH)
M_OPTIONS += -f $(ESS_MODULE_MAKEFILE)
M_OPTIONS += LIBVERSION="$(LIBVERSION)"
M_OPTIONS += PROJECT="$(EPICS_MODULE_NAME)"
M_OPTIONS += EPICS_MODULES="$(EPICS_MODULES)"
M_OPTIONS += EPICS_LOCATION="$(EPICS_LOCATION)"
M_OPTIONS += DEFAULT_EPICS_VERSIONS="$(DEFAULT_EPICS_VERSIONS)"
M_OPTIONS += BUILDCLASSES="Linux"
# # help is defined in
# # https://gist.github.com/rcmachado/af3db315e31383502660
help:
$(info --------------------------------------- )
$(info Available targets)
$(info --------------------------------------- )
$(QUIET) awk '/^[a-zA-Z\-\_0-9]+:/ { \
nb = sub( /^## /, "", helpMsg ); \
if(nb == 0) { \
helpMsg = $$0; \
nb = sub( /^[^:]*:.* ## /, "", helpMsg ); \
} \
if (nb) \
print $$1 "\t" helpMsg; \
} \
{ helpMsg = $$0 }' \
$(MAKEFILE_LIST) | column -ts:
default: help
install: uninstall
$(QUIET) sudo -E bash -c 'make $(M_OPTIONS) install'
## Uninstall "Require" Module in order not to use it
uninstall: conf
$(QUIET) sudo -E bash -c 'make $(M_OPTIONS) uninstall'
## Build the EPICS Module
build: conf
$(QUIET) make $(M_OPTIONS) build
## clean, build, and install again.
rebuild: clean build install
## Clean the EPICS Module
clean: conf
$(QUIET) make $(M_OPTIONS) clean
## Show driver.makefile help
help2:
$(QUIET) make $(M_OPTIONS) help
#
## Initialize EPICS BASE and E3 ENVIRONMENT Module
init: git-submodule-sync $(EPICS_MODULE_SRC_PATH) $(E3_ENV_NAME)
git-submodule-sync:
$(QUIET) git submodule sync
$(EPICS_MODULE_SRC_PATH):
$(QUIET) $(git_update)
cd $@ && git checkout $(EPICS_MODULE_TAG)
checkout:
cd $(EPICS_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG)
$(E3_ENV_NAME):
$(QUIET) $(git_update)
## Print EPICS and ESS EPICS Environment variables
env:
$(QUIET) echo ""
$(QUIET) echo "EPICS_MODULE_SRC_PATH : "$(EPICS_MODULE_SRC_PATH)
$(QUIET) echo "ESS_MODULE_MAKEFILE : "$(ESS_MODULE_MAKEFILE)
$(QUIET) echo "EPICS_MODULE_TAG : "$(EPICS_MODULE_TAG)
$(QUIET) echo "LIBVERSION : "$(LIBVERSION)
$(QUIET) echo "PROJECT : "$(PROJECT)
$(QUIET) echo ""
$(QUIET) echo "----- >>>> EPICS BASE Information <<<< -----"
$(QUIET) echo ""
$(QUIET) echo "EPICS_BASE_TAG : "$(EPICS_BASE_TAG)
# $(QUIET) echo "CROSS_COMPILER_TARGET_ARCHS : "$(CROSS_COMPILER_TARGET_ARCHS)
$(QUIET) echo ""
$(QUIET) echo "----- >>>> ESS EPICS Environment <<<< -----"
$(QUIET) echo ""
$(QUIET) echo "EPICS_LOCATION : "$(EPICS_LOCATION)
$(QUIET) echo "EPICS_MODULES : "$(EPICS_MODULES)
$(QUIET) echo "DEFAULT_EPICS_VERSIONS : "$(DEFAULT_EPICS_VERSIONS)
$(QUIET) echo "BASE_INSTALL_LOCATIONS : "$(BASE_INSTALL_LOCATIONS)
$(QUIET) echo "REQUIRE_VERSION : "$(REQUIRE_VERSION)
$(QUIET) echo "REQUIRE_PATH : "$(REQUIRE_PATH)
$(QUIET) echo "REQUIRE_TOOLS : "$(REQUIRE_TOOLS)
$(QUIET) echo "REQUIRE_BIN : "$(REQUIRE_BIN)
$(QUIET) echo ""
conf:
$(QUIET) install -m 644 $(TOP)/$(ESS_MODULE_MAKEFILE) $(EPICS_MODULE_SRC_PATH)/
epics:
$(QUIET)echo "EPICS_BASE=$(COMMUNITY_EPICS_BASE)" > $(TOP)/$(EPICS_MODULE_SRC_PATH)/configure/RELEASE.local
$(QUIET)echo "INSTALL_LOCATION=$(M_DEVLIB2)" > $(TOP)/$(EPICS_MODULE_SRC_PATH)/configure/CONFIG_SITE
sudo -E bash -c "$(MAKE) -C $(EPICS_MODULE_SRC_PATH)"
epics-clean:
sudo -E bash -c "$(MAKE) -C $(EPICS_MODULE_SRC_PATH) clean"
include $(TOP)/configure/RULES
.PHONY: env $(E3_ENV_NAME) $(EPICS_MODULE_SRC_PATH) git-submodule-sync init help help2 build clean install uninstall conf rebuild epics epics-clean checkout
# (EPICS) EPICS_MODULE_NAME
# The EPICS community MODULE name.
# For example, https://github.com/epics-module/devlib2
# devlib2 is EPICS_MODULE_NAME
#
EPICS_MODULE_NAME:=devlib2
# (EPICS) EPICS_MODULE_TAG
# The EPICS community tag number, which we would like to install
# within ESS EPICS Environment (ESS)
# export EPICS_MODULE_TAG:=tags/2.5.1
export EPICS_MODULE_TAG:=tags/2.9
# (LOCAL) EPICS_MODULE_PATH
# Usually, it is the directory in $(TOP), after cloning the repository
# However, some modules from ESS have the weird directory structure.
# If one use the cloned directory, one should define the proper source
# directory path in $(ESS_MODULE_MAKEFILE)
export EPICS_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME)
# (LOCAL) ESS_MODULE_MAKEFILE
# The very strange and additional Makefile for EPICS_MODULE_NAME, which
# should be maintained according to main repository evolving.
# some export variables in CONFIG file
# in order to build and install for EEE
ESS_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile
# (E3) PROJECT
# it is the jargon of E3, from EEE and PSI EPICS Environment,
# the E3 generic makefile (driver.makefile) uses it as the installation
# directory, and it will be used in the iocsh script (aka iocsh.bash)
# with the require commands, for example
# require $(PROJECT) $(LIBVERSION)
export PROJECT:=$(EPICS_MODULE_NAME)
# (E3) LIBVERSION
# it is the jargon of E3, from EEE and PSI EPICS Environment,
# the E3 generic makefile (driver.makefile) uses it as the installation
# directory, and it will be used in the iocsh script (aka iocsh.bash)
# with the require commands, for example
# require $(PROJECT) $(LIBVERSION)
export LIBVERSION:=2.9.0
# It may be the sole reason why we have so many troubles related with
# module version mismatch within the current E3
#
# export USR_DEPENDENCIES += devlib2,2.9.0
# E3_ENV_NAME
# It is the global E3 environment repository
#
export E3_ENV_NAME:=e3-env
#export E3_ENV_TAG:=v0.1
VARS_EXCLUDES := $(.VARIABLES)
ifneq (,$(findstring dev,$(MAKECMDGOALS)))
include $(TOP)/configure/RELEASE_DEV
else
include $(TOP)/configure/RELEASE
endif
# CONFIG=$(EPICS_BASE)/configure
# include $(CONFIG)/CONFIG
ifneq (,$(findstring dev,$(MAKECMDGOALS)))
include $(TOP)/configure/CONFIG_MODULE_DEV
else
include $(TOP)/configure/CONFIG_MODULE
endif
# The definitions shown below can also be placed in an untracked RELEASE.local
-include $(TOP)/../RELEASE.local
-include $(TOP)/configure/RELEASE.local
-include $(TOP)/../CONFIG_MODULE.local
-include $(TOP)/configure/CONFIG_MODULE.local
## Asyn, ADSupport may needs to define other variables
-include $(TOP)/configure/CONFIG_OPTIONS
## It is not necessary to modify the following files in most case.
## Order is matter
include $(TOP)/configure/E3/CONFIG_REQUIRE
include $(TOP)/configure/E3/CONFIG_E3_PATH
include $(TOP)/configure/E3/CONFIG_E3_MAKEFILE
include $(TOP)/configure/E3/CONFIG_EPICS
include $(TOP)/configure/E3/CONFIG_SUDO
include $(TOP)/configure/E3/CONFIG_EXPORT
#
EPICS_MODULE_NAME:=devlib2
EPICS_MODULE_TAG:=tags/2.9
#
E3_MODULE_VERSION:=2.9.0
# ONLY IF this module has the sequencer dependency. However,
# in most case, we don't need to enable the following line,
# the default - latest version will be used
#E3_SEQUENCER_NAME:=sequencer
#E3_SEQUENCER_VERSION:=2.1.21
#
# In most case, we don't need to touch the following variables.
#
E3_MODULE_NAME:=$(EPICS_MODULE_NAME)
E3_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME)
E3_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile
#
EPICS_MODULE_NAME:=devlib2
EPICS_MODULE_TAG:=master
#
E3_MODULE_VERSION:=develop
# ONLY IF this module has the sequencer dependency. However,
# in most case, we don't need to enable the following line,
# the default - latest version will be used
#E3_SEQUENCER_NAME:=sequencer
#E3_SEQUENCER_VERSION:=2.1.21
#
# In most case, we don't need to touch the following variables.
#
E3_MODULE_NAME:=$(EPICS_MODULE_NAME)
E3_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME)-dev
E3_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile
#export DEV_GIT_URL:="https://where your git repo"
E3_MODULE_DEV_GITURL:="https://github.com/epics-modules/devlib2"
# Pass necessary driver.makefile variables through makefile options
#
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS := -C $(E3_MODULE_SRC_PATH)
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += -f $(E3_MODULE_MAKEFILE)
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += LIBVERSION="$(E3_MODULE_VERSION)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += PROJECT="$(E3_MODULE_NAME)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += EPICS_MODULES="$(E3_MODULES_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += EPICS_LOCATION="$(EPICS_BASE)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += BUILDCLASSES="Linux"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITEMODS_PATH="$(E3_SITEMODS_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITEAPPS_PATH="$(E3_SITEAPPS_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITELIBS_PATH="$(E3_SITELIBS_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SEQUENCER_NAME="$(E3_SEQUENCER_NAME)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SEQUENCER_VERSION="$(E3_SEQUENCER_VERSION)"
E3_MODULE_MAKE_CMDS:=make $(E3_REQUIRE_MAKEFILE_INPUT_OPTIONS)
VARS_EXCLUDES+=E3_REQUIRE_MAKEFILE_INPUT_OPTIONS
E3_MODULES_PATH:=$(E3_REQUIRE_LOCATION)/siteMods
E3_SITEMODS_PATH:=$(E3_MODULES_PATH)
E3_SITELIBS_PATH:=$(E3_REQUIRE_LOCATION)/siteLibs
E3_SITEAPPS_PATH:=$(E3_REQUIRE_LOCATION)/siteApps
E3_MODULES_INSTALL_LOCATION:=$(E3_SITEMODS_PATH)/$(E3_MODULE_NAME)/$(E3_MODULE_VERSION)
E3_MODULES_INSTALL_LOCATION_INC:=$(E3_MODULES_INSTALL_LOCATION)/include
E3_MODULES_INSTALL_LOCATION_DB :=$(E3_MODULES_INSTALL_LOCATION)/db
E3_MODULES_INSTALL_LOCATION_BIN:=$(E3_MODULES_INSTALL_LOCATION)/bin
E3_MODULES_INSTALL_LOCATION_INC_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_include
E3_MODULES_INSTALL_LOCATION_DB_LINK :=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_db
E3_MODULES_INSTALL_LOCATION_BIN_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_bin
E3_MODULES_INSTALL_LOCATION_DBD:=$(E3_MODULES_INSTALL_LOCATION)/dbd/$(E3_MODULE_NAME).dbd
E3_MODULES_INSTALL_LOCATION_DBD_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME).dbd.$(E3_MODULE_VERSION)
# It is a bit weird, it would be better to implement within driver.makefile later
# Assumption : we are using the same lib name from driver.makefile
E3_MODULES_LIBNAME:=lib$(E3_MODULE_NAME).so
INSTALLED_EPICS_BASE_ARCHS_PATHS=$(sort $(dir $(wildcard $(EPICS_BASE)/bin/*/)))
TEMP_INSTALLED_EPICS_BASE_ARCHS=$(INSTALLED_EPICS_BASE_ARCHS_PATHS:$(EPICS_BASE)/bin/%=%)
INSTALLED_EPICS_BASE_ARCHS=$(TEMP_INSTALLED_EPICS_BASE_ARCHS:/=)
### Exclude the following variables to display
VARS_EXCLUDES+=TEMP_INSTALLED_EPICS_BASE_ARCHS
VARS_EXCLUDES+=INSTALLED_EPICS_BASE_ARCHS_PATHS
COMMUNITY_EPICS_MODULES:=$(EPICS_BASE)/epics-modules
M_AUTOSAVE:=$(COMMUNITY_EPICS_MODULES)/autosave
M_DEVLIB2:=$(COMMUNITY_EPICS_MODULES)/devlib2
M_IOCSTATS:=$(COMMUNITY_EPICS_MODULES)/iocStats
M_ASYN:=$(COMMUNITY_EPICS_MODULES)/asyn
M_BUSY:=$(COMMUNITY_EPICS_MODULES)/busy
M_MODBUS:=$(COMMUNITY_EPICS_MODULES)/modbus
M_MRFIOC2:=$(COMMUNITY_EPICS_MODULES)/mrfioc2
M_LUA:=$(COMMUNITY_EPICS_MODULES)/lua
M_IPMICOMM:=$(COMMUNITY_EPICS_MODULES)/ipmiComm
M_STREAM:=$(COMMUNITY_EPICS_MODULES)/stream
M_CALC:=$(COMMUNITY_EPICS_MODULES)/calc
M_MOTOR:=$(COMMUNITY_EPICS_MODULES)/motor
M_SSCAN:=$(COMMUNITY_EPICS_MODULES)/sscan
M_SNCSEQ:=$(COMMUNITY_EPICS_MODULES)/sequencer
M_IP:=$(COMMUNITY_EPICS_MODULES)/ip
M_IPAC:=$(COMMUNITY_EPICS_MODULES)/ipac
M_ADSUPPORT:=$(COMMUNITY_EPICS_MODULES)/adsupport
M_ADCORE:=$(COMMUNITY_EPICS_MODULES)/adcore
export M_AUTOSAVE
export M_DEVLIB2
export M_IOCSTATS
export M_ASYN
export M_BUSY
export M_MODBUS
export M_MRFIOC2
export M_LUA
export M_IPMICOMM
export M_STREAM
export M_CALC
export M_MOTOR
export M_SSCAN
export M_SNCSEQ
export M_IP
export M_IPAC
export M_ADSUPPORT
export M_ADCORE
### Exclude the following variables to display
VARS_EXCLUDES+=COMMUNITY_EPICS_MODULES
VARS_EXCLUDES+=M_AUTOSAVE
VARS_EXCLUDES+=M_DEVLIB2
VARS_EXCLUDES+=M_IOCSTATS
VARS_EXCLUDES+=M_ASYN
VARS_EXCLUDES+=M_BUSY
VARS_EXCLUDES+=M_MODBUS
VARS_EXCLUDES+=M_MRFIOC2
VARS_EXCLUDES+=M_LUA
VARS_EXCLUDES+=M_IPMICOMM
VARS_EXCLUDES+=M_STREAM
VARS_EXCLUDES+=M_CALC
VARS_EXCLUDES+=M_MOTOR
VARS_EXCLUDES+=M_SSCAN
VARS_EXCLUDES+=M_SNCSEQ
VARS_EXCLUDES+=M_IP
VARS_EXCLUDES+=M_IPAC
VARS_EXCLUDES+=M_ADSUPPORT
VARS_EXCLUDES+=M_ADCORE
# Variables should be transferred to module_name.makefile
EPICS_HOST_ARCH:=$(shell $(EPICS_BASE)/startup/EpicsHostArch.pl)
export EPICS_BASE
export EPICS_HOST_ARCH
export E3_REQUIRE_TOOLS
export E3_MODULE_VERSION
#export E3_SITEMODS_PATH
#export E3_SITEAPPS_PATH
#export E3_SITELIBS_PATH
#export E3_SEQUENCER_NAME
#export E3_SEQUENCER_VERSION
E3_REQUIRE_LOCATION:=$(EPICS_BASE)/$(E3_REQUIRE_NAME)/$(E3_REQUIRE_VERSION)
E3_REQUIRE_BIN:=$(E3_REQUIRE_LOCATION)/bin
E3_REQUIRE_TOOLS:=$(E3_REQUIRE_LOCATION)/tools
E3_REQUIRE_LIB:=$(E3_REQUIRE_LOCATION)/lib
E3_REQUIRE_DB:=$(E3_REQUIRE_LOCATION)/db
E3_REQUIRE_DBD:=$(E3_REQUIRE_LOCATION)/dbd
E3_REQUIRE_INC:=$(E3_REQUIRE_LOCATION)/include
# IF EPICS_BASE is not WRITABLE, SUDO and SUDOBASH should be used
# SUDO_INFO 1 : SUDO is needed (NOT writable)
# SUDO_INFO 0 : SUDO is not needed
SUDO_INFO := $(shell test -w $(EPICS_BASE) 1>&2 2> /dev/null; echo $$?)
ifeq "$(SUDO_INFO)" "1"
SUDO := sudo
SUDOBASH = $(SUDO)
SUDOBASH += -E
SUDOBASH += bash -c
endif
# Valid for only Development Mode, because we clone/remove them
# See RULES_DEV
# E3_MODULE_SRC_PATH_INFO 1 : the directory is not there
# E3_MODULE_SRC_PATH_INFO 0 : the directory is there
E3_MODULE_SRC_PATH_INFO := $(shell test -d $(E3_MODULE_SRC_PATH) 1>&2 2> /dev/null; echo $$?)
ifeq "$(E3_MODULE_SRC_PATH_INFO)" "1"
INIT_E3_MODULE_SRC = 1
endif
# Keep always the module up-to-date
define git_update =
git submodule deinit -f $@/
sed -i '/submodule/,24465d' $(TOP)/.git/config
rm -rf $(TOP)/.git/modules/$@
git submodule init $@/
git submodule update --init --recursive $@/.
git submodule update --remote --merge $@/
endef
ifndef VERBOSE
QUIET := @
endif
ifdef DEBUG_SHELL
SHELL = /bin/sh -x
endif
### Exclude the following variables to display
VARS_EXCLUDES+=git_update
VARS_EXCLUDES+=QUIET
VARS_EXCLUDES+=SHELL
## This RULE should be used in case of inflating DB files
## In this case, one should add db: rule in $(EPICS_MODULE_NAME).makefile
## And add db in RULES_E3 also as follows:
## install_module: uninstall db
.PHONY: db
### .....
db: conf
#install -m 644 $(TOP)/template/cpci-evg230-ess.substitutions $(E3_MODULE_SRC_PATH)/evgMrmApp/Db/
$(QUIET) $(E3_MODULE_MAKE_CMDS) db
# -*- mode: Makefile;-*-
.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean
devvars: vars
devenv: devvars
devinit: git-submodule-sync
git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH)
cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG)
ifeq "$(INIT_E3_MODULE_SRC)" "1"
devbuild: nonexists
devclean: nonexists
devinstall: nonexists
devrebuild: nonexists
devuninstall: nonexists
devdistclean: nonexists
nonexists:
$(QUIET)echo ""
$(QUIET)echo "------------------------------------------------------------"
$(QUIET)echo " Could not find $(E3_MODULE_SRC_PATH) "
$(QUIET)echo " Please make devinit first ! "
$(QUIET)echo "------------------------------------------------------------"
$(QUIET)echo ""
else
devbuild: build
devclean: clean
devinstall: install
devrebuild: rebuild
devuninstall: uninstall
devdistclean: clean
$(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... "
rm -rf $(E3_MODULE_SRC_PATH)
endif
.PHONY: help default install uninstall build rebuild clean conf
default: help
# # help is defined in
# # https://gist.github.com/rcmachado/af3db315e31383502660
help:
$(info --------------------------------------- )
$(info Available targets)
$(info --------------------------------------- )
$(QUIET) awk '/^[a-zA-Z\-\_0-9]+:/ { \
nb = sub( /^## /, "", helpMsg ); \
if(nb == 0) { \
helpMsg = $$0; \
nb = sub( /^[^:]*:.* ## /, "", helpMsg ); \
} \
if (nb) \
print $$1 "\t" helpMsg; \
} \
{ helpMsg = $$0 }' \
$(MAKEFILE_LIST) | column -ts:
## Install : $(E3_MODULE_NAME)
install: install_module install_links
#install_module: uninstall
install_module: uninstall db
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) install'
## Uninstall : $(E3_MODULE_NAME)
uninstall: conf
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) uninstall'
## Build the EPICS Module : $(E3_MODULE_NAME)
# Build always the Module with the EPICS_MODULES_TAG
build: conf checkout
$(QUIET) $(E3_MODULE_MAKE_CMDS) build
## Clean, build, and install the EPICS Module : $(E3_MODULE_NAME)
rebuild: clean build install
## Clean : $(E3_MODULE_NAME)
clean: conf
$(QUIET) $(E3_MODULE_MAKE_CMDS) clean
## Copy $(E3_MODULE_MAKEFILE) into $(E3_MODULE_SRC_PATH)
conf:
$(QUIET) install -m 644 $(TOP)/$(E3_MODULE_MAKEFILE) $(E3_MODULE_SRC_PATH)/
.PHONY: init git-submodule-sync $(E3_MODULE_SRC_PATH) checkout
## Initialize : $(E3_MODULE_SRC_PATH)
init: git-submodule-sync $(E3_MODULE_SRC_PATH) checkout
git-submodule-sync:
$(QUIET) git submodule sync
$(E3_MODULE_SRC_PATH):
$(QUIET) $(git_update)
checkout:
cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG)
# Create symbolic links in siteLibs
.PHONY: install_links $(INSTALLED_EPICS_BASE_ARCHS)
install_links: $(INSTALLED_EPICS_BASE_ARCHS)
$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_INC) $(E3_MODULES_INSTALL_LOCATION_INC_LINK)
$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_DB) $(E3_MODULES_INSTALL_LOCATION_DB_LINK)
$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_BIN) $(E3_MODULES_INSTALL_LOCATION_BIN_LINK)
$(SUDO) ln -sf $(E3_MODULES_INSTALL_LOCATION_DBD) $(E3_MODULES_INSTALL_LOCATION_DBD_LINK)
$(INSTALLED_EPICS_BASE_ARCHS):
$(SUDO) mkdir -p $(E3_SITELIBS_PATH)/$@
$(SUDO) ln -sf $(E3_MODULES_INSTALL_LOCATION)/lib/$@/$(E3_MODULES_LIBNAME) $(E3_SITELIBS_PATH)/$@/$(E3_MODULE_NAME).lib.$(E3_MODULE_VERSION)
# One should define the any dependency modules and EPICS base path
# in the following directory
.PHONY: epics epics-clean
epics:
$(QUIET)echo "EPICS_BASE=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE.local
$(QUIET)echo "INSTALL_LOCATION=$(M_DEVLIB2)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE
$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)"
epics-clean:
$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) clean"
E3_MODULES_VARIABLES:=$(sort $(filter-out $(VARS_EXCLUDES) VARS_EXCLUDES,$(.VARIABLES)))
.PHONY : env vars header
## Print interesting VARIABLES
env: vars
vars: header
$(foreach v, $(E3_MODULES_VARIABLES), $(info $(v) = $($(v)))) @#noop
header:
$(QUIET)echo ""
$(QUIET)echo "------------------------------------------------------------"
$(QUIET)echo ">>>> Current EPICS and E3 Envrionment Variables <<<<"
$(QUIET)echo "------------------------------------------------------------"
$(QUIET)echo ""
EPICS_BASE=/testing/epics/base-3.15.5
E3_REQUIRE_NAME:=require
E3_REQUIRE_VERSION:=0.0.0
EPICS_BASE=/testing/epics/base-3.15.5
E3_REQUIRE_NAME:=require
E3_REQUIRE_VERSION:=0.0.0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment