* Samplecfg now uses fpcmkcfg to create the configuration files

git-svn-id: trunk@17148 -
This commit is contained in:
joost 2011-03-19 22:09:47 +00:00
parent 3a12f018f4
commit 3c6bb40c52

View File

@ -5,30 +5,6 @@
# Generate Sample Free Pascal configuration file
#
setgccdir() {
# Find path to libgcc.a
GCCSPEC=`(gcc -v $@ 2>&1)| head -n 1| awk '{ print $4 } '`
if [ -z "$GCCSPEC" ] ; then
GCCSPEC=`gcc -print-libgcc-file-name $@ 2>/dev/null`
fi
GCCDIR=`dirname "$GCCSPEC"`
}
setgccdirarch() {
# First argument is fpc define for CPU type; remaining args are passed to gcc to set corresponding architecture
FPCDEFINE=$1
shift
setgccdir $@
if [ -z "$GCCDIR" ] ; then
return
fi
GCCDIR="#ifdef $FPCDEFINE
-Fl$GCCDIR
#endif"
}
HOSTOS=`uname -s | tr A-Z a-z`
echo Running on $HOSTOS
@ -50,7 +26,6 @@ FPBIN=`dirname "$1"`/../../bin/fp
sysfpdirbase=`dirname "$1"`/`"$FPCBIN" -iV`
sysfpdirbase2=$sysfpdirbase/ide
sysfpdir=$sysfpdirbase2/text
fpctargetos=`"$FPCBIN" -iTO`
# Detect if we have write permission in sysdir.
if [ -w "$sysdir" ] ; then
@ -128,329 +103,12 @@ if [ -f "$FPBIN" ] ; then
fi
fi
setgccdir
GCCDIR2=""
GCCDIR3=""
GCCDIR4=""
singlearch() {
if [ -d "$GCCDIR" ]; then
echo Found libgcc.a in "$GCCDIR"
GCCDIR=-Fl$GCCDIR
fi
}
# include ports tree dir for FreeBSDers.
case "$HOSTOS" in
freebsd)
GCCDIR=-Fl/usr/local/lib
;;
openbsd)
GCCDIR=-Fl/usr/local/lib
;;
netbsd)
GCCDIR=-Fl/usr/pkg/lib
;;
darwin)
setgccdirarch cpupowerpc -arch ppc
GCCDIR2="$GCCDIR"
setgccdirarch cpupowerpc64 -arch ppc64
GCCDIR3="$GCCDIR"
setgccdirarch cpui386 -arch i386
GCCDIR4="$GCCDIR"
setgccdirarch cpux86_64 -arch x86_64
;;
linux)
case `"$FPCBIN" -PP` in
i?86|x86_64|amd64)
# Allow for the possibility of both 32 and 64 bit compilation on same system
setgccdirarch cpui386 -m32
GCCDIR4="$GCCDIR"
setgccdirarch cpux86_64 -m64
;;
powerpc|powerpc64)
# Allow for the possibility of both 32 and 64 bit compilation on same system
setgccdirarch cpupowerpc -m32
GCCDIR4="$GCCDIR"
setgccdirarch cpupowerpc64 -m64
;;
# Add cases for other linux dual architectures here
*) singlearch # Default
;;
esac
;;
*) singlearch
;;
esac
CPUCROSSIFDEF1="#DEFINE NEEDCROSSBINUTILS"
CPUCROSSIFDEF2=""
case `"$FPCBIN" -PP` in
i?86|x86_64|amd64)
# Cross-binutils are not needed to compile for i386 on an x86_64 system
CPUCROSSIFDEF1="
#IFNDEF CPUI386
#IFNDEF CPUAMD64
#DEFINE NEEDCROSSBINUTILS
#ENDIF
#ENDIF
"
CPUCROSSIFDEF2="
#IFNDEF $HOSTOS
#DEFINE NEEDCROSSBINUTILS
#ENDIF
"
;;
*)
CPUCROSSIFDEF1="#DEFINE NEEDCROSSBINUTILS"
CPUCROSSIFDEF2=""
;;
esac
# darwin->darwin does not need cross binutils
case "$HOSTOS" in
darwin)
CPUCROSSIFDEF2="
#ifdef darwin
#undef NEEDCROSSBINUTILS
#endif
"
;;
esac
# set right path to FPC with $fpcversion
FPCPATH=`dirname "$1"`/\$fpcversion
# Write (.)fpc.cfg
echo Writing sample configuration file to $fpccfgfile
cat <<EOFCFG > $fpccfgfile
#
# Example fpc.cfg for Free Pascal Compiler
#
# ----------------------
# Defines (preprocessor)
# ----------------------
#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#
#
# Some examples (for switches see below, and the -? helppages)
#
# Try compiling with the -dRELEASE or -dDEBUG on the commandline
#
# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
-O2
-Xs
#WRITE Compiling Release Version
#ENDIF
# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
-g
-Crtoi
#WRITE Compiling Debug Version
#ENDIF
# set binutils prefix
$CPUCROSSIFDEF1
$CPUCROSSIFDEF2
#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
-XP\$fpctarget-
#ENDIF NEEDCROSSBINUTILS
#ENDIF
# assembling
#ifdef darwin
# use pipes instead of temporary files for assembling
-ap
#endif
# ----------------
# Parsing switches
# ----------------
# Pascal language mode
# -Mfpc free pascal dialect (default)
# -Mobjfpc switch some Delphi 2 extensions on
# -Mdelphi tries to be Delphi compatible
# -Mtp tries to be TP/BP 7.0 compatible
# -Mgpc tries to be gpc compatible
# -Mmacpas tries to be compatible to the macintosh pascal dialects
#
# Turn on Object Pascal extensions by default
#-Mobjfpc
# Assembler reader mode
# -Rdefault use default assembler
# -Ratt read AT&T style assembler
# -Rintel read Intel style assembler
#
# All assembler blocks are AT&T styled by default
#-Ratt
# Semantic checking
# -S2 same as -Mobjfpc
# -Sc supports operators like C (*=,+=,/= and -=)
# -Sa include assertion code.
# -Sd same as -Mdelphi
# -Se<x> error options. <x> is a combination of the following:
# <n> : compiler stops after the <n> errors (default is 1)
# w : compiler stops also after warnings
# n : compiler stops also after notes
# h : compiler stops also after hints
# -Sg allow LABEL and GOTO
# -Sh Use ansistrings
# -Si support C++ styled INLINE
# -Sk load fpcylix unit
# -SI<x> set interface style to <x>
# -SIcom COM compatible interface (default)
# -SIcorba CORBA compatible interface
# -Sm support macros like C (global)
# -So same as -Mtp
# -Sp same as -Mgpc
# -Ss constructor name must be init (destructor must be done)
# -Sx enable exception keywords (default in Delphi/ObjFPC modes)
#
# Allow goto, inline, C-operators, C-vars
-Sgic
# ---------------
# Code generation
# ---------------
# Uncomment the next line if you always want static/dynamic units by default
# (can be overruled with -CD, -CS at the commandline)
#-CS
#-CD
# Set the default heapsize to 8Mb
#-Ch8000000
# Set default codegeneration checks (iocheck, overflow, range, stack)
#-Ci
#-Co
#-Cr
#-Ct
# Optimizer switches
# -Os generate smaller code
# -O1 level 1 optimizations (quick optimizations, debuggable)
# -O2 level 2 optimizations (-O1 + optimizations which make debugging more difficult)
# -O3 level 3 optimizations (-O2 + optimizations which also may make the program slower rather than faster)
# -Op<x> set target cpu for optimizing, see fpc -i for possible values
#
# See "fpc -i" also for more fine-grained control over which optimizations
# to perform
#ifdef darwin
#ifdef cpui386
-Cppentiumm
-Oppentiumm
#endif
#endif
# -----------------------
# Set Filenames and Paths
# -----------------------
# Slashes are also allowed under dos
# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr$FPCPATH/msg/errore.msg
#-Fr$FPCPATH/msg/errorn.msg
# searchpath for units and other system dependent things
-Fu$FPCPATH/units/\$fpctarget
-Fu$FPCPATH/units/\$fpctarget/*
-Fu$FPCPATH/units/\$fpctarget/rtl
#-Fu~/fpc/packages/base/*/units/$fpctarget;~/fpc/fcl/units/$fpctarget;~/fpc/rtl/units/$fpctarget
#IFDEF FPCAPACHE_1_3
-Fu$FPCPATH/units/\$fpctarget/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu$FPCPATH/units/\$fpctarget/httpd20
#ELSE
-Fu$FPCPATH/units/\$fpctarget/httpd22
#ENDIF
#ENDIF
# searchpath for libraries
$GCCDIR
$GCCDIR2
$GCCDIR3
$GCCDIR4
#-Fl/pp/lib
#-Fl/lib;/usr/lib
# -------------
# Linking
# -------------
# generate always debugging information for GDB (slows down the compiling
# process)
# -gc generate checks for pointers
# -gd use dbx
# -gg use gsym
# -gh use heap trace unit (for memory leak debugging)
# -gl use line info unit to show more info for backtraces
# -gv generates programs tracable with valgrind
# -gw generate dwarf debugging info
#
# Enable debuginfo and use the line info unit by default
#-gl
# always pass an option to the linker
#-k-s
# Always strip debuginfo from the executable
-Xs
# -------------
# Miscellaneous
# -------------
# Write always a nice FPC logo ;)
-l
# Verbosity
# e : Show errors (default) d : Show debug info
# w : Show warnings u : Show unit info
# n : Show notes t : Show tried/used files
# h : Show hints c : Show conditionals
# i : Show general info d : Show debug info
# l : Show linenumbers r : Rhide/GCC compatibility mode
# a : Show everything x : Executable info (Win32 only)
# b : Write file names messages with full path
# v : write fpcdebug.txt with p : Write tree.log with parse tree
# lots of debugging info
#
# Display Info, Warnings and Notes
-viwn
# If you don't want so much verbosity use
#-vw
#
# That's all folks
#
EOFCFG
fpcmkcfg -d "basepath=$FPCPATH" -o $fpccfgfile
if ! [ -f "$FPBIN" ] ; then
exit
@ -458,132 +116,8 @@ fi
# Write fp.cfg
echo Writing sample configuration file to $fpcfgfile
cat <<EOFFPCFG > $fpcfgfile
#IFDEF NORMAL
-Ci
-XS
-T$fpctargetos
-Sg
-O1
-Fu$FPCPATH/units/\$fpctarget
-Fu$FPCPATH/units/\$fpctarget\*
-Fu$FPCPATH/units/\$fpctarget\rtl
$GCCDIR
$GCCDIR2
$GCCDIR3
$GCCDIR4
-g-
-p-
-b-
#ENDIF
#IFDEF DEBUG
-Ci
-XS
-T$fpctargetos
-Sg
-Cr
-Co
-Fu$FPCPATH/units/\$fpctarget
-Fu$FPCPATH/units/\$fpctarget\*
-Fu$FPCPATH/units/\$fpctarget\rtl
$GCCDIR
$GCCDIR2
$GCCDIR3
$GCCDIR4
-g
-p-
-b-
#ENDIF
#IFDEF RELEASE
-XS
-T$fpctargetos
-Sg
-O2
-Fu$FPCPATH/units/\$fpctarget
-Fu$FPCPATH/units/\$fpctarget\*
-Fu$FPCPATH/units/\$fpctarget\rtl
$GCCDIR
$GCCDIR2
$GCCDIR3
$GCCDIR4
-g-
-p-
-b-
#ENDIF
EOFFPCFG
fpcmkcfg -1 -d "basepath=$FPCPATH" -o $fpcfgfile
# Write fp.ini
echo Writing sample configuration file to $fpinifile
cat <<EOFFPINI > $fpinifile
[Compile]
CompileMode=DEBUG
[Editor]
DefaultTabSize=8
DefaultFlags=20599
DefaultSaveExt=.pas
DefaultIndentSize=1
[Highlight]
Exts="*.pas;*.pp;*.inc"
NeedsTabs="make*;make*.*"
[SourcePath]
SourceList=""
[Mouse]
DoubleDelay=8
ReverseButtons=0
AltClickAction=6
CtrlClickAction=1
[Search]
FindFlags=4
[Breakpoints]
Count=0
[Watches]
Count=0
[Preferences]
DesktopFileFlags=209
CenterCurrentLineWhileDebugging=1
AutoSaveFlags=7
MiscOptions=6
DesktopLocation=1
[Misc]
ShowReadme=1
[Files]
OpenExts="*.pas;*.pp;*.inc"
[Tools]
Title1="svn ~u~p (curr. dir)"
Program1="svn"
Params1="up \$CAP_MSG()"
HotKey1=23296
Title2="svn c~i~ (curr. dir)"
Program2="svn"
Params2="ci \$CAP_MSG()"
HotKey2=23552
Title3="svn ~d~iff"
Program3="svn"
Params3="diff \$CAP_MSG() \$EDNAME"
HotKey3=23808
Title4="svn ~l~og"
Program4="svn"
Params4="log \$CAP_MSG() \$EDNAME"
HotKey4=34560
Title5="svn ~b~lame"
Program5="svn"
Params5="blame \$CAP_MSG() \$EDNAME"
HotKey5=34816
Title6="svn ~a~dd"
Program6="svn"
Params6="add \$CAP_MSG() \$EDNAME"
HotKey6=0'
EOFFPINI
fpcmkcfg -2 -o $fpinifile