be59288ff4
There is no need for developers to run it as part of the daily workflow because instdir is much easier to use, so just let it print an error message. Also remove the "install" symlink. Provide the previous dev-install functionality as "test-install" target so that it is possible to quickly create some kind of actual installation against which the subsequentchecks can run by setting OOO_TEST_SOFFICE, to e.g. check that scp2 isn't missing files. Change-Id: I8c0b05a87f55b1db8c1d1e76f64ab64b9cc695eb
404 lines
12 KiB
Makefile
404 lines
12 KiB
Makefile
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
|
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# 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 test-install distclean distro-pack-install docs download fetch findunusedcode get-submodules id install install-strip install-tb subsequentcheck tags
|
|
|
|
ifeq ($(MAKECMDGOALS),)
|
|
MAKECMDGOALS:=all
|
|
endif
|
|
|
|
SHELL=/usr/bin/env bash
|
|
SRCDIR := @SRC_ROOT@
|
|
BUILDDIR := @BUILDDIR@
|
|
GIT_BUILD := $(if $(wildcard $(SRCDIR)/.git),T)
|
|
|
|
# Run autogen.sh if needed and force make to restart itself.
|
|
# ... but there are several cases where we do not want to run
|
|
# autogen.sh:
|
|
# 1. if we are building from tarballs, not git checkout (I do not
|
|
# think packagers would ever want that. I certainly do not.)
|
|
# 2. if we are making help, clean or distclean, because they do not
|
|
# need updated configuration
|
|
ifeq (,$(MAKE_RESTARTS)$(if $(GIT_BUILD),,T)$(if $(filter-out help clean distclean,$(MAKECMDGOALS)),,T))
|
|
|
|
.PHONY : force-restart
|
|
Makefile: $(BUILDDIR)/config_host.mk force-restart
|
|
@touch $@
|
|
|
|
# run configure in an environment not polluted by config_host.mk
|
|
$(BUILDDIR)/config_host.mk : \
|
|
$(SRCDIR)/config_host.mk.in \
|
|
$(SRCDIR)/Makefile.in \
|
|
$(SRCDIR)/instsetoo_native/util/openoffice.lst.in \
|
|
$(SRCDIR)/configure.ac \
|
|
$(wildcard $(SRCDIR)/config_host/*.h.in) \
|
|
$(if $(wildcard $(BUILDDIR)/autogen.input),$(BUILDDIR)/autogen.input,$(if $(wildcard $(BUILDDIR)/autogen.lastrun),$(BUILDDIR)/autogen.lastrun))
|
|
$(SRCDIR)/autogen.sh
|
|
|
|
# dummy rule in case any of the above prerequisites are removed, so
|
|
# that a stale Makefile still triggers autogen.sh, or in case
|
|
# autogen.input does not exist, or autogen.lastrun does not yet exist
|
|
$(SRCDIR)/config_host.mk.in \
|
|
$(SRCDIR)/Makefile.in \
|
|
$(SRCDIR)/instsetoo_native/util/openoffice.lst.in \
|
|
$(SRCDIR)/configure.ac \
|
|
$(BUILDDIR)/autogen.input \
|
|
$(BUILDDIR)/autogen.lastrun:
|
|
@true
|
|
|
|
else # MAKE_RESTARTS
|
|
|
|
all: build
|
|
|
|
ifeq ($(gb_Side),)
|
|
gb_Side := host
|
|
endif
|
|
|
|
include $(BUILDDIR)/config_$(gb_Side).mk
|
|
|
|
ifeq ($(GMAKE_OPTIONS),)
|
|
ifeq ($(verbose)$(VERBOSE),)
|
|
export GMAKE_OPTIONS:=-rs$(MAKEFLAGS)
|
|
else
|
|
export GMAKE_OPTIONS:=-r$(MAKEFLAGS)
|
|
endif
|
|
endif
|
|
|
|
#
|
|
# Partial Build
|
|
#
|
|
define gbuild_module_rules
|
|
.PHONY: $(1) $(1).all $(1).build $(1).check $(1).clean $(1).showdeliverables $(1).subsequentcheck
|
|
|
|
$(1): bootstrap fetch
|
|
cd $(SRCDIR)/$(1) && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS)
|
|
|
|
$(1).build $(1).check $(1).clean $(1).showdeliverables:
|
|
cd $(SRCDIR)/$(1) && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) $$(patsubst $(1).%,%,$$@)
|
|
|
|
$(1).subsequentcheck:
|
|
cd $(SRCDIR)/$(1) && $(GNUMAKE) -j $(CHECK_PARALLELISM) $(GMAKE_OPTIONS) subsequentcheck
|
|
|
|
$(1).all: bootstrap fetch
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild $(WORKDIR)/Module/$(1) $(if $(CROSS_COMPILING),,$(WORKDIR)/Module/check/$(1) $(WORKDIR)/Module/slowcheck/$(1))
|
|
|
|
endef
|
|
|
|
define gbuild_modules_rules
|
|
$(foreach m,$(1),$(call gbuild_module_rules,$(m)))
|
|
endef
|
|
|
|
gbuild_modules := $(filter-out Module%,$(subst /, ,$(subst $(SRCDIR)/,,$(wildcard $(SRCDIR)/*/Module_*.mk))))
|
|
|
|
$(eval $(call gbuild_modules_rules,$(gbuild_modules)))
|
|
|
|
gbuild_TARGETS := AllLangHelp \
|
|
AllLangPackage \
|
|
AllLangResTarget \
|
|
AutoInstall \
|
|
CliLibrary \
|
|
CliNativeLibrary \
|
|
CliUnoApiTarget \
|
|
Configuration \
|
|
CppunitTest \
|
|
CustomTarget \
|
|
Dictionary \
|
|
Executable \
|
|
Extension \
|
|
ExternalPackage \
|
|
ExternalProject \
|
|
GeneratedPackage \
|
|
InstallModule \
|
|
InstallScript \
|
|
InternalUnoApi \
|
|
Jar \
|
|
JunitTest \
|
|
Library \
|
|
Module \
|
|
Package \
|
|
PackageSet \
|
|
Pagein \
|
|
Postprocess \
|
|
Pyuno \
|
|
PythonTest \
|
|
Rdb \
|
|
StaticLibrary \
|
|
UIConfig \
|
|
UnoApi \
|
|
UnpackedTarball \
|
|
WinResTarget \
|
|
Zip \
|
|
|
|
# build a generic gbuild target
|
|
$(foreach target,$(gbuild_TARGETS),$(target)_% $(foreach module,$(gbuild_modules),$(target)_$(module)/%)):
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild $@
|
|
|
|
#
|
|
# Clean
|
|
#
|
|
clean: clean-host clean-build
|
|
|
|
clean-host:
|
|
rm -fr $(DEVINSTALLDIR)
|
|
rm -fr $(INSTDIR)
|
|
rm -fr $(OUTDIR)
|
|
rm -fr $(WORKDIR)
|
|
rm -fr install
|
|
|
|
clean-build:
|
|
ifeq ($(CROSS_COMPILING),YES)
|
|
rm -fr $(INSTDIR_FOR_BUILD)
|
|
rm -fr $(OUTDIR_FOR_BUILD)
|
|
rm -fr $(WORKDIR_FOR_BUILD)
|
|
endif
|
|
|
|
include $(SRCDIR)/compilerplugins/Makefile.mk
|
|
|
|
#
|
|
# Distclean
|
|
#
|
|
distclean : clean compilerplugins-clean
|
|
rm -fr \
|
|
$(BUILDDIR)/Makefile \
|
|
$(BUILDDIR)/aclocal.m4 \
|
|
$(BUILDDIR)/autom4te.cache \
|
|
$(BUILDDIR)/config.log \
|
|
$(BUILDDIR)/config.status \
|
|
$(BUILDDIR)/config_build.mk \
|
|
$(BUILDDIR)/config_host.mk \
|
|
$(BUILDDIR)/config_host.mk.stamp \
|
|
$(BUILDDIR)/config_host/*.h \
|
|
$(BUILDDIR)/config_host/*.mk \
|
|
$(BUILDDIR)/configure \
|
|
$(BUILDDIR)/instsetoo_native/util/openoffice.lst \
|
|
$(BUILDDIR)/lo.xcent
|
|
find $(SOLARENV)/gdb -name "*.pyc" -exec rm {} \;
|
|
|
|
#
|
|
# custom command
|
|
#
|
|
cmd:
|
|
echo "custom cmd" && ( $(cmd) )
|
|
|
|
#
|
|
# Fetch
|
|
#
|
|
ifneq ($(DO_FETCH_TARBALLS),NO)
|
|
include $(SRCDIR)/Makefile.fetch
|
|
fetch: download
|
|
fetch: get-submodules
|
|
|
|
ifneq (,$(wildcard $(SRCDIR)/.git))
|
|
get-submodules:
|
|
ifneq ($(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git),$(wildcard $(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git)))
|
|
cd $(SRCDIR) && ./g -f clone
|
|
endif
|
|
@cd $(SRCDIR) && ./g -z # make sure the git hooks are in place enen if no submodules are needed
|
|
|
|
else # these sources are from a tarball, so get the other source tarballs
|
|
gb_LO_VER := $(shell . $(SRCDIR)/sources.ver && echo $$lo_sources_ver)
|
|
$(if $(gb_LO_VER),,$(error Error while retrieving $$lo_sources_ver from $(SRCDIR)/sources.ver))
|
|
|
|
get-submodules: | download
|
|
ifneq ($(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),$(SRCDIR)/src/libreoffice-$(i)-$(gb_LO_VER)),$(wildcard $(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),$(SRCDIR)/src/libreoffice-$(i)-$(gb_LO_VER))))
|
|
$(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),\
|
|
$(call fetch_Download_item,http://download.documentfoundation.org/libreoffice/src/$(shell echo $(gb_LO_VER) | sed -e "s/\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/"),libreoffice-$(i)-$(gb_LO_VER).tar.xz,no-check))
|
|
$(SRCDIR)/bin/unpack-sources $(SRCDIR) $(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),\
|
|
$(TARFILE_LOCATION)/libreoffice-$(i)-$(gb_LO_VER).tar.xz)
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
fetch:
|
|
@echo "Automatic fetching of external tarballs is disabled."
|
|
|
|
endif
|
|
|
|
#
|
|
# Bootstap
|
|
#
|
|
bootstrap: compilerplugins
|
|
|
|
#
|
|
# Build
|
|
#
|
|
build: bootstrap fetch $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross-toolset)
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild
|
|
ifneq ($(filter-out WNT MACOSX IOS ANDROID,$(OS)),)
|
|
install-gdb-printers -a $(INSTDIR)
|
|
endif
|
|
ifeq ($(OS),IOS)
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) ios
|
|
endif
|
|
|
|
build-nocheck: bootstrap fetch $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross-toolset)
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild build
|
|
|
|
cross-toolset: bootstrap fetch
|
|
$(GNUMAKE) gb_Side=build -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild build-tools
|
|
|
|
ifneq ($(OS),MACOSX)
|
|
|
|
#
|
|
# 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"
|
|
|
|
endif # !MACOSX
|
|
|
|
dev-install:
|
|
@echo
|
|
@echo "dev-install is obsolete! Just build with \"make check\" and run"
|
|
ifeq ($(OS),MACOSX)
|
|
@echo " open instdir/*/$(PRODUCTNAME).app"
|
|
@echo
|
|
@echo "To debug: gdb instdir/*/$(PRODUCTNAME).app/Contents/MacOS/soffice"
|
|
else
|
|
@echo " instdir/*/program/soffice"
|
|
endif
|
|
@echo
|
|
@echo "(only if you have good reason to test an actual installation: make test-install)"
|
|
@echo
|
|
@false
|
|
|
|
test-install: build
|
|
@rm -rf $(DEVINSTALLDIR)
|
|
@mkdir $(DEVINSTALLDIR)
|
|
ifeq ($(OS_FOR_BUILD),WNT)
|
|
cd $(SRCDIR)/instsetoo_native && $(GNUMAKE) LIBO_DEV_INSTALL=TRUE $(GMAKE_OPTIONS)
|
|
else
|
|
@ooinstall $(DEVINSTALLDIR)/opt
|
|
ifneq ($(MACOSX_CODESIGNING_IDENTITY),)
|
|
@macosx-codesign-app-bundle $(DEVINSTALLDIR)/opt/LibreOffice.app
|
|
endif
|
|
ifneq ($(OS),MACOSX)
|
|
@install-gdb-printers -L
|
|
endif
|
|
endif
|
|
@echo
|
|
@echo "If you want to edit the .ui files with glade first execute:"
|
|
@echo
|
|
@echo "export GLADE_CATALOG_SEARCH_PATH=$(SRCDIR)/install/share/glade"
|
|
ifeq ($(OS),LINUX)
|
|
@echo
|
|
@echo "Test installation finished, you can now execute:"
|
|
@echo
|
|
@echo "$(DEVINSTALLDIR)/program/soffice"
|
|
else ifeq ($(OS),MACOSX)
|
|
@echo
|
|
@echo "Developer installation finished, you can now run:"
|
|
@echo
|
|
@echo " open $(DEVINSTALLDIR)/LibreOffice.app"
|
|
@echo
|
|
@echo "To debug: gdb $(DEVINSTALLDIR)/LibreOffice.app/Contents/MacOS/soffice"
|
|
endif
|
|
|
|
install-tb:
|
|
@rm -rf $(DEVINSTALLDIR)
|
|
@mkdir $(DEVINSTALLDIR)
|
|
ifeq ($(OS_FOR_BUILD),WNT)
|
|
cd $(SRCDIR)/instsetoo_native && $(GNUMAKE) LIBO_DEV_INSTALL=TRUE $(GMAKE_OPTIONS)
|
|
else
|
|
@ooinstall $(DEVINSTALLDIR)/opt
|
|
@install-gdb-printers
|
|
endif
|
|
@rm -f $(BUILDDIR)/install && ln -s $(DEVINSTALLDIR)/opt/ $(BUILDDIR)/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)
|
|
@mkdir -p $(SRCDIR)/callcatcher/config_host
|
|
@cp config_host/* callcatcher/config_host
|
|
@cp config_host.mk* callcatcher
|
|
@sed -e s,$$INPATH,callcatcher,g config_host.mk | sed -e s,"export OOO_JUNIT_JAR=.*","export OOO_JUNIT_JAR=",g > $(SRCDIR)/callcatcher/config_host.mk
|
|
@sed -i -e s,g++,"callcatcher g++",g $(SRCDIR)/callcatcher/config_host.mk
|
|
@sed -i -e s,gcc,"callcatcher gcc",g $(SRCDIR)/callcatcher/config_host.mk
|
|
@echo unexport ARCH_FLAGS >> $(SRCDIR)/callcatcher/config_host.mk
|
|
@echo unexport CFLAGS >> $(SRCDIR)/callcatcher/config_host.mk
|
|
@echo unexport CXXFLAGS >> $(SRCDIR)/callcatcher/config_host.mk
|
|
$(GNUMAKE) -f $(SOLARENV)/bin/callcatcher.Makefile findunusedcode
|
|
@grep ::.*\( unusedcode.all \
|
|
| grep -v ^Atom \
|
|
| grep -v ^atom:: \
|
|
| grep -v ^boost:: \
|
|
| grep -v ^CIcc \
|
|
| grep -v ^CLuceneError:: \
|
|
| grep -v ^cppu:: \
|
|
| grep -v ^CppUnit:: \
|
|
| grep -v ^Dde \
|
|
| grep -v ^graphite2:: \
|
|
| grep -v ^jvmaccess:: \
|
|
| grep -v ^libcdr:: \
|
|
| grep -v ^libcmis:: \
|
|
| grep -v ^libmspub:: \
|
|
| grep -v ^libvisio:: \
|
|
| grep -v ^libwpg:: \
|
|
| grep -v ^libwps_tools_win:: \
|
|
| grep -v ^lucene:: \
|
|
| grep -v ^Matrix3d:: \
|
|
| grep -v ^RelatedMultipart:: \
|
|
| grep -v ^salhelper:: \
|
|
| grep -v ^VSDInternalStream:: \
|
|
| grep -v ^WP1 \
|
|
| grep -v ^WP3 \
|
|
| grep -v ^WP42 \
|
|
| grep -v ^WP6 \
|
|
| grep -v ^WPG \
|
|
| grep -v ^WPS \
|
|
| grep -v WPX \
|
|
| grep -v ^WSObject \
|
|
> unusedcode.easy
|
|
|
|
check: build subsequentcheck
|
|
|
|
dump-deps:
|
|
@$(SRCDIR)/bin/module-deps.pl $(GNUMAKE) $(SRCDIR)/Makefile.gbuild
|
|
|
|
dump-deps-png:
|
|
@$(SRCDIR)/bin/module-deps.pl $(GNUMAKE) $(SRCDIR)/Makefile.gbuild | dot -Tpng -o lo.png
|
|
|
|
subsequentcheck :| $(if $(filter-out subsequentcheck,$(MAKECMDGOALS)),build)
|
|
$(GNUMAKE) -j $(CHECK_PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild $@
|
|
|
|
.PHONY : debugrun help slowcheck translations unitcheck
|
|
debugrun help slowcheck translations unitcheck :
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild $@
|
|
|
|
endif # MAKE_RESTARTS
|
|
|
|
# vim: set noet sw=4 ts=4:
|