1#
2# Don't edit, this file is generated by FPCMake Version 2.0.0
3#
4default: all
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 CLEAN_UNITS+=erroru popuperr ptest
334endif
335ifeq ($(FULL_TARGET),i386-go32v2)
336override CLEAN_UNITS+=erroru popuperr ptest
337endif
338ifeq ($(FULL_TARGET),i386-win32)
339override CLEAN_UNITS+=erroru popuperr ptest
340endif
341ifeq ($(FULL_TARGET),i386-os2)
342override CLEAN_UNITS+=erroru popuperr ptest
343endif
344ifeq ($(FULL_TARGET),i386-freebsd)
345override CLEAN_UNITS+=erroru popuperr ptest
346endif
347ifeq ($(FULL_TARGET),i386-beos)
348override CLEAN_UNITS+=erroru popuperr ptest
349endif
350ifeq ($(FULL_TARGET),i386-haiku)
351override CLEAN_UNITS+=erroru popuperr ptest
352endif
353ifeq ($(FULL_TARGET),i386-netbsd)
354override CLEAN_UNITS+=erroru popuperr ptest
355endif
356ifeq ($(FULL_TARGET),i386-solaris)
357override CLEAN_UNITS+=erroru popuperr ptest
358endif
359ifeq ($(FULL_TARGET),i386-netware)
360override CLEAN_UNITS+=erroru popuperr ptest
361endif
362ifeq ($(FULL_TARGET),i386-openbsd)
363override CLEAN_UNITS+=erroru popuperr ptest
364endif
365ifeq ($(FULL_TARGET),i386-wdosx)
366override CLEAN_UNITS+=erroru popuperr ptest
367endif
368ifeq ($(FULL_TARGET),i386-darwin)
369override CLEAN_UNITS+=erroru popuperr ptest
370endif
371ifeq ($(FULL_TARGET),i386-emx)
372override CLEAN_UNITS+=erroru popuperr ptest
373endif
374ifeq ($(FULL_TARGET),i386-watcom)
375override CLEAN_UNITS+=erroru popuperr ptest
376endif
377ifeq ($(FULL_TARGET),i386-netwlibc)
378override CLEAN_UNITS+=erroru popuperr ptest
379endif
380ifeq ($(FULL_TARGET),i386-wince)
381override CLEAN_UNITS+=erroru popuperr ptest
382endif
383ifeq ($(FULL_TARGET),i386-embedded)
384override CLEAN_UNITS+=erroru popuperr ptest
385endif
386ifeq ($(FULL_TARGET),i386-symbian)
387override CLEAN_UNITS+=erroru popuperr ptest
388endif
389ifeq ($(FULL_TARGET),i386-nativent)
390override CLEAN_UNITS+=erroru popuperr ptest
391endif
392ifeq ($(FULL_TARGET),i386-iphonesim)
393override CLEAN_UNITS+=erroru popuperr ptest
394endif
395ifeq ($(FULL_TARGET),i386-android)
396override CLEAN_UNITS+=erroru popuperr ptest
397endif
398ifeq ($(FULL_TARGET),i386-aros)
399override CLEAN_UNITS+=erroru popuperr ptest
400endif
401ifeq ($(FULL_TARGET),m68k-linux)
402override CLEAN_UNITS+=erroru popuperr ptest
403endif
404ifeq ($(FULL_TARGET),m68k-netbsd)
405override CLEAN_UNITS+=erroru popuperr ptest
406endif
407ifeq ($(FULL_TARGET),m68k-amiga)
408override CLEAN_UNITS+=erroru popuperr ptest
409endif
410ifeq ($(FULL_TARGET),m68k-atari)
411override CLEAN_UNITS+=erroru popuperr ptest
412endif
413ifeq ($(FULL_TARGET),m68k-palmos)
414override CLEAN_UNITS+=erroru popuperr ptest
415endif
416ifeq ($(FULL_TARGET),m68k-macosclassic)
417override CLEAN_UNITS+=erroru popuperr ptest
418endif
419ifeq ($(FULL_TARGET),m68k-embedded)
420override CLEAN_UNITS+=erroru popuperr ptest
421endif
422ifeq ($(FULL_TARGET),powerpc-linux)
423override CLEAN_UNITS+=erroru popuperr ptest
424endif
425ifeq ($(FULL_TARGET),powerpc-netbsd)
426override CLEAN_UNITS+=erroru popuperr ptest
427endif
428ifeq ($(FULL_TARGET),powerpc-amiga)
429override CLEAN_UNITS+=erroru popuperr ptest
430endif
431ifeq ($(FULL_TARGET),powerpc-macosclassic)
432override CLEAN_UNITS+=erroru popuperr ptest
433endif
434ifeq ($(FULL_TARGET),powerpc-darwin)
435override CLEAN_UNITS+=erroru popuperr ptest
436endif
437ifeq ($(FULL_TARGET),powerpc-morphos)
438override CLEAN_UNITS+=erroru popuperr ptest
439endif
440ifeq ($(FULL_TARGET),powerpc-embedded)
441override CLEAN_UNITS+=erroru popuperr ptest
442endif
443ifeq ($(FULL_TARGET),powerpc-wii)
444override CLEAN_UNITS+=erroru popuperr ptest
445endif
446ifeq ($(FULL_TARGET),powerpc-aix)
447override CLEAN_UNITS+=erroru popuperr ptest
448endif
449ifeq ($(FULL_TARGET),sparc-linux)
450override CLEAN_UNITS+=erroru popuperr ptest
451endif
452ifeq ($(FULL_TARGET),sparc-netbsd)
453override CLEAN_UNITS+=erroru popuperr ptest
454endif
455ifeq ($(FULL_TARGET),sparc-solaris)
456override CLEAN_UNITS+=erroru popuperr ptest
457endif
458ifeq ($(FULL_TARGET),sparc-embedded)
459override CLEAN_UNITS+=erroru popuperr ptest
460endif
461ifeq ($(FULL_TARGET),x86_64-linux)
462override CLEAN_UNITS+=erroru popuperr ptest
463endif
464ifeq ($(FULL_TARGET),x86_64-freebsd)
465override CLEAN_UNITS+=erroru popuperr ptest
466endif
467ifeq ($(FULL_TARGET),x86_64-haiku)
468override CLEAN_UNITS+=erroru popuperr ptest
469endif
470ifeq ($(FULL_TARGET),x86_64-netbsd)
471override CLEAN_UNITS+=erroru popuperr ptest
472endif
473ifeq ($(FULL_TARGET),x86_64-solaris)
474override CLEAN_UNITS+=erroru popuperr ptest
475endif
476ifeq ($(FULL_TARGET),x86_64-openbsd)
477override CLEAN_UNITS+=erroru popuperr ptest
478endif
479ifeq ($(FULL_TARGET),x86_64-darwin)
480override CLEAN_UNITS+=erroru popuperr ptest
481endif
482ifeq ($(FULL_TARGET),x86_64-win64)
483override CLEAN_UNITS+=erroru popuperr ptest
484endif
485ifeq ($(FULL_TARGET),x86_64-embedded)
486override CLEAN_UNITS+=erroru popuperr ptest
487endif
488ifeq ($(FULL_TARGET),x86_64-iphonesim)
489override CLEAN_UNITS+=erroru popuperr ptest
490endif
491ifeq ($(FULL_TARGET),x86_64-android)
492override CLEAN_UNITS+=erroru popuperr ptest
493endif
494ifeq ($(FULL_TARGET),x86_64-aros)
495override CLEAN_UNITS+=erroru popuperr ptest
496endif
497ifeq ($(FULL_TARGET),x86_64-dragonfly)
498override CLEAN_UNITS+=erroru popuperr ptest
499endif
500ifeq ($(FULL_TARGET),arm-linux)
501override CLEAN_UNITS+=erroru popuperr ptest
502endif
503ifeq ($(FULL_TARGET),arm-netbsd)
504override CLEAN_UNITS+=erroru popuperr ptest
505endif
506ifeq ($(FULL_TARGET),arm-palmos)
507override CLEAN_UNITS+=erroru popuperr ptest
508endif
509ifeq ($(FULL_TARGET),arm-wince)
510override CLEAN_UNITS+=erroru popuperr ptest
511endif
512ifeq ($(FULL_TARGET),arm-gba)
513override CLEAN_UNITS+=erroru popuperr ptest
514endif
515ifeq ($(FULL_TARGET),arm-nds)
516override CLEAN_UNITS+=erroru popuperr ptest
517endif
518ifeq ($(FULL_TARGET),arm-embedded)
519override CLEAN_UNITS+=erroru popuperr ptest
520endif
521ifeq ($(FULL_TARGET),arm-symbian)
522override CLEAN_UNITS+=erroru popuperr ptest
523endif
524ifeq ($(FULL_TARGET),arm-android)
525override CLEAN_UNITS+=erroru popuperr ptest
526endif
527ifeq ($(FULL_TARGET),arm-aros)
528override CLEAN_UNITS+=erroru popuperr ptest
529endif
530ifeq ($(FULL_TARGET),arm-ios)
531override CLEAN_UNITS+=erroru popuperr ptest
532endif
533ifeq ($(FULL_TARGET),powerpc64-linux)
534override CLEAN_UNITS+=erroru popuperr ptest
535endif
536ifeq ($(FULL_TARGET),powerpc64-darwin)
537override CLEAN_UNITS+=erroru popuperr ptest
538endif
539ifeq ($(FULL_TARGET),powerpc64-embedded)
540override CLEAN_UNITS+=erroru popuperr ptest
541endif
542ifeq ($(FULL_TARGET),powerpc64-aix)
543override CLEAN_UNITS+=erroru popuperr ptest
544endif
545ifeq ($(FULL_TARGET),avr-embedded)
546override CLEAN_UNITS+=erroru popuperr ptest
547endif
548ifeq ($(FULL_TARGET),armeb-linux)
549override CLEAN_UNITS+=erroru popuperr ptest
550endif
551ifeq ($(FULL_TARGET),armeb-embedded)
552override CLEAN_UNITS+=erroru popuperr ptest
553endif
554ifeq ($(FULL_TARGET),mips-linux)
555override CLEAN_UNITS+=erroru popuperr ptest
556endif
557ifeq ($(FULL_TARGET),mipsel-linux)
558override CLEAN_UNITS+=erroru popuperr ptest
559endif
560ifeq ($(FULL_TARGET),mipsel-embedded)
561override CLEAN_UNITS+=erroru popuperr ptest
562endif
563ifeq ($(FULL_TARGET),mipsel-android)
564override CLEAN_UNITS+=erroru popuperr ptest
565endif
566ifeq ($(FULL_TARGET),jvm-java)
567override CLEAN_UNITS+=erroru popuperr ptest
568endif
569ifeq ($(FULL_TARGET),jvm-android)
570override CLEAN_UNITS+=erroru popuperr ptest
571endif
572ifeq ($(FULL_TARGET),i8086-embedded)
573override CLEAN_UNITS+=erroru popuperr ptest
574endif
575ifeq ($(FULL_TARGET),i8086-msdos)
576override CLEAN_UNITS+=erroru popuperr ptest
577endif
578ifeq ($(FULL_TARGET),i8086-win16)
579override CLEAN_UNITS+=erroru popuperr ptest
580endif
581ifeq ($(FULL_TARGET),aarch64-linux)
582override CLEAN_UNITS+=erroru popuperr ptest
583endif
584ifeq ($(FULL_TARGET),aarch64-darwin)
585override CLEAN_UNITS+=erroru popuperr ptest
586endif
587ifeq ($(FULL_TARGET),aarch64-android)
588override CLEAN_UNITS+=erroru popuperr ptest
589endif
590ifeq ($(FULL_TARGET),aarch64-ios)
591override CLEAN_UNITS+=erroru popuperr ptest
592endif
593ifeq ($(FULL_TARGET),wasm-wasm)
594override CLEAN_UNITS+=erroru popuperr ptest
595endif
596ifeq ($(FULL_TARGET),sparc64-linux)
597override CLEAN_UNITS+=erroru popuperr ptest
598endif
599override INSTALL_FPCPACKAGE=y
600ifeq ($(FULL_TARGET),i386-linux)
601override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
602endif
603ifeq ($(FULL_TARGET),i386-go32v2)
604override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
605endif
606ifeq ($(FULL_TARGET),i386-win32)
607override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
608endif
609ifeq ($(FULL_TARGET),i386-os2)
610override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
611endif
612ifeq ($(FULL_TARGET),i386-freebsd)
613override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
614endif
615ifeq ($(FULL_TARGET),i386-beos)
616override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
617endif
618ifeq ($(FULL_TARGET),i386-haiku)
619override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
620endif
621ifeq ($(FULL_TARGET),i386-netbsd)
622override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
623endif
624ifeq ($(FULL_TARGET),i386-solaris)
625override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
626endif
627ifeq ($(FULL_TARGET),i386-netware)
628override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
629endif
630ifeq ($(FULL_TARGET),i386-openbsd)
631override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
632endif
633ifeq ($(FULL_TARGET),i386-wdosx)
634override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
635endif
636ifeq ($(FULL_TARGET),i386-darwin)
637override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
638endif
639ifeq ($(FULL_TARGET),i386-emx)
640override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
641endif
642ifeq ($(FULL_TARGET),i386-watcom)
643override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
644endif
645ifeq ($(FULL_TARGET),i386-netwlibc)
646override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
647endif
648ifeq ($(FULL_TARGET),i386-wince)
649override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
650endif
651ifeq ($(FULL_TARGET),i386-embedded)
652override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
653endif
654ifeq ($(FULL_TARGET),i386-symbian)
655override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
656endif
657ifeq ($(FULL_TARGET),i386-nativent)
658override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
659endif
660ifeq ($(FULL_TARGET),i386-iphonesim)
661override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
662endif
663ifeq ($(FULL_TARGET),i386-android)
664override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
665endif
666ifeq ($(FULL_TARGET),i386-aros)
667override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
668endif
669ifeq ($(FULL_TARGET),m68k-linux)
670override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
671endif
672ifeq ($(FULL_TARGET),m68k-netbsd)
673override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
674endif
675ifeq ($(FULL_TARGET),m68k-amiga)
676override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
677endif
678ifeq ($(FULL_TARGET),m68k-atari)
679override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
680endif
681ifeq ($(FULL_TARGET),m68k-palmos)
682override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
683endif
684ifeq ($(FULL_TARGET),m68k-macosclassic)
685override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
686endif
687ifeq ($(FULL_TARGET),m68k-embedded)
688override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
689endif
690ifeq ($(FULL_TARGET),powerpc-linux)
691override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
692endif
693ifeq ($(FULL_TARGET),powerpc-netbsd)
694override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
695endif
696ifeq ($(FULL_TARGET),powerpc-amiga)
697override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
698endif
699ifeq ($(FULL_TARGET),powerpc-macosclassic)
700override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
701endif
702ifeq ($(FULL_TARGET),powerpc-darwin)
703override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
704endif
705ifeq ($(FULL_TARGET),powerpc-morphos)
706override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
707endif
708ifeq ($(FULL_TARGET),powerpc-embedded)
709override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
710endif
711ifeq ($(FULL_TARGET),powerpc-wii)
712override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
713endif
714ifeq ($(FULL_TARGET),powerpc-aix)
715override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
716endif
717ifeq ($(FULL_TARGET),sparc-linux)
718override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
719endif
720ifeq ($(FULL_TARGET),sparc-netbsd)
721override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
722endif
723ifeq ($(FULL_TARGET),sparc-solaris)
724override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
725endif
726ifeq ($(FULL_TARGET),sparc-embedded)
727override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
728endif
729ifeq ($(FULL_TARGET),x86_64-linux)
730override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
731endif
732ifeq ($(FULL_TARGET),x86_64-freebsd)
733override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
734endif
735ifeq ($(FULL_TARGET),x86_64-haiku)
736override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
737endif
738ifeq ($(FULL_TARGET),x86_64-netbsd)
739override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
740endif
741ifeq ($(FULL_TARGET),x86_64-solaris)
742override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
743endif
744ifeq ($(FULL_TARGET),x86_64-openbsd)
745override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
746endif
747ifeq ($(FULL_TARGET),x86_64-darwin)
748override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
749endif
750ifeq ($(FULL_TARGET),x86_64-win64)
751override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
752endif
753ifeq ($(FULL_TARGET),x86_64-embedded)
754override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
755endif
756ifeq ($(FULL_TARGET),x86_64-iphonesim)
757override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
758endif
759ifeq ($(FULL_TARGET),x86_64-android)
760override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
761endif
762ifeq ($(FULL_TARGET),x86_64-aros)
763override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
764endif
765ifeq ($(FULL_TARGET),x86_64-dragonfly)
766override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
767endif
768ifeq ($(FULL_TARGET),arm-linux)
769override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
770endif
771ifeq ($(FULL_TARGET),arm-netbsd)
772override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
773endif
774ifeq ($(FULL_TARGET),arm-palmos)
775override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
776endif
777ifeq ($(FULL_TARGET),arm-wince)
778override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
779endif
780ifeq ($(FULL_TARGET),arm-gba)
781override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
782endif
783ifeq ($(FULL_TARGET),arm-nds)
784override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
785endif
786ifeq ($(FULL_TARGET),arm-embedded)
787override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
788endif
789ifeq ($(FULL_TARGET),arm-symbian)
790override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
791endif
792ifeq ($(FULL_TARGET),arm-android)
793override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
794endif
795ifeq ($(FULL_TARGET),arm-aros)
796override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
797endif
798ifeq ($(FULL_TARGET),arm-ios)
799override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
800endif
801ifeq ($(FULL_TARGET),powerpc64-linux)
802override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
803endif
804ifeq ($(FULL_TARGET),powerpc64-darwin)
805override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
806endif
807ifeq ($(FULL_TARGET),powerpc64-embedded)
808override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
809endif
810ifeq ($(FULL_TARGET),powerpc64-aix)
811override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
812endif
813ifeq ($(FULL_TARGET),avr-embedded)
814override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
815endif
816ifeq ($(FULL_TARGET),armeb-linux)
817override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
818endif
819ifeq ($(FULL_TARGET),armeb-embedded)
820override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
821endif
822ifeq ($(FULL_TARGET),mips-linux)
823override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
824endif
825ifeq ($(FULL_TARGET),mipsel-linux)
826override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
827endif
828ifeq ($(FULL_TARGET),mipsel-embedded)
829override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
830endif
831ifeq ($(FULL_TARGET),mipsel-android)
832override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
833endif
834ifeq ($(FULL_TARGET),jvm-java)
835override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
836endif
837ifeq ($(FULL_TARGET),jvm-android)
838override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
839endif
840ifeq ($(FULL_TARGET),i8086-embedded)
841override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
842endif
843ifeq ($(FULL_TARGET),i8086-msdos)
844override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
845endif
846ifeq ($(FULL_TARGET),i8086-win16)
847override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
848endif
849ifeq ($(FULL_TARGET),aarch64-linux)
850override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
851endif
852ifeq ($(FULL_TARGET),aarch64-darwin)
853override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
854endif
855ifeq ($(FULL_TARGET),aarch64-android)
856override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
857endif
858ifeq ($(FULL_TARGET),aarch64-ios)
859override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
860endif
861ifeq ($(FULL_TARGET),wasm-wasm)
862override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
863endif
864ifeq ($(FULL_TARGET),sparc64-linux)
865override COMPILER_TARGETDIR+=$(TARGETSUFFIX)
866endif
867ifdef REQUIRE_UNITSDIR
868override UNITSDIR+=$(REQUIRE_UNITSDIR)
869endif
870ifdef REQUIRE_PACKAGESDIR
871override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
872endif
873ifdef ZIPINSTALL
874ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
875UNIXHier=1
876endif
877else
878ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
879UNIXHier=1
880endif
881endif
882ifndef INSTALL_PREFIX
883ifdef PREFIX
884INSTALL_PREFIX=$(PREFIX)
885endif
886endif
887ifndef INSTALL_PREFIX
888ifdef UNIXHier
889INSTALL_PREFIX=/usr/local
890else
891ifdef INSTALL_FPCPACKAGE
892INSTALL_BASEDIR:=/pp
893else
894INSTALL_BASEDIR:=/$(PACKAGE_NAME)
895endif
896endif
897endif
898export INSTALL_PREFIX
899ifdef INSTALL_FPCSUBDIR
900export INSTALL_FPCSUBDIR
901endif
902ifndef DIST_DESTDIR
903DIST_DESTDIR:=$(BASEDIR)
904endif
905export DIST_DESTDIR
906ifndef COMPILER_UNITTARGETDIR
907ifdef PACKAGEDIR_MAIN
908COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
909else
910COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
911endif
912endif
913ifndef COMPILER_TARGETDIR
914COMPILER_TARGETDIR=.
915endif
916ifndef INSTALL_BASEDIR
917ifdef UNIXHier
918ifdef INSTALL_FPCPACKAGE
919INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
920else
921INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
922endif
923else
924INSTALL_BASEDIR:=$(INSTALL_PREFIX)
925endif
926endif
927ifndef INSTALL_BINDIR
928ifdef UNIXHier
929INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
930else
931INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
932ifdef INSTALL_FPCPACKAGE
933ifdef CROSSCOMPILE
934ifdef CROSSINSTALL
935INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
936else
937INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
938endif
939else
940INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
941endif
942endif
943endif
944endif
945ifndef INSTALL_UNITDIR
946INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
947ifdef INSTALL_FPCPACKAGE
948ifdef PACKAGE_NAME
949INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
950endif
951endif
952endif
953ifndef INSTALL_LIBDIR
954ifdef UNIXHier
955INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
956else
957INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
958endif
959endif
960ifndef INSTALL_SOURCEDIR
961ifdef UNIXHier
962ifdef BSDhier
963SRCPREFIXDIR=share/src
964else
965ifdef linuxHier
966SRCPREFIXDIR=share/src
967else
968SRCPREFIXDIR=src
969endif
970endif
971ifdef INSTALL_FPCPACKAGE
972ifdef INSTALL_FPCSUBDIR
973INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
974else
975INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
976endif
977else
978INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
979endif
980else
981ifdef INSTALL_FPCPACKAGE
982ifdef INSTALL_FPCSUBDIR
983INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
984else
985INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
986endif
987else
988INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
989endif
990endif
991endif
992ifndef INSTALL_DOCDIR
993ifdef UNIXHier
994ifdef BSDhier
995DOCPREFIXDIR=share/doc
996else
997ifdef linuxHier
998DOCPREFIXDIR=share/doc
999else
1000DOCPREFIXDIR=doc
1001endif
1002endif
1003ifdef INSTALL_FPCPACKAGE
1004INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
1005else
1006INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
1007endif
1008else
1009ifdef INSTALL_FPCPACKAGE
1010INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
1011else
1012INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
1013endif
1014endif
1015endif
1016ifndef INSTALL_EXAMPLEDIR
1017ifdef UNIXHier
1018ifdef INSTALL_FPCPACKAGE
1019ifdef BSDhier
1020INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
1021else
1022ifdef linuxHier
1023INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
1024else
1025INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
1026endif
1027endif
1028else
1029ifdef BSDhier
1030INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
1031else
1032ifdef linuxHier
1033INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
1034else
1035INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
1036endif
1037endif
1038endif
1039else
1040ifdef INSTALL_FPCPACKAGE
1041INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
1042else
1043INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
1044endif
1045endif
1046endif
1047ifndef INSTALL_DATADIR
1048INSTALL_DATADIR=$(INSTALL_BASEDIR)
1049endif
1050ifndef INSTALL_SHAREDDIR
1051INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
1052endif
1053ifdef CROSSCOMPILE
1054ifndef CROSSBINDIR
1055CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
1056ifeq ($(CROSSBINDIR),)
1057CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
1058endif
1059endif
1060else
1061CROSSBINDIR=
1062endif
1063BATCHEXT=.bat
1064LOADEREXT=.as
1065EXEEXT=.exe
1066PPLEXT=.ppl
1067PPUEXT=.ppu
1068OEXT=.o
1069ASMEXT=.s
1070SMARTEXT=.sl
1071STATICLIBEXT=.a
1072SHAREDLIBEXT=.so
1073SHAREDLIBPREFIX=libfp
1074STATICLIBPREFIX=libp
1075IMPORTLIBPREFIX=libimp
1076RSTEXT=.rst
1077EXEDBGEXT=.dbg
1078ifeq ($(OS_TARGET),go32v1)
1079STATICLIBPREFIX=
1080SHORTSUFFIX=v1
1081endif
1082ifeq ($(OS_TARGET),go32v2)
1083STATICLIBPREFIX=
1084SHORTSUFFIX=dos
1085IMPORTLIBPREFIX=
1086endif
1087ifeq ($(OS_TARGET),watcom)
1088STATICLIBPREFIX=
1089OEXT=.obj
1090ASMEXT=.asm
1091SHAREDLIBEXT=.dll
1092SHORTSUFFIX=wat
1093IMPORTLIBPREFIX=
1094endif
1095ifneq ($(CPU_TARGET),jvm)
1096ifeq ($(OS_TARGET),android)
1097BATCHEXT=.sh
1098EXEEXT=
1099HASSHAREDLIB=1
1100SHORTSUFFIX=lnx
1101endif
1102endif
1103ifeq ($(OS_TARGET),linux)
1104BATCHEXT=.sh
1105EXEEXT=
1106HASSHAREDLIB=1
1107SHORTSUFFIX=lnx
1108endif
1109ifeq ($(OS_TARGET),dragonfly)
1110BATCHEXT=.sh
1111EXEEXT=
1112HASSHAREDLIB=1
1113SHORTSUFFIX=df
1114endif
1115ifeq ($(OS_TARGET),freebsd)
1116BATCHEXT=.sh
1117EXEEXT=
1118HASSHAREDLIB=1
1119SHORTSUFFIX=fbs
1120endif
1121ifeq ($(OS_TARGET),netbsd)
1122BATCHEXT=.sh
1123EXEEXT=
1124HASSHAREDLIB=1
1125SHORTSUFFIX=nbs
1126endif
1127ifeq ($(OS_TARGET),openbsd)
1128BATCHEXT=.sh
1129EXEEXT=
1130HASSHAREDLIB=1
1131SHORTSUFFIX=obs
1132endif
1133ifeq ($(OS_TARGET),win32)
1134SHAREDLIBEXT=.dll
1135SHORTSUFFIX=w32
1136endif
1137ifeq ($(OS_TARGET),os2)
1138BATCHEXT=.cmd
1139AOUTEXT=.out
1140STATICLIBPREFIX=
1141SHAREDLIBEXT=.dll
1142SHORTSUFFIX=os2
1143ECHO=echo
1144IMPORTLIBPREFIX=
1145endif
1146ifeq ($(OS_TARGET),emx)
1147BATCHEXT=.cmd
1148AOUTEXT=.out
1149STATICLIBPREFIX=
1150SHAREDLIBEXT=.dll
1151SHORTSUFFIX=emx
1152ECHO=echo
1153IMPORTLIBPREFIX=
1154endif
1155ifeq ($(OS_TARGET),amiga)
1156EXEEXT=
1157SHAREDLIBEXT=.library
1158SHORTSUFFIX=amg
1159endif
1160ifeq ($(OS_TARGET),aros)
1161EXEEXT=
1162SHAREDLIBEXT=.library
1163SHORTSUFFIX=aros
1164endif
1165ifeq ($(OS_TARGET),morphos)
1166EXEEXT=
1167SHAREDLIBEXT=.library
1168SHORTSUFFIX=mos
1169endif
1170ifeq ($(OS_TARGET),atari)
1171EXEEXT=.ttp
1172SHORTSUFFIX=ata
1173endif
1174ifeq ($(OS_TARGET),beos)
1175BATCHEXT=.sh
1176EXEEXT=
1177SHORTSUFFIX=be
1178endif
1179ifeq ($(OS_TARGET),haiku)
1180BATCHEXT=.sh
1181EXEEXT=
1182SHORTSUFFIX=hai
1183endif
1184ifeq ($(OS_TARGET),solaris)
1185BATCHEXT=.sh
1186EXEEXT=
1187SHORTSUFFIX=sun
1188endif
1189ifeq ($(OS_TARGET),qnx)
1190BATCHEXT=.sh
1191EXEEXT=
1192SHORTSUFFIX=qnx
1193endif
1194ifeq ($(OS_TARGET),netware)
1195EXEEXT=.nlm
1196STATICLIBPREFIX=
1197SHORTSUFFIX=nw
1198IMPORTLIBPREFIX=imp
1199endif
1200ifeq ($(OS_TARGET),netwlibc)
1201EXEEXT=.nlm
1202STATICLIBPREFIX=
1203SHORTSUFFIX=nwl
1204IMPORTLIBPREFIX=imp
1205endif
1206ifeq ($(OS_TARGET),macosclassic)
1207BATCHEXT=
1208EXEEXT=
1209DEBUGSYMEXT=.xcoff
1210SHORTSUFFIX=mac
1211IMPORTLIBPREFIX=imp
1212endif
1213ifneq ($(findstring $(OS_TARGET),darwin iphonesim ios),)
1214BATCHEXT=.sh
1215EXEEXT=
1216HASSHAREDLIB=1
1217SHORTSUFFIX=dwn
1218EXEDBGEXT=.dSYM
1219endif
1220ifeq ($(OS_TARGET),gba)
1221EXEEXT=.gba
1222SHAREDLIBEXT=.so
1223SHORTSUFFIX=gba
1224endif
1225ifeq ($(OS_TARGET),symbian)
1226SHAREDLIBEXT=.dll
1227SHORTSUFFIX=symbian
1228endif
1229ifeq ($(OS_TARGET),NativeNT)
1230SHAREDLIBEXT=.dll
1231SHORTSUFFIX=nativent
1232endif
1233ifeq ($(OS_TARGET),wii)
1234EXEEXT=.dol
1235SHAREDLIBEXT=.so
1236SHORTSUFFIX=wii
1237endif
1238ifeq ($(OS_TARGET),aix)
1239BATCHEXT=.sh
1240EXEEXT=
1241SHAREDLIBEXT=.a
1242SHORTSUFFIX=aix
1243endif
1244ifeq ($(OS_TARGET),java)
1245OEXT=.class
1246ASMEXT=.j
1247SHAREDLIBEXT=.jar
1248SHORTSUFFIX=java
1249endif
1250ifeq ($(CPU_TARGET),jvm)
1251ifeq ($(OS_TARGET),android)
1252OEXT=.class
1253ASMEXT=.j
1254SHAREDLIBEXT=.jar
1255SHORTSUFFIX=android
1256endif
1257endif
1258ifeq ($(OS_TARGET),msdos)
1259STATICLIBPREFIX=
1260STATICLIBEXT=.a
1261SHORTSUFFIX=d16
1262endif
1263ifeq ($(OS_TARGET),embedded)
1264ifeq ($(CPU_TARGET),i8086)
1265STATICLIBPREFIX=
1266STATICLIBEXT=.a
1267else
1268EXEEXT=.bin
1269endif
1270SHORTSUFFIX=emb
1271endif
1272ifeq ($(OS_TARGET),win16)
1273STATICLIBPREFIX=
1274STATICLIBEXT=.a
1275SHAREDLIBEXT=.dll
1276SHORTSUFFIX=w16
1277endif
1278ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
1279FPCMADE=fpcmade.$(SHORTSUFFIX)
1280ZIPSUFFIX=$(SHORTSUFFIX)
1281ZIPCROSSPREFIX=
1282ZIPSOURCESUFFIX=src
1283ZIPEXAMPLESUFFIX=exm
1284else
1285FPCMADE=fpcmade.$(TARGETSUFFIX)
1286ZIPSOURCESUFFIX=.source
1287ZIPEXAMPLESUFFIX=.examples
1288ifdef CROSSCOMPILE
1289ZIPSUFFIX=.$(SOURCESUFFIX)
1290ZIPCROSSPREFIX=$(TARGETSUFFIX)-
1291else
1292ZIPSUFFIX=.$(TARGETSUFFIX)
1293ZIPCROSSPREFIX=
1294endif
1295endif
1296ifndef ECHO
1297ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
1298ifeq ($(ECHO),)
1299ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
1300ifeq ($(ECHO),)
1301ECHO= __missing_command_ECHO
1302else
1303ECHO:=$(firstword $(ECHO))
1304endif
1305else
1306ECHO:=$(firstword $(ECHO))
1307endif
1308endif
1309export ECHO
1310ifndef DATE
1311DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
1312ifeq ($(DATE),)
1313DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
1314ifeq ($(DATE),)
1315DATE= __missing_command_DATE
1316else
1317DATE:=$(firstword $(DATE))
1318endif
1319else
1320DATE:=$(firstword $(DATE))
1321endif
1322endif
1323export DATE
1324ifndef GINSTALL
1325GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
1326ifeq ($(GINSTALL),)
1327GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
1328ifeq ($(GINSTALL),)
1329GINSTALL= __missing_command_GINSTALL
1330else
1331GINSTALL:=$(firstword $(GINSTALL))
1332endif
1333else
1334GINSTALL:=$(firstword $(GINSTALL))
1335endif
1336endif
1337export GINSTALL
1338ifndef CPPROG
1339CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
1340ifeq ($(CPPROG),)
1341CPPROG= __missing_command_CPPROG
1342else
1343CPPROG:=$(firstword $(CPPROG))
1344endif
1345endif
1346export CPPROG
1347ifndef RMPROG
1348RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
1349ifeq ($(RMPROG),)
1350RMPROG= __missing_command_RMPROG
1351else
1352RMPROG:=$(firstword $(RMPROG))
1353endif
1354endif
1355export RMPROG
1356ifndef MVPROG
1357MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
1358ifeq ($(MVPROG),)
1359MVPROG= __missing_command_MVPROG
1360else
1361MVPROG:=$(firstword $(MVPROG))
1362endif
1363endif
1364export MVPROG
1365ifndef MKDIRPROG
1366MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
1367ifeq ($(MKDIRPROG),)
1368MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
1369ifeq ($(MKDIRPROG),)
1370MKDIRPROG= __missing_command_MKDIRPROG
1371else
1372MKDIRPROG:=$(firstword $(MKDIRPROG))
1373endif
1374else
1375MKDIRPROG:=$(firstword $(MKDIRPROG))
1376endif
1377endif
1378export MKDIRPROG
1379ifndef ECHOREDIR
1380ifndef inUnix
1381ECHOREDIR=echo
1382else
1383ECHOREDIR=$(ECHO)
1384endif
1385endif
1386ifndef COPY
1387COPY:=$(CPPROG) -fp
1388endif
1389ifndef COPYTREE
1390COPYTREE:=$(CPPROG) -Rfp
1391endif
1392ifndef MKDIRTREE
1393MKDIRTREE:=$(MKDIRPROG) -p
1394endif
1395ifndef MOVE
1396MOVE:=$(MVPROG) -f
1397endif
1398ifndef DEL
1399DEL:=$(RMPROG) -f
1400endif
1401ifndef DELTREE
1402DELTREE:=$(RMPROG) -rf
1403endif
1404ifndef INSTALL
1405ifdef inUnix
1406INSTALL:=$(GINSTALL) -c -m 644
1407else
1408INSTALL:=$(COPY)
1409endif
1410endif
1411ifndef INSTALLEXE
1412ifdef inUnix
1413INSTALLEXE:=$(GINSTALL) -c -m 755
1414else
1415INSTALLEXE:=$(COPY)
1416endif
1417endif
1418ifndef MKDIR
1419MKDIR:=$(GINSTALL) -m 755 -d
1420endif
1421export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
1422ifndef PPUMOVE
1423PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
1424ifeq ($(PPUMOVE),)
1425PPUMOVE= __missing_command_PPUMOVE
1426else
1427PPUMOVE:=$(firstword $(PPUMOVE))
1428endif
1429endif
1430export PPUMOVE
1431ifndef FPCMAKE
1432FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
1433ifeq ($(FPCMAKE),)
1434FPCMAKE= __missing_command_FPCMAKE
1435else
1436FPCMAKE:=$(firstword $(FPCMAKE))
1437endif
1438endif
1439export FPCMAKE
1440ifndef ZIPPROG
1441ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
1442ifeq ($(ZIPPROG),)
1443ZIPPROG= __missing_command_ZIPPROG
1444else
1445ZIPPROG:=$(firstword $(ZIPPROG))
1446endif
1447endif
1448export ZIPPROG
1449ifndef TARPROG
1450TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
1451ifeq ($(TARPROG),)
1452TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
1453ifeq ($(TARPROG),)
1454TARPROG= __missing_command_TARPROG
1455else
1456TARPROG:=$(firstword $(TARPROG))
1457endif
1458else
1459TARPROG:=$(firstword $(TARPROG))
1460endif
1461endif
1462export TARPROG
1463ASNAME=$(BINUTILSPREFIX)as
1464LDNAME=$(BINUTILSPREFIX)ld
1465ARNAME=$(BINUTILSPREFIX)ar
1466RCNAME=$(BINUTILSPREFIX)rc
1467NASMNAME=$(BINUTILSPREFIX)nasm
1468ifndef ASPROG
1469ifdef CROSSBINDIR
1470ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
1471else
1472ASPROG=$(ASNAME)
1473endif
1474endif
1475ifndef LDPROG
1476ifdef CROSSBINDIR
1477LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
1478else
1479LDPROG=$(LDNAME)
1480endif
1481endif
1482ifndef RCPROG
1483ifdef CROSSBINDIR
1484RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
1485else
1486RCPROG=$(RCNAME)
1487endif
1488endif
1489ifndef ARPROG
1490ifdef CROSSBINDIR
1491ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
1492else
1493ARPROG=$(ARNAME)
1494endif
1495endif
1496ifndef NASMPROG
1497ifdef CROSSBINDIR
1498NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
1499else
1500NASMPROG=$(NASMNAME)
1501endif
1502endif
1503AS=$(ASPROG)
1504LD=$(LDPROG)
1505RC=$(RCPROG)
1506AR=$(ARPROG)
1507NASM=$(NASMPROG)
1508ifdef inUnix
1509PPAS=./ppas$(SRCBATCHEXT)
1510else
1511PPAS=ppas$(SRCBATCHEXT)
1512endif
1513ifdef inUnix
1514LDCONFIG=ldconfig
1515else
1516LDCONFIG=
1517endif
1518ifdef DATE
1519DATESTR:=$(shell $(DATE) +%Y%m%d)
1520else
1521DATESTR=
1522endif
1523ZIPOPT=-9
1524ZIPEXT=.zip
1525ifeq ($(USETAR),bz2)
1526TAROPT=vj
1527TAREXT=.tar.bz2
1528else
1529TAROPT=vz
1530TAREXT=.tar.gz
1531endif
1532ifndef NOCPUDEF
1533override FPCOPTDEF=$(ARCH)
1534endif
1535ifneq ($(OS_TARGET),$(OS_SOURCE))
1536override FPCOPT+=-T$(OS_TARGET)
1537endif
1538ifneq ($(CPU_TARGET),$(CPU_SOURCE))
1539override FPCOPT+=-P$(ARCH)
1540endif
1541ifeq ($(OS_SOURCE),openbsd)
1542override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
1543override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
1544override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)
1545endif
1546ifndef CROSSBOOTSTRAP
1547ifneq ($(BINUTILSPREFIX),)
1548override FPCOPT+=-XP$(BINUTILSPREFIX)
1549endif
1550ifneq ($(BINUTILSPREFIX),)
1551override FPCOPT+=-Xr$(RLINKPATH)
1552endif
1553endif
1554ifndef CROSSCOMPILE
1555ifneq ($(BINUTILSPREFIX),)
1556override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
1557override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)
1558endif
1559endif
1560ifdef UNITDIR
1561override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
1562endif
1563ifdef LIBDIR
1564override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
1565endif
1566ifdef OBJDIR
1567override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
1568endif
1569ifdef INCDIR
1570override FPCOPT+=$(addprefix -Fi,$(INCDIR))
1571endif
1572ifdef LINKSMART
1573override FPCOPT+=-XX
1574endif
1575ifdef CREATESMART
1576override FPCOPT+=-CX
1577endif
1578ifdef DEBUG
1579override FPCOPT+=-gl
1580override FPCOPTDEF+=DEBUG
1581endif
1582ifdef RELEASE
1583FPCCPUOPT:=-O2
1584override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
1585override FPCOPTDEF+=RELEASE
1586endif
1587ifdef STRIP
1588override FPCOPT+=-Xs
1589endif
1590ifdef OPTIMIZE
1591override FPCOPT+=-O2
1592endif
1593ifdef VERBOSE
1594override FPCOPT+=-vwni
1595endif
1596ifdef COMPILER_OPTIONS
1597override FPCOPT+=$(COMPILER_OPTIONS)
1598endif
1599ifdef COMPILER_UNITDIR
1600override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
1601endif
1602ifdef COMPILER_LIBRARYDIR
1603override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
1604endif
1605ifdef COMPILER_OBJECTDIR
1606override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
1607endif
1608ifdef COMPILER_INCLUDEDIR
1609override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
1610endif
1611ifdef CROSSBINDIR
1612override FPCOPT+=-FD$(CROSSBINDIR)
1613endif
1614ifdef COMPILER_TARGETDIR
1615override FPCOPT+=-FE$(COMPILER_TARGETDIR)
1616ifeq ($(COMPILER_TARGETDIR),.)
1617override TARGETDIRPREFIX=
1618else
1619override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
1620endif
1621endif
1622ifdef COMPILER_UNITTARGETDIR
1623override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
1624ifeq ($(COMPILER_UNITTARGETDIR),.)
1625override UNITTARGETDIRPREFIX=
1626else
1627override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
1628endif
1629else
1630ifdef COMPILER_TARGETDIR
1631override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
1632override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
1633endif
1634endif
1635ifdef CREATESHARED
1636override FPCOPT+=-Cg
1637endif
1638ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
1639ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
1640override FPCOPT+=-Cg
1641endif
1642endif
1643ifdef LINKSHARED
1644endif
1645ifdef OPT
1646override FPCOPT+=$(OPT)
1647endif
1648ifdef FPMAKEBUILDOPT
1649override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)
1650endif
1651ifdef FPCOPTDEF
1652override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
1653endif
1654ifdef CFGFILE
1655override FPCOPT+=@$(CFGFILE)
1656endif
1657ifdef USEENV
1658override FPCEXTCMD:=$(FPCOPT)
1659override FPCOPT:=!FPCEXTCMD
1660export FPCEXTCMD
1661endif
1662override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
1663override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
1664ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
1665override ACROSSCOMPILE=1
1666endif
1667ifdef ACROSSCOMPILE
1668override FPCOPT+=$(CROSSOPT)
1669endif
1670override COMPILER:=$(strip $(FPC) $(FPCOPT))
1671ifneq (,$(findstring -sh ,$(COMPILER)))
1672UseEXECPPAS=1
1673endif
1674ifneq (,$(findstring -s ,$(COMPILER)))
1675ifeq ($(FULL_SOURCE),$(FULL_TARGET))
1676UseEXECPPAS=1
1677endif
1678endif
1679ifneq ($(UseEXECPPAS),1)
1680EXECPPAS=
1681else
1682ifdef RUNBATCH
1683EXECPPAS:=@$(RUNBATCH) $(PPAS)
1684else
1685EXECPPAS:=@$(PPAS)
1686endif
1687endif
1688ifdef TARGET_RSTS
1689override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
1690override CLEANRSTFILES+=$(RSTFILES)
1691endif
1692.PHONY: fpc_clean fpc_cleanall fpc_distclean
1693ifdef EXEFILES
1694override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
1695override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
1696endif
1697ifdef CLEAN_PROGRAMS
1698override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
1699override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
1700endif
1701ifdef CLEAN_UNITS
1702override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
1703endif
1704ifdef CLEANPPUFILES
1705override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
1706ifdef DEBUGSYMEXT
1707override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
1708endif
1709override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
1710override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
1711endif
1712fpc_clean: $(CLEANTARGET)
1713ifdef CLEANEXEFILES
1714	-$(DEL) $(CLEANEXEFILES)
1715endif
1716ifdef CLEANEXEDBGFILES
1717	-$(DELTREE) $(CLEANEXEDBGFILES)
1718endif
1719ifdef CLEANPPUFILES
1720	-$(DEL) $(CLEANPPUFILES)
1721endif
1722ifneq ($(CLEANPPULINKFILES),)
1723	-$(DEL) $(CLEANPPULINKFILES)
1724endif
1725ifdef CLEANRSTFILES
1726	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
1727endif
1728ifdef CLEAN_FILES
1729	-$(DEL) $(CLEAN_FILES)
1730endif
1731ifdef LIB_NAME
1732	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
1733endif
1734	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
1735	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
1736fpc_cleanall: $(CLEANTARGET)
1737ifdef CLEANEXEFILES
1738	-$(DEL) $(CLEANEXEFILES)
1739endif
1740ifdef COMPILER_UNITTARGETDIR
1741ifdef CLEANPPUFILES
1742	-$(DEL) $(CLEANPPUFILES)
1743endif
1744ifneq ($(CLEANPPULINKFILES),)
1745	-$(DEL) $(CLEANPPULINKFILES)
1746endif
1747ifdef CLEANRSTFILES
1748	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
1749endif
1750endif
1751ifdef CLEAN_FILES
1752	-$(DEL) $(CLEAN_FILES)
1753endif
1754	-$(DELTREE) units
1755	-$(DELTREE) bin
1756	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
1757ifneq ($(PPUEXT),.ppu)
1758	-$(DEL) *.o *.ppu *.a
1759endif
1760	-$(DELTREE) *$(SMARTEXT)
1761	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
1762	-$(DEL) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
1763ifdef AOUTEXT
1764	-$(DEL) *$(AOUTEXT)
1765endif
1766ifdef DEBUGSYMEXT
1767	-$(DEL) *$(DEBUGSYMEXT)
1768endif
1769ifdef LOCALFPMAKEBIN
1770	-$(DEL) $(LOCALFPMAKEBIN)
1771	-$(DEL) $(FPMAKEBINOBJ)
1772endif
1773fpc_distclean: cleanall
1774.PHONY: fpc_baseinfo
1775override INFORULES+=fpc_baseinfo
1776fpc_baseinfo:
1777	@$(ECHO)
1778	@$(ECHO)  == Package info ==
1779	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
1780	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
1781	@$(ECHO)
1782	@$(ECHO)  == Configuration info ==
1783	@$(ECHO)
1784	@$(ECHO)  FPC.......... $(FPC)
1785	@$(ECHO)  FPC Version.. $(FPC_VERSION)
1786	@$(ECHO)  Source CPU... $(CPU_SOURCE)
1787	@$(ECHO)  Target CPU... $(CPU_TARGET)
1788	@$(ECHO)  Source OS.... $(OS_SOURCE)
1789	@$(ECHO)  Target OS.... $(OS_TARGET)
1790	@$(ECHO)  Full Source.. $(FULL_SOURCE)
1791	@$(ECHO)  Full Target.. $(FULL_TARGET)
1792	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
1793	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
1794	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
1795	@$(ECHO)
1796	@$(ECHO)  == Directory info ==
1797	@$(ECHO)
1798	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
1799	@$(ECHO)
1800	@$(ECHO)  Basedir......... $(BASEDIR)
1801	@$(ECHO)  FPCDir.......... $(FPCDIR)
1802	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
1803	@$(ECHO)  UnitsDir........ $(UNITSDIR)
1804	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
1805	@$(ECHO)
1806	@$(ECHO)  GCC library..... $(GCCLIBDIR)
1807	@$(ECHO)  Other library... $(OTHERLIBDIR)
1808	@$(ECHO)
1809	@$(ECHO)  == Tools info ==
1810	@$(ECHO)
1811	@$(ECHO)  As........ $(AS)
1812	@$(ECHO)  Ld........ $(LD)
1813	@$(ECHO)  Ar........ $(AR)
1814	@$(ECHO)  Rc........ $(RC)
1815	@$(ECHO)
1816	@$(ECHO)  Mv........ $(MVPROG)
1817	@$(ECHO)  Cp........ $(CPPROG)
1818	@$(ECHO)  Rm........ $(RMPROG)
1819	@$(ECHO)  GInstall.. $(GINSTALL)
1820	@$(ECHO)  Echo...... $(ECHO)
1821	@$(ECHO)  Shell..... $(SHELL)
1822	@$(ECHO)  Date...... $(DATE)
1823	@$(ECHO)  FPCMake... $(FPCMAKE)
1824	@$(ECHO)  PPUMove... $(PPUMOVE)
1825	@$(ECHO)  Zip....... $(ZIPPROG)
1826	@$(ECHO)
1827	@$(ECHO)  == Object info ==
1828	@$(ECHO)
1829	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
1830	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
1831	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
1832	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
1833	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
1834	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
1835	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
1836	@$(ECHO)
1837	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
1838	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
1839	@$(ECHO)
1840	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
1841	@$(ECHO)  Install Files....... $(INSTALL_FILES)
1842	@$(ECHO)
1843	@$(ECHO)  == Install info ==
1844	@$(ECHO)
1845	@$(ECHO)  DateStr.............. $(DATESTR)
1846	@$(ECHO)  ZipName.............. $(ZIPNAME)
1847	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
1848	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
1849	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
1850	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
1851	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
1852	@$(ECHO)
1853	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
1854	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
1855	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
1856	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
1857	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
1858	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
1859	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
1860	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
1861	@$(ECHO)
1862	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
1863	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
1864	@$(ECHO)
1865.PHONY: fpc_info
1866fpc_info: $(INFORULES)
1867.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
1868	fpc_makefile_dirs
1869fpc_makefile:
1870	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
1871fpc_makefile_sub1:
1872ifdef TARGET_DIRS
1873	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
1874endif
1875ifdef TARGET_EXAMPLEDIRS
1876	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
1877endif
1878fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
1879fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
1880fpc_makefiles: fpc_makefile fpc_makefile_dirs
1881debug:
1882smart:
1883release:
1884units:
1885examples:
1886shared:
1887install:
1888sourceinstall:
1889exampleinstall:
1890distinstall:
1891zipinstall:
1892zipsourceinstall:
1893zipexampleinstall:
1894zipdistinstall:
1895cleanall: fpc_cleanall
1896info: fpc_info
1897makefiles: fpc_makefiles
1898.PHONY: debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall cleanall info makefiles
1899ifneq ($(wildcard fpcmake.loc),)
1900include fpcmake.loc
1901endif
1902.NOTPARALLEL:
1903.PHONY: rtl extra fpcunit packages all clean distclean clean_ctest
1904.PHONY: cleanrtl distcleanrtl
1905.PHONY: cleanfpcunit distcleanfpcunit
1906.PHONY: cleanpackages distcleanpackages
1907TESTOPT:=-n -FE$(COMPILER_TARGETDIR) -T$(OS_TARGET) $(OPT)
1908ifeq ($(CPU_TARGET),armeb)
1909override TESTOPT+=-Cb
1910endif
1911ifneq ($(BINUTILSPREFIX),)
1912override TESTOPT+=-XP$(BINUTILSPREFIX) -Xc
1913endif
1914ifeq ($(OS_TARGET),msdos)
1915override TESTOPT+=-CX
1916endif
1917TESTCOMPILER:=$(FPC) $(TESTOPT)
1918ifdef CROSSCOMPILE
1919override CROSSOPT:=$(OPT)
1920override OPT=
1921override BUILDFULLNATIVE=
1922endif
1923DUMMYINSTALLDIR=$(BASEDIR)/tmp
1924INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
1925rtl-stamp.$(FULL_TARGET):
1926ifneq ($(inOS2),)
1927	$(MAKE) -C ../../rtl all "OPT=$(OPT) -n" "CROSSOPT=$(CROSSOPT)"
1928else
1929	$(MAKE) -C ../../rtl all 'OPT=$(OPT) -n' 'CROSSOPT=$(CROSSOPT)'
1930endif
1931	$(MAKE) -C ../../rtl install $(INSTALLOPT) OPT= CROSSOPT=
1932	$(ECHO) Compiled > rtl-stamp.$(FULL_TARGET)
1933cleanrtl:
1934	$(DELTREE) $(COMPILER_TARGETDIR)
1935	$(DELTREE) $(DUMMYINSTALLDIR)
1936	-$(DEL) rtl-stamp.$(FULL_TARGET)
1937distcleanrtl: cleanrtl
1938rtl : rtl-stamp.$(FULL_TARGET)
1939DUMMYINSTALLDIR=$(BASEDIR)/tmp
1940INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
1941FPCUNITDIR=$(FPCDIR)/packages/fcl-fpcunit/src
1942fpcunit-stamp.$(FULL_TARGET):
1943ifneq ($(OS_TARGET),msdos)
1944ifneq ($(CPU_TARGET),avr)
1945ifneq ($(CPU_TARGET),jvm)
1946	$(TESTCOMPILER) -Fu$(BASEDIR)/$(COMPILER_TARGETDIR) $(FPCUNITDIR)/testutils
1947	$(TESTCOMPILER) -Fu$(BASEDIR)/$(COMPILER_TARGETDIR) $(FPCUNITDIR)/fpcunit
1948endif
1949endif
1950endif
1951	$(ECHO) Compiled > fpcunit-stamp.$(FULL_TARGET)
1952cleanfpcunit:
1953	$(DELTREE) $(COMPILER_TARGETDIR)
1954	$(DELTREE) $(DUMMYINSTALLDIR)
1955	-$(DEL) fpcunit-stamp.$(FULL_TARGET)
1956distcleanfpcunit: cleanfpcunit
1957	$(MAKE) -C $(FPCUNITDIR)/.. clean
1958fpcunit : fpcunit-stamp.$(FULL_TARGET)
1959DUMMYINSTALLDIR=$(BASEDIR)/tmp
1960INSTALLOPT=INSTALL_PREFIX=$(DUMMYINSTALLDIR) INSTALL_UNITDIR=$(BASEDIR)/$(COMPILER_TARGETDIR)
1961PACKAGESDIR=$(FPCDIR)/packages
1962packages-stamp.$(FULL_TARGET):
1963ifneq ($(inOS2),)
1964	$(MAKE) -C ../../packages all "OPT=$(OPT) -n" "CROSSOPT=$(CROSSOPT)"
1965else
1966	$(MAKE) -C ../../packages all 'OPT=$(OPT) -n' 'CROSSOPT=$(CROSSOPT)'
1967endif
1968	$(MAKE) -C ../../packages install $(INSTALLOPT) OPT= CROSSOPT=
1969	$(ECHO) Compiled > packages-stamp.$(FULL_TARGET)
1970cleanpackages:
1971	$(DELTREE) $(COMPILER_TARGETDIR)
1972	$(DELTREE) $(DUMMYINSTALLDIR)
1973	-$(DEL) packages-stamp.$(FULL_TARGET)
1974distcleanpackages: cleanpackages
1975packages : packages-stamp.$(FULL_TARGET)
1976erroru$(PPUEXT) : erroru.pp
1977	$(TESTCOMPILER) erroru.pp
1978ptest$(PPUEXT) : ../test/cg/ptest.pp
1979ifneq ($(OS_TARGET),msdos)
1980	$(TESTCOMPILER) ../test/cg/ptest.pp
1981endif
1982popuperr$(PPUEXT) : popuperr.pp
1983	$(TESTCOMPILER) popuperr.pp
1984ifdef CCOMPILER
1985ctest: ../test/cg/obj/ctest.c
1986	$(CCOMPILER) -c -o ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o ../test/cg/obj/ctest.c
1987else
1988ctest:
1989	@$(ECHO) "No C compiler found"
1990	@exit 1
1991endif
1992extra : erroru$(PPUEXT) ptest$(PPUEXT) popuperr$(PPUEXT)
1993PPULIST:=$(wildcard */*.ppu) $(wildcard units/*/*.ppu)
1994PPULOGLIST:=$(subst .ppu,.log-ppu,$(PPULIST))
1995RMPPULOGLIST:=$(subst .ppu,.rm-log-ppu,$(PPULIST))
1996.PHONY : ppulogs cleanppulogs testppudump $(RMPPULOGLIST)
1997ppulogs : $(PPULOGLIST)
1998vpath %.ppu $(ALLPPUDIRS)
1999vpath %.log-ppu $(ALLPPUDIRS)
2000vpath %.rm-log-ppu $(ALLPPUDIRS)
2001%.log-ppu : %.ppu ../../compiler/utils/ppudump$(EXEEXT)
2002	..$(PATHSEP)..$(PATHSEP)compiler$(PATHSEP)utils$(PATHSEP)ppudump -VA -M $< > $@
2003%.rm-log-ppu : %.ppu ../../compiler/utils/ppudump$(EXEEXT)
2004	-$(RMPROG) $<
2005../../compiler/utils/ppudump$(EXEEXT):
2006	$(MAKE) -C $(COMPILERDIR)/utils ppudump$(EXEEXT)
2007ppuinfo :
2008	echo PPU list is "$(PPULIST)"
2009	echo PPULOG list is "$(PPULOGLIST)"
2010cleanppulogs : $(RMPPULOGLIST)
2011testppudump :
2012	$(MAKE) cleanppulogs ppulogs
2013ifdef QUICKTEST
2014all : rtl fpcunit extra
2015else
2016all : rtl fpcunit packages extra
2017endif
2018STAMPFILES=$(wildcard *stamp*)
2019TEMPDIRS=$(wildcard $(MAKEFILETARGETS) tmp)
2020clean : cleanrtl cleanall cleanfpcunit cleanpackages
2021distclean : clean distcleanrtl distcleanfpcunit distcleanpackages
2022	-$(DELTREE) $(TEMPDIRS)
2023	-$(DELTREE) $(BASEDIR)/units
2024	-$(DEL) $(STAMPFILES)
2025clean_ctest :
2026	-$(DEL) ../test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o
2027