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