mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 02:40:00 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			284 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			284 lines
		
	
	
		
			7.5 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))
 | 
						|
 | 
						|
[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
 | 
						|
 | 
						|
 | 
						|
##########################################################################
 | 
						|
# Debian
 | 
						|
##########################################################################
 | 
						|
 | 
						|
ifeq ($(OS_TARGET),linux)
 | 
						|
 | 
						|
ifndef DEBDIR
 | 
						|
DEBDIR=debian
 | 
						|
endif
 | 
						|
 | 
						|
# Build dir
 | 
						|
ifndef BUILDDIR
 | 
						|
BUILDDIR=$(BASEDIR)/build
 | 
						|
endif
 | 
						|
 | 
						|
# Link Tree
 | 
						|
ifdef LINKISCOPY
 | 
						|
ifndef LINKTREE
 | 
						|
LINKTREE:=$(CPPROG) -Rfp
 | 
						|
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=lazarus-${DEBVERSION}
 | 
						|
DEBSRCDIR=${BUILDDIR}/${DEBSRC}
 | 
						|
DEBSRC_ORIG=lazarus_${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) Makefile.fpc $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) COPYING.* $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) README.txt $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) components $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) converter $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) debugger $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) designer $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) doceditor $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) docs $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) install $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) examples $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) ide $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) ideintf $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) images $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) languages $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) lazarus.app $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) lcl $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) packager $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) test $(DEBSRCDIR)
 | 
						|
	$(LINKTREE) tools $(DEBSRCDIR)
 | 
						|
	# 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:
 | 
						|
	$(LINKTREE) ${DEBDIR} $(DEBSRCDIR)/debian
 | 
						|
ifdef SNAPSHOT
 | 
						|
	sed 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 -n1 rm -rf
 | 
						|
 | 
						|
debbuild:
 | 
						|
	cd ${DEBSRCDIR} ; dpkg-buildpackage ${DEB_BUILDPKG_OPT}
 | 
						|
 | 
						|
debcheckpolicy:
 | 
						|
ifdef LINTIAN
 | 
						|
	cd ${DEBSRCDIR} ; lintian -i ../*.changes
 | 
						|
endif
 | 
						|
 | 
						|
debclean:
 | 
						|
ifndef DEBUSESVN
 | 
						|
	${DEL} ${BUILDDIR}/${DEBSRC_ORIG}
 | 
						|
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
 |