mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 22:48:15 +02:00
379 lines
12 KiB
Makefile
Executable File
379 lines
12 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
# debian/rules for Lazarus
|
|
|
|
DEB_PACKAGE_NAME = lazarus
|
|
export DH_ALWAYS_EXCLUDE := COPYING:LICENSE
|
|
export LANG:=C
|
|
|
|
# Documentation type to use chm/html
|
|
ifeq (${DEBDOCTYPE},)
|
|
DOCTYPE=html
|
|
# HTML Converter chmdocs or htmldocs for (default)
|
|
CONVERTER=${DOCTYPE}docs
|
|
else
|
|
DOCTYPE=${DEBDOCTYPE}
|
|
CONVERTER=${DOCTYPE}docs
|
|
endif
|
|
# Define FPC
|
|
ifndef FPC
|
|
FPC=/usr/bin/fpc
|
|
endif
|
|
# Set FPCVER
|
|
FPCVER=$(shell ${FPC} -iV)
|
|
|
|
FPCTARGET=$(CPU_TARGET)-linux
|
|
# Get version information from changelog file
|
|
DEB_VERSION:=$(shell dpkg-parsechangelog | grep '^Version:' | cut -f 2 -d ' ')
|
|
DEB_UPSTREAM_VERSION:=$(shell echo $(DEB_VERSION) | cut -f 1 -d -)
|
|
DEB_UPSTREAM_MAIN_VERSION:=$(shell echo ${DEB_UPSTREAM_VERSION} | sed -e 's/^\([0-9\.]*\).*/\1/')
|
|
DEB_BUILD=$(lastword $(subst -, ,${DEB_VERSION}))
|
|
ifndef PACKAGESUFFIX
|
|
export PACKAGESUFFIX=-${DEB_UPSTREAM_MAIN_VERSION}
|
|
endif
|
|
# Get directories
|
|
INSTALL_DIR=$(CURDIR)/debian/tmp
|
|
BIN_DIR=${INSTALL_DIR}/usr/bin
|
|
LIB_DIR=${INSTALL_DIR}/usr/lib/${DEB_PACKAGE_NAME}/${DEB_UPSTREAM_MAIN_VERSION}
|
|
DOC_DIR=${INSTALL_DIR}/usr/share/doc/${DEB_PACKAGE_NAME}/${DEB_UPSTREAM_MAIN_VERSION}
|
|
SRC_DIR=${INSTALL_DIR}/usr/lib/${DEB_PACKAGE_NAME}/${DEB_UPSTREAM_MAIN_VERSION}
|
|
# Get utils
|
|
ifndef MKDIR
|
|
MKDIR=mkdir -p
|
|
endif
|
|
ifndef CP
|
|
CP=cp -Rfpl
|
|
endif
|
|
ifndef MV
|
|
MV=mv
|
|
endif
|
|
RM:=rm -rf
|
|
# Get fpcmake from path if none is specified.
|
|
ifndef FPCMAKE
|
|
FPCMAKE=fpcmake
|
|
endif
|
|
# Define FPCDIR if it was not set
|
|
ifndef FPCDIR
|
|
export FPCDIR=/usr/share/fpcsrc/${FPCVER}
|
|
# Set default compilation options
|
|
DEB_BUILD_FPC_OPT=debian/deb-build-fpc.cfg
|
|
DEB_HOST_FPC_OPT=debian/deb-host-fpc.cfg
|
|
BUILDOPTS=USESVN2REVISIONINC=0 OPT='@${CURDIR}/${DEB_HOST_FPC_OPT}'
|
|
INSTALLOPTS=INSTALL_PREFIX=$(INSTALL_DIR)/usr
|
|
endif
|
|
ifndef LAZBUILD
|
|
export LAZBUILD=${CURDIR}/lazbuild --lazarusdir=../..
|
|
endif
|
|
# Set default compilation options
|
|
DEB_HOST_MULTIARCH ?=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
|
DEB_BUILD_MULTIARCH ?=$(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)
|
|
|
|
LDFLAGS=$(shell dpkg-buildflags --get LDFLAGS | sed -e 's/-Wl,//g' -e 's/,/ /g')
|
|
|
|
#export DH_VERBOSE=1
|
|
|
|
###################
|
|
# Clean
|
|
#
|
|
|
|
clean: clean-patched clean-make-files
|
|
${RM} build-arch-stamp install-arch-stamp arrange-arch-stamp configure-stamp
|
|
${RM} build-doc-stamp install-doc-stamp
|
|
${RM} build-indep-stamp install-indep-stamp
|
|
${RM} debian-files-stamp
|
|
${RM} debian/files debian/docs debian/dirs debian/*.files debian/*.docs debian/*.examples debian/*.postinst debian/*.postrm
|
|
# Remove auto-generated version file.
|
|
${RM} ide/version.inc
|
|
dh_clean
|
|
|
|
clean-patched: make-files
|
|
@echo "--- Cleaning"
|
|
dh_testdir
|
|
dh_testroot
|
|
${RM} lazarus startlazarus lazbuild
|
|
${RM} components/aggpas packager/globallinks/aggpas*
|
|
$(MAKE) distclean ${BUILDOPTS}
|
|
$(MAKE) -C docs/html clean
|
|
find -regex '.*\.\(a\|or?\|so\.*\|ppu\)' -delete
|
|
|
|
###################
|
|
# Debian files
|
|
#
|
|
|
|
debian-files: debian-files-stamp
|
|
debian-files-stamp:
|
|
@echo "--- Creating/fixing *.install files"
|
|
DEB_SUBST_PACKAGESUFFIX=${PACKAGESUFFIX} \
|
|
debian/fixdeb debian/*.in
|
|
touch debian-files-stamp
|
|
|
|
make-files: make-files-stamp
|
|
make-files-stamp:
|
|
# Regenrate make files using fpcmake.
|
|
find * -name Makefile.fpc -exec ${FPCMAKE} -Tall -q '{}' ';'
|
|
touch $@
|
|
|
|
clean-make-files:
|
|
# Remove auto-generated make files.
|
|
find * -name Makefile.fpc -execdir sh -c '${RM} $$(basename {} .fpc)' ';'
|
|
${RM} make-files-stamp
|
|
|
|
###################
|
|
# Arch packages
|
|
#
|
|
|
|
configure: debian-files clean-make-files make-files configure-stamp
|
|
configure-stamp:
|
|
dh_testdir
|
|
dh_prep
|
|
# Remove auto-generated version file.
|
|
${RM} ide/version.inc
|
|
# Add version.inc:
|
|
echo \'$(DEB_VERSION)\' > ide/version.inc
|
|
touch configure-stamp
|
|
|
|
build-arch: configure build-arch-stamp
|
|
build-arch-stamp: ${DEB_HOST_FPC_OPT}
|
|
@echo "--- Building"
|
|
dh_testdir
|
|
${MAKE} bigide ${BUILDOPTS}
|
|
${MV} $(CURDIR)/lazarus $(CURDIR)/lazarus-gtk2
|
|
touch build-arch-stamp
|
|
|
|
install-arch: build-arch install-arch-stamp
|
|
install-arch-stamp:
|
|
@echo "--- Installing"
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_installdirs
|
|
# create all necessary directories
|
|
${MKDIR} ${BIN_DIR}
|
|
${MKDIR} ${LIB_DIR}/tools
|
|
# Install the IDE & its accessories
|
|
${CP} -t ${LIB_DIR} \
|
|
$(CURDIR)/lazarus-gtk2 \
|
|
$(CURDIR)/lazbuild \
|
|
$(CURDIR)/startlazarus \
|
|
$(CURDIR)/languages
|
|
${CP} -t ${LIB_DIR}/tools \
|
|
$(CURDIR)/tools/lazres \
|
|
$(CURDIR)/tools/lrstolfm \
|
|
$(CURDIR)/tools/svn2revisioninc \
|
|
$(CURDIR)/tools/updatepofiles
|
|
# Install the library files
|
|
find -name debian -prune -or '(' -name lib -or -name units ')' -print | xargs ${CP} --parents -t ${LIB_DIR}
|
|
# Remove READM.txt files from output directories
|
|
find ${LIB_DIR} '(' -name '*.or' -or -wholename '*/lib/README.txt' ')' -delete
|
|
# Mark package as manually compilable and install them
|
|
for package in `find -name '*.lpk'` ; \
|
|
do \
|
|
${MKDIR} `dirname "${LIB_DIR}/$${package}"` ; \
|
|
sed -e 's@\(\W*\)<CompilerOptions>.*@\1<AutoUpdate Value="Manually"/>\n&@' "$${package}" > "${LIB_DIR}/$${package}" ; \
|
|
done
|
|
# Install packages global links
|
|
${CP} -t ${LIB_DIR}/packager $(CURDIR)/packager/globallinks
|
|
# copy icons and menu entries for the GNOME menu
|
|
${MKDIR} $(INSTALL_DIR)/usr/share/pixmaps
|
|
${MKDIR} $(INSTALL_DIR)/usr/share/applications
|
|
convert -geometry 32x32 $(CURDIR)/images/ide_icon48x48.png $(INSTALL_DIR)/usr/share/pixmaps/lazarus-${DEB_UPSTREAM_MAIN_VERSION}.xpm
|
|
sed -e 's/Lazarus.*/& (${DEB_UPSTREAM_MAIN_VERSION})/' -e 's/Exec=startlazarus/&-${DEB_UPSTREAM_MAIN_VERSION}/' $(CURDIR)/install/lazarus.desktop > $(INSTALL_DIR)/usr/share/applications/lazarus-${DEB_UPSTREAM_MAIN_VERSION}.desktop
|
|
# Install configuration files
|
|
${MKDIR} $(INSTALL_DIR)/etc/lazarus-${DEB_UPSTREAM_MAIN_VERSION}
|
|
sed -e "s#__LAZARUSDIR__#/usr/lib/lazarus/${DEB_UPSTREAM_MAIN_VERSION}/#" -e 's#__FPCSRCDIR__#/usr/share/fpcsrc/$$(FPCVER)/#' ${CURDIR}/tools/install/linux/environmentoptions.xml > $(INSTALL_DIR)/etc/lazarus-${DEB_UPSTREAM_MAIN_VERSION}/environmentoptions.xml
|
|
fpcsubst -d LazarusVersion=${DEB_UPSTREAM_MAIN_VERSION} -i ${CURDIR}/tools/install/linux/helpoptions.xml -o $(INSTALL_DIR)/etc/lazarus-${DEB_UPSTREAM_MAIN_VERSION}/helpoptions.xml
|
|
# Install contributer list
|
|
${MKDIR} ${LIB_DIR}/docs
|
|
${CP} -t ${LIB_DIR}/docs \
|
|
$(CURDIR)/docs/Contributors.txt \
|
|
$(CURDIR)/docs/contributors.utf8 \
|
|
$(CURDIR)/docs/acknowledgements.txt
|
|
# Install lintian override files
|
|
set -x -e ; cd debian/overrides ; for PACKAGE in * ; do \
|
|
if [ -d ../$${PACKAGE}${PACKAGESUFFIX} ] ; \
|
|
then \
|
|
${MKDIR} ../$${PACKAGE}${PACKAGESUFFIX}/usr/share/lintian/overrides ; \
|
|
sed -e "s/$${PACKAGE}/&${PACKAGESUFFIX}/g" $${PACKAGE} > ../$${PACKAGE}${PACKAGESUFFIX}/usr/share/lintian/overrides/$${PACKAGE}${PACKAGESUFFIX} ; \
|
|
fi ; \
|
|
done
|
|
ifeq (${DEB_BUILD},0)
|
|
# We are building upstream debs, install override files for build = 0
|
|
set -x -e ; cd debian ; for PACKAGE in `sed -n -e 's/Package: \(.*\)/\1/p' control` ; do \
|
|
if [ -d $${PACKAGE} ] ; \
|
|
then \
|
|
${MKDIR} $${PACKAGE}/usr/share/lintian/overrides ; \
|
|
echo "$${PACKAGE}: debian-revision-should-not-be-zero" >> $${PACKAGE}/usr/share/lintian/overrides/$${PACKAGE} ; \
|
|
fi ; \
|
|
done
|
|
endif
|
|
find ${INSTALL_DIR} -empty -delete
|
|
touch install-arch-stamp
|
|
|
|
arrange-arch: install-arch arrange-arch-stamp install-man
|
|
arrange-arch-stamp:
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_install -s --sourcedir=debian/tmp --list-missing
|
|
touch arrange-arch-stamp
|
|
|
|
build-indep:
|
|
install-indep:
|
|
touch install-indep-stamp
|
|
|
|
install-man: install-man-stamp
|
|
install-man-stamp:
|
|
# Install man pages
|
|
$(MAKE) -C install/man installman $(INSTALLOPTS)
|
|
for s in ${INSTALL_DIR}/usr/man/man[1-9] ; do cd $${s} && for f in *.[1-9] ; do ${MV} $${f} $${f%%.*}-${DEB_UPSTREAM_MAIN_VERSION}."$${f#*.}" ; done ; done || true
|
|
dh_installman -s
|
|
${RM} ${INSTALL_DIR}/usr/man
|
|
touch install-man-stamp
|
|
|
|
###################
|
|
# Documentation
|
|
#
|
|
|
|
build-doc: build-doc-stamp
|
|
build-doc-stamp:
|
|
@echo "--- Building Documentation"
|
|
dh_testdir
|
|
$(MAKE) -C docs/html ${CONVERTER}
|
|
touch build-doc-stamp
|
|
|
|
install-doc: build-doc install-doc-stamp
|
|
install-doc-stamp: ${DEB_BUILD_FPC_OPT}
|
|
@echo "--- Installing Documentation"
|
|
dh_testdir
|
|
dh_testroot
|
|
${MAKE} -C docs/html ${DOCTYPE}install INSTALL_PREFIX=${INSTALL_DIR}/usr INSTALL_DOCDIR=${DOC_DIR}
|
|
cd docs ; ${CP} --parents -t ${DOC_DIR} \
|
|
index.html \
|
|
images/laztitle.png
|
|
find ${DOC_DIR} -empty -delete
|
|
touch install-doc-stamp
|
|
|
|
###################
|
|
# Source
|
|
#
|
|
|
|
install-source: clean-patched install-source-stamp
|
|
install-source-stamp:
|
|
@echo "--- Cleaning the tree and copying the source code"
|
|
dh_testdir
|
|
dh_testroot
|
|
${MKDIR} ${SRC_DIR}
|
|
${CP} -t ${SRC_DIR} \
|
|
$(CURDIR)/Makefile* \
|
|
$(CURDIR)/components \
|
|
$(CURDIR)/converter \
|
|
$(CURDIR)/debugger \
|
|
$(CURDIR)/designer \
|
|
$(CURDIR)/doceditor \
|
|
$(CURDIR)/examples \
|
|
$(CURDIR)/ide \
|
|
$(CURDIR)/images \
|
|
$(CURDIR)/lcl \
|
|
$(CURDIR)/packager \
|
|
$(CURDIR)/test \
|
|
$(CURDIR)/tools
|
|
# Remove files already installed in binary packages
|
|
find ${SRC_DIR} -name '*.lpk' -delete
|
|
${RM} ${SRC_DIR}/packager/globallinks
|
|
find ${SRC_DIR} -regex '.*\.\(bmp\|jpg\|png\|xpm\)' -delete
|
|
$(RM) ${SRC_DIR}/components/lazreport/license*.txt
|
|
find ${SRC_DIR} -empty -delete
|
|
touch install-source-stamp
|
|
|
|
###################
|
|
# Generic
|
|
#
|
|
|
|
build: build-arch build-indep
|
|
install: install-arch install-indep
|
|
binary: binary-arch binary-indep
|
|
|
|
|
|
###################
|
|
# Deb building
|
|
#
|
|
|
|
configure-indep: configure-indep-stamp configure
|
|
configure-indep-stamp:
|
|
@echo -- Configure indep
|
|
dh_prep
|
|
touch configure-indep-stamp
|
|
|
|
binary-indep: configure-indep install-doc install-source
|
|
@echo "--- Building: arch-indep packages"
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_installdocs -i -X.in
|
|
dh_installchangelogs -i
|
|
dh_install -i --sourcedir=debian/tmp --list-missing
|
|
# Install lintian override files
|
|
set -x -e ; cd debian/overrides ; for PACKAGE in * ; do \
|
|
if [ -d ../$${PACKAGE}${PACKAGESUFFIX} ] ; \
|
|
then \
|
|
${MKDIR} ../$${PACKAGE}${PACKAGESUFFIX}/usr/share/lintian/overrides ; \
|
|
sed -e "s/$${PACKAGE}/&${PACKAGESUFFIX}/g" $${PACKAGE} > ../$${PACKAGE}${PACKAGESUFFIX}/usr/share/lintian/overrides/$${PACKAGE}${PACKAGESUFFIX} ; \
|
|
fi ; \
|
|
done
|
|
ifeq (${DEB_BUILD},0)
|
|
# We are building upstream debs, install override files for build = 0
|
|
set -x -e ; cd debian ; for PACKAGE in `sed -n -e 's/Package: \(.*\)/\1/p' control` ; do \
|
|
if [ -d $${PACKAGE} ] ; \
|
|
then \
|
|
${MKDIR} $${PACKAGE}/usr/share/lintian/overrides ; \
|
|
echo "$${PACKAGE}: debian-revision-should-not-be-zero" >> $${PACKAGE}/usr/share/lintian/overrides/$${PACKAGE} ; \
|
|
fi ; \
|
|
done
|
|
endif
|
|
dh_compress -i -X.pdf
|
|
dh_fixperms
|
|
dh_installdebconf -i
|
|
dh_installdeb -i
|
|
dh_gencontrol -i
|
|
dh_md5sums -i
|
|
dh_builddeb -i $(DEB_DH_BUILDDEB_ARGS)
|
|
|
|
binary-arch: arrange-arch
|
|
@echo "--- Building: arch packages"
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_link
|
|
dh_installdocs -a -X.in
|
|
dh_installchangelogs -a
|
|
dh_installexamples -a
|
|
dh_installmenu
|
|
fpc-depends
|
|
dh_strip -s
|
|
dh_compress -a
|
|
dh_fixperms
|
|
dh_installdebconf -a
|
|
dh_installdeb -a
|
|
dh_shlibdeps -s
|
|
dh_gencontrol -s
|
|
dh_md5sums -s
|
|
dh_builddeb -s $(DEB_DH_BUILDDEB_ARGS)
|
|
|
|
.PHONY: build clean binary binary-arch \
|
|
binary-indep debian-files build-arch \
|
|
install install-indep install-arch \
|
|
configure configure-indep make-files clean-make-files
|
|
|
|
get-orig-source:
|
|
-uscan --rename --force-download
|
|
|
|
debian/%:debian/fixdeb debian/changelog debian/%.in
|
|
DEB_SUBST_PACKAGESUFFIX=${PACKAGESUFFIX} \
|
|
DEB_SUBST_TARGET=${FPCTARGET} \
|
|
$< --gen-control $@.in
|
|
|
|
${DEB_BUILD_FPC_OPT}:
|
|
echo '# FPC configuration file for build system tools' > $@
|
|
echo '-k${LDFLAGS}' >> $@
|
|
echo '-Fl/usr/lib/${DEB_BUILD_MULTIARCH}' >> $@
|
|
|
|
${DEB_HOST_FPC_OPT}:
|
|
echo '# FPC configuration file for host system applications' > $@
|
|
echo '-k${LDFLAGS}' >> $@
|
|
echo '-Fl/usr/lib/${DEB_HOST_MULTIARCH}' >> $@
|