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

remove old global conf path

parent 992cd231
No related branches found
No related tags found
No related merge requests found
Showing with 0 additions and 449 deletions
# 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_VENDOR_LIBS_LOCATION:=$(E3_SITELIBS_PATH)/vendor/$(E3_MODULE_NAME)/$(E3_MODULE_VERSION)
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_LIB:=$(E3_MODULES_INSTALL_LOCATION)/lib
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_LIB_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_lib
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)
EXPORT_VARS+=E3_MODULES_VENDOR_LIBS_LOCATION
#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_INC
#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_DB
#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_BIN
#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB
EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB_LINK
# 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
E3_MODULES_LIBLINKNAME:=$(E3_MODULES_LIBNAME).$(E3_MODULE_VERSION)
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)/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
M_PVDATA:=$(COMMUNITY_EPICS_MODULES)/pvData
M_PVACCESS:=$(COMMUNITY_EPICS_MODULES)/pvAccess
M_PVA2PVA:=$(COMMUNITY_EPICS_MODULES)/pva2pva
M_PVCOMMON:=$(COMMUNITY_EPICS_MODULES)/pvCommon
M_PVASRV:=$(COMMUNITY_EPICS_MODULES)/pvaSrv
M_PVDATABASE:=$(COMMUNITY_EPICS_MODULES)/pvDatabase
M_NORMATIVETYPES:=$(COMMUNITY_EPICS_MODULES)/normativeTypes
M_PVACLIENT:=$(COMMUNITY_EPICS_MODULES)/pvaClient
EXPORT_VARS+=$(filter M_%,$(.VARIABLES))
### Exclude the following variables to display
VARS_EXCLUDES+=COMMUNITY_EPICS_MODULES
VARS_EXCLUDES+=$(filter M_%,$(.VARIABLES))
# Variables should be transferred to module_name.makefile
EPICS_HOST_ARCH:=$(shell perl $(EPICS_BASE)/startup/EpicsHostArch.pl)
# In near future, BASE may drop "startup" directory, so
#
ifeq ($(strip $(EPICS_HOST_ARCH)),)
EPICS_HOST_ARCH:=$(shell perl $(EPICS_BASE)/lib/perl/EpicsHostArch.pl)
endif
MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi
EXPORT_VARS+=EPICS_HOST_ARCH
EXPORT_VARS+=EPICS_BASE
EXPORT_VARS+=MSI
EXPORT_VARS+=E3_REQUIRE_TOOLS
EXPORT_VARS+=E3_MODULE_VERSION
EXPORT_VARS+=E3_SITEMODS_PATH
EXPORT_VARS+=E3_SITEAPPS_PATH
EXPORT_VARS+=E3_SITELIBS_PATH
EXPORT_VARS+=E3_SEQUENCER_NAME
EXPORT_VARS+=E3_SEQUENCER_VERSION
EXPORT_VARS+=QUIET
EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES))
EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES))
EXPORT_VARS+=$(filter SUDO%,$(.VARIABLES))
export_version=$(eval export $1)
$(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v)))
VARS_EXCLUDES+=export_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) -E
SUDOBASH += bash -c
else
SUDO :=
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
define git_module_init_update =
git submodule update --init --recursive $@/.
git submodule update --remote --merge $@/
endef
define patch_site
for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\
printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i";\
patch -d $(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 < $$i;\
done
endef
define patch_revert_site
for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\
printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i";\
patch -R -d $(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 < $$i;\
done
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+=git_module_init_update
VARS_EXCLUDES+=patch_site
VARS_EXCLUDES+=patch_revert_site
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
## install -m 644 $(TOP)/template/cpci-evg230-ess.substitutions $(E3_MODULE_SRC_PATH)/evgMrmApp/Db/
.PHONY: db
### .....
db: conf
$(QUIET) $(E3_MODULE_MAKE_CMDS) db
# -*- mode: Makefile;-*-
.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devepics devepics-clean devpatch devpatchrevert devexistent
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
devepics: nonexists
devepics-clean: nonexists
devpatch: nonexists
devpatchrevert: nonexists
devexistent: 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)
devepics: epics
devepics-clean: epics-clean
devpatch: patch
devpatchrevert: patchrevert
devexistent: existent
endif
.DEFAULT_GOAL := help
.PHONY: help default install uninstall build rebuild clean conf
# # 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 : $(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'
$(SUDO) find $(E3_SITELIBS_PATH) -xtype l -delete
## Build the EPICS Module : $(E3_MODULE_NAME)
# Build always the Module with the EPICS_MODULES_TAG
build: conf checkout vlibs
$(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)
# GNU fine is needed
install_links: $(INSTALLED_EPICS_BASE_ARCHS) pv
$(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 -snf $(E3_MODULES_INSTALL_LOCATION_LIB) $(E3_MODULES_INSTALL_LOCATION_LIB_LINK)
$(SUDO) ln -sf $(E3_MODULES_INSTALL_LOCATION_DBD) $(E3_MODULES_INSTALL_LOCATION_DBD_LINK)
$(SUDO) find $(E3_SITELIBS_PATH) -xtype l -delete
$(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_MODULES_LIBLINKNAME)
# 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 "EPICS_BASE=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/exampleTop/configure/RELEASE.local
$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)"
epics-clean:
$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) clean"
modules:
$(MAKE) -C $(E3_KMOD_SRC_PATH) $@
# Always SUDO is needed
modules_install:
sudo -E bash -c "$(MAKE) -C $(E3_KMOD_SRC_PATH) $@"
modules_clean:
$(MAKE) -C $(E3_KMOD_SRC_PATH) clean
.PHONY: modules modules_install modules_clean
.PHONY: patch patchrevert
## Apply Patch Files
patch:
$(QUIET) $(call patch_site)
## Revert Patch Files
patchrevert:
$(QUIET) $(call patch_revert_site)
# don't like to do this, but without changing driver.Makefile heavily,
# it is only the way to do this.
# We have to move all pv headers to its own include/pv directories
#
pv:
# $(SUDO) install -m 755 -d $(E3_MODULES_INSTALL_LOCATION_INC)/pv
# cd $(E3_MODULES_INSTALL_LOCATION_INC) && $(SUDO) mv *.h pv/
.PHONY: pv
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 ""
existent:
$(QUIET)tree -L 2 $(E3_MODULES_PATH)/$(E3_MODULE_NAME)
.PHONY: vlibs
vlibs: conf
$(QUIET) $(E3_MODULE_MAKE_CMDS) vlibs
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