diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-05-15 14:47:37 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-05-15 14:51:46 +0200 |
commit | b0b92d1e5f2097652b12252a32cea40a5868e20c (patch) | |
tree | 11f3d720843c4872e4b68ba9f2d2764756450220 /Makefile.top | |
parent | db6dd09720c7e457bb46da4e80a786cae1ee0fc7 (diff) |
split up top-level Makefile:
The top-level Makefile invokes autogen.sh (and thereby configure) in an
environment which is polluted by config_host.mk; this causes at least
the problem that following a "make clean", the bootstrap script will not
copy dmake to its destination because BUILD_DMAKE=NO is set from
config_host.mk, which is apparently due to the PATH being polluted from
config_host.mk, so configure finds the dmake in the build tree.
So split up top-level Makefile into Makefile, which invokes autogen.sh,
and Makefile.top, which does everything else.
Diffstat (limited to 'Makefile.top')
-rw-r--r-- | Makefile.top | 504 |
1 files changed, 504 insertions, 0 deletions
diff --git a/Makefile.top b/Makefile.top new file mode 100644 index 000000000000..6c473ecc8b64 --- /dev/null +++ b/Makefile.top @@ -0,0 +1,504 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- + +.PHONY : all bootstrap build check clean clean-build clean-host dev-install distclean distro-pack-install docs fetch findunusedcode id install install-strip subsequentcheck tags + +ifeq ($(MAKECMDGOALS),) +MAKECMDGOALS:=all +endif + +all: build + +SHELL=/usr/bin/env bash +SRCDIR:=$(patsubst %/,%,$(dir $(realpath $(firstword $(MAKEFILE_LIST))))) + +ifeq ($(gb_Side),) +gb_Side:=host +endif + +include $(SRCDIR)/config_$(gb_Side).mk + +ifeq ($(GMAKE_OPTIONS),) +ifeq ($(verbose),) +export GMAKE_OPTIONS:=-rs +else +export GMAKE_OPTIONS:=-r +endif +endif + +gbuild_modules:= \ +MathMLDTD\ +Mesa\ +UnoControls\ +accessibility\ +animations\ +apple_remote\ +avmedia\ +basctl\ +basebmp\ +basegfx\ +basic\ +bean\ +binaryurp\ +canvas\ +chart2\ +clucene\ +codemaker\ +comphelper\ +configmgr\ +cppcanvas\ +cppu\ +cppuhelper\ +cpputools\ +cui\ +dbaccess\ +desktop\ +drawinglayer\ +dtrans\ +editeng\ +embeddedobj\ +embedserv\ +eventattacher\ +extensions\ +fileaccess\ +filter\ +forms\ +formula\ +fpicker\ +framework\ +hwpfilter\ +i18npool\ +i18nutil\ +idl\ +idlc\ +io\ +javaunohelper\ +jurt\ +jvmaccess\ +jvmfwk\ +l10ntools\ +lingucomponent\ +linguistic\ +lotuswordpro\ +nlpsolver\ +np_sdk\ +o3tl\ +offapi\ +officecfg\ +oovbaapi\ +oox\ +package\ +packimages\ +padmin\ +psprint_config\ +qadevOOo\ +regexp\ +registry\ +reportdesign\ +rdbmaker\ +ridljar\ +rsc\ +sal\ +salhelper\ +sane\ +sax\ +sc\ +scaddins\ +sccomp\ +scripting\ +sd\ +sdext\ +sfx2\ +slideshow\ +smoketest\ +sot\ +starmath\ +stoc\ +store\ +svl\ +svtools\ +svx\ +sw\ +swext\ +tail_build\ +test\ +toolkit\ +tools\ +translations\ +twain\ +ucb\ +ucbhelper\ +udkapi\ +unixODBC\ +unodevtools\ +unoil\ +unotest\ +unotools\ +unoxml\ +ure\ +uui\ +vbahelper\ +vcl\ +wizards\ +writerfilter\ +writerperfect\ +xmerge\ +xml2cmp\ +xmlhelp\ +xmloff\ +xmlreader\ +xmlscript\ +xmlsecurity\ + +dmake_modules:=\ +afms\ +apache-commons\ +autodoc\ +beanshell\ +berkeleydb\ +binfilter \ +boost\ +bridges\ +cairo\ +cli_ure\ +connectivity\ +cosv\ +cppunit\ +crashrep\ +ct2n\ +curl\ +dictionaries \ +epm\ +expat\ +external\ +extras\ +fontconfig\ +freetype\ +gdk-pixbuf\ +gettext\ +glib\ +graphite\ +helpcontent2 \ +hsqldb\ +hunspell\ +hyphen\ +icc\ +icu\ +instsetoo_native\ +jfreereport\ +jpeg\ +languagetool\ +libcdr\ +libcmis\ +libcroco\ +libexttextcat\ +libgsf\ +libpng\ +librsvg\ +libvisio\ +libwpd\ +libwpg\ +libwps\ +libxml2\ +libxmlsec\ +libxslt\ +lcms2\ +lpsolve\ +lucene\ +mdds\ +migrationanalysis\ +more_fonts\ +moz\ +mysqlc\ +mysqlcppconn\ +mythes\ +neon\ +nss\ +odk\ +openssl\ +pango\ +postgresql\ +postprocess\ +python\ +pyuno\ +readlicense_oo\ +redland\ +remotebridges\ +reportbuilder\ +rhino\ +saxon\ +scp2\ +setup_native\ +shell\ +solenv\ +soltools\ +stax\ +stlport\ +sysui\ +testtools\ +tomcat\ +udm\ +vigra\ +x11_extensions\ +xpdf\ +xsltml\ +zlib\ + +gb_TAILBUILDMODULES := $(shell make -f $(SRCDIR)/tail_build/Makefile showmodules) +export gb_TAILBUILDTARGET=all slowcheck + +define gbuild_module_rules +.PHONY: $(1) $(1).all $(1).clean $(1).deliver + +$(1): bootstrap fetch + cd $(1) && $(GNUMAKE) -j $(GMAKE_PARALLELISM) $(GMAKE_OPTIONS) gb_PARTIALBUILD=T + +ifeq ($(filter $(1),$(gb_TAILBUILDMODULES)),) +$(1).all: bootstrap fetch + cd $(1) && unset MAKEFLAGS && \ + $(SOLARENV)/bin/build.pl -P$(BUILD_NCPUS) --all -- -P$(GMAKE_PARALLELISM) +else +$(1).all: bootstrap fetch + cd tail_build && unset MAKEFLAGS && \ + export gb_TAILBUILDTARGET="$(WORKDIR)/Module/$(1) $(WORKDIR)/Module/check/$(1) $(WORKDIR)/Module/slowcheck/$(1)" && \ + $(SOLARENV)/bin/build.pl -P$(BUILD_NCPUS) --all -- -P$(GMAKE_PARALLELISM) +endif + +$(1).clean: + cd $(1) && $(GNUMAKE) -j $(GMAKE_PARALLELISM) $(GMAKE_OPTIONS) clean gb_PARTIALBUILD=T + +$(1).subsequentcheck: + cd $(1) && $(GNUMAKE) -j $(GMAKE_PARALLELISM) $(GMAKE_OPTIONS) subsequentcheck gb_PARTIALBUILD=T + +$(1).deliver: + @true + +endef + +define gbuild_modules_rules +$(foreach m,$(1),$(call gbuild_module_rules,$(m))) +endef + +define dmake_module_rules +.PHONY: $(1) $(1).all $(1).deliver $(1).clean + +$(1): bootstrap fetch + cd $(1) && unset MAKEFLAGS && \ + $(SOLARENV)/bin/build.pl -P$(BUILD_NCPUS) -- -P$(GMAKE_PARALLELISM) + +$(1).all: bootstrap fetch + cd $(1) && unset MAKEFLAGS && \ + $(SOLARENV)/bin/build.pl -P$(BUILD_NCPUS) --all -- -P$(GMAKE_PARALLELISM) + +$(1).deliver: $(1) + cd $(1) && $(SOLARENV)/bin/deliver.pl + +$(1).clean: + cd $(1) && $(SOLARENV)/bin/deliver.pl -delete + rm -fr $(1)/$(INPATH) + +endef + +define dmake_modules_rules +$(foreach m,$(1),$(call dmake_module_rules,$(m))) +endef + +# +# Partial Build +# +$(eval $(call gbuild_modules_rules,$(gbuild_modules))) + +$(eval $(call dmake_modules_rules,$(dmake_modules))) + +# +# Clean +# +clean: clean-host clean-build + +clean-host: + rm -fr $(DEVINSTALLDIR) + rm -fr $(SOLARVER)/$(INPATH) # not necessarily below SRCDIR + rm -fr $(SRCDIR)/*/$(INPATH) + rm -fr install + +clean-build: +ifeq ($(CROSS_COMPILING),YES) + rm -rf $(SOLARVER)/$(INPATH_FOR_BUILD) # not necessarily below SRCDIR + rm -rf $(SRCDIR)/*/$(INPATH_FOR_BUILD) +endif + +# +# Distclean +# +distclean : clean +ifeq ($(BUILD_DMAKE),YES) + (if [ -f dmake/Makefile ] ; then $(GNUMAKE) -j $(GMAKE_PARALLELISM) -C dmake distclean; fi) && \ + rm -f solenv/*/bin/dmake* +endif + rm -fr config_host.mk config_build.mk aclocal.m4 autom4te.cache \ + bin/repo-list config.log config.status configure \ + ooo.lst post_download post_download.log \ + config_host.mk.last set_soenv.stamp src.downloaded warn + find $(SOLARENV)/gdb -name "*.pyc" -exec rm {} \; + +# +# custom command +# +ifneq ( $(MAKECMDGOALS),cmd) +cmd: + echo "custom cmd" && ( $(cmd) ) + +endif + +ifneq ($(filter-out clean distclean,$(MAKECMDGOALS)),) +# +# Fetch +# +fetch: src.downloaded + +src.downloaded : Makefile.top ooo.lst download +ifeq ($(DO_FETCH_TARBALLS),YES) + @./download $(SRCDIR)/ooo.lst && touch $@ +else + @echo "Automatic fetching of external tarballs is disabled." +endif + +# +# Bootstap +# +bootstrap: $(WORKDIR)/bootstrap + +$(WORKDIR)/bootstrap: + @cd $(SRCDIR) && ./bootstrap + @mkdir -p $(dir $@) && touch $@ + +# +# Build +# +build-packimages: bootstrap fetch $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross-toolset) +ifeq ($(DISABLE_SCRIPTING),TRUE) +# We must get the headers from vbahelper "delivered" because +# as we don't link to any libs from there they won't otherwise be, or +# something. And we still do include those headers always even if the +# libs aren't built in the --disable-scripting case. (Ifdefs for +# DISABLE_SCRIPTING will be added to the code later as necessary.) + $(GNUMAKE) vbahelper +endif +ifeq ($(DISABLE_DBCONNECTIVITY),TRUE) +# Ditto for dbconnectivity in the --disable-database-connectivity case + cd connectivity && sed -e 's/^\(export [A-Z0-9_]*=\)\(.*\)$$/\1"\2"/' <../config_host.mk >conftmp.sh && . conftmp.sh && rm conftmp.sh && $(SOLARENV)/bin/deliver.pl +endif + cd packimages && unset MAKEFLAGS && \ + $(SOLARENV)/bin/build.pl -P$(BUILD_NCPUS) --all -- -P$(GMAKE_PARALLELISM) && \ + make + +build: build-packimages +ifeq ($(OS_FOR_BUILD),WNT) + cd instsetoo_native && unset MAKEFLAGS && $(SOLARENV)/bin/build.pl +else + cd instsetoo_native && unset MAKEFLAGS && \ + $(SOLARENV)/bin/build.pl -P$(BUILD_NCPUS) -- -P$(GMAKE_PARALLELISM) +endif + +cross-toolset: bootstrap fetch + cd cross_toolset && $(GNUMAKE) -j $(GMAKE_PARALLELISM) $(GMAKE_OPTIONS) + + +# +# Install +# + +install: + echo "Installing in $(INSTALLDIR)..." && \ + ooinstall "$(INSTALLDIR)" && \ + echo "" && \ + echo "Installation finished, you can now execute:" && \ + echo "$(INSTALLDIR)/program/soffice" + +install-strip: + echo "Installing and stripping binaries in $(INSTALLDIR)..." && \ + ooinstall --strip "$(INSTALLDIR)" && \ + echo "" && \ + echo "Installation finished, you can now execute:" && \ + echo "$(INSTALLDIR)/program/soffice" + +dev-install: build + @rm -rf $(DEVINSTALLDIR) + @mkdir $(DEVINSTALLDIR) +ifeq ($(DISABLE_LINKOO),TRUE) + @ooinstall $(DEVINSTALLDIR)/opt + @install-gdb-printers -L +else + @ooinstall -l $(DEVINSTALLDIR)/opt +endif + @rm -f $(SRCDIR)/install && ln -s $(DEVINSTALLDIR)/opt/ $(SRCDIR)/install + +distro-pack-install: install + $(SRCDIR)/bin/distro-install-clean-up + $(SRCDIR)/bin/distro-install-desktop-integration + $(SRCDIR)/bin/distro-install-sdk + $(SRCDIR)/bin/distro-install-file-lists + +id: + @create-ids + +tags: + @create-tags + +docs: + @mkdocs.sh $(SRCDIR)/docs $(SOLARENV)/inc/doxygen.cfg + +findunusedcode: + @which callcatcher > /dev/null 2>&1 || \ + (echo "callcatcher not installed" && false) + @sed -e s,$$INPATH,callcatcher,g $(SRCDIR)/config_host.mk | sed -e s,"export OOO_JUNIT_JAR=.*","export OOO_JUNIT_JAR=",g > $(SRCDIR)/config_host_callcatcher.mk + @mkdir -p $(SRCDIR)/solenv/callcatcher/bin && \ + ln -sf $(SRCDIR)/solenv/$(INPATH)/bin/dmake \ + $(SRCDIR)/solenv/callcatcher/bin/dmake + @$(GNUMAKE) -f $(SOLARENV)/bin/callcatcher.Makefile findunusedcode + @grep ::.*\( unusedcode.all \ + | grep -v ^Atom \ + | grep -v ^boost:: \ + | grep -v ^CIcc \ + | grep -v ^CLuceneError:: \ + | grep -v ^cppu:: \ + | grep -v ^Dde \ + | grep -v ^graphite2:: \ + | grep -v ^jvmaccess:: \ + | grep -v ^libcdr:: \ + | grep -v ^libcmis:: \ + | grep -v ^libvisio:: \ + | grep -v ^libwpg:: \ + | grep -v ^libwps_tools_win:: \ + | grep -v ^lucene:: \ + | grep -v ^Matrix3d:: \ + | grep -v ^salhelper:: \ + | grep -v ^WP1 \ + | grep -v ^WP3 \ + | grep -v ^WP42 \ + | grep -v ^WP6 \ + | grep -v ^WPG \ + | grep -v ^WPS \ + | grep -v WPX \ + > unusedcode.easy + +check: dev-install subsequentcheck + +subsequentcheck :| $(if $(filter-out subsequentcheck,$(MAKECMDGOALS)),dev-install) + $(GNUMAKE) -j $(GMAKE_PARALLELISM) $(GMAKE_OPTIONS) -f Makefile.post $@ + +debugrun: + $(GNUMAKE) -j $(GMAKE_PARALLELISM) $(GMAKE_OPTIONS) -f Makefile.post $@ + +endif # not clean or distclean + + +######################### +# help +# +.PHONY: help +help: + @cat $(SRCDIR)/solenv/gbuild/gbuild.help.txt + @true + + +# vim: set noet sw=4 ts=4: |