diff --git a/ide/text/Makefile b/ide/text/Makefile index 4376b91491..7092682b98 100644 --- a/ide/text/Makefile +++ b/ide/text/Makefile @@ -16,22 +16,14 @@ # Defaults ##################################################################### -# Where are the files located -MAKEFILEFPC=makefile.fpc -#RTL= -#INC= -#PROCINC= -#OSINC= - -# Needed options, without it won't compile -#NEEDOPT= - # Add this dir also to the path as first -UNITDIR=../fake +ifdef FULL +NEEDUNITDIR=../../compiler +NEEDOPT=-dBrowserCol +else +NEEDUNITDIR=../fake +endif -# Where need we to place the executables/ppu/objects -#TARGETDIR= -#UNITTARGETDIR= ##################################################################### # Real targets @@ -40,22 +32,43 @@ UNITDIR=../fake UNITOBJECTS= EXEOBJECTS=fp + ##################################################################### # Include default makefile ##################################################################### -include $(MAKEFILEFPC) +ifndef FPCMAKE +ifdef FPCDIR +FPCMAKE=$(FPCDIR)/makefile.fpc +else +FPCMAKE=makefile.fpc +endif +endif + +override FPCMAKE:=$(strip $(wildcard $(FPCMAKE))) +ifeq ($(FPCMAKE),) +nofpcmake: + @echo + @echo makefile.fpc not found! + @echo Check the FPCMAKE and FPCDIR environment variables. + @echo + @exit +else +include $(FPCMAKE) +endif + ##################################################################### # Dependencies ##################################################################### +full: + make all FULL=1 + # # $Log$ -# Revision 1.1 1998-12-22 14:27:54 peter -# * moved -# -# Revision 1.1 1998/12/12 19:21:14 peter -# + Makefile +# Revision 1.2 1999-01-19 18:21:49 peter +# * Use FPCDIR and FPCMAKE environment to find makefile.fpc +# * better install dir setting # # diff --git a/ide/text/makefile.fpc b/ide/text/makefile.fpc deleted file mode 100644 index 79442bc206..0000000000 --- a/ide/text/makefile.fpc +++ /dev/null @@ -1,663 +0,0 @@ -# -# $Id$ -# Copyright (c) 1998 by the Free Pascal Development Team -# -# Common makefile for Free Pascal -# -# See the file COPYING.FPC, included in this distribution, -# for details about the copyright. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# - -##################################################################### -# Force default settings -##################################################################### - -# Latest release version -override RELEASEVER:=0.99.9 - -##################################################################### -# Autodetect OS (Linux or Dos or Windows NT) -# define inlinux when running under linux -# define inWinNT when running under WinNT -##################################################################### - -PWD=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) -ifeq ($(PWD),) -PWD=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) -ifeq ($(PWD),) -nopwd: - @echo - @echo You need the GNU pwd,cp,mv,rm,install utils to use this makefile! - @echo Get ftp://tflily.fys.kuleuven.ac.be/pub/fpc/dist/gnuutils.zip - @echo - @exit -else -inlinux=1 -endif -else -PWD:=$(subst \,/,$(firstword $(PWD))) -endif - -# Detect NT - NT sets OS to Windows_NT -ifndef inlinux -ifeq ($(OS),Windows_NT) -inWinNT=1 -endif -endif - - -##################################################################### -# Targets -##################################################################### - -# Target OS -ifndef OS_TARGET -ifdef inlinux -OS_TARGET=linux -else -ifdef inWinNT -OS_TARGET=win32 -else -OS_TARGET=go32v2 -endif -endif -endif - -# Source OS -ifndef OS_SOURCE -ifdef inlinux -OS_SOURCE=linux -else -ifndef inWinNT -OS_SOURCE=win32 -else -OS_SOURCE=go32v2 -endif -endif -endif - -# CPU -ifndef CPU -CPU=i386 -endif - -# Options -ifndef OPT -OPT= -endif - -# What compiler to use ? -ifndef PP -PP=ppc386 -endif - -# assembler, redefine it if cross compiling -ifndef AS -AS=as -endif - -# linker, but probably not used -ifndef LD -LD=ld -endif - -# Release ? Then force OPT and don't use extra opts via commandline -ifdef RELEASE -override OPT:=-Xs -OG2p2 -n -endif - -# Verbose settings (warning,note,info) -ifdef VERBOSE -override OPT+=-vwni -endif - -##################################################################### -# Shell commands -##################################################################### - -# To copy pograms -ifndef COPY -COPY=cp -fp -endif - -# To move pograms -ifndef MOVE -MOVE=mv -f -endif - -# Check delete program -ifndef DEL -DEL=rm -f -endif - -# Check deltree program -ifndef DELTREE -DELTREE=rm -rf -endif - -# To install files -ifndef INSTALL -ifdef inlinux -INSTALL=install -m 644 -else -INSTALL=$(COPY) -# ginstall has the strange thing to stubify all .o files ! -#INSTALL=ginstall -m 644 -endif -endif - -# To install programs -ifndef INSTALLEXE -ifdef inlinux -INSTALLEXE=install -m 755 -else -INSTALLEXE=$(COPY) -# ginstall has the strange thing to stubify all .o files ! -#INSTALLEXE=ginstall -m 755 -endif -endif - -# To make a directory. -ifndef MKDIR -ifdef inlinux -MKDIR=install -m 755 -d -else -MKDIR=ginstall -m 755 -d -endif -endif - - -##################################################################### -# Default Tools -##################################################################### - -# ppas.bat / ppas.sh -ifdef inlinux -PPAS=ppas.sh -else -PPAS=ppas.bat -endif - -# ldconfig to rebuild .so cache -ifdef inlinux -LDCONFIG=ldconfig -else -LDCONFIG= -endif - -# Where is the ppumove program ? -ifndef PPUMOVE -PPUMOVE=ppumove -endif - -# diff -ifndef DIFF -DIFF=diff -endif - -# date -ifndef DATE -# first try go32v2 specific gdate -DATE=$(strip $(wildcard $(addsuffix /gdate.exe,$(subst ;, ,$(PATH))))) -# try generic date.exe -ifeq ($(DATE),) -DATE=$(strip $(wildcard $(addsuffix /date.exe,$(subst ;, ,$(PATH))))) -# finally try for linux -ifeq ($(DATE),) -DATE=$(strip $(wildcard $(addsuffix /date,$(subst :, ,$(PATH))))) -ifeq ($(DATE),) -DATE= -endif -else -DATE:=$(subst \,/,$(firstword $(DATE))) -endif -else -DATE:=$(subst \,/,$(firstword $(DATE))) -endif -endif - -# Sed -ifndef SED -SED=$(strip $(wildcard $(addsuffix /sed.exe,$(subst ;, ,$(PATH))))) -ifeq ($(SED),) -SED=$(strip $(wildcard $(addsuffix /sed,$(subst :, ,$(PATH))))) -ifeq ($(SED),) -SED= -endif -else -SED:=$(subst \,/,$(firstword $(SED))) -endif -endif - - -##################################################################### -# Default Directories -##################################################################### - -# Base dir -ifdef PWD -BASEDIR=$(shell $(PWD)) -endif - -# set the directory to the rtl base -ifndef RTLDIR -ifdef RTL -RTLDIR=$(RTL) -else -RTLDIR:=$(BASEDIR)/../rtl -endif -endif - -# specify where units are. -ifndef UNITDIR -UNITDIR=$(RTLDIR)/$(OS_TARGET) -ifeq ($(OS_TARGET),go32v1) -UNITDIR=$(RTLDIR)/dos/go32v1 -endif -ifeq ($(OS_TARGET),go32v2) -UNITDIR=$(RTLDIR)/dos/go32v2 -endif -endif - -# set the prefix directory where to install everything -ifndef PREFIXINSTALLDIR -ifdef inlinux -PREFIXINSTALLDIR=/usr -else -PREFIXINSTALLDIR=/pp -endif -endif - -# set the base directory where to install everything -ifndef BASEINSTALLDIR -ifdef inlinux -BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(RELEASEVER) -else -BASEINSTALLDIR=$(PREFIXINSTALLDIR) -endif -endif - - -##################################################################### -# Install Directories based on BASEINSTALLDIR -##################################################################### - -# Linux binary really goes to baseinstalldir -ifndef LIBINSTALLDIR -ifdef inlinux -LIBINSTALLDIR=$(BASEINSTALLDIR) -else -LIBINSTALLDIR=$(BASEINSTALLDIR)/lib -endif -endif - -# set the directory where to install the binaries -ifndef BININSTALLDIR -ifdef inlinux -BININSTALLDIR=$(PREFIXINSTALLDIR)/bin -else -BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) -endif -endif - -# set the directory where to install the units. -ifndef UNITINSTALLDIR -ifdef inlinux -UNITINSTALLDIR=$(BASEINSTALLDIR)/linuxunits -else -UNITINSTALLDIR=$(BASEINSTALLDIR)/rtl/$(OS_TARGET) -endif -endif - -# set the directory where to install the units. -ifndef STATIC_UNITINSTALLDIR -ifdef inlinux -STATIC_UNITINSTALLDIR=$(BASEINSTALLDIR)/staticunits -else -STATIC_UNITINSTALLDIR=$(BASEINSTALLDIR)/rtl/$(OS_TARGET)/static -endif -endif - -# set the directory where to install the units. -ifndef SHARED_UNITINSTALLDIR -ifdef inlinux -SHARED_UNITINSTALLDIR=$(BASEINSTALLDIR)/sharedunits -else -SHARED_UNITINSTALLDIR=$(BASEINSTALLDIR)/rtl/$(OS_TARGET)/shared -endif -endif - -# set the directory where to install the libs (must exist) -ifndef STATIC_LIBINSTALLDIR -ifdef inlinux -STATIC_LIBINSTALLDIR=$(BASEINSTALLDIR)/staticunits -else -STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR) -endif -endif - -# set the directory where to install the libs (must exist) -ifndef SHARED_LIBINSTALLDIR -ifdef inlinux -SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib -else -SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR) -endif -endif - -# Where the .msg files will be stored -ifndef MSGINSTALLDIR -ifdef inlinux -MSGINSTALLDIR=$(BASEINSTALLDIR)/msg -else -MSGINSTALLDIR=$(BININSTALLDIR) -endif -endif - -# Where the doc files will be stored -ifndef DOCINSTALLDIR -ifdef inlinux -DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc/$(RELEASEVER) -else -DOCINSTALLDIR=$(BASEINSTALLDIR)/doc -endif -endif - - -##################################################################### -# Compiler Command Line -##################################################################### - -# Load commandline OPTDEF and add CPU define -override PPOPTDEF=$(OPTDEF) -d$(CPU) - -# Load commandline OPT and add target and unit dir to be sure -override PPOPT=$(OPT) -T$(OS_TARGET) -Fu$(UNITDIR) $(NEEDOPT) - -# Add include dirs INC and PROCINC -ifdef INC -override PPOPT+=-I$(INC) -endif -ifdef PROCINC -override PPOPT+=-I$(PROCINC) -endif -ifdef OSINC -override PPOPT+=-I$(OSINC) -endif - -# Target dirs -ifdef TARGETDIR -override PPOPT+=-FE$(TARGETDIR) -endif -ifdef UNITTARGETDIR -override PPOPT+=-FU$(UNITTARGETDIR) -endif - -# Smartlinking -ifeq ($(SMARTLINK),YES) -ifeq ($(LIBTYPE),shared) -override SMARTLINK=NO -else -override PPOPT+=-Cx -endif -endif - -# Add library type, for static libraries smartlinking is automatic used -ifeq ($(LIBTYPE),shared) -override PPOPT+=-CD -else -ifeq ($(LIBTYPE),static) -override PPOPT+=-CS -endif -endif - -# Add library name -ifneq ($(LIBNAME),) -override PPOPT:=$(PPOPT) -o$(LIBNAME) -endif - -# Add defines from PPOPTDEF to PPOPT -override PPOPT:=$(PPOPT) $(PPOPTDEF) - -# Was a config file specified ? -ifdef CFGFILE -override PPOPT:=$(PPOPT) @$(CFGFILE) -endif - -override COMPILER=$(PP) $(PPOPT) - - -##################################################################### -# Default extensions -##################################################################### - -# Default needed extensions (Go32v2,Linux) -PPLEXT=.ppl -PPUEXT=.ppu -OEXT=.o -ASMEXT=.s -SMARTEXT=.sl -STATICLIBEXT=.a -SHAREDLIBEXT=.so - -# Executable extension -ifdef inlinux -EXEEXT= -else -EXEEXT=.exe -endif - -# Go32v1 -ifeq ($(OS_TARGET),go32v1) -PPUEXT=.pp1 -OEXT=.o1 -ASMEXT=.s1 -SMARTEXT=.sl1 -STATICLIBEXT=.a1 -SHAREDLIBEXT=.so1 -endif - -# Win32 -ifeq ($(OS_TARGET),win32) -PPUEXT=.ppw -OEXT=.ow -ASMEXT=.sw -SMARTEXT=.slw -STATICLIBEXT=.aw -SHAREDLIBEXT=.dll -endif - -# OS/2 -ifeq ($(OS_TARGET),os2) -PPUEXT=.ppo -ASMEXT=.so2 -OEXT=.o2 -SMARTEXT=.so -STATICLIBEXT=.ao -SHAREDLIBEXT=.dll -endif - -# determine libary extension. -ifeq ($(LIBTYPE),static) -LIBEXT=$(STATICLIBEXT) -else -LIBEXT=$(SHAREDLIBEXT) -endif - -# library prefix -LIBPREFIX=lib -ifeq ($(OS_TARGET),go32v2) -LIBPREFIX= -endif -ifeq ($(OS_TARGET),go32v1) -LIBPREFIX= -endif - -# determine with .pas extension is used -ifdef EXEOBJECTS -override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS))))) -else -override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS))))) -endif - -ifeq ($(TESTPAS),) -PASEXT=.pp -else -PASEXT=.pas -endif - - -##################################################################### -# Export commandline values, so nesting use the same values -##################################################################### - -export OS_SOURCE OS_TARGET OPT OPTDEF CPU PP RELEASE VERBOSE -export SMARTLINK LIBTYPE LIBNAME -export BASEINSTALLDIR - - -##################################################################### -# General compile rules -##################################################################### - -# Create Filenames -EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS)) -UNITFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS)) -UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS)) - -.PHONY : all clean install \ - info cfginfo objectinfo installinfo filesinfo - -.SUFFIXES : $(EXEEXT) $(PPUEXT) $(PASEXT) - -ifdef DEFAULTUNITS -all: units -else -all: units exes -endif - -units: $(UNITFILES) - -exes: $(EXEFILES) - -# General compile rules -%$(PPUEXT): %$(PASEXT) - $(COMPILER) $< - -%$(EXEEXT): %$(PASEXT) - $(COMPILER) $< - - - -##################################################################### -# Install rules -##################################################################### - -install : all -ifdef EXEOBJECTS - $(MKDIR) $(BININSTALLDIR) - $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR) -endif -ifdef UNITOBJECTS - $(MKDIR) $(UNITINSTALLDIR) -ifeq ($(SMARTLINK),YES) - $(INSTALL) $(LIBPREFIX)$(LIBNAME)$(LIBEXT) $(UNITINSTALLDIR) -else - $(INSTALL) $(UNITFILES) $(UNITOFILES) $(UNITINSTALLDIR) -endif -endif - - -##################################################################### -# Clean rules -##################################################################### - -clean: - -$(DEL) *$(OEXT) *$(ASMEXT) *$(PPUEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) $(PPAS) link.res log - -$(DELTREE) *$(SMARTEXT) -ifdef EXEOBJECTS - -$(DEL) $(EXEFILES) -endif - - -##################################################################### -# Depend rules -##################################################################### - -depend: - makedep $(UNITOBJECTS) - -##################################################################### -# Info rules -##################################################################### - -info: cfginfo objectinfo installinfo - -cfginfo: - @echo - @echo == Configuration info == - @echo - @echo Source.... $(OS_SOURCE) - @echo Target.... $(OS_TARGET) - @echo Basedir... $(BASEDIR) - @echo Pwd....... $(PWD) -ifdef SED - @echo Sed....... $(SED) -endif - @echo - -objectinfo: - @echo - @echo == Object info == - @echo - @echo UnitObjects... $(UNITOBJECTS) - @echo ExeObjects.... $(EXEOBJECTS) - @echo - -installinfo: - @echo - @echo == Install info == - @echo - @echo BaseInstallDir....... $(BASEINSTALLDIR) - @echo BinInstallDir........ $(BININSTALLDIR) - @echo UnitInstallDir....... $(UNITINSTALLDIR) - @echo StaticUnitInstallDir. $(STATIC_UNITINSTALLDIR) - @echo SharedUnitInstallDir. $(SHARED_UNITINSTALLDIR) - @echo LibInstallDir........ $(LIBINSTALLDIR) - @echo StaticLibInstallDir.. $(STATIC_LIBINSTALLDIR) - @echo SharedLibInstallDir.. $(SHARED_LIBINSTALLDIR) - @echo MsgInstallDir........ $(MSGINSTALLDIR) - @echo DocInstallDir........ $(DOCINSTALLDIR) - @echo - -# try to get the files in the currentdir -PASFILES:=$(wildcard *.pas) -PPFILES:=$(wildcard *.pp) -INCFILES:=$(wildcard *.inc) -MSGFILES:=$(wildcard *.msg) -ASFILES:=$(wildcard *.as) - -filesinfo: - @echo - @echo == Files info == - @echo -ifdef PASFILES - @echo Pas files are $(PASFILES) -endif -ifdef PPFILES - @echo PP files are $(PPFILES) -endif -ifdef INCFILES - @echo Inc files are $(INCFILES) -endif -ifdef MSGFILES - @echo Msg files are $(MSGFILES) -endif -ifdef ASFILES - @echo As files are $(ASFILES) -endif - diff --git a/install/make/Makefile b/install/make/Makefile index c6784697ca..6f3670dde7 100644 --- a/install/make/Makefile +++ b/install/make/Makefile @@ -16,9 +16,7 @@ # Defaults ##################################################################### -# Where are the files located -MAKEFILEFPC=makefile.fpc -RTL= +# Where are the include files located INC= PROCINC= OSINC= @@ -26,8 +24,8 @@ OSINC= # Needed options, without it won't compile NEEDOPT= -# Add this dir also to the path as first -UNITDIR= +# Needed unit dir, which is searched as the first path +NEEDUNITDIR= # Where need we to place the executables/ppu/objects TARGETDIR= @@ -49,7 +47,25 @@ EXEOBJECTS= # Include default makefile ##################################################################### -include $(MAKEFILEFPC) +ifndef FPCMAKE +ifdef FPCDIR +FPCMAKE=$(FPCDIR)/makefile.fpc +else +FPCMAKE=makefile.fpc +endif +endif + +override FPCMAKE:=$(strip $(wildcard $(FPCMAKE))) +ifeq ($(FPCMAKE),) +nofpcmake: + @echo + @echo makefile.fpc not found! + @echo Check the FPCMAKE and FPCDIR environment variables. + @echo + @exit +else +include $(FPCMAKE) +endif ##################################################################### @@ -59,7 +75,9 @@ include $(MAKEFILEFPC) # # $Log$ -# Revision 1.3 1998-12-12 19:14:42 peter -# + DEFAULTUNITS to have a make all only compile the units +# Revision 1.4 1999-01-19 18:21:51 peter +# * Use FPCDIR and FPCMAKE environment to find makefile.fpc +# * better install dir setting +# # # diff --git a/install/make/README b/install/make/README index f8026b1131..011cdd539b 100644 --- a/install/make/README +++ b/install/make/README @@ -21,6 +21,8 @@ OPTDEF Commandline defines, which also need to be passed to NEEDOPT Realy needed commandline options, also used when RELEASE=1. Example: NEEDOPT=-Sg to allow goto +NEEDUNITDIR Realy needed unitdir + PP compiler to use, default is ppc386 Example to compile with version 0.99.8: PP=ppc998 @@ -54,6 +56,9 @@ LIBTYPE can be set to shared or static to set the library type you DEFAULTUNITS if this is set then a 'make all' will only compile the units and not the exes +NODEFAULTRULES Don't include the default compiler rules. This is needed for + top-makefiles which call other files in subdirs + Location: --------- @@ -99,15 +104,16 @@ PWD GNU PWD (automaticly searched) Directories: ------------- +----------- BASEDIR Current working directory (automaticly loaded using PWD) -RTLDIR Base directory of the Free Pascal RTL. Can also be loaded - from the RTL variable - Default: $BASEDIR/../rtl +FPCDIR Base directory of Free Pascal -UNITDIR Unit directory to add. - Default: $RTLDIR/$OS_TARGET +RTLDIR Directory to the used RTL. This contains already the target + Default: $FPCDIR/rtl/$OS_TARGET + +UNITDIR Directory to the currently used units for the target + Default: $FPCDIR/units/$OS_TARGET Installation directories: diff --git a/install/make/makefile.fpc b/install/make/makefile.fpc index abc842d7ba..0cbb012ca5 100644 --- a/install/make/makefile.fpc +++ b/install/make/makefile.fpc @@ -17,7 +17,8 @@ ##################################################################### # Latest release version -override RELEASEVER:=0.99.9 +override RELEASEVER:=0.99.11 + ##################################################################### # Autodetect OS (Linux or Dos or Windows NT) @@ -50,6 +51,21 @@ endif endif +##################################################################### +# Check for FPCDIR environment +##################################################################### + +ifndef FPCDIR +nofpcdir: + @echo + @echo You need to set the FPCDIR environment variable to use + @echo this Makefile. + @echo Example: SET FPCDIR=/pp + @echo + @exit +endif + + ##################################################################### # Targets ##################################################################### @@ -100,7 +116,7 @@ ifndef AS AS=as endif -# linker, but probably not used +# linker, but probably not used ifndef LD LD=ld endif @@ -115,6 +131,7 @@ ifdef VERBOSE override OPT+=-vwni endif + ##################################################################### # Shell commands ##################################################################### @@ -246,15 +263,19 @@ endif # set the directory to the rtl base ifndef RTLDIR ifdef RTL -RTLDIR=$(RTL) +RTLDIR=$(RTL)/$(OS_TARGET) else -RTLDIR:=$(BASEDIR)/../rtl +RTLDIR:=$(FPCDIR)/rtl/$(OS_TARGET) endif endif # specify where units are. ifndef UNITDIR -UNITDIR=$(RTLDIR)/$(OS_TARGET) +ifdef UNITS +UNITDIR=$(UNITS)/$(OS_TARGET) +else +UNITDIR=$(FPCDIR)/units/$(OS_TARGET) +endif endif # set the prefix directory where to install everything @@ -262,7 +283,7 @@ ifndef PREFIXINSTALLDIR ifdef inlinux PREFIXINSTALLDIR=/usr else -PREFIXINSTALLDIR=/pp +PREFIXINSTALLDIR=$(FPCDIR) endif endif @@ -298,51 +319,6 @@ BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) endif endif -# set the directory where to install the units. -ifndef UNITINSTALLDIR -ifdef inlinux -UNITINSTALLDIR=$(BASEINSTALLDIR)/linuxunits -else -UNITINSTALLDIR=$(BASEINSTALLDIR)/rtl/$(OS_TARGET) -endif -endif - -# set the directory where to install the units. -ifndef STATIC_UNITINSTALLDIR -ifdef inlinux -STATIC_UNITINSTALLDIR=$(BASEINSTALLDIR)/staticunits -else -STATIC_UNITINSTALLDIR=$(BASEINSTALLDIR)/rtl/$(OS_TARGET)/static -endif -endif - -# set the directory where to install the units. -ifndef SHARED_UNITINSTALLDIR -ifdef inlinux -SHARED_UNITINSTALLDIR=$(BASEINSTALLDIR)/sharedunits -else -SHARED_UNITINSTALLDIR=$(BASEINSTALLDIR)/rtl/$(OS_TARGET)/shared -endif -endif - -# set the directory where to install the libs (must exist) -ifndef STATIC_LIBINSTALLDIR -ifdef inlinux -STATIC_LIBINSTALLDIR=$(BASEINSTALLDIR)/staticunits -else -STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR) -endif -endif - -# set the directory where to install the libs (must exist) -ifndef SHARED_LIBINSTALLDIR -ifdef inlinux -SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib -else -SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR) -endif -endif - # Where the .msg files will be stored ifndef MSGINSTALLDIR ifdef inlinux @@ -361,18 +337,71 @@ DOCINSTALLDIR=$(BASEINSTALLDIR)/doc endif endif +######################## +# Unit Directories +######################## + +# this can be set to 'rtl' when the RTL units are installed +ifndef UNITPREFIX +UNITPREFIX=units +endif + +# set the directory where to install the units. +ifndef UNITINSTALLDIR +ifdef inlinux +UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX) +else +UNITINSTALLDIR=$(BASEINSTALLDIR)/$(UNITPREFIX)/$(OS_TARGET) +endif +endif + +# set the directory where to install the units. +ifndef STATIC_UNITINSTALLDIR +STATIC_UNITINSTALLDIR=$(UNITINSTALLDIR)/static +endif + +# set the directory where to install the units. +ifndef SHARED_UNITINSTALLDIR +SHARED_UNITINSTALLDIR=$(UNITINSTALLDIR)/shared +endif + +# set the directory where to install the libs (must exist) +ifndef STATIC_LIBINSTALLDIR +STATIC_LIBINSTALLDIR=$(STATIC_UNITINSTALLDIR) +endif + +# set the directory where to install the libs (must exist) +ifndef SHARED_LIBINSTALLDIR +ifdef inlinux +SHARED_LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib +else +SHARED_LIBINSTALLDIR=$(SHARED_UNITINSTALLDIR) +endif +endif + ##################################################################### # Compiler Command Line ##################################################################### # Load commandline OPTDEF and add CPU define -override PPOPTDEF=$(OPTDEF) -d$(CPU) +override PPOPTDEF:=$(OPTDEF) -d$(CPU) # Load commandline OPT and add target and unit dir to be sure -override PPOPT=$(OPT) -T$(OS_TARGET) -Fu$(UNITDIR) $(NEEDOPT) +override PPOPT:=$(OPT) -T$(OS_TARGET) $(NEEDOPT) -# Add include dirs INC and PROCINC +# RTL first and then Unit dir (a unit can override RTLunit) +ifdef RTLDIR +override PPOPT+=$(addprefix -Fu,$(RTLDIR)) +endif +ifdef UNITDIR +override PPOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef NEEDUNITDIR +override PPOPT+=$(addprefix -Fu,$(NEEDUNITDIR)) +endif + +# Add include dirs INC and PROCINC and OSINC ifdef INC override PPOPT+=-I$(INC) endif @@ -509,7 +538,8 @@ endif # Export commandline values, so nesting use the same values ##################################################################### -export OS_SOURCE OS_TARGET OPT OPTDEF CPU PP RELEASE VERBOSE +export FPCDIR FPCMAKE +export RELEASEVER OS_SOURCE OS_TARGET OPT OPTDEF CPU PP RELEASE VERBOSE export SMARTLINK LIBTYPE LIBNAME export BASEINSTALLDIR @@ -518,16 +548,23 @@ export BASEINSTALLDIR # General compile rules ##################################################################### +ifndef NODEFAULTRULES + # Create Filenames EXEFILES=$(addsuffix $(EXEEXT),$(EXEOBJECTS)) UNITFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS)) UNITOFILES=$(addsuffix $(OEXT),$(UNITOBJECTS)) .PHONY : all clean install \ - info cfginfo objectinfo installinfo filesinfo + info cfginfo objectinfo installinfo filesinfo .SUFFIXES : $(EXEEXT) $(PPUEXT) $(PASEXT) + +##################################################################### +# Default +##################################################################### + ifdef DEFAULTUNITS all: units else @@ -546,26 +583,67 @@ exes: $(EXEFILES) $(COMPILER) $< +##################################################################### +# Library +##################################################################### + +staticlib: + $(MAKE) libsclean + $(MAKE) all SMARTLINK=YES LIBTYPE=static + + +sharedlib: +ifdef inlinux + $(MAKE) libsclean + $(MAKE) all LIBTYPE=shared +else + @echo Shared Libraries not supported +endif + + +libsclean : clean + -$(DEL) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) + ##################################################################### # Install rules ##################################################################### install : all +ifndef DEFAULTUNITS ifdef EXEOBJECTS $(MKDIR) $(BININSTALLDIR) $(INSTALLEXE) $(EXEFILES) $(BININSTALLDIR) endif +endif ifdef UNITOBJECTS $(MKDIR) $(UNITINSTALLDIR) + $(INSTALL) $(UNITFILES) $(UNITINSTALLDIR) ifeq ($(SMARTLINK),YES) $(INSTALL) $(LIBPREFIX)$(LIBNAME)$(LIBEXT) $(UNITINSTALLDIR) else - $(INSTALL) $(UNITFILES) $(UNITOFILES) $(UNITINSTALLDIR) + -$(INSTALL) *$(OEXT) $(UNITINSTALLDIR) endif endif +staticlibinstall: staticlib + $(MKDIR) $(STATIC_UNITINSTALLDIR) + $(INSTALL) $(UNITFILES) $(STATIC_UNITINSTALLDIR) + $(MKDIR) $(STATIC_LIBINSTALLDIR) + $(INSTALLEXE) *$(STATICLIBEXT) $(STATIC_LIBINSTALLDIR) + + +sharedlibinstall: sharedlib + $(MKDIR) $(SHARED_UNITINSTALLDIR) + $(INSTALL) $(UNITFILES) $(SHARED_UNITINSTALLDIR) + $(MKDIR) $(SHARED_LIBINSTALLDIR) + $(INSTALLEXE) *$(SHAREDLIBEXT) $(SHARED_LIBINSTALLDIR) + + +libinstall: staticlibinstall sharedlibinstall + + ##################################################################### # Clean rules ##################################################################### @@ -585,6 +663,7 @@ endif depend: makedep $(UNITOBJECTS) + ##################################################################### # Info rules ##################################################################### @@ -595,6 +674,10 @@ cfginfo: @echo @echo == Configuration info == @echo + @echo FPCDir.... $(FPCDIR) + @echo FPCMake... $(FPCMAKE) + @echo + @echo Target.... $(OS_TARGET) @echo Source.... $(OS_SOURCE) @echo Target.... $(OS_TARGET) @echo Basedir... $(BASEDIR) @@ -655,3 +738,4 @@ ifdef ASFILES @echo As files are $(ASFILES) endif +endif #NODEFAULTRULES