templ = EvalToolParameter("Header");
if(templ.IsNull()) return line;
-
Params().Set("%Target", TargetName()->ToCString());
return line;
}
- Params().Set("%Target", TargetName()->ToCString());
-
line->AssignCat(Params().Eval(templ->ToCString()));
return line;
}
if(!IsLoaded()) Load();
Shell()->ClearOutput();
-
//
//// Calcul de la liste des objets
//
objstream.close();
Params().Set("%LD_ObjList", objlistpath->Name()->ToCString());
-#ifndef LIN
- Handle( TCollection_HAsciiString ) args[ 4 ];
+#if defined( LIN ) || defined( SOLARIS )
+ Handle( TCollection_HAsciiString ) args[ 10 ];
#else
- Handle( TCollection_HAsciiString ) args[ 11 ];
+ Handle( TCollection_HAsciiString ) args[ 4 ];
#endif // LIN
args[ 0 ] = EvalHeader ();
Shell () -> Send ( args[ 0 ] );
Shell () -> Send ( args[ 1 ] );
Shell () -> Send ( args[ 2 ] );
-#ifndef LIN
+#if !defined( LIN ) && !defined( SOLARIS )
Shell () -> Execute ( args[ 3 ] );
} else {
} // end if
- Handle( TCollection_HAsciiString ) target = Params ().Value ( "%Target", 0 );
-
+ Handle( TCollection_HAsciiString ) target = Params ().Value ( "%Target", 1 );
+#if defined( LIN )
static Handle( TCollection_HAsciiString ) skipStr =
new TCollection_HAsciiString ( "/usr/bin/ld: warning: cannot find entry symbol _start" );
-
+#elif defined ( SOLARIS )
+ static Handle( TCollection_HAsciiString ) skipStr =
+ new TCollection_HAsciiString ( "ld: fatal: Symbol referencing errors." );
+ static Handle( TCollection_HAsciiString ) skipStr1 =
+ new TCollection_HAsciiString ( "/crt1.o" );
+#endif // LIN || SOLARIS
Handle( TCollection_HAsciiString ) uType = Params ().Value ( "%UnitType", 0 );
if ( !uType.IsNull () &&
)
) {
+ static Handle( TCollection_HAsciiString ) colon =
+ new TCollection_HAsciiString ( ":" );
+
+ Handle( TCollection_HAsciiString ) ld_path =
+ new TCollection_HAsciiString ();
+
+ for ( i = 1; i <= mylibpathes -> Length (); ++i ) {
+
+ ld_path -> AssignCat (
+ mylibpathes -> Value ( i ) -> Name () -> ToCString ()
+ );
+ ld_path -> AssignCat ( colon );
+
+ } // end for
+
+ Params ().Set ( "%LD_LIBRARY_PATH", ld_path -> ToCString () );
+
Handle( TCollection_HAsciiString ) paramH = EvalToolTemplate ( "CheckUndefHeader" );
Handle( TCollection_HAsciiString ) paramF = EvalToolTemplate ( "CheckUndefFooter" );
) {
args[ 4 ] = paramH;
- args[ 5 ] = EvalLibSearchDirectives ();
- args[ 6 ] = EvalDatabaseDirectives ();
- args[ 7 ] = target;
- args[ 8 ] = EvalLibraryList ();
- args[ 9 ] = paramF;
+ args[ 5 ] = EvalDatabaseDirectives ();
+ args[ 6 ] = target;
+ args[ 7 ] = EvalLibraryList ();
+ args[ 8 ] = paramF;
if ( !g_fCompOrLnk ) {
Shell () -> Send ( args[ 6 ] );
Shell () -> Send ( args[ 7 ] );
Shell () -> Send ( args[ 8 ] );
- Shell () -> Send ( args[ 9 ] );
} // end if
} // end if
- args[ 10 ] = new TCollection_HAsciiString ( "\n" );
+ args[ 9 ] = new TCollection_HAsciiString ( "\n" );
if ( !g_fCompOrLnk )
- Shell () -> Execute ( args[ 10 ] );
+ Shell () -> Execute ( args[ 9 ] );
else {
-#endif // LIN
+#endif // LIN || SOLARIS
-// OSD_File f ( OSD_Path ( Params ().Value ( "%LnkFileName" ) -> String () ) );
- OSD_Path aPath = OSD_Path ( Params ().Value ( "%LnkFileName" ) -> String () ) ;
- OSD_File f ( aPath );
+ OSD_Path p = OSD_Path ( Params ().Value ( "%LnkFileName" ) -> String () );
+ OSD_File f ( p );
f.Build ( OSD_WriteOnly, OSD_Protection () );
if ( !f.Failed () ) {
-#ifndef LIN
+#if !defined( LIN ) && !defined( SOLARIS )
for ( i = 0; i < 4; ++i ) {
#else
- for ( i = 0; i < 11; ++i ) {
-#endif // LIN
- if ( !args[ i ].IsNull () )
+// for ( i = 0; i < 11; ++i ) { JR :
+ for ( i = 0; i < 10; ++i ) {
+#endif // LIN || SOLARIS
+ if ( !args[ i ].IsNull () && !args[ i ] -> String ().IsEmpty () )
f.Write ( args[ i ] -> String (), args[ i ] -> Length () );
} // end for
-#ifndef LIN
+#if !defined( LIN ) && !defined( SOLARIS )
f.Write ( "\n", 1 );
#endif // LIN
f.Close ();
ErrorMsg.DontPrintHeader();
for(Standard_Integer i=1; i<= errmsgs->Length(); i++)
{
-#ifdef LIN
+#if defined( LIN ) || defined( SOLARIS )
if ( errmsgs -> Value ( i ) -> Search ( skipStr ) == 1 ) continue;
-#endif // LIN
+#endif // LIN || SOLARIS
+#ifdef SOLARIS
+ if ( errmsgs -> Value ( i ) -> Search ( skipStr1 ) ==
+ errmsgs -> Value ( i ) -> Length () - skipStr1 -> Length () + 1
+ ) continue;
+#endif // SOLARIS
ErrorMsg << "WOKBuilder_Linker::Execute" << errmsgs->Value(i) << endm;
}
if(ph) ErrorMsg.DoPrintHeader();
Standard_Boolean ph = InfoMsg.PrintHeader();
InfoMsg.DontPrintHeader();
errmsgs = Shell()->Errors();
+#ifdef SOLARIS
+ if ( !( errmsgs -> Length () == 4 &&
+ errmsgs -> Value ( 3 ) -> Search ( skipStr1 ) ==
+ errmsgs -> Value ( 3 ) -> Length () - skipStr1 -> Length () + 1
+ )
+ )
+#endif // SOLARIS
for(Standard_Integer i=1; i<= errmsgs->Length(); i++)
{
-#ifdef LIN
+#if defined( LIN ) || defined( SOLARIS )
if ( errmsgs -> Value ( i ) -> Search ( skipStr ) == 1 ) continue;
-#endif // LIN
+#endif // LIN || SOLARIS
+#ifdef SOLARIS
+ if ( errmsgs -> Value ( i ) -> Search ( skipStr1 ) ==
+ errmsgs -> Value ( i ) -> Length () - skipStr1 -> Length () + 1
+ ) continue;
+#endif // SOLARIS
InfoMsg << "WOKBuilder_Linker::Execute" << errmsgs->Value(i) << endm;
}
if(ph) InfoMsg.DoPrintHeader();