diff --git a/configure/CONFIG b/configure/CONFIG index a6f25bee68a64f6b4bc7c32f608b4758bf66d283..5487f77846cc36317c6fd4c76ae2643bc787ae92 100644 --- a/configure/CONFIG +++ b/configure/CONFIG @@ -18,15 +18,17 @@ include $(TOP)/configure/CONFIG_MODULE endif +E3_MODULES_PATH:=$(EPICS_BASE) +REQUIRE_CONFIG:=$(TOP)/configure/E3 include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION -include $(TOP)/configure/E3/CONFIG_REQUIRE -include $(TOP)/configure/E3/CONFIG_SHELL -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_EXPORT -include $(TOP)/configure/E3/CONFIG_TEST +include $(REQUIRE_CONFIG)/CONFIG_REQUIRE +include $(REQUIRE_CONFIG)/CONFIG_SHELL +include $(REQUIRE_CONFIG)/CONFIG_E3_PATH +include $(REQUIRE_CONFIG)/CONFIG_E3_MAKEFILE +include $(REQUIRE_CONFIG)/CONFIG_TEST +include $(REQUIRE_CONFIG)/CONFIG_EPICS +include $(REQUIRE_CONFIG)/CONFIG_EXPORT VARS_EXCLUDES+=BASE_3_14 diff --git a/configure/modules/CONFIG b/configure/E3/CONFIG similarity index 95% rename from configure/modules/CONFIG rename to configure/E3/CONFIG index 377f34b3e52ddbdfb0d5fb137525db105957652a..d8dac693e96d7a17b63a328c31736be6a36da429 100644 --- a/configure/modules/CONFIG +++ b/configure/E3/CONFIG @@ -3,6 +3,8 @@ # Update the module version (for numeric versions) with a build number of 0 if none is specified E3_MODULE_VERSION:=$(E3_MODULE_VERSION)$(shell [[ "$(E3_MODULE_VERSION)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$$ ]] && echo +0) +E3_MODULES_PATH?=$(E3_REQUIRE_LOCATION)/siteMods + include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION include $(REQUIRE_CONFIG)/CONFIG_REQUIRE include $(REQUIRE_CONFIG)/CONFIG_SHELL diff --git a/configure/modules/CONFIG_CELL b/configure/E3/CONFIG_CELL similarity index 100% rename from configure/modules/CONFIG_CELL rename to configure/E3/CONFIG_CELL diff --git a/configure/modules/CONFIG_DKMS b/configure/E3/CONFIG_DKMS similarity index 100% rename from configure/modules/CONFIG_DKMS rename to configure/E3/CONFIG_DKMS diff --git a/configure/E3/CONFIG_E3_MAKEFILE b/configure/E3/CONFIG_E3_MAKEFILE index 1e8aad839c5229ca23ea24a1651d6231afecb138..f3d6ba4b6dc5230b20519468f7d7bf27325ed657 100644 --- a/configure/E3/CONFIG_E3_MAKEFILE +++ b/configure/E3/CONFIG_E3_MAKEFILE @@ -1,9 +1,6 @@ # Pass necessary driver.makefile variables through makefile options # -# Here, E3_MODULES_PATH is the same as E3_REQUIRE_LOCATION -E3_MODULES_PATH:=$(EPICS_BASE) - 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)" diff --git a/configure/E3/CONFIG_E3_PATH b/configure/E3/CONFIG_E3_PATH index ec621bda6661ae6aa7beabeb1d46f8b6499483ee..43e724ec3742ad84de80b6225c4ee2e1fa0bafba 100644 --- a/configure/E3/CONFIG_E3_PATH +++ b/configure/E3/CONFIG_E3_PATH @@ -3,3 +3,12 @@ E3_SITEMODS_PATH:=$(E3_REQUIRE_LOCATION)/siteMods E3_SITELIBS_PATH:=$(E3_REQUIRE_LOCATION)/siteLibs E3_SITEAPPS_PATH:=$(E3_REQUIRE_LOCATION)/siteApps + +E3_MODULES_INSTALL_LOCATION:=$(E3_MODULES_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 + +EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB diff --git a/configure/E3/CONFIG_EPICS b/configure/E3/CONFIG_EPICS index 320b00b92643843e967449d05453104cc4ac7fb2..20902b72e24e085407cd3e1dad7a2d79636312d5 100644 --- a/configure/E3/CONFIG_EPICS +++ b/configure/E3/CONFIG_EPICS @@ -42,6 +42,10 @@ export M_ADSUPPORT export M_ADCORE export M_OPCUA +## This is needed since the target "epics" (in configure/RULES_MODULE in most modules) +## uses SUDOBASH to run the make process +SUDOBASH := bash -c + ### Exclude the following variables to display VARS_EXCLUDES+=COMMUNITY_EPICS_MODULES VARS_EXCLUDES+=M_AUTOSAVE @@ -63,3 +67,5 @@ VARS_EXCLUDES+=M_IPAC VARS_EXCLUDES+=M_ADSUPPORT VARS_EXCLUDES+=M_ADCORE VARS_EXCLUDES+=M_OPCUA + +VARS_EXCLUDES+=SUDOBASH diff --git a/configure/E3/CONFIG_EXPORT b/configure/E3/CONFIG_EXPORT index 6aeb4e9b4da846de22e6e29cd2d5f2239ec80475..6d5b66093de4e210d1c539f72b5e2ea155d3a2f9 100644 --- a/configure/E3/CONFIG_EXPORT +++ b/configure/E3/CONFIG_EXPORT @@ -7,6 +7,7 @@ MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi EXPORT_VARS+=EPICS_HOST_ARCH EXPORT_VARS+=EPICS_BASE EXPORT_VARS+=MSI +EXPORT_VARS+=E3_MODULE_NAME EXPORT_VARS+=E3_MODULE_VERSION EXPORT_VARS+=E3_SITEMODS_PATH EXPORT_VARS+=E3_SITEAPPS_PATH @@ -16,6 +17,7 @@ EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES)) EXPORT_VARS+=QUIET EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES)) EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES)) +EXPORT_VARS+=$(filter %_EXTERNAL,$(.VARIABLES)) export_version=$(eval export $1) $(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v))) diff --git a/configure/E3/CONFIG_REQUIRE b/configure/E3/CONFIG_REQUIRE index 6cdf4a4089b37f17ac2b0525c1915e8b3bb4d724..045f42b54ef166f16c597e6cd6a34b3af31a235c 100644 --- a/configure/E3/CONFIG_REQUIRE +++ b/configure/E3/CONFIG_REQUIRE @@ -4,7 +4,6 @@ E3_REQUIRE_LOCATION:=$(EPICS_BASE)/$(E3_REQUIRE_NAME)/$(E3_REQUIRE_VERSION) - E3_REQUIRE_TOOLS:=$(E3_REQUIRE_LOCATION)/tools E3_REQUIRE_BIN:=$(E3_REQUIRE_LOCATION)/bin E3_REQUIRE_LIB:=$(E3_REQUIRE_LOCATION)/lib @@ -12,6 +11,3 @@ E3_REQUIRE_DB:=$(E3_REQUIRE_LOCATION)/db E3_REQUIRE_DBD:=$(E3_REQUIRE_LOCATION)/dbd E3_REQUIRE_INC:=$(E3_REQUIRE_LOCATION)/include E3_REQUIRE_CONFIG:=$(E3_REQUIRE_LOCATION)/configure - - -EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES)) diff --git a/configure/E3/CONFIG_SHELL b/configure/E3/CONFIG_SHELL index 931904edaf5119b60722ca97ef2a69ebd7ad2f70..b35126f3d81d2ac2200ce10c844ce1f0973cc0eb 100644 --- a/configure/E3/CONFIG_SHELL +++ b/configure/E3/CONFIG_SHELL @@ -5,4 +5,4 @@ else SHELL = /usr/bin/bash endif -VARS_EXCLUDES += SHELL +VARS_EXCLUDES+=SHELL diff --git a/configure/E3/CONFIG_TEST b/configure/E3/CONFIG_TEST index 90d167277d6cdbfc117cdfb1c4319fd193f1bbef..d9792f20aa9dcede18a97366c77c25df8997eccd 100644 --- a/configure/E3/CONFIG_TEST +++ b/configure/E3/CONFIG_TEST @@ -1,3 +1,11 @@ TEST_DIR:=$(TOP)/tests +RUN_IOCSH_TEST_COMMAND = run-iocsh --name "${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/iocsh.bash" -r "$(E3_MODULE_NAME),$(E3_MODULE_VERSION)" -l $(TEMP_CELL_PATH) +TEMP_CELL_PATH := $(TOP)/testMods-$(shell date +"%y%m%d%H%M%S") +RMDIR = $(RM) -rf + +EXPORT_VARS+=TEMP_CELL_PATH + VARS_EXCLUDES+=TEST_DIR +VARS_EXCLUDES+=RMDIR +VARS_EXCLUDES+=TEMP_CELL_PATH diff --git a/configure/E3/DECOUPLE_FLAGS b/configure/E3/DECOUPLE_FLAGS new file mode 100644 index 0000000000000000000000000000000000000000..befe8edba9bb76f94f1ee1c8b853f5e0f5744068 --- /dev/null +++ b/configure/E3/DECOUPLE_FLAGS @@ -0,0 +1 @@ +# Legacy file. Needed since <module>.Makefiles include this. diff --git a/configure/E3/DEFINES_FT b/configure/E3/DEFINES_FT index 840ac0cf00e81e483d677e375ff2afb94a96f4e3..b88cb9c47ffa8e0015d0aadf793869476466539e 100644 --- a/configure/E3/DEFINES_FT +++ b/configure/E3/DEFINES_FT @@ -13,17 +13,27 @@ 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"; \ - git apply --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\ -done +patches=$$(ls $(TOP)/patch/Site/$(E3_MODULE_VERSION)/*.p0.patch 2> /dev/null); \ +if [ -n "$$patches" ]; then \ + for i in $$patches; do \ + printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \ + git apply --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i; \ + done; \ +else \ + echo ">>> No patches to apply" >&2; \ +fi endef define patch_revert_site -for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\ - printf "\nReverting applied patch %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \ - git apply -R --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\ -done +patches=$$(ls $(TOP)/patch/Site/$(E3_MODULE_VERSION)/*.p0.patch 2> /dev/null); \ +if [ -n "$$patches" ]; then \ + for i in $$patches; do\ + printf "\nReverting applied patch %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \ + git apply -R --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\ + done \ +else \ + echo ">>> No patches to revert" >&2; \ +fi endef ifndef VERBOSE diff --git a/configure/modules/RULES_CELL b/configure/E3/RULES_CELL similarity index 100% rename from configure/modules/RULES_CELL rename to configure/E3/RULES_CELL diff --git a/configure/modules/RULES_CHECKS b/configure/E3/RULES_CHECKS similarity index 88% rename from configure/modules/RULES_CHECKS rename to configure/E3/RULES_CHECKS index b8992b7d9160a8ecbb057c3cc1b45cd9c49331e1..875a02a72a62c53ba14bb05de241dbe521e8ba39 100644 --- a/configure/modules/RULES_CHECKS +++ b/configure/E3/RULES_CHECKS @@ -1,5 +1,9 @@ .PHONY: consistency_checks -consistency_checks: module_name_check sitemods_check loc-check +consistency_checks: module_name_check loc-check + +ifneq (require,$(E3_MODULE_NAME)) +consistency_checks: sitemods_check +endif # Check that the module name satisfies a few conditions before we go on. module_name_check: diff --git a/configure/E3/RULES_DB b/configure/E3/RULES_DB deleted file mode 100644 index 9c751131d4076db1cf1c94f4dbd986867d1142e4..0000000000000000000000000000000000000000 --- a/configure/E3/RULES_DB +++ /dev/null @@ -1,9 +0,0 @@ -# -*- mode: Makefile;-*- -## This RULE should be used in case of inflating DB files -## - -.PHONY: db - - -db: conf - $(QUIET) $(E3_MODULE_MAKE_CMDS) db diff --git a/configure/E3/RULES_DEV b/configure/E3/RULES_DEV index a3887729024304421154706fcaa0d28a63eba05f..2c7e9a9ff1cc71b052b00178c0658dd0b1dc1c5f 100644 --- a/configure/E3/RULES_DEV +++ b/configure/E3/RULES_DEV @@ -1,11 +1,12 @@ # -*- mode: Makefile;-*- -.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devconf devrequireconf +.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devconf devepics devepics-clean devepics-distclean devpatch devpatchrevert devexistent devdep devvers devvars: vars devenv: devvars +## Initializes a dev setup, defined with configure/CONFIG_MODULE_DEV and configure/RELEASE_DEV devinit: git-submodule-sync git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH) cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG) @@ -24,8 +25,14 @@ devrebuild: nonexists devuninstall: nonexists devdistclean: nonexists devconf: nonexists -devrequireconf: nonexists +devepics: nonexists +devepics-clean: nonexists +devepics-distclean: nonexists +devpatch: nonexists +devpatchrevert: nonexists devexistent: nonexists +devdep: nonexists +devvers: nonexists nonexists: $(QUIET)echo "" $(QUIET)echo "------------------------------------------------------------" @@ -35,15 +42,31 @@ nonexists: $(QUIET)echo "" else +## Displays information about the build process (development mode) +devdebug: debug + +## Build current module (development mode) devbuild: build + +## Deletes temporary build files (development mode) devclean: clean + +## Install the current module (development mode) devinstall: install devrebuild: rebuild + +## Uninstall the current module (development mode) devuninstall: uninstall devconf: conf -devrequireconf: requireconf devdistclean: clean $(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... " rm -rf $(E3_MODULE_SRC_PATH) +devepics: epics +devepics-clean: epics-clean +devepics-distclean: epics-distclean +devpatch: patch +devpatchrevert: patchrevert devexistent: existent +devdep: dep +devvers: vers endif diff --git a/configure/modules/RULES_DKMS b/configure/E3/RULES_DKMS similarity index 100% rename from configure/modules/RULES_DKMS rename to configure/E3/RULES_DKMS diff --git a/configure/E3/RULES_E3 b/configure/E3/RULES_E3 index 8a2dfdb214b4084cf211e3cd503390368e415394..82dda913018ff81daa51db99c748c44f9287f3cb 100644 --- a/configure/E3/RULES_E3 +++ b/configure/E3/RULES_E3 @@ -3,7 +3,7 @@ .DEFAULT_GOAL := help -.PHONY: help default install uninstall build rebuild clean conf all +.PHONY: help default install uninstall build rebuild clean conf all prebuild default: help @@ -28,33 +28,43 @@ help: -## Install require to $(EPICS_BASE)/require/$(E3_MODULE_VERSION) -install: requireconf install_module +## Install module to $(E3_MODULES_INSTALL_LOCATION) +install: install_module hdrs -install_module: build db +.PHONY: db +db: err_no_db_rule + +.PHONY: err_no_db_rule +err_no_db_rule: + $(error The 'db' target has been discontinued. If you have custom database expansion rule to use, please contact the e3 team) + +.PHONY: install_module +install_module: build db_internal $(QUIET) $(E3_MODULE_MAKE_CMDS) install -## Uninstall the current module -uninstall: conf -ifeq (,$(strip $(wildcard $(E3_SITEMODS_PATH)/*))) - $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall -else - $(error Cannot run 'make uninstall': please manually uninstall everything in $(E3_SITEMODS_PATH)) -endif +.PHONY: check_uninstall +check_uninstall: -# We should be able to force an uninstall of require if we need to; this should not be done without some care and thought, however! -## Uninstall, including deleting siteMods directory. -forceuninstall: conf +## Uninstall the current module +uninstall: check_uninstall conf $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall -## Build current module. -build: conf +## Build current module +build: conf checkout prebuild $(QUIET) $(E3_MODULE_MAKE_CMDS) build +## Run module-specific commands before building +prebuild: conf + $(QUIET) $(E3_MODULE_MAKE_CMDS) prebuild + ## Displays information about the build process debug: conf $(QUIET) $(E3_MODULE_MAKE_CMDS) debug +.PHONY: db_internal +db_internal: conf + $(QUIET) $(E3_MODULE_MAKE_CMDS) db_internal + ## Clean, build, and install the current module rebuild: clean build install @@ -62,10 +72,42 @@ rebuild: clean build install clean: conf $(QUIET) $(E3_MODULE_MAKE_CMDS) clean +## Initializes, patches, builds, and installs all: init patch rebuild # Copy $(E3_MODULE_MAKEFILE) into $(E3_MODULE_SRC_PATH) -conf: - $(QUIET) install -m 644 $(TOP)/$(E3_MODULE_MAKEFILE) $(E3_MODULE_SRC_PATH)/ +include $(REQUIRE_CONFIG)/RULES_CHECKS +conf: consistency_checks + $(QUIET) install -p -m 644 $(TOP)/$(E3_MODULE_MAKEFILE) $(E3_MODULE_SRC_PATH)/ + +.PHONY: init git-submodule-sync $(E3_MODULE_SRC_PATH) checkout + +ifeq (,$(strip $(EPICS_MODULE_TAG))) +E3_LOCAL_SOURCE:=1 +endif +ifeq ($(E3_LOCAL_SOURCE),1) init: + $(QUIET) echo ">> You are in the local source mode." + $(QUIET) echo ">> Nothing happens." + +checkout: + +else +## Syncs and checks out the tag $(EPICS_MODULE_TAG) for the submodule +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) + + +endif diff --git a/configure/E3/RULES_EPICS b/configure/E3/RULES_EPICS index c62191404fab080b999845183425c7ba362dbeee..f7dac66e307723441d0be314c998d09d346f31dd 100644 --- a/configure/E3/RULES_EPICS +++ b/configure/E3/RULES_EPICS @@ -1,14 +1,10 @@ -# -*- mode: Makefile;-*- - # One should define the any dependency modules and EPICS base path # in the following directory -# .PHONY: epics epics-clean +.PHONY: epics-clean epics-distclean -# epics: -# $(QUIET)echo "EPICS_BASE=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE -# $(QUIET)echo "INSTALL_LOCATION=$(M_IOCSTATS)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE -# $(MAKE) -C $(E3_MODULE_SRC_PATH) +epics-clean: + $(MAKE) -C $(E3_MODULE_SRC_PATH) clean -#epics-clean: -# $(MAKE) -C $(E3_MODULE_SRC_PATH) clean +epics-distclean: + $(MAKE) -C $(E3_MODULE_SRC_PATH) distclean diff --git a/configure/E3/RULES_PATCH b/configure/E3/RULES_PATCH index fb3d8ada42821b29b23c4c56a66c691798f8a51f..d2a6d0f6613be31117328fd8f01c4ba5b3fad9e8 100644 --- a/configure/E3/RULES_PATCH +++ b/configure/E3/RULES_PATCH @@ -1,11 +1,15 @@ .PHONY: patch patchrevert +.PHONY: check_for_old_patches +check_for_old_patches: + $(if $(wildcard $(TOP)/patch/Site/$(patsubst %+0,%,$(E3_MODULE_VERSION))*.p0.patch),$(warning Warning: old-style patches detected. Please move them to patch/Site/$$E3_MODULE_VERSION/.)) + ## Apply Patch Files -patch: +patch: check_for_old_patches $(QUIET) $(call patch_site) ## Revert Patch Files -patchrevert: +patchrevert: check_for_old_patches $(QUIET) $(call patch_revert_site) diff --git a/configure/modules/RULES_SITEMODS b/configure/E3/RULES_SITEMODS similarity index 67% rename from configure/modules/RULES_SITEMODS rename to configure/E3/RULES_SITEMODS index 73ac0c3a2e947da5b2a4e1b6762357ed5141e754..3313189aedb9970021c3760aedf0c44f88ffb5b8 100644 --- a/configure/modules/RULES_SITEMODS +++ b/configure/E3/RULES_SITEMODS @@ -4,13 +4,9 @@ include $(REQUIRE_CONFIG)/RULES_E3 include $(REQUIRE_CONFIG)/RULES_CELL include $(REQUIRE_CONFIG)/DEFINES_FT include $(REQUIRE_CONFIG)/RULES_PATCH -include $(REQUIRE_CONFIG)/RULES_E3_SITELIBS include $(REQUIRE_CONFIG)/RULES_TEST -include $(REQUIRE_CONFIG)/RULES_VLIBS include $(REQUIRE_CONFIG)/RULES_DKMS -include $(REQUIRE_CONFIG)/RULES_PROD include $(REQUIRE_CONFIG)/RULES_VARS -#include $(REQUIRE_CONFIG)/RULES_EPICS include $(REQUIRE_CONFIG)/RULES_DEV diff --git a/configure/E3/RULES_TEST b/configure/E3/RULES_TEST index 5a6e2b8473f663b14bfa544ef6867e3f46f1b39e..f542ecb693592fb72d2be104a9af22ee88f25880 100644 --- a/configure/E3/RULES_TEST +++ b/configure/E3/RULES_TEST @@ -1,4 +1,29 @@ .PHONY: test +## Tests the current build +test: + +ifeq ($(shell command -v run-iocsh > /dev/null 2>&1 ; echo $$?),0) + +test: temp_install run_test module_tests cleanup_test + +.PHONY: temp_install +temp_install: + $(MAKE) cellinstall E3_CELL_PATH=$(TEMP_CELL_PATH) + +.PHONY: run_test +run_test: + $(RUN_IOCSH_TEST_COMMAND) + +.PHONY: module_tests +module_tests: + +.PHONY: cleanup_test +cleanup_test: + $(RMDIR) $(TEMP_CELL_PATH) + +else # if the if-run-iocsh-exists test fails test: - pytest $(TEST_DIR) -v + $(error run-iocsh must be installed to use the test capability. Please install run-iocsh from PyPI.) + +endif diff --git a/configure/E3/RULES_VARS b/configure/E3/RULES_VARS index e1e0221a197f0d1d724effbc5e16a61f8abe8b1e..fa5c1a92e7fe8178627e6d3523bdbb8bdf7ede38 100644 --- a/configure/E3/RULES_VARS +++ b/configure/E3/RULES_VARS @@ -6,13 +6,13 @@ DEP_MODULES:=$(filter %_DEP_VERSION, $(E3_MODULES_VARIABLES)) LEVEL?=2 -## Print relevant environment variables -.PHONY: env -env: vars +GENERATED_DEP_FILE:=$(E3_MODULES_INSTALL_LOCATION_LIB)/$(EPICS_HOST_ARCH)/$(E3_MODULE_NAME).dep +## Print relevant environment variables .PHONY: vars vars: header - $(foreach v, $(E3_MODULES_VARIABLES), $(info $(v) = $($(v)))) @#noop + $(foreach v, $(filter-out %_DEP_VERSION,$(E3_MODULES_VARIABLES)), $(info $(v) = $($(v)))) @#noop + $(foreach v, $(filter %_DEP_VERSION,$(E3_MODULES_VARIABLES)), $(info $(v) = $($(v)))) @#noop .PHONY: header header: @@ -31,11 +31,16 @@ else $(QUIET)tree -L $(LEVEL) $(E3_MODULES_PATH)/$(E3_MODULE_NAME) endif +## Displays dependency information, both configured and generated .PHONY: dep dep: $(QUIET)echo "require $(E3_MODULE_NAME),$(E3_MODULE_VERSION)" $(QUIET)echo "< configured ..." $(foreach v, $(DEP_MODULES), $(info $(v) = $($(v)))) @#noop +ifneq ("$(wildcard $(GENERATED_DEP_FILE))","") + $(QUIET)echo "> generated ..." + $(QUIET)tail -n+2 $(GENERATED_DEP_FILE) +endif .PHONY: vers vers: diff --git a/configure/RULES b/configure/RULES index e35fe641f195cbab110fa222817a460d3d67819c..01475baa5aa2094e4c0fd34920beb7b8ca6d55cd 100644 --- a/configure/RULES +++ b/configure/RULES @@ -1,22 +1,21 @@ # -*- mode: Makefile;-*- # include $(EPICS_BASE)/configure/RULES -include $(TOP)/configure/E3/DEFINES_FT +include $(REQUIRE_CONFIG)/DEFINES_FT # # We cannot use file operation in CentOS7.4, # because Makefile version is 3.8. -include $(TOP)/configure/E3/RULES_E3 -include $(TOP)/configure/E3/RULES_EPICS +include $(REQUIRE_CONFIG)/RULES_E3 +include $(REQUIRE_CONFIG)/RULES_EPICS -include $(TOP)/configure/E3/RULES_REQUIRE +include $(TOP)/configure/module/RULES_REQUIRE -include $(TOP)/configure/E3/RULES_PATCH -include $(TOP)/configure/E3/RULES_DB -include $(TOP)/configure/E3/RULES_VARS -include $(TOP)/configure/E3/RULES_TEST +include $(REQUIRE_CONFIG)/RULES_PATCH +include $(REQUIRE_CONFIG)/RULES_VARS +include $(TOP)/configure/module/RULES_TEST ifneq (,$(findstring dev,$(MAKECMDGOALS))) -include $(TOP)/configure/E3/RULES_DEV +include $(REQUIRE_CONFIG)/RULES_DEV endif diff --git a/configure/E3/RULES_REQUIRE b/configure/module/RULES_REQUIRE similarity index 67% rename from configure/E3/RULES_REQUIRE rename to configure/module/RULES_REQUIRE index f1c66a4dead18f09fb87319f4ac3be7d3a72f65d..5b56c10929357e453129358409ad43af3fd635fb 100644 --- a/configure/E3/RULES_REQUIRE +++ b/configure/module/RULES_REQUIRE @@ -10,11 +10,17 @@ E3_TEST_SCRIPT := $(TOP)/tools/test_installed_modules.sh E3_SHELL_FILES := $(wildcard $(E3_MODULE_SRC_PATH)/tools/iocsh*.bash) E3_IOC_CFG_FILES += $(E3_MODULE_SRC_PATH)/tools/setE3Env.bash E3_IOC_CFG_FILES += $(E3_MODULE_SRC_PATH)/tools/promptE3Env.bash -E3_REQUIRE_CONF_FILES := $(filter-out $(FILE_FILTER), $(wildcard $(TOP)/configure/modules/*)) +E3_REQUIRE_CONF_FILES := $(filter-out $(FILE_FILTER), $(wildcard $(TOP)/configure/E3/*)) +check_uninstall: +ifneq (,$(strip $(wildcard $(E3_SITEMODS_PATH)/*))) + $(error Cannot run 'make uninstall': please manually uninstall everything in $(E3_SITEMODS_PATH)) +endif .PHONY: e3-site-path requireconf +install: requireconf + requireconf: e3-site-path e3-require-path $(QUIET) install -m 755 $(wildcard $(E3_MODULE_SRC_PATH)/tools/*.tcl) $(E3_REQUIRE_TOOLS)/ $(QUIET) install -m 644 $(E3_MODULE_SRC_PATH)/tools/driver.makefile $(E3_REQUIRE_TOOLS)/ @@ -35,6 +41,21 @@ e3-site-path: $(QUIET) install -d -m 755 $(E3_SITEMODS_PATH) $(QUIET) install -d -m 755 $(E3_SITEAPPS_PATH) +.PHONY: epics +epics: + $(QUIET)echo "EPICS_BASE=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE + $(QUIET)echo "CHECK_RELEASE = YES" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE + $(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)" + +# We should be able to force an uninstall of require if we need to; this should not be done without some care and thought, however! +## Uninstall, including deleting siteMods directory. +forceuninstall: conf + $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall + +consistency_checks: + +.PHONY: hdrs +hdrs: VARS_EXCLUDES+=FILE_FILTER VARS_EXCLUDES+=E3_SHELL_FILES diff --git a/configure/module/RULES_TEST b/configure/module/RULES_TEST new file mode 100644 index 0000000000000000000000000000000000000000..9e424cd44c0d6561c7e0ba2cd711142815073757 --- /dev/null +++ b/configure/module/RULES_TEST @@ -0,0 +1,3 @@ +.PHONY: test +test: + pytest $(TEST_DIR) -v diff --git a/configure/modules/CONFIG_E3_MAKEFILE b/configure/modules/CONFIG_E3_MAKEFILE deleted file mode 100644 index f3d6ba4b6dc5230b20519468f7d7bf27325ed657..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_E3_MAKEFILE +++ /dev/null @@ -1,34 +0,0 @@ -# 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)" - -ifeq ($(shell git status > /dev/null 2>&1; echo $$?),0) -GIT_REMOTE_NAME := $(shell git remote | head -n 1) - -E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_DESC="$(shell git describe --tags 2> /dev/null || git rev-parse HEAD 2> /dev/null || echo 'Not a git repository')" -E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_STATUS="[ $(shell git status --porcelain | sed 's/^/\\\\\\\"/' | sed 's/$$/\\\\\\\", /')]" -E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_URL="$(shell git config --get remote.$(GIT_REMOTE_NAME).url 2> /dev/null | sed 's%^https://[^@]*@%https://%')" -else -E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_DESC= -E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_STATUS= -E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_URL= -endif - - -E3_MODULE_MAKE_CMDS:=make $(E3_REQUIRE_MAKEFILE_INPUT_OPTIONS) - - -## the following variables to display - -VARS_EXCLUDES+=E3_REQUIRE_MAKEFILE_INPUT_OPTIONS -VARS_EXCLUDES+=GIT_REMOTE_NAME diff --git a/configure/modules/CONFIG_E3_PATH b/configure/modules/CONFIG_E3_PATH deleted file mode 100644 index 41abeb90ed2467b83efb4c43475032f29a9fdeb7..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_E3_PATH +++ /dev/null @@ -1,22 +0,0 @@ -## If E3_MODULES_PATH is not defined, we will use the -## siteMods as the module path. This is valid for the -## EPICS or E3 Modules -## E3 Application should define in its own -## E3_MODULES_PATH := $(E3_REQUIRE_LOCATION)/siteApps -## in configure/CONFIG - -E3_MODULES_PATH?=$(E3_REQUIRE_LOCATION)/siteMods - - -E3_SITEMODS_PATH:=$(E3_REQUIRE_LOCATION)/siteMods -E3_SITELIBS_PATH:=$(E3_REQUIRE_LOCATION)/siteLibs -E3_SITEAPPS_PATH:=$(E3_REQUIRE_LOCATION)/siteApps - -E3_MODULES_INSTALL_LOCATION:=$(E3_MODULES_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 - -EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB diff --git a/configure/modules/CONFIG_EPICS b/configure/modules/CONFIG_EPICS deleted file mode 100644 index 432e0d3fdebe3f1c49d216f5000723c2b19c32e7..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_EPICS +++ /dev/null @@ -1,81 +0,0 @@ -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_OPCUA:=$(COMMUNITY_EPICS_MODULES)/opcua - - - -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 -export M_OPCUA - -## This is needed since the target "epics" (in configure/RULES_MODULE in most modules) -## uses SUDOBASH to run the make process: -# -#.PHONY: epics -#epics: -# $(QUIET)echo "EPICS_BASE:=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE -# $(QUIET)echo "ASYN:=$(M_ASYN)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE -# $(QUIET)echo "CHECK_RELEASE:=YES" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE -# $(QUIET)echo "INSTALL_LOCATION:=$(M_DEVLIB2)" >> $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE -# $(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)" -# -## And so that last line will only run if SUDOBASH is defined to be "bash -c" -SUDOBASH := bash -c - -### 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 -VARS_EXCLUDES+=M_OPCUA - -VARS_EXCLUDES+=SUDOBASH diff --git a/configure/modules/CONFIG_EXPORT b/configure/modules/CONFIG_EXPORT deleted file mode 100644 index 6d5b66093de4e210d1c539f72b5e2ea155d3a2f9..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_EXPORT +++ /dev/null @@ -1,25 +0,0 @@ -# Variables should be transferred to module_name.makefile - -EPICS_HOST_ARCH:=$(shell perl $(EPICS_BASE)/lib/perl/EpicsHostArch.pl 2> /dev/null) - -MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi - -EXPORT_VARS+=EPICS_HOST_ARCH -EXPORT_VARS+=EPICS_BASE -EXPORT_VARS+=MSI -EXPORT_VARS+=E3_MODULE_NAME -EXPORT_VARS+=E3_MODULE_VERSION -EXPORT_VARS+=E3_SITEMODS_PATH -EXPORT_VARS+=E3_SITEAPPS_PATH -EXPORT_VARS+=E3_SITELIBS_PATH -EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES)) - -EXPORT_VARS+=QUIET -EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES)) -EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES)) -EXPORT_VARS+=$(filter %_EXTERNAL,$(.VARIABLES)) - -export_version=$(eval export $1) -$(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v))) - -VARS_EXCLUDES+=export_version diff --git a/configure/modules/CONFIG_REQUIRE b/configure/modules/CONFIG_REQUIRE deleted file mode 100644 index 871948ef4afc5f49ef88d1b7b369fdc44244343f..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_REQUIRE +++ /dev/null @@ -1,11 +0,0 @@ -# -# The following VARIABLES are the same as other modules ones. -# - -E3_REQUIRE_TOOLS:=$(E3_REQUIRE_LOCATION)/tools -E3_REQUIRE_BIN:=$(E3_REQUIRE_LOCATION)/bin -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 -E3_REQUIRE_CONFIG:=$(E3_REQUIRE_LOCATION)/configure diff --git a/configure/modules/CONFIG_SHELL b/configure/modules/CONFIG_SHELL deleted file mode 100644 index b35126f3d81d2ac2200ce10c844ce1f0973cc0eb..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_SHELL +++ /dev/null @@ -1,8 +0,0 @@ - -ifdef DEBUG_SHELL - SHELL = /bin/sh -x -else - SHELL = /usr/bin/bash -endif - -VARS_EXCLUDES+=SHELL diff --git a/configure/modules/CONFIG_TEST b/configure/modules/CONFIG_TEST deleted file mode 100644 index 9ef0ba0d780faa337e7b74769ef4cdf6b014dd1c..0000000000000000000000000000000000000000 --- a/configure/modules/CONFIG_TEST +++ /dev/null @@ -1,9 +0,0 @@ - -RUN_IOCSH_TEST_COMMAND = run-iocsh --name "${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/iocsh.bash" -r "$(E3_MODULE_NAME),$(E3_MODULE_VERSION)" -l $(TEMP_CELL_PATH) -TEMP_CELL_PATH := $(TOP)/testMods-$(shell date +"%y%m%d%H%M%S") -RMDIR = $(RM) -rf - -EXPORT_VARS += TEMP_CELL_PATH - -VARS_EXCLUDES += RMDIR -VARS_EXCLUDES += TEMP_CELL_PATH diff --git a/configure/modules/DECOUPLE_FLAGS b/configure/modules/DECOUPLE_FLAGS deleted file mode 100644 index 6904d96ac104cc3b875253cdd02c3739d5d04f5a..0000000000000000000000000000000000000000 --- a/configure/modules/DECOUPLE_FLAGS +++ /dev/null @@ -1,17 +0,0 @@ -# *** ISSUES -# driver.makefile recursively read all include directories which were installed. -# The only way to exclude header files is to set $(module)_VERSION to a blank. - -# We first collect all installed modules from $(E3_SITEMODS_PATH) ... -#$(foreach dir,$(patsubst $(E3_SITEMODS_PATH)/%,%,$(wildcard $(E3_SITEMODS_PATH)/*)),$(eval DECOUPLE_MODULES += $(dir))) - -# ... except that we don't want to overwrite the versions from required modules, so keep those. -#$(foreach mod,$(filter-out $(REQ),$(DECOUPLE_MODULES)),$(eval $(mod)_VERSION =)) - -# In addition to decouple the existent e3 module, -# We use this opportunatiy in order to apply global configuration -# space. For example, common compiler options -# -#ifeq ($(T_A),linux-x86_64) -#USR_LDFLAGS += -Wl,--compress-debug-sections=zlib -#endif diff --git a/configure/modules/DEFINES_FT b/configure/modules/DEFINES_FT deleted file mode 100644 index a91260bb8c94f3e7b2c74b8a413eae05e50cb0cd..0000000000000000000000000000000000000000 --- a/configure/modules/DEFINES_FT +++ /dev/null @@ -1,51 +0,0 @@ - -# 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 -patches=$$(ls $(TOP)/patch/Site/$(E3_MODULE_VERSION)/*.p0.patch 2> /dev/null); \ -if [ -n "$$patches" ]; then \ - for i in $$patches; do \ - printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \ - git apply --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i; \ - done; \ -else \ - echo ">>> No patches to apply" >&2; \ -fi -endef - -define patch_revert_site -patches=$$(ls $(TOP)/patch/Site/$(E3_MODULE_VERSION)/*.p0.patch 2> /dev/null); \ -if [ -n "$$patches" ]; then \ - for i in $$patches; do\ - printf "\nReverting applied patch %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \ - git apply -R --directory=$(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 $$i;\ - done \ -else \ - echo ">>> No patches to revert" >&2; \ -fi -endef - -ifndef VERBOSE - QUIET := @ -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 diff --git a/configure/modules/RULES_DEV b/configure/modules/RULES_DEV deleted file mode 100644 index 02e2df964500f3d5ab384220dca794dfe14a27e0..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_DEV +++ /dev/null @@ -1,70 +0,0 @@ -# -*- mode: Makefile;-*- - -.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devepics devepics-clean devepics-distclean devpatch devpatchrevert devexistent devdep devvers - -devvars: vars - -devenv: devvars - -## Initializes a dev setup, defined with configure/CONFIG_MODULE_DEV and configure/RELEASE_DEV -devinit: git-submodule-sync - git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH) - cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG) - -# E3_MODULE_SRC_PATH_FLAG 1 : the directory is not there -# E3_MODULE_SRC_PATH_FLAG 0 : the directory is there -E3_MODULE_SRC_PATH_FLAG := $(shell test -d $(E3_MODULE_SRC_PATH) 1>&2 2> /dev/null; echo $$?) - -# Note that this is re-defined in CONFIG_MODULE_DEV, which is included if you do a `make dev*`. -ifeq "$(E3_MODULE_SRC_PATH_FLAG)" "1" - -devbuild: nonexists -devclean: nonexists -devinstall: nonexists -devrebuild: nonexists -devuninstall: nonexists -devdistclean: nonexists -devepics: nonexists -devepics-clean: nonexists -devepics-distclean: nonexists -devpatch: nonexists -devpatchrevert: nonexists -devexistent: nonexists -devdep: nonexists -devvers: 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 - -## Displays information about the build process (development mode) -devdebug: debug - -## Build current module (development mode) -devbuild: build - -## Deletes temporary build files (development mode) -devclean: clean - -## Install the current module (development mode) -devinstall: install -devrebuild: rebuild - -## Uninstall the current module (development mode) -devuninstall: uninstall -devdistclean: clean - $(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... " - rm -rf $(E3_MODULE_SRC_PATH) -devepics: epics -devepics-clean: epics-clean -devepics-distclean: epics-distclean -devpatch: patch -devpatchrevert: patchrevert -devexistent: existent -devdep: dep -devvers: vers -endif diff --git a/configure/modules/RULES_E3 b/configure/modules/RULES_E3 deleted file mode 100644 index d473c3dc9873d836e25d56a48823df90a792f43d..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_E3 +++ /dev/null @@ -1,110 +0,0 @@ -# -*- mode: Makefile;-*- -.NOTPARALLEL: - -.DEFAULT_GOAL := help - -.PHONY: help default install uninstall build rebuild clean conf all prebuild - -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 current module to $(EPICS_BASE)/require/$(E3_REQUIRE_VERSION)/siteMods -install: install_module install_links - -.PHONY: db -db: err_no_db_rule - -.PHONY: err_no_db_rule -err_no_db_rule: - $(error The 'db' target has been discontinued. If you have custom database expansion rule to use, please contact the e3 team) - -.PHONY: install_module -install_module: build db_internal - $(QUIET) $(E3_MODULE_MAKE_CMDS) install - -## Uninstall the current module -uninstall: conf - $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall - -## Build current module -build: conf checkout prebuild - $(QUIET) $(E3_MODULE_MAKE_CMDS) build - -## Run module-specific commands before building -prebuild: conf - $(QUIET) $(E3_MODULE_MAKE_CMDS) prebuild - -## Displays information about the build process -debug: conf - $(QUIET) $(E3_MODULE_MAKE_CMDS) debug - -.PHONY: db_internal -db_internal: conf - $(QUIET) $(E3_MODULE_MAKE_CMDS) db_internal - -## Clean, build, and install the current module -rebuild: clean build install - -## Deletes temporary build files -clean: conf - $(QUIET) $(E3_MODULE_MAKE_CMDS) clean - -## Initializes, patches, builds, and installs -all: init patch rebuild - -# Copy $(E3_MODULE_MAKEFILE) into $(E3_MODULE_SRC_PATH) -include $(REQUIRE_CONFIG)/RULES_CHECKS -conf: consistency_checks - $(QUIET) install -p -m 644 $(TOP)/$(E3_MODULE_MAKEFILE) $(E3_MODULE_SRC_PATH)/ - -.PHONY: init git-submodule-sync $(E3_MODULE_SRC_PATH) checkout - -ifeq (,$(strip $(EPICS_MODULE_TAG))) -E3_LOCAL_SOURCE:=1 -endif - -ifeq ($(E3_LOCAL_SOURCE),1) -init: - $(QUIET) echo ">> You are in the local source mode." - $(QUIET) echo ">> Nothing happens." - -checkout: - -else -## Syncs and checks out the tag $(EPICS_MODULE_TAG) for the submodule -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) - - -endif diff --git a/configure/modules/RULES_E3_SITEAPPS b/configure/modules/RULES_E3_SITEAPPS deleted file mode 100644 index fbab8d1a7e213db87d48ae9c75d124ef9df1bbf1..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_E3_SITEAPPS +++ /dev/null @@ -1,7 +0,0 @@ - -# Create symbolic links in siteLibs - -.PHONY: install_links - -# GNU find -install_links: hdrs diff --git a/configure/modules/RULES_E3_SITELIBS b/configure/modules/RULES_E3_SITELIBS deleted file mode 100644 index 436d526507b0940b2391921243385707dd07c226..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_E3_SITELIBS +++ /dev/null @@ -1,18 +0,0 @@ - -# Create symbolic links in siteLibs - -.PHONY: install_links $(INSTALLED_EPICS_BASE_ARCHS) - -# GNU find -install_links: $(INSTALLED_EPICS_BASE_ARCHS) hdrs -# ln -snf $(E3_MODULES_INSTALL_LOCATION_INC) $(E3_MODULES_INSTALL_LOCATION_INC_LINK) -# ln -snf $(E3_MODULES_INSTALL_LOCATION_DB) $(E3_MODULES_INSTALL_LOCATION_DB_LINK) -# ln -snf $(E3_MODULES_INSTALL_LOCATION_BIN) $(E3_MODULES_INSTALL_LOCATION_BIN_LINK) -# ln -snf $(E3_MODULES_INSTALL_LOCATION_LIB) $(E3_MODULES_INSTALL_LOCATION_LIB_LINK) -# ln -sf $(E3_MODULES_INSTALL_LOCATION_DBD) $(E3_MODULES_INSTALL_LOCATION_DBD_LINK) -# find $(E3_SITELIBS_PATH) -xtype l -delete - - -$(INSTALLED_EPICS_BASE_ARCHS): -# mkdir -p $(E3_SITELIBS_PATH)/$@ -# ln -sf $(E3_MODULES_INSTALL_LOCATION)/lib/$@/$(E3_MODULES_LIBNAME) $(E3_SITELIBS_PATH)/$@/$(E3_MODULES_LIBLINKNAME) diff --git a/configure/modules/RULES_EPICS b/configure/modules/RULES_EPICS deleted file mode 100644 index f7dac66e307723441d0be314c998d09d346f31dd..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_EPICS +++ /dev/null @@ -1,10 +0,0 @@ -# One should define the any dependency modules and EPICS base path -# in the following directory - -.PHONY: epics-clean epics-distclean - -epics-clean: - $(MAKE) -C $(E3_MODULE_SRC_PATH) clean - -epics-distclean: - $(MAKE) -C $(E3_MODULE_SRC_PATH) distclean diff --git a/configure/modules/RULES_PATCH b/configure/modules/RULES_PATCH deleted file mode 100644 index d2a6d0f6613be31117328fd8f01c4ba5b3fad9e8..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_PATCH +++ /dev/null @@ -1,15 +0,0 @@ - -.PHONY: patch patchrevert - -.PHONY: check_for_old_patches -check_for_old_patches: - $(if $(wildcard $(TOP)/patch/Site/$(patsubst %+0,%,$(E3_MODULE_VERSION))*.p0.patch),$(warning Warning: old-style patches detected. Please move them to patch/Site/$$E3_MODULE_VERSION/.)) - - -## Apply Patch Files -patch: check_for_old_patches - $(QUIET) $(call patch_site) - -## Revert Patch Files -patchrevert: check_for_old_patches - $(QUIET) $(call patch_revert_site) diff --git a/configure/modules/RULES_PROD b/configure/modules/RULES_PROD deleted file mode 100644 index 8181c49051151fe82a81f3311cf7f9ad3c72caae..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_PROD +++ /dev/null @@ -1,8 +0,0 @@ -PROD_BIN_PATH:=$(E3_MODULES_INSTALL_LOCATION_BIN)/$(EPICS_HOST_ARCH) - -.PHONY: prod_env - -prod_env: - $(QUIET) echo " -------- In most case, you can run the following export in a terminal --------" - $(QUIET) echo "export PATH=$(PROD_BIN_PATH):$${PATH}" - $(QUIET) echo " ------------------------------------------------------------------------------" diff --git a/configure/modules/RULES_SITEAPPS b/configure/modules/RULES_SITEAPPS deleted file mode 100644 index e2e71258ec8e05063a415a7bd33358074a76f930..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_SITEAPPS +++ /dev/null @@ -1,16 +0,0 @@ -# -*- mode: Makefile;-*- - -include $(REQUIRE_CONFIG)/RULES_E3 -include $(REQUIRE_CONFIG)/DEFINES_FT -include $(REQUIRE_CONFIG)/RULES_PATCH -include $(REQUIRE_CONFIG)/RULES_E3_SITEAPPS - -include $(REQUIRE_CONFIG)/RULES_VLIBS -include $(REQUIRE_CONFIG)/RULES_DKMS -include $(REQUIRE_CONFIG)/RULES_PROD -include $(REQUIRE_CONFIG)/RULES_VARS -#include $(REQUIRE_CONFIG)/RULES_EPICS - -ifneq (,$(findstring dev,$(MAKECMDGOALS))) --include $(REQUIRE_CONFIG)/RULES_DEV -endif diff --git a/configure/modules/RULES_TEST b/configure/modules/RULES_TEST deleted file mode 100644 index f542ecb693592fb72d2be104a9af22ee88f25880..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_TEST +++ /dev/null @@ -1,29 +0,0 @@ -.PHONY: test -## Tests the current build -test: - -ifeq ($(shell command -v run-iocsh > /dev/null 2>&1 ; echo $$?),0) - -test: temp_install run_test module_tests cleanup_test - -.PHONY: temp_install -temp_install: - $(MAKE) cellinstall E3_CELL_PATH=$(TEMP_CELL_PATH) - -.PHONY: run_test -run_test: - $(RUN_IOCSH_TEST_COMMAND) - -.PHONY: module_tests -module_tests: - -.PHONY: cleanup_test -cleanup_test: - $(RMDIR) $(TEMP_CELL_PATH) - -else # if the if-run-iocsh-exists test fails - -test: - $(error run-iocsh must be installed to use the test capability. Please install run-iocsh from PyPI.) - -endif diff --git a/configure/modules/RULES_VARS b/configure/modules/RULES_VARS deleted file mode 100644 index 518a325665104e09f2f9965fe0a72b9f68953cbb..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_VARS +++ /dev/null @@ -1,59 +0,0 @@ -# -*- mode: Makefile;-*- - -E3_MODULES_VARIABLES:=$(sort $(filter-out $(VARS_EXCLUDES) VARS_EXCLUDES,$(.VARIABLES))) - -DEP_MODULES:=$(filter %_DEP_VERSION, $(E3_MODULES_VARIABLES)) - -LEVEL?=2 - -GENERATED_DEP_FILE:=$(E3_MODULES_INSTALL_LOCATION_LIB)/$(EPICS_HOST_ARCH)/$(E3_MODULE_NAME).dep - -## Print relevant environment variables -.PHONY: vars -vars: header - $(foreach v, $(filter-out %_DEP_VERSION,$(E3_MODULES_VARIABLES)), $(info $(v) = $($(v)))) @#noop - $(foreach v, $(filter %_DEP_VERSION,$(E3_MODULES_VARIABLES)), $(info $(v) = $($(v)))) @#noop - -.PHONY: header -header: - $(QUIET)echo "" - $(QUIET)echo "------------------------------------------------------------" - $(QUIET)echo ">>>> Current EPICS and E3 Environment Variables <<<<" - $(QUIET)echo "------------------------------------------------------------" - $(QUIET)echo "" - -## Show installed versions of the current module -existent: -ifeq (,$(shell which tree)) - $(QUIET)ls -d $(E3_MODULES_PATH)/$(E3_MODULE_NAME) - $(QUIET)find $(E3_MODULES_PATH)/$(E3_MODULE_NAME)/ -maxdepth $(LEVEL) | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/:---\1/" -else - $(QUIET)tree -L $(LEVEL) $(E3_MODULES_PATH)/$(E3_MODULE_NAME) -endif - -## Displays dependency information, both configured and generated -.PHONY: dep -dep: - $(QUIET)echo "require $(E3_MODULE_NAME),$(E3_MODULE_VERSION)" - $(QUIET)echo "< configured ..." - $(foreach v, $(DEP_MODULES), $(info $(v) = $($(v)))) @#noop -ifneq ("$(wildcard $(GENERATED_DEP_FILE))","") - $(QUIET)echo "> generated ..." - $(QUIET)tail -n+2 $(GENERATED_DEP_FILE) -endif - -.PHONY: vers -vers: - $(QUIET)echo "EPICS_MODULE_TAG:=$(EPICS_MODULE_TAG), origin : $(origin EPICS_MODULE_TAG)" - $(QUIET)echo "E3_MODULE_VERSION:=$(E3_MODULE_VERSION), origin : $(origin E3_MODULE_VERSION)" - -# https://www.cmcrossroads.com/article/printing-value-makefile-variable -PRINT.%: - $(QUIET)echo $* = $($*) - $(QUIET)echo $*\'s origin is $(origin $*) - -print-%: - $(QUIET)echo $* = $($*) - $(QUIET)echo $*\'s origin is $(origin $*) - -FORCE: diff --git a/configure/modules/RULES_VLIBS b/configure/modules/RULES_VLIBS deleted file mode 100644 index 4fd909975f74756b4d6f93526c5e7fe986f21f49..0000000000000000000000000000000000000000 --- a/configure/modules/RULES_VLIBS +++ /dev/null @@ -1,6 +0,0 @@ - -#.PHONY: vlibs - -## Install vendor libraries -#vlibs: conf -# $(QUIET) $(E3_MODULE_MAKE_CMDS) vlibs diff --git a/require.Makefile b/require.Makefile index 01b8594e2a1ae0cd5531d8ab5fc83689bb50058c..94c29e10c7ae1a0039f7d88f739174ede6bf5055 100644 --- a/require.Makefile +++ b/require.Makefile @@ -97,11 +97,11 @@ USR_DBFLAGS += -I . -I .. USR_DBFLAGS += -I$(EPICS_BASE)/db -TEMS = $(wildcard $(APPDB)/*.template) +TMPS = $(wildcard $(APPDB)/*.template) -db: $(TEMS) +db: $(TMPS) -$(TEMS): +$(TMPS): @printf "Inflating database ... %44s >>> %40s \n" "$@" "$(basename $(@)).db" @rm -f $(basename $(@)).db.d $(basename $(@)).db @$(MSI) -D $(USR_DBFLAGS) -o $(basename $(@)).db $@ > $(basename $(@)).db.d @@ -110,4 +110,4 @@ $(TEMS): -.PHONY: db $(TEMS) +.PHONY: db $(TMPS)