summarylogtreecommitdiffstats
path: root/Makefile
blob: 8eb7081d1e220a727d3ec61a809965bd18c43b64 (plain)
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
srcdir := <SRCDIR>/fsharp-4.0.1.8/src/fsharp/

include <SRCDIR>/fsharp-4.0.1.8/config.make

# Make the proto using the bootstrap, then make the final compiler using the proto
# We call MAKE sequentially because we don't want build-final to explicitly depend on build-proto,
# as that causes a complete recompilation of both proto and final everytime you touch the
# compiler sources.
all:
	$(MAKE) build-proto
	$(MAKE) build

# We need the bootstrap's FSharp.Core to run the proto
build-proto: $(bootstrap)/FSharp.Core.dll $(bootstrap)/FSharp.Core.sigdata $(bootstrap)/FSharp.Core.optdata
	@-mkdir -p $(protodir)
	#ls -R $(monolibdir)/..
	cp -p $(bootstrap)/FSharp.Core.dll $(protodir)FSharp.Core.dll
	cp -p $(bootstrap)/FSharp.Core.sigdata $(protodir)FSharp.Core.sigdata
	cp -p $(bootstrap)/FSharp.Core.optdata $(protodir)FSharp.Core.optdata
	$(MAKE) -C FSharp.Build-proto Configuration=proto $@
	$(MAKE) -C FSharp.Compiler-proto Configuration=proto $@
	$(MAKE) -C Fsc-proto Configuration=proto $@

# The main targets
#
# - Only build a net20 version of FSharp.Core if net20 mscorlib exists
#   Modern versions of mono no longer include net20 or net35 assemblies
#
build clean install:
	$(MAKE) -C FSharp.Core TargetFramework=net40 $@
	$(MAKE) -C FSharp.Build $@
	$(MAKE) -C FSharp.Compiler $@
	$(MAKE) -C Fsc $@
	$(MAKE) -C FSharp.Compiler.Interactive.Settings $@
	$(MAKE) -C FSharp.Compiler.Server.Shared $@
	$(MAKE) -C fsi $@
	$(MAKE) -C fsiAnyCpu $@
	$(MAKE) -C policy.2.0.FSharp.Core $@
	$(MAKE) -C policy.2.3.FSharp.Core $@
	$(MAKE) -C policy.3.3.FSharp.Core $@
	$(MAKE) -C policy.3.7.FSharp.Core $@
	$(MAKE) -C policy.3.47.FSharp.Core $@
	$(MAKE) -C policy.3.78.FSharp.Core $@
	$(MAKE) -C policy.3.259.FSharp.Core $@
	$(MAKE) -C policy.4.0.FSharp.Core $@
	$(MAKE) -C policy.4.3.FSharp.Core $@
	if test -e $MONOGACDIR20/mscorlib.dll; then $(MAKE) -C FSharp.Core TargetFramework=net20 $@;fi
	$(MAKE) only-monotouch only-monodroid only-xamarinmac
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.0 TargetFramework=net40 $@
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.1 TargetFramework=net40 $@
	if test -e $MONOGACDIR20/mscorlib.dll; then $(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.0 TargetFramework=net20 $@;fi
ifeq ("$(pclenabled47)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=portable47 $@
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.0 TargetFramework=portable47 $@
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.1 TargetFramework=portable47 $@
endif
ifeq ("$(pclenabled7)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=portable7 $@
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.1 TargetFramework=portable7 $@
endif
ifeq ("$(pclenabled78)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=portable78 $@
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.1 TargetFramework=portable78 $@
endif
ifeq ("$(pclenabled259)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=portable259 $@
	$(MAKE) -C FSharp.Core FSharpCoreBackVersion=3.1 TargetFramework=portable259 $@
endif

all-monotouch-monodroid-xamarinmac:
	$(MAKE) build-proto
	$(MAKE) only-monotouch only-monodroid only-xamarinmac only-xamarinwatchos only-xamarintvos

all-monotouch-xamarinmac:
	$(MAKE) build-proto
	$(MAKE) only-monotouch only-xamarinmac only-xamarinwatchos only-xamarintvos

all-monotouch-monodroid:
	$(MAKE) build-proto
	$(MAKE) only-monotouch only-monodroid only-xamarinwatchos only-xamarintvos

all-monotouch:
	$(MAKE) build-proto
	$(MAKE) only-monotouch only-xamarinwatchos only-xamarintvos

only-monotouch:
ifeq ("$(monotouchenabled)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=monotouch build
endif

only-xamarinwatchos:
ifeq ("$(monotouchenabled)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=xamarinwatchos build
endif

only-xamarintvos:
ifeq ("$(monotouchenabled)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=xamarintvos build
endif

all-monodroid:
	$(MAKE) build-proto
	$(MAKE) only-monodroid

only-monodroid:
ifeq ("$(monodroidenabled)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=monodroid build
endif

all-xamarinmac:
	$(MAKE) build-proto
	$(MAKE) only-xamarinmac

only-xamarinmac: only-xamarinmacmobile only-xamarinmacfull

only-xamarinmacmobile:
ifeq ("$(xamarinmacenabled)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=xamarinmacmobile build
endif

only-xamarinmacfull:
ifeq ("$(xamarinmacenabled)", "yes")
	$(MAKE) -C FSharp.Core TargetFramework=xamarinmacfull build
endif