From 1fdd97bf8afe2e7d2ec4ef3a7e9266addfba0899 Mon Sep 17 00:00:00 2001 From: Jeong Han Lee <jeonghan.lee@gmail.com> Date: Mon, 29 Jan 2018 17:56:53 +0100 Subject: [PATCH] update asyn to 4.32, and migrate to new E3 --- .gitmodules | 4 - Makefile | 159 ++------------------------------ asyn.Makefile | 6 +- configure/CONFIG | 47 ++++++---- configure/CONFIG_MODULE | 14 +++ configure/CONFIG_MODULE_DEV | 17 ++++ configure/CONFIG_OPTIONS | 11 +++ configure/E3/CONFIG_E3_MAKEFILE | 17 ++++ configure/E3/CONFIG_E3_PATH | 38 ++++++++ configure/E3/CONFIG_EPICS | 64 +++++++++++++ configure/E3/CONFIG_EXPORT | 9 ++ configure/E3/CONFIG_REQUIRE | 9 ++ configure/E3/CONFIG_SUDO | 23 +++++ configure/E3/DEFINES_FT | 24 +++++ configure/E3/RULES_DB | 16 ++++ configure/E3/RULES_DEV | 41 ++++++++ configure/E3/RULES_E3 | 91 ++++++++++++++++++ configure/E3/RULES_EPICS | 14 +++ configure/E3/RULES_VARS | 20 ++++ configure/RELEASE | 5 + configure/RELEASE_DEV | 5 + configure/RULES | 16 ++++ e3-env | 1 - 23 files changed, 476 insertions(+), 175 deletions(-) create mode 100644 configure/CONFIG_MODULE create mode 100644 configure/CONFIG_MODULE_DEV create mode 100644 configure/CONFIG_OPTIONS create mode 100644 configure/E3/CONFIG_E3_MAKEFILE create mode 100644 configure/E3/CONFIG_E3_PATH create mode 100644 configure/E3/CONFIG_EPICS create mode 100644 configure/E3/CONFIG_EXPORT create mode 100644 configure/E3/CONFIG_REQUIRE create mode 100644 configure/E3/CONFIG_SUDO create mode 100644 configure/E3/DEFINES_FT create mode 100644 configure/E3/RULES_DB create mode 100644 configure/E3/RULES_DEV create mode 100644 configure/E3/RULES_E3 create mode 100644 configure/E3/RULES_EPICS create mode 100644 configure/E3/RULES_VARS create mode 100644 configure/RELEASE create mode 100644 configure/RELEASE_DEV create mode 100644 configure/RULES delete mode 160000 e3-env diff --git a/.gitmodules b/.gitmodules index 0e6bd41..4299bcb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "e3-env"] - path = e3-env - url = https://github.com/icshwi/e3-env - ignore = dirty [submodule "asyn"] path = asyn url = https://github.com/epics-modules/asyn diff --git a/Makefile b/Makefile index 2878009..35e24e1 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ # +# Copyright (c) 2017 - Present Jeong Han Lee # Copyright (c) 2017 - Present European Spallation Source ERIC # # The program is free software: you can redistribute @@ -15,163 +16,15 @@ # this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt # # -# Author : jhlee -# email : @esss.se -# Date : generated by 2017Oct30-2331-18CET -# version : 0.0.0 -# -# template file is generated by prepare_module.bash with c9f902bf415d19da874c9c23469a31915da59d34 -# +# Author : Jeong Han Lee +# email : jeonghan.lee@gmail.com +# Date : 2018Jan29-1746-19CET +# 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" -M_OPTIONS += DRV_USBTMC="$(DRV_USBTMC)" - - -# # 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: - @echo "EPICS_BASE=$(COMMUNITY_EPICS_BASE)" > $(TOP)/$(EPICS_MODULE_SRC_PATH)/configure/RELEASE - @echo "INSTALL_LOCATION=$(M_ASYN)" > $(TOP)/$(EPICS_MODULE_SRC_PATH)/configure/CONFIG_SITE - @echo "LINUX_GPIB=NO" >> $(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" - - -.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 - - - +include $(TOP)/configure/RULES diff --git a/asyn.Makefile b/asyn.Makefile index df2a631..59606a8 100644 --- a/asyn.Makefile +++ b/asyn.Makefile @@ -22,7 +22,7 @@ where_am_I := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(REQUIRE_TOOLS)/driver.makefile +include $(E3_REQUIRE_TOOLS)/driver.makefile USR_CFLAGS += -Wno-unused-variable @@ -302,3 +302,7 @@ $(DBDINC_DEPS): $(DBDINC_HDRS) $(DBTORECORDTYPEH) $(USR_DBDFLAGS) -o $@ $< + +# db rule is the default in RULES_E3, so add the empty one + +db: diff --git a/configure/CONFIG b/configure/CONFIG index 0671baa..00a13d4 100644 --- a/configure/CONFIG +++ b/configure/CONFIG @@ -1,16 +1,31 @@ -EPICS_MODULE_NAME:=asyn -export EPICS_MODULE_TAG:=tags/R4-32 -export EPICS_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME) -ESS_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile -export PROJECT:=$(EPICS_MODULE_NAME) -export LIBVERSION:=4.32.0 -export E3_ENV_NAME:=e3-env -# One should install libusb-1.0.0 -# Debian apt-get install libusb-1.0-0-dev libusb-1.0-0 -# USR_INCLUDES -# $ pkg-config --cflags libusb-1.0 -# -I/usr/include/libusb-1.0 -# USR_LDFLAGS -# $ pkg-config --libs libusb-1.0 -# $ -lusb-1.0 -export DRV_USBTMC:=NO +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 + + +-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 diff --git a/configure/CONFIG_MODULE b/configure/CONFIG_MODULE new file mode 100644 index 0000000..1e02d02 --- /dev/null +++ b/configure/CONFIG_MODULE @@ -0,0 +1,14 @@ +# +EPICS_MODULE_NAME:=asyn +EPICS_MODULE_TAG:=tags/R4-32 +# +E3_MODULE_VERSION:=4.32.0 + + +# +# 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 + diff --git a/configure/CONFIG_MODULE_DEV b/configure/CONFIG_MODULE_DEV new file mode 100644 index 0000000..bd652d7 --- /dev/null +++ b/configure/CONFIG_MODULE_DEV @@ -0,0 +1,17 @@ +# +EPICS_MODULE_NAME:=asyn +EPICS_MODULE_TAG:=master +# +E3_MODULE_VERSION:=master + + +# +# 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/asyn" + diff --git a/configure/CONFIG_OPTIONS b/configure/CONFIG_OPTIONS new file mode 100644 index 0000000..babc9f4 --- /dev/null +++ b/configure/CONFIG_OPTIONS @@ -0,0 +1,11 @@ + +# One should install libusb-1.0.0 +# Debian apt-get install libusb-1.0-0-dev libusb-1.0-0 +# USR_INCLUDES +# $ pkg-config --cflags libusb-1.0 +# -I/usr/include/libusb-1.0 +# USR_LDFLAGS +# $ pkg-config --libs libusb-1.0 +# $ -lusb-1.0 +export DRV_USBTMC:=NO + diff --git a/configure/E3/CONFIG_E3_MAKEFILE b/configure/E3/CONFIG_E3_MAKEFILE new file mode 100644 index 0000000..ef3750a --- /dev/null +++ b/configure/E3/CONFIG_E3_MAKEFILE @@ -0,0 +1,17 @@ +# 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_MODULE_MAKE_CMDS:=make $(E3_REQUIRE_MAKEFILE_INPUT_OPTIONS) + + +VARS_EXCLUDES+=E3_REQUIRE_MAKEFILE_INPUT_OPTIONS + diff --git a/configure/E3/CONFIG_E3_PATH b/configure/E3/CONFIG_E3_PATH new file mode 100644 index 0000000..d188961 --- /dev/null +++ b/configure/E3/CONFIG_E3_PATH @@ -0,0 +1,38 @@ +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 + diff --git a/configure/E3/CONFIG_EPICS b/configure/E3/CONFIG_EPICS new file mode 100644 index 0000000..c6516ed --- /dev/null +++ b/configure/E3/CONFIG_EPICS @@ -0,0 +1,64 @@ +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)/seq +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 + diff --git a/configure/E3/CONFIG_EXPORT b/configure/E3/CONFIG_EXPORT new file mode 100644 index 0000000..447dd69 --- /dev/null +++ b/configure/E3/CONFIG_EXPORT @@ -0,0 +1,9 @@ +# 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 + diff --git a/configure/E3/CONFIG_REQUIRE b/configure/E3/CONFIG_REQUIRE new file mode 100644 index 0000000..4626515 --- /dev/null +++ b/configure/E3/CONFIG_REQUIRE @@ -0,0 +1,9 @@ +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 + diff --git a/configure/E3/CONFIG_SUDO b/configure/E3/CONFIG_SUDO new file mode 100644 index 0000000..f4d2cb7 --- /dev/null +++ b/configure/E3/CONFIG_SUDO @@ -0,0 +1,23 @@ +# 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 + diff --git a/configure/E3/DEFINES_FT b/configure/E3/DEFINES_FT new file mode 100644 index 0000000..5c0ccbb --- /dev/null +++ b/configure/E3/DEFINES_FT @@ -0,0 +1,24 @@ +# 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 + diff --git a/configure/E3/RULES_DB b/configure/E3/RULES_DB new file mode 100644 index 0000000..6251c25 --- /dev/null +++ b/configure/E3/RULES_DB @@ -0,0 +1,16 @@ + +## 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 + + diff --git a/configure/E3/RULES_DEV b/configure/E3/RULES_DEV new file mode 100644 index 0000000..41f21d4 --- /dev/null +++ b/configure/E3/RULES_DEV @@ -0,0 +1,41 @@ +# -*- 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 + + diff --git a/configure/E3/RULES_E3 b/configure/E3/RULES_E3 new file mode 100644 index 0000000..4455305 --- /dev/null +++ b/configure/E3/RULES_E3 @@ -0,0 +1,91 @@ + +.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) + + diff --git a/configure/E3/RULES_EPICS b/configure/E3/RULES_EPICS new file mode 100644 index 0000000..4ee0dda --- /dev/null +++ b/configure/E3/RULES_EPICS @@ -0,0 +1,14 @@ +# 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 +# $(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" + + diff --git a/configure/E3/RULES_VARS b/configure/E3/RULES_VARS new file mode 100644 index 0000000..e388285 --- /dev/null +++ b/configure/E3/RULES_VARS @@ -0,0 +1,20 @@ + +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 "" + + diff --git a/configure/RELEASE b/configure/RELEASE new file mode 100644 index 0000000..eb6981d --- /dev/null +++ b/configure/RELEASE @@ -0,0 +1,5 @@ +EPICS_BASE=/testing/epics/base-3.15.5 + +E3_REQUIRE_NAME:=require +E3_REQUIRE_VERSION:=0.0.0 + diff --git a/configure/RELEASE_DEV b/configure/RELEASE_DEV new file mode 100644 index 0000000..eb6981d --- /dev/null +++ b/configure/RELEASE_DEV @@ -0,0 +1,5 @@ +EPICS_BASE=/testing/epics/base-3.15.5 + +E3_REQUIRE_NAME:=require +E3_REQUIRE_VERSION:=0.0.0 + diff --git a/configure/RULES b/configure/RULES new file mode 100644 index 0000000..d3cd59f --- /dev/null +++ b/configure/RULES @@ -0,0 +1,16 @@ +#CONFIG +# include $(EPICS_BASE)/configure/RULES + +include $(TOP)/configure/E3/DEFINES_FT +include $(TOP)/configure/E3/RULES_E3 +include $(TOP)/configure/E3/RULES_EPICS + +include $(TOP)/configure/E3/RULES_DB +include $(TOP)/configure/E3/RULES_VARS + + +ifneq (,$(findstring dev,$(MAKECMDGOALS))) +include $(TOP)/configure/E3/RULES_DEV +endif + + diff --git a/e3-env b/e3-env deleted file mode 160000 index d7bcf9d..0000000 --- a/e3-env +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d7bcf9d5907d2e590b21876358087a7dddcd0553 -- GitLab