From b5f61f6d8942f99b90f3558fa68df7ef2f6c50b3 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 14 Oct 2001 21:38:31 +0000 Subject: [PATCH] * cross compiling support --- utils/fpcm/fpcmake.inc | 1156 +++++++++++++++++++++------------------- utils/fpcm/fpcmake.ini | 522 ++++++++++-------- utils/fpcm/fpcmmain.pp | 10 +- utils/fpcm/fpcmwr.pp | 13 +- 4 files changed, 923 insertions(+), 778 deletions(-) diff --git a/utils/fpcm/fpcmake.inc b/utils/fpcm/fpcmake.inc index 9a3a0fefaa..a841500e6d 100644 --- a/utils/fpcm/fpcmake.inc +++ b/utils/fpcm/fpcmake.inc @@ -1,7 +1,7 @@ {$ifdef Delphi} -const fpcmakeini : array[0..130] of string[240]=( +const fpcmakeini : array[0..138] of string[240]=( {$else Delphi} -const fpcmakeini : array[0..130,1..240] of char=( +const fpcmakeini : array[0..138,1..240] of char=( {$endif Delphi} ';'#010+ '; Templates used by fpcmake to create a Makefile from Makefile.fpc'#010+ @@ -102,8 +102,8 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ '[fpcdetect]'#010+ '#####################################################################'#010+ - '# FPC version/target Detection'#010+ - '###################################################################','#'+ + '# FPC Binary and Version Detection'#010+ + '###############################################################','#####'+ '#'#010+ #010+ '# Compatibility with old makefiles'#010+ @@ -116,8 +116,8 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Try to detect the ppcXXX file to use by using "fpc -P?" option'#010+ '# to query for the default ppcXXX the fpc executable tries'#010+ 'ifndef FPC'#010+ - 'FPC:=$(shell fpc -P?)'#010+ - '#',' Older fpc executables didn'#039't support it and return'#010+ + 'FPC:=$(shell fpc -P','?)'#010+ + '# Older fpc executables didn'#039't support it and return'#010+ '# Error: Illegal processor... When found then fallback to ppc386'#010+ 'ifneq ($(findstring Error,$(FPC)),)'#010+ 'override FPC=ppc386'#010+ @@ -125,9 +125,20 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ #010+ '# Get a clean executable name'#010+ - 'override FPC:=$(subst $(','SRCEXEEXT),,$(FPC))'#010+ + 'override FPC:=$(subs','t $(SRCEXEEXT),,$(FPC))'#010+ 'override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)'#010+ #010+ + '# FPC version'#010+ + 'ifndef FPC_VERSION'#010+ + 'FPC_VERSION:=$(shell $(FPC) -iV)'#010+ + 'endif'#010+ + #010+ + 'export FPC FPC_VERSION'#010+ + #010+ + '#####################################################################'#010+ + '# ','FPC Target Detection'#010+ + '#####################################################################'#010+ + #010+ '# Target CPU'#010+ 'ifndef CPU_TARGET'#010+ 'CPU_TARGET:=$(shell $(FPC) -iTP)'#010+ @@ -138,9 +149,9 @@ const fpcmakeini : array[0..130,1..240] of char=( 'CPU_SOURCE:=$(shell $(FPC) -iSP)'#010+ 'endif'#010+ #010+ - '# Target OS'#010+ + '# Targ','et OS'#010+ 'ifndef OS_TARGET'#010+ - 'OS','_TARGET:=$(shell $(FPC) -iTO)'#010+ + 'OS_TARGET:=$(shell $(FPC) -iTO)'#010+ 'endif'#010+ #010+ '# Source OS'#010+ @@ -148,23 +159,28 @@ const fpcmakeini : array[0..130,1..240] of char=( 'OS_SOURCE:=$(shell $(FPC) -iSO)'#010+ 'endif'#010+ #010+ - '# FPC version'#010+ - 'ifndef FPC_VERSION'#010+ - 'FPC_VERSION:=$(shell $(FPC) -iV)'#010+ + '# Full name of the target, including CPU and OS'#010+ + 'FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#010+ + 'FULL_SOURCE=$(CPU_SOURC','E)-$(OS_SOURCE)'#010+ + #010+ + 'ifneq ($(FULL_TARGET),$(FULL_SOURCE))'#010+ + 'CROSSCOMPILE=1'#010+ 'endif'#010+ #010+ - 'export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSI','ON'#010+ + 'export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOUR'+ + 'CE CROSSCOMPILE'#010+ #010+ #010+ '[fpcdircheckenv]'#010+ - '#####################################################################'#010+ + '##########################################################','##########'+ + '#'#010+ '# FPCDIR Setting'#010+ '#####################################################################'#010+ #010+ '# Test FPCDIR to look if the RTL dir exists'#010+ 'ifdef FPCDIR'#010+ - 'ove','rride FPCDIR:=$(subst \,/,$(FPCDIR))'#010+ - 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+ + 'override FPCDIR:=$(subst \,/,$(FPCDIR))'#010+ + 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl',' units)),)'#010+ 'override FPCDIR=wrong'#010+ 'endif'#010+ 'else'#010+ @@ -176,39 +192,46 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Detect FPCDIR'#010+ 'ifeq ($(FPCDIR),wrong)'#010+ 'ifdef inUnix'#010+ - 'override FPCDIR=/us','r/local/lib/fpc/$(FPC_VERSION)'#010+ + 'override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)'#010+ 'ifeq ($(wildcard $(FPCDIR)/units),)'#010+ - 'override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)'#010+ + 'override FPCD','IR=/usr/lib/fpc/$(FPC_VERSION)'#010+ 'endif'#010+ 'else'#010+ 'override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(add'+ 'suffix /$(FPC),$(SEARCHPATH))))))'#010+ - 'override FPCDI','R:=$(FPCDIR)/..'#010+ - 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+ 'override FPCDIR:=$(FPCDIR)/..'#010+ 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+ + 'override F','PCDIR:=$(FPCDIR)/..'#010+ + 'ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)'#010+ 'override FPCDIR=c:/pp'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ #010+ - '# Units dir'#010+ - 'UNITSDIR:=$(wildcard $(FPCD','IR)/units/$(OS_TARGET))'#010+ + '# Units dir, when cross compiling try first the'#010+ + 'ifdef CROSSCOMPILE'#010+ + 'UNITSDIR:=$(wildcard $(FPCDIR)/cross/$(FULL_TARGET)/','units)'#010+ + 'ifeq ($(UNITSDIR),)'#010+ + 'UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))'#010+ + 'endif'#010+ + 'else'#010+ + 'UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))'#010+ + 'endif'#010+ #010+ '# Packages dir'#010+ 'PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)'#010+ #010+ #010+ '[shelltools]'#010+ - '#####################################################################'#010+ - '# Shell tools'#010+ - '###############################################','#####################'+ + '#########','###########################################################'+ '#'#010+ + '# Shell tools'#010+ + '#####################################################################'#010+ #010+ '# Echo that can redir (must be able run in the default OS shell)'#010+ 'ifndef ECHOREDIR'#010+ - 'ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))'#010+ + 'ECHOREDIR:=$','(subst /,$(PATHSEP),$(ECHO))'#010+ 'endif'#010+ #010+ '# To copy pograms'#010+ @@ -217,7 +240,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ #010+ '# Copy a whole tree'#010+ - 'ifndef CO','PYTREE'#010+ + 'ifndef COPYTREE'#010+ 'COPYTREE:=$(CPPROG) -rfp'#010+ 'endif'#010+ #010+ @@ -226,7 +249,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'MOVE:=$(MVPROG) -f'#010+ 'endif'#010+ #010+ - '# Check delete program'#010+ + '# Check delete program'#010, 'ifndef DEL'#010+ 'DEL:=$(RMPROG) -f'#010+ 'endif'#010+ @@ -236,7 +259,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'DELTREE:=$(RMPROG) -rf'#010+ 'endif'#010+ #010+ - '# To install file','s'#010+ + '# To install files'#010+ 'ifndef INSTALL'#010+ 'ifdef inUnix'#010+ 'INSTALL:=$(GINSTALL) -c -m 644'#010+ @@ -245,7 +268,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ 'endif'#010+ #010+ - '# To install programs'#010+ + '# To install programs'#010, 'ifndef INSTALLEXE'#010+ 'ifdef inUnix'#010+ 'INSTALLEXE:=$(GINSTALL) -c -m 755'#010+ @@ -254,37 +277,425 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ 'endif'#010+ #010+ - '# To make a directo','ry.'#010+ + '# To make a directory.'#010+ 'ifndef MKDIR'#010+ 'MKDIR:=$(GINSTALL) -m 755 -d'#010+ 'endif'#010+ #010+ - 'export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKD'+ - 'IR'#010+ + 'export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEX','E M'+ + 'KDIR'#010+ + #010+ + #010+ + '[defaultdirs]'#010+ + '#####################################################################'#010+ + '# Default Directories'#010+ + '#####################################################################'#010+ + #010+ + '# Units dir'#010+ + 'ifdef REQUIRE_UNITSDIR'#010+ + 'override UNITSDIR+','=$(REQUIRE_UNITSDIR)'#010+ + 'endif'#010+ + #010+ + '# Units dir'#010+ + 'ifdef REQUIRE_PACKAGESDIR'#010+ + 'override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)'#010+ + 'endif'#010+ + #010+ + #010+ + '# Linux, netbsd and freebsd use unix dirs with /usr/bin, /usr/lib'#010+ + '# When zipping use the target as default, when normal i','nstall then'#010+ + '# use the source os as default'#010+ + 'ifdef ZIPINSTALL'#010+ + '# Zipinstall'#010+ + 'ifeq ($(OS_TARGET),linux)'#010+ + 'UNIXINSTALLDIR=1'#010+ + 'endif'#010+ + 'ifeq ($(OS_TARGET),freebsd)'#010+ + 'UNIXINSTALLDIR=1'#010+ + 'endif'#010+ + 'ifeq ($(OS_TARGET),netbsd)'#010+ + 'UNIXINSTALLDIR=1'#010+ + 'endif'#010+ + 'else'#010+ + '# Normal ins','tall'#010+ + 'ifeq ($(OS_SOURCE),linux)'#010+ + 'UNIXINSTALLDIR=1'#010+ + 'endif'#010+ + 'ifeq ($(OS_SOURCE),freebsd)'#010+ + 'UNIXINSTALLDIR=1'#010+ + 'endif'#010+ + 'ifeq ($(OS_SOURCE),netbsd)'#010+ + 'UNIXINSTALLDIR=1'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# set the prefix directory where to install everything'#010+ + 'ifndef INSTALL_PREFIX'#010+ + 'i','fdef UNIXINSTALLDIR'#010+ + 'INSTALL_PREFIX=/usr/local'#010+ + 'else'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_BASEDIR:=/pp'#010+ + 'else'#010+ + 'INSTALL_BASEDIR:=/$(PACKAGE_NAME)'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + 'export INSTALL_PREFIX'#010+ + #010+ + '# Where to place the resulting zip files'#010+ + 'ifndef DIST_DESTDIR'#010+ + 'DI','ST_DESTDIR:=$(BASEDIR)'#010+ + 'endif'#010+ + 'export DIST_DESTDIR'#010+ + #010+ + #010+ + '#####################################################################'#010+ + '# Install Directories'#010+ + '#####################################################################'#010+ + #010+ + '# set the base directory w','here to install everything'#010+ + 'ifndef INSTALL_BASEDIR'#010+ + 'ifdef UNIXINSTALLDIR'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)'#010+ + 'else'#010+ + 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)'#010+ + 'endif'#010+ + 'else'#010+ + 'INSTALL_BASEDIR',':=$(INSTALL_PREFIX)'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# set the directory where to install the binaries'#010+ + 'ifndef INSTALL_BINDIR'#010+ + 'ifdef UNIXINSTALLDIR'#010+ + 'INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin'#010+ + 'else'#010+ + 'INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin'#010+ + '# for FPC packages install the b','inaries under their os target subdir'+ + #010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# set the directory where to install the units.'#010+ + 'ifndef INSTALL_UNITDIR'#010+ + '# If cross compiling install in the cross',' compile directory'#010+ + 'ifdef CROSSCOMPILE'#010+ + 'INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/units'#010+ + 'else'#010+ + 'INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)'#010+ + 'endif'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'ifdef PACKAGE_NAME'#010+ + 'INSTALL_UNITDIR:=$(INSTALL_UN','ITDIR)/$(PACKAGE_NAME)'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# Where to install shared libraries'#010+ + 'ifndef INSTALL_LIBDIR'#010+ + 'ifdef UNIXINSTALLDIR'#010+ + 'INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib'#010+ + 'else'#010+ + 'INSTALL_LIBDIR:=$(INSTALL_UNITDIR)'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# Where the source files wil','l be stored'#010+ + 'ifndef INSTALL_SOURCEDIR'#010+ + 'ifdef UNIXINSTALLDIR'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_'+ + 'NAME)'#010+ + 'else'#010+ + 'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VER'+ + 'SION)'#010, + 'endif'#010+ + 'else'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)'#010+ + 'else'#010+ + 'INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# Where the doc files will be stored'#010+ + 'ifndef INSTALL_DOCDIR'#010+ + 'ifdef UNIXINST','ALLDIR'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAM'+ + 'E)'#010+ + 'else'#010+ + 'INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSIO'+ + 'N)'#010+ + 'endif'#010+ + 'else'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_DOCDIR:=$(INS','TALL_BASEDIR)/doc/$(PACKAGE_NAME)'#010+ + 'else'#010+ + 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# Where to install the examples, under linux we use the doc dir'#010+ + '# because the copytree command will create a subdir itself'#010+ + 'ifndef INSTALL_EXAMP','LEDIR'#010+ + 'ifdef UNIXINSTALLDIR'#010+ + 'ifdef INSTALL_FPCPACKAGE'#010+ + 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/'+ + '$(PACKAGE_NAME)'#010+ + 'else'#010+ + 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VE'+ + 'RSION)'#010+ + 'endif'#010+ + 'else'#010+ + 'ifdef INS','TALL_FPCPACKAGE'#010+ + 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)'#010+ + 'else'#010+ + 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + #010+ + '# Where the some extra (data)files will be stored'#010+ + 'ifndef INSTALL_DATADIR'#010+ + 'INSTALL_DATADIR','=$(INSTALL_BASEDIR)'#010+ + 'endif'#010+ + #010+ + '#####################################################################'#010+ + '# Cross compile dirs'#010+ + '#####################################################################'#010+ + #010+ + 'ifdef CROSSCOMPILE'#010+ + '# Directory where the cross comp','ile tools are stored.'#010+ + '# First check if they are available in FPCDIR. If no targets/ subdir'#010+ + '# is found use the targets/ subdir in INSTALL_BASEDIR.'#010+ + 'ifndef CROSSBINDIR'#010+ + 'CROSSBINDIR:=$(wildcard $(FPCDIR)/cross/$(FULL_TARGET)/bin/$(FULL_SOUR'+ + 'CE))'#010, + 'ifeq ($(CROSSBINDIR),)'#010+ + 'CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin/$('+ + 'FULL_SOURCE))'#010+ + 'endif'#010+ + 'endif'#010+ + 'else'#010+ + 'CROSSBINDIR='#010+ + 'endif'#010+ + #010+ + #010+ + '[dirlibc]'#010+ + '# On linux, try to find where libgcc.a is.'#010+ + 'ifdef inUnix'#010+ + 'ifndef GCCLIBDIR'#010+ + 'GCCLIBDIR:=$','(shell dirname `(gcc -v 2>&1)| head -n 1| awk '#039'{ pri'+ + 'nt $$4 } '#039'`)'#010+ + 'endif'#010+ + 'ifeq ($(OS_TARGET),linux)'#010+ + 'ifndef OTHERLIBDIR'#010+ + 'OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '#039'{ ORS=" '+ + '"; print $1 }'#039')'#010+ + 'endif'#010+ + 'endif'#010+ + 'ifeq ($(OS_TARGET),netbsd)'#010+ + 'OTH','ERLIBDIR+=/usr/pkg/lib'#010+ + 'endif'#010+ + 'export GCCLIBDIR OTHERLIB'#010+ + 'endif'#010+ + #010+ + #010+ + '[extensions]'#010+ + '#####################################################################'#010+ + '# Default extensions'#010+ + '#####################################################################'#010+ + #010+ + '# ','Default needed extensions (Go32v2,Linux)'#010+ + 'LOADEREXT=.as'#010+ + 'EXEEXT=.exe'#010+ + 'PPLEXT=.ppl'#010+ + 'PPUEXT=.ppu'#010+ + 'OEXT=.o'#010+ + 'ASMEXT=.s'#010+ + 'SMARTEXT=.sl'#010+ + 'STATICLIBEXT=.a'#010+ + 'SHAREDLIBEXT=.so'#010+ + 'STATICLIBPREFIX=libp'#010+ + 'RSTEXT=.rst'#010+ + 'FPCMADE=fpcmade'#010+ + #010+ + #010+ + '# Go32v1'#010+ + 'ifeq ($(OS_TARGET),go32v1',')'#010+ + 'PPUEXT=.pp1'#010+ + 'OEXT=.o1'#010+ + 'ASMEXT=.s1'#010+ + 'SMARTEXT=.sl1'#010+ + 'STATICLIBEXT=.a1'#010+ + 'SHAREDLIBEXT=.so1'#010+ + 'STATICLIBPREFIX='#010+ + 'FPCMADE=fpcmade.v1'#010+ + 'PACKAGESUFFIX=v1'#010+ + 'endif'#010+ + #010+ + '# Go32v2'#010+ + 'ifeq ($(OS_TARGET),go32v2)'#010+ + 'STATICLIBPREFIX='#010+ + 'FPCMADE=fpcmade.dos'#010+ + 'ZIPSUFFIX=go32'#010+ + 'endif'#010+ + #010+ + '# ','Linux'#010+ + 'ifeq ($(OS_TARGET),linux)'#010+ + 'EXEEXT='#010+ + 'HASSHAREDLIB=1'#010+ + 'FPCMADE=fpcmade.lnx'#010+ + 'ZIPSUFFIX=linux'#010+ + 'endif'#010+ + #010+ + '# FreeBSD'#010+ + 'ifeq ($(OS_TARGET),freebsd)'#010+ + 'EXEEXT='#010+ + 'HASSHAREDLIB=1'#010+ + 'FPCMADE=fpcmade.freebsd'#010+ + 'ZIPSUFFIX=freebsd'#010+ + 'endif'#010+ + #010+ + '# NetBSD'#010+ + 'ifeq ($(OS_TARGET),netb','sd)'#010+ + 'EXEEXT='#010+ + 'HASSHAREDLIB=1'#010+ + 'FPCMADE=fpcmade.netbsd'#010+ + 'ZIPSUFFIX=netbsd'#010+ + 'endif'#010+ + #010+ + '# Win32'#010+ + 'ifeq ($(OS_TARGET),win32)'#010+ + 'PPUEXT=.ppw'#010+ + 'OEXT=.ow'#010+ + 'ASMEXT=.sw'#010+ + 'SMARTEXT=.slw'#010+ + 'STATICLIBEXT=.aw'#010+ + 'SHAREDLIBEXT=.dll'#010+ + 'FPCMADE=fpcmade.w32'#010+ + 'ZIPSUFFIX=w32'#010+ + 'endif'#010+ + #010+ + '# OS/2'#010+ + 'ife','q ($(OS_TARGET),os2)'#010+ + 'PPUEXT=.ppo'#010+ + 'ASMEXT=.so2'#010+ + 'OEXT=.oo2'#010+ + 'AOUTEXT=.out'#010+ + 'SMARTEXT=.so'#010+ + 'STATICLIBEXT=.ao2'#010+ + 'SHAREDLIBEXT=.dll'#010+ + 'FPCMADE=fpcmade.os2'#010+ + 'ZIPSUFFIX=emx'#010+ + 'endif'#010+ + #010+ + '# Amiga'#010+ + 'ifeq ($(OS_TARGET),amiga)'#010+ + 'EXEEXT='#010+ + 'PPUEXT=.ppa'#010+ + 'ASMEXT=.asm'#010+ + 'OEXT=.o'#010+ + 'SMARTEXT','=.sl'#010+ + 'STATICLIBEXT=.a'#010+ + 'SHAREDLIBEXT=.library'#010+ + 'FPCMADE=fpcmade.amg'#010+ + 'endif'#010+ + #010+ + '# Atari'#010+ + 'ifeq ($(OS_TARGET),atari)'#010+ + 'PPUEXT=.ppt'#010+ + 'ASMEXT=.s'#010+ + 'OEXT=.o'#010+ + 'SMARTEXT=.sl'#010+ + 'STATICLIBEXT=.a'#010+ + 'EXEEXT=.ttp'#010+ + 'FPCMADE=fpcmade.ata'#010+ + 'endif'#010+ + #010+ + '# BeOS'#010+ + 'ifeq ($(OS_TARGET),beos)'#010+ + 'PPUEXT','=.ppu'#010+ + 'ASMEXT=.s'#010+ + 'OEXT=.o'#010+ + 'SMARTEXT=.sl'#010+ + 'STATICLIBEXT=.a'#010+ + 'EXEEXT='#010+ + 'FPCMADE=fpcmade.be'#010+ + 'ZIPSUFFIX=be'#010+ + 'endif'#010+ + #010+ + '# Solaris'#010+ + 'ifeq ($(OS_TARGET),sunos)'#010+ + 'PPUEXT=.ppu'#010+ + 'ASMEXT=.s'#010+ + 'OEXT=.o'#010+ + 'SMARTEXT=.sl'#010+ + 'STATICLIBEXT=.a'#010+ + 'EXEEXT='#010+ + 'FPCMADE=fpcmade.sun'#010+ + 'ZIPSUFFIX=sun'#010+ + 'end','if'#010+ + #010+ + '# QNX'#010+ + 'ifeq ($(OS_TARGET),qnx)'#010+ + 'PPUEXT=.ppu'#010+ + 'ASMEXT=.s'#010+ + 'OEXT=.o'#010+ + 'SMARTEXT=.sl'#010+ + 'STATICLIBEXT=.a'#010+ + 'EXEEXT='#010+ + 'FPCMADE=fpcmade.qnx'#010+ + 'ZIPSUFFIX=qnx'#010+ + 'endif'#010+ #010+ #010+ '[defaulttools]'#010+ '#####################################################################'#010+ - '# Default Tools'#010+ - '###########','#########################################################'+ - '#'#010+ + '# Default To','ols'#010+ + '#####################################################################'#010+ #010+ '# assembler, redefine it if cross compiling'#010+ - 'ifndef AS'#010+ - 'AS=as'#010+ + 'ifndef ASPROG'#010+ + 'ifdef CROSSBINDIR'#010+ + 'ASPROG=$(CROSSBINDIR)/as$(SRCEXEEXT)'#010+ + 'else'#010+ + 'ASPROG=as'#010+ + 'endif'#010+ 'endif'#010+ #010+ - '# linker, but probably not used'#010+ - 'ifndef LD'#010+ - 'LD=ld'#010+ + '# linker, but probably n','ot used'#010+ + 'ifndef LDPROG'#010+ + 'ifdef CROSSBINDIR'#010+ + 'LDPROG=$(CROSSBINDIR)/ld$(SRCEXEEXT)'#010+ + 'else'#010+ + 'LDPROG=ld'#010+ + 'endif'#010+ 'endif'#010+ #010+ '# Resource compiler'#010+ - 'ifndef RC'#010+ - 'RC=rc'#010+ + 'ifndef RCPROG'#010+ + 'ifdef CROSSBINDIR'#010+ + 'RCPROG=$(CROSSBINDIR)/rc$(SRCEXEEXT)'#010+ + 'else'#010+ + 'RCPROG=rc'#010+ + 'endif'#010+ 'endif'#010+ #010+ - '# ppas.bat / pp','as.sh'#010+ + '# Override default','s'#010+ + 'AS=$(ASPROG)'#010+ + 'LD=$(LDPROG)'#010+ + 'RC=$(RCPROG)'#010+ + #010+ + '# ppas.bat / ppas.sh'#010+ 'PPAS=ppas$(BATCHEXT)'#010+ #010+ '# ldconfig to rebuild .so cache'#010+ @@ -300,7 +711,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'DATESTR='#010+ 'endif'#010+ #010+ - '# Look if UPX is found for go32v2 and win32. We can'#039't use $UP','X b'+ + '# Lo','ok if UPX is found for go32v2 and win32. We can'#039't use $UPX b'+ 'ecuase'#010+ '# upx uses that one itself (PFV)'#010+ 'ifndef UPXPROG'#010+ @@ -311,9 +722,9 @@ const fpcmakeini : array[0..130,1..240] of char=( 'UPXPROG:=1'#010+ 'endif'#010+ 'ifdef UPXPROG'#010+ - 'UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)'+ - ')))'#010+ - 'ifeq ($','(UPXPROG),)'#010+ + 'UPXPROG:=$(strip $(wildc','ard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPAT'+ + 'H))))'#010+ + 'ifeq ($(UPXPROG),)'#010+ 'UPXPROG='#010+ 'else'#010+ 'UPXPROG:=$(firstword $(UPXPROG))'#010+ @@ -330,368 +741,18 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ '# Tar options'#010+ 'ifeq ($(USETAR),bz2)'#010+ - 'TAROPT=vI'#010+ + 'TARO','PT=vI'#010+ 'TAREXT=.tar.bz2'#010+ 'else'#010+ 'TAROPT=vz'#010+ 'TAREXT=.tar.gz'#010+ - 'endif',#010+ - #010+ - #010+ - '[extensions]'#010+ - '#####################################################################'#010+ - '# Default extensions'#010+ - '#####################################################################'#010+ - #010+ - '# Default needed extensions (Go32v2,Linux)'#010+ - 'LOADEREXT=.as'#010+ - 'EXEEX','T=.exe'#010+ - 'PPLEXT=.ppl'#010+ - 'PPUEXT=.ppu'#010+ - 'OEXT=.o'#010+ - 'ASMEXT=.s'#010+ - 'SMARTEXT=.sl'#010+ - 'STATICLIBEXT=.a'#010+ - 'SHAREDLIBEXT=.so'#010+ - 'STATICLIBPREFIX=libp'#010+ - 'RSTEXT=.rst'#010+ - 'FPCMADE=fpcmade'#010+ - #010+ - #010+ - '# Go32v1'#010+ - 'ifeq ($(OS_TARGET),go32v1)'#010+ - 'PPUEXT=.pp1'#010+ - 'OEXT=.o1'#010+ - 'ASMEXT=.s1'#010+ - 'SMARTEXT=.sl1'#010+ - 'STATICLIBEXT','=.a1'#010+ - 'SHAREDLIBEXT=.so1'#010+ - 'STATICLIBPREFIX='#010+ - 'FPCMADE=fpcmade.v1'#010+ - 'PACKAGESUFFIX=v1'#010+ - 'endif'#010+ - #010+ - '# Go32v2'#010+ - 'ifeq ($(OS_TARGET),go32v2)'#010+ - 'STATICLIBPREFIX='#010+ - 'FPCMADE=fpcmade.dos'#010+ - 'ZIPSUFFIX=go32'#010+ - 'endif'#010+ - #010+ - '# Linux'#010+ - 'ifeq ($(OS_TARGET),linux)'#010+ - 'EXEEXT='#010+ - 'HASSHAREDLIB=1'#010+ - 'FPCMA','DE=fpcmade.lnx'#010+ - 'ZIPSUFFIX=linux'#010+ - 'endif'#010+ - #010+ - '# FreeBSD'#010+ - 'ifeq ($(OS_TARGET),freebsd)'#010+ - 'EXEEXT='#010+ - 'HASSHAREDLIB=1'#010+ - 'FPCMADE=fpcmade.freebsd'#010+ - 'ZIPSUFFIX=freebsd'#010+ - 'endif'#010+ - #010+ - '# NetBSD'#010+ - 'ifeq ($(OS_TARGET),netbsd)'#010+ - 'EXEEXT='#010+ - 'HASSHAREDLIB=1'#010+ - 'FPCMADE=fpcmade.netbsd'#010+ - 'ZIPSUFFIX=','netbsd'#010+ - 'endif'#010+ - #010+ - '# Win32'#010+ - 'ifeq ($(OS_TARGET),win32)'#010+ - 'PPUEXT=.ppw'#010+ - 'OEXT=.ow'#010+ - 'ASMEXT=.sw'#010+ - 'SMARTEXT=.slw'#010+ - 'STATICLIBEXT=.aw'#010+ - 'SHAREDLIBEXT=.dll'#010+ - 'FPCMADE=fpcmade.w32'#010+ - 'ZIPSUFFIX=w32'#010+ - 'endif'#010+ - #010+ - '# OS/2'#010+ - 'ifeq ($(OS_TARGET),os2)'#010+ - 'PPUEXT=.ppo'#010+ - 'ASMEXT=.so2'#010+ - 'OEXT=.oo2'#010+ - 'AOUTE','XT=.out'#010+ - 'SMARTEXT=.so'#010+ - 'STATICLIBEXT=.ao2'#010+ - 'SHAREDLIBEXT=.dll'#010+ - 'FPCMADE=fpcmade.os2'#010+ - 'ZIPSUFFIX=emx'#010+ - 'endif'#010+ - #010+ - '# Amiga'#010+ - 'ifeq ($(OS_TARGET),amiga)'#010+ - 'EXEEXT='#010+ - 'PPUEXT=.ppa'#010+ - 'ASMEXT=.asm'#010+ - 'OEXT=.o'#010+ - 'SMARTEXT=.sl'#010+ - 'STATICLIBEXT=.a'#010+ - 'SHAREDLIBEXT=.library'#010+ - 'FPCMADE=fpcmade.a','mg'#010+ - 'endif'#010+ - #010+ - '# Atari'#010+ - 'ifeq ($(OS_TARGET),atari)'#010+ - 'PPUEXT=.ppt'#010+ - 'ASMEXT=.s'#010+ - 'OEXT=.o'#010+ - 'SMARTEXT=.sl'#010+ - 'STATICLIBEXT=.a'#010+ - 'EXEEXT=.ttp'#010+ - 'FPCMADE=fpcmade.ata'#010+ - 'endif'#010+ - #010+ - '# BeOS'#010+ - 'ifeq ($(OS_TARGET),beos)'#010+ - 'PPUEXT=.ppu'#010+ - 'ASMEXT=.s'#010+ - 'OEXT=.o'#010+ - 'SMARTEXT=.sl'#010+ - 'STATICLIBEXT=.a'#010+ - 'EXEEXT=',#010+ - 'FPCMADE=fpcmade.be'#010+ - 'ZIPSUFFIX=be'#010+ - 'endif'#010+ - #010+ - '# Solaris'#010+ - 'ifeq ($(OS_TARGET),sunos)'#010+ - 'PPUEXT=.ppu'#010+ - 'ASMEXT=.s'#010+ - 'OEXT=.o'#010+ - 'SMARTEXT=.sl'#010+ - 'STATICLIBEXT=.a'#010+ - 'EXEEXT='#010+ - 'FPCMADE=fpcmade.sun'#010+ - 'ZIPSUFFIX=sun'#010+ - 'endif'#010+ - #010+ - '# QNX'#010+ - 'ifeq ($(OS_TARGET),qnx)'#010+ - 'PPUEXT=.ppu'#010+ - 'ASMEXT=.s'#010+ - 'OEXT','=.o'#010+ - 'SMARTEXT=.sl'#010+ - 'STATICLIBEXT=.a'#010+ - 'EXEEXT='#010+ - 'FPCMADE=fpcmade.qnx'#010+ - 'ZIPSUFFIX=qnx'#010+ - 'endif'#010+ - #010+ - #010+ - #010+ - '[defaultdirs]'#010+ - '#####################################################################'#010+ - '# Default Directories'#010+ - '##################################################','##################'+ - '#'#010+ - #010+ - '# Units dir'#010+ - 'ifdef REQUIRE_UNITSDIR'#010+ - 'override UNITSDIR+=$(REQUIRE_UNITSDIR)'#010+ - 'endif'#010+ - #010+ - '# Units dir'#010+ - 'ifdef REQUIRE_PACKAGESDIR'#010+ - 'override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)'#010+ - 'endif'#010+ - #010+ - #010+ - '# Linux, netbsd and freebsd use unix dirs with ','/usr/bin, /usr/lib'#010+ - '# When zipping use the target as default, when normal install then'#010+ - '# use the source os as default'#010+ - 'ifdef ZIPINSTALL'#010+ - '# Zipinstall'#010+ - 'ifeq ($(OS_TARGET),linux)'#010+ - 'UNIXINSTALLDIR=1'#010+ - 'endif'#010+ - 'ifeq ($(OS_TARGET),freebsd)'#010+ - 'UNIXINSTALLDIR=1',#010+ - 'endif'#010+ - 'ifeq ($(OS_TARGET),netbsd)'#010+ - 'UNIXINSTALLDIR=1'#010+ - 'endif'#010+ - 'else'#010+ - '# Normal install'#010+ - 'ifeq ($(OS_SOURCE),linux)'#010+ - 'UNIXINSTALLDIR=1'#010+ - 'endif'#010+ - 'ifeq ($(OS_SOURCE),freebsd)'#010+ - 'UNIXINSTALLDIR=1'#010+ - 'endif'#010+ - 'ifeq ($(OS_SOURCE),netbsd)'#010+ - 'UNIXINSTALLDIR=1'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# se','t the prefix directory where to install everything'#010+ - 'ifndef INSTALL_PREFIX'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'INSTALL_PREFIX=/usr/local'#010+ - 'else'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_BASEDIR:=/pp'#010+ - 'else'#010+ - 'INSTALL_BASEDIR:=/$(PACKAGE_NAME)'#010+ - 'endif'#010+ - 'endif'#010+ - 'endif'#010+ - 'export INSTA','LL_PREFIX'#010+ - #010+ - '# Where to place the resulting zip files'#010+ - 'ifndef DIST_DESTDIR'#010+ - 'DIST_DESTDIR:=$(BASEDIR)'#010+ - 'endif'#010+ - 'export DIST_DESTDIR'#010+ - #010+ - #010+ - '#####################################################################'#010+ - '# Install Directories'#010+ - '#######################','#############################################'+ - '#'#010+ - #010+ - '# set the base directory where to install everything'#010+ - 'ifndef INSTALL_BASEDIR'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)'#010+ - 'else'#010+ - 'INSTALL','_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)'#010+ - 'endif'#010+ - 'else'#010+ - 'INSTALL_BASEDIR:=$(INSTALL_PREFIX)'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# set the directory where to install the binaries'#010+ - 'ifndef INSTALL_BINDIR'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin'#010+ - 'el','se'#010+ - 'INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin'#010+ - '# for FPC packages install the binaries under their os target subdir'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)'#010+ - 'endif'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# set the directory where to install t','he units.'#010+ - 'ifndef INSTALL_UNITDIR'#010+ - 'INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'ifdef PACKAGE_NAME'#010+ - 'INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)'#010+ - 'endif'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# Where to install shared libraries'#010+ - 'i','fndef INSTALL_LIBDIR'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib'#010+ - 'else'#010+ - 'INSTALL_LIBDIR:=$(INSTALL_UNITDIR)'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# Where the source files will be stored'#010+ - 'ifndef INSTALL_SOURCEDIR'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'ifdef INSTALL_FPCPACK','AGE'#010+ - 'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_'+ - 'NAME)'#010+ - 'else'#010+ - 'INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VER'+ - 'SION)'#010+ - 'endif'#010+ - 'else'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/sourc','e/$(PACKAGE_NAME)'#010+ - 'else'#010+ - 'INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source'#010+ - 'endif'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# Where the doc files will be stored'#010+ - 'ifndef INSTALL_DOCDIR'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC','_VERSION)/$(PACKAGE_N'+ - 'AME)'#010+ - 'else'#010+ - 'INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSIO'+ - 'N)'#010+ - 'endif'#010+ - 'else'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)'#010+ - 'else'#010+ - 'INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc'#010+ - 'e','ndif'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# Where to install the examples, under linux we use the doc dir'#010+ - '# because the copytree command will create a subdir itself'#010+ - 'ifndef INSTALL_EXAMPLEDIR'#010+ - 'ifdef UNIXINSTALLDIR'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_EXAMPLEDIR:=$(INSTA','LL_PREFIX)/doc/fpc-$(FPC_VERSION)/example'+ - 's/$(PACKAGE_NAME)'#010+ - 'else'#010+ - 'INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VE'+ - 'RSION)'#010+ - 'endif'#010+ - 'else'#010+ - 'ifdef INSTALL_FPCPACKAGE'#010+ - 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)',#010+ - 'else'#010+ - 'INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples'#010+ - 'endif'#010+ - 'endif'#010+ - 'endif'#010+ - #010+ - '# Where the some extra (data)files will be stored'#010+ - 'ifndef INSTALL_DATADIR'#010+ - 'INSTALL_DATADIR=$(INSTALL_BASEDIR)'#010+ - 'endif'#010+ - #010+ - #010+ - '[dirlibc]'#010+ - '# On linux, try to find where libgcc.a is','.'#010+ - 'ifdef inUnix'#010+ - 'ifndef GCCLIBDIR'#010+ - 'GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '#039'{ print'+ - ' $$4 } '#039'`)'#010+ - 'endif'#010+ - 'ifeq ($(OS_TARGET),linux)'#010+ - 'ifndef OTHERLIBDIR'#010+ - 'OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '#039'{ ORS=" '+ - '"; print $1 }'#039,')'#010+ - 'endif'#010+ - 'endif'#010+ - 'ifeq ($(OS_TARGET),netbsd)'#010+ - 'OTHERLIBDIR+=/usr/pkg/lib'#010+ - 'endif'#010+ - 'export GCCLIBDIR OTHERLIB'#010+ 'endif'#010+ #010+ #010+ '[command_begin]'#010+ '#####################################################################'#010+ '# Compiler Command Line'#010+ - '#######################','#############################################'+ - '#'#010+ + '#####################################################################'#010, #010+ '# Load commandline OPTDEF and add FPC_CPU define, for compiling the'#010+ '# compiler this needs to be turned off'#010+ @@ -699,8 +760,8 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override FPCOPTDEF=$(CPU_TARGET)'#010+ 'endif'#010+ #010+ - '# Load commandline OPT and ad','d target and unit dir to be sure'#010+ - 'ifneq ($(OS_TARGET),$(OS_SOURCE))'#010+ + '# Load commandline OPT and add target and unit dir to be sure'#010+ + 'ifneq ($(OS_TA','RGET),$(OS_SOURCE))'#010+ 'override FPCOPT+=-T$(OS_TARGET)'#010+ 'endif'#010+ #010+ @@ -708,9 +769,9 @@ const fpcmakeini : array[0..130,1..240] of char=( 'ifdef UNITDIR'#010+ 'override FPCOPT+=$(addprefix -Fu,$(UNITDIR))'#010+ 'endif'#010+ - 'ifdef LIBDIR',#010+ + 'ifdef LIBDIR'#010+ 'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#010+ - 'endif'#010+ + 'en','dif'#010+ 'ifdef OBJDIR'#010+ 'override FPCOPT+=$(addprefix -Fo,$(OBJDIR))'#010+ 'endif'#010+ @@ -723,9 +784,9 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override FPCOPT+=-XX'#010+ 'endif'#010+ #010+ - '# S','martlinking creation'#010+ + '# Smartlinking creation'#010+ 'ifdef CREATESMART'#010+ - 'override FPCOPT+=-CX'#010+ + 'override',' FPCOPT+=-CX'#010+ 'endif'#010+ #010+ '# Debug'#010+ @@ -736,12 +797,12 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ '# Release mode (strip, optimize and don'#039't load ppc386.cfg)'#010+ 'ifdef RELEASE'#010+ - 'ifeq ($(CPU_TARGET),i386)'#010, + 'ifeq ($(CPU_TARGET),i386)'#010+ 'FPCCPUOPT:=-OG2p3'#010+ 'else'#010+ 'FPCCPUOPT:='#010+ 'endif'#010+ - 'override FPCOPT+=-Xs $(FPCCPUOPT) -n'#010+ + 'overri','de FPCOPT+=-Xs $(FPCCPUOPT) -n'#010+ 'override FPCOPTDEF+=RELEASE'#010+ 'endif'#010+ #010+ @@ -753,11 +814,11 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Optimizer (i386 only for now)'#010+ 'ifdef OPTIMIZE'#010+ 'ifeq ($(CPU_TARGET),i386)'#010+ - 'overri','de FPCOPT+=-OG2p3'#010+ + 'override FPCOPT+=-OG2p3'#010+ 'endif'#010+ 'endif'#010+ #010+ - '# Verbose settings (warning,note,info)'#010+ + '# Verbose settin','gs (warning,note,info)'#010+ 'ifdef VERBOSE'#010+ 'override FPCOPT+=-vwni'#010+ 'endif'#010+ @@ -767,23 +828,28 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override FPCOPT+=$(COMPILER_OPTIONS)'#010+ 'endif'#010+ 'ifdef COMPILER_UNITDIR'#010+ - 'override FP','COPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))'#010+ - 'endif'#010+ + 'override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))'#010+ + 'endi','f'#010+ 'ifdef COMPILER_LIBRARYDIR'#010+ 'override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))'#010+ 'endif'#010+ 'ifdef COMPILER_OBJECTDIR'#010+ 'override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))'#010+ 'endif'#010+ - 'ifdef COMPILER_','INCLUDEDIR'#010+ - 'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))'#010+ + 'ifdef COMPILER_INCLUDEDIR'#010+ + 'override FPCOPT+=$(addprefix -Fi,$(C','OMPILER_INCLUDEDIR))'#010+ + 'endif'#010+ + #010+ + '# Cross compiler utils'#010+ + 'ifdef CROSSBINDIR'#010+ + 'override FPCOPT+=-FD$(CROSSBINDIR)'#010+ 'endif'#010+ #010+ '# Target dirs and the prefix to use for clean/install'#010+ 'ifdef COMPILER_TARGETDIR'#010+ 'override FPCOPT+=-FE$(COMPILER_TARGETDIR)'#010+ - 'ifeq ($(COMPILER_TARGETDIR),.)'#010+ - 'override TARG','ETDIRPREFIX='#010+ + 'ifeq ($(','COMPILER_TARGETDIR),.)'#010+ + 'override TARGETDIRPREFIX='#010+ 'else'#010+ 'override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/'#010+ 'endif'#010+ @@ -792,9 +858,9 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Unit target dir'#010+ 'ifdef COMPILER_UNITTARGETDIR'#010+ 'override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)'#010+ - 'ifeq ($(COMPILER_UNITTARGETDIR),.)'#010+ + 'ifeq ($(COMPILER_UNITTARGETDIR),','.)'#010+ 'override UNITTARGETDIRPREFIX='#010+ - 'els','e'#010+ + 'else'#010+ 'override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/'#010+ 'endif'#010+ 'else'#010+ @@ -802,10 +868,10 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)'#010+ 'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)'#010+ 'endif'#010+ - 'endif'#010+ + 'en','dif'#010+ #010+ '[command_libc]'#010+ - '# Add GCC lib pa','th if asked'#010+ + '# Add GCC lib path if asked'#010+ 'ifdef GCCLIBDIR'#010+ 'override FPCOPT+=-Fl$(GCCLIBDIR)'#010+ 'endif'#010+ @@ -815,9 +881,9 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ #010+ '[command_end]'#010+ - '# Add commandline options last so they can override'#010+ + '# Add commandline options last so they can overr','ide'#010+ 'ifdef OPT'#010+ - 'override FPCOPT+=$(OPT',')'#010+ + 'override FPCOPT+=$(OPT)'#010+ 'endif'#010+ #010+ '# Add defines from FPCOPTDEF to FPCOPT'#010+ @@ -830,7 +896,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override FPCOPT+=@$(CFGFILE)'#010+ 'endif'#010+ #010+ - '# Use the environment to pass commandline',' options?'#010+ + '# Use',' the environment to pass commandline options?'#010+ 'ifdef USEENV'#010+ 'override FPCEXTCMD:=$(FPCOPT)'#010+ 'override FPCOPT:=!FPCEXTCMD'#010+ @@ -840,8 +906,8 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Compiler commandline'#010+ 'override COMPILER:=$(FPC) $(FPCOPT)'#010+ #010+ - '# also call ppas if with command option -s'#010+ - '# but only if the OS_SOURCE and ','OS_TARGET are equal'#010+ + '# also call ppas if with command option',' -s'#010+ + '# but only if the OS_SOURCE and OS_TARGET are equal'#010+ 'ifeq (,$(findstring -s ,$(COMPILER)))'#010+ 'EXECPPAS='#010+ 'else'#010+ @@ -852,19 +918,19 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ #010+ '[loaderrules]'#010+ - '#####################################################################'#010+ - '# Loaders'#010+ - '#######','#############################################################'+ + '###################################################','#################'+ '#'#010+ + '# Loaders'#010+ + '#####################################################################'#010+ #010+ '.PHONY: fpc_loaders'#010+ #010+ 'ifdef TARGET_LOADERS'#010+ 'override ALLTARGET+=fpc_loaders'#010+ 'override CLEANTARGET+=fpc_loaders_clean'#010+ - 'override INSTALLTARGET+=fpc_loaders_install'#010+ + 'override INSTALLTARGET+=fp','c_loaders_install'#010+ #010+ - 'override LOADEROF','ILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))'#010+ + 'override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))'#010+ 'endif'#010+ #010+ '%$(OEXT): %$(LOADEREXT)'#010+ @@ -875,17 +941,18 @@ const fpcmakeini : array[0..130,1..240] of char=( 'fpc_loaders_clean:'#010+ ' -$(DEL) $(LOADEROFILES)'#010+ #010+ - 'fpc_loaders_install:'#010+ - ' $(MKDIR) $(INSTALL_UNI','TDIR)'#010+ + 'fpc_loaders_ins','tall:'#010+ + ' $(MKDIR) $(INSTALL_UNITDIR)'#010+ ' $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+ #010+ #010+ '[unitrules]'#010+ '#####################################################################'#010+ '# Units'#010+ - '#####################################################################'#010+ + '####################################################','################'+ + '#'#010+ #010+ - '.PHONY: fpc_units',#010+ + '.PHONY: fpc_units'#010+ #010+ 'ifdef TARGET_UNITS'#010+ 'override ALLTARGET+=fpc_units'#010+ @@ -895,10 +962,10 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override CLEANPPUFILES+=$(UNITPPUFILES)'#010+ 'endif'#010+ #010+ - 'fpc_units: $(UNITPPUFILES)'#010+ + 'fp','c_units: $(UNITPPUFILES)'#010+ #010+ #010+ - '[exerules',']'#010+ + '[exerules]'#010+ '#####################################################################'#010+ '# Exes'#010+ '#####################################################################'#010+ @@ -906,13 +973,13 @@ const fpcmakeini : array[0..130,1..240] of char=( '.PHONY: fpc_exes'#010+ #010+ 'ifdef TARGET_PROGRAMS'#010+ - 'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_P','ROGRAMS))'#010+ + 'override EXEFI','LES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#010+ 'override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefi'+ 'x $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))'#010+ #010+ 'override ALLTARGET+=fpc_exes'#010+ - 'override INSTALLEXEFILES+=$(EXEFILES)'#010+ - 'override CLEANEXEFILES','+=$(EXEFILES) $(EXEOFILES)'#010+ + 'override INSTALLEXEFILES','+=$(EXEFILES)'#010+ + 'override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)'#010+ 'ifeq ($(OS_TARGET),os2)'#010+ 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+ 'endif'#010+ @@ -922,8 +989,9 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ #010+ '[rstrules]'#010+ - '#####################################################################'#010+ - '# Re','source strings'#010+ + '######################################','##############################'+ + '#'#010+ + '# Resource strings'#010+ '#####################################################################'#010+ #010+ 'ifdef TARGET_RSTS'#010+ @@ -931,11 +999,10 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ 'override CLEANRSTFILES+=$(RSTFILES)'#010+ 'endif'#010+ - #010+ + #010, #010+ '[examplerules]'#010+ - '####################','################################################'+ - '#'#010+ + '#####################################################################'#010+ '# Examples'#010+ '#####################################################################'#010+ #010+ @@ -943,11 +1010,11 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ 'ifdef TARGET_EXAMPLES'#010+ 'HASEXAMPLES=1'#010+ - 'override EXAMPLESOURCEFILES:=$(wildcard $(addsuffi','x .pp,$(TARGET_EXA'+ + 'override EXAMP','LESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXA'+ 'MPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)))'#010+ 'override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))'#010+ 'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addp'+ - 'refix $(STATICLIBPREFIX),$(addsuffix $(ST','ATICLIBEXT),$(TARGET_EXAMPL'+ + 'refix',' $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPL'+ 'ES)))'#010+ #010+ 'override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)'#010+ @@ -955,10 +1022,10 @@ const fpcmakeini : array[0..130,1..240] of char=( 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+ 'endif'#010+ 'endif'#010+ - 'ifdef TARGET_EXAMPLEDIRS'#010+ + 'ifdef TARG','ET_EXAMPLEDIRS'#010+ 'HASEXAMPLES=1'#010+ 'endif'#010+ - #010, + #010+ 'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIR'+ 'S))'#010+ #010+ @@ -966,7 +1033,7 @@ const fpcmakeini : array[0..130,1..240] of char=( '[compilerules]'#010+ '#####################################################################'#010+ '# General compile rules'#010+ - '#######################################################','#############'+ + '###################','#################################################'+ '#'#010+ #010+ '.PHONY: fpc_packages fpc_all fpc_smart fpc_debug'#010+ @@ -977,9 +1044,9 @@ const fpcmakeini : array[0..130,1..240] of char=( 'fpc_packages: $(COMPILEPACKAGES)'#010+ #010+ 'fpc_all: fpc_packages $(FPCMADE)'#010+ - #010+ + #010, 'fpc_smart:'#010+ - ' $(MAKE) all LINKS','MART=1 CREATESMART=1'#010+ + ' $(MAKE) all LINKSMART=1 CREATESMART=1'#010+ #010+ 'fpc_debug:'#010+ ' $(MAKE) all DEBUG=1'#010+ @@ -989,9 +1056,9 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ '.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp'#010+ #010+ - '%$(PPUEXT): %.pp'#010+ + '%$(PPUEXT): %.p','p'#010+ ' $(COMPILER) $<'#010+ - ' $(E','XECPPAS)'#010+ + ' $(EXECPPAS)'#010+ #010+ '%$(PPUEXT): %.pas'#010+ ' $(COMPILER) $<'#010+ @@ -1005,15 +1072,16 @@ const fpcmakeini : array[0..130,1..240] of char=( ' $(COMPILER) $<'#010+ ' $(EXECPPAS)'#010+ #010+ - '# Search paths for .ppu and .pp and .pas'#010+ - 'vpat','h %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ + '# Search ','paths for .ppu and .pp and .pas'#010+ + 'vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ 'vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ 'vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)'#010+ #010+ #010+ '[libraryrules]'#010+ - '#####################################################################'#010+ - '#',' Library'#010+ + '###################################','#################################'+ + '#'#010+ + '# Library'#010+ '#####################################################################'#010+ #010+ '.PHONY: fpc_shared'#010+ @@ -1022,11 +1090,11 @@ const fpcmakeini : array[0..130,1..240] of char=( 'ifdef LIB_VERSION'#010+ 'LIB_FULLNAME=$(LIB_NAME).$(LIB_VERSION)'#010+ 'else'#010+ - 'LIB_FULLNAME=$(LIB_NAME)'#010+ + 'LIB_FULLNAME=$(LIB_NA','ME)'#010+ 'endif'#010+ 'endif'#010+ #010+ - '# Default sharedlib',' units are all unit objects'#010+ + '# Default sharedlib units are all unit objects'#010+ 'ifndef LIB_SHAREDUNITS'#010+ 'LIB_SHAREDUNITS:=$(TARGET_UNITS)'#010+ 'endif'#010+ @@ -1035,8 +1103,8 @@ const fpcmakeini : array[0..130,1..240] of char=( 'ifdef HASSHAREDLIB'#010+ ' $(PPUMOVE) $(LIB_SHAREDUNITS) -o$(LIB_FULLNAME)'#010+ 'else'#010+ - ' @$(ECHO) Shared Libraries not supported'#010+ - 'endif',#010+ + ' @$(ECHO) ','Shared Libraries not supported'#010+ + 'endif'#010+ #010+ #010+ '[installrules]'#010+ @@ -1044,21 +1112,21 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Install rules'#010+ '#####################################################################'#010+ #010+ - '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall'#010+ + '.PHONY: fpc_install fpc_sourc','einstall fpc_exampleinstall'#010+ #010+ - 'ifdef I','NSTALL_UNITS'#010+ + 'ifdef INSTALL_UNITS'#010+ 'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#010+ 'endif'#010+ #010+ 'ifdef INSTALLPPUFILES'#010+ 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+ - 'LES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATI','CLIBEX'+ + 'LES)) $(addprefix $(STATIC','LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEX'+ 'T),$(INSTALLPPUFILES)))'#010+ 'override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALL'+ 'PPUFILES))'#010+ 'override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPR'+ - 'EFIX),$(INSTALLPPULINKFILES)))'#010+ - '# Implicitly install Package','.fpc'#010+ + 'EFIX),$(INSTALLPPULINKF','ILES)))'#010+ + '# Implicitly install Package.fpc'#010+ 'override INSTALL_CREATEPACKAGEFPC=1'#010+ 'endif'#010+ #010+ @@ -1068,8 +1136,8 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ #010+ 'fpc_install: all $(INSTALLTARGET)'#010+ - 'ifdef INSTALLEXEFILES'#010+ - ' $(MKDIR) $(INSTALL_BIN','DIR)'#010+ + 'ifdef INSTALLEXE','FILES'#010+ + ' $(MKDIR) $(INSTALL_BINDIR)'#010+ '# Compress the exes if upx is defined'#010+ 'ifdef UPXPROG'#010+ ' -$(UPXPROG) $(INSTALLEXEFILES)'#010+ @@ -1077,14 +1145,14 @@ const fpcmakeini : array[0..130,1..240] of char=( ' $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)'#010+ 'endif'#010+ 'ifdef INSTALL_CREATEPACKAGEFPC'#010+ - 'ifdef FPCMAKE'#010+ - '# If the fpcpackage variable',' is set then create and install Package.'+ - 'fpc,'#010+ + 'ifdef ','FPCMAKE'#010+ + '# If the fpcpackage variable is set then create and install Package.fp'+ + 'c,'#010+ '# a safety check is done if Makefile.fpc is available'#010+ 'ifdef PACKAGE_VERSION'#010+ 'ifneq ($(wildcard Makefile.fpc),)'#010+ - ' $(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc'#010+ - ' $(MKDIR) $(INSTALL_UNITDIR)',#010+ + ' $(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc',#010+ + ' $(MKDIR) $(INSTALL_UNITDIR)'#010+ ' $(INSTALL) Package.fpc $(INSTALL_UNITDIR)'#010+ 'endif'#010+ 'endif'#010+ @@ -1093,14 +1161,14 @@ const fpcmakeini : array[0..130,1..240] of char=( 'ifdef INSTALLPPUFILES'#010+ ' $(MKDIR) $(INSTALL_UNITDIR)'#010+ ' $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+ - 'ifneq ($(INSTALLPPULINKFILES),)'#010+ - ' $(INSTALL)',' $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+ + 'ifneq ($(INSTA','LLPPULINKFILES),)'#010+ + ' $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+ 'endif'#010+ 'ifneq ($(wildcard $(LIB_FULLNAME)),)'#010+ ' $(MKDIR) $(INSTALL_LIBDIR)'#010+ ' $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)'#010+ 'ifdef inUnix'#010+ - ' ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LI','B_NAME)'#010+ + ' ln -sf $(','LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ @@ -1110,26 +1178,26 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ #010+ 'fpc_sourceinstall: distclean'#010+ - ' $(MKDIR) $(INSTALL_SOURCEDIR)'#010+ - ' $(COPYTREE) $(BASEDIR',') $(INSTALL_SOURCEDIR)'#010+ + ' $(MKDIR) $(INSTALL_SOUR','CEDIR)'#010+ + ' $(COPYTREE) $(BASEDIR) $(INSTALL_SOURCEDIR)'#010+ #010+ 'fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))'#010+ 'ifdef HASEXAMPLES'#010+ ' $(MKDIR) $(INSTALL_EXAMPLEDIR)'#010+ 'endif'#010+ 'ifdef EXAMPLESOURCEFILES'#010+ - ' $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)'#010+ - 'en','dif'#010+ + ' $(COPY) $(EXAMPLES','OURCEFILES) $(INSTALL_EXAMPLEDIR)'#010+ + 'endif'#010+ 'ifdef TARGET_EXAMPLEDIRS'#010+ ' $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EX'+ 'AMPLEDIR)'#010+ 'endif'#010+ #010+ '[distinstallrules]'#010+ - '#####################################################################'#010+ + '#####################################################################', + #010+ '# Dist Install'#010+ - '####################','################################################'+ - '#'#010+ + '#####################################################################'#010+ #010+ '.PHONY: fpc_distinstall'#010+ #010+ @@ -1137,16 +1205,16 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ #010+ '[zipinstallrules]'#010+ - '#####################################################################'#010+ + '####################################################################','#'+ + #010+ '# Zip'#010+ - '############################','########################################'+ - '#'#010+ + '#####################################################################'#010+ #010+ '.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall'#010+ #010+ '# Temporary path to pack a file, can only use a single deep'#010+ - '# subdir, because the deltree can'#039't see the whole tree to remove'#010+ - 'ifnde','f PACKDIR'#010+ + '# subdir, because the deltree can'#039,'t see the whole tree to remove'#010+ + 'ifndef PACKDIR'#010+ 'ifndef inUnix'#010+ 'PACKDIR=$(BASEDIR)/../fpc-pack'#010+ 'else'#010+ @@ -1158,8 +1226,8 @@ const fpcmakeini : array[0..130,1..240] of char=( 'ifndef ZIPNAME'#010+ 'ifdef DIST_ZIPNAME'#010+ 'ZIPNAME=$(DIST_ZIPNAME)'#010+ - 'else'#010+ - 'ZIPNAME=$(ZIPPREFIX)$(PACKAGE_NAME',')$(ZIPSUFFIX)'#010+ + 'els','e'#010+ + 'ZIPNAME=$(ZIPPREFIX)$(PACKAGE_NAME)$(ZIPSUFFIX)'#010+ 'endif'#010+ 'endif'#010+ #010+ @@ -1175,11 +1243,11 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Use tar by default under linux'#010+ 'ifndef USEZIP'#010+ 'ifdef inUnix'#010+ - 'USETAR=1'#010+ + 'USETAR','=1'#010+ 'endif'#010+ 'endif'#010+ #010+ - '# Use a wrapper scri','pt by default for Os/2'#010+ + '# Use a wrapper script by default for Os/2'#010+ 'ifndef inUnix'#010+ 'USEZIPWRAPPER=1'#010+ 'endif'#010+ @@ -1188,7 +1256,7 @@ const fpcmakeini : array[0..130,1..240] of char=( '# the path separator'#010+ 'ifdef USEZIPWRAPPER'#010+ 'ZIPPATHSEP=$(PATHSEP)'#010+ - 'ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(BATCHEXT','))'#010+ + 'ZIPWRAPPER=$(subst /,$(PATHS','EP),$(DIST_DESTDIR)/fpczip$(BATCHEXT))'#010+ 'else'#010+ 'ZIPPATHSEP=/'#010+ 'endif'#010+ @@ -1197,7 +1265,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))'#010+ 'ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#010+ 'ifdef USETAR'#010+ - 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(TAREX','T)'#010+ + 'ZIPDESTFIL','E:=$(DIST_DESTDIR)/$(ZIPNAME)$(TAREXT)'#010+ 'ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *'#010+ 'else'#010+ 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(ZIPEXT)'#010+ @@ -1205,22 +1273,22 @@ const fpcmakeini : array[0..130,1..240] of char=( 'TFILE) *'#010+ 'endif'#010+ #010+ - 'fpc_zipinstall:'#010+ - ' $(MAKE) $(ZIPTARGET) ','INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1'#010+ + 'fpc_zipin','stall:'#010+ + ' $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1'#010+ ' $(MKDIR) $(DIST_DESTDIR)'#010+ ' $(DEL) $(ZIPDESTFILE)'#010+ 'ifdef USEZIPWRAPPER'#010+ '# Handle gecho separate as we need to espace \ with \\'#010+ 'ifneq ($(ECHOREDIR),echo)'#010+ - ' $(ECHOREDIR) -e "$(subst \,\\',',$(ZIPCMD_CDPACK))" > $(ZIPWRAP'+ + ' ',' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAP'+ 'PER)'#010+ ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)'+ #010+ ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPP'+ 'ER)'#010+ 'else'#010+ - ' echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)'#010+ - ' ','echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#010+ + ' echo $(ZIP','CMD_CDPACK) > $(ZIPWRAPPER)'#010+ + ' echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#010+ ' echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+ 'endif'#010+ 'ifdef inUnix'#010+ @@ -1230,7 +1298,7 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ ' $(DEL) $(ZIPWRAPPER)'#010+ 'else'#010+ - ' $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ','; $(ZIPCMD_CDBASE)'#010+ + ' ',' $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+ 'endif'#010+ ' $(DELTREE) $(PACKDIR)'#010+ #010+ @@ -1239,7 +1307,7 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ 'fpc_zipexampleinstall:'#010+ 'ifdef HASEXAMPLES'#010+ - ' $(MAKE) fpc_zipinstall ZIPTARGET=exampleins','tall ZIPSUFFIX=ex'+ + ' $(MAKE)',' fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=ex'+ 'm'#010+ 'endif'#010+ #010+ @@ -1250,7 +1318,7 @@ const fpcmakeini : array[0..130,1..240] of char=( '[cleanrules]'#010+ '#####################################################################'#010+ '# Clean rules'#010+ - '##########################################','##########################'+ + '######','##############################################################'+ '#'#010+ #010+ '.PHONY: fpc_clean fpc_cleanall fpc_distclean'#010+ @@ -1261,14 +1329,14 @@ const fpcmakeini : array[0..130,1..240] of char=( 'endif'#010+ #010+ 'ifdef CLEAN_UNITS'#010+ - 'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEA','N_UNITS))'#010+ + 'override CLEANPP','UFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#010+ 'endif'#010+ #010+ 'ifdef CLEANPPUFILES'#010+ 'override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)'+ ') $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(C'+ 'LEANPPUFILES)))'#010+ - 'override CLEANPPUFILES:=$(addprefix $(UNITTARGE','TDIRPREFIX),$(CLEANPP'+ + 'override CL','EANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPP'+ 'UFILES))'#010+ 'override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREF'+ 'IX),$(CLEANPPULINKFILES)))'#010+ @@ -1276,19 +1344,19 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ 'fpc_clean: $(CLEANTARGET)'#010+ 'ifdef CLEANEXEFILES'#010+ - ' -$(DEL) $(CLEANEXEFILES)'#010+ + ' -$(DEL) $(CLEANE','XEFILES)'#010+ 'endif'#010+ 'ifdef CLEANPPUFILES'#010+ - ' ',' -$(DEL) $(CLEANPPUFILES)'#010+ + ' -$(DEL) $(CLEANPPUFILES)'#010+ 'endif'#010+ 'ifneq ($(CLEANPPULINKFILES),)'#010+ ' -$(DEL) $(CLEANPPULINKFILES)'#010+ 'endif'#010+ 'ifdef CLEANRSTFILES'#010+ ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+ - 'endif'#010+ + 'endi','f'#010+ 'ifdef CLEAN_FILES'#010+ - ' -$(DEL) ','$(CLEAN_FILES)'#010+ + ' -$(DEL) $(CLEAN_FILES)'#010+ 'endif'#010+ 'ifdef LIB_NAME'#010+ ' -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+ @@ -1298,23 +1366,23 @@ const fpcmakeini : array[0..130,1..240] of char=( #010+ 'fpc_distclean: clean'#010+ #010+ - '# Also run clean first if targetdir i','s set. Unittargetdir is always'#010+ + '#',' Also run clean first if targetdir is set. Unittargetdir is always'#010+ '# set if targetdir or unittargetdir is specified'#010+ 'ifdef COMPILER_UNITTARGETDIR'#010+ 'TARGETDIRCLEAN=fpc_clean'#010+ 'endif'#010+ #010+ 'fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)'#010+ - 'ifdef CLEANEXEFILES'#010+ - ' -$(DEL) $(CLEANEXEFILES)',#010+ + 'ifdef CLEANEXEFI','LES'#010+ + ' -$(DEL) $(CLEANEXEFILES)'#010+ 'endif'#010+ ' -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIB'+ 'EXT) *$(SHAREDLIBEXT) *$(PPLEXT)'#010+ ' -$(DELTREE) *$(SMARTEXT)'#010+ - ' -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)'+ - #010+ + ' -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(R','EDIRFIL'+ + 'E)'#010+ 'ifdef AOUTEXT'#010+ - ' -$(D','EL) *$(AOUTEXT)'#010+ + ' -$(DEL) *$(AOUTEXT)'#010+ 'endif'#010+ #010+ #010+ @@ -1323,91 +1391,93 @@ const fpcmakeini : array[0..130,1..240] of char=( '# Info rules'#010+ '#####################################################################'#010+ #010+ - '.PHONY: fpc_info'#010+ + '.PHONY: fpc_in','fo'#010+ #010+ 'fpc_info:'#010+ ' @$(ECHO)'#010+ - ' ',' @$(ECHO) == Package info =='#010+ + ' @$(ECHO) == Package info =='#010+ ' @$(ECHO) Package Name..... $(PACKAGE_NAME)'#010+ ' @$(ECHO) Package Version.. $(PACKAGE_VERSION)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Configuration info =='#010+ - ' @$(ECHO)'#010+ - ' @$(ECHO) FPC...','....... $(FPC)'#010+ + ' ',' @$(ECHO)'#010+ + ' @$(ECHO) FPC.......... $(FPC)'#010+ ' @$(ECHO) FPC Version.. $(FPC_VERSION)'#010+ ' @$(ECHO) Source CPU... $(CPU_SOURCE)'#010+ ' @$(ECHO) Target CPU... $(CPU_TARGET)'#010+ ' @$(ECHO) Source OS.... $(OS_SOURCE)'#010+ - ' @$(ECHO) Target OS.... $(OS_TARG','ET)'#010+ + ' ',' @$(ECHO) Target OS.... $(OS_TARGET)'#010+ + ' @$(ECHO) Full Target.. $(FULL_SOURCE)'#010+ + ' @$(ECHO) Full Source.. $(FULL_TARGET)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Directory info =='#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Basedir......... $(BASEDIR)'#010+ + ' @$(ECHO) Basedir........','. $(BASEDIR)'#010+ ' @$(ECHO) FPCDir.......... $(FPCDIR)'#010+ + ' @$(ECHO) CrossBinDir..... $(CROSSBINDIR)'#010+ ' @$(ECHO) UnitsDir........ $(UNITSDIR)'#010+ - ' @$(ECHO) Package','sDir..... $(PACKAGESDIR)'#010+ + ' @$(ECHO) PackagesDir..... $(PACKAGESDIR)'#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) GCC library..... $(GCCLIBDIR)'#010+ + ' @$(ECHO) ','GCC library..... $(GCCLIBDIR)'#010+ ' @$(ECHO) Other library... $(OTHERLIBDIR)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Tools info =='#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Pwd....... $(','PWD)'#010+ + ' @$(ECHO) Pwd....... $(PWD)'#010+ ' @$(ECHO) Mv........ $(MVPROG)'#010+ - ' @$(ECHO) Cp........ $(CPPROG)'#010+ + ' @$(ECHO)',' Cp........ $(CPPROG)'#010+ ' @$(ECHO) Rm........ $(RMPROG)'#010+ ' @$(ECHO) GInstall.. $(GINSTALL)'#010+ ' @$(ECHO) Echo...... $(ECHO)'#010+ ' @$(ECHO) Date...... $(DATE)'#010+ - ' ',' @$(ECHO) FPCMake... $(FPCMAKE)'#010+ - ' @$(ECHO) PPUMove... $(PPUMOVE)'#010+ + ' @$(ECHO) FPCMake... $(FPCMAKE)'#010+ + ' @$(ECHO) PPUMo','ve... $(PPUMOVE)'#010+ ' @$(ECHO) Upx....... $(UPXPROG)'#010+ ' @$(ECHO) Zip....... $(ZIPPROG)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Object info =='#010+ ' @$(ECHO)'#010+ - ' @$(EC','HO) Target Loaders...... $(TARGET_LOADERS)'#010+ - ' @$(ECHO) Target Units........ $(TARGET_UNITS)'#010+ + ' @$(ECHO) Target Loaders...... $(TARGET_LOADERS)'#010+ + ' @$(ECHO)',' Target Units........ $(TARGET_UNITS)'#010+ ' @$(ECHO) Target Programs..... $(TARGET_PROGRAMS)'#010+ ' @$(ECHO) Target Dirs......... $(TARGET_DIRS)'#010+ - ' @$(ECHO) Target Exam','ples..... $(TARGET_EXAMPLES)'#010+ - ' @$(ECHO) Target ExampleDirs.. $(TARGET_EXAMPLEDIRS)'#010+ + ' @$(ECHO) Target Examples..... $(TARGET_EXAMPLES)'#010+ + ' @$(ECHO) Target Exampl','eDirs.. $(TARGET_EXAMPLEDIRS)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) Clean Units......... $(CLEAN_UNITS)'#010+ ' @$(ECHO) Clean Files......... $(CLEAN_FILES)'#010+ ' @$(ECHO)'#010+ - ' ','@$(ECHO) Install Units....... $(INSTALL_UNITS)'#010+ - ' @$(ECHO) Install Files....... $(INSTALL_FILES)'#010+ + ' @$(ECHO) Install Units....... $(INSTALL_UNITS)'#010+ + ' @$(E','CHO) Install Files....... $(INSTALL_FILES)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Install info =='#010+ ' @$(ECHO)'#010+ ' @$(ECHO) DateStr.............. $(DATESTR)'#010+ - ' @$(ECH','O) ZipPrefix............ $(ZIPPREFIX)'#010+ - ' @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)'#010+ + ' @$(ECHO) ZipPrefix............ $(ZIPPREFIX)'#010+ + ' @$(ECHO) Zip','Suffix............ $(ZIPSUFFIX)'#010+ ' @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)'#010+ - ' @$','(ECHO) Install binary dir... $(INSTALL_BINDIR)'#010+ - ' @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)'#010+ + ' @$(ECHO) Install binary dir... $(INSTALL_BINDIR)'#010+ + ' @$(E','CHO) Install library dir.. $(INSTALL_LIBDIR)'#010+ ' @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)'#010+ ' @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)'#010+ - ' @$(ECH','O) Install doc dir...... $(INSTALL_DOCDIR)'#010+ - ' @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)'#010+ + ' @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)'#010+ + ' @$(ECHO)',' Install example dir.. $(INSTALL_EXAMPLEDIR)'#010+ ' @$(ECHO) Install data dir..... $(INSTALL_DATADIR)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) Dist destination dir. $(DIST_DESTDIR)'#010+ - ' ',' @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)'#010+ - ' @$(ECHO)'#010+ + ' @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)'#010+ + ' ',' @$(ECHO)'#010+ #010+ '[localmakefile]'#010+ '#####################################################################'#010+ '# Local Makefile'#010+ - '#################################################################','###'+ - '#'#010+ + '#####################################################################'#010+ #010+ 'ifneq ($(wildcard fpcmake.loc),)'#010+ 'include fpcmake.loc'#010+ - 'endif'#010+ + 'e','ndif'#010+ #010+ '[userrules]'#010+ '#####################################################################'#010+ diff --git a/utils/fpcm/fpcmake.ini b/utils/fpcm/fpcmake.ini index a40258dd84..5e0f9bcebd 100644 --- a/utils/fpcm/fpcmake.ini +++ b/utils/fpcm/fpcmake.ini @@ -94,7 +94,7 @@ endif [fpcdetect] ##################################################################### -# FPC version/target Detection +# FPC Binary and Version Detection ##################################################################### # Compatibility with old makefiles @@ -119,6 +119,17 @@ endif override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) +# FPC version +ifndef FPC_VERSION +FPC_VERSION:=$(shell $(FPC) -iV) +endif + +export FPC FPC_VERSION + +##################################################################### +# FPC Target Detection +##################################################################### + # Target CPU ifndef CPU_TARGET CPU_TARGET:=$(shell $(FPC) -iTP) @@ -139,12 +150,15 @@ ifndef OS_SOURCE OS_SOURCE:=$(shell $(FPC) -iSO) endif -# FPC version -ifndef FPC_VERSION -FPC_VERSION:=$(shell $(FPC) -iV) +# Full name of the target, including CPU and OS +FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) + +ifneq ($(FULL_TARGET),$(FULL_SOURCE)) +CROSSCOMPILE=1 endif -export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION +export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE [fpcdircheckenv] @@ -183,8 +197,15 @@ endif endif endif -# Units dir +# Units dir, when cross compiling try first the +ifdef CROSSCOMPILE +UNITSDIR:=$(wildcard $(FPCDIR)/cross/$(FULL_TARGET)/units) +ifeq ($(UNITSDIR),) UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif +else +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif # Packages dir PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages) @@ -251,75 +272,215 @@ endif export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR -[defaulttools] +[defaultdirs] ##################################################################### -# Default Tools +# Default Directories ##################################################################### -# assembler, redefine it if cross compiling -ifndef AS -AS=as +# Units dir +ifdef REQUIRE_UNITSDIR +override UNITSDIR+=$(REQUIRE_UNITSDIR) endif -# linker, but probably not used -ifndef LD -LD=ld +# Units dir +ifdef REQUIRE_PACKAGESDIR +override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) endif -# Resource compiler -ifndef RC -RC=rc + +# Linux, netbsd and freebsd use unix dirs with /usr/bin, /usr/lib +# When zipping use the target as default, when normal install then +# use the source os as default +ifdef ZIPINSTALL +# Zipinstall +ifeq ($(OS_TARGET),linux) +UNIXINSTALLDIR=1 +endif +ifeq ($(OS_TARGET),freebsd) +UNIXINSTALLDIR=1 +endif +ifeq ($(OS_TARGET),netbsd) +UNIXINSTALLDIR=1 +endif +else +# Normal install +ifeq ($(OS_SOURCE),linux) +UNIXINSTALLDIR=1 +endif +ifeq ($(OS_SOURCE),freebsd) +UNIXINSTALLDIR=1 +endif +ifeq ($(OS_SOURCE),netbsd) +UNIXINSTALLDIR=1 +endif endif -# ppas.bat / ppas.sh -PPAS=ppas$(BATCHEXT) +# set the prefix directory where to install everything +ifndef INSTALL_PREFIX +ifdef UNIXINSTALLDIR +INSTALL_PREFIX=/usr/local +else +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=/pp +else +INSTALL_BASEDIR:=/$(PACKAGE_NAME) +endif +endif +endif +export INSTALL_PREFIX -# ldconfig to rebuild .so cache +# Where to place the resulting zip files +ifndef DIST_DESTDIR +DIST_DESTDIR:=$(BASEDIR) +endif +export DIST_DESTDIR + + +##################################################################### +# Install Directories +##################################################################### + +# set the base directory where to install everything +ifndef INSTALL_BASEDIR +ifdef UNIXINSTALLDIR +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) +endif +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX) +endif +endif + +# set the directory where to install the binaries +ifndef INSTALL_BINDIR +ifdef UNIXINSTALLDIR +INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +else +INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin +# for FPC packages install the binaries under their os target subdir +ifdef INSTALL_FPCPACKAGE +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET) +endif +endif +endif + +# set the directory where to install the units. +ifndef INSTALL_UNITDIR +# If cross compiling install in the cross compile directory +ifdef CROSSCOMPILE +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/units +else +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET) +endif +ifdef INSTALL_FPCPACKAGE +ifdef PACKAGE_NAME +INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) +endif +endif +endif + +# Where to install shared libraries +ifndef INSTALL_LIBDIR +ifdef UNIXINSTALLDIR +INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib +else +INSTALL_LIBDIR:=$(INSTALL_UNITDIR) +endif +endif + +# Where the source files will be stored +ifndef INSTALL_SOURCEDIR +ifdef UNIXINSTALLDIR +ifdef INSTALL_FPCPACKAGE +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source +endif +endif +endif + +# Where the doc files will be stored +ifndef INSTALL_DOCDIR +ifdef UNIXINSTALLDIR +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc +endif +endif +endif + +# Where to install the examples, under linux we use the doc dir +# because the copytree command will create a subdir itself +ifndef INSTALL_EXAMPLEDIR +ifdef UNIXINSTALLDIR +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples +endif +endif +endif + +# Where the some extra (data)files will be stored +ifndef INSTALL_DATADIR +INSTALL_DATADIR=$(INSTALL_BASEDIR) +endif + +##################################################################### +# Cross compile dirs +##################################################################### + +ifdef CROSSCOMPILE +# Directory where the cross compile tools are stored. +# First check if they are available in FPCDIR. If no targets/ subdir +# is found use the targets/ subdir in INSTALL_BASEDIR. +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(FPCDIR)/cross/$(FULL_TARGET)/bin/$(FULL_SOURCE)) +ifeq ($(CROSSBINDIR),) +CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin/$(FULL_SOURCE)) +endif +endif +else +CROSSBINDIR= +endif + + +[dirlibc] +# On linux, try to find where libgcc.a is. ifdef inUnix -LDCONFIG=ldconfig -else -LDCONFIG= +ifndef GCCLIBDIR +GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`) endif - -ifdef DATE -DATESTR:=$(shell $(DATE) +%Y%m%d) -else -DATESTR= -endif - -# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase -# upx uses that one itself (PFV) -ifndef UPXPROG -ifeq ($(OS_TARGET),go32v2) -UPXPROG:=1 -endif -ifeq ($(OS_TARGET),win32) -UPXPROG:=1 -endif -ifdef UPXPROG -UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) -ifeq ($(UPXPROG),) -UPXPROG= -else -UPXPROG:=$(firstword $(UPXPROG)) -endif -else -UPXPROG= +ifeq ($(OS_TARGET),linux) +ifndef OTHERLIBDIR +OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') endif endif -export UPXPROG - -# Zip options -ZIPOPT=-9 -ZIPEXT=.zip - -# Tar options -ifeq ($(USETAR),bz2) -TAROPT=vI -TAREXT=.tar.bz2 -else -TAROPT=vz -TAREXT=.tar.gz +ifeq ($(OS_TARGET),netbsd) +OTHERLIBDIR+=/usr/pkg/lib +endif +export GCCLIBDIR OTHERLIB endif @@ -472,193 +633,92 @@ ZIPSUFFIX=qnx endif - -[defaultdirs] +[defaulttools] ##################################################################### -# Default Directories +# Default Tools ##################################################################### -# Units dir -ifdef REQUIRE_UNITSDIR -override UNITSDIR+=$(REQUIRE_UNITSDIR) -endif - -# Units dir -ifdef REQUIRE_PACKAGESDIR -override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) -endif - - -# Linux, netbsd and freebsd use unix dirs with /usr/bin, /usr/lib -# When zipping use the target as default, when normal install then -# use the source os as default -ifdef ZIPINSTALL -# Zipinstall -ifeq ($(OS_TARGET),linux) -UNIXINSTALLDIR=1 -endif -ifeq ($(OS_TARGET),freebsd) -UNIXINSTALLDIR=1 -endif -ifeq ($(OS_TARGET),netbsd) -UNIXINSTALLDIR=1 -endif +# assembler, redefine it if cross compiling +ifndef ASPROG +ifdef CROSSBINDIR +ASPROG=$(CROSSBINDIR)/as$(SRCEXEEXT) else -# Normal install -ifeq ($(OS_SOURCE),linux) -UNIXINSTALLDIR=1 -endif -ifeq ($(OS_SOURCE),freebsd) -UNIXINSTALLDIR=1 -endif -ifeq ($(OS_SOURCE),netbsd) -UNIXINSTALLDIR=1 +ASPROG=as endif endif -# set the prefix directory where to install everything -ifndef INSTALL_PREFIX -ifdef UNIXINSTALLDIR -INSTALL_PREFIX=/usr/local +# linker, but probably not used +ifndef LDPROG +ifdef CROSSBINDIR +LDPROG=$(CROSSBINDIR)/ld$(SRCEXEEXT) else -ifdef INSTALL_FPCPACKAGE -INSTALL_BASEDIR:=/pp -else -INSTALL_BASEDIR:=/$(PACKAGE_NAME) -endif -endif -endif -export INSTALL_PREFIX - -# Where to place the resulting zip files -ifndef DIST_DESTDIR -DIST_DESTDIR:=$(BASEDIR) -endif -export DIST_DESTDIR - - -##################################################################### -# Install Directories -##################################################################### - -# set the base directory where to install everything -ifndef INSTALL_BASEDIR -ifdef UNIXINSTALLDIR -ifdef INSTALL_FPCPACKAGE -INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) -else -INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) -endif -else -INSTALL_BASEDIR:=$(INSTALL_PREFIX) +LDPROG=ld endif endif -# set the directory where to install the binaries -ifndef INSTALL_BINDIR -ifdef UNIXINSTALLDIR -INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +# Resource compiler +ifndef RCPROG +ifdef CROSSBINDIR +RCPROG=$(CROSSBINDIR)/rc$(SRCEXEEXT) else -INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin -# for FPC packages install the binaries under their os target subdir -ifdef INSTALL_FPCPACKAGE -INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET) -endif +RCPROG=rc endif endif -# set the directory where to install the units. -ifndef INSTALL_UNITDIR -INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET) -ifdef INSTALL_FPCPACKAGE -ifdef PACKAGE_NAME -INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) -endif -endif -endif +# Override defaults +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) -# Where to install shared libraries -ifndef INSTALL_LIBDIR -ifdef UNIXINSTALLDIR -INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib -else -INSTALL_LIBDIR:=$(INSTALL_UNITDIR) -endif -endif +# ppas.bat / ppas.sh +PPAS=ppas$(BATCHEXT) -# Where the source files will be stored -ifndef INSTALL_SOURCEDIR -ifdef UNIXINSTALLDIR -ifdef INSTALL_FPCPACKAGE -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) -else -INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif -else -ifdef INSTALL_FPCPACKAGE -INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) -else -INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source -endif -endif -endif - -# Where the doc files will be stored -ifndef INSTALL_DOCDIR -ifdef UNIXINSTALLDIR -ifdef INSTALL_FPCPACKAGE -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) -else -INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif -else -ifdef INSTALL_FPCPACKAGE -INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) -else -INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc -endif -endif -endif - -# Where to install the examples, under linux we use the doc dir -# because the copytree command will create a subdir itself -ifndef INSTALL_EXAMPLEDIR -ifdef UNIXINSTALLDIR -ifdef INSTALL_FPCPACKAGE -INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) -else -INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) -endif -else -ifdef INSTALL_FPCPACKAGE -INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) -else -INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples -endif -endif -endif - -# Where the some extra (data)files will be stored -ifndef INSTALL_DATADIR -INSTALL_DATADIR=$(INSTALL_BASEDIR) -endif - - -[dirlibc] -# On linux, try to find where libgcc.a is. +# ldconfig to rebuild .so cache ifdef inUnix -ifndef GCCLIBDIR -GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`) +LDCONFIG=ldconfig +else +LDCONFIG= endif -ifeq ($(OS_TARGET),linux) -ifndef OTHERLIBDIR -OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') + +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif + +# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase +# upx uses that one itself (PFV) +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= endif endif -ifeq ($(OS_TARGET),netbsd) -OTHERLIBDIR+=/usr/pkg/lib -endif -export GCCLIBDIR OTHERLIB +export UPXPROG + +# Zip options +ZIPOPT=-9 +ZIPEXT=.zip + +# Tar options +ifeq ($(USETAR),bz2) +TAROPT=vI +TAREXT=.tar.bz2 +else +TAROPT=vz +TAREXT=.tar.gz endif @@ -753,6 +813,11 @@ ifdef COMPILER_INCLUDEDIR override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) endif +# Cross compiler utils +ifdef CROSSBINDIR +override FPCOPT+=-FD$(CROSSBINDIR) +endif + # Target dirs and the prefix to use for clean/install ifdef COMPILER_TARGETDIR override FPCOPT+=-FE$(COMPILER_TARGETDIR) @@ -1281,11 +1346,14 @@ fpc_info: @$(ECHO) Target CPU... $(CPU_TARGET) @$(ECHO) Source OS.... $(OS_SOURCE) @$(ECHO) Target OS.... $(OS_TARGET) + @$(ECHO) Full Target.. $(FULL_SOURCE) + @$(ECHO) Full Source.. $(FULL_TARGET) @$(ECHO) @$(ECHO) == Directory info == @$(ECHO) @$(ECHO) Basedir......... $(BASEDIR) @$(ECHO) FPCDir.......... $(FPCDIR) + @$(ECHO) CrossBinDir..... $(CROSSBINDIR) @$(ECHO) UnitsDir........ $(UNITSDIR) @$(ECHO) PackagesDir..... $(PACKAGESDIR) @$(ECHO) diff --git a/utils/fpcm/fpcmmain.pp b/utils/fpcm/fpcmmain.pp index 99072ddd90..ffa452b95f 100644 --- a/utils/fpcm/fpcmmain.pp +++ b/utils/fpcm/fpcmmain.pp @@ -524,6 +524,7 @@ implementation CurrSec : TFPCMakeSection; begin try + CurrSec:=nil; SLInput:=TStringList.Create; if assigned(FStream) then SLInput.LoadFromStream(FStream) @@ -543,7 +544,7 @@ implementation begin j:=pos(']',s); if j=0 then - raise Exception.Create(Format(s_err_section_start,[FFileName,i])); + raise Exception.Create(Format(s_err_section_start,[FFileName,i+1])); SecName:=Copy(s,2,j-2); CurrSec:=TFPCMakeSection(FSections[SecName]); if CurrSec=nil then @@ -552,7 +553,7 @@ implementation else begin if CurrSec=nil then - raise Exception.Create(Format(s_err_no_section,[FFileName,i])); + raise Exception.Create(Format(s_err_no_section,[FFileName,i+1])); { Insert string without spaces stripped } CurrSec.AddLine(SLInput[i]); end; @@ -1330,7 +1331,10 @@ implementation end. { $Log$ - Revision 1.14 2001-09-29 19:47:50 carl + Revision 1.15 2001-10-14 21:38:32 peter + * cross compiling support + + Revision 1.14 2001/09/29 19:47:50 carl * make it work for BeOS Revision 1.13 2001/08/22 20:45:19 peter diff --git a/utils/fpcm/fpcmwr.pp b/utils/fpcm/fpcmwr.pp index beb2a630e1..ca5797e53d 100644 --- a/utils/fpcm/fpcmwr.pp +++ b/utils/fpcm/fpcmwr.pp @@ -817,13 +817,13 @@ implementation AddTargetVariable('compiler_librarydir'); AddTargetVariable('compiler_targetdir'); AddTargetVariable('compiler_unittargetdir'); - { Add default tools } - AddDefaultTools; - { default dirs/tools/extensions } - AddIniSection('extensions'); + { default Dirs and extensions } AddIniSection('defaultdirs'); if FInput.CheckLibcRequire then AddIniSection('dirlibc'); + AddIniSection('extensions'); + { Add default tools } + AddDefaultTools; { Required packages } AddRequiredPackages; { commandline } @@ -879,7 +879,10 @@ implementation end. { $Log$ - Revision 1.17 2001-09-11 11:04:51 pierre + Revision 1.18 2001-10-14 21:38:33 peter + * cross compiling support + + Revision 1.17 2001/09/11 11:04:51 pierre * handle default cpu and target without override, use require section for override Revision 1.16 2001/08/22 20:45:19 peter