123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- {$ifndef ALLPACKAGES}
- {$mode objfpc}{$H+}
- program fpmake;
- uses {$ifdef unix}cthreads,{$endif} sysutils, classes, fpmkunit;
- {$ENDIF ALLPACKAGES}
- Type
- THackPackage = class(TPackage)
- property Dictionary;
- end;
- procedure BeforeInstall_LibPipeWire(Sender: TObject);
- Var
- P : TPackage;
- lInstDir,lDest : string;
- begin
- P:=Sender as TPackage;
- lDest:=P.GetUnitsOutputDir(Defaults.BuildTarget);
- if P.Directory<>'' then
- lDest:=IncludeTrailingPathDelimiter(P.Directory)+lDest;
- lDest:=IncludeTrailingPathDelimiter(lDest)+'spabridge.o';
- if FileExists(lDest) then
- begin
- // no prefix this time
- lDest:=P.GetUnitsOutputDir(Defaults.BuildTarget);
- lDest:=IncludeTrailingPathDelimiter(lDest)+'spabridge.o';
- // not clear why packagename does not exist at this point?
- THackPackage(P).Dictionary.AddVariable('packagename',P.Name);
- Writeln('Defaults ',Defaults.UnitInstallDir);
- lInstDir:=THackPackage(P).Dictionary.ReplaceStrings(Defaults.UnitInstallDir);
- P.InstallFiles.Add(lDest,lInstDir);
- end;
- end;
- procedure BeforeCompile_LibPipeWire(Sender: TObject);
- var
- lGCC : string;
- lArgs : TStrings;
- lDest,lSrc : String;
- P : TPackage;
- begin
- P:=Sender as TPackage;
- lDest:=P.GetUnitsOutputDir(Defaults.BuildTarget);
- if P.Directory<>'' then
- begin
- lSrc:=IncludeTrailingPathDelimiter(P.Directory);
- lDest:=IncludeTrailingPathDelimiter(P.Directory)+lDest;
- end
- else
- lSrc:=IncludeTrailingPathDelimiter(Installer.BuildEngine.StartDir);
- lSrc:=IncludeTrailingPathDelimiter(LSrc+'src')+'spabridge.c';
- lDest:=IncludeTrailingPathDelimiter(lDest)+'spabridge.o';
- lgcc:=ExeSearch('gcc',GetEnvironmentVariable('PATH'));
- lArgs:=TStringList.Create();
- try
- lArgs.Add('-c');
- lArgs.Add('-I/usr/include/spa-0.2/');
- lArgs.Add(lSrc);
- lArgs.Add('-o'+lDest);
- try
- Installer.BuildEngine.ExecuteCommand(lgcc,lArgs);
- except
- On E : Exception do
- Installer.BuildEngine.Log(vlWarning,'Could not compile spabridge.c, it will need to be compiled manually. install libpipewire-0.3-dev package');
- end;
- finally
- lArgs.Free;
- end;
- end;
- procedure add_libpipewire(const ADirectory: string);
- Var
- P : TPackage;
- T : TTarget;
- begin
- With Installer do
- begin
- P:=AddPackage('libpipewire');
- P.ShortName:='libpw';
- P.Directory:=ADirectory;
- P.Version:='3.3.1';
- P.SourcePath.Add('src');
- P.IncludePath.Add('src');
- { only enable for darwin after testing }
- P.OSes := [linux];
- if Defaults.CPU=jvm then
- P.OSes := [];
- P.SupportBuildModes:= [bmOneByOne];
- P.BeforeCompileProc:=@BeforeCompile_LibPipeWire;
- P.BeforeInstallProc:=@BeforeInstall_LibPipeWire;
- T:=P.Targets.AddUnit('libspa.pp');
- With T.Dependencies do
- begin
- AddInclude('spabridge.inc');
- end;
- T:=P.Targets.AddUnit('libpipewire.pp');
- with T.Dependencies do
- begin
- AddUnit('libspa');
- AddInclude('array.inc');
- AddInclude('permission.inc');
- AddInclude('client.inc');
- AddInclude('loop.inc');
- AddInclude('properties.inc');
- AddInclude('work_queue.inc');
- AddInclude('context.inc');
- AddInclude('device.inc');
- AddInclude('mem.inc');
- AddInclude('buffers.inc');
- AddInclude('core.inc');
- AddInclude('factory.inc');
- AddInclude('keys.inc');
- AddInclude('log.inc');
- AddInclude('link.inc');
- AddInclude('main_loop.inc');
- AddInclude('map.inc');
- AddInclude('module.inc');
- AddInclude('node.inc');
- AddInclude('protocol.inc');
- AddInclude('proxy.inc');
- AddInclude('port.inc');
- AddInclude('stream.inc');
- AddInclude('filter.inc');
- AddInclude('data_loop.inc');
- AddInclude('type.inc');
- AddInclude('utils.inc');
- AddInclude('version.inc');
- AddInclude('thread_loop.inc');
- AddInclude('core_impl.inc');
- AddInclude('loop_impl.inc');
- end;
- P.NamespaceMap:='namespaces.lst';
- end;
- end;
- {$ifndef ALLPACKAGES}
- begin
- add_libpipewire('');
- Installer.Run;
- end.
- {$endif ALLPACKAGES}
|