* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef MINGW_MODULEHANDLER_H
-#define MINGW_MODULEHANDLER_H
+
+#pragma once
#include "../backend.h"
#include "mingw.h"
const std::string& filename,
const std::string& prefix );
-enum SpecFileType
-{
- None,
- Spec = 1,
- PSpec = 2
-};
-
class MingwModuleHandler
{
public:
static const FileLocation* GetImportLibraryFilename (
const Module& module,
- string_list* pclean_files );
+ string_list* pclean_files,
+ bool delayimp );
static std::string GenerateGccDefineParametersFromVector ( const std::vector<Define*>& defines, std::set<std::string> &used_defs );
- static std::string GenerateGccIncludeParametersFromVector ( const std::vector<Include*>& includes );
+ static std::string GenerateDefineParametersFromVector ( const std::vector<Define*>& defines, CompilerType compiler );
+ static std::string GenerateCompilerParametersFromVector ( const std::vector<CompilerFlag*>& compilerFlags, const CompilerType type );
+ static std::string GenerateIncludeParametersFromVector ( const std::vector<Include*>& includes, CompilerType compiler );
+
+ static void GenerateParameters ( const char* prefix,
+ const char* assignmentOperation,
+ const IfableData& data );
std::string GetModuleTargets ( const Module& module );
void GetObjectsVector ( const IfableData& data,
void OutputCopyCommand ( const FileLocation& source,
const FileLocation& destination );
+ void OutputCopyCommandSingle ( const FileLocation& source,
+ const FileLocation& destination );
protected:
virtual void GetModuleSpecificCompilationUnits ( std::vector<CompilationUnit*>& compilationUnits );
std::string GetWorkingDirectory () const;
std::string GetBasename ( const std::string& filename ) const;
std::string GetCompilationUnitDependencies ( const CompilationUnit& compilationUnit ) const;
const FileLocation* GetModuleArchiveFilename () const;
- std::string GetImportLibraryDependency ( const Module& importedModule );
+ std::string GetImportLibraryDependency ( const Module& importedModule, bool delayimp );
void GetTargets ( const Module& dependencyModule,
string_list& targets );
void GetModuleDependencies ( string_list& dependencies );
const FileLocation* GetObjectFilename ( const FileLocation* sourceFile,
const Module& module ) const;
- std::string GetObjectFilenames ();
-
std::string GetPreconditionDependenciesName () const;
- std::string GetCFlagsMacro () const;
static std::string GetObjectsMacro ( const Module& );
std::string GetLinkingDependenciesMacro () const;
std::string GetLibsMacro () const;
std::string GetLinkerMacro () const;
+ static std::string GetDebugFormat ();
void GenerateCleanObjectsAsYouGoCode () const;
- void GenerateRunRsymCode () const;
- void GenerateRunStripCode () const;
- void GenerateLinkerCommand ( const std::string& dependencies,
- const std::string& linkerParameters,
- const std::string& pefixupParameters );
- void GeneratePhonyTarget() const;
+ void GenerateLinkerCommand () const;
void GenerateBuildMapCode ( const FileLocation *mapTarget = NULL );
void GenerateRules ();
void GenerateImportLibraryTargetIfNeeded ();
private:
std::string ConcatenatePaths ( const std::string& path1,
const std::string& path2 ) const;
- std::string GenerateCompilerParametersFromVector ( const std::vector<CompilerFlag*>& compilerFlags, const CompilerType type ) const;
std::string GenerateLinkerParametersFromVector ( const std::vector<LinkerFlag*>& linkerFlags ) const;
std::string GenerateImportLibraryDependenciesFromVector ( const std::vector<Library*>& libraries );
std::string GenerateLinkerParameters () const;
- void GenerateMacro ( const char* assignmentOperation,
- const std::string& macro,
- const IfableData& data,
- std::set<const Define *>* used_defs,
- bool generatingCompilerMacro );
void GenerateMacros ( const char* op,
const IfableData& data,
const std::vector<LinkerFlag*>* linkerFlags,
void GenerateSourceMacros ( const IfableData& data );
void GenerateObjectMacros ( const IfableData& data );
const FileLocation* GetPrecompiledHeaderFilename () const;
+ const FileLocation* GetPrecompiledHeaderPath () const;
+ const FileLocation* GetDlldataFilename () const;
void GenerateGccCommand ( const FileLocation* sourceFile,
const Rule *rule,
const std::string& extraDependencies );
public:
const Module& module;
string_list clean_files;
+ std::string commonflagsMacro;
std::string cflagsMacro;
+ std::string cxxflagsMacro;
std::string nasmflagsMacro;
std::string windresflagsMacro;
std::string widlflagsMacro;
void GetBootstrapCdFiles ( std::vector<FileLocation>& out ) const;
void GetNonModuleCdFiles ( std::vector<FileLocation>& out ) const;
void GetCdFiles ( std::vector<FileLocation>& out ) const;
- void OutputBootstrapfileCopyCommands ( const std::string& bootcdDirectory );
- void OutputCdfileCopyCommands ( const std::string& bootcdDirectory );
+ void OutputBootstrapfileCopyCommands ( const std::string& bootcdDirectory,
+ std::vector<FileLocation>& destinations );
+ void OutputCdfileCopyCommands ( const std::string& bootcdDirectory,
+ std::vector<FileLocation>& destinations );
};
void GenerateLiveIsoModuleTarget ();
void CreateDirectory ( const std::string& directory );
void OutputModuleCopyCommands ( std::string& livecdDirectory,
- std::string& livecdReactos );
+ std::string& livecdReactos,
+ std::vector<FileLocation>& destinations );
void OutputNonModuleCopyCommands ( std::string& livecdDirectory,
- std::string& livecdReactos );
- void OutputProfilesDirectoryCommands ( std::string& livecdDirectory );
- void OutputLoaderCommands ( std::string& livecdDirectory );
+ std::string& livecdReactos,
+ std::vector<FileLocation>& destinations );
+ void OutputProfilesDirectoryCommands ( std::string& livecdDirectory,
+ std::vector<FileLocation>& destinations );
+ void OutputLoaderCommands ( std::string& livecdDirectory,
+ std::vector<FileLocation>& destinations );
void OutputRegistryCommands ( std::string& livecdDirectory );
};
MingwElfExecutableModuleHandler ( const Module& module );
virtual void Process ();
};
-
-#endif /* MINGW_MODULEHANDLER_H */