Scusa. Non ho capito dove hai trovato problemi.
Da quello che ho capito, bisogna compilare pas2js dalla versione freepascal 3.0.4, la 3.0.2 non ha una versione funzionante funzionante.
In più dalla versione 3.0.2 alla 3.0.4 hanno cambiato parecchio alcune unit.
Se sei riuscito ad arrivare in fondo alla compilazione sei a posto. Non sei incappato in versioni incrociate dei file.
C'è il file di configurazione base con i riferimenti al javascript "rtl".
#
# Config file for pas2js compiler
#
# not yet implemented: -d is the same as #DEFINE
# not yet implemented: -u is the same as #UNDEF
# Write always a nice logo
-l
# Display Hints, Warnings and Notes
-vwnh
# If you don't want so much verbosity use
#-vw
-Fu$CfgDir/../rtl
-Fu$CfgDir/../packages/fcl-base
-Fu$CfgDir/../packages/fcl-db
-Fu$CfgDir/../packages/fpcunit
#IFDEF nodejs
-Jirtl.js
#ENDIF
# end.
Credo che non sia aggiornatissimo : # not yet implemented: -u is the same as #UNDEF
Ma controllando il sorgenti (pas2jscompiler.pp) verifica -u e lancia un Remove tra le "macro"/"define".
Se il problema è il lancio per la traduzione da .pas a .js prova a forzare l'uso del file di configurazione con @pas2js.cfg. Forse per qualche motivo non lo considera o non lo trova come default ( DefaultConfigFile = 'pas2js.cfg'; sempre in pas2jscompiler.pp)
Fammi sapere :)
Stilgar
Ah ... il problema è con l'integrazione in Lazarus allora.
Ho aggiornato il trunk lazarus :)
Ho guardato il codice.
Da quello che capisco usa la macro ide "$MakeExe".
const
PJSDefaultCompiler = '$MakeExe(IDE,pas2js)';
Guardando il bind della macro alla funzione:
GlobalMacroList.Add(TTransferMacro.Create('MakeExe','',
lisMakeExe,@MacroFuncMakeExe,[]));
function TBuildManager.MacroFuncMakeExe(const Filename: string;
const Data: PtrInt; var Abort: boolean): string;
var
CommaPos: SizeInt;
CurTargetOS: String;
CurFilename: String;
begin
CurFilename:=Filename;
CommaPos:=System.Pos(',',CurFilename);
CurTargetOS:='';
if CommaPos>1 then begin
// makeexe(targetos,filename)
CurTargetOS:=UTF8LowerCase(LeftStr(CurFilename,CommaPos-1));
if IsValidIdent(CurTargetOS) then begin
if CurTargetOS='ide' then
CurTargetOS:=GetCompiledTargetOS;
System.Delete(CurFilename,1,CommaPos);
end;
end;
if CurTargetOS='' then
CurTargetOS:=GetTargetOS;
Result:=MakeStandardExeFilename(CurTargetOS,CurFilename);
//DebugLn('TMainIDE.MacroFuncMakeExe A ',Filename,' ',Result);
end;
function MakeStandardExeFilename(TargetOS, Filename: string): string;
var
StdExt: String;
begin
Result:=Filename;
if TargetOS='' then
TargetOS:=GetCompiledTargetOS;
StdExt:=GetExecutableExt(TargetOS);
if StdExt='' then exit;
Result:=ChangeFileExt(Result,StdExt);
end;
Quindi a occhio e croce per default viene cercato pas2js nella cartella dove risiede startlazarus.
Se vuoi "forzare" la cartella, secondo me dovresti cercare nell'xml che descrive il progetto (Il file LPI per intenderci)
KeyCompiler = 'compiler/value';
Usa questa chiave per cercare i valori nella configurazione del progetto, quindi credo, verranno accodate alla fine dell'xml (Per un progetto a riga di comando,trovo in ordine : ProjectOptions/CompilerOptions/Debugging).
Questa strada è suggerita partendo dall'assunto che hai già provato a controllare se nelle "Opzioni Progetto" potevi imposare un path "custom" ma non lo hai trovato.