2 # This directory is used to AOT the C# compiler to speed up the rest of the class libs build
3 # It should be run after the assemblies the compiler depends on have been compiled, since
4 # the AOT image has a dependency on the exact assembly versions used to produce it.
7 thisdir
= class
/aot-compiler
9 include ..
/..
/build
/rules.make
11 the_libdir
= $(topdir
)/class
/lib
/$(PROFILE_DIRECTORY
)/
12 CSC_DIR
= $(dir $(CSC_LOCATION
))
13 # The directory where the AOT images are stored
14 images_dir
= $(the_libdir
)
16 # mcs.exe is only in the build profile, but the aot image should be compiled against the current
18 mcs_exe
= $(the_libdir
)/mcs.exe
19 mcs_aot_image
= $(the_libdir
)/mcs.exe
$(PLATFORM_AOT_SUFFIX
)
20 csc_exe
= $(CSC_LOCATION
)
21 csc_aot_image
= $(images_dir
)/csc.exe
$(PLATFORM_AOT_SUFFIX
)
22 csc_MCS_dll
= $(CSC_DIR
)/Microsoft.CodeAnalysis.CSharp.dll
23 csc_MCS_image
= $(images_dir
)/Microsoft.CodeAnalysis.CSharp.dll
$(PLATFORM_AOT_SUFFIX
)
24 csc_MC_dll
= $(CSC_DIR
)/Microsoft.CodeAnalysis.dll
25 csc_MC_image
= $(images_dir
)/Microsoft.CodeAnalysis.dll
$(PLATFORM_AOT_SUFFIX
)
26 csc_SRM_dll
= $(CSC_DIR
)/System.Reflection.Metadata.dll
27 csc_SRM_image
= $(images_dir
)/System.Reflection.Metadata.dll
$(PLATFORM_AOT_SUFFIX
)
28 csc_SCI_dll
= $(CSC_DIR
)/System.Collections.Immutable.dll
29 csc_SCI_image
= $(images_dir
)/System.Collections.Immutable.dll
$(PLATFORM_AOT_SUFFIX
)
31 mscorlib_dll
= $(the_libdir
)/mscorlib.dll
32 mscorlib_aot_image
= $(mscorlib_dll
)$(PLATFORM_AOT_SUFFIX
)
34 # The $(dir $(RUNTIME)) is necessary to get path to the mono binary in case when we cross-compile
35 # or just compile from a different directory than the top source dir
36 runtime_dep
= $(dir $(RUNTIME
))/..
/mono
/mini
/mono
38 PROGRAM_INSTALL_DIR
= $(mono_libdir
)/mono
/$(FRAMEWORK_VERSION
)
39 LIBRARY_INSTALL_DIR
= $(mono_libdir
)/mono
/$(FRAMEWORK_VERSION
)
41 LOG_FILE
= $(PROFILE_DIRECTORY
)_aot.log
45 profile_file
:=$(wildcard $(topdir
)/class
/lib
/build
/csc.
*.aotprofile
)
46 ifneq ($(profile_file
),)
50 profile_arg
:=$(subst $(space
)$(comma
),$(comma
),$(foreach pf
,$(profile_file
),$(comma
)profile
=$(strip $(pf
))))
53 ifdef PLATFORM_AOT_SUFFIX
54 $(mcs_aot_image
): $(mcs_exe
) $(mscorlib_dll
) $(runtime_dep
)
55 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
),outfile
=$(mcs_aot_image
) --debug
$(mcs_exe
) || cat
$(LOG_FILE
) ||
(cat
$(LOG_FILE
); exit
1)
57 $(csc_aot_image
): $(csc_exe
) $(mscorlib_dll
) $(runtime_dep
)
58 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
),outfile
=$(csc_aot_image
) --debug
$(csc_exe
) || cat
$(LOG_FILE
) ||
(cat
$(LOG_FILE
); exit
1)
60 $(mscorlib_aot_image
): $(mscorlib_dll
) $(runtime_dep
)
61 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
) --debug
$(mscorlib_dll
) ||
(cat
$(LOG_FILE
); exit
1)
63 $(csc_MC_image
): $(csc_MC_dll
) $(runtime_dep
)
64 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
),outfile
=$(csc_MC_image
) --debug
$(csc_MC_dll
) ||
(cat
$(LOG_FILE
); exit
1)
66 $(csc_MCS_image
): $(csc_MCS_dll
) $(runtime_dep
)
67 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
),outfile
=$(csc_MCS_image
) --debug
$(csc_MCS_dll
) ||
(cat
$(LOG_FILE
); exit
1)
69 $(csc_SRM_image
): $(csc_SRM_dll
) $(runtime_dep
)
70 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
),outfile
=$(csc_SRM_image
) --debug
--apply-bindings
=$(csc_exe
).config
$(csc_SRM_dll
) ||
(cat
$(LOG_FILE
); exit
1)
72 $(csc_SCI_image
): $(csc_SCI_dll
) $(runtime_dep
)
73 $(Q_AOT
) MONO_PATH
='$(the_libdir)' > $(LOG_FILE
) 2>&1 $(RUNTIME
) --aot
=bind-to-runtime-version
$(profile_arg
),outfile
=$(csc_SCI_image
) --debug
$(csc_SCI_dll
) ||
(cat
$(LOG_FILE
); exit
1)
77 CSC_IMAGES
= $(csc_aot_image
) $(csc_SRM_image
) $(csc_SCI_image
) $(csc_MC_image
) $(csc_MCS_image
)
80 -rm -f
$(mscorlib_aot_image
) $(mcs_aot_image
) $(CSC_IMAGES
) $(LOG_FILE
)
82 # AOT build profile to speed up build
83 ifeq ($(PROFILE
),build
)
85 IMAGES
= $(mscorlib_aot_image
)
88 IMAGES
+= $(mcs_aot_image
)
90 IMAGES
+= $(CSC_IMAGES
)
98 ifeq ($(PROFILE
), $(DEFAULT_PROFILE
))
100 IMAGES
= $(mscorlib_aot_image
) $(mcs_aot_image
) $(CSC_IMAGES
)
104 $(MKINSTALLDIRS
) $(DESTDIR
)$(LIBRARY_INSTALL_DIR
)
105 $(INSTALL_LIB
) $(IMAGES
) $(DESTDIR
)$(LIBRARY_INSTALL_DIR
)
115 dist-local
: dist-default