From b0b92d1e5f2097652b12252a32cea40a5868e20c Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Tue, 15 May 2012 14:47:37 +0200 Subject: 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. --- Makefile | 528 +++------------------------------------------------------------ 1 file changed, 20 insertions(+), 508 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 88dad317b7af..8edbef1ea699 100644 --- a/Makefile +++ b/Makefile @@ -1,525 +1,37 @@ # -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# Copyright 2012 LibreOffice contributors. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# -.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 - +# must not be empty so we can have a target for it 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)),) -# -# Makefile -# - -# I don't like to touch stuff that are supposed to be -# in the source tree, hence read-only -# but I couldn't find a way to get make to -# restart after an autogen. and we _have_ to -# restart since autogen can have changed -# config_host.mk which is included in this -# Makefile +.PHONY : $(filter-out $(SRCDIR)/config_host.mk,$(MAKECMDGOALS)) -Makefile: $(SRCDIR)/config_host.mk - touch $@ +# recursively invoke Makefile.top, which includes config_host.mk +$(firstword $(MAKECMDGOALS)) : $(SRCDIR)/config_host.mk + $(MAKE) -r -f $(SRCDIR)/Makefile.top $(MAKECMDGOALS) -$(SRCDIR)/config_host.mk: config_host.mk.in bin/repo-list.in ooo.lst.in configure.in autogen.lastrun +# run configure in an environment not polluted by config_host.mk +$(SRCDIR)/config_host.mk : \ + $(SRCDIR)/config_host.mk.in \ + $(SRCDIR)/bin/repo-list.in \ + $(SRCDIR)/ooo.lst.in \ + $(SRCDIR)/configure.in \ + $(SRCDIR)/autogen.lastrun ./autogen.sh +# dummy rule in case autogen.lastrun does not exist autogen.lastrun: @true -# -# Fetch -# -fetch: src.downloaded - -src.downloaded : Makefile 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: -- cgit