[xbuild] Log build errors and raise events even if a build fails.
[mono.git] / scripts / Makefile.am
index 68e159f8a8e49363763b7d2b930ee5922cbdaa0f..1ffeee3e6e33388c62271d8d34e2d6b896d86053 100644 (file)
+#
+# Scripts that we install
+#
+# Starting with Mono 2.0, the majority of the tools default to the 
+# 2.0 profile.  Commands that support the 1.0 toolchain and must
+# run under 1.0 have the number 1 appended to their command names
+# (for example mcs1 is the C# 1.0 compiler) and are listed in the
+# scripts_1_0 compat variable.
+# 
+# To preserve compatibility with old Makefiles and tools we keep the
+# command names that had the suffix 2 (like wsdl2)
+#
+if USE_BATCH_FILES
+SCRIPT_IN=script.bat.in
+FILTER=sed -e 's,\.bat\.exe,\.exe,g' -e 's,/,\\,g'
+SCRIPT_SUFFIX=.bat
+else
+SCRIPT_IN=script.in
+FILTER=cat
+SCRIPT_SUFFIX=
+endif
+
+COMPAT_1_0_SUFFIX=1$(SCRIPT_SUFFIX)
+COMPAT_2_0_SUFFIX=2$(SCRIPT_SUFFIX)
+COMPAT_4_0_SUFFIX=4$(SCRIPT_SUFFIX)
+
 bin_SCRIPTS = \
-       $(scripts_1_0)          \
-       $(scripts_1_0_umask)    \
+       $(scripts_4_0_umask)    \
+       $(scripts_defaults)     \
        $(scripts_2_0)          \
-       $(scripts_2_1)          \
        $(scripts_service)      \
        $(scripts_nunit)        \
        $(scripts_rpmhelpers)   \
-       mono-test-install
-
-scripts_1_0 = \
-       al                      \
-       caspol                  \
-       cert2spc                \
-       certmgr                 \
-       chktrust                \
-       cilc                    \
-       disco                   \
-       dtd2xsd                 \
-       dtd2rng                 \
-       gacutil                 \
-       genxs                   \
-       ilasm                   \
-       installvst              \
-       macpack                 \
-       mbas                    \
-       mcs                     \
-       mjs                     \
-       mkbundle                \
-       monop                   \
-       monolinker              \
-       mono-api-diff           \
-       mono-api-info           \
-       mono-shlib-cop          \
-       mono-xmltool            \
-       mozroots                \
-       permview                \
-       prj2make                \
-       resgen                  \
-       secutil                 \
-       setreg                  \
-       signcode                \
-       soapsuds                \
-       sqlsharp                \
-       wsdl                    \
-       xsd
-
-scripts_1_0_umask = \
-       makecert                \
-       sn
+       $(MDOC_SUBCOMMANDS)     \
+       $(MDOC_COMPAT)          \
+       mono-test-install       \
+       peverify                        \
+       mcs                                     \
+       gmcs                            \
+       mono-heapviz            \
+       $(scripts_mono_configuration_crypto)
+
+if INSTALL_4_0
+bin_SCRIPTS += $(scripts_4_0)
+bin_SCRIPTS += dmcs
+endif
+
+scripts_4_0_umask = \
+       makecert$(SCRIPT_SUFFIX)                \
+       sn$(SCRIPT_SUFFIX)
+
+deprecated =                                   \
+       cilc(SCRIPT_SUFFIX)                     \
+       mjs(SCRIPT_SUFFIX)
 
 scripts_2_0 = \
-       al2                     \
-       gmcs                    \
-       httpcfg                 \
-       ilasm2                  \
-       mkbundle2               \
-       mono-api-info2          \
-       monop2                  \
-       resgen2                 \
-       wsdl2                   \
-       sgen                    \
-       xbuild
-
-scripts_2_1 = smcs
+       al2$(SCRIPT_SUFFIX)                     \
+       gacutil2$(SCRIPT_SUFFIX)                \
+       mdoc$(SCRIPT_SUFFIX)                    \
+       monop2$(SCRIPT_SUFFIX)                  \
+       resgen2$(SCRIPT_SUFFIX)                 \
+       wsdl2$(SCRIPT_SUFFIX)
+
+scripts_4_0 = \
+       disco$(SCRIPT_SUFFIX)                   \
+       dtd2xsd$(SCRIPT_SUFFIX)                 \
+       dtd2rng$(SCRIPT_SUFFIX)                 \
+       installvst$(SCRIPT_SUFFIX)              \
+       genxs$(SCRIPT_SUFFIX)                   \
+       macpack$(SCRIPT_SUFFIX)                 \
+       mono-cil-strip$(SCRIPT_SUFFIX)          \
+       prj2make$(SCRIPT_SUFFIX)                \
+       soapsuds$(SCRIPT_SUFFIX)                \
+       caspol$(SCRIPT_SUFFIX)                  \
+       cert2spc$(SCRIPT_SUFFIX)                \
+       certmgr$(SCRIPT_SUFFIX)                 \
+       chktrust$(SCRIPT_SUFFIX)                \
+       csharp$(SCRIPT_SUFFIX)                  \
+       httpcfg$(SCRIPT_SUFFIX)                 \
+       lc$(SCRIPT_SUFFIX)                      \
+       mconfig$(SCRIPT_SUFFIX)                 \
+       mod$(SCRIPT_SUFFIX)                     \
+       monolinker$(SCRIPT_SUFFIX)              \
+       mono-api-info$(SCRIPT_SUFFIX)           \
+       mono-shlib-cop$(SCRIPT_SUFFIX)          \
+       mozroots$(SCRIPT_SUFFIX)                \
+       permview$(SCRIPT_SUFFIX)                \
+       pdb2mdb$(SCRIPT_SUFFIX)                 \
+       xsd$(SCRIPT_SUFFIX)                     \
+       mono-xmltool$(SCRIPT_SUFFIX)            \
+       setreg$(SCRIPT_SUFFIX)                  \
+       secutil$(SCRIPT_SUFFIX)                 \
+       signcode$(SCRIPT_SUFFIX)                \
+       sgen$(SCRIPT_SUFFIX)                    \
+       sqlmetal$(SCRIPT_SUFFIX)                \
+       sqlsharp$(SCRIPT_SUFFIX)                \
+       svcutil$(SCRIPT_SUFFIX)                 \
+       xbuild$(SCRIPT_SUFFIX)                  \
+       ccrewrite$(SCRIPT_SUFFIX)
+
+MDOC_SUBCOMMANDS = \
+       mdoc-assemble \
+       mdoc-export-html \
+       mdoc-export-msxdoc \
+       mdoc-update \
+       mdoc-validate
+
+MDOC_COMPAT = \
+       mdassembler             \
+       mdvalidater             \
+       monodocer               \
+       monodocs2html           \
+       monodocs2slashdoc
+
+#
+# these are the new defaults, 2.0 profile-based commands
+#
+# we can move scripts_1_0 scripts here as we see fit, if we need to
+# keep a 1.0 command available, we should additionally put it on
+# the scripts_1_0_compat list
+#
+scripts_defaults =             \
+       al$(SCRIPT_SUFFIX)                      \
+       ilasm$(SCRIPT_SUFFIX)                   \
+       gacutil$(SCRIPT_SUFFIX)                 \
+       mkbundle$(SCRIPT_SUFFIX)                \
+       monop$(SCRIPT_SUFFIX)                   \
+       resgen$(SCRIPT_SUFFIX)                  \
+       wsdl$(SCRIPT_SUFFIX)
+
 scripts_service = mono-service mono-service2
-scripts_nunit = nunit-console nunit-console2
+scripts_nunit = nunit-console$(SCRIPT_SUFFIX) nunit-console2$(SCRIPT_SUFFIX)
 scripts_rpmhelpers = mono-find-provides mono-find-requires
+scripts_mono_configuration_crypto = mono-configuration-crypto$(SCRIPT_SUFFIX)
 
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA= mono-nunit.pc
-
-CLEANFILES = $(scripts_1_0) $(scripts_1_0_umask) $(scripts_2_0) $(scripts_2_1) gmcs mono-service mono-service2
+CLEANFILES = $(scripts_mono_configuration_crypto) $(scripts_4_0_umask) $(scripts_2_0) $(scripts_defaults) $(scripts_4_0) mono-service mono-service2 nunit-console nunit-console2 mono-find-provides mono-find-requires mod $(MDOC_SUBCOMMANDS)
 DISTCLEANFILES = $(pkgconfig_DATA) $(scripts_rpmhelpers)
 
-EXTRA_DIST =                   \
-       script.in              \
-       script_umask.in        \
-       smcs.in                 \
-       mono-service.in        \
-       mono-nunit.pc.in       \
-       mono-find-provides.in  \
-       mono-find-requires.in
+EXTRA_DIST =                   \
+       script.in               \
+       script.bat.in           \
+       script_umask.in         \
+       script_umask.bat.in     \
+       mod.in                  \
+       mono-service.in         \
+       mono-find-provides.in   \
+       mono-find-requires.in   \
+       peverify.in                     \
+       mcs.in                          \
+       gmcs.in                         \
+       dmcs.in                         \
+       mono-test-install       \
+       mono-heapviz            \
+       $(MDOC_COMPAT)          \
+       patch-quiet.sh          \
+       get-cygwin-deps.sh      \
+       mono-configuration-crypto.in
 
 if USE_JIT
 mono_interp = mono
@@ -88,14 +162,20 @@ else
 mono_interp = mint
 endif
 
-if PLATFORM_WIN32
+if HOST_WIN32
+if CROSS_COMPILING
+plat_bindir = $(bindir)
+mono_instdir = $(prefix)/lib/mono
+else
 plat_bindir = $(shell cygpath -m $(libdir))
 mono_instdir = $(shell cygpath -m $(libdir))/mono
+endif
 else
 plat_bindir = $(bindir)
 mono_instdir = $(prefix)/lib/mono
 endif
 
+
 REWRITE_COMMON = sed \
        -e 's,@''bindir@,$(bindir),g'                           \
        -e 's,@''plat_bindir@,$(plat_bindir),g'                 \
@@ -105,41 +185,81 @@ REWRITE_COMMON = sed \
 REWRITE = $(REWRITE_COMMON) -e 's,@''mono_interp@,$(mono_interp),g'
 REWRITE_DEBUG = $(REWRITE_COMMON) -e 's,@''mono_interp@,$(mono_interp) --debug,g'
 
-REWRITE1 = $(REWRITE) -e 's,@''framework_version@,1.0,g'
 REWRITE2 = $(REWRITE) -e 's,@''framework_version@,2.0,g'
 REWRITE2_1 = $(REWRITE) -e 's,@''framework_version@,2.1,g'
-REWRITE1_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,1.0,g'
+if INSTALL_4_0
+REWRITE4 = $(REWRITE) -e 's,@''framework_version@,4.0,g'
+else
+REWRITE4 = $(REWRITE) -e 's,@''framework_version@,2.0,g'
+endif
 REWRITE2_DEBUG = $(REWRITE_DEBUG) -e 's,@''framework_version@,2.0,g'
 
+peverify: peverify.in Makefile
+       $(REWRITE_COMMON) $(srcdir)/peverify.in > $@.tmp
+       mv -f $@.tmp $@
+
+mcs: mcs.in Makefile
+       $(REWRITE_COMMON) $(srcdir)/mcs.in > $@.tmp
+       mv -f $@.tmp $@
+
+gmcs: gmcs.in Makefile
+       $(REWRITE_COMMON) $(srcdir)/gmcs.in > $@.tmp
+       mv -f $@.tmp $@
+
+dmcs: dmcs.in Makefile
+       $(REWRITE_COMMON) $(srcdir)/dmcs.in > $@.tmp
+       mv -f $@.tmp $@
+
 mono-service: mono-service.in Makefile
-       $(REWRITE1) -e 's,@''exe_name@,$@,g' $(srcdir)/mono-service.in > $@.tmp
-       mv $@.tmp $@
+       $(REWRITE4) -e 's,@''exe_name@,$@,g' $(srcdir)/mono-service.in > $@.tmp
+       mv -f $@.tmp $@
 
 mono-service2: mono-service.in Makefile
        $(REWRITE2) -e 's,@''exe_name@,$@,g' $(srcdir)/mono-service.in > $@.tmp
-       mv $@.tmp $@
+       mv -f $@.tmp $@
+
+nunit-console$(SCRIPT_SUFFIX): $(SCRIPT_IN) Makefile
+       $(REWRITE2_DEBUG) -e 's,@''exe_name@,nunit-console,g' $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
+       mv -f $@.tmp $@
+
+nunit-console2$(SCRIPT_SUFFIX): $(SCRIPT_IN) Makefile
+       $(REWRITE2_DEBUG) -e 's,@''exe_name@,nunit-console,g' $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
+       mv -f $@.tmp $@
+
+#FIXME: this is not the correct rule for mod.bat.
+mod$(SCRIPT_SUFFIX): mod.in Makefile
+       $(REWRITE2) -e "s,@""exe_name@,mod,g" $(srcdir)/mod.in > $@.tmp
+       mv -f $@.tmp $@
+
+#FIXME: this is not the correct rule for bat files.
+$(scripts_4_0_umask): script_umask.in Makefile
+       n=`echo $@ | sed 's,$(COMPAT_4_0_SUFFIX)$$,,'`; \
+       $(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/script_umask.in | $(FILTER) > $@.tmp
+       mv -f $@.tmp $@
 
-nunit-console: script.in Makefile
-       $(REWRITE1_DEBUG) -e 's,@''exe_name@,nunit-console,g' $(srcdir)/script.in > $@.tmp
-       mv $@.tmp $@
+$(scripts_defaults): $(SCRIPT_IN) Makefile
+       n=`echo $@ | sed 's,$(COMPAT_4_0_SUFFIX)$$,,'`; \
+       $(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
+       mv -f $@.tmp $@
 
-nunit-console2: script.in Makefile
-       $(REWRITE2_DEBUG) -e 's,@''exe_name@,nunit-console,g' $(srcdir)/script.in > $@.tmp
-       mv $@.tmp $@
+$(scripts_2_0): $(SCRIPT_IN) Makefile
+       n=`echo $@ | sed 's,$(COMPAT_2_0_SUFFIX)$$,,'`; \
+       $(REWRITE2) -e "s,@""exe_name@,$$n,g" $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
+       mv -f $@.tmp $@
 
-smcs: smcs.in Makefile
-       $(REWRITE2_1) -e "s,@""exe_name@,smcs,g" $(srcdir)/smcs.in > $@.tmp
-       mv $@.tmp $@
+$(scripts_4_0): $(SCRIPT_IN) Makefile
+       n=`echo $@ | sed 's,$(COMPAT_4_0_SUFFIX)$$,,'`; \
+       $(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
+       mv -f $@.tmp $@
 
-$(scripts_1_0): script.in Makefile
-       $(REWRITE1) -e 's,@''exe_name@,$@,g' $(srcdir)/script.in > $@.tmp
-       mv $@.tmp $@
+$(scripts_mono_configuration_crypto): mono-configuration-crypto.in
+       $(REWRITE4)  -e "s,@exe_name@,mono-configuration-crypto,g" $(srcdir)/mono-configuration-crypto.in > $@.tmp
+       mv -f $@.tmp $@
 
-$(scripts_1_0_umask): script_umask.in Makefile
-       $(REWRITE1) -e 's,@''exe_name@,$@,g' $(srcdir)/script_umask.in > $@.tmp
-       mv $@.tmp $@
+$(MDOC_SUBCOMMANDS): Makefile
+       for script in $(MDOC_SUBCOMMANDS) ; do                  \
+               cmd=`echo $$script | sed 's/mdoc-//'` ;         \
+               echo "#!/bin/sh" > $$script ;                   \
+               echo "exec mdoc $$cmd \"\$$@\"" >> $$script;    \
+       done
 
-$(scripts_2_0): script.in Makefile
-       n=`echo $@ | sed 's,2$$,,'`; \
-       $(REWRITE2) -e "s,@""exe_name@,$$n,g" $(srcdir)/script.in > $@.tmp
-       mv $@.tmp $@