diff options
Diffstat (limited to 'compiler/utils/samplecfg')
| -rw-r--r-- | compiler/utils/samplecfg | 548 |
1 files changed, 27 insertions, 521 deletions
diff --git a/compiler/utils/samplecfg b/compiler/utils/samplecfg index 68abd32674..c939e9e5d3 100644 --- a/compiler/utils/samplecfg +++ b/compiler/utils/samplecfg @@ -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 @@ -47,18 +23,23 @@ else fi FPCBIN=`dirname "$1"`/../../bin/fpc FPBIN=`dirname "$1"`/../../bin/fp +FPPKGBIN=`dirname "$1"`/../../bin/fppkg 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 echo Write permission in $sysdir. fpccfgfile="$sysdir"/fpc.cfg + fppkgfile="$sysdir"/fppkg.cfg + defaultfile="$sysdir"/fppkg/default + compilerconfigdir="-d CompilerConfigDir=$sysdir/fppkg" else echo No write premission in $sysdir. fpccfgfile="$HOME"/.fpc.cfg + fppkgfile="$HOME"/.config/fppkg.cfg + defaultfile="$HOME"/.fppkg/config/default fi # @@ -69,388 +50,24 @@ if [ -f "$FPBIN" ] ; then fpinifile="$HOME"/.fp/fp.ini fpcfgfile="$HOME"/.fp/fp.cfg -# Detect if we have write permission in sysfpdirbase. - if [ -w "$sysfpdirbase" ] ; then - echo Write permission in $sysfpdirbase. - if ! [ -d "$sysfpdirbase2" ] ; then - echo Directory $sysfpdirbase2 did not exist, attempting to create it now - mkdir $sysfpdirbase2 >/dev/null 2>&1 - echo Attempting to create directory $sysfpdir - mkdir $sysfpdir >/dev/null 2>&1 - elif ! [ -d "$sysfpdir" ] ; then - echo Directory $sysfpdir did not exist, attempting to create it now - mkdir $sysfpdir >/dev/null 2>&1 - fi - if [ -w "$sysfpdir" ] ; then - fpinifile="$sysfpdir"/fp.ini - fpcfgfile="$sysfpdir"/fp.cfg - fi +# Detect if we have write permission in sysfpdir, or that the directory can be made + if ( [ -d "$sysfpdirbase" ] && [ -w "$sysfpdirbase" ] && ! [ -d "$sysfpdirbase2" ] ) || + ( [ -d "$sysfpdirbase2" ] && [ -w "$sysfpdirbase2" ] && ! [ -d "$sysfpdir" ] ) || + ( [ -d "$sysfpdir" ] && [ -w "$sysfpdir" ] ) ; then + fpinifile="$sysfpdir"/fp.ini + fpcfgfile="$sysfpdir"/fp.cfg fi # - -# When the local FP IDE configuration is used, check if the directory exists - if [ $fpcfgfile = "$HOME"/.fp/fp.cfg -a ! -d "$HOME"/.fp ] ; then - echo Directory $HOME/.fp did not exist, attempting to create it now - mkdir "$HOME"/.fp >/dev/null 2>&1 - fi -fi -# - -if [ -f "$fpccfgfile" ] ; then - mv "$fpccfgfile" "$fpccfgfile.orig" >/dev/null 2>&1 - if [ $? = 0 ]; then - echo Saved old compiler config to $fpccfgfile.orig - else - echo Could not save old compiler config. Bailing out... - exit - fi fi -if [ -f "$FPBIN" ] ; then - if [ -f "$fpinifile" ] ; then - mv "$fpinifile" "$fpinifile.orig" >/dev/null 2>&1 - if [ $? = 0 ]; then - echo Saved old fp.ini to $fpinifile.orig - else - echo Could not save old fp.ini. Bailing out... - exit - fi - fi - - if [ -f "$fpcfgfile" ] ; then - mv "$fpcfgfile" "$fpcfgfile.orig" >/dev/null 2>&1 - if [ $? = 0 ]; then - echo Saved old fp.cfg to $fpcfgfile.orig - else - echo Could not save old fp.cfg. Bailing out... - exit - fi - 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 +# set right prefix to FPC +FPCGLOBALPREFIX=`dirname "$1"`/../../ # 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 +75,21 @@ 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 -p -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 +fpcmkcfg -p -2 -o $fpinifile -[Breakpoints] -Count=0 - -[Watches] -Count=0 - -[Preferences] -DesktopFileFlags=209 -CenterCurrentLineWhileDebugging=1 -AutoSaveFlags=7 -MiscOptions=6 -DesktopLocation=1 - -[Misc] -ShowReadme=1 +# Do not write fppkg configuration when fppkg is not available +if ! [ -f "$FPPKGBIN" ] ; then + exit +fi -[Files] -OpenExts="*.pas;*.pp;*.inc" +# Write fppkg.cfg +echo Writing sample configuration file to $fppkgfile +fpcmkcfg -p -3 $compilerconfigdir -o $fppkgfile -[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 +# Write default +echo Writing sample configuration file to $defaultfile +fpcmkcfg -p -4 -d "GlobalPrefix=$FPCGLOBALPREFIX" -o $defaultfile |
