#ifndef HELPER_H
#define HELPER_H

#include "tier1/utlstring.h"
#include "target.h"

#define FPC_TEMPORAL_DIRNAME ".fpc"

class CProject
{
public:
	Target_t m_target = Target_t::DefaultTarget();
	CUtlString m_szName;
	unsigned int GenerateProjectHash( void );
};

interface IFileSystem2
{
public:
	static char *OwnDirectory();
	static char *BuildDirectory();
	static void MakeDirectory( const char *psz );
	static void CopyFile( const char *szDestination, const char *szOrigin );
	static void CopyDirectory( const char *szDestination, const char *szOrigin );
	static bool ShouldRecompile( const char *szSource, const char *szOutput );
};

class CBuildStage
{
public:
	CBuildStage( CUtlString sz, int(*pMainFn)() );
	CUtlString m_sz;
	int(*m_pMainFn)();
};

#define DECLARE_BUILD_STAGE(sz, fn) \
CBuildStage __##sz##_build_stage(#sz, fn);

CUtlVector<CBuildStage*>& BuildStages();

#endif
