├── README.md ├── binutils.bat ├── fpc-docs-make.bat ├── fpc-make-linux ├── fpc-make-package.bat ├── fpc-make.bat ├── laz-build.bat ├── laz-make.bat ├── laz-start.bat ├── mse-make.bat └── mse-start.bat /README.md: -------------------------------------------------------------------------------- 1 | # fp-scripts 2 | Scripts to compile FreePascal, Lazarus and MSE on Windows 3 | 4 | To use these scripts without modifications, you should use this structure of directories: 5 | 6 | freepascal 7 | |- binutils 8 | |- 3.0.0 9 | |- 3.0.1 10 | |- 3.1.1 11 | |- laz 12 | |- compilers 13 | |- 3.0.0 14 | |- 3.0.1 15 | |- 3.1.1 16 | |- laz 17 | |- lazarus 18 | |- 1.5 19 | |- 1.5-config 20 | |- 1.7 21 | |- 1.7-config 22 | |- lib 23 | |- mse 24 | |- scripts 25 | 26 | To get "binutils" and a FPC stable version, take a look on this [link](http://wiki.freepascal.org/Installing_Lazarus#Compiling.2Finstalling_FPC_and_Lazarus_from_Sources_of_SVN_.28Win32.29), made by me and improved by community. 27 | 28 | -------------------------------------------------------------------------------- /binutils.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | cd .. 4 | 5 | set myROOT=%cd% 6 | set myVERSION=%1 7 | set myBINUTILS=%myROOT%\binutils 8 | set myTARGET=i386-win32 9 | 10 | if [%myVERSION%.] equ [.] ( 11 | echo ERROR: 1 arg is the FPC version 12 | goto END 13 | ) 14 | 15 | 16 | set myFPC=%myROOT%\compilers\%myVERSION% 17 | if not exist %myFPC% ( 18 | echo ERROR: Version "%myVERSION%" does not exists 19 | goto END 20 | ) 21 | 22 | set myBINUTILS_PATH=%myBINUTILS%\%myVERSION%\%myTARGET% 23 | 24 | set PATH=%myBINUTILS_PATH%;%myFPC%\bin\%myTARGET% 25 | 26 | echo Ready to use BINUTILS tools with FPC %myVERSION%. 27 | 28 | :END 29 | 30 | -------------------------------------------------------------------------------- /fpc-docs-make.bat: -------------------------------------------------------------------------------- 1 | @echo on 2 | 3 | cd .. 4 | 5 | set root=%cd% 6 | set fpc=%root%\compilers\%1 7 | set binutils=%root%\binutils\%1 8 | set PATH=%binutils%\i386-win32;%fpc%\bin\i386-win32 9 | 10 | cd %root%\compilers\fpcdocs 11 | 12 | make fcl.chk FPCSRCDIR=%fpc% 13 | make rtl.chk FPCSRCDIR=%fpc% 14 | -------------------------------------------------------------------------------- /fpc-make-linux: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Makefpc 4 | # 5 | # Some definitions. Setup as needed. 6 | SVN=svn 7 | MAKE=make 8 | # 9 | # 10 | # 11 | function usage { 12 | echo Usage: $0 [options] 13 | echo 'Where options is one or more of the following:' 14 | echo ' -c Make cycle (default is compile RTL).' 15 | echo ' -d dir FPC top level directory (default is current).' 16 | echo ' -f Compile Free Vision.' 17 | echo ' -h Usage (this text).' 18 | echo ' -i Compile IDE' 19 | echo ' -I Install (requires root password to be entered)' 20 | echo ' -l logfile Use logfile for logging' 21 | echo ' -p compiler Use compiler binary' 22 | echo ' -t Compile tools (utils directory)' 23 | echo ' -u Specify project name.' 24 | echo 25 | } 26 | # 27 | # Check result and output message. 28 | # 29 | function checkresult { 30 | if [ $1 != 0 ]; then 31 | echo "$2 failed with exit status $1. Quitting" 32 | return 1 33 | fi 34 | echo "$2: Command completed OK." 35 | return 0 36 | } 37 | # 38 | # Parse options. 39 | # 40 | while test $# != 0 41 | do 42 | f=$1 43 | case $f in 44 | '-c') DOCYCLE=YES;; 45 | '-d') shift 46 | FPCDIR=$1;; 47 | '-f') DOFVISION=YES;; 48 | '-h') usage 49 | exit;; 50 | '-i') DOIDE=YES 51 | DOFVISION=YES;; 52 | '-I') DOINSTALL=YES;; 53 | '-l') shift 54 | LOGFILE=$1;; 55 | '-p') shift 56 | PP=$1;; 57 | '-t') DOTOOLS=YES;; 58 | '-u') DOSVN=YES;; 59 | '-o') shift 60 | MAKEOPT="$1";; 61 | esac 62 | shift 63 | done 64 | # 65 | # 66 | # 67 | if [ ! -z "$FPCDIR" ]; then 68 | cd $FPCDIR 69 | if [ $? != 0 ]; then 70 | echo Failed to change to directory $FPCDIR. 71 | exit 1 72 | fi 73 | else 74 | FPCDIR=`pwd` 75 | fi 76 | if [ -z "$LOGFILE" ]; then 77 | LOGFILE=`date +%Y-%m-%d-%H:%M:%S`.log 78 | fi 79 | if [ ! -z "$PP" ]; then 80 | MAKEPP="PP=$PP" 81 | fi 82 | # 83 | # Start logging from here 84 | # 85 | ( 86 | # 87 | # Update from cvs if needed. 88 | # 89 | if [ "$DOSVN" = "YES" ]; then 90 | # No error checking on those. SVN exits with error 1 in strange cases. 91 | $SVN update rtl 92 | $SVN update packages 93 | $SVN update fcl 94 | if [ "$DOCYCLE" = "YES" ]; then 95 | $SVN update compiler 96 | fi 97 | if [ "$DOTOOLS" = "YES" ]; then 98 | $SVN update utils 99 | fi 100 | if [ "$DOFVISION" = "YES" ]; then 101 | $SVN update fv 102 | fi 103 | if [ "$DOIDE" = "YES" ]; then 104 | $SVN update ide 105 | fi 106 | fi 107 | # 108 | # Start compiling 109 | # 110 | # RTL/Compiler 111 | # 112 | if [ "$DOCYCLE" = "YES" ]; then 113 | $MAKE $MAKEPP -C compiler cycle 114 | checkresult $? "Make cycle" || exit 1 115 | MAKEPP="PP=$FPCDIR/compiler/ppc3" 116 | else 117 | $MAKE $MAKEOPT $MAKEPP -C rtl clean && $MAKE $MAKEOPT $MAKEPP -C rtl all 118 | checkresult $? "RTL Compilation" || exit 1 119 | fi 120 | # 121 | # Base Packages 122 | # 123 | $MAKE $MAKEOPT $MAKEPP -C packages clean 124 | checkresult $? "Clean packages" || exit 1 125 | $MAKE $MAKEOPT $MAKEPP -C packages all 126 | checkresult $? "Packages compilation" || exit 1 127 | # 128 | # FVISION 129 | # 130 | if [ "$DOFVISION" = 'YES' ]; then 131 | $MAKE $MAKEOPT $MAKEPP -C fv clean 132 | checkresult $? "Clean Free vision" || exit 1 133 | $MAKE $MAKEOPT $MAKEPP -C fv all 134 | checkresult $? "Free Vision compilation" || exit 1 135 | INSTALLFVISION="&& make $MAKEPP -C utils install" 136 | fi 137 | # 138 | # Utils 139 | # 140 | if [ "$DOTOOLS" = 'YES' ]; then 141 | $MAKE $MAKEOPT $MAKEPP -C utils clean 142 | checkresult $? "Clean Utils" || exit 1 143 | $MAKE $MAKEOPT $MAKEPP -C utils all 144 | checkresult $? "Utils compilation" || exit 1 145 | INSTALLTOOLS="&& make $MAKEPP -C utils install" 146 | fi 147 | # 148 | # IDE 149 | # 150 | if [ "$DOIDE" = 'YES' ]; then 151 | $MAKE $MAKEOPT $MAKEPP -C ide clean 152 | checkresult $? "Clean IDE" || exit 1 153 | $MAKE $MAKEOPT $MAKEPP -C ide all 154 | checkresult $? "IDE compilation" || exit 1 155 | INSTALLIDE="&& make $MAKEPP -C ide install" 156 | fi 157 | # 158 | # If we got here, success !! 159 | # 160 | echo "All tasks completed succesfully !" 161 | if [ "$DOINSTALL" = 'YES' ]; then 162 | if [ "$DOCYCLE" = "YES" ]; then 163 | INSTALLCMD="make $MAKEPP -C compiler install && " 164 | else 165 | INSTALLCMD="" 166 | fi 167 | INSTALLCMD="$INSTALLCMD make $MAKEPP -C rtl install && make $MAKEPP -C packages install"; 168 | INSTALLCMD="$INSTALLCMD $INSTALLFVISION $INSTALLTOOLS $INSTALLIDE" 169 | if [ `id -u` = 0 ]; then 170 | $INSTALLCMD 171 | else 172 | echo "About to install tools. Please enter the root password when prompted:" 173 | su -c "$INSTALLCMD" 174 | fi 175 | fi 176 | ) | tee $LOGFILE 2>&1 177 | -------------------------------------------------------------------------------- /fpc-make-package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem === CONSTANTS === 4 | set cPLATFORM_32=i386 5 | set cPLATFORM_64=x86 6 | set cDEBUG=debug 7 | 8 | rem === YOUR OPTIONS === 9 | 10 | cd .. 11 | 12 | set myROOT=%cd% 13 | set myOPTVERSION=%1 14 | set myOPTPLATFORM=%2 15 | set myPKGPATH=%3 16 | set myDEBUG=%4 17 | 18 | rem === OPTIONS ==== 19 | set myBINUTILS=%myROOT%\binutils 20 | set myTARGET=none 21 | set myOPTS=-gl 22 | rem set myCOMMONOPTS=UPXPROG=echo COPYTREE=echo OPT="%myOPTS%" 23 | set myCOMMONOPTS= 24 | 25 | if [%myDEBUG%.] equ [%cDEBUG%.] ( 26 | set myCOMMONOPTS=UPXPROG=echo COPYTREE=echo OPT="%myOPTS%" 27 | ) 28 | 29 | rem === VERIFYING THE ARGS 30 | if [%myOPTVERSION%.] equ [.] ( 31 | echo ERROR: 1 arg is the FPC version 32 | goto END 33 | ) 34 | set myFPC=%myROOT%\compilers\%myOPTVERSION% 35 | if not exist %myFPC% ( 36 | echo ERROR: Version "%myOPTVERSION%" does not exists 37 | goto END 38 | ) 39 | 40 | rem === DEFAULT VALUES === 41 | if [%myOPTPLATFORM%.] equ [.] ( 42 | set myOPTPLATFORM=%cPLATFORM_32% 43 | ) 44 | 45 | rem === SET PATH AND OPTIONS === 46 | if %myOPTPLATFORM% equ %cPLATFORM_32% ( 47 | set myTARGET=i386-win32 48 | set myCOMMONOPTS=%myCOMMONOPTS% OS_TARGET=win32 CPU_TARGET=i386 DATA2INC=%myFPC%\utils\data2inc.exe 49 | ) 50 | if %myOPTPLATFORM% equ %cPLATFORM_64% ( 51 | set myTARGET=x86_64-win64 52 | set myCOMMONOPTS=%myCOMMONOPTS% OS_TARGET=win64 CPU_TARGET=x86_64 53 | ) 54 | 55 | set myBINUTILS_PATH=%myBINUTILS%\%myOPTVERSION%\%myTARGET% 56 | 57 | if %myTARGET% equ none ( 58 | echo ERROR: Plataform "%myOPTPLATFORM%" does not exists 59 | echo OPTIONS: %cPLATFORM_32% %cPLATFORM_64% 60 | goto END 61 | ) 62 | 63 | rem === INVARIANT PART === 64 | set PATH=%myBINUTILS_PATH%;%myFPC%\bin\%myTARGET% 65 | rem goto package 66 | cd %myPKGPATH% 67 | 68 | make clean all install %myCOMMONOPTS% INSTALL_PREFIX=%myFPC% PP=%myFPC%\bin\%myTARGET%\fpc.exe 69 | echo .................................... 70 | echo DONE 71 | :END -------------------------------------------------------------------------------- /fpc-make.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | cd .. 4 | 5 | set myROOT=%cd% 6 | set myOPTVERSION=%1 7 | 8 | rem === DEFINE ==== 9 | set cFPC_STABLE_VER=3.0.0 10 | set myOPTS=-gl 11 | rem -gw2 -godwarfsets --debug info 12 | set myCOMMONOPTS=UPXPROG=echo COPYTREE=echo OPT="%myOPTS%" 13 | 14 | rem === VERIFYING THE ARGUMENTS 15 | if [%myOPTVERSION%.] equ [.] ( 16 | echo ERROR: 1 arg is the FPC version 17 | goto END 18 | ) 19 | set myFPC=%myROOT%\compilers\%myOPTVERSION% 20 | if not exist %myFPC% ( 21 | echo ERROR: Version "%myOPTVERSION%" does not exists 22 | goto END 23 | ) 24 | 25 | rem === SET PATH AND OPTIONS === 26 | set myTARGET=i386-win32 27 | set myPPC_EXE=ppc386.exe 28 | set myCOMMONOPTS=%myCOMMONOPTS% OS_TARGET=win32 CPU_TARGET=i386 DATA2INC=%myROOT%\compilers\%cFPC_STABLE_VER%\utils\data2inc.exe 29 | 30 | rem === INVARIANT PART === 31 | set myFPC_STABLE_BIN_PATH=%myROOT%\compilers\%cFPC_STABLE_VER%\bin 32 | set myBINUTILS_PATH=%myROOT%\binutils\%cFPC_STABLE_VER%\%myTARGET% 33 | set myCOMMONOPTS=%myCOMMONOPTS% INSTALL_PREFIX=%myFPC% PP=%myFPC_STABLE_BIN_PATH%\%myTARGET%\%myPPC_EXE% 34 | 35 | set PATH=%myBINUTILS_PATH%;%myFPC%\bin\%myTARGET% 36 | cd %myFPC% 37 | 38 | del /s /f /q *.ppu 39 | rem del /s /f /q *.o 40 | del /s /f /q *.a 41 | rmdir units /s /q 42 | 43 | echo --------------------------------------------------- 44 | echo "Running make install" 45 | echo --------------------------------------------------- 46 | 47 | make distclean 48 | make all & make install %myCOMMONOPTS% 49 | fpcmkcfg -d basepath=%myFPC% -o %myFPC%\bin\%myTARGET%\fpc.cfg 50 | fpc -iV 51 | 52 | pause 53 | 54 | echo --------------------------------------------------- 55 | echo "Running make crossinstall" 56 | echo --------------------------------------------------- 57 | 58 | make crossinstall OS_TARGET=win64 CPU_TARGET=x86_64 INSTALL_PREFIX=%myFPC% 59 | 60 | cd %myROOT% 61 | 62 | echo ================================================ 63 | echo DONE 64 | :END -------------------------------------------------------------------------------- /laz-build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set laz_ver=%1 4 | 5 | cd .. 6 | 7 | set root=%cd% 8 | set laz_path=%root%\ide\lazarus\%laz_ver% 9 | 10 | cd %laz_path% 11 | 12 | lazbuild.exe --build-ide= --pcp=..\%laz_ver%-config 13 | -------------------------------------------------------------------------------- /laz-make.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set fpc_ver=%1 4 | set laz_ver=%2 5 | 6 | cd .. 7 | 8 | set root=%cd% 9 | set fpc_path=%root%\compilers\%fpc_ver% 10 | set laz_path=%root%\ide\lazarus\%laz_ver% 11 | set binutils_path=%root%\binutils\%fpc_ver% 12 | set PATH=%binutils_path%\i386-win32;%fpc_path%\bin\i386-win32 13 | 14 | cd %laz_path% 15 | 16 | make clean all OPT="-glw2" 17 | -------------------------------------------------------------------------------- /laz-start.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set _LOG=log 4 | 5 | cd .. 6 | 7 | set root=%cd% 8 | set laz_ver=%1 9 | set log=%2 10 | set laz_path=%root%\ide\lazarus\%laz_ver% 11 | set opt=--pcp=%laz_path%-config --lazarus-dir=%laz_path% 12 | 13 | if [%log%] equ [%_LOG%] ( 14 | del %laz_path%\debuglog.txt 15 | set opt=%opt% --debug-log=debuglog.txt 16 | ) 17 | 18 | 19 | cd \ 20 | 21 | rem if /i %cd% equ W:\ ( 22 | cd %laz_path% 23 | start startlazarus %opt% 24 | rem ) else ( 25 | rem echo "invalid driver" 26 | rem pause 27 | rem ) 28 | 29 | exit -------------------------------------------------------------------------------- /mse-make.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | cd .. 4 | 5 | set fpc_ver=3.0.4 6 | 7 | set root=%cd% 8 | set fpc=%root%\compilers\%fpc_ver% 9 | set PATH=%fpc%\bin\i386-win32 10 | 11 | cd ide\mse 12 | del /s /f /q *.ppu 13 | del /s /f /q *.o 14 | del /s /f /q *.a 15 | 16 | set mse=%cd% 17 | cd %mse% 18 | 19 | ppc386 -Xs -O- -B apps\ide\mseide.pas -Fulib\common\* -Fulib\common\kernel\windows -FE%mse% -FUunits\i386-win32 -omseide.exe 20 | -------------------------------------------------------------------------------- /mse-start.bat: -------------------------------------------------------------------------------- 1 | 2 | cd .. 3 | 4 | set fpc_ver=3.0.2 5 | 6 | set root=%cd% 7 | set fpc=%myroot%/compilers/%fpc_ver%/ 8 | set binutils=%root%/binutils/%fpc_ver%/i386-win32/gdb.exe 9 | set PATH=%fpc%\bin\i386-win32 10 | 11 | cd ide\mse 12 | 13 | start mseide.exe --macrodef=FPCDIR,%fpc%,FPCDIRLIB,{$FPCDIR}/bin/i386-win32/,COMPILER,${FPCDIR}/bin/i386-win32/ppc386.exe,DEBUGGER,%binutils% --------------------------------------------------------------------------------