Free Pascal for Xcode Integration
Kit for Xcode 1.5
Contents
** READ THIS
FIRST **
IMPORTANT NOTE: This Integration
Kit only works for Xcode 1.1 thru 1.5. If you are using Xcode 2.0 or later, you
need to download the latest kit (and latest FPC) available at the FreePascal downloads page. This page still serves to provide
background on the Integration Kit, but be sure to download the correct kit to work
with your version of Xcode! |
**
READ THIS FIRST **
Introduction
Xcode
is an integrated development environment which is part of the Apple developer tools,
and it is included for free with Mac OS X 10.3.
Xcode is ready for the development
in Assembler, C, C++, Objective-C, Java and AppleScript out of the box, that means
it comes with a whole bunch of file and build specifications for these languages.
Please note that the corresponding compilers are pure unix command line programs
which are invoked by the way of sophisticated build scripts.
However, Xcode is NOT limited
to the languages mentioned above. It already supports source code colouring for several
other languages - among these are Pascal and FORTRAN. Although, there are some steps
left to fully integrate one of these other languages.
Requirements
This Integration Kit contains
all the specifications and templates which are necessary to begin development in
Free Pascal together with Xcode. It does neither contain Free Pascal nor Apples Xcode
and Apples Universal PInterfaces.
Xcode
and Mac OS X 10.3 are
required. The Integration Kit works best with the latest Xcode 1.5. Project Builder
at Mac OS X 10.2/10.1 is not compatible with the Integration Kit
The latest snapshot of FPC is currently 2.0.0, and it comes as a .dmg-diskimage containing
an installer package. However, there is much development going on for Free Pascal for
Mac OS X. So, if you
want to live at the cutting edge then fetch your copy from CVS - it is not too difficult!
If you are interested in CVS versions then please jump to the FPC/CVS-Quickstart section of this document.
Main Features
The New Project... command
of the File menu of Xcode brings up a list of different project types. After
installation of the templates from the integration package the list contains a Pascal
Tool, a Pascal CGI, and a Pascal Carbon Application project template
in the category Free Pascal.
The Pascal Tool template
sets up a simple command line "Hello, World!" project.
The Pascal CGI template
sets up a more sophisticated project. This shows how Pascal units fit into Xcode
and also how to copy automatically the finished products to certain places - in this
case to /Library/WebServer/CGI-Executables/ and to /Library/WebServer/Documents/. If Apache is set up correctly and
running then after building the CGI you can test it directly by directing your web
browser to http://localhost/«PROJECTNAME».html.
The Pascal Carbon Application
template sets up a NIB based Carbon Application, which requires a patched version
of Apples Universal PInterfaces. It links against the Carbon Framework and builds
and runs out of the box.

Step 0 - If not already done,
install Xcode, Free Pascal, and Apples Universal PInterfaces
- Install the Apple developer
tools. If you got a new Mac with a pristine Mac OS X 10.3.x installation then the
installer package is already at your hard disk at /Applications/Installers.
- If you purchased the Mac OS
X 10.3 upgrade CDs then there should be also a CD called Mac OS X Xcode tools.
- Otherwise, download and install
the latest and the greatest package (350+ MB) from the
Apple
Developer Connection Member Site.
- Download and install the latest
FPC for Mac OS X package from FreePascal.org
- Download Apples Universal
Interfaces
- Install the FreePascal for Xcode Integration Kit
Only, if you want to learn
more about the secrets of Free Pascal for Xcode then follow the remaining steps.
Step 1 - Update the Pascal
Source File Specification
Xcode looks at the extension
of a given file to learn which sort of source code it contains. It knows already,
that files ending in .pas contain Pascal source code. In order to tell Xcode that
the extensions .p, .pp and .inc also belong to Pascal, the standard specification
must be overwritten. For this, open the following file in a text editor:
/System/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/Resources/Standard
file types.pbfilespec
Copy and paste the Pascal part
to a new empty text file. At the first line add a comment with the description. In
the section Extensions add ", p, pp, inc". And finally enclose everything
between {} in (). After this, the text should look like this:
// Pascal Source
File Specification
(
{
Identifier = sourcecode.pascal;
BasedOn = sourcecode;
Name = "Pascal source files";
Extensions = (pas, p, pp, inc);
ComputerLanguage = pascal;
AppliesToBuildRules = yes;
}
)
Save this file as PascalSource.pbfilespec into the following directory:
/Library/Application
Support/Apple/Developer Tools/Specifications/
If the directory Specifications
does not exist already then create it before.
Step 2 - Update the Pascal
Language Specification
Xcode provides already syntax
colouring for Pascal source fles. The standard language specification contains the
directive CaseSensitive
= NO which seems
to be correct since Pascal is not a case sensitive language. A list of lower case
keywords follows and because of the directive the Xcode editor should recognize for
example and,
AND, aNd etc. all
as Pascal keywords - but this is not the case. It only colours lower case keywords
in pascal source code properly. Because of this behaviour it is best to overwrite
also the standard language specification. For this, open the following file in a
text editor:
/System/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/Resources/Built-in
languages.pblangspec
Copy and paste the Pascal part
to a new empty text file. Duplicate each lowercase keyword with its uppercase pendant.
After this, the text should look like this:
// Pascal Language
Specification
(
{
Identifier = pascal;
Name = "Pascal";
Description = "Pascal";
BasedOn = "pbx_root_language";
SourceScannerClassName = PBXPascalSourceScanner;
SupportsIndentation = NO;
Indentation = {
};
SyntaxColoring = {
CaseSensitive = NO;
UnicodeSymbols = NO;
IndexedSymbols = YES;
CommentsCanBeNested = YES;
String = (
( "'",
"'" )
);
MultiLineComment = (
( "{",
"}" ),
( "(*",
"*)" )
);
SingleLineComment = ( "//"
);
Keywords = (
"and","AND",
"array","ARRAY",
"begin","BEGIN",
"case","CASE",
"const","CONST",
"div","DIV",
"do","DO",
"downto","DOWNTO",
"else","ELSE",
"end","END",
"file","FILE",
"for","FOR",
"function","FUNCTION",
"goto","GOTO",
"if","IF",
"implementation","IMPLEMENTATION",
"in","IN",
"inherited","INHERITED",
"inline","INLINE",
"interface","INTERFACE",
"label","LABEL",
"mod","MOD",
"nil","NIL",
"not","NOT",
"object","OBJECT",
"of","OF",
"or","OR",
"otherwise","OTHERWISE",
"packed","PACKED",
"procedure","PROCEDURE",
"program","PROGRAM",
"record","RECORD",
"repeat","REPEAT",
"set","SET",
"string","STRING",
"then","THEN",
"to","TO",
"type","TYPE",
"unit","UNIT",
"until","UNTIL",
"uses","USES",
"var","VAR",
"while","WHILE",
"with","WITH"
);
AltKeywords = (
"Boolean","boolean",
"Byte","byte",
"Char","char",
"Integer","integer",
"Longint","longint",
"Real","real",
"Single","single",
"Double","double",
"Extended","extended",
"Pointer","pointer",
"PChar","pchar",
"extended80",
"extended96",
"Fixed",
"Fract",
"Handle",
"OSErr",
"OSType",
"Point",
"ProcPtr",
"Ptr",
"RGBColor",
"Rect",
"ResType",
"SignedByte",
"StringPtr",
"Str255",
"Str31",
"Str63",
"UniversalProcPtr"
);
};
}
)
Save this file as PascalSource.pblangspec into the following directory:
/Library/Application
Support/Apple/Developer Tools/Specifications/
Step 3 - Create Free Pascal
Project Templates
- create a new directory Pascal
in the following driectory
/Library/Application
Support/Apple/Developer Tools/Project Templates/
- locate the Standard Tool
template directory at the following path
/Library/Application
Support/Apple/Developer Tools/Project Templates/Command Line Utility/Standard Tool
and put a COPY of the whole directory into the newly created Pascal
directory.
- rename the copy to Pascal Tool
and open that directory.
- rename StandardTool.1
to PascalTool.1.
- rename StandardTool.pbproj to PascalTool.pbproj.
- open PascalTool.pbproj with Xcode.
- open the information for main.c,
for this select main.c from the file list and choose
<Get Info> from the <Projekt> menu.
- in the information window
rename main.c to «PROJECTNAME».pas - note that by this way not only the
file name but also all references to it in the project are changed.
- change the file encoding to
<Western (Mac OS Roman)>, confirm with <Convert>, and close the information
window.
- replace the contents of the
file with a small working pascal program, for example:
program «PROJECTNAME»;
var
i : integer;
begin
for i := 1 to 5 do
writeln('Hello, World!');
end.
- safe the file using <cmd>+<S>.
- expand the section Targets
at the left side and select the target «PROJECTNAME».
- choose <Get Info> from
the <Projekt> menu.
- open the section <Rules>.
- add a new rule by clicking
at the <+> button at the lower left side of the information window.
- choose <Pascal source files>
from the <Process:> pop-up-menu.
- choose <Custom script:>
from the <using:> pop-up-menu.
- enter the following two lines
into the text field below the <using:> pop-up-menu:
MACOSX_DEPLOYMENT_TARGET="10.3"
/usr/local/bin/ppcppc -g -vr $(INPUT_FILE_NAME) -FEbuild -o«PROJECTNAME»
- enter the following line into
the text field with the label <with output fles:>:
build/«PROJECTNAME»
build/$(INPUT_FILE_BASE).o
- quit Xcode.
- open the Pascal Tool
directory with the Finder.
- rename «PROJECTNAME».pas to PascalTool.pas.
- delete the directory build.
- <ctrl>-click on PascalTool.pbproj and select <Display Package>
from the pop-up menu.
- delete the file yourusername.pbxuser.
- open the file TemplateInfo.plist with a text editor - file encoding
"Western (Mac OS Roman)" - and change its contents to:
{
FilesToRename = {
"PascalTool.pas" = "«PROJECTNAME».pas";
"PascalTool.1" = "«PROJECTNAME».1";
};
FilesToMacroExpand = (
"«PROJECTNAME».pas",
"«PROJECTNAME».1"
);
Description = "This project builds a command-line tool written
in Pascal.";
}
- close the PascalTool.pbproj package.
- close the whole Project Templates directory tree.
- launch Xcode by double clicking
on its application icon - i.e. don´t open a project with Xcode.
- select <New Project...>
from the <File> menu.
- select the just created template
<Pascal Tool> from the section <Pascal> and click on the button <Next>.
- enter a project name.
- choose the project location
and click on the button <Finish>.
- from the <Build> menu
select <Build and Run>.
Appendix A: FPC/CVS-Quickstart
- Make sure you installed everything
according to Step
0 of this tutorial.
- Connect to the internet.
- Open the Terminal application.
- Enter the following command
sequence (see http://www.freepascal.org/develop.html):
Choose the target directory
- if you have a Development directory in your home directory, then why not let the
FPC source tree go into there (however, any other place is OK also):
cd
~/Development
Login to the CVS pserver
cvs
-d :pserver:cvs@cvs.freepascal.org:/FPC/CVS login
The CVS server should answer
with:
(Logging
in to cvs@cvs.freepascal.org)
CVS password:
The password is cvs.
The following command creates a new directory fpc in the working directory and the
latest source tree of Free Pascal is loaded into it:
cvs
-z 3 -d :pserver:cvs@cvs.freepascal.org:/FPC/CVS checkout fpc
Depending on your connection
to the internet this will take a while - so please be patient, and wait until the
prompt reappears in Terminal.
- Set the path to the new installed
compiler. If your shell is bash then use:
export
PATH="$PATH":/usr/local/bin
- for other shells like tcsh
use:
setenv
PATH "$PATH":/usr/local/bin
If you want to use FPC and
its tools quite often from the command line then you might want to add the above
path settings either to your .bashrc or .tcshrc file in order to make it permanent.
- Build and install the compiler
with the following command sequence:
cd
fpc
make all
sudo make install
Please note: this will overwrite
your old version of fpc with the just generated new one. Finally, clean up - after
this you may go and test the new compiler with Xcode.
make
clean
- CVS updates for Free Pascal
can later be obtained by issuing following commands in Terminal. If you did not add
the path to the FPC binaries permanently in your .bashrc or .tcshrc file then set
it first, for bash use:
export
PATH="$PATH":/usr/local/bin
or for tcsh use:
setenv
PATH "$PATH":/usr/local/bin
cd ~/Developer/fpc
make clean
cvs -z 3 update -Pd
make all
sudo make install
make clean
- Frequently FPC happens to
make a version jump. E.g. the current snapshot is version 2.0.0 while the CVS version
is already at 2.0.1. In order to tell fpc to use the latest version you have to manually
set a symbolic link in /usr/local/bin to it.
(please, replace x and y
by the appropriate digits!):
cd
/usr/local/bin
sudo ln -sf /usr/local/lib/fpc/2.x.y/ppcppc ppcppc
If you have problems with the
new version, then you can switch back by changing back the symbolic link to some
older version which resides in your /usr/local/lib/fpc directory
Appendix B: Author
Dr. Rolf Jansen
Stephanienstra§e 19
D-76133 Karlsruhe
(Germany)
RJ
at SurTec.com
Appendix C: Copyright
Notice and Terms of Use
Provided you agree to be bound
by the following terms of use, the author Dr. Rolf Jansen claims NO copyright for
the Free Pascal For Xcode Integration Kit and the information provided on this web
page. This means it is Public Domain to all intelligent beings in the entire universe.
The terms of use are: Use it
at your own risk.
This means, the author Dr. Rolf Jansen cannot be held responsible for anything resulting
from using the Free Pascal For Xcode Integration Kit and the information provided
on this web page.
|