mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-31 01:02:33 +02:00

compiler binaries when determining whether cycle has finished on darwin, because when using Dwarf the linked binaries are always slightly different there (because the Dwarf info is kept in the object files and is referenced using a unique identifier, to be able to ascertain that you are using the correct object files and binary together when debugging) git-svn-id: trunk@9715 -
603 lines
15 KiB
Makefile
603 lines
15 KiB
Makefile
#
|
|
# Makefile.fpc for Free Pascal Compiler
|
|
#
|
|
|
|
[package]
|
|
name=compiler
|
|
version=2.0.0
|
|
|
|
[target]
|
|
programs=pp
|
|
dirs=utils
|
|
|
|
[compiler]
|
|
targetdir=.
|
|
unittargetdir=$(CPU_UNITDIR)/units/$(FULL_TARGET)
|
|
unitdir=$(COMPILERSOURCEDIR)
|
|
includedir=$(PPC_TARGET)
|
|
|
|
[require]
|
|
packages=rtl
|
|
tools=diff cmp
|
|
|
|
[install]
|
|
fpcpackage=y
|
|
|
|
[default]
|
|
fpcdir=..
|
|
|
|
|
|
[prerules]
|
|
# Don't export version it can change after the first compile
|
|
unexport FPC_VERSION FPC_COMPILERINFO
|
|
|
|
# Which platforms are ready for inclusion in the cycle
|
|
CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k
|
|
|
|
# All supported targets used for clean
|
|
ALLTARGETS=$(CYCLETARGETS)
|
|
|
|
# Allow ALPHA, POWERPC, POWERPC64, M68K, I386 defines for target cpu
|
|
ifdef ALPHA
|
|
PPC_TARGET=alpha
|
|
endif
|
|
ifdef POWERPC
|
|
PPC_TARGET=powerpc
|
|
endif
|
|
ifdef POWERPC64
|
|
PPC_TARGET=powerpc64
|
|
endif
|
|
ifdef SPARC
|
|
PPC_TARGET=sparc
|
|
endif
|
|
ifdef M68K
|
|
PPC_TARGET=m68k
|
|
endif
|
|
ifdef I386
|
|
PPC_TARGET=i386
|
|
endif
|
|
ifdef X86_64
|
|
PPC_TARGET=x86_64
|
|
endif
|
|
ifdef ARM
|
|
PPC_TARGET=arm
|
|
endif
|
|
|
|
# Default is to generate a compiler for the same
|
|
# platform as CPU_TARGET (a native compiler)
|
|
ifndef PPC_TARGET
|
|
PPC_TARGET=$(CPU_TARGET)
|
|
endif
|
|
|
|
# Default is to generate a compiler for the same
|
|
# target as OS_TARGET (a native compiler)
|
|
ifndef PPC_OS
|
|
PPC_OS=$(OS_TARGET)
|
|
endif
|
|
|
|
# Where to place the unit files.
|
|
CPU_UNITDIR=$(PPC_TARGET)
|
|
|
|
# RTL
|
|
UTILSDIR=../utils
|
|
|
|
# Directories containing compiler sources
|
|
COMPILERSOURCEDIR=$(PPC_TARGET) systems
|
|
|
|
# Utils used by compiler development/installation
|
|
COMPILERUTILSDIR=utils
|
|
|
|
# Default language for the compiler
|
|
ifndef FPCLANG
|
|
FPCLANG=e
|
|
endif
|
|
|
|
# Local options for the compiler only
|
|
ifndef LOCALOPT
|
|
LOCALOPT:=$(OPT)
|
|
endif
|
|
|
|
# Options for the RTL only when cycling
|
|
ifndef RTLOPT
|
|
RTLOPT:=$(OPT)
|
|
endif
|
|
|
|
# Make OPT empty. It is copied to LOCALOPT and RTLOPT
|
|
override OPT=
|
|
|
|
# Message files
|
|
MSGFILES=$(wildcard msg/error*.msg)
|
|
|
|
# ppcSUFFIX
|
|
ifeq ($(PPC_TARGET),i386)
|
|
CPUSUF=386
|
|
endif
|
|
ifeq ($(PPC_TARGET),alpha)
|
|
CPUSUF=axp
|
|
endif
|
|
ifeq ($(PPC_TARGET),m68k)
|
|
CPUSUF=68k
|
|
endif
|
|
ifeq ($(PPC_TARGET),powerpc)
|
|
CPUSUF=ppc
|
|
endif
|
|
ifeq ($(PPC_TARGET),powerpc64)
|
|
CPUSUF=ppc64
|
|
endif
|
|
ifeq ($(PPC_TARGET),sparc)
|
|
CPUSUF=sparc
|
|
endif
|
|
ifeq ($(PPC_TARGET),x86_64)
|
|
CPUSUF=x64
|
|
endif
|
|
ifeq ($(PPC_TARGET),arm)
|
|
CPUSUF=arm
|
|
endif
|
|
|
|
# Do not define the default -d$(CPU_TARGET) because that
|
|
# will conflict with our -d$(PPC_TARGET)
|
|
NOCPUDEF=1
|
|
|
|
# Default message file
|
|
MSGFILE=msg/error$(FPCLANG).msg
|
|
|
|
# Define Unix also for Linux
|
|
ifeq ($(OS_TARGET),linux)
|
|
ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
|
|
override LOCALOPT+=-dUNIX
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(OS_TARGET),freebsd)
|
|
ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
|
|
override LOCALOPT+=-dUNIX
|
|
endif
|
|
endif
|
|
|
|
REVINC:=$(wildcard revision.inc)
|
|
ifneq ($(REVINC),)
|
|
override LOCALOPT+=-dREVINC
|
|
ifeq ($(REVSTR),)
|
|
SVNVERSION:=$(wildcard svnversion$(EXEEXT))
|
|
REVSTR:=$(shell svnversion .)
|
|
export REVSTR
|
|
endif
|
|
endif
|
|
|
|
# set correct defines (-d$(CPU_TARGET) is automaticly added in makefile.fpc)
|
|
override LOCALOPT+=-d$(PPC_TARGET) -dGDB -dBROWSERLOG
|
|
|
|
# i386 specific
|
|
ifeq ($(PPC_TARGET),i386)
|
|
override LOCALOPT+=-Fux86
|
|
endif
|
|
|
|
# x86_64 specific
|
|
ifeq ($(PPC_TARGET),x86_64)
|
|
override LOCALOPT+=-Fux86
|
|
endif
|
|
|
|
# PowerPC specific
|
|
ifeq ($(PPC_TARGET),powerpc)
|
|
override LOCALOPT+=-Fuppcgen
|
|
endif
|
|
|
|
# PowerPC64 specific
|
|
ifeq ($(PPC_TARGET),powerpc64)
|
|
override LOCALOPT+=-Fuppcgen
|
|
endif
|
|
|
|
# m68k specific
|
|
ifeq ($(PPC_TARGET),m68k)
|
|
override LOCALOPT+=-dNOOPT
|
|
endif
|
|
|
|
# Sparc specific
|
|
ifeq ($(PPC_TARGET),sparc)
|
|
override LOCALOPT+=
|
|
endif
|
|
|
|
# m68k specific with low stack
|
|
ifeq ($(PPC_TARGET),m68k)
|
|
ifeq ($(OS_TARGET),amiga)
|
|
override LOCALOPT+=-Ct
|
|
endif
|
|
endif
|
|
|
|
# ARM specific
|
|
ifeq ($(PPC_TARGET),arm)
|
|
override LOCALOPT+=
|
|
endif
|
|
|
|
[rules]
|
|
#####################################################################
|
|
# Setup Targets
|
|
#####################################################################
|
|
|
|
ifeq ($(OS_TARGET),win32)
|
|
ifdef CMP
|
|
override DIFF:=$(CMP) -i218
|
|
endif
|
|
endif
|
|
|
|
# Add Local options
|
|
override COMPILER+=$(LOCALOPT)
|
|
|
|
# Disable optimizer when compiled with 1.0.x
|
|
ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
|
|
override COMPILER:=$(patsubst -O%,,$(COMPILER))
|
|
endif
|
|
|
|
|
|
#####################################################################
|
|
# PASDoc
|
|
#####################################################################
|
|
|
|
PASDOC:=$(strip $(wildcard $(addsuffix /pasdoc.exe,$(SEARCHPATH))))
|
|
ifeq ($(PASDOC),)
|
|
PASDOC:=$(strip $(wildcard $(addsuffix /pasdoc,$(SEARCHPATH))))
|
|
endif
|
|
ifeq ($(PASDOC),)
|
|
PASDOC:=../projects/pasdoc/bin/pasdoc
|
|
else
|
|
PASDOC:=$(firstword $(PASDOC))
|
|
endif
|
|
|
|
|
|
#####################################################################
|
|
# Setup os-independent filenames
|
|
#####################################################################
|
|
|
|
ifndef EXENAME
|
|
EXENAME=ppc$(CPUSUF)$(EXEEXT)
|
|
endif
|
|
PPEXENAME=pp$(EXEEXT)
|
|
TEMPNAME=ppc$(SRCEXEEXT)
|
|
PPCROSSNAME=ppcross$(CPUSUF)$(SRCEXEEXT)
|
|
TEMPNAME1=ppc1$(EXEEXT)
|
|
TEMPNAME2=ppc2$(EXEEXT)
|
|
TEMPNAME3=ppc3$(EXEEXT)
|
|
MAKEDEP=ppdep$(EXEEXT)
|
|
MSG2INC=./msg2inc$(EXEEXT)
|
|
ifdef CROSSINSTALL
|
|
INSTALLEXEFILE=$(PPCROSSNAME)
|
|
else
|
|
INSTALLEXEFILE=$(EXENAME)
|
|
endif
|
|
|
|
#####################################################################
|
|
# CPU targets
|
|
#####################################################################
|
|
|
|
PPC_TARGETS=i386 m68k powerpc sparc arm x86_64 powerpc64 alpha vis ia64
|
|
|
|
.PHONY: $(PPC_TARGETS)
|
|
|
|
$(PPC_TARGETS):
|
|
$(MAKE) PPC_TARGET=$@ CPU_UNITDIR=$@ all
|
|
|
|
alltargets: $(ALLTARGETS)
|
|
|
|
|
|
#####################################################################
|
|
# Default makefile
|
|
#####################################################################
|
|
|
|
.NOTPARALLEL:
|
|
|
|
.PHONY: all compiler echotime ppuclean execlean clean distclean
|
|
|
|
all: compiler $(addsuffix _all,$(TARGET_DIRS))
|
|
|
|
compiler: $(COMPILER_UNITTARGETDIR) $(COMPILER_TARGETDIR) $(EXENAME)
|
|
|
|
ifeq ($(MAKELEVEL),0)
|
|
ifndef STARTTIME
|
|
ifdef DATE
|
|
STARTTIME:=$(shell $(DATE) +%T)
|
|
else
|
|
STARTTIME:=unknown
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
export STARTTIME
|
|
|
|
ifdef DATE
|
|
ENDTIME=$(shell $(DATE) +%T)
|
|
else
|
|
ENDTIME:=unknown
|
|
endif
|
|
|
|
echotime:
|
|
@echo Start $(STARTTIME) now $(ENDTIME)
|
|
|
|
ppuclean:
|
|
-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
|
|
-$(DEL) $(addsuffix /*$(PPUEXT),$(COMPILERSOURCEDIR))
|
|
|
|
tempclean:
|
|
-$(DEL) $(PPCROSSNAME) $(TEMPNAME) $(TEMPNAME1) $(TEMPNAME2) $(TEMPNAME3) $(MSG2INC)
|
|
|
|
execlean :
|
|
-$(DEL) ppc386$(EXEEXT) ppcaxp$(EXEEXT) ppc68k$(EXEEXT) ppcx64$(EXEEXT) ppcppc$(EXEEXT) ppcsparc$(EXEEXT) $(EXENAME)
|
|
|
|
$(addsuffix _clean,$(ALLTARGETS)):
|
|
-$(DELTREE) $(addprefix $(subst _clean,,$@),/units)
|
|
-$(DEL) $(addprefix $(subst _clean,,$@)/,*$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT))
|
|
-$(DEL) $(addprefix $(subst _clean,,$@)/,ppc386$(EXEEXT) ppcaxp$(EXEEXT) ppc68k$(EXEEXT) ppcx64$(EXEEXT) ppcppc$(EXEEXT) ppcppc$(EXEEXT) $(EXENAME))
|
|
|
|
cycleclean: cleanall $(addsuffix _clean,$(PPC_TARGET))
|
|
-$(DEL) $(EXENAME)
|
|
|
|
clean: tempclean execlean cleanall $(addsuffix _clean,$(PPC_TARGET)) $(addsuffix _clean,$(TARGET_DIRS))
|
|
|
|
distclean: tempclean execlean cleanall $(addsuffix _clean,$(ALLTARGETS)) $(addsuffix _distclean,$(TARGET_DIRS))
|
|
|
|
|
|
#####################################################################
|
|
# Make targets
|
|
#####################################################################
|
|
|
|
$(MSG2INC): $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(COMPILERUTILSDIR)/msg2inc.pp
|
|
$(COMPILER) -FE. $(COMPILERUTILSDIR)/msg2inc.pp
|
|
|
|
# The msgtxt.inc only depends on the error?.msg file, not on msg2inc,
|
|
# because that one will be new almost everytime
|
|
msgtxt.inc: $(MSGFILE)
|
|
$(MAKE) $(MSG2INC)
|
|
$(MSG2INC) $(MSGFILE) msg msg
|
|
|
|
msg: msgtxt.inc
|
|
|
|
insdatx86 : $(COMPILER_UNITTARGETDIR) x86/x86ins.dat
|
|
$(COMPILER) -FE$(COMPILERUTILSDIR) $(COMPILERUTILSDIR)/mkx86ins.pp
|
|
cd x86; ../utils/mkx86ins; mv -f *.inc ../i386
|
|
cd x86;../utils/mkx86ins x86_64; mv -f *.inc ../x86_64
|
|
|
|
insdatarm : arm/armins.dat
|
|
$(COMPILER) -FE$(COMPILERUTILSDIR) $(COMPILERUTILSDIR)/mkarmins.pp
|
|
cd arm; ../utils/mkarmins
|
|
|
|
insdat: insdatx86 insdatarm
|
|
|
|
# Make only the compiler
|
|
$(EXENAME) : $(wildcard *.pas) $(wildcard *.inc) msg \
|
|
$(wildcard systems/*.pas) $(wilcard systems/*.inc) \
|
|
$(wildcard $(PPC_TARGET)/*.pas) $(wildcard $(PPC_TARGET)/*.inc)
|
|
ifneq ($(REVSTR),)
|
|
$(ECHOREDIR) "'$(REVSTR)'" > revision.inc
|
|
endif
|
|
$(COMPILER) pp.pas
|
|
$(EXECPPAS)
|
|
$(MOVE) $(COMPILER_TARGETDIR)/$(PPEXENAME) $(EXENAME)
|
|
|
|
|
|
#####################################################################
|
|
# Cycle targets
|
|
#
|
|
# 1. Source CPU = Target CPU and Source OS = Target OS
|
|
# Normal cycle
|
|
#
|
|
# 2. Source CPU = Target CPU and Source OS <> Target OS
|
|
# First source native compiler
|
|
# Second target native compiler (skipped for cross installation)
|
|
#
|
|
# 3. Source CPU <> Target CPU
|
|
# First source native compiler
|
|
# Second cross compiler
|
|
# Third target native compiler (skipped for cross installation)
|
|
#
|
|
#####################################################################
|
|
|
|
ifeq ($(CPU_SOURCE),$(PPC_TARGET))
|
|
|
|
ifeq ($(OS_SOURCE),$(OS_TARGET))
|
|
|
|
##########################
|
|
# Normal cycle
|
|
#
|
|
|
|
# Used to avoid unnecessary steps
|
|
ifdef DIFF
|
|
ifdef OLDFPC
|
|
ifneq ($(OS_TARGET),darwin)
|
|
DIFFRESULT:=$(shell $(DIFF) $(OLDFPC) $(FPC))
|
|
else
|
|
DIFFRESULT:=$(shell cp $(OLDFPC) $(OLDFPC).tmp; cp $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; rm $(OLDFPC).tmp $(FPC).tmp)
|
|
endif
|
|
else
|
|
DIFFRESULT=Not equal
|
|
endif
|
|
else
|
|
DIFFRESULT=No diff program
|
|
endif
|
|
|
|
ifndef DIFFRESULT
|
|
next :
|
|
@echo $(OLDFPC) and $(FPC) are equal
|
|
$(COPY) $(FPC) $(EXENAME)
|
|
else
|
|
next :
|
|
$(MAKE) rtlclean rtl
|
|
$(MAKE) cycleclean compiler
|
|
$(MAKE) echotime
|
|
endif
|
|
|
|
$(TEMPNAME1) :
|
|
$(MAKE) 'OLDFPC=' next
|
|
-$(DEL) $(TEMPNAME1)
|
|
$(MOVE) $(EXENAME) $(TEMPNAME1)
|
|
|
|
$(TEMPNAME2) : $(TEMPNAME1)
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME1)' 'OLDFPC=' next
|
|
-$(DEL) $(TEMPNAME2)
|
|
$(MOVE) $(EXENAME) $(TEMPNAME2)
|
|
|
|
$(TEMPNAME3) : $(TEMPNAME2)
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME2)' 'OLDFPC=$(BASEDIR)/$(TEMPNAME1)' next
|
|
-$(DEL) $(TEMPNAME3)
|
|
$(MOVE) $(EXENAME) $(TEMPNAME3)
|
|
|
|
cycle:
|
|
$(MAKE) tempclean $(TEMPNAME3)
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3)' 'OLDFPC=$(BASEDIR)/$(TEMPNAME2)' next
|
|
$(DIFF) $(TEMPNAME3) $(EXENAME)
|
|
$(MAKE) $(addsuffix _all,$(TARGET_DIRS)) 'FPC=$(BASEDIR)/$(EXENAME)'
|
|
$(MAKE) echotime
|
|
|
|
else
|
|
|
|
##########################
|
|
# Cross Target cycle
|
|
#
|
|
|
|
cycle:
|
|
# ppc (source native)
|
|
$(MAKE) OS_TARGET=$(OS_SOURCE) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 rtlclean rtl
|
|
$(MAKE) OS_TARGET=$(OS_SOURCE) EXENAME=$(TEMPNAME) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 cycleclean compiler
|
|
# ppcross<ARCH> (source native)
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME)' OS_TARGET=$(OS_SOURCE) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 rtlclean rtl
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME)' OS_TARGET=$(OS_SOURCE) EXENAME=$(PPCROSSNAME) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 cycleclean compiler
|
|
# ppc<ARCH> (target native)
|
|
ifndef CROSSINSTALL
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' rtlclean rtl
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' cycleclean compiler
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
##########################
|
|
# Cross CPU cycle
|
|
#
|
|
# ppc1 = native
|
|
# ppc2 = cross running on this platform
|
|
# ppc3/ppcXXX = native (skipped for cross installation)
|
|
#
|
|
|
|
cycle:
|
|
# ppc (source native)
|
|
# Clear detected compiler binary, because it can be existing crosscompiler binary, but we need native compiler here
|
|
override FPC=
|
|
$(MAKE) OS_TARGET=$(OS_SOURCE) CPU_TARGET=$(CPU_SOURCE) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 rtlclean rtl
|
|
$(MAKE) OS_TARGET=$(OS_SOURCE) CPU_TARGET=$(CPU_SOURCE) EXENAME=$(TEMPNAME) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 cycleclean compiler
|
|
# ppcross<ARCH> (source native)
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME)' OS_TARGET=$(OS_SOURCE) CPU_TARGET=$(CPU_SOURCE) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 rtlclean rtl
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME)' OS_TARGET=$(OS_SOURCE) CPU_TARGET=$(CPU_SOURCE) PPC_TARGET=$(CPU_TARGET) EXENAME=$(PPCROSSNAME) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 cycleclean compiler
|
|
# ppc<ARCH> (target native)
|
|
ifndef CROSSINSTALL
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' rtlclean rtl
|
|
$(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' cycleclean compiler
|
|
endif
|
|
|
|
endif
|
|
|
|
cycledep:
|
|
$(MAKE) cycle USEDEPEND=1
|
|
|
|
extcycle:
|
|
$(MAKE) cycle OPT='-n -OG2p3 -glttt -CRriot -dEXTDEBUG'
|
|
|
|
cvstest:
|
|
$(MAKE) cycle 'LOCALOPT=-n -Se' 'RTLOPT=-n -Se'
|
|
|
|
|
|
##########################
|
|
# Full cycle
|
|
#
|
|
# 1. build a compiler using cycle
|
|
# 2. remove all .ppufiles
|
|
# 3. build all supported cross compilers except the
|
|
# current PPC_TARGET which was already build
|
|
#
|
|
|
|
full: fullcycle
|
|
|
|
fullcycle:
|
|
$(MAKE) cycle
|
|
$(MAKE) ppuclean
|
|
$(MAKE) $(filter-out $(PPC_TARGET),$(CYCLETARGETS)) 'FPC=$(BASEDIR)/$(EXENAME)'
|
|
|
|
#####################################################################
|
|
# Docs
|
|
#####################################################################
|
|
|
|
htmldocs:
|
|
$(PASDOC) -p -h -o html$(PATHSEP)$(PPC_TARGET) -d fpc -d gdb -d $(PPC_TARGET) -u $(PPC_TARGET) $(PPC_TARGET)$(PATHSEP)*.pas systems$(PATHSEP)*.pas *.pas
|
|
|
|
#####################################################################
|
|
# Installation
|
|
#####################################################################
|
|
|
|
.PHONY: quickinstall install installsym
|
|
|
|
MSGINSTALLDIR=$(INSTALL_BASEDIR)/msg
|
|
override PPEXEFILE:=$(wildcard $(EXENAME))
|
|
|
|
ifdef UNIXHier
|
|
PPCCPULOCATION=$(INSTALL_BASEDIR)
|
|
else
|
|
PPCCPULOCATION=$(INSTALL_BINDIR)
|
|
endif
|
|
|
|
# This will only install the ppcXXX executable, not the message files etc.
|
|
quickinstall: $(addsuffix _install,$(TARGET_DIRS))
|
|
# Install ppcXXX executable, for a cross installation we install
|
|
# the ppcrossXXX as ppcXXX. The target native build ppcXXX is not used
|
|
# for this installation type
|
|
ifneq ($(INSTALLEXEFILE),)
|
|
ifdef UPXPROG
|
|
-$(UPXPROG) $(INSTALLEXEFILE)
|
|
endif
|
|
$(MKDIR) $(PPCCPULOCATION)
|
|
$(INSTALLEXE) $(INSTALLEXEFILE) $(PPCCPULOCATION)/$(INSTALLEXEFILE)
|
|
endif
|
|
|
|
install: quickinstall
|
|
ifndef CROSSINSTALL
|
|
ifdef UNIXHier
|
|
$(MKDIR) $(INSTALL_BASEDIR)
|
|
$(INSTALLEXE) $(COMPILERUTILSDIR)/samplecfg $(INSTALL_BASEDIR)/samplecfg
|
|
endif
|
|
$(MKDIR) $(MSGINSTALLDIR)
|
|
$(INSTALL) $(MSGFILES) $(MSGINSTALLDIR)
|
|
endif
|
|
|
|
# This also installs a link from bin to the actual executable.
|
|
# The .deb does that later.
|
|
installsymlink: install
|
|
ifneq ($(PPCCPULOCATION),$(INSTALL_BINDIR))
|
|
$(MKDIR) $(INSTALL_BINDIR)
|
|
ln -sf $(INSTALL_BASEDIR)/$(EXENAME) $(INSTALL_BINDIR)/$(EXENAME)
|
|
endif
|
|
|
|
|
|
#####################################################################
|
|
# RTL
|
|
#####################################################################
|
|
|
|
.PHONY: rtl rtlclean rtlinstall
|
|
|
|
rtl:
|
|
$(MAKE) -C $(PACKAGEDIR_RTL) 'OPT=$(RTLOPT)' all
|
|
|
|
rtlclean:
|
|
$(MAKE) -C $(PACKAGEDIR_RTL) clean
|
|
|
|
rtlinstall:
|
|
$(MAKE) -C $(PACKAGEDIR_RTL) install
|
|
|
|
|
|
#####################################################################
|
|
# local user configurable file
|
|
# in makefile.loc you can add any desired target
|
|
#####################################################################
|
|
|
|
localmake:=$(strip $(wildcard makefile.loc))
|
|
|
|
ifdef localmake
|
|
include ./$(localmake)
|
|
endif
|