File: RULES_TOP

package info (click to toggle)
epics-base 7.0.8.1%2Bdfsg1-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 22,512 kB
  • sloc: cpp: 130,870; ansic: 115,274; perl: 10,647; makefile: 3,476; yacc: 1,307; python: 594; lex: 236; sh: 108; csh: 36
file content (128 lines) | stat: -rw-r--r-- 5,343 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#*************************************************************************
# Copyright (c) 2011 UChicago Argonne LLC, as Operator of Argonne
#     National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
#     Operator of Los Alamos National Laboratory.
# EPICS BASE is distributed subject to a Software License Agreement found
# in the file LICENSE that is included with this distribution.
#*************************************************************************

include $(CONFIG)/RULES_DIRS

# Disable most top rules when installing into a parent's tree, indicated
# by PARENT_MODULE being set in the modules/CONFIG_SITE.local file and
# INSTALL_LOCATION pointing to the the same place as in the parent.
ifeq ($(origin PARENT_MODULE),file)
  ifeq ($(INSTALL_LOCATION),$($(PARENT_MODULE)))
    DISABLE_TOP_RULES=YES
  endif
endif

ifndef DISABLE_TOP_RULES
  #
  # Rules for a regular application top directory
  #

  # When run by 'make distclean' the realuninstall target also
  # removes any modules/RELEASE.<host>.local files
  distclean: realclean cvsclean realuninstall

  realuninstall: uninstallDirs
	$(RMDIR) $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB)
  ifeq (modules,$(filter modules,$(DIRS)))
    ifeq (distclean,$(filter distclean,$(MAKECMDGOALS)))
	$(RM) $(wildcard modules/RELEASE.*.local)
    endif
  endif

  UNINSTALL_DIRS += $(INSTALL_DB) $(INSTALL_DBD) $(INSTALL_DOC) $(INSTALL_HTML)
  UNINSTALL_DIRS += $(INSTALL_INCLUDE) $(INSTALL_TEMPLATES) $(DIRECTORY_TARGETS)
  ifneq ($(INSTALL_LOCATION),$(TOP))
    UNINSTALL_DIRS += $(INSTALL_CONFIG)
  endif
  uninstallDirs:
	$(RMDIR) $(UNINSTALL_DIRS)

  # Remove the bin and lib directories if they have no sub-directories
  #
  EMPTY_INSTALL_DIRS = \
      $(if $(wildcard $(INSTALL_LOCATION_BIN)/*),,$(INSTALL_LOCATION_BIN)) \
      $(if $(wildcard $(INSTALL_LOCATION_LIB)/*),,$(INSTALL_LOCATION_LIB))
  uninstall: archuninstall uninstallDirs
	$(RMDIR) $(EMPTY_INSTALL_DIRS)

  archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))

  uninstall$(DIVIDER)%:
	$(RMDIR) $(addsuffix /$(subst uninstall$(DIVIDER),,$@), \
	    $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB))

  # Only run this at the top of the parent
  runtests test-results:
	@$(SHOWTESTFAILURES)

else
  #
  # Using a disabled rule aborts
  #

  distclean uninstall realuninstall archuninstall:
	$(error Target '$@' not available in a submodule)

endif # DISABLE_TOP_RULES

# Clean out old results
before-runtests before-test-results: rm-failure-file
rm-failure-file:
	$(RM) $(TESTS_FAILED_PATH)

help:
	@echo "Usage: gnumake [options] [target] ..."
	@echo "Targets supported by all Makefiles:"
	@echo "     all            - Same as install (default rule)"
	@echo "     inc            - Installs header, dbd and html files"
	@echo "     build          - Builds and installs all targets"
	@echo "     install        - Builds and installs all targets"
	@echo "     clean          - Removes the O.<arch> dirs created by running make"
	@echo "                      In O.<arch> dir, clean removes build created files"
	@echo "     realclean      - Removes ALL O.<arch> dirs"
	@echo "                      Cannot be used within an O.<arch> dir"
	@echo "     rebuild        - Same as clean install"
	@echo "     archclean      - Removes O.<arch> dirs but not O.Common dir"
	@echo "     depclean       - Removes .d files from all O.<arch> dirs."
	@echo "     cvsclean       - Removes backup files etc. from all dirs below"
	@echo "     runtests       - Run self-tests, summarize results immediately"
	@echo "     tapfiles       - Run self-tests, save to O.<arch>/*.tap files"
	@echo "     test-results   - Summarize all O.<arch>/*.tap files"
	@echo "     clean-tests    - Removes all O.<arch>/*.tap files"
	@echo "\"Partial\" build targets supported by Makefiles:"
	@echo "     host           - Builds and installs $(EPICS_HOST_ARCH) only."
	@echo "     inc$(DIVIDER)<arch>     - Installs <arch> only header files."
	@echo "     build$(DIVIDER)<arch>   - Builds and installs <arch> only."
	@echo "     install$(DIVIDER)<arch> - Builds and installs <arch> only."
	@echo "     clean$(DIVIDER)<arch>   - Cleans <arch> binaries in O.<arch> dirs only."
	@echo "Targets supported by top level Makefile:"
ifndef DISABLE_TOP_RULES
	@echo "     archuninstall  - Remove bin & lib directories created by this hostarch."
	@echo "     uninstall$(DIVIDER)<arch> - Remove bin & lib directories for <arch> only."
	@echo "     uninstall      - Remove install directories created by this hostarch."
	@echo "     realuninstall  - Removes ALL install dirs"
	@echo "     distclean      - Does realclean cvsclean realuninstall and deletes any"
	@echo "                      generated modules/RELEASE.<host>.local files"
endif
	@echo "     help           - Prints this list of valid make targets "
	@echo "Object targets are supported by the O.<arch> level Makefile .e.g"
	@echo "     xxxRecord.o"

.PHONY: distclean uninstall rm-failure-file help
.PHONY: realuninstall archuninstall uninstallDirs

ifndef DISABLE_TOP_RULES
  # Include <top>/cfg/TOP_RULES* files from tops defined in RELEASE* files
  #
  RELEASE_CFG_TOP_RULES = $(foreach top, $(RELEASE_TOPS), \
      $(wildcard $($(top))/cfg/TOP_RULES*))
  ifneq ($(RELEASE_CFG_TOP_RULES),)
    include $(RELEASE_CFG_TOP_RULES)
  endif
endif