IDE: auto creating bundle for IDE

git-svn-id: trunk@16473 -
This commit is contained in:
mattias 2008-09-07 21:17:23 +00:00
parent c779f2c362
commit d09f2db292
2 changed files with 35 additions and 10 deletions

View File

@ -45,11 +45,11 @@ uses
Graphics, GraphType, StdCtrls, ExtCtrls, Buttons, FileUtil, Dialogs,
LResources, Laz_XMLCfg, InterfaceBase, Themes, ComCtrls,
LazarusIDEStrConsts, TransferMacros, LazConf, IDEProcs, DialogProcs,
IDEWindowIntf, InputHistory, ExtToolDialog, ExtToolEditDlg,
IDEWindowIntf, IDEMsgIntf, InputHistory, ExtToolDialog, ExtToolEditDlg,
{$IFDEF win32}
EnvironmentOpts, CodeToolManager, // added for windres workaround
{$ENDIF}
CompilerOptions;
ApplicationBundle, CompilerOptions;
type
@ -507,6 +507,8 @@ var
NewTargetOS: String;
NewTargetCPU: String;
CrossCompiling: Boolean;
CurTargetFilename: String;
BundleDir: String;
begin
Result:=mrOk;
CurItem:=Options.Items[ItemIndex];
@ -588,7 +590,7 @@ begin
Result:=ForceDirectoryInteractive(NewTargetDirectory,[]);
if Result<>mrOk then exit;
if OSLocksExecutables and not CrossCompiling then begin
// Allow for the case where this correspnds to the current executable
// Allow for the case where this corresponds to the current executable
NewTargetFilename:='lazarus'+GetExecutableExt(NewTargetOS);
if FileExistsUTF8(AppendPathDelim(NewTargetDirectory)+NewTargetFilename) then
NewTargetFilename:='lazarus.new'+GetExecutableExt(NewTargetOS)
@ -647,6 +649,36 @@ begin
end;
end;
// create apple bundle if needed
//debugln(['CreateBuildLazarusOptions NewTargetDirectory=',NewTargetDirectory]);
if (Options.LCLPlatform in [lpCarbon,lpCocoa])
and (NewTargetDirectory<>'')
and (DirectoryIsWritableCached(NewTargetDirectory)) then begin
CurTargetFilename:=NewTargetFilename;
if CurTargetFilename='' then
CurTargetFilename:='lazarus'+GetExecutableExt(NewTargetOS);
if not FilenameIsAbsolute(CurTargetFilename) then
CurTargetFilename:=NewTargetDirectory+PathDelim+CurTargetFilename;
BundleDir:=ChangeFileExt(CurTargetFilename,'.app');
//debugln(['CreateBuildLazarusOptions checking bundle ',BundleDir]);
if not FileExistsCached(BundleDir) then begin
//debugln(['CreateBuildLazarusOptions CurTargetFilename=',CurTargetFilename]);
Result:=CreateApplicationBundle(CurTargetFilename, 'Lazarus');
if not (Result in [mrOk,mrIgnore]) then begin
debugln(['CreateBuildLazarusOptions CreateApplicationBundle failed']);
IDEMessagesWindow.AddMsg('Error: failed to create application bundle '+BundleDir,NewTargetDirectory,-1);
exit;
end;
//debugln(['CreateBuildLazarusOptions BundleDir exists: ',FileExists(BundleDir)]);
Result:=CreateAppBundleSymbolicLink(CurTargetFilename);
if not (Result in [mrOk,mrIgnore]) then begin
debugln(['CreateBuildLazarusOptions CreateAppBundleSymbolicLink failed']);
IDEMessagesWindow.AddMsg('Error: failed to create application bundle symlink to '+CurTargetFilename,NewTargetDirectory,-1);
exit;
end;
end;
end;
if NewUnitDirectory<>'' then
// FPC interpretes '\ ' as an escape for a space in a path,
// so make sure the directory doesn't end with the path delimeter.

View File

@ -88,8 +88,6 @@ if [ -z "$COMPILER" ]; then
COMPILER=$(which fpc)
fi
FPCARCH=$($COMPILER -iSP)
#~/fpc/bin/$PPCARCH
#CROSSCOMPILER=~/fpc/bin/fpc
FPCVERSION=$($COMPILER -iV)
BUILDDIR=~/tmp/buildlaz
ROOTDIR=$BUILDDIR/Root
@ -116,9 +114,6 @@ if [ ! -e tools/svn2revisioninc ]; then
fi
./tools/svn2revisioninc $LAZSOURCEDIR ide/revision.inc
#export FPCDIR=~/fpc/lib/fpc/$FPCVERSION
make bigide PP=$COMPILER USESVN2REVISIONINC=0
make lazbuilder PP=$COMPILER
@ -147,8 +142,6 @@ find $BUILDDIR -name '.DS_Store' -exec rm -rf {} \; || true
# create symlinks
mkdir -p $ROOTDIR/usr/bin
cd $ROOTDIR/usr/bin
#does not work: ln -s /Developer/lazarus/lazarus.app/Contents/MacOS/lazarus lazarus
#does not work: ln -s /Developer/lazarus/lazarus.app/Contents/MacOS/startlazarus startlazarus
ln -s /Developer/lazarus/lazbuild lazbuild
cp $TEMPLATEDIR/uninstall.sh $ROOTDIR/Developer/lazarus/