makefile.fpc 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. #
  2. # $Id$
  3. # Copyright (c) 1998 by the Free Pascal Development Team
  4. #
  5. # Common makefile for Free Pascal
  6. #
  7. # See the file COPYING.FPC, included in this distribution,
  8. # for details about the copyright.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. #
  14. #####################################################################
  15. # Force default settings
  16. #####################################################################
  17. # Latest release version
  18. override RELEASEVER:=0.99.11
  19. #####################################################################
  20. # Autodetect OS (Linux or Dos or Windows NT)
  21. # define inlinux when running under linux
  22. # define inWinNT when running under WinNT
  23. #####################################################################
  24. PWD=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
  25. ifeq ($(PWD),)
  26. PWD=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
  27. ifeq ($(PWD),)
  28. nopwd:
  29. @echo
  30. @echo You need the GNU pwd,cp,mv,rm,install utils to use this makefile!
  31. @echo Get ftp://tflily.fys.kuleuven.ac.be/pub/fpc/dist/gnuutils.zip
  32. @echo
  33. @exit
  34. else
  35. inlinux=1
  36. endif
  37. else
  38. PWD:=$(subst \,/,$(firstword $(PWD)))
  39. endif
  40. # Detect NT - NT sets OS to Windows_NT
  41. ifndef inlinux
  42. ifeq ($(OS),Windows_NT)
  43. inWinNT=1
  44. endif
  45. endif
  46. #####################################################################
  47. # Check for FPCDIR environment
  48. #####################################################################
  49. ifndef FPCDIR
  50. nofpcdir:
  51. @echo
  52. @echo You need to set the FPCDIR environment variable to use
  53. @echo this Makefile.
  54. @echo Example: SET FPCDIR=/pp
  55. @echo
  56. @exit
  57. endif
  58. #####################################################################
  59. # Targets
  60. #####################################################################
  61. # Target OS
  62. ifndef OS_TARGET
  63. ifdef inlinux
  64. OS_TARGET=linux
  65. else
  66. ifdef inWinNT
  67. OS_TARGET=win32
  68. else
  69. OS_TARGET=go32v2
  70. endif
  71. endif
  72. endif
  73. # Source OS
  74. ifndef OS_SOURCE
  75. ifdef inlinux
  76. OS_SOURCE=linux
  77. else
  78. ifndef inWinNT
  79. OS_SOURCE=win32
  80. else
  81. OS_SOURCE=go32v2
  82. endif
  83. endif
  84. endif
  85. # CPU
  86. ifndef CPU
  87. CPU=i386
  88. endif
  89. # Options
  90. ifndef OPT
  91. OPT=
  92. endif
  93. # What compiler to use ?
  94. ifndef PP
  95. PP=ppc386
  96. endif
  97. # assembler, redefine it if cross compiling
  98. ifndef AS
  99. AS=as
  100. endif
  101. # linker, but probably not used
  102. ifndef LD
  103. LD=ld
  104. endif
  105. # Release ? Then force OPT and don't use extra opts via commandline
  106. ifdef RELEASE
  107. override OPT:=-Xs -OG2p2 -n
  108. endif
  109. # Verbose settings (warning,note,info)
  110. ifdef VERBOSE
  111. override OPT+=-vwni
  112. endif
  113. #####################################################################
  114. # Shell commands
  115. #####################################################################
  116. # To copy pograms
  117. ifndef COPY
  118. COPY=cp -fp
  119. endif
  120. # To move pograms
  121. ifndef MOVE
  122. MOVE=mv -f
  123. endif
  124. # Check delete program
  125. ifndef DEL
  126. DEL=rm -f
  127. endif
  128. # Check deltree program
  129. ifndef DELTREE
  130. DELTREE=rm -rf
  131. endif
  132. # To install files
  133. ifndef INSTALL
  134. ifdef inlinux
  135. INSTALL=install -m 644
  136. else
  137. INSTALL=$(COPY)
  138. # ginstall has the strange thing to stubify all .o files !
  139. #INSTALL=ginstall -m 644
  140. endif
  141. endif
  142. # To install programs
  143. ifndef INSTALLEXE
  144. ifdef inlinux
  145. INSTALLEXE=install -m 755
  146. else
  147. INSTALLEXE=$(COPY)
  148. # ginstall has the strange thing to stubify all .o files !
  149. #INSTALLEXE=ginstall -m 755
  150. endif
  151. endif
  152. # To make a directory.
  153. ifndef MKDIR
  154. ifdef inlinux
  155. MKDIR=install -m 755 -d
  156. else
  157. MKDIR=ginstall -m 755 -d
  158. endif
  159. endif
  160. #####################################################################
  161. # Default Tools
  162. #####################################################################
  163. # ppas.bat / ppas.sh
  164. ifdef inlinux
  165. PPAS=ppas.sh
  166. else
  167. PPAS=ppas.bat
  168. endif
  169. # ldconfig to rebuild .so cache
  170. ifdef inlinux
  171. LDCONFIG=ldconfig
  172. else
  173. LDCONFIG=
  174. endif
  175. # Where is the ppumove program ?
  176. ifndef PPUMOVE
  177. PPUMOVE=ppumove
  178. endif
  179. # diff
  180. ifndef DIFF
  181. DIFF=diff
  182. endif
  183. # date
  184. ifndef DATE
  185. # first try go32v2 specific gdate
  186. DATE=$(strip $(wildcard $(addsuffix /gdate.exe,$(subst ;, ,$(PATH)))))
  187. # try generic date.exe
  188. ifeq ($(DATE),)
  189. DATE=$(strip $(wildcard $(addsuffix /date.exe,$(subst ;, ,$(PATH)))))
  190. # finally try for linux
  191. ifeq ($(DATE),)
  192. DATE=$(strip $(wildcard $(addsuffix /date,$(subst :, ,$(PATH)))))
  193. ifeq ($(DATE),)
  194. DATE=
  195. endif
  196. else
  197. DATE:=$(subst \,/,$(firstword $(DATE)))
  198. endif
  199. else
  200. DATE:=$(subst \,/,$(firstword $(DATE)))
  201. endif
  202. endif
  203. # Sed
  204. ifndef SED
  205. SED=$(strip $(wildcard $(addsuffix /sed.exe,$(subst ;, ,$(PATH)))))
  206. ifeq ($(SED),)
  207. SED=$(strip $(wildcard $(addsuffix /sed,$(subst :, ,$(PATH)))))
  208. ifeq ($(SED),)
  209. SED=
  210. endif
  211. else
  212. SED:=$(subst \,/,$(firstword $(SED)))
  213. endif
  214. endif
  215. #####################################################################
  216. # Default Directories
  217. #####################################################################
  218. # Base dir
  219. ifdef PWD
  220. BASEDIR=$(shell $(PWD))
  221. endif
  222. # set the directory to the rtl base
  223. ifndef RTLDIR
  224. ifdef RTL
  225. RTLDIR=$(RTL)/$(OS_TARGET)
  226. else
  227. RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET)
  228. endif
  229. endif
  230. # specify where units are.
  231. ifndef UNITDIR
  232. ifdef UNITS
  233. UNITDIR=$(UNITS)/$(OS_TARGET)
  234. else
  235. UNITDIR=$(FPCDIR)/units/$(OS_TARGET)
  236. endif
  237. endif
  238. # set the prefix directory where to install everything
  239. ifndef PREFIXINSTALLDIR
  240. ifdef inlinux
  241. PREFIXINSTALLDIR=/usr
  242. else
  243. PREFIXINSTALLDIR=$(FPCDIR)
  244. endif
  245. endif
  246. # set the base directory where to install everything
  247. ifndef BASEINSTALLDIR
  248. ifdef inlinux
  249. BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(RELEASEVER)
  250. else
  251. BASEINSTALLDIR=$(PREFIXINSTALLDIR)
  252. endif
  253. endif
  254. #####################################################################
  255. # Install Directories based on BASEINSTALLDIR
  256. #####################################################################
  257. # Linux binary really goes to baseinstalldir
  258. ifndef LIBINSTALLDIR
  259. ifdef inlinux
  260. LIBINSTALLDIR=$(BASEINSTALLDIR)
  261. else
  262. LIBINSTALLDIR=$(BASEINSTALLDIR)/lib
  263. endif
  264. endif
  265. # set the directory where to install the binaries
  266. ifndef BININSTALLDIR
  267. ifdef inlinux
  268. BININSTALLDIR=$(PREFIXINSTALLDIR)/bin
  269. else
  270. BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
  271. endif
  272. endif
  273. # Where the .msg files will be stored
  274. ifndef MSGINSTALLDIR
  275. ifdef inlinux
  276. MSGINSTALLDIR=$(BASEINSTALLDIR)/msg
  277. else
  278. MSGINSTALLDIR=$(BININSTALLDIR)
  279. endif
  280. endif
  281. # Where the doc files will be stored
  282. ifndef DOCINSTALLDIR
  283. ifdef inlinux
  284. DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(RELEASEVER)
  285. else
  286. DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
  287. endif
  288. endif
  289. ########################
  290. # Unit Directories
  291. ########################
  292. # this can be set to 'rtl' when the RTL units are installed
  293. ifndef UNITPREFIX
  294. UNITPREFIX=units
  295. endif
  296. # set the directory where to install the units.
  297. ifndef UNITINSTALLDIR
  298. ifdef inlinux
  299. UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)
  300. else
  301. UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET)
  302. endif
  303. endif
  304. # set the directory where to install the units.
  305. ifndef STATIC_UNITINSTALLDIR
  306. STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static
  307. endif
  308. # set the directory where to install the units.
  309. ifndef SHARED_UNITINSTALLDIR
  310. SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared
  311. endif
  312. # set the directory where to install the libs (must exist)
  313. ifndef STATIC_LIBINSTALLDIR
  314. STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR)
  315. endif
  316. # set the directory where to install the libs (must exist)
  317. ifndef SHARED_LIBINSTALLDIR
  318. ifdef inlinux
  319. SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
  320. else
  321. SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR)
  322. endif
  323. endif
  324. #####################################################################
  325. # Compiler Command Line
  326. #####################################################################
  327. # Load commandline OPTDEF and add CPU define
  328. override PPOPTDEF:=$(OPTDEF) -d$(CPU)
  329. # Load commandline OPT and add target and unit dir to be sure
  330. override PPOPT:=$(OPT) -T$(OS_TARGET) $(NEEDOPT)
  331. # RTL first and then Unit dir (a unit can override RTLunit)
  332. ifdef RTLDIR
  333. override PPOPT+=$(addprefix -Fu,$(RTLDIR))
  334. endif
  335. ifdef UNITDIR
  336. override PPOPT+=$(addprefix -Fu,$(UNITDIR))
  337. endif
  338. ifdef NEEDUNITDIR
  339. override PPOPT+=$(addprefix -Fu,$(NEEDUNITDIR))
  340. endif
  341. # Add include dirs INC and PROCINC and OSINC
  342. ifdef INC
  343. override PPOPT+=-I$(INC)
  344. endif
  345. ifdef PROCINC
  346. override PPOPT+=-I$(PROCINC)
  347. endif
  348. ifdef OSINC
  349. override PPOPT+=-I$(OSINC)
  350. endif
  351. # Target dirs
  352. ifdef TARGETDIR
  353. override PPOPT+=-FE$(TARGETDIR)
  354. endif
  355. ifdef UNITTARGETDIR
  356. override PPOPT+=-FU$(UNITTARGETDIR)
  357. endif
  358. # Smartlinking
  359. ifeq ($(SMARTLINK),YES)
  360. ifeq ($(LIBTYPE),shared)
  361. override SMARTLINK=NO
  362. else
  363. override PPOPT+=-Cx
  364. endif
  365. endif
  366. # Add library type, for static libraries smartlinking is automatic used
  367. ifeq ($(LIBTYPE),shared)
  368. override PPOPT+=-CD
  369. else
  370. ifeq ($(LIBTYPE),static)
  371. override PPOPT+=-CS
  372. endif
  373. endif
  374. # Add library name
  375. ifneq ($(LIBNAME),)
  376. override PPOPT:=$(PPOPT) -o$(LIBNAME)
  377. endif
  378. # Add defines from PPOPTDEF to PPOPT
  379. override PPOPT:=$(PPOPT) $(PPOPTDEF)
  380. # Was a config file specified ?
  381. ifdef CFGFILE
  382. override PPOPT:=$(PPOPT) @$(CFGFILE)
  383. endif
  384. override COMPILER=$(PP) $(PPOPT)
  385. #####################################################################
  386. # Default extensions
  387. #####################################################################
  388. # Default needed extensions (Go32v2,Linux)
  389. PPLEXT=.ppl
  390. PPUEXT=.ppu
  391. OEXT=.o
  392. ASMEXT=.s
  393. SMARTEXT=.sl
  394. STATICLIBEXT=.a
  395. SHAREDLIBEXT=.so
  396. # Executable extension
  397. ifdef inlinux
  398. EXEEXT=
  399. else
  400. EXEEXT=.exe
  401. endif
  402. # Go32v1
  403. ifeq ($(OS_TARGET),go32v1)
  404. PPUEXT=.pp1
  405. OEXT=.o1
  406. ASMEXT=.s1
  407. SMARTEXT=.sl1
  408. STATICLIBEXT=.a1
  409. SHAREDLIBEXT=.so1
  410. endif
  411. # Win32
  412. ifeq ($(OS_TARGET),win32)
  413. PPUEXT=.ppw
  414. OEXT=.ow
  415. ASMEXT=.sw
  416. SMARTEXT=.slw
  417. STATICLIBEXT=.aw
  418. SHAREDLIBEXT=.dll
  419. endif
  420. # OS/2
  421. ifeq ($(OS_TARGET),os2)
  422. PPUEXT=.ppo
  423. ASMEXT=.so2
  424. OEXT=.o2
  425. SMARTEXT=.so
  426. STATICLIBEXT=.ao
  427. SHAREDLIBEXT=.dll
  428. endif
  429. # determine libary extension.
  430. ifeq ($(LIBTYPE),static)
  431. LIBEXT=$(STATICLIBEXT)
  432. else
  433. LIBEXT=$(SHAREDLIBEXT)
  434. endif
  435. # library prefix
  436. LIBPREFIX=lib
  437. ifeq ($(OS_TARGET),go32v2)
  438. LIBPREFIX=
  439. endif
  440. ifeq ($(OS_TARGET),go32v1)
  441. LIBPREFIX=
  442. endif
  443. # determine with .pas extension is used
  444. ifdef EXEOBJECTS
  445. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS)))))
  446. else
  447. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS)))))
  448. endif
  449. ifeq ($(TESTPAS),)
  450. PASEXT=.pp
  451. else
  452. PASEXT=.pas
  453. endif
  454. #####################################################################
  455. # Export commandline values, so nesting use the same values
  456. #####################################################################
  457. export FPCDIR FPCMAKE
  458. export RELEASEVER OS_SOURCE OS_TARGET OPT OPTDEF CPU PP RELEASE VERBOSE
  459. export SMARTLINK LIBTYPE LIBNAME
  460. export BASEINSTALLDIR
  461. #####################################################################
  462. # General compile rules
  463. #####################################################################
  464. ifndef NODEFAULTRULES
  465. # Create Filenames
  466. EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
  467. UNITFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
  468. UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS))
  469. .PHONY : all clean install \
  470. info cfginfo objectinfo installinfo filesinfo
  471. .SUFFIXES : $(EXEEXT) $(PPUEXT) $(PASEXT)
  472. #####################################################################
  473. # Default
  474. #####################################################################
  475. ifdef DEFAULTUNITS
  476. all: units
  477. else
  478. all: units exes
  479. endif
  480. units: $(UNITFILES)
  481. exes: $(EXEFILES)
  482. # General compile rules
  483. %$(PPUEXT): %$(PASEXT)
  484. $(COMPILER) $<
  485. %$(EXEEXT): %$(PASEXT)
  486. $(COMPILER) $<
  487. #####################################################################
  488. # Library
  489. #####################################################################
  490. staticlib:
  491. $(MAKE) libsclean
  492. $(MAKE) all SMARTLINK=YES LIBTYPE=static
  493. sharedlib:
  494. ifdef inlinux
  495. $(MAKE) libsclean
  496. $(MAKE) all LIBTYPE=shared
  497. else
  498. @echo Shared Libraries not supported
  499. endif
  500. libsclean : clean
  501. -$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  502. #####################################################################
  503. # Install rules
  504. #####################################################################
  505. install : all
  506. ifndef DEFAULTUNITS
  507. ifdef EXEOBJECTS
  508. $(MKDIR) $(BININSTALLDIR)
  509. $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
  510. endif
  511. endif
  512. ifdef UNITOBJECTS
  513. $(MKDIR) $(UNITINSTALLDIR)
  514. $(INSTALL) $(UNITFILES) $(UNITINSTALLDIR)
  515. ifeq ($(SMARTLINK),YES)
  516. $(INSTALL) $(LIBPREFIX)$(LIBNAME)$(LIBEXT) $(UNITINSTALLDIR)
  517. else
  518. -$(INSTALL) *$(OEXT) $(UNITINSTALLDIR)
  519. endif
  520. endif
  521. staticlibinstall: staticlib
  522. $(MKDIR) $(STATIC_UNITINSTALLDIR)
  523. $(INSTALL) $(UNITFILES) $(STATIC_UNITINSTALLDIR)
  524. $(MKDIR) $(STATIC_LIBINSTALLDIR)
  525. $(INSTALLEXE) *$(STATICLIBEXT) $(STATIC_LIBINSTALLDIR)
  526. sharedlibinstall: sharedlib
  527. $(MKDIR) $(SHARED_UNITINSTALLDIR)
  528. $(INSTALL) $(UNITFILES) $(SHARED_UNITINSTALLDIR)
  529. $(MKDIR) $(SHARED_LIBINSTALLDIR)
  530. $(INSTALLEXE) *$(SHAREDLIBEXT) $(SHARED_LIBINSTALLDIR)
  531. libinstall: staticlibinstall sharedlibinstall
  532. #####################################################################
  533. # Clean rules
  534. #####################################################################
  535. clean:
  536. -$(DEL) *$(OEXT) *$(ASMEXT) *$(PPUEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) $(PPAS) link.res log
  537. -$(DELTREE) *$(SMARTEXT)
  538. ifdef EXEOBJECTS
  539. -$(DEL) $(EXEFILES)
  540. endif
  541. #####################################################################
  542. # Depend rules
  543. #####################################################################
  544. depend:
  545. makedep $(UNITOBJECTS)
  546. #####################################################################
  547. # Info rules
  548. #####################################################################
  549. info: cfginfo objectinfo installinfo
  550. cfginfo:
  551. @echo
  552. @echo == Configuration info ==
  553. @echo
  554. @echo FPCDir.... $(FPCDIR)
  555. @echo FPCMake... $(FPCMAKE)
  556. @echo
  557. @echo Target.... $(OS_TARGET)
  558. @echo Source.... $(OS_SOURCE)
  559. @echo Target.... $(OS_TARGET)
  560. @echo Basedir... $(BASEDIR)
  561. @echo Pwd....... $(PWD)
  562. ifdef SED
  563. @echo Sed....... $(SED)
  564. endif
  565. @echo
  566. objectinfo:
  567. @echo
  568. @echo == Object info ==
  569. @echo
  570. @echo UnitObjects... $(UNITOBJECTS)
  571. @echo ExeObjects.... $(EXEOBJECTS)
  572. @echo
  573. installinfo:
  574. @echo
  575. @echo == Install info ==
  576. @echo
  577. @echo BaseInstallDir....... $(BASEINSTALLDIR)
  578. @echo BinInstallDir........ $(BININSTALLDIR)
  579. @echo UnitInstallDir....... $(UNITINSTALLDIR)
  580. @echo StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR)
  581. @echo SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR)
  582. @echo LibInstallDir........ $(LIBINSTALLDIR)
  583. @echo StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR)
  584. @echo SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR)
  585. @echo MsgInstallDir........ $(MSGINSTALLDIR)
  586. @echo DocInstallDir........ $(DOCINSTALLDIR)
  587. @echo
  588. # try to get the files in the currentdir
  589. PASFILES:=$(wildcard *.pas)
  590. PPFILES:=$(wildcard *.pp)
  591. INCFILES:=$(wildcard *.inc)
  592. MSGFILES:=$(wildcard *.msg)
  593. ASFILES:=$(wildcard *.as)
  594. filesinfo:
  595. @echo
  596. @echo == Files info ==
  597. @echo
  598. ifdef PASFILES
  599. @echo Pas files are $(PASFILES)
  600. endif
  601. ifdef PPFILES
  602. @echo PP files are $(PPFILES)
  603. endif
  604. ifdef INCFILES
  605. @echo Inc files are $(INCFILES)
  606. endif
  607. ifdef MSGFILES
  608. @echo Msg files are $(MSGFILES)
  609. endif
  610. ifdef ASFILES
  611. @echo As files are $(ASFILES)
  612. endif
  613. endif #NODEFAULTRULES