1Files in this directory are makefile fragments which might be included
2by arbitrary project types during the instance make invocation.  You
3can think of it as a little library of makefile fragments which can be
4used to build project types more easily, and to favour code reuse and
5API consistency between different project types.
6
7Each of the makefile fragments will normally contain
8
9 * standalone makefile code
10
11 * make targets and rules
12
13The makefile fragment must document (ie list at the very least) very
14clear which variables are used by the makefile fragment.
15
16Normally, the variables are either
17
18 * $($(GNUSTEP_INSTANCE)_XXX) variables, such as
19   $($(GNUSTEP_INSTANCE)_HEADERS) for a makefile fragment installing headers.
20
21   Because GNUSTEP_INSTANCE is guaranteed to be the name of the instance we
22   process during an instance invocation, this will extract xxx_HEADERS
23   regardless of the type of project.  Most variables should be of this type.
24
25 * GNUSTEP_SHARED_XXX_YYY, where XXX should be the makefile fragment name
26   (such as 'HEADERS', or 'JAVA'), and YYY is the variable specific name.
27   These variables are to be thought as arguments being passed from the
28   project makefile to the shared makefile fragment.
29
30   For example, GNUSTEP_SHARED_JAVA_INSTALLATION_DIR will be set to
31   JAVA_INSTALLATION_DIR by Instance/java.make and to
32   JAVA_TOOL_INSTALLATION_DIR/Java by Instance/java-tool.make, before including
33   Shared/java.make.  Shared/java.make will install the java files into
34   GNUSTEP_SHARED_JAVA_INSTALLATION_DIR, which will point to the correct
35   location in both cases.
36
37   Please note that in this case you can't use $($(GNUSTEP_INSTANCE)_XXX)
38   variables because the end-user API explicitly allow them to set a single
39   JAVA_[TOOL_]INSTALLATION_DIR for the whole GNUmakefile.
40
41The make fragments rules should be named as follows -
42
43 shared-instance-xxx-yyy where xxx is the name of the makefile fragment
44 (such as 'java' or 'headers'), and yyy is the actual target (such as
45 'clean', 'install', 'all').  If possible, the standard targets should
46 be provided (all, install, uninstall, clean, distclean).  In certain cases,
47 additional targets might be provided, or empty standard targets omitted.
48 It should be clear which ones are 'public' targets, and which ones are
49 'private' targets (internal to the implementation of the makefile fragment).
50
51The make fragments do not need to be protected against multiple inclusions.
52