X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=Makefile.am;h=0017405ca5a5c5937e8e74960040a95988e2b92d;hb=f8c9c8751290f47fa17fa5851ce97ddc9c443bf4;hp=3d263775f607a18f103292c574ee62ffb36341a0;hpb=30922fd1758a8f969125f69d02c12133167ec65f;p=mono.git diff --git a/Makefile.am b/Makefile.am index 3d263775f60..0017405ca5a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,169 +1,89 @@ AUTOMAKE_OPTIONS = foreign +ACLOCAL_AMFLAGS = -I . -SUBDIRS = @libgc_dir@ mono @ikvm_jni_dir@ docs runtime scripts man data samples support web +MOONLIGHT_SUBDIRS = $(libgc_dir) eglib mono $(ikvm_native_dir) data +if CROSS_COMPILING +SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) data runtime scripts man samples web msvc $(docs_dir) # Keep in sync with SUBDIRS ## 'tools' is not normally built -DIST_SUBDIRS = libgc mono ikvm-jni docs runtime scripts man data samples support web tools - -EXTRA_DIST= mono.pc.in mono.spec.in mint.pc.in - -pkgconfigdir = $(libdir)/pkgconfig -if JIT_SUPPORTED -pkgconfig_DATA= mono.pc mint.pc +DIST_SUBDIRS = po libgc eglib mono ikvm-native data runtime scripts man samples web tools msvc docs +else +if ONLY_MOONLIGHT +SUBDIRS = $(MOONLIGHT_SUBDIRS) runtime else -pkgconfig_DATA= mint.pc +SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples web msvc $(docs_dir) +# Keep in sync with SUBDIRS +## 'tools' is not normally built +DIST_SUBDIRS = po libgc eglib mono ikvm-native support data runtime scripts man samples web tools msvc docs +endif endif -DISTCLEANFILES= mono.pc mint.pc -# -# The following targets are used to compile and install -# mono and mcs without running into the out-of-sync -# problems by doing the compilation in the right order. -# +EXTRA_DIST= nls.m4 po.m4 progtest.m4 mono-uninstalled.pc.in build-mingw32.sh LICENSE mkinstalldirs autogen.sh -mcs_topdir=$(top_srcdir)/../mcs +DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false -.PHONY: bootstrap faststrap fasterstrap bootstrap-clean bootstrap-check get-monolite-latest monolite-bootstrap -.PHONY: tmpinst-dir tmpinst-mcs-basic-build tmpinst-mcs-short-build tmpinst-mcs-full-build tmpinst-monolite -.PHONY: mono-do-runtime-only mcs-do-basic-build mcs-do-short-build mcs-do-full-build mcs-do-clean-profiles mcs-do-run-test +# Distribute the 'mcs' tree too +GIT_DIR ?= $(srcdir)/.git +dist-hook: + test -d $(distdir)/mcs || mkdir $(distdir)/mcs + d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive + test ! -d $(GIT_DIR) || ./scripts/commits-to-changelog.py --root=$(distdir) last-commit-with-compulsory-changelog-entry -if USE_JIT -mono_runtime = mono/mini/mono -else -mono_runtime = mono/interpreter/mint -endif - -# Minimal set of directories to build, and files used to run the 'mcs' compiler -MCS_BASIC_DIRS = jay mcs class/corlib class/System -MCS_BASIC_FILES = \ - $(mcs_topdir)/mcs/mcs.exe \ - $(mcs_topdir)/class/lib/default/mscorlib.dll \ - $(mcs_topdir)/class/lib/default/System.dll - -# Set of directories and files the 'mcs' compiler can use -## We build class/System twice to resolve the cyclic dependency of class/System.XML -MCS_DIRS = $(MCS_BASIC_DIRS) class/System.XML class/System class/Mono.CSharp.Debugger -MCS_FILES = $(MCS_BASIC_FILES) \ - $(mcs_topdir)/class/lib/default/System.Xml.dll \ - $(mcs_topdir)/class/lib/default/Mono.CSharp.Debugger.dll - -tmpinst = _tmpinst - -bootstrap: tmpinst-mcs-basic-build mono-do-runtime-only - $(MAKE) tmpinst-mcs-short-build - $(MAKE) fasterstrap - -faststrap: tmpinst-mcs-short-build - $(MAKE) mono-do-runtime-only - $(MAKE) fasterstrap - -.PHONY: populate-runtime-subdir -## *** warning ***: tested only with GNU make -populate-runtime-subdir: - srcdir=`cd $(srcdir) && pwd`; tmpinst=`pwd`/$(tmpinst) ; \ - cd $(mcs_topdir) \ - && $(MAKE) PROGRAM_INSTALL_DIR=$$srcdir/runtime LIBRARY_INSTALL_DIR=$$srcdir/runtime/net_1_1 prefix=$$tmpinst/prefix PROFILE=default install \ - && $(MAKE) PROGRAM_INSTALL_DIR=$$srcdir/runtime LIBRARY_INSTALL_DIR=$$srcdir/runtime/net_2_0 prefix=$$tmpinst/prefix PROFILE=net_2_0 install - test -z "`find $(tmpinst)/prefix -name '*.dll'`" - test -z "`find $(tmpinst)/prefix -name '*.exe'`" - set fnord `find $(tmpinst)/prefix -type f | wc -l` ; test "$$2" = 9 - rm -rf $(tmpinst)/prefix - -fasterstrap: tmpinst-mcs-full-build - $(MAKE) populate-runtime-subdir - $(MAKE) - -bootstrap-clean: clean mcs-do-clean-profiles -bootstrap-check: check mcs-do-run-test +pkgconfigdir = $(libdir)/pkgconfig +noinst_DATA = mono-uninstalled.pc +DISTCLEANFILES= mono-uninstalled.pc # building with monolite - +mcslib = $(mcs_topdir)/class/lib +monolite = $(mcslib)/monolite +monolite_url = http://mono.ximian.com/daily/monolite-latest.tar.gz +.PHONY: get-monolite-latest get-monolite-latest: - wget -O $(srcdir)/../monolite-latest.tar.gz http://www.go-mono.com/daily/monolite-latest.tar.gz - -monolite-bootstrap: tmpinst-monolite mono-do-runtime-only - rm -f $(MCS_FILES) - $(MAKE) tmpinst-mcs-short-build - $(MAKE) fasterstrap - -# internal targets - -tmpinst-mcs-basic-build: mcs-do-basic-build tmpinst-dir - mv -f $(MCS_BASIC_FILES) $(tmpinst)/lib - -tmpinst-mcs-short-build: mcs-do-short-build tmpinst-dir - mv -f $(MCS_FILES) $(tmpinst)/lib - -tmpinst-mcs-full-build: mcs-do-full-build tmpinst-dir - cp -f $(MCS_FILES) $(tmpinst)/lib - -tmpinst-monolite: tmpinst-dir - -rm -f $(tmpinst)/lib/mcs.exe $(tmpinst)/lib/*.dll - -rm -fr $(tmpinst)/monolite-* - srcdir=`cd $(srcdir) && pwd` && cd $(tmpinst) && ( gzip -d -c $$srcdir/../monolite-latest.tar.gz | tar xf - ) - mv -f $(tmpinst)/monolite-*/mcs.exe $(tmpinst)/monolite-*/*.dll $(tmpinst)/lib - rm -fr $(tmpinst)/monolite-* - -# Build enough of 'mono' to run the stage1 mcs.exe -mono-do-runtime-only: $(CONFIG_HEADER) - for dir in $(libgc_dir) mono data; do \ - (cd $$dir && $(MAKE)) || exit 1 ; \ - done - -mcs-do-basic-build: - rm -f $(MCS_FILES) - for dir in $(MCS_BASIC_DIRS); do \ - (cd $(mcs_topdir)/$$dir && $(MAKE) PROFILE=default USE_BOOT_COMPILE=yes BOOTSTRAP_MCS="mcs -d:BOOTSTRAP_WITH_OLDLIB") || exit 1 ; \ - done - -mcs-do-short-build: - tmpinst=`cd $(tmpinst) && pwd` ; \ - PATH=$$tmpinst/bin:$$PATH; export PATH ; \ - for dir in $(MCS_DIRS); do \ - (cd $(mcs_topdir)/$$dir && $(MAKE) PROFILE=default) || exit 1 ; \ - done - -mcs-do-full-build: - tmpinst=`cd $(tmpinst) && pwd` ; \ - PATH=$$tmpinst/bin:$$PATH ; export PATH ; \ - cd $(mcs_topdir) && $(MAKE) all-profiles - -mcs-do-clean-profiles: - cd $(mcs_topdir) && $(MAKE) clean-profiles - -mcs-do-run-test: tmpinst-dir - tmpinst=`cd $(tmpinst) && pwd` ; \ - PATH=$$tmpinst/bin:$$PATH ; export PATH ; \ - cd $(mcs_topdir) && $(MAKE) PROFILE=default run-test - -tmpinst-dir: - mkdir -p $(tmpinst) $(tmpinst)/bin $(tmpinst)/lib $(tmpinst)/etc/mono - $(MAKE) $(tmpinst)/bin/mono $(tmpinst)/bin/mcs $(tmpinst)/etc/mono/machine.config - -$(tmpinst)/bin/mono: $(srcdir)/Makefile.am - echo '#! /bin/sh' > $@ - echo 'builddir="'`pwd`'"; tmpinst=$$builddir/$(tmpinst)' >> $@ - echo 'if test -z "$$MONO_PATH" ; then MONO_PATH=$$tmpinst/lib; else MONO_PATH=$${MONO_PATH}:$$tmpinst/lib ; fi' >> $@ - echo 'MONO_CFG_DIR=$$tmpinst/etc' >> $@ - echo 'export MONO_PATH MONO_CFG_DIR' >> $@ - echo 'exec "$$builddir/libtool" --mode=execute "$$builddir/$(mono_runtime)" --config "$$builddir/data/config" "$$@"' >> $@ - chmod +x $@ - -$(tmpinst)/bin/mcs: $(srcdir)/Makefile.am - (t=`cd $(tmpinst) && pwd`; echo '#! /bin/sh'; echo 'exec "'"$$t/bin/mono"'" "'"$$t/lib/mcs.exe"'" "$$@"') > $@ - chmod +x $@ - -$(tmpinst)/etc/mono/machine.config: $(srcdir)/data/machine.config - rm -f $@ - srcdir=`cd $(srcdir) && pwd`; cd $(tmpinst)/etc/mono && $(LN_S) $$srcdir/data/machine.config machine.config - -# Obsolete target -- don't use. -.PHONY: fullbuild -fullbuild: bootstrap + -rm -fr $(mcslib)/monolite-* + -mkdir -p $(mcslib) + test ! -d $(monolite) || test ! -d $(monolite).old || rm -fr $(monolite).old + test ! -d $(monolite) || mv -f $(monolite) $(monolite).old + cd $(mcslib) && { (wget -O- $(monolite_url) || curl $(monolite_url)) | gzip -d | tar xf - ; } + cd $(mcslib) && mv -f monolite-* monolite + +.PHONY: validate do-build-mono-mcs mcs-do-clean mcs-do-tests +validate: do-build-mono-mcs + $(MAKE) mcs-do-tests +do-build-mono-mcs: mcs-do-clean + $(MAKE) all +mcs-do-clean: + cd runtime && $(MAKE) clean-local + cd mono/tests && $(MAKE) clean +mcs-do-tests: + cd runtime && $(MAKE) check-local + cd mono/tests && $(MAKE) check + +.PHONY: compiler-tests mcs-do-compiler-tests +compiler-tests: + $(MAKE) test_select='TEST_SUBDIRS="tests errors"' validate +mcs-do-compiler-tests: + $(MAKE) test_select='TEST_SUBDIRS="tests errors"' mcs-do-tests + +.PHONY: bootstrap-world +bootstrap-world: compiler-tests $(MAKE) install - echo "*** 'fullbuild' is an obsolete target. Use 'make bootstrap && make install'." - exit 1 + +if MOONLIGHT +moon-do-build: config.h + @list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \ + echo "Making all in $$subdir"; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) all); \ + done; + cd $(mcs_topdir) && NO_DIR_CHECK=1 $(MAKE) PROFILE=moonlight_raw all + +moon-do-clean: + @list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \ + echo "Making clean in $$subdir"; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) clean); \ + done; + cd $(mcs_topdir) && NO_DIR_CHECK=1 $(MAKE) PROFILE=moonlight_raw clean +endif win32getdeps: wget http://www.go-mono.com/archive/pkgconfig-0.11-20020310.zip @@ -172,14 +92,39 @@ win32getdeps: wget http://www.go-mono.com/archive/libiconv-1.7.zip wget http://www.go-mono.com/archive/libiconv-dev-1.7.zip wget http://www.go-mono.com/archive/libintl-0.10.40-20020101.zip - wget http://www.jroith.de/nsis4cygwin.zip unzip -n -d / pkgconfig-0.11-20020310.zip unzip -n -d / glib-2.0.4-20020703.zip unzip -n -d / glib-dev-2.0.4-20020703.zip unzip -n -d / libiconv-1.7.zip unzip -n -d / libiconv-dev-1.7.zip unzip -n -d / libintl-0.10.40-20020101.zip - unzip -n -d / nsis4cygwin.zip win32setup: makensis /DMILESTONE=$(VERSION) /DSOURCE_INSTALL_DIR=$(SOURCE_INSTALL_DIR) /DBUILDNUM=$(BUILDNUM) monowiz.win32.nsi + +patch-quiet: + find mono -name Makefile -exec scripts/patch-quiet.sh {} \; + find libgc -name Makefile -exec scripts/patch-quiet.sh {} \; + +update-csproj: + -rm msvc/scripts/order + -mkdir msvc/scripts/inputs + (cd runtime; make V=1 extra_targets=csproj-local) + +package-inputs: + echo '' > msvc/scripts/order.xml + echo '' >> msvc/scripts/order.xml + for i in `cat msvc/scripts/order`; do \ + set `echo $$i | sed -e 's/:/ /' -e 's/.input//'`; \ + cat msvc/scripts/inputs/$$2.input | \ + (echo " "; \ + read boot; echo " $$boot"; \ + read mcs; echo " $$mcs"; \ + read flags; echo " $$flags"; \ + read output; echo " $$output"; \ + read built; echo " $$built"; \ + read libou; echo " $$libou"; \ + read resp; echo " $$resp"; \ + echo " ") >> msvc/scripts/order.xml; \ + done + echo "" >> msvc/scripts/order.xml