started reworking linker
This commit is contained in:
@@ -123,14 +123,15 @@ protected:
|
||||
virtual void Macro( CUtlVector<CUtlString> &cmd, const char *szName, const char *szValue ) = 0;
|
||||
|
||||
virtual void SetTarget( CUtlVector<CUtlString> &cmd, CProject_t *pProject ) = 0;
|
||||
virtual void CompileFile( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
virtual void SetSysroot( CUtlVector<CUtlString> &cmd, CProject_t *pProject , const char *szSysroot ) = 0;
|
||||
virtual void SetOutputFile( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
|
||||
virtual void CompileFile( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
|
||||
virtual void EnableDebugSymbols( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
virtual void EnablePIE( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
virtual void EnablePIC( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
|
||||
virtual void SetSysroot( CUtlVector<CUtlString> &cmd, CProject_t *pProject , const char *szSysroot ) = 0;
|
||||
};
|
||||
|
||||
extern ICCompiler *ccompiler;
|
||||
|
||||
@@ -94,6 +94,46 @@ public:
|
||||
virtual CUtlString Link( LinkProject_t *pProject ) = 0;
|
||||
|
||||
virtual bool IsLibraryExists( CUtlString szName ) = 0;
|
||||
|
||||
protected:
|
||||
// Link
|
||||
// Returns file name of the
|
||||
CUtlString GetOutputObjectName( LinkProject_t *pProject, unsigned int hash, CUtlString szFileName );
|
||||
|
||||
virtual CUtlVector<CUtlString> BuildLinkCommandLine( LinkProject_t *pProject, const char *szOutputFileName );
|
||||
virtual CUtlVector<CUtlString> BuildArchiveCommandLine( LinkProject_t *pProject, const char *szOutputFileName );
|
||||
|
||||
// Returns executable which should the OS run
|
||||
virtual const char *GetCompilerExecutable( LinkProject_t *pProject ) = 0;
|
||||
|
||||
// returns object file format, eg .obj or .o
|
||||
virtual const char *GetOutputObjectFormat() = 0;
|
||||
|
||||
virtual void SetTarget( CUtlVector<CUtlString> &cmd, LinkProject_t *pProject ) = 0;
|
||||
virtual void SetSysroot( CUtlVector<CUtlString> &cmd, LinkProject_t *pProject , const char *szSysroot ) = 0;
|
||||
virtual void SetOutputFile( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
|
||||
|
||||
// sets rpath
|
||||
// for windows should be ignored
|
||||
virtual void SetDefaultLibraryPaths( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
|
||||
virtual void UseStdLib( CUtlVector<CUtlString> &cmd, bool bUse ) = 0;
|
||||
|
||||
// windows doesn't use it as well
|
||||
virtual void UseDynamicLookup( CUtlVector<CUtlString> &cmd, bool bUse ) = 0;
|
||||
|
||||
// includes whole file
|
||||
virtual void UseFullFile( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
|
||||
// includes used stuff in a file
|
||||
virtual void UsePartialFile( CUtlVector<CUtlString> &cmd ) = 0;
|
||||
|
||||
virtual void LinkFile( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
virtual void LinkLibraryObject( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
virtual void LinkLibrary( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
virtual void LinkLibraryPath( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
|
||||
|
||||
};
|
||||
|
||||
extern ILinker *linker;
|
||||
|
||||
@@ -49,6 +49,9 @@ struct Target_t
|
||||
const char *szSysroot = CommandLine()->ParamValue("-sysroot");
|
||||
|
||||
CUtlString GetTriplet();
|
||||
const char *GetExecutableFileFormat();
|
||||
const char *GetStaticLibraryFileFormat();
|
||||
const char *GetDynamicLibraryFileFormat();
|
||||
static Target_t HostTarget();
|
||||
static Target_t DefaultTarget();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user