1#
2# Don't edit, this file is generated by FPCMake Version 2.0.0
3#
4default: allexectests
5MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macosclassic m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macosclassic powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-haiku x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-android x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros arm-ios powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin aarch64-android aarch64-ios wasm-wasm sparc64-linux
6BSDs = freebsd netbsd openbsd darwin dragonfly
7UNIXs = linux $(BSDs) solaris qnx haiku aix
8LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari
9OSNeedsComspecToRunBatch = go32v2 watcom
10FORCE:
11.PHONY: FORCE
12override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
13ifneq ($(findstring darwin,$(OSTYPE)),)
14inUnix=1 #darwin
15SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
16else
17ifeq ($(findstring ;,$(PATH)),)
18inUnix=1
19SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
20else
21SEARCHPATH:=$(subst ;, ,$(PATH))
22endif
23endif
24SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
25PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
26ifeq ($(PWD),)
27PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
28ifeq ($(PWD),)
29$(error You need the GNU utils package to use this Makefile)
30else
31PWD:=$(firstword $(PWD))
32SRCEXEEXT=
33endif
34else
35PWD:=$(firstword $(PWD))
36SRCEXEEXT=.exe
37endif
38ifndef inUnix
39ifeq ($(OS),Windows_NT)
40inWinNT=1
41else
42ifdef OS2_SHELL
43inOS2=1
44endif
45endif
46else
47ifneq ($(findstring cygdrive,$(PATH)),)
48inCygWin=1
49endif
50endif
51ifdef inUnix
52SRCBATCHEXT=.sh
53else
54ifdef inOS2
55SRCBATCHEXT=.cmd
56else
57SRCBATCHEXT=.bat
58endif
59endif
60ifdef COMSPEC
61ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
62ifndef RUNBATCH
63RUNBATCH=$(COMSPEC) /C
64endif
65endif
66endif
67ifdef inUnix
68PATHSEP=/
69else
70PATHSEP:=$(subst /,\,/)
71ifdef inCygWin
72PATHSEP=/
73endif
74endif
75ifdef PWD
76BASEDIR:=$(subst \,/,$(shell $(PWD)))
77ifdef inCygWin
78ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
79BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
80BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
81BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
82endif
83endif
84else
85BASEDIR=.
86endif
87ifdef inOS2
88ifndef ECHO
89ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
90ifeq ($(ECHO),)
91ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
92ifeq ($(ECHO),)
93ECHO=echo
94else
95ECHO:=$(firstword $(ECHO))
96endif
97else
98ECHO:=$(firstword $(ECHO))
99endif
100endif
101export ECHO
102endif
103override DEFAULT_FPCDIR=..
104ifndef FPC
105ifdef PP
106FPC=$(PP)
107endif
108endif
109ifndef FPC
110FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
111ifneq ($(FPCPROG),)
112FPCPROG:=$(firstword $(FPCPROG))
113ifneq ($(CPU_TARGET),)
114FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
115else
116FPC:=$(shell $(FPCPROG) -PB)
117endif
118ifneq ($(findstring Error,$(FPC)),)
119override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
120else
121ifeq ($(strip $(wildcard $(FPC))),)
122FPC:=$(firstword $(FPCPROG))
123endif
124endif
125else
126override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
127endif
128endif
129override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
130override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
131FOUNDFPC:=$(strip $(wildcard $(FPC)))
132ifeq ($(FOUNDFPC),)
133FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
134ifeq ($(FOUNDFPC),)
135$(error Compiler $(FPC) not found)
136endif
137endif
138ifndef FPC_COMPILERINFO
139FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
140endif
141ifndef FPC_VERSION
142FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
143endif
144export FPC FPC_VERSION FPC_COMPILERINFO
145unexport CHECKDEPEND ALLDEPENDENCIES
146ifndef CPU_TARGET
147ifdef CPU_TARGET_DEFAULT
148CPU_TARGET=$(CPU_TARGET_DEFAULT)
149endif
150endif
151ifndef OS_TARGET
152ifdef OS_TARGET_DEFAULT
153OS_TARGET=$(OS_TARGET_DEFAULT)
154endif
155endif
156ifndef CPU_SOURCE
157CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
158endif
159ifndef CPU_TARGET
160CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
161endif
162ifndef OS_SOURCE
163OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
164endif
165ifndef OS_TARGET
166OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
167endif
168FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
169FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
170ifeq ($(CPU_TARGET),armeb)
171ARCH=arm
172override FPCOPT+=-Cb
173else
174ifeq ($(CPU_TARGET),armel)
175ARCH=arm
176override FPCOPT+=-CaEABI
177else
178ARCH=$(CPU_TARGET)
179endif
180endif
181ifeq ($(FULL_TARGET),arm-embedded)
182ifeq ($(SUBARCH),)
183$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
184endif
185override FPCOPT+=-Cp$(SUBARCH)
186endif
187ifeq ($(FULL_TARGET),avr-embedded)
188ifeq ($(SUBARCH),)
189$(error When compiling for avr-embedded, a sub-architecture (e.g. SUBARCH=avr25 or SUBARCH=avr35) must be defined)
190endif
191override FPCOPT+=-Cp$(SUBARCH)
192endif
193ifeq ($(FULL_TARGET),mipsel-embedded)
194ifeq ($(SUBARCH),)
195$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
196endif
197override FPCOPT+=-Cp$(SUBARCH)
198endif
199ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
200TARGETSUFFIX=$(OS_TARGET)
201SOURCESUFFIX=$(OS_SOURCE)
202else
203ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
204TARGETSUFFIX=$(OS_TARGET)
205else
206TARGETSUFFIX=$(FULL_TARGET)
207endif
208SOURCESUFFIX=$(FULL_SOURCE)
209endif
210ifneq ($(FULL_TARGET),$(FULL_SOURCE))
211CROSSCOMPILE=1
212endif
213ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
214ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
215$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
216endif
217endif
218ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
219BSDhier=1
220endif
221ifeq ($(OS_TARGET),linux)
222linuxHier=1
223endif
224ifndef CROSSCOMPILE
225BUILDFULLNATIVE=1
226export BUILDFULLNATIVE
227endif
228ifdef BUILDFULLNATIVE
229BUILDNATIVE=1
230export BUILDNATIVE
231endif
232export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
233ifdef FPCDIR
234override FPCDIR:=$(subst \,/,$(FPCDIR))
235ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
236override FPCDIR=wrong
237endif
238else
239override FPCDIR=wrong
240endif
241ifdef DEFAULT_FPCDIR
242ifeq ($(FPCDIR),wrong)
243override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
244ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
245override FPCDIR=wrong
246endif
247endif
248endif
249ifeq ($(FPCDIR),wrong)
250ifdef inUnix
251override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
252ifeq ($(wildcard $(FPCDIR)/units),)
253override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
254endif
255else
256override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
257override FPCDIR:=$(FPCDIR)/..
258ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
259override FPCDIR:=$(FPCDIR)/..
260ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
261override FPCDIR:=$(BASEDIR)
262ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
263override FPCDIR=c:/pp
264endif
265endif
266endif
267endif
268endif
269ifndef CROSSBINDIR
270CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
271endif
272ifneq ($(findstring $(OS_TARGET),darwin iphonesim ios),)
273ifneq ($(findstring $(OS_SOURCE),darwin ios),)
274DARWIN2DARWIN=1
275endif
276endif
277ifndef BINUTILSPREFIX
278ifndef CROSSBINDIR
279ifdef CROSSCOMPILE
280ifneq ($(OS_TARGET),msdos)
281ifndef DARWIN2DARWIN
282ifneq ($(CPU_TARGET),jvm)
283BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
284ifeq ($(OS_TARGET),android)
285ifeq ($(CPU_TARGET),arm)
286BINUTILSPREFIX=arm-linux-androideabi-
287else
288ifeq ($(CPU_TARGET),i386)
289BINUTILSPREFIX=i686-linux-android-
290else
291BINUTILSPREFIX=$(CPU_TARGET)-linux-android-
292endif
293endif
294endif
295endif
296endif
297else
298BINUTILSPREFIX=$(OS_TARGET)-
299endif
300endif
301endif
302endif
303UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
304ifeq ($(UNITSDIR),)
305UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
306endif
307PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
308ifndef FPCFPMAKE
309ifdef CROSSCOMPILE
310ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
311FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
312ifneq ($(FPCPROG),)
313FPCPROG:=$(firstword $(FPCPROG))
314FPCFPMAKE:=$(shell $(FPCPROG) -PB)
315ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
316FPCFPMAKE:=$(firstword $(FPCPROG))
317endif
318else
319override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
320endif
321else
322FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
323FPMAKE_SKIP_CONFIG=-n
324export FPCFPMAKE
325export FPMAKE_SKIP_CONFIG
326endif
327else
328FPMAKE_SKIP_CONFIG=-n
329FPCFPMAKE=$(FPC)
330endif
331endif
332ifeq ($(FULL_TARGET),i386-linux)
333override TARGET_PROGRAMS+=gparmake createlst
334endif
335ifeq ($(FULL_TARGET),i386-go32v2)
336override TARGET_PROGRAMS+=gparmake createlst
337endif
338ifeq ($(FULL_TARGET),i386-win32)
339override TARGET_PROGRAMS+=gparmake createlst
340endif
341ifeq ($(FULL_TARGET),i386-os2)
342override TARGET_PROGRAMS+=gparmake createlst
343endif
344ifeq ($(FULL_TARGET),i386-freebsd)
345override TARGET_PROGRAMS+=gparmake createlst
346endif
347ifeq ($(FULL_TARGET),i386-beos)
348override TARGET_PROGRAMS+=gparmake createlst
349endif
350ifeq ($(FULL_TARGET),i386-haiku)
351override TARGET_PROGRAMS+=gparmake createlst
352endif
353ifeq ($(FULL_TARGET),i386-netbsd)
354override TARGET_PROGRAMS+=gparmake createlst
355endif
356ifeq ($(FULL_TARGET),i386-solaris)
357override TARGET_PROGRAMS+=gparmake createlst
358endif
359ifeq ($(FULL_TARGET),i386-netware)
360override TARGET_PROGRAMS+=gparmake createlst
361endif
362ifeq ($(FULL_TARGET),i386-openbsd)
363override TARGET_PROGRAMS+=gparmake createlst
364endif
365ifeq ($(FULL_TARGET),i386-wdosx)
366override TARGET_PROGRAMS+=gparmake createlst
367endif
368ifeq ($(FULL_TARGET),i386-darwin)
369override TARGET_PROGRAMS+=gparmake createlst
370endif
371ifeq ($(FULL_TARGET),i386-emx)
372override TARGET_PROGRAMS+=gparmake createlst
373endif
374ifeq ($(FULL_TARGET),i386-watcom)
375override TARGET_PROGRAMS+=gparmake createlst
376endif
377ifeq ($(FULL_TARGET),i386-netwlibc)
378override TARGET_PROGRAMS+=gparmake createlst
379endif
380ifeq ($(FULL_TARGET),i386-wince)
381override TARGET_PROGRAMS+=gparmake createlst
382endif
383ifeq ($(FULL_TARGET),i386-embedded)
384override TARGET_PROGRAMS+=gparmake createlst
385endif
386ifeq ($(FULL_TARGET),i386-symbian)
387override TARGET_PROGRAMS+=gparmake createlst
388endif
389ifeq ($(FULL_TARGET),i386-nativent)
390override TARGET_PROGRAMS+=gparmake createlst
391endif
392ifeq ($(FULL_TARGET),i386-iphonesim)
393override TARGET_PROGRAMS+=gparmake createlst
394endif
395ifeq ($(FULL_TARGET),i386-android)
396override TARGET_PROGRAMS+=gparmake createlst
397endif
398ifeq ($(FULL_TARGET),i386-aros)
399override TARGET_PROGRAMS+=gparmake createlst
400endif
401ifeq ($(FULL_TARGET),m68k-linux)
402override TARGET_PROGRAMS+=gparmake createlst
403endif
404ifeq ($(FULL_TARGET),m68k-netbsd)
405override TARGET_PROGRAMS+=gparmake createlst
406endif
407ifeq ($(FULL_TARGET),m68k-amiga)
408override TARGET_PROGRAMS+=gparmake createlst
409endif
410ifeq ($(FULL_TARGET),m68k-atari)
411override TARGET_PROGRAMS+=gparmake createlst
412endif
413ifeq ($(FULL_TARGET),m68k-palmos)
414override TARGET_PROGRAMS+=gparmake createlst
415endif
416ifeq ($(FULL_TARGET),m68k-macosclassic)
417override TARGET_PROGRAMS+=gparmake createlst
418endif
419ifeq ($(FULL_TARGET),m68k-embedded)
420override TARGET_PROGRAMS+=gparmake createlst
421endif
422ifeq ($(FULL_TARGET),powerpc-linux)
423override TARGET_PROGRAMS+=gparmake createlst
424endif
425ifeq ($(FULL_TARGET),powerpc-netbsd)
426override TARGET_PROGRAMS+=gparmake createlst
427endif
428ifeq ($(FULL_TARGET),powerpc-amiga)
429override TARGET_PROGRAMS+=gparmake createlst
430endif
431ifeq ($(FULL_TARGET),powerpc-macosclassic)
432override TARGET_PROGRAMS+=gparmake createlst
433endif
434ifeq ($(FULL_TARGET),powerpc-darwin)
435override TARGET_PROGRAMS+=gparmake createlst
436endif
437ifeq ($(FULL_TARGET),powerpc-morphos)
438override TARGET_PROGRAMS+=gparmake createlst
439endif
440ifeq ($(FULL_TARGET),powerpc-embedded)
441override TARGET_PROGRAMS+=gparmake createlst
442endif
443ifeq ($(FULL_TARGET),powerpc-wii)
444override TARGET_PROGRAMS+=gparmake createlst
445endif
446ifeq ($(FULL_TARGET),powerpc-aix)
447override TARGET_PROGRAMS+=gparmake createlst
448endif
449ifeq ($(FULL_TARGET),sparc-linux)
450override TARGET_PROGRAMS+=gparmake createlst
451endif
452ifeq ($(FULL_TARGET),sparc-netbsd)
453override TARGET_PROGRAMS+=gparmake createlst
454endif
455ifeq ($(FULL_TARGET),sparc-solaris)
456override TARGET_PROGRAMS+=gparmake createlst
457endif
458ifeq ($(FULL_TARGET),sparc-embedded)
459override TARGET_PROGRAMS+=gparmake createlst
460endif
461ifeq ($(FULL_TARGET),x86_64-linux)
462override TARGET_PROGRAMS+=gparmake createlst
463endif
464ifeq ($(FULL_TARGET),x86_64-freebsd)
465override TARGET_PROGRAMS+=gparmake createlst
466endif
467ifeq ($(FULL_TARGET),x86_64-haiku)
468override TARGET_PROGRAMS+=gparmake createlst
469endif
470ifeq ($(FULL_TARGET),x86_64-netbsd)
471override TARGET_PROGRAMS+=gparmake createlst
472endif
473ifeq ($(FULL_TARGET),x86_64-solaris)
474override TARGET_PROGRAMS+=gparmake createlst
475endif
476ifeq ($(FULL_TARGET),x86_64-openbsd)
477override TARGET_PROGRAMS+=gparmake createlst
478endif
479ifeq ($(FULL_TARGET),x86_64-darwin)
480override TARGET_PROGRAMS+=gparmake createlst
481endif
482ifeq ($(FULL_TARGET),x86_64-win64)
483override TARGET_PROGRAMS+=gparmake createlst
484endif
485ifeq ($(FULL_TARGET),x86_64-embedded)
486override TARGET_PROGRAMS+=gparmake createlst
487endif
488ifeq ($(FULL_TARGET),x86_64-iphonesim)
489override TARGET_PROGRAMS+=gparmake createlst
490endif
491ifeq ($(FULL_TARGET),x86_64-android)
492override TARGET_PROGRAMS+=gparmake createlst
493endif
494ifeq ($(FULL_TARGET),x86_64-aros)
495override TARGET_PROGRAMS+=gparmake createlst
496endif
497ifeq ($(FULL_TARGET),x86_64-dragonfly)
498override TARGET_PROGRAMS+=gparmake createlst
499endif
500ifeq ($(FULL_TARGET),arm-linux)
501override TARGET_PROGRAMS+=gparmake createlst
502endif
503ifeq ($(FULL_TARGET),arm-netbsd)
504override TARGET_PROGRAMS+=gparmake createlst
505endif
506ifeq ($(FULL_TARGET),arm-palmos)
507override TARGET_PROGRAMS+=gparmake createlst
508endif
509ifeq ($(FULL_TARGET),arm-wince)
510override TARGET_PROGRAMS+=gparmake createlst
511endif
512ifeq ($(FULL_TARGET),arm-gba)
513override TARGET_PROGRAMS+=gparmake createlst
514endif
515ifeq ($(FULL_TARGET),arm-nds)
516override TARGET_PROGRAMS+=gparmake createlst
517endif
518ifeq ($(FULL_TARGET),arm-embedded)
519override TARGET_PROGRAMS+=gparmake createlst
520endif
521ifeq ($(FULL_TARGET),arm-symbian)
522override TARGET_PROGRAMS+=gparmake createlst
523endif
524ifeq ($(FULL_TARGET),arm-android)
525override TARGET_PROGRAMS+=gparmake createlst
526endif
527ifeq ($(FULL_TARGET),arm-aros)
528override TARGET_PROGRAMS+=gparmake createlst
529endif
530ifeq ($(FULL_TARGET),arm-ios)
531override TARGET_PROGRAMS+=gparmake createlst
532endif
533ifeq ($(FULL_TARGET),powerpc64-linux)
534override TARGET_PROGRAMS+=gparmake createlst
535endif
536ifeq ($(FULL_TARGET),powerpc64-darwin)
537override TARGET_PROGRAMS+=gparmake createlst
538endif
539ifeq ($(FULL_TARGET),powerpc64-embedded)
540override TARGET_PROGRAMS+=gparmake createlst
541endif
542ifeq ($(FULL_TARGET),powerpc64-aix)
543override TARGET_PROGRAMS+=gparmake createlst
544endif
545ifeq ($(FULL_TARGET),avr-embedded)
546override TARGET_PROGRAMS+=gparmake createlst
547endif
548ifeq ($(FULL_TARGET),armeb-linux)
549override TARGET_PROGRAMS+=gparmake createlst
550endif
551ifeq ($(FULL_TARGET),armeb-embedded)
552override TARGET_PROGRAMS+=gparmake createlst
553endif
554ifeq ($(FULL_TARGET),mips-linux)
555override TARGET_PROGRAMS+=gparmake createlst
556endif
557ifeq ($(FULL_TARGET),mipsel-linux)
558override TARGET_PROGRAMS+=gparmake createlst
559endif
560ifeq ($(FULL_TARGET),mipsel-embedded)
561override TARGET_PROGRAMS+=gparmake createlst
562endif
563ifeq ($(FULL_TARGET),mipsel-android)
564override TARGET_PROGRAMS+=gparmake createlst
565endif
566ifeq ($(FULL_TARGET),jvm-java)
567override TARGET_PROGRAMS+=gparmake createlst
568endif
569ifeq ($(FULL_TARGET),jvm-android)
570override TARGET_PROGRAMS+=gparmake createlst
571endif
572ifeq ($(FULL_TARGET),i8086-embedded)
573override TARGET_PROGRAMS+=gparmake createlst
574endif
575ifeq ($(FULL_TARGET),i8086-msdos)
576override TARGET_PROGRAMS+=gparmake createlst
577endif
578ifeq ($(FULL_TARGET),i8086-win16)
579override TARGET_PROGRAMS+=gparmake createlst
580endif
581ifeq ($(FULL_TARGET),aarch64-linux)
582override TARGET_PROGRAMS+=gparmake createlst
583endif
584ifeq ($(FULL_TARGET),aarch64-darwin)
585override TARGET_PROGRAMS+=gparmake createlst
586endif
587ifeq ($(FULL_TARGET),aarch64-android)
588override TARGET_PROGRAMS+=gparmake createlst
589endif
590ifeq ($(FULL_TARGET),aarch64-ios)
591override TARGET_PROGRAMS+=gparmake createlst
592endif
593ifeq ($(FULL_TARGET),wasm-wasm)
594override TARGET_PROGRAMS+=gparmake createlst
595endif
596ifeq ($(FULL_TARGET),sparc64-linux)
597override TARGET_PROGRAMS+=gparmake createlst
598endif
599override INSTALL_FPCPACKAGE=y
600ifdef REQUIRE_UNITSDIR
601override UNITSDIR+=$(REQUIRE_UNITSDIR)
602endif
603ifdef REQUIRE_PACKAGESDIR
604override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
605endif
606ifdef ZIPINSTALL
607ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
608UNIXHier=1
609endif
610else
611ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
612UNIXHier=1
613endif
614endif
615ifndef INSTALL_PREFIX
616ifdef PREFIX
617INSTALL_PREFIX=$(PREFIX)
618endif
619endif
620ifndef INSTALL_PREFIX
621ifdef UNIXHier
622INSTALL_PREFIX=/usr/local
623else
624ifdef INSTALL_FPCPACKAGE
625INSTALL_BASEDIR:=/pp
626else
627INSTALL_BASEDIR:=/$(PACKAGE_NAME)
628endif
629endif
630endif
631export INSTALL_PREFIX
632ifdef INSTALL_FPCSUBDIR
633export INSTALL_FPCSUBDIR
634endif
635ifndef DIST_DESTDIR
636DIST_DESTDIR:=$(BASEDIR)
637endif
638export DIST_DESTDIR
639ifndef COMPILER_UNITTARGETDIR
640ifdef PACKAGEDIR_MAIN
641COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
642else
643COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
644endif
645endif
646ifndef COMPILER_TARGETDIR
647COMPILER_TARGETDIR=.
648endif
649ifndef INSTALL_BASEDIR
650ifdef UNIXHier
651ifdef INSTALL_FPCPACKAGE
652INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
653else
654INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
655endif
656else
657INSTALL_BASEDIR:=$(INSTALL_PREFIX)
658endif
659endif
660ifndef INSTALL_BINDIR
661ifdef UNIXHier
662INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
663else
664INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
665ifdef INSTALL_FPCPACKAGE
666ifdef CROSSCOMPILE
667ifdef CROSSINSTALL
668INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
669else
670INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
671endif
672else
673INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
674endif
675endif
676endif
677endif
678ifndef INSTALL_UNITDIR
679INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
680ifdef INSTALL_FPCPACKAGE
681ifdef PACKAGE_NAME
682INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
683endif
684endif
685endif
686ifndef INSTALL_LIBDIR
687ifdef UNIXHier
688INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
689else
690INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
691endif
692endif
693ifndef INSTALL_SOURCEDIR
694ifdef UNIXHier
695ifdef BSDhier
696SRCPREFIXDIR=share/src
697else
698ifdef linuxHier
699SRCPREFIXDIR=share/src
700else
701SRCPREFIXDIR=src
702endif
703endif
704ifdef INSTALL_FPCPACKAGE
705ifdef INSTALL_FPCSUBDIR
706INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
707else
708INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
709endif
710else
711INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
712endif
713else
714ifdef INSTALL_FPCPACKAGE
715ifdef INSTALL_FPCSUBDIR
716INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
717else
718INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
719endif
720else
721INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
722endif
723endif
724endif
725ifndef INSTALL_DOCDIR
726ifdef UNIXHier
727ifdef BSDhier
728DOCPREFIXDIR=share/doc
729else
730ifdef linuxHier
731DOCPREFIXDIR=share/doc
732else
733DOCPREFIXDIR=doc
734endif
735endif
736ifdef INSTALL_FPCPACKAGE
737INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
738else
739INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
740endif
741else
742ifdef INSTALL_FPCPACKAGE
743INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
744else
745INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
746endif
747endif
748endif
749ifndef INSTALL_EXAMPLEDIR
750ifdef UNIXHier
751ifdef INSTALL_FPCPACKAGE
752ifdef BSDhier
753INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
754else
755ifdef linuxHier
756INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
757else
758INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
759endif
760endif
761else
762ifdef BSDhier
763INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
764else
765ifdef linuxHier
766INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
767else
768INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
769endif
770endif
771endif
772else
773ifdef INSTALL_FPCPACKAGE
774INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
775else
776INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
777endif
778endif
779endif
780ifndef INSTALL_DATADIR
781INSTALL_DATADIR=$(INSTALL_BASEDIR)
782endif
783ifndef INSTALL_SHAREDDIR
784INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
785endif
786ifdef CROSSCOMPILE
787ifndef CROSSBINDIR
788CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
789ifeq ($(CROSSBINDIR),)
790CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
791endif
792endif
793else
794CROSSBINDIR=
795endif
796BATCHEXT=.bat
797LOADEREXT=.as
798EXEEXT=.exe
799PPLEXT=.ppl
800PPUEXT=.ppu
801OEXT=.o
802ASMEXT=.s
803SMARTEXT=.sl
804STATICLIBEXT=.a
805SHAREDLIBEXT=.so
806SHAREDLIBPREFIX=libfp
807STATICLIBPREFIX=libp
808IMPORTLIBPREFIX=libimp
809RSTEXT=.rst
810EXEDBGEXT=.dbg
811ifeq ($(OS_TARGET),go32v1)
812STATICLIBPREFIX=
813SHORTSUFFIX=v1
814endif
815ifeq ($(OS_TARGET),go32v2)
816STATICLIBPREFIX=
817SHORTSUFFIX=dos
818IMPORTLIBPREFIX=
819endif
820ifeq ($(OS_TARGET),watcom)
821STATICLIBPREFIX=
822OEXT=.obj
823ASMEXT=.asm
824SHAREDLIBEXT=.dll
825SHORTSUFFIX=wat
826IMPORTLIBPREFIX=
827endif
828ifneq ($(CPU_TARGET),jvm)
829ifeq ($(OS_TARGET),android)
830BATCHEXT=.sh
831EXEEXT=
832HASSHAREDLIB=1
833SHORTSUFFIX=lnx
834endif
835endif
836ifeq ($(OS_TARGET),linux)
837BATCHEXT=.sh
838EXEEXT=
839HASSHAREDLIB=1
840SHORTSUFFIX=lnx
841endif
842ifeq ($(OS_TARGET),dragonfly)
843BATCHEXT=.sh
844EXEEXT=
845HASSHAREDLIB=1
846SHORTSUFFIX=df
847endif
848ifeq ($(OS_TARGET),freebsd)
849BATCHEXT=.sh
850EXEEXT=
851HASSHAREDLIB=1
852SHORTSUFFIX=fbs
853endif
854ifeq ($(OS_TARGET),netbsd)
855BATCHEXT=.sh
856EXEEXT=
857HASSHAREDLIB=1
858SHORTSUFFIX=nbs
859endif
860ifeq ($(OS_TARGET),openbsd)
861BATCHEXT=.sh
862EXEEXT=
863HASSHAREDLIB=1
864SHORTSUFFIX=obs
865endif
866ifeq ($(OS_TARGET),win32)
867SHAREDLIBEXT=.dll
868SHORTSUFFIX=w32
869endif
870ifeq ($(OS_TARGET),os2)
871BATCHEXT=.cmd
872AOUTEXT=.out
873STATICLIBPREFIX=
874SHAREDLIBEXT=.dll
875SHORTSUFFIX=os2
876ECHO=echo
877IMPORTLIBPREFIX=
878endif
879ifeq ($(OS_TARGET),emx)
880BATCHEXT=.cmd
881AOUTEXT=.out
882STATICLIBPREFIX=
883SHAREDLIBEXT=.dll
884SHORTSUFFIX=emx
885ECHO=echo
886IMPORTLIBPREFIX=
887endif
888ifeq ($(OS_TARGET),amiga)
889EXEEXT=
890SHAREDLIBEXT=.library
891SHORTSUFFIX=amg
892endif
893ifeq ($(OS_TARGET),aros)
894EXEEXT=
895SHAREDLIBEXT=.library
896SHORTSUFFIX=aros
897endif
898ifeq ($(OS_TARGET),morphos)
899EXEEXT=
900SHAREDLIBEXT=.library
901SHORTSUFFIX=mos
902endif
903ifeq ($(OS_TARGET),atari)
904EXEEXT=.ttp
905SHORTSUFFIX=ata
906endif
907ifeq ($(OS_TARGET),beos)
908BATCHEXT=.sh
909EXEEXT=
910SHORTSUFFIX=be
911endif
912ifeq ($(OS_TARGET),haiku)
913BATCHEXT=.sh
914EXEEXT=
915SHORTSUFFIX=hai
916endif
917ifeq ($(OS_TARGET),solaris)
918BATCHEXT=.sh
919EXEEXT=
920SHORTSUFFIX=sun
921endif
922ifeq ($(OS_TARGET),qnx)
923BATCHEXT=.sh
924EXEEXT=
925SHORTSUFFIX=qnx
926endif
927ifeq ($(OS_TARGET),netware)
928EXEEXT=.nlm
929STATICLIBPREFIX=
930SHORTSUFFIX=nw
931IMPORTLIBPREFIX=imp
932endif
933ifeq ($(OS_TARGET),netwlibc)
934EXEEXT=.nlm
935STATICLIBPREFIX=
936SHORTSUFFIX=nwl
937IMPORTLIBPREFIX=imp
938endif
939ifeq ($(OS_TARGET),macosclassic)
940BATCHEXT=
941EXEEXT=
942DEBUGSYMEXT=.xcoff
943SHORTSUFFIX=mac
944IMPORTLIBPREFIX=imp
945endif
946ifneq ($(findstring $(OS_TARGET),darwin iphonesim ios),)
947BATCHEXT=.sh
948EXEEXT=
949HASSHAREDLIB=1
950SHORTSUFFIX=dwn
951EXEDBGEXT=.dSYM
952endif
953ifeq ($(OS_TARGET),gba)
954EXEEXT=.gba
955SHAREDLIBEXT=.so
956SHORTSUFFIX=gba
957endif
958ifeq ($(OS_TARGET),symbian)
959SHAREDLIBEXT=.dll
960SHORTSUFFIX=symbian
961endif
962ifeq ($(OS_TARGET),NativeNT)
963SHAREDLIBEXT=.dll
964SHORTSUFFIX=nativent
965endif
966ifeq ($(OS_TARGET),wii)
967EXEEXT=.dol
968SHAREDLIBEXT=.so
969SHORTSUFFIX=wii
970endif
971ifeq ($(OS_TARGET),aix)
972BATCHEXT=.sh
973EXEEXT=
974SHAREDLIBEXT=.a
975SHORTSUFFIX=aix
976endif
977ifeq ($(OS_TARGET),java)
978OEXT=.class
979ASMEXT=.j
980SHAREDLIBEXT=.jar
981SHORTSUFFIX=java
982endif
983ifeq ($(CPU_TARGET),jvm)
984ifeq ($(OS_TARGET),android)
985OEXT=.class
986ASMEXT=.j
987SHAREDLIBEXT=.jar
988SHORTSUFFIX=android
989endif
990endif
991ifeq ($(OS_TARGET),msdos)
992STATICLIBPREFIX=
993STATICLIBEXT=.a
994SHORTSUFFIX=d16
995endif
996ifeq ($(OS_TARGET),embedded)
997ifeq ($(CPU_TARGET),i8086)
998STATICLIBPREFIX=
999STATICLIBEXT=.a
1000else
1001EXEEXT=.bin
1002endif
1003SHORTSUFFIX=emb
1004endif
1005ifeq ($(OS_TARGET),win16)
1006STATICLIBPREFIX=
1007STATICLIBEXT=.a
1008SHAREDLIBEXT=.dll
1009SHORTSUFFIX=w16
1010endif
1011ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
1012FPCMADE=fpcmade.$(SHORTSUFFIX)
1013ZIPSUFFIX=$(SHORTSUFFIX)
1014ZIPCROSSPREFIX=
1015ZIPSOURCESUFFIX=src
1016ZIPEXAMPLESUFFIX=exm
1017else
1018FPCMADE=fpcmade.$(TARGETSUFFIX)
1019ZIPSOURCESUFFIX=.source
1020ZIPEXAMPLESUFFIX=.examples
1021ifdef CROSSCOMPILE
1022ZIPSUFFIX=.$(SOURCESUFFIX)
1023ZIPCROSSPREFIX=$(TARGETSUFFIX)-
1024else
1025ZIPSUFFIX=.$(TARGETSUFFIX)
1026ZIPCROSSPREFIX=
1027endif
1028endif
1029ifndef ECHO
1030ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
1031ifeq ($(ECHO),)
1032ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
1033ifeq ($(ECHO),)
1034ECHO= __missing_command_ECHO
1035else
1036ECHO:=$(firstword $(ECHO))
1037endif
1038else
1039ECHO:=$(firstword $(ECHO))
1040endif
1041endif
1042export ECHO
1043ifndef DATE
1044DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
1045ifeq ($(DATE),)
1046DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
1047ifeq ($(DATE),)
1048DATE= __missing_command_DATE
1049else
1050DATE:=$(firstword $(DATE))
1051endif
1052else
1053DATE:=$(firstword $(DATE))
1054endif
1055endif
1056export DATE
1057ifndef GINSTALL
1058GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
1059ifeq ($(GINSTALL),)
1060GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
1061ifeq ($(GINSTALL),)
1062GINSTALL= __missing_command_GINSTALL
1063else
1064GINSTALL:=$(firstword $(GINSTALL))
1065endif
1066else
1067GINSTALL:=$(firstword $(GINSTALL))
1068endif
1069endif
1070export GINSTALL
1071ifndef CPPROG
1072CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
1073ifeq ($(CPPROG),)
1074CPPROG= __missing_command_CPPROG
1075else
1076CPPROG:=$(firstword $(CPPROG))
1077endif
1078endif
1079export CPPROG
1080ifndef RMPROG
1081RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
1082ifeq ($(RMPROG),)
1083RMPROG= __missing_command_RMPROG
1084else
1085RMPROG:=$(firstword $(RMPROG))
1086endif
1087endif
1088export RMPROG
1089ifndef MVPROG
1090MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
1091ifeq ($(MVPROG),)
1092MVPROG= __missing_command_MVPROG
1093else
1094MVPROG:=$(firstword $(MVPROG))
1095endif
1096endif
1097export MVPROG
1098ifndef MKDIRPROG
1099MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
1100ifeq ($(MKDIRPROG),)
1101MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
1102ifeq ($(MKDIRPROG),)
1103MKDIRPROG= __missing_command_MKDIRPROG
1104else
1105MKDIRPROG:=$(firstword $(MKDIRPROG))
1106endif
1107else
1108MKDIRPROG:=$(firstword $(MKDIRPROG))
1109endif
1110endif
1111export MKDIRPROG
1112ifndef ECHOREDIR
1113ifndef inUnix
1114ECHOREDIR=echo
1115else
1116ECHOREDIR=$(ECHO)
1117endif
1118endif
1119ifndef COPY
1120COPY:=$(CPPROG) -fp
1121endif
1122ifndef COPYTREE
1123COPYTREE:=$(CPPROG) -Rfp
1124endif
1125ifndef MKDIRTREE
1126MKDIRTREE:=$(MKDIRPROG) -p
1127endif
1128ifndef MOVE
1129MOVE:=$(MVPROG) -f
1130endif
1131ifndef DEL
1132DEL:=$(RMPROG) -f
1133endif
1134ifndef DELTREE
1135DELTREE:=$(RMPROG) -rf
1136endif
1137ifndef INSTALL
1138ifdef inUnix
1139INSTALL:=$(GINSTALL) -c -m 644
1140else
1141INSTALL:=$(COPY)
1142endif
1143endif
1144ifndef INSTALLEXE
1145ifdef inUnix
1146INSTALLEXE:=$(GINSTALL) -c -m 755
1147else
1148INSTALLEXE:=$(COPY)
1149endif
1150endif
1151ifndef MKDIR
1152MKDIR:=$(GINSTALL) -m 755 -d
1153endif
1154export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
1155ifndef PPUMOVE
1156PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
1157ifeq ($(PPUMOVE),)
1158PPUMOVE= __missing_command_PPUMOVE
1159else
1160PPUMOVE:=$(firstword $(PPUMOVE))
1161endif
1162endif
1163export PPUMOVE
1164ifndef FPCMAKE
1165FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
1166ifeq ($(FPCMAKE),)
1167FPCMAKE= __missing_command_FPCMAKE
1168else
1169FPCMAKE:=$(firstword $(FPCMAKE))
1170endif
1171endif
1172export FPCMAKE
1173ifndef ZIPPROG
1174ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
1175ifeq ($(ZIPPROG),)
1176ZIPPROG= __missing_command_ZIPPROG
1177else
1178ZIPPROG:=$(firstword $(ZIPPROG))
1179endif
1180endif
1181export ZIPPROG
1182ifndef TARPROG
1183TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
1184ifeq ($(TARPROG),)
1185TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
1186ifeq ($(TARPROG),)
1187TARPROG= __missing_command_TARPROG
1188else
1189TARPROG:=$(firstword $(TARPROG))
1190endif
1191else
1192TARPROG:=$(firstword $(TARPROG))
1193endif
1194endif
1195export TARPROG
1196ASNAME=$(BINUTILSPREFIX)as
1197LDNAME=$(BINUTILSPREFIX)ld
1198ARNAME=$(BINUTILSPREFIX)ar
1199RCNAME=$(BINUTILSPREFIX)rc
1200NASMNAME=$(BINUTILSPREFIX)nasm
1201ifndef ASPROG
1202ifdef CROSSBINDIR
1203ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
1204else
1205ASPROG=$(ASNAME)
1206endif
1207endif
1208ifndef LDPROG
1209ifdef CROSSBINDIR
1210LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
1211else
1212LDPROG=$(LDNAME)
1213endif
1214endif
1215ifndef RCPROG
1216ifdef CROSSBINDIR
1217RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
1218else
1219RCPROG=$(RCNAME)
1220endif
1221endif
1222ifndef ARPROG
1223ifdef CROSSBINDIR
1224ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
1225else
1226ARPROG=$(ARNAME)
1227endif
1228endif
1229ifndef NASMPROG
1230ifdef CROSSBINDIR
1231NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
1232else
1233NASMPROG=$(NASMNAME)
1234endif
1235endif
1236AS=$(ASPROG)
1237LD=$(LDPROG)
1238RC=$(RCPROG)
1239AR=$(ARPROG)
1240NASM=$(NASMPROG)
1241ifdef inUnix
1242PPAS=./ppas$(SRCBATCHEXT)
1243else
1244PPAS=ppas$(SRCBATCHEXT)
1245endif
1246ifdef inUnix
1247LDCONFIG=ldconfig
1248else
1249LDCONFIG=
1250endif
1251ifdef DATE
1252DATESTR:=$(shell $(DATE) +%Y%m%d)
1253else
1254DATESTR=
1255endif
1256ZIPOPT=-9
1257ZIPEXT=.zip
1258ifeq ($(USETAR),bz2)
1259TAROPT=vj
1260TAREXT=.tar.bz2
1261else
1262TAROPT=vz
1263TAREXT=.tar.gz
1264endif
1265override REQUIRE_PACKAGES=rtl
1266ifeq ($(FULL_TARGET),i386-linux)
1267REQUIRE_PACKAGES_RTL=1
1268endif
1269ifeq ($(FULL_TARGET),i386-go32v2)
1270REQUIRE_PACKAGES_RTL=1
1271endif
1272ifeq ($(FULL_TARGET),i386-win32)
1273REQUIRE_PACKAGES_RTL=1
1274endif
1275ifeq ($(FULL_TARGET),i386-os2)
1276REQUIRE_PACKAGES_RTL=1
1277endif
1278ifeq ($(FULL_TARGET),i386-freebsd)
1279REQUIRE_PACKAGES_RTL=1
1280endif
1281ifeq ($(FULL_TARGET),i386-beos)
1282REQUIRE_PACKAGES_RTL=1
1283endif
1284ifeq ($(FULL_TARGET),i386-haiku)
1285REQUIRE_PACKAGES_RTL=1
1286endif
1287ifeq ($(FULL_TARGET),i386-netbsd)
1288REQUIRE_PACKAGES_RTL=1
1289endif
1290ifeq ($(FULL_TARGET),i386-solaris)
1291REQUIRE_PACKAGES_RTL=1
1292endif
1293ifeq ($(FULL_TARGET),i386-netware)
1294REQUIRE_PACKAGES_RTL=1
1295endif
1296ifeq ($(FULL_TARGET),i386-openbsd)
1297REQUIRE_PACKAGES_RTL=1
1298endif
1299ifeq ($(FULL_TARGET),i386-wdosx)
1300REQUIRE_PACKAGES_RTL=1
1301endif
1302ifeq ($(FULL_TARGET),i386-darwin)
1303REQUIRE_PACKAGES_RTL=1
1304endif
1305ifeq ($(FULL_TARGET),i386-emx)
1306REQUIRE_PACKAGES_RTL=1
1307endif
1308ifeq ($(FULL_TARGET),i386-watcom)
1309REQUIRE_PACKAGES_RTL=1
1310endif
1311ifeq ($(FULL_TARGET),i386-netwlibc)
1312REQUIRE_PACKAGES_RTL=1
1313endif
1314ifeq ($(FULL_TARGET),i386-wince)
1315REQUIRE_PACKAGES_RTL=1
1316endif
1317ifeq ($(FULL_TARGET),i386-embedded)
1318REQUIRE_PACKAGES_RTL=1
1319endif
1320ifeq ($(FULL_TARGET),i386-symbian)
1321REQUIRE_PACKAGES_RTL=1
1322endif
1323ifeq ($(FULL_TARGET),i386-nativent)
1324REQUIRE_PACKAGES_RTL=1
1325endif
1326ifeq ($(FULL_TARGET),i386-iphonesim)
1327REQUIRE_PACKAGES_RTL=1
1328endif
1329ifeq ($(FULL_TARGET),i386-android)
1330REQUIRE_PACKAGES_RTL=1
1331endif
1332ifeq ($(FULL_TARGET),i386-aros)
1333REQUIRE_PACKAGES_RTL=1
1334endif
1335ifeq ($(FULL_TARGET),m68k-linux)
1336REQUIRE_PACKAGES_RTL=1
1337endif
1338ifeq ($(FULL_TARGET),m68k-netbsd)
1339REQUIRE_PACKAGES_RTL=1
1340endif
1341ifeq ($(FULL_TARGET),m68k-amiga)
1342REQUIRE_PACKAGES_RTL=1
1343endif
1344ifeq ($(FULL_TARGET),m68k-atari)
1345REQUIRE_PACKAGES_RTL=1
1346endif
1347ifeq ($(FULL_TARGET),m68k-palmos)
1348REQUIRE_PACKAGES_RTL=1
1349endif
1350ifeq ($(FULL_TARGET),m68k-macosclassic)
1351REQUIRE_PACKAGES_RTL=1
1352endif
1353ifeq ($(FULL_TARGET),m68k-embedded)
1354REQUIRE_PACKAGES_RTL=1
1355endif
1356ifeq ($(FULL_TARGET),powerpc-linux)
1357REQUIRE_PACKAGES_RTL=1
1358endif
1359ifeq ($(FULL_TARGET),powerpc-netbsd)
1360REQUIRE_PACKAGES_RTL=1
1361endif
1362ifeq ($(FULL_TARGET),powerpc-amiga)
1363REQUIRE_PACKAGES_RTL=1
1364endif
1365ifeq ($(FULL_TARGET),powerpc-macosclassic)
1366REQUIRE_PACKAGES_RTL=1
1367endif
1368ifeq ($(FULL_TARGET),powerpc-darwin)
1369REQUIRE_PACKAGES_RTL=1
1370endif
1371ifeq ($(FULL_TARGET),powerpc-morphos)
1372REQUIRE_PACKAGES_RTL=1
1373endif
1374ifeq ($(FULL_TARGET),powerpc-embedded)
1375REQUIRE_PACKAGES_RTL=1
1376endif
1377ifeq ($(FULL_TARGET),powerpc-wii)
1378REQUIRE_PACKAGES_RTL=1
1379endif
1380ifeq ($(FULL_TARGET),powerpc-aix)
1381REQUIRE_PACKAGES_RTL=1
1382endif
1383ifeq ($(FULL_TARGET),sparc-linux)
1384REQUIRE_PACKAGES_RTL=1
1385endif
1386ifeq ($(FULL_TARGET),sparc-netbsd)
1387REQUIRE_PACKAGES_RTL=1
1388endif
1389ifeq ($(FULL_TARGET),sparc-solaris)
1390REQUIRE_PACKAGES_RTL=1
1391endif
1392ifeq ($(FULL_TARGET),sparc-embedded)
1393REQUIRE_PACKAGES_RTL=1
1394endif
1395ifeq ($(FULL_TARGET),x86_64-linux)
1396REQUIRE_PACKAGES_RTL=1
1397endif
1398ifeq ($(FULL_TARGET),x86_64-freebsd)
1399REQUIRE_PACKAGES_RTL=1
1400endif
1401ifeq ($(FULL_TARGET),x86_64-haiku)
1402REQUIRE_PACKAGES_RTL=1
1403endif
1404ifeq ($(FULL_TARGET),x86_64-netbsd)
1405REQUIRE_PACKAGES_RTL=1
1406endif
1407ifeq ($(FULL_TARGET),x86_64-solaris)
1408REQUIRE_PACKAGES_RTL=1
1409endif
1410ifeq ($(FULL_TARGET),x86_64-openbsd)
1411REQUIRE_PACKAGES_RTL=1
1412endif
1413ifeq ($(FULL_TARGET),x86_64-darwin)
1414REQUIRE_PACKAGES_RTL=1
1415endif
1416ifeq ($(FULL_TARGET),x86_64-win64)
1417REQUIRE_PACKAGES_RTL=1
1418endif
1419ifeq ($(FULL_TARGET),x86_64-embedded)
1420REQUIRE_PACKAGES_RTL=1
1421endif
1422ifeq ($(FULL_TARGET),x86_64-iphonesim)
1423REQUIRE_PACKAGES_RTL=1
1424endif
1425ifeq ($(FULL_TARGET),x86_64-android)
1426REQUIRE_PACKAGES_RTL=1
1427endif
1428ifeq ($(FULL_TARGET),x86_64-aros)
1429REQUIRE_PACKAGES_RTL=1
1430endif
1431ifeq ($(FULL_TARGET),x86_64-dragonfly)
1432REQUIRE_PACKAGES_RTL=1
1433endif
1434ifeq ($(FULL_TARGET),arm-linux)
1435REQUIRE_PACKAGES_RTL=1
1436endif
1437ifeq ($(FULL_TARGET),arm-netbsd)
1438REQUIRE_PACKAGES_RTL=1
1439endif
1440ifeq ($(FULL_TARGET),arm-palmos)
1441REQUIRE_PACKAGES_RTL=1
1442endif
1443ifeq ($(FULL_TARGET),arm-wince)
1444REQUIRE_PACKAGES_RTL=1
1445endif
1446ifeq ($(FULL_TARGET),arm-gba)
1447REQUIRE_PACKAGES_RTL=1
1448endif
1449ifeq ($(FULL_TARGET),arm-nds)
1450REQUIRE_PACKAGES_RTL=1
1451endif
1452ifeq ($(FULL_TARGET),arm-embedded)
1453REQUIRE_PACKAGES_RTL=1
1454endif
1455ifeq ($(FULL_TARGET),arm-symbian)
1456REQUIRE_PACKAGES_RTL=1
1457endif
1458ifeq ($(FULL_TARGET),arm-android)
1459REQUIRE_PACKAGES_RTL=1
1460endif
1461ifeq ($(FULL_TARGET),arm-aros)
1462REQUIRE_PACKAGES_RTL=1
1463endif
1464ifeq ($(FULL_TARGET),arm-ios)
1465REQUIRE_PACKAGES_RTL=1
1466endif
1467ifeq ($(FULL_TARGET),powerpc64-linux)
1468REQUIRE_PACKAGES_RTL=1
1469endif
1470ifeq ($(FULL_TARGET),powerpc64-darwin)
1471REQUIRE_PACKAGES_RTL=1
1472endif
1473ifeq ($(FULL_TARGET),powerpc64-embedded)
1474REQUIRE_PACKAGES_RTL=1
1475endif
1476ifeq ($(FULL_TARGET),powerpc64-aix)
1477REQUIRE_PACKAGES_RTL=1
1478endif
1479ifeq ($(FULL_TARGET),avr-embedded)
1480REQUIRE_PACKAGES_RTL=1
1481endif
1482ifeq ($(FULL_TARGET),armeb-linux)
1483REQUIRE_PACKAGES_RTL=1
1484endif
1485ifeq ($(FULL_TARGET),armeb-embedded)
1486REQUIRE_PACKAGES_RTL=1
1487endif
1488ifeq ($(FULL_TARGET),mips-linux)
1489REQUIRE_PACKAGES_RTL=1
1490endif
1491ifeq ($(FULL_TARGET),mipsel-linux)
1492REQUIRE_PACKAGES_RTL=1
1493endif
1494ifeq ($(FULL_TARGET),mipsel-embedded)
1495REQUIRE_PACKAGES_RTL=1
1496endif
1497ifeq ($(FULL_TARGET),mipsel-android)
1498REQUIRE_PACKAGES_RTL=1
1499endif
1500ifeq ($(FULL_TARGET),jvm-java)
1501REQUIRE_PACKAGES_RTL=1
1502endif
1503ifeq ($(FULL_TARGET),jvm-android)
1504REQUIRE_PACKAGES_RTL=1
1505endif
1506ifeq ($(FULL_TARGET),i8086-embedded)
1507REQUIRE_PACKAGES_RTL=1
1508endif
1509ifeq ($(FULL_TARGET),i8086-msdos)
1510REQUIRE_PACKAGES_RTL=1
1511endif
1512ifeq ($(FULL_TARGET),i8086-win16)
1513REQUIRE_PACKAGES_RTL=1
1514endif
1515ifeq ($(FULL_TARGET),aarch64-linux)
1516REQUIRE_PACKAGES_RTL=1
1517endif
1518ifeq ($(FULL_TARGET),aarch64-darwin)
1519REQUIRE_PACKAGES_RTL=1
1520endif
1521ifeq ($(FULL_TARGET),aarch64-android)
1522REQUIRE_PACKAGES_RTL=1
1523endif
1524ifeq ($(FULL_TARGET),aarch64-ios)
1525REQUIRE_PACKAGES_RTL=1
1526endif
1527ifeq ($(FULL_TARGET),wasm-wasm)
1528REQUIRE_PACKAGES_RTL=1
1529endif
1530ifeq ($(FULL_TARGET),sparc64-linux)
1531REQUIRE_PACKAGES_RTL=1
1532endif
1533ifdef REQUIRE_PACKAGES_RTL
1534PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
1535ifneq ($(PACKAGEDIR_RTL),)
1536ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
1537UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
1538else
1539UNITDIR_RTL=$(PACKAGEDIR_RTL)
1540endif
1541ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
1542UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
1543else
1544ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
1545UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
1546else
1547UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
1548endif
1549endif
1550ifdef CHECKDEPEND
1551$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
1552	$(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
1553override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
1554endif
1555else
1556PACKAGEDIR_RTL=
1557UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
1558ifneq ($(UNITDIR_RTL),)
1559UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
1560else
1561UNITDIR_RTL=
1562endif
1563endif
1564ifdef UNITDIR_RTL
1565override COMPILER_UNITDIR+=$(UNITDIR_RTL)
1566endif
1567ifdef UNITDIR_FPMAKE_RTL
1568override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
1569endif
1570endif
1571ifndef NOCPUDEF
1572override FPCOPTDEF=$(ARCH)
1573endif
1574ifneq ($(OS_TARGET),$(OS_SOURCE))
1575override FPCOPT+=-T$(OS_TARGET)
1576endif
1577ifneq ($(CPU_TARGET),$(CPU_SOURCE))
1578override FPCOPT+=-P$(ARCH)
1579endif
1580ifeq ($(OS_SOURCE),openbsd)
1581override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
1582override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
1583override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)
1584endif
1585ifndef CROSSBOOTSTRAP
1586ifneq ($(BINUTILSPREFIX),)
1587override FPCOPT+=-XP$(BINUTILSPREFIX)
1588endif
1589ifneq ($(BINUTILSPREFIX),)
1590override FPCOPT+=-Xr$(RLINKPATH)
1591endif
1592endif
1593ifndef CROSSCOMPILE
1594ifneq ($(BINUTILSPREFIX),)
1595override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
1596override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)
1597endif
1598endif
1599ifdef UNITDIR
1600override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
1601endif
1602ifdef LIBDIR
1603override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
1604endif
1605ifdef OBJDIR
1606override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
1607endif
1608ifdef INCDIR
1609override FPCOPT+=$(addprefix -Fi,$(INCDIR))
1610endif
1611ifdef LINKSMART
1612override FPCOPT+=-XX
1613endif
1614ifdef CREATESMART
1615override FPCOPT+=-CX
1616endif
1617ifdef DEBUG
1618override FPCOPT+=-gl
1619override FPCOPTDEF+=DEBUG
1620endif
1621ifdef RELEASE
1622FPCCPUOPT:=-O2
1623override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
1624override FPCOPTDEF+=RELEASE
1625endif
1626ifdef STRIP
1627override FPCOPT+=-Xs
1628endif
1629ifdef OPTIMIZE
1630override FPCOPT+=-O2
1631endif
1632ifdef VERBOSE
1633override FPCOPT+=-vwni
1634endif
1635ifdef COMPILER_OPTIONS
1636override FPCOPT+=$(COMPILER_OPTIONS)
1637endif
1638ifdef COMPILER_UNITDIR
1639override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
1640endif
1641ifdef COMPILER_LIBRARYDIR
1642override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
1643endif
1644ifdef COMPILER_OBJECTDIR
1645override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
1646endif
1647ifdef COMPILER_INCLUDEDIR
1648override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
1649endif
1650ifdef CROSSBINDIR
1651override FPCOPT+=-FD$(CROSSBINDIR)
1652endif
1653ifdef COMPILER_TARGETDIR
1654override FPCOPT+=-FE$(COMPILER_TARGETDIR)
1655ifeq ($(COMPILER_TARGETDIR),.)
1656override TARGETDIRPREFIX=
1657else
1658override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
1659endif
1660endif
1661ifdef COMPILER_UNITTARGETDIR
1662override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
1663ifeq ($(COMPILER_UNITTARGETDIR),.)
1664override UNITTARGETDIRPREFIX=
1665else
1666override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
1667endif
1668else
1669ifdef COMPILER_TARGETDIR
1670override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
1671override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
1672endif
1673endif
1674ifdef CREATESHARED
1675override FPCOPT+=-Cg
1676endif
1677ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
1678ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
1679override FPCOPT+=-Cg
1680endif
1681endif
1682ifdef LINKSHARED
1683endif
1684ifdef OPT
1685override FPCOPT+=$(OPT)
1686endif
1687ifdef FPMAKEBUILDOPT
1688override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)
1689endif
1690ifdef FPCOPTDEF
1691override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
1692endif
1693ifdef CFGFILE
1694override FPCOPT+=@$(CFGFILE)
1695endif
1696ifdef USEENV
1697override FPCEXTCMD:=$(FPCOPT)
1698override FPCOPT:=!FPCEXTCMD
1699export FPCEXTCMD
1700endif
1701override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
1702override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
1703ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
1704override ACROSSCOMPILE=1
1705endif
1706ifdef ACROSSCOMPILE
1707override FPCOPT+=$(CROSSOPT)
1708endif
1709override COMPILER:=$(strip $(FPC) $(FPCOPT))
1710ifneq (,$(findstring -sh ,$(COMPILER)))
1711UseEXECPPAS=1
1712endif
1713ifneq (,$(findstring -s ,$(COMPILER)))
1714ifeq ($(FULL_SOURCE),$(FULL_TARGET))
1715UseEXECPPAS=1
1716endif
1717endif
1718ifneq ($(UseEXECPPAS),1)
1719EXECPPAS=
1720else
1721ifdef RUNBATCH
1722EXECPPAS:=@$(RUNBATCH) $(PPAS)
1723else
1724EXECPPAS:=@$(PPAS)
1725endif
1726endif
1727.PHONY: fpc_exes
1728ifndef CROSSINSTALL
1729ifneq ($(TARGET_PROGRAMS),)
1730override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
1731override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
1732override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))
1733override ALLTARGET+=fpc_exes
1734override INSTALLEXEFILES+=$(EXEFILES)
1735override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
1736override CLEANEXEDBGFILES+=$(EXEDBGFILES)
1737ifeq ($(OS_TARGET),os2)
1738override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
1739endif
1740ifeq ($(OS_TARGET),emx)
1741override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
1742endif
1743endif
1744endif
1745fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
1746ifdef TARGET_RSTS
1747override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
1748override CLEANRSTFILES+=$(RSTFILES)
1749endif
1750.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
1751$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
1752	@$(ECHOREDIR) Compiled > $(FPCMADE)
1753fpc_all: $(FPCMADE)
1754fpc_smart:
1755	$(MAKE) all LINKSMART=1 CREATESMART=1
1756fpc_debug:
1757	$(MAKE) all DEBUG=1
1758fpc_release:
1759	$(MAKE) all RELEASE=1
1760.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
1761$(COMPILER_UNITTARGETDIR):
1762	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
1763$(COMPILER_TARGETDIR):
1764	$(MKDIRTREE) $(COMPILER_TARGETDIR)
1765%$(PPUEXT): %.pp
1766	$(COMPILER) $<
1767	$(EXECPPAS)
1768%$(PPUEXT): %.pas
1769	$(COMPILER) $<
1770	$(EXECPPAS)
1771%$(EXEEXT): %.pp
1772	$(COMPILER) $<
1773	$(EXECPPAS)
1774%$(EXEEXT): %.pas
1775	$(COMPILER) $<
1776	$(EXECPPAS)
1777%$(EXEEXT): %.lpr
1778	$(COMPILER) $<
1779	$(EXECPPAS)
1780%$(EXEEXT): %.dpr
1781	$(COMPILER) $<
1782	$(EXECPPAS)
1783%.res: %.rc
1784	windres -i $< -o $@
1785vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
1786vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
1787vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
1788vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
1789vpath %.inc $(COMPILER_INCLUDEDIR)
1790vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
1791vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
1792.PHONY: fpc_shared
1793override INSTALLTARGET+=fpc_shared_install
1794ifndef SHARED_LIBVERSION
1795SHARED_LIBVERSION=$(FPC_VERSION)
1796endif
1797ifndef SHARED_LIBNAME
1798SHARED_LIBNAME=$(PACKAGE_NAME)
1799endif
1800ifndef SHARED_FULLNAME
1801SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
1802endif
1803ifndef SHARED_LIBUNITS
1804SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
1805override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
1806endif
1807fpc_shared:
1808ifdef HASSHAREDLIB
1809	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
1810ifneq ($(SHARED_BUILD),n)
1811	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
1812endif
1813else
1814	@$(ECHO) Shared Libraries not supported
1815endif
1816fpc_shared_install:
1817ifneq ($(SHARED_BUILD),n)
1818ifneq ($(SHARED_LIBUNITS),)
1819ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
1820	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
1821endif
1822endif
1823endif
1824.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
1825ifdef INSTALL_UNITS
1826override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
1827endif
1828ifdef INSTALL_BUILDUNIT
1829override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
1830endif
1831ifdef INSTALLPPUFILES
1832ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICLIBEXT))
1833override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
1834else
1835override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
1836endif
1837ifneq ($(UNITTARGETDIRPREFIX),)
1838override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
1839override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
1840endif
1841override INSTALL_CREATEPACKAGEFPC=1
1842endif
1843ifdef INSTALLEXEFILES
1844ifneq ($(TARGETDIRPREFIX),)
1845override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
1846endif
1847endif
1848fpc_install: all $(INSTALLTARGET)
1849ifdef INSTALLEXEFILES
1850	$(MKDIR) $(INSTALL_BINDIR)
1851	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
1852endif
1853ifdef INSTALL_CREATEPACKAGEFPC
1854ifdef FPCMAKE
1855ifdef PACKAGE_VERSION
1856ifneq ($(wildcard Makefile.fpc),)
1857	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
1858	$(MKDIR) $(INSTALL_UNITDIR)
1859	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
1860endif
1861endif
1862endif
1863endif
1864ifdef INSTALLPPUFILES
1865	$(MKDIR) $(INSTALL_UNITDIR)
1866	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
1867ifneq ($(INSTALLPPULINKFILES),)
1868	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
1869endif
1870ifneq ($(wildcard $(LIB_FULLNAME)),)
1871	$(MKDIR) $(INSTALL_LIBDIR)
1872	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
1873ifdef inUnix
1874	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
1875endif
1876endif
1877endif
1878ifdef INSTALL_FILES
1879	$(MKDIR) $(INSTALL_DATADIR)
1880	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
1881endif
1882fpc_sourceinstall: distclean
1883	$(MKDIR) $(INSTALL_SOURCEDIR)
1884	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
1885fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
1886ifdef HASEXAMPLES
1887	$(MKDIR) $(INSTALL_EXAMPLEDIR)
1888endif
1889ifdef EXAMPLESOURCEFILES
1890	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
1891endif
1892ifdef TARGET_EXAMPLEDIRS
1893	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
1894endif
1895.PHONY: fpc_clean fpc_cleanall fpc_distclean
1896ifdef EXEFILES
1897override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
1898override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
1899endif
1900ifdef CLEAN_PROGRAMS
1901override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
1902override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
1903endif
1904ifdef CLEAN_UNITS
1905override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
1906endif
1907ifdef CLEANPPUFILES
1908override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
1909ifdef DEBUGSYMEXT
1910override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
1911endif
1912override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
1913override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
1914endif
1915fpc_clean: $(CLEANTARGET)
1916ifdef CLEANEXEFILES
1917	-$(DEL) $(CLEANEXEFILES)
1918endif
1919ifdef CLEANEXEDBGFILES
1920	-$(DELTREE) $(CLEANEXEDBGFILES)
1921endif
1922ifdef CLEANPPUFILES
1923	-$(DEL) $(CLEANPPUFILES)
1924endif
1925ifneq ($(CLEANPPULINKFILES),)
1926	-$(DEL) $(CLEANPPULINKFILES)
1927endif
1928ifdef CLEANRSTFILES
1929	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
1930endif
1931ifdef CLEAN_FILES
1932	-$(DEL) $(CLEAN_FILES)
1933endif
1934ifdef LIB_NAME
1935	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
1936endif
1937	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
1938	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
1939fpc_cleanall: $(CLEANTARGET)
1940ifdef CLEANEXEFILES
1941	-$(DEL) $(CLEANEXEFILES)
1942endif
1943ifdef COMPILER_UNITTARGETDIR
1944ifdef CLEANPPUFILES
1945	-$(DEL) $(CLEANPPUFILES)
1946endif
1947ifneq ($(CLEANPPULINKFILES),)
1948	-$(DEL) $(CLEANPPULINKFILES)
1949endif
1950ifdef CLEANRSTFILES
1951	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
1952endif
1953endif
1954ifdef CLEAN_FILES
1955	-$(DEL) $(CLEAN_FILES)
1956endif
1957	-$(DELTREE) units
1958	-$(DELTREE) bin
1959	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
1960ifneq ($(PPUEXT),.ppu)
1961	-$(DEL) *.o *.ppu *.a
1962endif
1963	-$(DELTREE) *$(SMARTEXT)
1964	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
1965	-$(DEL) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
1966ifdef AOUTEXT
1967	-$(DEL) *$(AOUTEXT)
1968endif
1969ifdef DEBUGSYMEXT
1970	-$(DEL) *$(DEBUGSYMEXT)
1971endif
1972ifdef LOCALFPMAKEBIN
1973	-$(DEL) $(LOCALFPMAKEBIN)
1974	-$(DEL) $(FPMAKEBINOBJ)
1975endif
1976fpc_distclean: cleanall
1977.PHONY: fpc_baseinfo
1978override INFORULES+=fpc_baseinfo
1979fpc_baseinfo:
1980	@$(ECHO)
1981	@$(ECHO)  == Package info ==
1982	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
1983	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
1984	@$(ECHO)
1985	@$(ECHO)  == Configuration info ==
1986	@$(ECHO)
1987	@$(ECHO)  FPC.......... $(FPC)
1988	@$(ECHO)  FPC Version.. $(FPC_VERSION)
1989	@$(ECHO)  Source CPU... $(CPU_SOURCE)
1990	@$(ECHO)  Target CPU... $(CPU_TARGET)
1991	@$(ECHO)  Source OS.... $(OS_SOURCE)
1992	@$(ECHO)  Target OS.... $(OS_TARGET)
1993	@$(ECHO)  Full Source.. $(FULL_SOURCE)
1994	@$(ECHO)  Full Target.. $(FULL_TARGET)
1995	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
1996	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
1997	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
1998	@$(ECHO)
1999	@$(ECHO)  == Directory info ==
2000	@$(ECHO)
2001	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
2002	@$(ECHO)
2003	@$(ECHO)  Basedir......... $(BASEDIR)
2004	@$(ECHO)  FPCDir.......... $(FPCDIR)
2005	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
2006	@$(ECHO)  UnitsDir........ $(UNITSDIR)
2007	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
2008	@$(ECHO)
2009	@$(ECHO)  GCC library..... $(GCCLIBDIR)
2010	@$(ECHO)  Other library... $(OTHERLIBDIR)
2011	@$(ECHO)
2012	@$(ECHO)  == Tools info ==
2013	@$(ECHO)
2014	@$(ECHO)  As........ $(AS)
2015	@$(ECHO)  Ld........ $(LD)
2016	@$(ECHO)  Ar........ $(AR)
2017	@$(ECHO)  Rc........ $(RC)
2018	@$(ECHO)
2019	@$(ECHO)  Mv........ $(MVPROG)
2020	@$(ECHO)  Cp........ $(CPPROG)
2021	@$(ECHO)  Rm........ $(RMPROG)
2022	@$(ECHO)  GInstall.. $(GINSTALL)
2023	@$(ECHO)  Echo...... $(ECHO)
2024	@$(ECHO)  Shell..... $(SHELL)
2025	@$(ECHO)  Date...... $(DATE)
2026	@$(ECHO)  FPCMake... $(FPCMAKE)
2027	@$(ECHO)  PPUMove... $(PPUMOVE)
2028	@$(ECHO)  Zip....... $(ZIPPROG)
2029	@$(ECHO)
2030	@$(ECHO)  == Object info ==
2031	@$(ECHO)
2032	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
2033	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
2034	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
2035	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
2036	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
2037	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
2038	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
2039	@$(ECHO)
2040	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
2041	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
2042	@$(ECHO)
2043	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
2044	@$(ECHO)  Install Files....... $(INSTALL_FILES)
2045	@$(ECHO)
2046	@$(ECHO)  == Install info ==
2047	@$(ECHO)
2048	@$(ECHO)  DateStr.............. $(DATESTR)
2049	@$(ECHO)  ZipName.............. $(ZIPNAME)
2050	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
2051	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
2052	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
2053	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
2054	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
2055	@$(ECHO)
2056	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
2057	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
2058	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
2059	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
2060	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
2061	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
2062	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
2063	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
2064	@$(ECHO)
2065	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
2066	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
2067	@$(ECHO)
2068.PHONY: fpc_info
2069fpc_info: $(INFORULES)
2070.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
2071	fpc_makefile_dirs
2072fpc_makefile:
2073	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
2074fpc_makefile_sub1:
2075ifdef TARGET_DIRS
2076	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
2077endif
2078ifdef TARGET_EXAMPLEDIRS
2079	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
2080endif
2081fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
2082fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
2083fpc_makefiles: fpc_makefile fpc_makefile_dirs
2084debug: fpc_debug
2085smart: fpc_smart
2086release: fpc_release
2087units: fpc_units
2088examples:
2089shared: fpc_shared
2090install: fpc_install
2091sourceinstall: fpc_sourceinstall
2092exampleinstall: fpc_exampleinstall
2093distinstall:
2094zipinstall:
2095zipsourceinstall:
2096zipexampleinstall:
2097zipdistinstall:
2098cleanall: fpc_cleanall
2099makefiles: fpc_makefiles
2100.PHONY: debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall cleanall makefiles
2101ifneq ($(wildcard fpcmake.loc),)
2102include fpcmake.loc
2103endif
2104unexport FPC_VERSION
2105TEST_HOSTNAME:=$(firstword $(subst ., ,$(shell hostname)))
2106override TEST_FPC:=$(subst \,/,$(TEST_FPC))
2107ifndef TEST_FPC
2108TEST_FPC=$(wildcard $(dir $(CURDIR))compiler/$(notdir $(FPC)))
2109ifeq ($(TEST_FPC), )
2110$(error "*** ERROR: TEST_FPC is missing ***")
2111endif
2112endif
2113ifndef TEST_OPT
2114TEST_OPT=
2115endif
2116override TEST_OPT+=-Fd
2117ifndef TEST_FPC_VERSION
2118TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTODW)
2119TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO))
2120endif
2121export TEST_FPC TEST_FPC_VERSION TEST_FPC_COMPILERINFO
2122ifneq ($(words $(TEST_FPC_COMPILERINFO)),7)
2123TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSP)
2124TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTP)
2125TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSO)
2126TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTO)
2127TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iD)
2128TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iW)
2129endif
2130ifndef TEST_CPU_SOURCE
2131TEST_CPU_SOURCE:=$(word 2,$(TEST_FPC_COMPILERINFO))
2132endif
2133ifndef TEST_CPU_TARGET
2134TEST_CPU_TARGET:=$(word 3,$(TEST_FPC_COMPILERINFO))
2135endif
2136ifndef TEST_OS_SOURCE
2137TEST_OS_SOURCE:=$(word 4,$(TEST_FPC_COMPILERINFO))
2138endif
2139ifndef TEST_OS_TARGET
2140TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO))
2141endif
2142ifndef TEST_FPC_DATE
2143TEST_FPC_DATE:=$(word 6,$(TEST_FPC_COMPILERINFO))
2144endif
2145ifndef TEST_FPC_FULLVERSION
2146TEST_FPC_FULLVERSION:=$(word 7,$(TEST_FPC_COMPILERINFO))
2147endif
2148TEST_FULL_TARGET=$(TEST_CPU_TARGET)-$(TEST_OS_TARGET)
2149ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
2150TEST_TARGETSUFFIX=$(TEST_OS_TARGET)
2151else
2152ifneq ($(findstring $(TEST_OS_TARGET),$(LIMIT83fs)),)
2153TEST_TARGETSUFFIX=$(TEST_OS_TARGET)
2154else
2155TEST_TARGETSUFFIX=$(TEST_FULL_TARGET)
2156endif
2157endif
2158ifndef TEST_CCOMPILER
2159ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET))
2160ifeq ($(OS_TARGET),$(TEST_OS_TARGET))
2161TEST_CCOMPILER:=$(strip $(wildcard $(addsuffix /gcc$(SRCEXEEXT),$(SEARCHPATH))))
2162ifneq ($(TEST_CCOMPILER),)
2163TEST_CCOMPILER:=$(firstword $(TEST_CCOMPILER))
2164endif
2165endif
2166endif
2167endif
2168ifeq ($(TEST_OS_TARGET),msdos)
2169override TEST_OPT+=-XX
2170endif
2171TEST_OUTPUTDIR=output/$(TEST_TARGETSUFFIX)
2172C_SUBDIR=$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)
2173ifneq ($(DATE),__missing_command_DATE)
2174TEST_DATETIME:=$(shell $(DATE) +%Y%m%d%H%M)
2175else
2176TEST_DATETIME="No-date"
2177endif
2178ifndef TEST_USER
2179TEST_USER=$(USER)
2180ifeq ($(TEST_USER),)
2181TEST_USER=$(USERNAME)
2182endif
2183endif
2184DB_TARGZ=$(TEST_HOSTNAME)-$(TEST_DATETIME).tar.gz
2185DB_HOST=fpc@www.freepascal.org
2186DB_UPLOADDIR=/home/fpc/testsuite/incoming
2187ifdef inWinNT
2188inWinDOS=1
2189endif
2190ifeq ($(OS_SOURCE),go32v2)
2191inWinDOS=1
2192inDOS=1
2193SINGLEDOTESTRUNS=1
2194endif
2195ifndef FAILLIST
2196export FAILLIST:=$(TEST_OUTPUTDIR)/faillist
2197endif
2198ifndef LONGLOG
2199export LONGLOG:=$(TEST_OUTPUTDIR)/longlog
2200endif
2201ifndef LOG
2202export LOG:=$(TEST_OUTPUTDIR)/log
2203endif
2204LOGFILES=$(TEST_OUTPUTDIR)/log $(TEST_OUTPUTDIR)/longlog $(TEST_OUTPUTDIR)/faillist
2205LOGEXT=.testlog .tbslog .tbflog .webtbslog .webtbflog
2206TESTUNITDIRS=system dos crt objects strings sysutils math sharemem strutils matrix lineinfo ucomplex fpwidestring cpu fmtbcd windows
2207TESTDIRECTDIRS=
2208TESTSUBDIRS=cg cg/variants cg/cdecl cpu16 cpu16/i8086 library opt $(addprefix units/,$(TESTUNITDIRS))
2209TESTPACKAGESDIRS=win-base webtbs hash fcl-registry fcl-process zlib fcl-db fcl-xml cocoaint bzip2
2210TESTPACKAGESUBDIRS=$(addprefix packages/,$(TESTPACKAGESDIRS))
2211TESTPACKAGESDIRECTDIRS=rtl-objpas rtl-generics
2212TESTPACKAGESDIRECTSUBDIRS=$(addprefix ../packages/,$(addsuffix /tests,$(TESTPACKAGESDIRECTDIRS)))
2213ifdef QUICKTEST
2214export QUICKTEST
2215else
2216override TESTSUBDIRS+=$(TESTPACKAGESUBDIRS) alglib
2217override TESTDIRECTDIRS+=$(TESTPACKAGESDIRECTSUBDIRS)
2218endif
2219ifndef CHUNKSIZE
2220export CHUNKSIZE:=100
2221endif
2222TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS)) $(TESTDIRECTDIRS)
2223.PHONY: utils tstunits copyfiles testprep
2224$(TEST_OUTPUTDIR):
2225	$(MKDIRTREE) $(TEST_OUTPUTDIR)
2226utils:
2227	$(MAKE) -C utils utils
2228utilsdb:
2229	$(MAKE) -C utils utilsdb
2230ifndef DIGEST
2231DIGEST=utils/digest
2232endif
2233ifndef DOTEST
2234DOTEST=utils/dotest
2235endif
2236ifndef CONCAT
2237CONCAT=utils/concat
2238endif
2239ifndef GPARMAKE
2240GPARMAKE=./gparmake$(EXEEXT)
2241endif
2242ifndef PREPUP
2243PREPUP=utils/prepup
2244endif
2245ifndef CREATELST
2246CREATELST=./createlst$(EXEEXT)
2247endif
2248tstunits:
2249ifdef inOS2
2250	$(MAKE) -C tstunits FPC_VERSION= FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) "OPT=$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
2251else
2252	$(MAKE) -C tstunits FPC_VERSION= FPC=$(TEST_FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) 'OPT=$(TEST_OPT)' CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
2253endif
2254.PHONY: create_c_objects delete_c_objects copyfiles test_c_objects
2255C_SOURCE_DIR=test/cg/obj
2256C_SOURCES=ctest.c tcext3.c tcext4.c tcext5.c tcext6.c
2257CPP_SOURCES=cpptcl1.cpp cpptcl2.cpp
2258TASM_SOURCES=ttasm1.asm
2259ifneq ($(TEST_ABI),)
2260C_OBJECTS_DIR=$(C_SOURCE_DIR)/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)-$(TEST_ABI)
2261else
2262C_OBJECTS_DIR=$(C_SOURCE_DIR)/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)
2263endif
2264C_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .c,.o, $(C_SOURCES)))
2265CPP_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .cpp,.o, $(CPP_SOURCES)))
2266TASM_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .asm,.obj, $(TASM_SOURCES)))
2267create_c_objects:
2268ifneq ($(TEST_CCOMPILER),)
2269		-$(COPY) $(addprefix $(C_SOURCE_DIR)/, $(C_SOURCES)) $(C_OBJECTS_DIR)
2270		$(MAKE) $(C_OBJECTS)
2271		-$(COPY) $(addprefix $(C_SOURCE_DIR)/, $(CPP_SOURCES)) $(C_OBJECTS_DIR)
2272		$(MAKE) $(CPP_OBJECTS)
2273		-$(DEL) $(addprefix $(C_OBJECTS_DIR)/, $(C_SOURCES) $(CPP_SOURCES))
2274else
2275		$(ECHO) create_c_objects rule needs a valid C compiler in TEST_CCOMPILER variable
2276		$(ECHO) TEST_CFLAGS variable is passed as options is used to compile the objects
2277endif
2278delete_c_objects:
2279ifneq ($(TEST_CCOMPILER),)
2280		-$(DEL) $(C_OBJECTS) $(CPP_OBJECTS)
2281else
2282		$(ECHO) delete_c_objects rule needs a valid C compiler in TEST_CCOMPILER variable
2283		$(ECHO) to be able to recompile the objects using create_objects rule.
2284endif
2285$(C_OBJECTS) : %.o: %.c
2286		$(TEST_CCOMPILER) -c $(TEST_CFLAGS) $< -o $@
2287$(CPP_OBJECTS) : %.o: %.cpp
2288		$(TEST_CCOMPILER) -c $(TEST_CFLAGS) $< -o $@
2289copyfiles:
2290	-$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/cg
2291	-$(COPY) $(C_OBJECTS) $(TEST_OUTPUTDIR)/test/cg
2292	-$(COPY) $(CPP_OBJECTS) $(TEST_OUTPUTDIR)/test/cg
2293	-$(COPY) $(TASM_OBJECTS) $(TEST_OUTPUTDIR)/test/cg
2294	-$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/units/system
2295testprep: testprep-stamp.$(TEST_FULL_TARGET)
2296testprep-stamp.$(TEST_FULL_TARGET): utils tstunits copyfiles
2297	$(ECHOREDIR) $(DATE) > testprep-stamp.$(TEST_FULL_TARGET)
2298ifneq ($(TEST_FPC),ppc386$(EXEEXT))
2299ifeq ($(findstring -c$(TEST_FPC),$(DOTESTOPT)),)
2300override DOTESTOPT+=-c$(TEST_FPC)
2301endif
2302endif
2303ifneq ($(FULL_TARGET),$(TEST_FULL_TARGET))
2304override DOTESTOPT+=-T$(TEST_FULL_TARGET)
2305endif
2306ifneq ($(TEST_BINUTILSPREFIX),)
2307override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX) -Y-Xd
2308endif
2309ifdef inDOS
2310override DOTESTOPT+=-X
2311endif
2312ifdef TEST_RSH
2313override DOTESTOPT+=-R$(TEST_RSH)
2314endif
2315ifdef TEST_SSH
2316override DOTESTOPT+=-R$(TEST_SSH) -S
2317endif
2318ifdef TEST_REMOTEPATH
2319override DOTESTOPT+=-P$(TEST_REMOTEPATH)
2320endif
2321ifdef TEST_DELBEFORE
2322override DOTESTOPT+=-B
2323endif
2324ifdef TEST_DELTEMP
2325override DOTESTOPT+=-Z
2326endif
2327ifdef TEST_TIMEOUT
2328override DOTESTOPT+=-O
2329endif
2330ifdef TEST_VERBOSE
2331override DOTESTOPT+=-V
2332endif
2333ifdef TEST_BENCH
2334override DOTESTOPT+=-D
2335endif
2336ifdef V
2337Q=
2338QECHO=
2339else
2340Q=@
2341QECHO=@echo $(1)
2342endif
2343ifdef TEST_REMOTEOPT
2344override DOTESTOPT+=-U$(TEST_REMOTEOPT)
2345endif
2346ifdef TEST_PUTTY
2347override DOTESTOPT+=-R$(TEST_PUTTY) -W
2348endif
2349ifdef TEST_ADB
2350override DOTESTOPT+=-ADB -R$(TEST_ADB)
2351endif
2352ifdef TEST_OPT
2353override DOTESTOPT+=$(addprefix -Y, $(TEST_OPT))
2354endif
2355ifdef TEST_REMOTEPW
2356override DOTESTOPT+=-U-pw -U$(TEST_REMOTEPW)
2357endif
2358ifdef GRAPH
2359override DOTESTOPT+=-g
2360endif
2361ifdef INTERACTIVE
2362override DOTESTOPT+=-i
2363endif
2364ifdef DOALL
2365override DOTESTOPT+=-a
2366endif
2367ifdef EMULATOR
2368override DOTESTOPT+=-M$(EMULATOR)
2369endif
2370ifdef USEENV
2371override DOTESTENV:=$(DOTESTOPT)
2372override DOTESTOPT=!DOTESTENV
2373export DOTESTENV
2374endif
2375DIRS=webtbs webtbf tbs tbf $(TESTDIRS)
2376vpath %.log $(TEST_OUTPUTDIR)
2377vpath %.elg $(TEST_OUTPUTDIR)
2378vpath %.o $(C_SUBDIR)
2379ifdef SINGLEDOTESTRUNS
2380TBSREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard tbs/t*.pp)))
2381TBFREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard tbf/t*.pp)))
2382WEBTBSREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard webtbs/t*.pp)))
2383WEBTBFREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard webtbf/t*.pp)))
2384TESTREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard $(addsuffix /t*.pp,$(TESTDIRS)))))
2385else
2386TBSREQ=$(TEST_OUTPUTDIR)/tbsdir-stamp.$(TEST_FULL_TARGET)
2387TBFREQ=$(TEST_OUTPUTDIR)/tbfdir-stamp.$(TEST_FULL_TARGET)
2388WEBTBSREQ=$(TEST_OUTPUTDIR)/webtbsdir-stamp.$(TEST_FULL_TARGET)
2389WEBTBFREQ=$(TEST_OUTPUTDIR)/webtbfdir-stamp.$(TEST_FULL_TARGET)
2390TESTREQ=$(TEST_OUTPUTDIR)/testdir-stamp.$(TEST_FULL_TARGET)
2391endif
2392%.log : %.pp testprep-stamp.$(TEST_FULL_TARGET)
2393	$(call QECHO,"  COMPILE $<")
2394	$(Q)$(DOTEST) $(DOTESTOPT) $<
2395%.elg : %.pp testprep-stamp.$(TEST_FULL_TARGET)
2396	$(call QECHO,"  EXECUTE $<")
2397	$(Q)$(DOTEST) $(DOTESTOPT) -e $<
2398ifdef TEST_CCOMPILER
2399%.o : %.c
2400	$(TEST_CCOMPILER) -c $< -o $(@D)/$(C_SUBDIR)/$(@F)
2401%.o : %.cc
2402	$(TEST_CCOMPILER) -c $< -o $(@D)/$(C_SUBDIR)/$(@F)
2403endif
2404.PHONY: alltbs alltbf allwebtbs allwebtbf alltest alltests
2405alltbs : testprep $(patsubst %.pp,%.log,$(sort $(wildcard tbs/t*.pp)))
2406alltbf : testprep $(patsubst %.pp,%.log,$(sort $(wildcard tbf/t*.pp)))
2407allwebtbs : testprep $(patsubst %.pp,%.log,$(sort $(wildcard webtbs/t*.pp)))
2408allwebtbf : testprep $(patsubst %.pp,%.log,$(sort $(wildcard webtbf/t*.pp)))
2409alltest : testprep $(patsubst %.pp,%.log,$(sort $(wildcard $(addsuffix /t*.pp,$(TESTDIRS)))))
2410ifndef SINGLEDOTESTRUNS
2411	$(Q)$(DOTEST) $(DOTESTOPT) -e $(wildcard $(addsuffix /t*.pp,$(TESTDIRS)))
2412endif
2413alltests: alltest alltbs alltbf allwebtbs allwebtbf
2414test_c_objects: testprep
2415	$(MAKE) $(patsubst %.pp,%.log, $(wildcard test/cg/cdecl/tcalext*.pp)))
2416	$(MAKE) $(patsubst %.pp,%.elg, $(wildcard test/cg/cdecl/tcalext*.pp)))
2417	$(MAKE) $(patsubst %.pp,%.log, $(wildcard test/cg/cdecl/tcppcl*.pp)))
2418	$(MAKE) $(patsubst %.pp,%.elg, $(wildcard test/cg/cdecl/tcppcl*.pp)))
2419ifdef SINGLEDOTESTRUNS
2420.PHONY: allexectbs allexectbf allexecwebtbs allexecwebtbf allexectest allexectests
2421allexectbs: $(addsuffix .tbslog, $(LOGFILES))
2422allexectbf: $(addsuffix .tbflog, $(LOGFILES))
2423allexecwebtbs: $(addsuffix .webtbslog, $(LOGFILES))
2424allexecwebtbf: $(addsuffix .webtbflog, $(LOGFILES))
2425allexectest: $(addsuffix .testlog, $(LOGFILES))
2426$(TEST_OUTPUTDIR)/%.mergedlog : $(TEST_OUTPUTDIR)/%.testlog $(TEST_OUTPUTDIR)/%.tbslog $(TEST_OUTPUTDIR)/%.tbflog $(TEST_OUTPUTDIR)/%.webtbslog $(TEST_OUTPUTDIR)/%.webtbflog
2427	$(Q)$(CONCAT) $^ $@
2428	$(Q)$(COPY) $@ $(basename $@)
2429$(TEST_OUTPUTDIR)/%.tbslog : $(TBSREQ)
2430	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.tbslog
2431	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.tbslog
2432$(TEST_OUTPUTDIR)/%.tbflog : $(TBFREQ)
2433	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.tbflog
2434	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.tbflog
2435$(TEST_OUTPUTDIR)/%.webtbslog : $(WEBTBSREQ)
2436	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.webtbslog
2437	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.webtbslog
2438$(TEST_OUTPUTDIR)/%.webtbflog : $(WEBTBFREQ)
2439	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.webtbflog
2440	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.webtbflog
2441$(TEST_OUTPUTDIR)/%.testlog : $(TESTREQ)
2442	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.testlog
2443	$(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.testlog
2444allexectests:  $(TEST_OUTPUTDIR)/log.testlog $(TEST_OUTPUTDIR)/log.tbslog \
2445	$(TEST_OUTPUTDIR)/log.tbflog $(TEST_OUTPUTDIR)/log.webtbslog \
2446	$(TEST_OUTPUTDIR)/log.webtbflog \
2447	$(addprefix $(TEST_OUTPUTDIR)/,$(foreach EXT, $(LOGEXT), $(addsuffix $(EXT), faillist longlog))) \
2448	$(addsuffix .mergedlog, $(LOGFILES))
2449else
2450.PHONY: allexectests gparmake_allexectests
2451MAKEINC=$(TEST_OUTPUTDIR)/MakeChunks-$(TEST_TARGETSUFFIX).inc
2452$(GPARMAKE): utils/gparmake.pp $(CREATELST)
2453	$(Q)$(MAKE)  $(COMPILER_UNITTARGETDIR)
2454	$(FPC) -FE. utils/gparmake.pp $(OPT)
2455$(CREATELST): utils/createlst.pp
2456	$(Q)$(MAKE)  $(COMPILER_UNITTARGETDIR)
2457	$(FPC) -FE. utils/createlst.pp $(OPT)
2458$(MAKEINC): $(GPARMAKE) $(CREATELST)
2459	$(Q)$(MAKE) $(TEST_OUTPUTDIR)
2460	$(Q)$(CREATELST) filelisttest.lst $(TESTDIRS)
2461	$(Q)$(GPARMAKE) $(MAKEINC) test 1 $(CHUNKSIZE) @filelisttest.lst
2462	$(Q)$(CREATELST) filelisttbs.lst tbs
2463	$(Q)$(GPARMAKE) -a $(MAKEINC) tbs 10000 $(CHUNKSIZE) @filelisttbs.lst
2464	$(Q)$(CREATELST) filelisttbf.lst tbf
2465	$(Q)$(GPARMAKE) -a $(MAKEINC) tbf 15000 $(CHUNKSIZE) @filelisttbf.lst
2466	$(Q)$(CREATELST) filelistwebtbs.lst webtbs
2467	$(Q)$(GPARMAKE) -a $(MAKEINC) webtbs 20000 $(CHUNKSIZE) @filelistwebtbs.lst
2468	$(Q)$(CREATELST) filelistwebtbf.lst webtbf
2469	$(Q)$(GPARMAKE) -a $(MAKEINC) webtbf 30000 $(CHUNKSIZE) @filelistwebtbf.lst
2470ifeq (,$(findstring clean,$(firstword $(MAKECMDGOALS))))
2471ifneq (,$(findstring all,$(MAKECMDGOALS)))
2472ifneq (,$(wildcard $(MAKEINC)))
2473include $(TEST_OUTPUTDIR)/MakeChunks-$(TEST_TARGETSUFFIX).inc
2474endif
2475endif
2476endif
2477allexectests: $(MAKEINC)
2478	$(MAKE) gparmake_allexectests
2479endif
2480.PHONY: clean distclean clean_test clean_sources
2481clean_sources:
2482	-$(DEL) $(wildcard $(patsubst %.pp,%$(PPUEXT),$(wildcard $(addsuffix /*.pp,$(DIRS)))))
2483clean_test:
2484	-$(DELTREE) $(TEST_OUTPUTDIR)
2485	-$(DEL) core gmon.out testprep-stamp.$(TEST_FULL_TARGET) dotgz$(SRCBATCHEXT)
2486clean: clean_sources fpc_clean
2487	$(MAKE) clean_test CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH)
2488	$(MAKE) -C tstunits clean CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH)
2489	-$(DEL) filelisttest.lst filelisttbs.lst filelisttbf.lst filelistwebtbs.lst filelistwebtbf.lst
2490distclean: clean fpc_distclean
2491	$(DELTREE) output
2492	$(MAKE) -C utils distclean
2493	$(MAKE) -C tstunits distclean
2494	-$(DEL) testprep-stamp.*
2495.PHONY: all full digest onlyknown onlygraph onlyinteractive
2496digest : utils
2497	-$(DIGEST) $(LOG)
2498SVNVERSION:=$(firstword $(wildcard $(addsuffix /svnversion$(SRCEXEEXT),$(SEARCHPATH))))
2499ifneq ($(SVNVERSION),)
2500SVN_TESTS_REV_STR=$(shell $(SVNVERSION) -c .)
2501SVN_COMPILER_REV_STR=$(shell $(SVNVERSION) -c ../compiler)
2502SVN_RTL_REV_STR=$(shell $(SVNVERSION) -c ../rtl)
2503SVN_PACKAGES_REV_STR=$(shell $(SVNVERSION) -c ../packages)
2504endif
2505$(TEST_OUTPUTDIR)/dbdigest.cfg:
2506	$(ECHOREDIR) OS=$(TEST_OS_TARGET) > $(TEST_OUTPUTDIR)/dbdigest.cfg
2507	$(ECHOREDIR) CPU=$(TEST_CPU_TARGET) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2508	$(ECHOREDIR) Version=$(TEST_FPC_VERSION) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2509	$(ECHOREDIR) LogFile=log >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2510ifneq ($(TEST_USE_LONGLOG),)
2511	$(ECHOREDIR) LongLogFile=longlog >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2512endif
2513	$(ECHOREDIR) Submitter=$(TEST_USER) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2514	$(ECHOREDIR) Machine=$(TEST_HOSTNAME) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2515	$(ECHOREDIR) Comment=$(TEST_OPT) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2516ifneq ($(TEST_DATETIME),)
2517	$(ECHOREDIR) Date=$(TEST_DATETIME) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2518endif
2519ifneq ($(TEST_FPC_DATE),)
2520	$(ECHOREDIR) CompilerDate=$(TEST_FPC_DATE) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2521endif
2522ifneq ($(TEST_FPC_FULLVERSION),)
2523	$(ECHOREDIR) CompilerFullVersion=$(TEST_FPC_FULLVERSION) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2524endif
2525ifneq ($(SVNVERSION),)
2526	$(ECHOREDIR) svntestsrevision=$(SVN_TESTS_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2527	$(ECHOREDIR) svncompilerrevision=$(SVN_COMPILER_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2528	$(ECHOREDIR) svnrtlrevision=$(SVN_RTL_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2529	$(ECHOREDIR) svnpackagesrevision=$(SVN_PACKAGES_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
2530endif
2531ifeq ($(OS_SOURCE),openbsd)
2532ifeq ($(TARPROG),$(subst gtar,,$(TARPROG)))
2533  BSD_SYSTEM_TAR=1
2534endif
2535endif
2536ifdef BSD_SYSTEM_TAR
2537TARFROM=-I tar.lst
2538else
2539TARFROM=--files-from=tar.lst
2540endif
2541ifneq ($(TEST_USE_LONGLOG),)
2542PREPUP_OPT=-ll
2543else
2544PREPUP_OPT=
2545endif
2546ifndef inWinDOS
2547$(TEST_OUTPUTDIR)/tar.lst:
2548ifdef inOS2
2549	cd $(subst /,\,$(TEST_OUTPUTDIR)) && gnufind . -name "*.log" -o -name "*.elg" > tar.lst
2550	$(ECHOREDIR) log>> $(TEST_OUTPUTDIR)/tar.lst
2551	$(ECHOREDIR) dbdigest.cfg>> $(TEST_OUTPUTDIR)/tar.lst
2552else
2553ifeq ($(TEST_USE_LONGLOG),)
2554	cd $(TEST_OUTPUTDIR) && find . -name '*.log' -o -name '*.elg' > tar.lst
2555else
2556	$(ECHOREDIR) "longlog" > $(TEST_OUTPUTDIR)/tar.lst
2557endif
2558	$(ECHOREDIR) "log" >> $(TEST_OUTPUTDIR)/tar.lst
2559	$(ECHOREDIR) "dbdigest.cfg" >> $(TEST_OUTPUTDIR)/tar.lst
2560endif
2561$(TEST_OUTPUTDIR)/$(DB_TARGZ): $(TEST_OUTPUTDIR)/tar.lst $(TEST_OUTPUTDIR)/dbdigest.cfg
2562ifdef inCygWin
2563	dos2unix $(TEST_OUTPUTDIR)/tar.lst
2564endif
2565ifdef inOS2
2566	dos2unix $(TEST_OUTPUTDIR)/tar.lst
2567	cd $(subst /,\,$(TEST_OUTPUTDIR)) && $(TARPROG) czf $(DB_TARGZ) $(TARFROM)
2568else
2569	cd $(TEST_OUTPUTDIR) && $(TARPROG) czf $(DB_TARGZ) $(TARFROM)
2570endif
2571else
2572$(TEST_OUTPUTDIR)/$(DB_TARGZ): $(TEST_OUTPUTDIR)/dbdigest.cfg
2573ifdef inDOS
2574	$(ECHOREDIR) @echo off > dotgz$(SRCBATCHEXT)
2575	$(ECHOREDIR) cd $(subst /,\,$(TEST_OUTPUTDIR)) >> dotgz$(SRCBATCHEXT)
2576	$(ECHOREDIR) $(subst /,\,../../$(PREPUP)) $(DB_TARGZ) >> dotgz$(SRCBATCHEXT)
2577	$(ECHOREDIR) if errorlevel 1 $(DEL) $(DB_TARGZ) >> dotgz$(SRCBATCHEXT)
2578	$(ECHOREDIR) cd $(subst /,\,../../) >> dotgz$(SRCBATCHEXT)
2579	$(RUNBATCH) dotgz$(SRCBATCHEXT)
2580else
2581ifdef inOS2
2582	cd "$(subst /,\,$(TEST_OUTPUTDIR))" && "..\..\$(PREPUP)" $(DB_TARGZ)
2583else
2584	cd "$(TEST_OUTPUTDIR)" && "../../$(PREPUP)" $(DB_TARGZ)
2585endif
2586endif
2587endif
2588ifndef DB_USE_SSH
2589ifdef inWinDOS
2590UsePutty=1
2591endif
2592endif
2593uploadrun: $(TEST_OUTPUTDIR)/$(DB_TARGZ)
2594ifdef UsePutty
2595	pscp -load "fpc@www.freepascal.org" $(TEST_OUTPUTDIR)/$(DB_TARGZ) $(DB_HOST):$(DB_UPLOADDIR)/$(DB_TARGZ).part $(SSH_EXTRA)
2596	plink -load "fpc@www.freepascal.org" "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)"
2597else
2598	scp $(DB_SSH_EXTRA) $(TEST_OUTPUTDIR)/$(DB_TARGZ) $(DB_HOST):$(DB_UPLOADDIR)/$(DB_TARGZ).part
2599ifdef inOS2
2600	$(ECHOREDIR) . | ssh $(DB_SSH_EXTRA) $(DB_HOST) "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)"
2601else
2602	ssh $(DB_SSH_EXTRA) $(DB_HOST) "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)"
2603endif
2604endif
2605all : allexectests
2606full :
2607	$(MAKE) clean
2608	$(MAKE) allexectests
2609	$(MAKE) digest
2610fulldb :
2611	$(MAKE) clean
2612	$(MAKE) allexectests
2613	$(MAKE) digest
2614	$(MAKE) uploadrun
2615tarfile : $(TEST_OUTPUTDIR)/$(DB_TARGZ)
2616onlyknown :
2617	$(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-"
2618onlygraph :
2619	$(MAKE) full "DOTESTOPT= $(DOTESTOPT) -g-"
2620onlyinteractive :
2621	$(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-"
2622info :
2623	@$(ECHO) "This Makefile allows to test the compiler"
2624	@$(ECHO)
2625	@$(ECHO) "Basic Targets:"
2626	@$(ECHO) "  all    - continue all tests"
2627	@$(ECHO) "  full   - clean and run all tests"
2628	@$(ECHO) "  fulldb - full and upload test results"
2629	@$(ECHO) "  digest - compute and print test statistics"
2630	@$(ECHO)
2631	@$(ECHO) "Advanced Targets:"
2632	@$(ECHO) "  onlyknown - run only known bugs"
2633	@$(ECHO) "  onlygraph - run only graph tests"
2634	@$(ECHO) "  onlyinteractive - run only interactive tests"
2635	@$(ECHO)
2636	@$(ECHO) "Host environment:"
2637	@$(ECHO) "  $(FULL_TARGET)"
2638	@$(ECHO) "  compiler: $(FPC) ver: $(FPC_VERSION)"
2639	@$(ECHO)
2640	@$(ECHO) "Test environment:"
2641	@$(ECHO) "  $(TEST_FULL_TARGET)"
2642	@$(ECHO) "  compiler: $(TEST_FPC) ver: $(TEST_FPC_VERSION)"
2643	@$(ECHO)
2644	@$(ECHO) "Output settings:"
2645	@$(ECHO) "  DateTime : $(TEST_DATETIME)"
2646	@$(ECHO) "  Outputdir: $(TEST_OUTPUTDIR)"
2647	@$(ECHO) "  Uploaddir: $(DB_UPLOADDIR)"
2648	@$(ECHO) "  tar.gz   : $(DB_TARGZ)"
2649