|
@@ -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
|