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 +++-------------------------------------------------------- Makefile.top | 504 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 524 insertions(+), 508 deletions(-) create mode 100644 Makefile.top 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: 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: -- cgit