improvements to the fpc

This commit is contained in:
2025-11-27 20:09:11 +02:00
parent 34e54fdc0d
commit f031ed3f70
5 changed files with 298 additions and 75 deletions

View File

@@ -34,8 +34,8 @@ enum ECVersion
// Target C++ version
enum ECPPVersion
{
CPPVERSION_98 = 1,
CPPVERSION_11 = 0,
CPPVERSION_98 = 0,
CPPVERSION_11 = 1,
CPPVERSION_14 = 2,
CPPVERSION_17 = 3,
CPPVERSION_20 = 4,
@@ -94,7 +94,7 @@ public:
#define GNU_C_COMPILER_INTERFACE_NAME "GNU" C_COMPILER_INTERFACE_NAME
#define MSVC_C_COMPILER_INTERFACE_NAME "MSVC" C_COMPILER_INTERFACE_NAME
abstract_class ICCompiler
class ICCompiler
{
public:
@@ -102,24 +102,33 @@ public:
// which can be linked into executable or library.
virtual LinkProject_t Compile( CProject_t *pProject );
virtual void GenerateLinterData() = 0;
protected:
// Compiler internals
// Returns file name of the
CUtlString GetOutputObjectName( CUtlString szFileName );
CUtlString GetOutputObjectName( CProject_t *pProject, unsigned int hash, CUtlString szFileName );
virtual CUtlVector<CUtlString> BuildCommandLine( CProject_t *pProject );
virtual CUtlVector<CUtlString> BuildCommandLine( CProject_t *pProject, const char *szFileName, const char *szOutputFileName );
// Returns executable which should the OS run
virtual CUtlString GetCompilerExecutable( CProject_t *pProject ) = 0;
virtual const char *GetCompilerExecutable( CProject_t *pProject ) = 0;
// returns object file format, eg .obj or .o
virtual const char *GetOutputObjectFormat() = 0;
virtual bool IncludeDirectory( CUtlVector<CUtlString> &cmd ) = 0;
virtual bool IncludeFile( CUtlVector<CUtlString> &cmd ) = 0;
virtual void Macro( const char *szName ) = 0;
virtual void Macro( const char *szName, const char *szValue ) = 0;
virtual void IncludeDirectory( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
virtual void IncludeFile( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
virtual void Macro( CUtlVector<CUtlString> &cmd, const char *szName ) = 0;
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 SetOutputFile( 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;
};
extern ICCompiler *ccompiler;