OK, Thanks for your help. For futrure users, here is my solution...
function CPUcount: integer;
//returns number of CPUs for MacOSX computer
//example - will return 4 if the computer has two dual core CPUs
//requires Process in Uses Clause
//see
http://wiki.lazarus.freepascal.org/Executing_External_Programsvar
lProcess: TProcess;
lLen,lPos: integer;
lStr: string;
lStringList: TStringList;
begin
Result := 1;
lProcess := TProcess.Create(nil);
lStringList := TStringList.Create;
lProcess.CommandLine := 'sysctl hw.ncpu';
lProcess.Options := lProcess.Options + [poWaitOnExit, poUsePipes];
lProcess.Execute;
lStringList.LoadFromStream(lProcess.Output);
lLen := length(lStringList.Text);
if lLen > 0 then begin
lStr := '';
for lPos := 1 to lLen do
if lStringList.Text[lPos] in ['0'..'9'] then
lStr := lStr + lStringList.Text[lPos];
if length(lStr) > 0 then
result := strtoint(lStr);
end;//if at least one character returned
lStringList.Free;
lProcess.Free;
end;