• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

READMEH A D05-Apr-20202.5 KiB5644

application.makeH A D05-Apr-20203.6 KiB9778

bundle.makeH A D05-Apr-20202.4 KiB7253

clibrary.makeH A D05-Apr-20202.5 KiB7556

ctool.makeH A D05-Apr-20202.1 KiB6548

deb.makeH A D05-Apr-20204.5 KiB142119

documentation.makeH A D05-Apr-20202.2 KiB6253

framework.makeH A D05-Apr-20202 KiB5842

gswapp.makeH A D05-Apr-20202.6 KiB8163

gswbundle.makeH A D05-Apr-20202.4 KiB7254

java-tool.makeH A D05-Apr-20201.8 KiB5543

java.makeH A D05-Apr-20201.9 KiB5240

library.makeH A D05-Apr-20202.5 KiB7556

nsis.makeH A D05-Apr-20205.9 KiB164152

objc.makeH A D05-Apr-20202.3 KiB6548

palette.makeH A D05-Apr-20202.7 KiB7961

parallel-subdirectories.makeH A D05-Apr-20204.8 KiB115103

resource-set.makeH A D05-Apr-20201.2 KiB4030

rpm.makeH A D05-Apr-20209.9 KiB268239

rules.makeH A D05-Apr-202016.3 KiB458384

serial-subdirectories.makeH A D05-Apr-20202.8 KiB7062

service.makeH A D05-Apr-20202.7 KiB8061

source-distribution.makeH A D05-Apr-202017 KiB534487

subproject.makeH A D05-Apr-20202.7 KiB7557

test-application.makeH A D05-Apr-20202.7 KiB8162

test-library.makeH A D05-Apr-20202.7 KiB7756

test-tool.makeH A D05-Apr-20202.2 KiB6749

tool.makeH A D05-Apr-20204.4 KiB11189

README

1The 'Master' invocation is the first time that 'make' is run on any
2GNUmakefile in your project.
3
4During the 'Master' invocation, gnustep-make determines exactly what
5it needs to build.  For example, in the following GNUmakefile -
6
7include $(GNUSTEP_MAKEFILES)/common.make
8
9LIBRARY_NAME = libquantum
10TOOL_NAME = create destroy
11
12create_OBJC_FILES = create.m
13destroy_OBJC_FILES = destroy.m
14libquantum_OBJC_FILES = quantum.m
15
16include $(GNUSTEP_MAKEFILES)/library.make
17include $(GNUSTEP_MAKEFILES)/tool.make
18
19the 'Master' invocation will determine that we need to perform the
20following logically separated operations -
21
22type:library name:libquantum operation:all
23type:tool    name:create     operation:all
24type:tool    name:destroy    operation:all
25
26It will then run an 'Instance' invocation for each of these tasks.
27The 'Instance' invocation is a submake invocation, with some special
28variables set telling it exactly what task it needs to perform out of
29all the available ones.  The 'Instance' invocation will read the same
30user GNUmakefile(s) as the 'Master' invocation, but will use different
31system makefiles.  The 'Instance' invocation will actually include and
32use all the code to perform the required tasks.
33
34The role of the 'Master' invocation is very limited.  It needs to
35determine which 'Instance' invocations to run, and then exit.
36
37Please note that we have a 'Master' invocation per each GNUmakefile in
38your project.  We have an 'Instance' invocation per each logically
39separate thing to do in your project.
40
41You might wonder why we use 'Instance' invocations at all, and why we
42don't actually perform each instance task inside the 'Master'
43invocation itself.  The explanation is very technical ... in a few
44words, we can't because of limitations of make.  The problem is that
45if you have multiple instances of the same type, say multiple
46libraries or multiple tools or multiple yyys (or all of them), each
47one might require an arbitrarily complex makefile code to be built,
48which should change according to the value of xxx_ANY_VARIABLE_HERE,
49where xxx is the library/tool/yyy name.  So we have the problem that
50we need to execute the same makefile code with an arbitrary value of
51xxx, for each xxx.  That is difficult to do in the same make
52invocation, because the make grammar doesn't contain any looping
53construct allowing us to include the same makefile multiple times, one
54for each value of xxx.  What we do to work around this problem is, we
55run a separate submake invocation per instance to be built.
56