# # Makefile.fpc for Lazarus for Free Pascal # [package] name=lazarus version=$(IDEVERSION) [require] packages=regexpr [target] programs=lazarus startlazarus dirs=lcl packager/registration ideintf packager components exampledirs=examples [compiler] [clean] files=$(wildcard *$(OEXT)) $(wildcard *$(PPUEXT)) $(wildcard *$(RSTEXT)) $(wildcard *.lfm) [install] fpcpackage=n basedir=share/lazarus [dist] destdir=$(BASEDIR)/dist [prerules] RCPP?=$(strip $(firstword cpp$(SRCEXEEXT))) # LAZARUS_INSTALL_DIR=$(INSTALL_PREFIX)/share/lazarus INSTALL_MAN_DIR=$(INSTALL_PREFIX)/share/man ifneq ($(findstring $(OS_TARGET),win32 win64),) LAZARUS_INSTALL_DIR=C:\lazarus endif ifneq ($(findstring $(OS_TARGET),freebsd),) LAZARUS_INSTALL_DIR=/usr/local/lazarus endif ifneq ($(findstring $(OS_TARGET),win32 win64),) IDEVERSION=$(shell .\tools\install\get_lazarus_version.bat) else IDEVERSION=$(shell ./tools/install/get_lazarus_version.sh) endif #----------------------------------------------------------------------------- [rules] .PHONY: lcl components packager/registration ideintf packager bigidecomponents ide idepkg idebig bigide starter lazbuilder tools all clean cleanide purge examples install lazbuild #----------------------------------------------------------------------------- ide: $(MAKE) -C ide ide #----------------------------------------------------------------------------- idepkg: $(MAKE) -C ide idepkg #----------------------------------------------------------------------------- bigide: lcl packager/registration ideintf packager bigidecomponents idebig starter lazbuilder #----------------------------------------------------------------------------- idebig: $(MAKE) -C ide bigide #----------------------------------------------------------------------------- bigidecomponents: $(MAKE) -C components bigidecomponents #----------------------------------------------------------------------------- bigideclean: cleanlaz $(MAKE) -C components bigideclean #----------------------------------------------------------------------------- starter: $(MAKE) -C ide starter #----------------------------------------------------------------------------- lazbuild: lazbuilder lazbuilder: $(MAKE) -C lcl/interfaces/nogui $(MAKE) -C ide lazbuilder LCL_PLATFORM=nogui #----------------------------------------------------------------------------- tools: lcl $(MAKE) -C tools #----------------------------------------------------------------------------- examples: lcl components #----------------------------------------------------------------------------- all: lcl packager/registration ideintf packager components ide starter lazbuilder #----------------------------------------------------------------------------- cleanide: $(MAKE) -C ide cleanide cleanlaz: cleanide $(MAKE) -C lcl clean $(MAKE) -C components clean $(MAKE) -C packager clean $(MAKE) -C ideintf clean purge: cleanlaz $(MAKE) -C examples clean $(MAKE) -C tools clean # $(MAKE) -C doceditor clean $(MAKE) -C tools clean clean: cleanlaz cleanall: purge # create dirs installbase: ifneq ($(findstring $(OS_TARGET),win32 win64),) else $(MKDIR) $(INSTALL_PREFIX)/share $(MKDIR) $(INSTALL_PREFIX)/share/lazarus $(MKDIR) $(INSTALL_BINDIR) $(MKDIR) $(INSTALL_MAN_DIR) $(MKDIR) $(INSTALL_MAN_DIR)/man1 endif #----------------------------------------------------------------------------- # Many C expect 'make install' to copy the binaries to somewhere # Copy the lazarus tree to the install directory and set a link install: $(MAKE) installbase $(COPYTREE) . $(LAZARUS_INSTALL_DIR) ifneq ($(findstring $(OS_TARGET),win32 win64),) else ln -sf $(LAZARUS_INSTALL_DIR)/lazarus $(INSTALL_PREFIX)/bin/lazarus-ide ln -sf $(LAZARUS_INSTALL_DIR)/startlazarus $(INSTALL_PREFIX)/bin/startlazarus ln -sf $(LAZARUS_INSTALL_DIR)/lazbuild $(INSTALL_PREFIX)/bin/lazbuild cat install/man/man1/lazarus-ide.1 | gzip > $(INSTALL_MAN_DIR)/man1/lazarus-ide.1.gz cat install/man/man1/startlazarus.1 | gzip > $(INSTALL_MAN_DIR)/man1/startlazarus.1.gz cat install/man/man1/lazbuild.1 | gzip > $(INSTALL_MAN_DIR)/man1/lazbuild.1.gz endif # Build dir ifndef BUILDDIR BUILDDIR=$(BASEDIR)/build endif ########################################################################## # Debian ########################################################################## ifeq ($(OS_TARGET),linux) ifndef DEBDIR DEBDIR=debian endif # Link Tree ifdef LINKISCOPY ifndef LINKTREE LINKTREE:=$(CPPROG) -Rfpl endif else ifndef LINKTREE LINKTREE:=$(CPPROG) -Rfpl endif endif ifneq ($(wildcard ${DEBDIR}/changelog),) .PHONY: debcopy deb DEBPACKAGEVERSION:=$(shell head -n 1 ${DEBDIR}/changelog | awk '{ print $$2 }' | tr -d '[()]') DEBVERSION=$(firstword $(subst -, ,${DEBPACKAGEVERSION})) DEBBUILD=$(lastword $(subst -, ,${DEBPACKAGEVERSION})) DEBSRC=${PACKAGE_NAME}-${DEBVERSION} DEBSRCDIR=${BUILDDIR}/${DEBSRC} DEBSRC_ORIG=${PACKAGE_NAME}_${DEBVERSION}.orig BUILDDATE=$(shell /bin/date --utc +%Y%m%d) ifdef MENTORS DEB_BUILDPKG_OPT=-sa else DEB_BUILDPKG_OPT= endif ifeq ($(wildcard ${DEBSRC_ORIG}.tar.gz),) ifeq (${DEBBUILD},0) DEBUSESVN=1 endif ifeq (${DEBBUILD},1) DEBUSESVN=1 endif ifeq (${DEBBUILD},) DEBUSESVN=1 endif ifdef SNAPSHOT DEBUSESVN=1 endif ifndef DEBUSESVN $(error Need "${DEBSRC_ORIG}.tar.gz" to build for DEBBUILD = "${DEBBUILD}" > 1) endif endif ifndef SIGN DEB_BUILDPKG_OPT+= -us -uc endif debcheck: ifneq ($(DEBVERSION),$(PACKAGE_VERSION)) @$(ECHO) "Debian version ($(DEBVERSION)) is not correct, expect $(PACKAGE_VERSION)" @exit 1 endif debcopy: distclean ${DELTREE} ${BUILDDIR} ${MKDIRTREE} ${DEBSRCDIR} ifdef DEBUSESVN $(LINKTREE) -t $(DEBSRCDIR) \ Makefile.fpc COPYING.* README.txt \ components \ converter \ debugger \ designer \ doceditor \ docs \ install \ examples \ ide \ ideintf \ images \ languages \ lazarus.app \ lcl \ packager \ test \ tools \ # add ide/revision.inc echo "const RevisionStr = '${SVNVERSION}';" > $(DEBSRCDIR)/ide/revision.inc else tar -C ${BUILDDIR} -zxf ${DEBSRC_ORIG}.tar.gz ${DEBSRC} ${DELTREE} $(DEBSRCDIR)/debian endif debsetup: $(COPYTREE) ${DEBDIR} $(DEBSRCDIR)/debian ifdef SNAPSHOT sed -e "s/${DEBPACKAGEVERSION}/${DEBPACKAGEVERSION}-${BUILDDATE}/" $(DEBSRCDIR)/debian/changelog > $(DEBSRCDIR)/debian/changelog.tmp ${MOVE} $(DEBSRCDIR)/debian/changelog.tmp $(DEBSRCDIR)/debian/changelog endif chmod 755 $(DEBSRCDIR)/debian/rules find $(DEBSRCDIR) -name '.svn' | xargs ${DELTREE} debbuild: cd ${DEBSRCDIR} ; dpkg-buildpackage ${DEB_BUILDPKG_OPT} debcheckpolicy: ifdef LINTIAN cd ${DEBSRCDIR} ; lintian -I -i ../*.changes endif debclean: ifndef DEBUSESVN ${DEL} ${BUILDDIR}/${DEBSRC_ORIG}.tar.gz endif mv -v -t . \ $(DEBSRCDIR)/../*.changes \ $(DEBSRCDIR)/../*.deb \ $(DEBSRCDIR)/../*.dsc \ $(DEBSRCDIR)/../*.gz ${DELTREE} $(DEBSRCDIR) rmdir $(BUILDDIR) deb: debcheck debcopy deborigtargz debsetup debbuild debcheckpolicy debclean deborigtargz: ifdef DEBUSESVN #$(MAKE) fpc_zipinstall USETAR=y ZIPTARGET=debcopy PACKDIR=$(DEBSRCDIR) FULLZIPNAME=${DEBSRC_ORIG} tar -C ${BUILDDIR} -zcf ${BUILDDIR}/${DEBSRC_ORIG}.tar.gz --exclude-vcs ${DEBSRC} else ${LINKTREE} ${DEBSRC_ORIG}.tar.gz ${BUILDDIR}/${DEBSRC_ORIG}.tar.gz endif endif # changelog found endif