* packages

* lot of other changes
This commit is contained in:
peter 1999-11-24 23:53:00 +00:00
parent 2719fb91e8
commit 392c44c739
3 changed files with 601 additions and 400 deletions

View File

@ -1,7 +1,7 @@
{$ifdef Delphi}
const fpcmakeini : array[0..93] of string[240]=(
const fpcmakeini : array[0..99] of string[240]=(
{$else Delphi}
const fpcmakeini : array[0..93,1..240] of char=(
const fpcmakeini : array[0..99,1..240] of char=(
{$endif Delphi}
';'#010+
'; $Id$'#010+
@ -320,19 +320,23 @@ const fpcmakeini : array[0..93,1..240] of char=(
'override ','FPCOPT+=-FU$(UNITTARGETDIR)'#010+
'endif'#010+
#010+
'[command_smartlink]'#010+
'[command_end]'#010+
'# Smartlinking'#010+
'ifdef SMARTLINK'#010+
'override FPCOPT+=-CX'#010+
'endif'#010+
#010+
'[command_end]'#010+
'# Debug'#010+
'ifdef DEBUG'#010+
'override FPCOPT+=-g'#010+
'endif'#010+
#010+
'# Add commandline options'#010+
'ifdef OPT'#010+
'override FPCOPT+=$(OPT)'#010+
'endif'#010+
'ifdef UNITDIR'#010+
'override FPCOPT+=$(addprefix -Fu',',$(UNITDIR))'#010+
'overr','ide FPCOPT+=$(addprefix -Fu,$(UNITDIR))'#010+
'endif'#010+
'ifdef LIBDIR'#010+
'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#010+
@ -344,7 +348,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'override FPCOPT+=$(addprefix -Fi,$(INCDIR))'#010+
'endif'#010+
#010+
'# Add defines from FPCOPTDEF to',' FPCOPT'#010+
'# Ad','d defines from FPCOPTDEF to FPCOPT'#010+
'ifdef FPCOPTDEF'#010+
'override FPCOPT+=$(FPCOPTDEF)'#010+
'endif'#010+
@ -358,7 +362,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
#010+
'[shelltools]'#010+
'###############################################','#####################'+
'####################','################################################'+
'#'#010+
'# Shell tools'#010+
'#####################################################################'#010+
@ -370,10 +374,10 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
'# To move pograms'#010+
'ifndef MOVE'#010+
'export MOVE:=mv -f'#010+
'export MOVE:=mv -f',#010+
'endif'#010+
#010+
'# Check delete prog','ram'#010+
'# Check delete program'#010+
'ifndef DEL'#010+
'export DEL:=rm -f'#010+
'endif'#010+
@ -388,11 +392,11 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifdef inlinux'#010+
'export INSTALL:=install -m 644'#010+
'else'#010+
'export INSTALL:=$(COPY)'#010+
'export INSTALL:=$(CO','PY)'#010+
'endif'#010+
'endif'#010+
#010+
'# To insta','ll programs'#010+
'# To install programs'#010+
'ifndef INSTALLEXE'#010+
'ifdef inlinux'#010+
'export INSTALLEXE:=install -m 755'#010+
@ -406,7 +410,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifdef inlinux'#010+
'export MKDIR:=install -m 755 -d'#010+
'else'#010+
'export MKDIR:=ginstall -m 755 ','-d'#010+
'exp','ort MKDIR:=ginstall -m 755 -d'#010+
'endif'#010+
'endif'#010+
#010+
@ -416,8 +420,8 @@ const fpcmakeini : array[0..93,1..240] of char=(
'# Default Tools'#010+
'#####################################################################'#010+
#010+
'# assembler, redefine it if cross compiling'#010+
'ifndef ','AS'#010+
'# assembler, redefine it',' if cross compiling'#010+
'ifndef AS'#010+
'AS=as'#010+
'endif'#010+
#010+
@ -437,8 +441,8 @@ const fpcmakeini : array[0..93,1..240] of char=(
'endif'#010+
'endif'#010+
#010+
'# also call ppas if with command option -s'#010+
'ifeq (,$(findst','ring -s ,$(COMPILER)))'#010+
'# also call ppas if with comman','d option -s'#010+
'ifeq (,$(findstring -s ,$(COMPILER)))'#010+
'EXECPPAS='#010+
'else'#010+
'EXECPPAS=@$(PPAS)'#010+
@ -453,8 +457,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
'# echo'#010+
'ifndef ECHO'#010+
'ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH))))'#010+
'ife','q ($(ECHO),)'#010+
'ECHO:=$(strip $(wildcard $(addsuffix /echo$(E','XEEXT),$(SEARCHPATH))))'+
#010+
'ifeq ($(ECHO),)'#010+
'export ECHO:=echo'#010+
'else'#010+
'export ECHO:=$(firstword $(ECHO))'#010+
@ -468,9 +473,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
'PPDEP:=$(strip $(wildcard $(addsuffix /ppdep$(EXEEXT),$(SEARCHPATH))))'+
#010+
'ifeq ($(PPDEP),)'#010+
'PPDEP='#010+
'PPDEP='#010,
'else'#010+
'export PPDEP:=$(firstw','ord $(PPDEP))'#010+
'export PPDEP:=$(firstword $(PPDEP))'#010+
'endif'#010+
'endif'#010+
#010+
@ -482,11 +487,11 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifeq ($(PPUMOVE),)'#010+
'PPUMOVE='#010+
'else'#010+
'export PPUMOVE:=$(firstword $(PPUMOVE))'#010+
'export PPUMOVE:=$(firstword $(PPUMOVE)',')'#010+
'endif'#010+
'endif'#010+
#010+
'[tool_ppufil','es]'#010+
'[tool_ppufiles]'#010+
'# ppufiles'#010+
'ifndef PPUFILES'#010+
'PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPA'+
@ -498,9 +503,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
'endif'#010+
'endif'#010+
#010+
'[tool_data2inc]'#010+
'[tool_data2inc]',#010+
'# data2inc'#010+
'ifndef DATA2INC',#010+
'ifndef DATA2INC'#010+
'DATA2INC:=$(strip $(wildcard $(addsuffix /data2inc$(EXEEXT),$(SEARCHPA'+
'TH))))'#010+
'ifeq ($(DATA2INC),)'#010+
@ -513,7 +518,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'[tool_diff]'#010+
'# diff'#010+
'ifndef DIFF'#010+
'DIFF:=$(strip $(wildcard $(addsuffix /dif','f$(EXEEXT),$(SEARCHPATH))))'+
'DIFF:=$(strip ','$(wildcard $(addsuffix /diff$(EXEEXT),$(SEARCHPATH))))'+
#010+
'ifeq ($(DIFF),)'#010+
'DIFF='#010+
@ -527,9 +532,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifndef CMP'#010+
'CMP:=$(strip $(wildcard $(addsuffix /cmp$(EXEEXT),$(SEARCHPATH))))'#010+
'ifeq ($(CMP),)'#010+
'CMP='#010+
'C','MP='#010+
'else'#010+
'export CMP:=$(firs','tword $(CMP))'#010+
'export CMP:=$(firstword $(CMP))'#010+
'endif'#010+
'endif'#010+
#010+
@ -545,7 +550,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'endif'#010+
#010+
'[tool_upx]'#010+
'# Look if UPX is found for go32v2 and',' win32. We can'#039't use $UPX b'+
'# Look if ','UPX is found for go32v2 and win32. We can'#039't use $UPX b'+
'ecuase'#010+
'# upx uses that one itself (PFV)'#010+
'ifndef UPXPROG'#010+
@ -556,7 +561,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'UPXPROG:=1'#010+
'endif'#010+
'ifdef UPXPROG'#010+
'UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(S','EARCHPATH))'+
'UPXPROG:=$(strip $(wildcard $(','addsuffix /upx$(EXEEXT),$(SEARCHPATH))'+
'))'#010+
'ifeq ($(UPXPROG),)'#010+
'UPXPROG='#010+
@ -571,8 +576,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
'[tool_date]'#010+
'# gdate/date'#010+
'ifndef DATE'#010+
'DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SEARCHPATH))))'#010+
'ifeq ($(DATE),',')'#010+
'DATE:=$(strip $(wildcard $(addsuffix /date$(EXEEXT),$(SE','ARCHPATH))))'+
#010+
'ifeq ($(DATE),)'#010+
'DATE:=$(strip $(wildcard $(addsuffix /gdate$(EXEEXT),$(SEACHPATH))))'#010+
'ifeq ($(DATE),)'#010+
'DATE='#010+
@ -585,8 +591,8 @@ const fpcmakeini : array[0..93,1..240] of char=(
'endif'#010+
#010+
'ifdef DATE'#010+
'DATESTR:=$(shell $(DATE) +%Y%m%d)'#010+
'else'#010,
'DATESTR:=$(s','hell $(DATE) +%Y%m%d)'#010+
'else'#010+
'DATESTR='#010+
'endif'#010+
#010+
@ -598,7 +604,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifeq ($(ZIPPROG),)'#010+
'ZIPPROG='#010+
'else'#010+
'export ZIPPROG:=$(firstword $(ZIPPROG)) -D9',' -r'#010+
'export ZIPPROG:=','$(firstword $(ZIPPROG)) -D9 -r'#010+
'endif'#010+
'endif'#010+
#010+
@ -610,9 +616,10 @@ const fpcmakeini : array[0..93,1..240] of char=(
'[extensions]'#010+
'#####################################################################'#010+
'# Default extensions'#010+
'#####################################################################'#010+
'##########################################################','##########'+
'#'#010+
#010+
'# Default need','ed extensions (Go32v2,Linux)'#010+
'# Default needed extensions (Go32v2,Linux)'#010+
'LOADEREXT=.as'#010+
'PPLEXT=.ppl'#010+
'PPUEXT=.ppu'#010+
@ -627,9 +634,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifeq ($(OS_TARGET),go32v1)'#010+
'PPUEXT=.pp1'#010+
'OEXT=.o1'#010+
'ASMEXT=.s1'#010+
'ASMEXT=.s','1'#010+
'SMARTEXT=.sl1'#010+
'STATICLIBEX','T=.a1'#010+
'STATICLIBEXT=.a1'#010+
'SHAREDLIBEXT=.so1'#010+
'PACKAGESUFFIX=v1'#010+
'endif'#010+
@ -646,10 +653,10 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
'# Win32'#010+
'ifeq ($(OS_TARGET),win32)'#010+
'PPUEXT=.ppw'#010+
'PPUEXT=.','ppw'#010+
'OEXT=.ow'#010+
'ASMEXT=.sw'#010+
'SMA','RTEXT=.slw'#010+
'SMARTEXT=.slw'#010+
'STATICLIBEXT=.aw'#010+
'SHAREDLIBEXT=.dll'#010+
'PACKAGESUFFIX=win32'#010+
@ -666,8 +673,8 @@ const fpcmakeini : array[0..93,1..240] of char=(
'PACKAGESUFFIX=os2'#010+
'endif'#010+
#010+
'# library prefix'#010+
'LIBPREFIX=l','ib'#010+
'#',' library prefix'#010+
'LIBPREFIX=lib'#010+
'ifeq ($(OS_TARGET),go32v2)'#010+
'LIBPREFIX='#010+
'endif'#010+
@ -678,8 +685,8 @@ const fpcmakeini : array[0..93,1..240] of char=(
'# determine which .pas extension is used'#010+
'ifndef PASEXT'#010+
'ifdef EXEOBJECTS'#010+
'override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EX'+
'EOBJEC','TS)))))'#010+
'override TESTPAS:=$(strip $(wildcard $(addsuffix ','.pas,$(firstword $('+
'EXEOBJECTS)))))'#010+
'else'#010+
'override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UN'+
'ITOBJECTS)))))'#010+
@ -693,52 +700,118 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
#010+
'[defaultrules]'#010+
'############################################################','########'+
'#################################','###################################'+
'#'#010+
'# Default rules'#010+
'#####################################################################'#010+
#010+
'.PHONY: defaultrule all smart shared \'#010+
'.PHONY: defaultrule all debug examples test smart shared \'#010+
' showinstall install zipinstall zipinstalladd \'#010+
' clean cleanall depend info'#010+
' ',' clean cleanall depend info'#010+
#010+
#010+
'[compilerule','s]'#010+
'[loaderrules]'#010+
'#####################################################################'#010+
'# General compile rules'#010+
'# Loaders'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_all fpc_units fpc_exes fpc_loaders'#010+
'.PHONY: fpc_loaders'#010+
#010+
'# Create Filenames'#010+
'ifdef',' LOADEROBJECTS'#010+
'LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))'#010+
'endif'#010+
'ifdef EXEOBJECTS'#010+
'EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))'#010+
'EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))'#010+
'endif'#010+
'ifdef UNITOBJECTS'#010+
'UNITPPUFILES=$(addsuffix $(PPUEXT),$','(UNITOBJECTS))'#010+
'endif'#010+
'%$(OEXT): %$(LOADER','EXT)'#010+
' $(AS) -o $*$(OEXT) $<'#010+
#010+
'.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp'#010+
'override ALLTARGET+=fpc_loaders'#010+
'override CLEANTARGET+=fpc_loaders_clean'#010+
'override SHOWINSTALLTARGET+=fpc_loaders_showinstall'#010+
'override INSTALLTARGET+=fpc_loaders_install'#010+
#010+
'ifdef DEFAULTUNITS'#010+
'fpc_all: fpc_loaders fpc_units'#010+
'else'#010+
'fpc_all: fpc_loaders fpc_units fpc_exes'#010+
'endif'#010+
'LOADEROFILES=$(addsuffix $(OEXT),$(','LOADEROBJECTS))'#010+
#010+
'fpc_loaders: $(LOADEROFILES)'#010+
#010+
'fpc_loaders_clean:'#010+
' -$(DEL) $(LOADEROFILES)'#010+
#010+
'fpc_loaders_showinstall:'#010+
' @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))'#010+
#010+
'fpc_loaders_install:'#010+
' $(MKDIR) $(UNITIN','STALLDIR)'#010+
' $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)'#010+
#010+
#010+
'[unitrules]'#010+
'#####################################################################'#010+
'# Units'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_un','its'#010+
#010+
'override ALLTARGET+=fpc_units'#010+
#010+
'UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))'#010+
'override INSTALLPPUFILES+=$(UNITPPUFILES)'#010+
'override CLEANPPUFILES+=$(UNITPPUFILES)'#010+
#010+
'fpc_units: $(UNITPPUFILES)'#010+
#010+
'fpc_exes:',' $(EXEFILES)'#010+
#010+
#010+
'[exerules]'#010+
'#############################','#######################################'+
'#'#010+
'# Exes'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_exes'#010+
#010+
'EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))'#010+
'EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))'#010+
#010+
'override AL','LTARGET+=fpc_exes'#010+
'override INSTALLEXEFILES+=$(EXEFILES)'#010+
'override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)'#010+
#010+
'fpc_exes: $(EXEFILES)'#010+
#010+
#010+
'[examplerules]'#010+
'#####################################################################'#010+
'# Examples'#010+
'##############','######################################################'+
'#'#010+
#010+
'.PHONY: fpc_examples fpc_test'#010+
#010+
'EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))'#010+
'EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))'#010+
#010+
'override CLEANEXEFILES+=$(EXAMPLEFILES) $(EX','AMPLEOFILES)'#010+
#010+
'fpc_examples: all $(EXAMPLEFILES)'#010+
#010+
'fpc_test: examples'#010+
#010+
#010+
'[compilerules]'#010+
'#####################################################################'#010+
'# General compile rules'#010+
'#############################################################','#######'+
'#'#010+
#010+
'.PHONY: fpc_all fpc_debug'#010+
#010+
'fpc_all: $(ALLTARGET)'#010+
#010+
'fpc_debug:'#010+
' $(MAKE) all DEBUG=1'#010+
#010+
'# General compile rules, available for both possible PASEXT'#010+
#010+
'.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp'#010+
#010+
'%$(PPUEXT): %.pp'#010+
' $(COMPILER) $< $(REDIR)'#010+
' $(COM','PILER) $< $(REDIR)'#010+
' $(EXECPASS)'#010+
#010+
'%$(PPUEXT): %.pas'#010+
@ -746,29 +819,25 @@ const fpcmakeini : array[0..93,1..240] of char=(
' $(EXECPASS)'#010+
#010+
'%$(EXEEXT): %.pp'#010+
' ','$(COMPILER) $< $(REDIR)'#010+
' $(COMPILER) $< $(REDIR)'#010+
' $(EXECPASS)'#010+
#010+
'%$(EXEEXT): %.pas'#010+
' $(COMPILER) $< $(REDIR)'#010+
' $(EXECPASS)'#010+
#010+
'%$(OEXT): %$(LOADEREXT)'#010+
' $(AS) -o $*$(OEXT) $<'#010+
' $','(EXECPASS)'#010+
#010+
#010+
'[libraryrules]'#010+
'#####################################################','###############'+
'#'#010+
'#####################################################################'#010+
'# Library'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_smart fpc_shared'#010+
#010+
'# Default sharedlib units are all unit objects'#010+
'# Default sharedlib units are a','ll unit objects'#010+
'ifndef SHAREDLIBUNITOBJECTS'#010+
'SHAREDLIBUNITOBJECTS=$(UNITOBJECTS)'#010+
'e','ndif'#010+
'endif'#010+
#010+
'fpc_smart:'#010+
' $(MAKE) all SMARTLINK=1'#010+
@ -778,23 +847,21 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifndef LIBNAME'#010+
' @$(ECHO) LIBNAME not set'#010+
'else'#010+
' $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBNAME)'#010+
' $(PPUMOVE) $(SHARE','DLIBUNITOBJECTS) -o$(LIBNAME)'#010+
'endif'#010+
'else'#010+
' @$(ECHO) Shared Libraries not su','pported'#010+
' @$(ECHO) Shared Libraries not supported'#010+
'endif'#010+
#010+
#010+
'[installrules]'#010+
'#####################################################################'#010+
'# Install rules'#010+
'#####################################################################'#010+
'##########################################','##########################'+
'#'#010+
#010+
'.PHONY: fpc_showinstall fpc_install'#010+
#010+
'ifdef UNITPPUFI','LES'#010+
'override INSTALLPPUFILES:=$(UNITPPUFILES)'#010+
'endif'#010+
'ifdef EXTRAINSTALLUNITS'#010+
'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))'#010+
'endif'#010+
@ -802,7 +869,7 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifdef INSTALLPPUFILES'#010+
'ifdef PPUFILES'#010+
'ifdef inlinux'#010+
'INSTALLPPULINKFILES=$(shell $(PPUFIL','ES) -S -O $(INSTALLPPUFILES))'#010+
'INSTALLPPULINKFILES=$(','shell $(PPUFILES) -S -O $(INSTALLPPUFILES))'#010+
'INSTALLPPULIBFILES=$(shell $(PPUFILES) -L $(INSTALLPPUFILES))'#010+
'else'#010+
'INSTALLPPULINKFILES=$(shell $(PPUFILES) $(INSTALLPPUFILES))'#010+
@ -810,63 +877,53 @@ const fpcmakeini : array[0..93,1..240] of char=(
'endif'#010+
'endif'#010+
#010+
'fpc_showinstall:'#010+
'ifndef DEFAULTUNITS'#010+
'ifdef EXEOBJECTS'#010+
' @$','(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))'#010+
'endif'#010+
'endif'#010+
'ifdef LOADEROBJECTS'#010+
' @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))'#010+
'fpc_showinstall: $(SHOWINSTALLTARGET)'#010+
'ifdef INSTAL','LEXEFILES'#010+
' @$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))'+
#010+
'endif'#010+
'ifdef INSTALLPPUFILES'#010+
' @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INS','TALLPPUFILE'+
'S))'#010+
' @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES)'+
')'#010+
'ifneq ($(INSTALLPPULINKFILES),)'#010+
' @$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFI'+
'LES))'#010+
' @$(ECHO) $(addprefi','x "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINK'+
'FILES))'#010+
'endif'#010+
'ifneq ($(INSTALLPPULIBFILES),)'#010+
' @$(ECHO) $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILE'+
'S))'#010+
'endif'#010,
'endif'#010+
'endif'#010+
'ifdef EXTRAINSTALLFILES'#010+
' @$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFIL'+
'ES))'#010+
' @$(ECHO) $(addprefix "\n"$(EXTRAINST','ALLDIR)/,$(EXTRAINSTALLF'+
'ILES))'#010+
'endif'#010+
#010+
'fpc_install:'#010+
'fpc_install: $(INSTALLTARGET)'#010+
'# Create UnitInstallFiles'#010+
'ifndef DEFAULTUNITS'#010+
'ifdef EXEOBJECTS'#010+
'ifdef INSTALLEXEFILES'#010+
' $(MKDIR) $(BININSTALLDIR)'#010+
'# Compress the exe','s if upx is defined'#010+
'# Compress the exes if upx is defined'#010+
'ifdef UPXPROG'#010+
' -$(UPXPROG) $(EXEFILES)'#010+
' -$(UPXPROG) $(INSTALLEXEFILES)',#010+
'endif'#010+
' $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)'#010+
'endif'#010+
'endif'#010+
'ifdef LOADEROBJECTS'#010+
' $(MKDIR) $(UNITINSTALLDIR)'#010+
' $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDI','R)'#010+
' $(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)'#010+
'endif'#010+
'ifdef INSTALLPPUFILES'#010+
' $(MKDIR) $(UNITINSTALLDIR)'#010+
' $(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)'#010+
'ifneq ($(INSTALLPPULINKFILES),)'#010+
' $(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)'#010+
' $(INSTALL) $(INS','TALLPPULINKFILES) $(UNITINSTALLDIR)'#010+
'endif'#010+
'ifneq ($(INSTALLPPUL','IBFILES),)'#010+
'ifneq ($(INSTALLPPULIBFILES),)'#010+
' $(MKDIR) $(LIBINSTALLDIR)'#010+
' $(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR)'#010+
'endif'#010+
'endif'#010+
'ifdef EXTRAINSTALLFILES'#010+
' $(MKDIR) $(EXTRAINSTALLDIR)'#010+
' $(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)'#010+
'endif'#010,
' ',' $(INSTALL) $(EXTRAINSTALLFILES) $(EXTRAINSTALLDIR)'#010+
'endif'#010+
#010+
#010+
'[zipinstallrules]'#010+
@ -874,9 +931,9 @@ const fpcmakeini : array[0..93,1..240] of char=(
'# Zip'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_zipinstall fpc_zipinstalladd'#010+
'.PHONY: fpc','_zipinstall fpc_zipinstalladd'#010+
#010+
'# Temporary path to pack a file',#010+
'# Temporary path to pack a file'#010+
'ifndef PACKDIR'#010+
'ifndef inlinux'#010+
'PACKDIR=pack_tmp'#010+
@ -890,10 +947,10 @@ const fpcmakeini : array[0..93,1..240] of char=(
'PACKAGEDIR=$(BASEDIR)'#010+
'endif'#010+
#010+
'# Add .zip/.tar.gz extension'#010+
'# Add .zip/.ta','r.gz extension'#010+
'ifdef ZIPNAME'#010+
'ifndef inlinux'#010+
'override ZIPNAME:=','$(ZIPNAME)$(ZIPEXT)'#010+
'override ZIPNAME:=$(ZIPNAME)$(ZIPEXT)'#010+
'endif'#010+
'endif'#010+
#010+
@ -903,17 +960,17 @@ const fpcmakeini : array[0..93,1..240] of char=(
'endif'#010+
#010+
'# Note: This will not remove the zipfile first'#010+
'fpc_zipinstalladd:'#010+
'fpc_zipins','talladd:'#010+
'ifndef ZIPNAME'#010+
' @$(ECHO) Please specify ZIPNAM','E!'#010+
' @$(ECHO) Please specify ZIPNAME!'#010+
' @exit'#010+
'else'#010+
' $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)'#010+
'ifdef inlinux'#010+
' gzip -d $(PACKAGEDIR)/$(ZIPNAME).tar.gz'#010+
' cd $(PACKDIR) ; tar rv --file $(PACKAGEDIR)/$(ZIPNAME).tar * ;'+
' cd $(BASEDIR)'#010+
' gzip $','(PACKAGEDIR)/$(ZIPNAME).tar'#010+
' cd $(PACKDIR) ; tar rv --file',' $(PACKAGEDIR)/$(ZIPNAME).tar *'+
' ; cd $(BASEDIR)'#010+
' gzip $(PACKAGEDIR)/$(ZIPNAME).tar'#010+
'else'#010+
' cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(B'+
'ASEDIR)'#010+
@ -921,17 +978,17 @@ const fpcmakeini : array[0..93,1..240] of char=(
' $(DELTREE) $(PACKDIR)'#010+
'endif'#010+
#010+
'# First remove the zip and then install'#010+
'# First remove the zip a','nd then install'#010+
'fpc_zipinstall:'#010+
'ifndef ZIPNAME'#010+
' @$(ECHO',') Please specify ZIPNAME!'#010+
' @$(ECHO) Please specify ZIPNAME!'#010+
' @exit'#010+
'else'#010+
' $(DEL) $(PACKAGEDIR)/$(ZIPNAME)'#010+
' $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)'#010+
'ifdef inlinux'#010+
' cd $(PACKDIR) ; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.gz'+
' * ; cd $(BASE','DIR)'#010+
' cd $(PACKDIR) ','; tar cvz --file $(PACKAGEDIR)/$(ZIPNAME).tar.'+
'gz * ; cd $(BASEDIR)'#010+
'else'#010+
' cd $(PACKDIR) ; $(ZIPPROG) $(PACKAGEDIR)/$(ZIPNAME) * ; cd $(B'+
'ASEDIR)'#010+
@ -941,32 +998,32 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
#010+
'[cleanrules]'#010+
'#####################################################################'#010+
'# Clean rules'#010+
'###########','#########################################################'+
'#################################','###################################'+
'#'#010+
'# Clean rules'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_clean fpc_cleanall'#010+
#010+
'ifdef UNITPPUFILES'#010+
'override CLEANPPUFILES=$(UNITPPUFILES)'#010+
'endif'#010+
'ifdef EXTRACLEANUNITS'#010+
'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNIT','S))'#010+
'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)',')'#010+
'endif'#010+
#010+
'fpc_clean:'#010+
'ifdef EXEOBJECTS'#010+
' -$(DEL) $(EXEFILES) $(EXEOFILES)'#010+
'ifdef CLEANPPUFILES'#010+
'ifdef PPUFILES'#010+
'CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))'#010+
'endif'#010+
'ifdef LOADEROBJECTS'#010+
' -$(DEL) $(LOADEROFILES)'#010+
'endif'#010+
#010+
'fpc_clean: $(CLEANTARGET)'#010+
'ifdef CLEANEXEFILES'#010+
' -$(DEL) $(CLEANEXEFILES)'#010+
'endif'#010+
'ifdef CLEANPPUFILES'#010+
' -$(DEL) $(CLEANPPUFILES)'#010+
'ifdef PPUFILES'#010+
' -$(DEL) $(shell $(PP','UFILES) $(CLEANPPUFILES))'#010+
' -$(DEL) $(CLEA','NPPUFILES)'#010+
'endif'#010+
'ifneq ($(CLEANPPULINKFILES),)'#010+
' -$(DEL) $(CLEANPPULINKFILES)'#010+
'endif'#010+
'ifdef EXTRACLEANFILES'#010+
' -$(DEL) $(EXTRACLEANFILES)'#010+
@ -974,20 +1031,20 @@ const fpcmakeini : array[0..93,1..240] of char=(
' -$(DEL) $(PPAS) link.res log'#010+
#010+
'fpc_cleanall:'#010+
'ifdef EXEOBJECTS'#010+
' -$(DEL) $(EXEFILES)'#010+
'ifdef CLEANEXEFILES'#010+
' -$(DEL)',' $(CLEANEXEFILES)'#010+
'endif'#010+
' -$(DEL) *$(OEXT) *$(PPUEXT) ','*$(ASMEXT) *$(STATICLIBEXT) *$(S'+
'HAREDLIBEXT) *$(PPLEXT)'#010+
' -$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHA'+
'REDLIBEXT) *$(PPLEXT)'#010+
' -$(DELTREE) *$(SMARTEXT)'#010+
' -$(DEL) $(PPAS) link.res log'#010+
#010+
#010+
'[dependrules]'#010+
'#####################################################################'#010+
'# Depend rules'#010+
'#############','#######################################################'+
'######################################','##############################'+
'#'#010+
'# Depend rules'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_depend'#010+
#010+
@ -996,10 +1053,10 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
#010+
'[inforules]'#010+
'#####################################################################'#010+
'# Info rules'#010+
'#####################','###############################################'+
'############################################','########################'+
'#'#010+
'# Info rules'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installi'+
'nfo \'#010+
@ -1007,17 +1064,17 @@ const fpcmakeini : array[0..93,1..240] of char=(
#010+
'fpc_info: $(FPCINFO)'#010+
#010+
'[info_cfg]'#010+
'[info_cfg]'#010,
'fpc_infocfg:'#010+
' @$(ECHO)'#010+
' @$(ECHO) == Configura','tion info =='#010+
' @$(ECHO) == Configuration info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) FPC....... $(FPC)'#010+
' @$(ECHO) Version... $(FPC_VERSION)'#010+
' @$(ECHO) CPU....... $(CPU_TARGET)'#010+
' @$(ECHO) Source.... $(OS_SOURCE)'#010+
' @$(ECHO) Source...','. $(OS_SOURCE)'#010+
' @$(ECHO) Target.... $(OS_TARGET)'#010+
' ',' @$(ECHO)'#010+
' @$(ECHO)'#010+
#010+
'[info_dirs]'#010+
'fpc_infodirs:'#010+
@ -1026,30 +1083,30 @@ const fpcmakeini : array[0..93,1..240] of char=(
' @$(ECHO) == Directory info =='#010+
' @$(ECHO)'#010+
'ifdef NEEDGCCLIB'#010+
' @$(ECHO) GCC library is needed.'#010+
' @$(ECHO) GCC library is ne','eded.'#010+
'endif'#010+
'ifdef NEEDOTHERLIB'#010+
' @$(ECHO) Other libra','ry is needed.'#010+
' @$(ECHO) Other library is needed.'#010+
'endif'#010+
' @$(ECHO) Basedir......... $(BASEDIR)'#010+
' @$(ECHO)'#010+
' @$(ECHO) GCC library..... $(GCCLIBDIR)'#010+
' @$(ECHO) Other library... $(OTHERLIBDIR)'#010+
' @$(ECHO) Other library... $(OTHERLIBDIR)',#010+
' @$(ECHO)'#010+
'endif'#010+
#010+
'[info_tools]'#010+
'fpc_infotools:'#010+
' ',' @$(ECHO)'#010+
' @$(ECHO)'#010+
' @$(ECHO) == Tools info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) Pwd....... $(PWD)'#010+
' @$(ECHO) Echo...... $(ECHO)'#010+
'ifdef PPDEP'#010+
' @$(ECHO) PPDep..... $(PPDEP)'#010+
' @$(ECHO) PPDep..... $(PP','DEP)'#010+
'endif'#010+
'ifdef PPUMOVE'#010+
' @$(ECHO) PPUMove... $(PPUM','OVE)'#010+
' @$(ECHO) PPUMove... $(PPUMOVE)'#010+
'endif'#010+
'ifdef PPUFILES'#010+
' @$(ECHO) PPUFiles.. $(PPUFILES)'#010+
@ -1058,11 +1115,11 @@ const fpcmakeini : array[0..93,1..240] of char=(
' @$(ECHO) Data2Inc.. $(DATA2INC)'#010+
'endif'#010+
'ifdef SED'#010+
' @$(ECHO) Sed....... $(SED)'#010+
' @$(ECHO) Sed....... $(SED)',#010+
'endif'#010+
'ifdef DATE'#010+
' @$(ECHO) Date...... $(DATE)'#010+
'endif',#010+
'endif'#010+
'ifdef DIFF'#010+
' @$(ECHO) Diff...... $(DIFF)'#010+
'endif'#010+
@ -1072,10 +1129,10 @@ const fpcmakeini : array[0..93,1..240] of char=(
'ifdef UPXPROG'#010+
' @$(ECHO) Upx....... $(UPXPROG)'#010+
'endif'#010+
'ifdef ZIPPROG'#010+
'ifdef ZIPPROG',#010+
' @$(ECHO) Zip....... $(ZIPPROG)'#010+
'endif'#010+
' @$(EC','HO)'#010+
' @$(ECHO)'#010+
#010+
'[info_objects]'#010+
'fpc_infoobjects:'#010+
@ -1083,14 +1140,14 @@ const fpcmakeini : array[0..93,1..240] of char=(
' @$(ECHO) == Object info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) LoaderObjects..... $(LOADEROBJECTS)'#010+
' @$(ECHO) UnitObjects....... $(UNITOBJECTS)'#010+
' @$(ECHO) ExeObject','s........ $(EXEOBJECTS)'#010+
' @$(ECHO) U','nitObjects....... $(UNITOBJECTS)'#010+
' @$(ECHO) ExeObjects........ $(EXEOBJECTS)'#010+
' @$(ECHO)'#010+
' @$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS)'#010+
' @$(ECHO) ExtraCleanFiles... $(EXTRACLEANFILES)'#010+
' @$(ECHO)'#010+
' @$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS)'#010+
' @$(E','CHO) ExtraInstallFiles. $(EXTRAINSTALLFILES)'#010+
' @$','(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS)'#010+
' @$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES)'#010+
' @$(ECHO)'#010+
#010+
'[info_install]'#010+
@ -1099,30 +1156,35 @@ const fpcmakeini : array[0..93,1..240] of char=(
' @$(ECHO) == Install info =='#010+
' @$(ECHO)'#010+
'ifdef DATE'#010+
' @$(ECHO) DateStr.............. $(DATESTR)'#010+
' ',' @$(ECHO) DateStr.............. $(DATESTR)'#010+
'endif'#010+
' ',' @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX)'#010+
' @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX)'#010+
' @$(ECHO)'#010+
' @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR)'#010+
' @$(ECHO) BinInstallDir........ $(BININSTALLDIR)'#010+
' @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR)',#010+
' @$(ECHO) BinInstallDir........ $(BININSTALLD','IR)'#010+
' @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR)'#010+
' @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR)'#010+
' @$(ECHO) SourceInstallDir..... $(SOURCEINSTALLDIR)'#010+
' @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR)'#010+
' @$(ECHO) ExtraInstallDir...... $(EXTRAINSTALLDIR)'#010+
' ',' @$(ECHO)'#010+
' ',' @$(ECHO) ExtraInstallDir...... $(EXTRAINSTALLDIR)'#010+
' @$(ECHO)'#010+
#010+
'[userrules]'#010+
'#####################################################################'#010+
'# Users rules'#010+
'#####################################################################'#010+
#010+
#010,
'[end]'#010+
';'#010+
'; $Log$
'; Revision 1.1 1999-11-23 09:43:35 peter
'; + internal .ini file
'; + packages support
'; * ppufiles,data2inc support
'; Revision 1.2 1999-11-24 23:53:00 peter
'; * packages
'; * lot of other changes
';'#010+
'; Revision 1.7 1999/11/23 09:43:35 peter'#010+
'; + internal .ini file'#010+
'; + packages support'#010+
'; * ppufiles,data2inc support'#010+
';'#010+
';'#010
);

View File

@ -304,13 +304,17 @@ ifdef UNITTARGETDIR
override FPCOPT+=-FU$(UNITTARGETDIR)
endif
[command_smartlink]
[command_end]
# Smartlinking
ifdef SMARTLINK
override FPCOPT+=-CX
endif
[command_end]
# Debug
ifdef DEBUG
override FPCOPT+=-g
endif
# Add commandline options
ifdef OPT
override FPCOPT+=$(OPT)
@ -670,45 +674,108 @@ endif
# Default rules
#####################################################################
.PHONY: defaultrule all smart shared \
.PHONY: defaultrule all debug examples test smart shared \
showinstall install zipinstall zipinstalladd \
clean cleanall depend info
[loaderrules]
#####################################################################
# Loaders
#####################################################################
.PHONY: fpc_loaders
%$(OEXT): %$(LOADEREXT)
$(AS) -o $*$(OEXT) $<
override ALLTARGET+=fpc_loaders
override CLEANTARGET+=fpc_loaders_clean
override SHOWINSTALLTARGET+=fpc_loaders_showinstall
override INSTALLTARGET+=fpc_loaders_install
LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
fpc_loaders: $(LOADEROFILES)
fpc_loaders_clean:
-$(DEL) $(LOADEROFILES)
fpc_loaders_showinstall:
@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
fpc_loaders_install:
$(MKDIR) $(UNITINSTALLDIR)
$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
[unitrules]
#####################################################################
# Units
#####################################################################
.PHONY: fpc_units
override ALLTARGET+=fpc_units
UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
override INSTALLPPUFILES+=$(UNITPPUFILES)
override CLEANPPUFILES+=$(UNITPPUFILES)
fpc_units: $(UNITPPUFILES)
[exerules]
#####################################################################
# Exes
#####################################################################
.PHONY: fpc_exes
EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
override ALLTARGET+=fpc_exes
override INSTALLEXEFILES+=$(EXEFILES)
override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
fpc_exes: $(EXEFILES)
[examplerules]
#####################################################################
# Examples
#####################################################################
.PHONY: fpc_examples fpc_test
EXAMPLEFILES=$(addsuffix $(EXEEXT),$(EXAMPLEOBJECTS))
EXAMPLEOFILES=$(addsuffix $(OEXT),$(EXAMPLEOBJECTS))
override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
fpc_examples: all $(EXAMPLEFILES)
fpc_test: examples
[compilerules]
#####################################################################
# General compile rules
#####################################################################
.PHONY: fpc_all fpc_units fpc_exes fpc_loaders
.PHONY: fpc_all fpc_debug
# Create Filenames
ifdef LOADEROBJECTS
LOADEROFILES=$(addsuffix $(OEXT),$(LOADEROBJECTS))
endif
ifdef EXEOBJECTS
EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS))
EXEOFILES=$(addsuffix $(OEXT),$(EXEOBJECTS))
endif
ifdef UNITOBJECTS
UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
endif
fpc_all: $(ALLTARGET)
fpc_debug:
$(MAKE) all DEBUG=1
# General compile rules, available for both possible PASEXT
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
ifdef DEFAULTUNITS
fpc_all: fpc_loaders fpc_units
else
fpc_all: fpc_loaders fpc_units fpc_exes
endif
fpc_loaders: $(LOADEROFILES)
fpc_units: $(UNITPPUFILES)
fpc_exes: $(EXEFILES)
# General compile rules, available for both possible PASEXT
%$(PPUEXT): %.pp
$(COMPILER) $< $(REDIR)
$(EXECPASS)
@ -725,9 +792,6 @@ fpc_exes: $(EXEFILES)
$(COMPILER) $< $(REDIR)
$(EXECPASS)
%$(OEXT): %$(LOADEREXT)
$(AS) -o $*$(OEXT) $<
[libraryrules]
#####################################################################
@ -763,9 +827,6 @@ endif
.PHONY: fpc_showinstall fpc_install
ifdef UNITPPUFILES
override INSTALLPPUFILES:=$(UNITPPUFILES)
endif
ifdef EXTRAINSTALLUNITS
override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
endif
@ -781,14 +842,9 @@ endif
endif
endif
fpc_showinstall:
ifndef DEFAULTUNITS
ifdef EXEOBJECTS
@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(EXEFILES))
endif
endif
ifdef LOADEROBJECTS
@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
fpc_showinstall: $(SHOWINSTALLTARGET)
ifdef INSTALLEXEFILES
@$(ECHO) $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
endif
ifdef INSTALLPPUFILES
@$(ECHO) $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
@ -803,21 +859,15 @@ ifdef EXTRAINSTALLFILES
@$(ECHO) $(addprefix "\n"$(EXTRAINSTALLDIR)/,$(EXTRAINSTALLFILES))
endif
fpc_install:
fpc_install: $(INSTALLTARGET)
# Create UnitInstallFiles
ifndef DEFAULTUNITS
ifdef EXEOBJECTS
ifdef INSTALLEXEFILES
$(MKDIR) $(BININSTALLDIR)
# Compress the exes if upx is defined
ifdef UPXPROG
-$(UPXPROG) $(EXEFILES)
-$(UPXPROG) $(INSTALLEXEFILES)
endif
$(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR)
endif
endif
ifdef LOADEROBJECTS
$(MKDIR) $(UNITINSTALLDIR)
$(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
$(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
endif
ifdef INSTALLPPUFILES
$(MKDIR) $(UNITINSTALLDIR)
@ -910,25 +960,25 @@ endif
.PHONY: fpc_clean fpc_cleanall
ifdef UNITPPUFILES
override CLEANPPUFILES=$(UNITPPUFILES)
endif
ifdef EXTRACLEANUNITS
override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
endif
fpc_clean:
ifdef EXEOBJECTS
-$(DEL) $(EXEFILES) $(EXEOFILES)
ifdef CLEANPPUFILES
ifdef PPUFILES
CLEANPPULINKFILES=$(shell $(PPUFILES) $(CLEANPPUFILES))
endif
ifdef LOADEROBJECTS
-$(DEL) $(LOADEROFILES)
endif
fpc_clean: $(CLEANTARGET)
ifdef CLEANEXEFILES
-$(DEL) $(CLEANEXEFILES)
endif
ifdef CLEANPPUFILES
-$(DEL) $(CLEANPPUFILES)
ifdef PPUFILES
-$(DEL) $(shell $(PPUFILES) $(CLEANPPUFILES))
endif
ifneq ($(CLEANPPULINKFILES),)
-$(DEL) $(CLEANPPULINKFILES)
endif
ifdef EXTRACLEANFILES
-$(DEL) $(EXTRACLEANFILES)
@ -936,8 +986,8 @@ endif
-$(DEL) $(PPAS) link.res log
fpc_cleanall:
ifdef EXEOBJECTS
-$(DEL) $(EXEFILES)
ifdef CLEANEXEFILES
-$(DEL) $(CLEANEXEFILES)
endif
-$(DEL) *$(OEXT) *$(PPUEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-$(DELTREE) *$(SMARTEXT)
@ -1075,9 +1125,14 @@ endif
# Users rules
#####################################################################
[end]
;
; $Log$
; Revision 1.7 1999-11-23 09:43:35 peter
; Revision 1.8 1999-11-24 23:53:00 peter
; * packages
; * lot of other changes
;
; Revision 1.7 1999/11/23 09:43:35 peter
; + internal .ini file
; + packages support
; * ppufiles,data2inc support

View File

@ -22,44 +22,84 @@ uses
dos,
sysutils,classes,inifiles;
{ Include default fpcmake.ini }
{$i fpcmake.inc}
const
Version='v0.99.13';
Title='fpcmake '+Version;
{ Include default fpcmake.ini }
{$i fpcmake.inc}
type
tsections=(sec_none,
sec_units,sec_exes,sec_loaders,sec_examples,
sec_compile,sec_depend,sec_install,sec_zipinstall,
sec_clean,sec_libs,sec_command,sec_exts,sec_dirs,sec_tools,sec_info
);
const
EnvVar='FPCMAKEINI'; { should be FPCMAKE in the future }
TimeFormat='yyyy/mm/dd hh:nn';
sectionstr : array[tsections] of string=('none',
'units','exes','loaders','examples',
'compile','depend','install','zipinstall',
'clean','libs','command','exts','dirs','tools','info'
);
sectiondef : array[tsections] of boolean=(false,
true,true,false,false,
true,false,true,true,
true,true,true,true,true,true,true
);
targets=4;
targetstr : array[1..targets] of string=(
'linux','go32v2','win32','os2'
);
rules=14;
rulestr : array[1..rules] of string=(
'all','debug',
'examples','test',
'smart','shared',
'showinstall','install','zipinstall','zipinstalladd',
'clean','cleanall',
'depend','info'
);
rule2sec : array[1..rules] of tsections=(
sec_compile,sec_compile,
sec_examples,sec_examples,
sec_libs,sec_libs,
sec_install,sec_install,sec_zipinstall,sec_zipinstall,
sec_clean,sec_clean,
sec_depend,sec_info
);
{ Sections in Makefile.fpc }
sec_sections='sections';
sec_install='install';
sec_clean='clean';
sec_dirs='dirs';
sec_packages='packages';
sec_libs='libs';
sec_targets='targets';
sec_info='info';
sec_defaults='defaults';
sec_tools='tools';
ini_sections='sections';
ini_install='install';
ini_clean='clean';
ini_dirs='dirs';
ini_packages='packages';
ini_libs='libs';
ini_targets='targets';
ini_info='info';
ini_defaults='defaults';
ini_tools='tools';
type
TTargetsString=array[0..targets] of string;
TFpcMake=record
TargetDirs,
TargetLoaders,
TargetUnits,
TargetPrograms,
TargetExamples,
InstallUnits,
InstallFiles,
CleanUnits,
CleanFiles : TTargetsString;
DefaultUnits : boolean;
DefaultRule,
DefaultTarget,
DefaultCPU,
@ -71,6 +111,7 @@ type
DirObj,
DirTarget,
DirUnitTarget,
DirSources,
DirInc : string;
PackageFCL : boolean;
Packages : string;
@ -83,18 +124,7 @@ type
InfoTools,
InfoInstall,
InfoObjects : boolean;
SectionNone,
SectionCompile,
SectionDepend,
SectionInstall,
SectionZipInstall,
SectionClean,
SectionLibs,
SectionCommand,
SectionExts,
SectionDirs,
SectionTools,
SectionInfo : boolean;
Section : array[tsections] of boolean;
ToolsPPDep,
ToolsPPUMove,
ToolsPPUFiles,
@ -138,6 +168,20 @@ begin
end;
function TargetStringEmpty(const t:TTargetsString):boolean;
var
i : integer;
begin
for i:=0 to targets do
if t[i]<>'' then
begin
TargetStringEmpty:=false;
exit;
end;
TargetStringEmpty:=true;
end;
{*****************************************************************************
TMyMemoryStream
*****************************************************************************}
@ -167,6 +211,8 @@ var
t[i]:=ini.ReadString(sec,name+'_'+targetstr[i],'');
end;
var
sec : tsections;
begin
ReadMakefilefpc:=false;
if FileExists('Makefile.fpc') then
@ -183,82 +229,74 @@ begin
with userini,ini do
begin
{ targets }
ReadTargetsString(TargetLoaders,sec_targets,'loaders','');
ReadTargetsString(TargetUnits,sec_targets,'units','');
ReadTargetsString(TargetPrograms,sec_targets,'programs','');
ReadTargetsString(TargetDirs,ini_targets,'dirs','');
ReadTargetsString(TargetLoaders,ini_targets,'loaders','');
ReadTargetsString(TargetUnits,ini_targets,'units','');
ReadTargetsString(TargetPrograms,ini_targets,'programs','');
ReadTargetsString(TargetExamples,ini_targets,'examples','');
{ clean }
ReadTargetsString(CleanUnits,sec_clean,'units','');
ReadTargetsString(CleanFiles,sec_clean,'files','');
ReadTargetsString(CleanUnits,ini_clean,'units','');
ReadTargetsString(CleanFiles,ini_clean,'files','');
{ install }
ReadTargetsString(InstallUnits,sec_install,'units','');
ReadTargetsString(InstallFiles,sec_install,'files','');
ReadTargetsString(InstallUnits,ini_install,'units','');
ReadTargetsString(InstallFiles,ini_install,'files','');
{ defaults }
DefaultUnits:=ReadBool(sec_defaults,'defaultunits',false);
DefaultRule:=ReadString(sec_defaults,'defaultrule','all');
DefaultTarget:=ReadString(sec_defaults,'defaulttarget','');
DefaultCPU:=ReadString(sec_defaults,'defaultcpu','');
DefaultOptions:=ReadString(sec_defaults,'defaultoptions','');
DefaultRule:=ReadString(ini_defaults,'defaultrule','all');
DefaultTarget:=ReadString(ini_defaults,'defaulttarget','');
DefaultCPU:=ReadString(ini_defaults,'defaultcpu','');
DefaultOptions:=ReadString(ini_defaults,'defaultoptions','');
{ packages }
Packages:=Readstring(sec_packages,'packages','');
PackageFCL:=ReadBool(sec_packages,'fcl',false);
Packages:=Readstring(ini_packages,'packages','');
PackageFCL:=ReadBool(ini_packages,'fcl',false);
{ dirs }
DirFpc:=ReadString(sec_dirs,'fpcdir','');
DirPackage:=ReadString(sec_dirs,'packagedir','$(FPCDIR)/packages');
DirUnit:=ReadString(sec_dirs,'unitdir','');
DirLib:=ReadString(sec_dirs,'libdir','');
DirObj:=ReadString(sec_dirs,'objdir','');
DirTarget:=ReadString(sec_dirs,'targetdir','');
DirUnitTarget:=ReadString(sec_dirs,'unittargetdir','');
DirInc:=ReadString(sec_dirs,'incdir','');
DirFpc:=ReadString(ini_dirs,'fpcdir','');
DirPackage:=ReadString(ini_dirs,'packagedir','$(FPCDIR)/packages');
DirUnit:=ReadString(ini_dirs,'unitdir','');
DirLib:=ReadString(ini_dirs,'libdir','');
DirObj:=ReadString(ini_dirs,'objdir','');
DirTarget:=ReadString(ini_dirs,'targetdir','');
DirSources:=ReadString(ini_dirs,'sourcesdir','');
DirUnitTarget:=ReadString(ini_dirs,'unittargetdir','');
DirInc:=ReadString(ini_dirs,'incdir','');
{ libs }
LibName:=ReadString(sec_libs,'libname','');
LibUnits:=ReadString(sec_libs,'libunits','');
LibGcc:=ReadBool(sec_libs,'libgcc',false);
LibOther:=ReadBool(sec_libs,'libother',false);
LibName:=ReadString(ini_libs,'libname','');
LibUnits:=ReadString(ini_libs,'libunits','');
LibGcc:=ReadBool(ini_libs,'libgcc',false);
LibOther:=ReadBool(ini_libs,'libother',false);
{ tools }
ToolsPPDep:=ReadBool(sec_tools,'toolppdep',true);
ToolsPPUMove:=ReadBool(sec_tools,'toolppumove',true);
ToolsPPUFiles:=ReadBool(sec_tools,'toolppufiles',true);
ToolsSed:=ReadBool(sec_tools,'toolsed',false);
ToolsData2Inc:=ReadBool(sec_tools,'tooldata2inc',false);
ToolsDiff:=ReadBool(sec_tools,'tooldiff',false);
ToolsCmp:=ReadBool(sec_tools,'toolcmp',false);
ToolsUpx:=ReadBool(sec_tools,'toolupx',true);
ToolsDate:=ReadBool(sec_tools,'tooldate',true);
ToolsZip:=ReadBool(sec_tools,'toolzip',true);
{ sections }
SectionInstall:=ReadBool(sec_sections,'install',true);
SectionZipInstall:=ReadBool(sec_sections,'zipinstall',true);
SectionClean:=ReadBool(sec_sections,'clean',true);
SectionInfo:=ReadBool(sec_sections,'info',true);
SectionTools:=ReadBool(sec_sections,'tools',true);
SectionLibs:=ReadBool(sec_sections,'libs',true);
SectionExts:=ReadBool(sec_sections,'exts',true);
SectionDirs:=ReadBool(sec_sections,'dirs',true);
SectionCompile:=ReadBool(sec_sections,'compile',true);
SectionDepend:=ReadBool(sec_sections,'depend',true);
SectionCommand:=ReadBool(sec_sections,'command',true);
SectionNone:=ReadBool(sec_sections,'none',false);
if SectionNone then
begin
SectionInstall:=false;
SectionZipInstall:=false;
SectionClean:=false;
SectionInfo:=false;
SectionTools:=false;
SectionLibs:=false;
SectionExts:=false;
SectionDirs:=false;
SectionCompile:=false;
SectionDepend:=false;
SectionCommand:=false;
end;
ToolsPPDep:=ReadBool(ini_tools,'toolppdep',true);
ToolsPPUMove:=ReadBool(ini_tools,'toolppumove',true);
ToolsPPUFiles:=ReadBool(ini_tools,'toolppufiles',true);
ToolsSed:=ReadBool(ini_tools,'toolsed',false);
ToolsData2Inc:=ReadBool(ini_tools,'tooldata2inc',false);
ToolsDiff:=ReadBool(ini_tools,'tooldiff',false);
ToolsCmp:=ReadBool(ini_tools,'toolcmp',false);
ToolsUpx:=ReadBool(ini_tools,'toolupx',true);
ToolsDate:=ReadBool(ini_tools,'tooldate',true);
ToolsZip:=ReadBool(ini_tools,'toolzip',true);
{ sections, but allow overriding the 'none' option to include a few sects only }
for sec:=low(tsections) to high(tsections) do
Section[sec]:=sectiondef[sec];
Section[sec_None]:=ReadBool(ini_sections,sectionstr[sec_none],sectiondef[sec_none]);
if Section[sec_None] then
FillChar(Section,sizeof(Section),0);
for sec:=low(tsections) to high(tsections) do
Section[sec]:=ReadBool(ini_sections,sectionstr[sec],section[sec]);
{ turn on needed sections }
if not TargetStringEmpty(TargetLoaders) then
userini.section[sec_loaders]:=true;
if not TargetStringEmpty(TargetUnits) then
userini.section[sec_units]:=true;
if not TargetStringEmpty(TargetPrograms) then
userini.section[sec_exes]:=true;
if not TargetStringEmpty(TargetExamples) then
userini.section[sec_examples]:=true;
{ info }
InfoCfg:=ReadBool(sec_info,'infoconfig',true);
InfoDirs:=ReadBool(sec_info,'infodirs',false);
InfoTools:=ReadBool(sec_info,'infotools',false);
InfoInstall:=ReadBool(sec_info,'infoinstall',true);
InfoObjects:=ReadBool(sec_info,'infoobjects',true);
InfoCfg:=ReadBool(ini_info,'infoconfig',true);
InfoDirs:=ReadBool(ini_info,'infodirs',false);
InfoTools:=ReadBool(ini_info,'infotools',false);
InfoInstall:=ReadBool(ini_info,'infoinstall',true);
InfoObjects:=ReadBool(ini_info,'infoobjects',true);
{ rules }
PreSettings:=TStringList.Create;
ReadSectionRaw('presettings',PreSettings);
@ -367,6 +405,13 @@ var
end;
end;
procedure AddHead(const s:string);
begin
mf.Add('');
mf.Add('# '+s);
mf.Add('');
end;
procedure AddSection(b:boolean;s:string);
begin
if b then
@ -378,48 +423,72 @@ var
end;
end;
procedure AddRule(s:string);
procedure AddRule(rule:integer);
var
i : integer;
hs : string;
begin
i:=0;
while (i<userini.rules.Count) do
begin
if (userini.rules[i]<>'') and
(userini.rules[i][1]=s[1]) and
(Copy(userini.rules[i],1,length(s))=s) then
if (length(userini.rules[i])>length(rulestr[rule])) and
(userini.rules[i][1]=rulestr[rule][1]) and
((userini.rules[i][length(rulestr[rule])+1]=':') or
((length(userini.rules[i])>length(rulestr[rule])+1) and
(userini.rules[i][length(rulestr[rule])+2]=':'))) and
(Copy(userini.rules[i],1,length(rulestr[rule]))=rulestr[rule]) then
exit;
inc(i);
end;
mf.Add(s+': fpc_'+s);
mf.Add('');
hs:='';
if userini.section[rule2sec[rule]] then
hs:=hs+' fpc_'+rulestr[rule];
if not TargetStringEmpty(userini.targetdirs) then
hs:=hs+' $(addsuffix _'+rulestr[rule]+',$(DIROBJECTS))';
if hs<>'' then
begin
mf.Add(rulestr[rule]+':'+hs);
mf.Add('');
end;
end;
procedure AddTargets(const pre:string;var t:TTargetsString);
procedure AddTargets(const pre:string;var t:TTargetsString;wildcard:boolean);
var
i : integer;
begin
if t[0]<>'' then
mf.Add(pre+'='+t[0]);
for i:=1to targets do
for i:=0 to targets do
if (t[i]<>'') then
begin
mf.Add('ifeq ($(OS_TARGET),'+targetstr[i]+')');
if i<>0 then
mf.Add('ifeq ($(OS_TARGET),'+targetstr[i]+')');
if t[i]<>'' then
mf.Add(pre+'+='+t[i]);
mf.Add('endif');
begin
if wildcard then
mf.Add(pre+'+=$(wildcard '+t[i]+')')
else
mf.Add(pre+'+='+t[i]);
end;
if i<>0 then
mf.Add('endif');
end;
end;
procedure AddHead(const s:string);
procedure AddTargetDir(const s:string);
var
j : integer;
begin
mf.Add('');
mf.Add('# '+s);
mf.Add('');
AddHead('Dir '+s);
for j:=1to rules do
begin
mf.Add(s+'_'+rulestr[j]+':');
mf.Add(#9+'$(MAKE) -C '+s+' '+rulestr[j]);
mf.Add('');
end;
end;
var
hs : string;
i,j : integer;
begin
{ Open the Makefile }
Verbose('Creating Makefile');
@ -465,29 +534,31 @@ begin
{ Targets }
AddHead('Targets');
AddTargets('LOADEROBJECTS',userini.targetloaders);
AddTargets('UNITOBJECTS',userini.targetunits);
AddTargets('EXEOBJECTS',userini.targetprograms);
AddTargets('DIROBJECTS',userini.targetdirs,true);
AddTargets('LOADEROBJECTS',userini.targetloaders,false);
AddTargets('UNITOBJECTS',userini.targetunits,false);
AddTargets('EXEOBJECTS',userini.targetprograms,false);
AddTargets('EXAMPLEOBJECTS',userini.targetexamples,false);
{ Clean }
AddHead('Clean');
AddTargets('EXTRACLEANUNITS',userini.cleanunits);
AddTargets('EXTRACLEANFILES',userini.cleanfiles);
AddTargets('EXTRACLEANUNITS',userini.cleanunits,false);
AddTargets('EXTRACLEANFILES',userini.cleanfiles,false);
{ Install }
AddHead('Install');
AddTargets('EXTRAINSTALLUNITS',userini.installunits);
AddTargets('EXTRAINSTALLFILES',userini.installfiles);
AddTargets('EXTRAINSTALLUNITS',userini.installunits,false);
AddTargets('EXTRAINSTALLFILES',userini.installfiles,false);
{ Defaults }
AddHead('Defaults');
if userini.defaultunits then
Add('DEFAULTUNITS=1');
if userini.defaultoptions<>'' then
Add('override NEEDOPT='+userini.defaultoptions);
{ Dirs }
AddHead('Directories');
if userini.dirsources<>'' then
Add('vpath %$(PASEXT) '+userini.dirsources);
if userini.dirfpc<>'' then
begin
{ this dir can be set in the environment, it's more a default }
@ -544,7 +615,7 @@ begin
Add('override NEEDOTHERLIB=1');
{ Info }
if userini.SectionInfo then
if userini.Section[sec_Info] then
begin
AddHead('Info');
hs:='';
@ -571,7 +642,7 @@ begin
Add('');
{ write dirs }
if userini.sectiondirs then
if userini.section[sec_dirs] then
begin
AddSection(true,'dir_default');
AddSection(userini.libgcc,'dir_gcclib');
@ -580,12 +651,11 @@ begin
end;
{ commandline }
if userini.sectioncommand then
if userini.section[sec_command] then
begin
Add('');
AddSection(true,'command_begin');
AddSection(true,'command_rtl');
AddSection(true,'command_needopt');
AddSection((userini.defaultoptions<>''),'command_needopt');
AddSection((userini.dirfpc<>''),'command_fpcdir');
AddSection((userini.dirunit<>'') or (userini.packages<>'') or (userini.packagefcl),'command_needunit');
AddSection((userini.dirlib<>''),'command_needlib');
@ -596,12 +666,11 @@ begin
AddSection((userini.dirinc<>''),'command_inc');
AddSection((userini.dirtarget<>''),'command_target');
AddSection((userini.dirunittarget<>''),'command_unittarget');
AddSection(true,'command_smartlink');
AddSection(true,'command_end');
end;
{ write tools }
if userini.sectiontools then
if userini.section[sec_tools] then
begin
AddSection(true,'shelltools');
AddSection(true,'tool_default');
@ -618,37 +687,27 @@ begin
end;
{ extensions }
if userini.sectionexts then
if userini.section[sec_exts] then
AddSection(true,'extensions');
{ add default rules }
AddSection(true,'defaultrules');
AddRule('all');
AddRule('smart');
AddRule('shared');
AddRule('showinstall');
AddRule('install');
AddRule('zipinstall');
AddRule('zipinstalladd');
AddRule('clean');
AddRule('clean_all');
AddRule('depend');
AddRule('info');
for i:=1 to rules do
AddRule(i);
{ compile rules for making units/loaders/exes/examples }
AddSection(not TargetStringEmpty(userini.targetunits),'unitrules');
AddSection(not TargetStringEmpty(userini.targetprograms),'exerules');
AddSection(not TargetStringEmpty(userini.targetloaders),'loaderrules');
AddSection(not TargetStringEmpty(userini.targetexamples),'examplerules');
{ default fpc_ rules }
if userini.SectionCompile then
AddSection(true,'compilerules');
if userini.SectionLibs then
AddSection(true,'libraryrules');
if userini.SectionInstall then
AddSection(true,'installrules');
if userini.SectionZipInstall then
AddSection(true,'zipinstallrules');
if userini.SectionClean then
AddSection(true,'cleanrules');
if userini.SectionDepend then
AddSection(true,'dependrules');
if userini.SectionInfo then
AddSection(userini.Section[sec_Compile],'compilerules');
AddSection(userini.Section[sec_Libs],'libraryrules');
AddSection(userini.Section[sec_Install],'installrules');
AddSection(userini.Section[sec_ZipInstall],'zipinstallrules');
AddSection(userini.Section[sec_Clean],'cleanrules');
AddSection(userini.Section[sec_Depend],'dependrules');
if userini.Section[sec_Info] then
begin
AddSection(true,'inforules');
AddSection(userini.infocfg,'info_cfg');
@ -658,6 +717,27 @@ begin
AddSection(userini.infoinstall,'info_install');
end;
{ Target dirs }
if not TargetStringEmpty(userini.targetdirs) then
begin
for j:=0 to targets do
if (userini.targetdirs[j]<>'') then
begin
if j<>0 then
mf.Add('ifeq ($(OS_TARGET),'+targetstr[j]+')');
hs:=userini.targetdirs[j];
repeat
i:=pos(' ',hs);
if i=0 then
i:=length(hs)+1;
AddTargetDir(Copy(hs,1,i-1));
system.delete(hs,1,i);
until hs='';
if j<>0 then
mf.Add('endif');
end;
end;
{ insert users rules }
if userini.rules.count>0 then
begin
@ -694,7 +774,11 @@ begin
end.
{
$Log$
Revision 1.7 1999-11-23 09:43:35 peter
Revision 1.8 1999-11-24 23:53:00 peter
* packages
* lot of other changes
Revision 1.7 1999/11/23 09:43:35 peter
+ internal .ini file
+ packages support
* ppufiles,data2inc support