mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 19:38:04 +02:00
283 lines
7.1 KiB
Makefile
283 lines
7.1 KiB
Makefile
#
|
|
# 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
|