mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 15:43:19 +00:00
Generate reactos.cab
svn path=/branches/xmlbuildsystem/; revision=13470
This commit is contained in:
parent
0dd134f1a2
commit
d441fe88f2
7 changed files with 75 additions and 67 deletions
|
@ -161,12 +161,12 @@ MingwBackend::GenerateProjectLFLAGS () const
|
||||||
void
|
void
|
||||||
MingwBackend::GenerateGlobalVariables () const
|
MingwBackend::GenerateGlobalVariables () const
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
|
||||||
fprintf ( fMakefile, "host_gcc = gcc\n" );
|
fprintf ( fMakefile, "host_gcc = gcc\n" );
|
||||||
fprintf ( fMakefile, "host_gpp = g++\n" );
|
fprintf ( fMakefile, "host_gpp = g++\n" );
|
||||||
fprintf ( fMakefile, "host_ld = ld\n" );
|
fprintf ( fMakefile, "host_ld = ld\n" );
|
||||||
fprintf ( fMakefile, "host_ar = ar\n" );
|
fprintf ( fMakefile, "host_ar = ar\n" );
|
||||||
fprintf ( fMakefile, "host_objcopy = objcopy\n" );
|
fprintf ( fMakefile, "host_objcopy = objcopy\n" );
|
||||||
|
#ifdef WIN32
|
||||||
fprintf ( fMakefile, "rm = del /f /q\n" );
|
fprintf ( fMakefile, "rm = del /f /q\n" );
|
||||||
fprintf ( fMakefile, "gcc = gcc\n" );
|
fprintf ( fMakefile, "gcc = gcc\n" );
|
||||||
fprintf ( fMakefile, "gpp = g++\n" );
|
fprintf ( fMakefile, "gpp = g++\n" );
|
||||||
|
@ -176,11 +176,6 @@ MingwBackend::GenerateGlobalVariables () const
|
||||||
fprintf ( fMakefile, "dlltool = dlltool\n" );
|
fprintf ( fMakefile, "dlltool = dlltool\n" );
|
||||||
fprintf ( fMakefile, "windres = windres\n" );
|
fprintf ( fMakefile, "windres = windres\n" );
|
||||||
#else
|
#else
|
||||||
fprintf ( fMakefile, "host_gcc = gcc\n" );
|
|
||||||
fprintf ( fMakefile, "host_gpp = g++\n" );
|
|
||||||
fprintf ( fMakefile, "host_ld = ld\n" );
|
|
||||||
fprintf ( fMakefile, "host_ar = ar\n" );
|
|
||||||
fprintf ( fMakefile, "host_objcopy = objcopy\n" );
|
|
||||||
fprintf ( fMakefile, "rm = rm -f\n" );
|
fprintf ( fMakefile, "rm = rm -f\n" );
|
||||||
fprintf ( fMakefile, "gcc = mingw32-gcc\n" );
|
fprintf ( fMakefile, "gcc = mingw32-gcc\n" );
|
||||||
fprintf ( fMakefile, "gpp = mingw32-g++\n" );
|
fprintf ( fMakefile, "gpp = mingw32-g++\n" );
|
||||||
|
@ -190,12 +185,12 @@ MingwBackend::GenerateGlobalVariables () const
|
||||||
fprintf ( fMakefile, "dlltool = mingw32-dlltool\n" );
|
fprintf ( fMakefile, "dlltool = mingw32-dlltool\n" );
|
||||||
fprintf ( fMakefile, "windres = mingw32-windres\n" );
|
fprintf ( fMakefile, "windres = mingw32-windres\n" );
|
||||||
#endif
|
#endif
|
||||||
fprintf ( fMakefile, "mkdir = tools%crmkdir\n", CSEP );
|
fprintf ( fMakefile, "mkdir = tools" SSEP "rmkdir" EXEPOSTFIX "\n" );
|
||||||
fprintf ( fMakefile, "NUL=NUL\n" );
|
fprintf ( fMakefile, "NUL=NUL\n" );
|
||||||
fprintf ( fMakefile, "winebuild = tools" SSEP "winebuild" SSEP "winebuild\n" );
|
fprintf ( fMakefile, "winebuild = tools" SSEP "winebuild" SSEP "winebuild" EXEPOSTFIX "\n" );
|
||||||
fprintf ( fMakefile, "bin2res = tools" SSEP "bin2res" SSEP "bin2res\n" );
|
fprintf ( fMakefile, "bin2res = tools" SSEP "bin2res" SSEP "bin2res" EXEPOSTFIX "\n" );
|
||||||
fprintf ( fMakefile, "cabman = tools" SSEP "cabman" SSEP "cabman\n" );
|
fprintf ( fMakefile, "cabman = tools" SSEP "cabman" SSEP "cabman" EXEPOSTFIX "\n" );
|
||||||
fprintf ( fMakefile, "cdmake = tools" SSEP "cdmake" SSEP "cdmake\n" );
|
fprintf ( fMakefile, "cdmake = tools" SSEP "cdmake" SSEP "cdmake" EXEPOSTFIX "\n" );
|
||||||
fprintf ( fMakefile, "\n" );
|
fprintf ( fMakefile, "\n" );
|
||||||
GenerateGlobalCFlagsAndProperties (
|
GenerateGlobalCFlagsAndProperties (
|
||||||
"=",
|
"=",
|
||||||
|
|
|
@ -53,10 +53,10 @@ MingwModuleHandler::~MingwModuleHandler()
|
||||||
}
|
}
|
||||||
|
|
||||||
const string &
|
const string &
|
||||||
MingwModuleHandler::PassThruCacheDirectory( const string &file ) const
|
MingwModuleHandler::PassThruCacheDirectory ( const string &file ) const
|
||||||
{
|
{
|
||||||
directory_set.insert( ReplaceExtension( GetDirectory( file ), "" ) );
|
directory_set.insert ( GetDirectory ( file ) );
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -86,21 +86,11 @@ MingwModuleHandler::GetWorkingDirectory () const
|
||||||
return ".";
|
return ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
|
||||||
MingwModuleHandler::GetDirectory ( const string& filename )
|
|
||||||
{
|
|
||||||
size_t index = filename.find_last_of ( CSEP );
|
|
||||||
if (index == string::npos)
|
|
||||||
return ".";
|
|
||||||
else
|
|
||||||
return filename.substr ( 0, index );
|
|
||||||
}
|
|
||||||
|
|
||||||
string
|
string
|
||||||
MingwModuleHandler::GetBasename ( const string& filename ) const
|
MingwModuleHandler::GetBasename ( const string& filename ) const
|
||||||
{
|
{
|
||||||
size_t index = filename.find_last_of ( '.' );
|
size_t index = filename.find_last_of ( '.' );
|
||||||
if (index != string::npos)
|
if ( index != string::npos )
|
||||||
return filename.substr ( 0, index );
|
return filename.substr ( 0, index );
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -111,7 +101,7 @@ MingwModuleHandler::GetActualSourceFilename ( const string& filename ) const
|
||||||
string extension = GetExtension ( filename );
|
string extension = GetExtension ( filename );
|
||||||
if ( extension == ".spec" || extension == "SPEC" )
|
if ( extension == ".spec" || extension == "SPEC" )
|
||||||
{
|
{
|
||||||
string basename = GetBasename( filename );
|
string basename = GetBasename ( filename );
|
||||||
return basename + ".stubs.c";
|
return basename + ".stubs.c";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -187,7 +177,7 @@ MingwModuleHandler::GetAllDependencies ( const Module& module ) const
|
||||||
{
|
{
|
||||||
string dependencies = GetImportLibraryDependencies ( module );
|
string dependencies = GetImportLibraryDependencies ( module );
|
||||||
string s = GetModuleDependencies ( module );
|
string s = GetModuleDependencies ( module );
|
||||||
if (s.length () > 0)
|
if ( s.length () > 0 )
|
||||||
{
|
{
|
||||||
dependencies += " ";
|
dependencies += " ";
|
||||||
dependencies += s;
|
dependencies += s;
|
||||||
|
@ -208,13 +198,13 @@ MingwModuleHandler::GetSourceFilenames ( const Module& module,
|
||||||
sourceFilenames += " " + GetActualSourceFilename ( module.files[i]->name );
|
sourceFilenames += " " + GetActualSourceFilename ( module.files[i]->name );
|
||||||
}
|
}
|
||||||
vector<If*> ifs = module.ifs;
|
vector<If*> ifs = module.ifs;
|
||||||
for ( i = 0; i < ifs.size(); i++ )
|
for ( i = 0; i < ifs.size (); i++ )
|
||||||
{
|
{
|
||||||
size_t j;
|
size_t j;
|
||||||
If& rIf = *ifs[i];
|
If& rIf = *ifs[i];
|
||||||
for ( j = 0; j < rIf.ifs.size(); j++ )
|
for ( j = 0; j < rIf.ifs.size (); j++ )
|
||||||
ifs.push_back ( rIf.ifs[j] );
|
ifs.push_back ( rIf.ifs[j] );
|
||||||
for ( j = 0; j < rIf.files.size(); j++ )
|
for ( j = 0; j < rIf.files.size (); j++ )
|
||||||
{
|
{
|
||||||
if ( includeGeneratedFiles || !IsGeneratedFile ( *rIf.files[j] ) )
|
if ( includeGeneratedFiles || !IsGeneratedFile ( *rIf.files[j] ) )
|
||||||
sourceFilenames += " " + GetActualSourceFilename ( rIf.files[j]->name );
|
sourceFilenames += " " + GetActualSourceFilename ( rIf.files[j]->name );
|
||||||
|
@ -248,8 +238,7 @@ MingwModuleHandler::GetObjectFilename ( const string& sourceFilename )
|
||||||
newExtension = ".stubs.o";
|
newExtension = ".stubs.o";
|
||||||
else
|
else
|
||||||
newExtension = ".o";
|
newExtension = ".o";
|
||||||
return FixupTargetFilename (
|
return FixupTargetFilename ( ReplaceExtension ( sourceFilename, newExtension ) );
|
||||||
ReplaceExtension ( sourceFilename, newExtension ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
string
|
||||||
|
@ -269,34 +258,34 @@ MingwModuleHandler::GetObjectFilenames ( const Module& module ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MingwModuleHandler::GenerateDirectoryTargets() const
|
MingwModuleHandler::GenerateDirectoryTargets () const
|
||||||
{
|
{
|
||||||
set_string::iterator i;
|
if ( directory_set.size () == 0 )
|
||||||
fprintf( fMakefile, "ifneq ($(ROS_INTERMEDIATE),)\ndirectories::" );
|
return;
|
||||||
|
|
||||||
for ( i = directory_set.begin();
|
set_string::iterator i;
|
||||||
i != directory_set.end();
|
fprintf ( fMakefile, "directories::" );
|
||||||
|
|
||||||
|
for ( i = directory_set.begin ();
|
||||||
|
i != directory_set.end ();
|
||||||
i++ )
|
i++ )
|
||||||
{
|
{
|
||||||
fprintf ( fMakefile, " %s", i->c_str() );
|
fprintf ( fMakefile, " %s", i->c_str () );
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf( fMakefile, "\n\n" );
|
fprintf ( fMakefile, "\n\n" );
|
||||||
|
|
||||||
for ( i = directory_set.begin();
|
for ( i = directory_set.begin ();
|
||||||
i != directory_set.end();
|
i != directory_set.end ();
|
||||||
i++ )
|
i++ )
|
||||||
{
|
{
|
||||||
fprintf ( fMakefile, "%s ", i->c_str() );
|
fprintf ( fMakefile, "%s ", i->c_str () );
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"::\n\t${mkdir} $@\n\n"
|
"::\n\t${mkdir} $@\n\n" );
|
||||||
"else\n"
|
|
||||||
"directories::\n\n"
|
|
||||||
"endif\n\n" );
|
|
||||||
|
|
||||||
directory_set.clear();
|
directory_set.clear ();
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
string
|
||||||
|
@ -351,7 +340,7 @@ MingwModuleHandler::GenerateGccIncludeParametersFromVector ( const vector<Includ
|
||||||
for ( size_t i = 0; i < includes.size (); i++ )
|
for ( size_t i = 0; i < includes.size (); i++ )
|
||||||
{
|
{
|
||||||
Include& include = *includes[i];
|
Include& include = *includes[i];
|
||||||
if (parameters.length () > 0)
|
if ( parameters.length () > 0 )
|
||||||
parameters += " ";
|
parameters += " ";
|
||||||
parameters += "-I" + include.directory;
|
parameters += "-I" + include.directory;
|
||||||
}
|
}
|
||||||
|
@ -1264,6 +1253,8 @@ MingwModuleHandler::GetLinkingDependencies ( const Module& module ) const
|
||||||
bool
|
bool
|
||||||
MingwModuleHandler::IsCPlusPlusModule ( const Module& module ) const
|
MingwModuleHandler::IsCPlusPlusModule ( const Module& module ) const
|
||||||
{
|
{
|
||||||
|
if ( module.HasFileWithExtensions ( ".cc", ".CC" ) )
|
||||||
|
return true;
|
||||||
if ( module.HasFileWithExtensions ( ".cxx", ".CXX" ) )
|
if ( module.HasFileWithExtensions ( ".cxx", ".CXX" ) )
|
||||||
return true;
|
return true;
|
||||||
if ( module.HasFileWithExtensions ( ".cpp", ".CPP" ) )
|
if ( module.HasFileWithExtensions ( ".cpp", ".CPP" ) )
|
||||||
|
@ -1949,28 +1940,37 @@ MingwIsoModuleHandler::Process ( const Module& module )
|
||||||
void
|
void
|
||||||
MingwIsoModuleHandler::GenerateIsoModuleTarget ( const Module& module )
|
MingwIsoModuleHandler::GenerateIsoModuleTarget ( const Module& module )
|
||||||
{
|
{
|
||||||
string isoboot = "$(ROS_INTERMEDIATE)" + FixupTargetFilename ( "boot/freeldr/bootsect/isoboot.o" );
|
string bootcdDirectory = "cd";
|
||||||
|
string isoboot = FixupTargetFilename ( "boot/freeldr/bootsect/isoboot.o" );
|
||||||
|
string bootcdReactosNoFixup = bootcdDirectory + "/reactos";
|
||||||
|
string bootcdReactos = FixupTargetFilename ( bootcdReactosNoFixup );
|
||||||
|
PassThruCacheDirectory ( bootcdReactos + SSEP );
|
||||||
|
string reactosInf = FixupTargetFilename ( bootcdReactosNoFixup + "/reactos.inf" );
|
||||||
|
string reactosDff = NormalizeFilename ( "bootdata/packages/reactos.dff" );
|
||||||
|
|
||||||
fprintf ( fMakefile, ".PHONY: %s\n\n",
|
fprintf ( fMakefile, ".PHONY: %s\n\n",
|
||||||
module.name.c_str ());
|
module.name.c_str ());
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"%s: all %s\n",
|
"%s: all %s %s\n",
|
||||||
module.name.c_str (),
|
module.name.c_str (),
|
||||||
isoboot.c_str () );
|
isoboot.c_str (),
|
||||||
|
bootcdReactos.c_str () );
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"\t${cabman} /C %s /L $(ROS_INTERMEDIATE)%s /I\n",
|
"\t${cabman} /C %s /L %s /I\n",
|
||||||
FixupTargetFilename ( "bootdata/packages/reactos.dff" ).c_str (),
|
reactosDff.c_str (),
|
||||||
FixupTargetFilename ( "bootcd/reactos" ).c_str () );
|
bootcdReactos.c_str () );
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"\t${cabman} /C %s /RC $(ROS_INTERMEDIATE)%s /L $(BOOTCD_DIR)reactos /N\n",
|
"\t${cabman} /C %s /RC %s /L %s /N\n",
|
||||||
FixupTargetFilename ( "bootdata/packages/reactos.dff" ).c_str (),
|
reactosDff.c_str (),
|
||||||
FixupTargetFilename ( "bootcd/reactos/reactos.inf" ).c_str () );
|
reactosInf.c_str (),
|
||||||
|
bootcdReactos.c_str () );
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"\t- ${rm} $(ROS_INTERMEDIATE)%s\n",
|
"\t- ${rm} %s\n",
|
||||||
FixupTargetFilename ( "bootcd/reactos/reactos.inf" ).c_str () );
|
reactosInf.c_str () );
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"\t${cdmake} -v -m -b %s $(ROS_INTERMEDIATE)bootcd REACTOS ReactOS.iso\n",
|
"\t${cdmake} -v -m -b %s %s REACTOS ReactOS.iso\n",
|
||||||
isoboot.c_str () );
|
isoboot.c_str (),
|
||||||
|
bootcdDirectory.c_str () );
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
"\n" );
|
"\n" );
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ public:
|
||||||
virtual void Process ( const Module& module ) = 0;
|
virtual void Process ( const Module& module ) = 0;
|
||||||
void GenerateDirectoryTargets () const;
|
void GenerateDirectoryTargets () const;
|
||||||
static std::string GetObjectFilename ( const std::string& sourceFilename );
|
static std::string GetObjectFilename ( const std::string& sourceFilename );
|
||||||
static std::string GetDirectory ( const std::string& filename );
|
|
||||||
protected:
|
protected:
|
||||||
const std::string &PassThruCacheDirectory ( const std::string &f ) const;
|
const std::string &PassThruCacheDirectory ( const std::string &f ) const;
|
||||||
std::string GetWorkingDirectory () const;
|
std::string GetWorkingDirectory () const;
|
||||||
|
|
|
@ -31,6 +31,16 @@ GetExtension ( const string& filename )
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
GetDirectory ( const string& filename )
|
||||||
|
{
|
||||||
|
size_t index = filename.find_last_of ( CSEP );
|
||||||
|
if ( index == string::npos )
|
||||||
|
return filename;
|
||||||
|
else
|
||||||
|
return filename.substr ( 0, index );
|
||||||
|
}
|
||||||
|
|
||||||
string
|
string
|
||||||
NormalizeFilename ( const string& filename )
|
NormalizeFilename ( const string& filename )
|
||||||
{
|
{
|
||||||
|
|
|
@ -439,6 +439,9 @@ FixSeparator ( const std::string& s );
|
||||||
extern std::string
|
extern std::string
|
||||||
GetExtension ( const std::string& filename );
|
GetExtension ( const std::string& filename );
|
||||||
|
|
||||||
|
extern std::string
|
||||||
|
GetDirectory ( const std::string& filename );
|
||||||
|
|
||||||
extern std::string
|
extern std::string
|
||||||
NormalizeFilename ( const std::string& filename );
|
NormalizeFilename ( const std::string& filename );
|
||||||
|
|
||||||
|
|
|
@ -10,14 +10,12 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UNIX_PATHS
|
#if defined(WIN32)
|
||||||
#define DIR_SEPARATOR_CHAR '/'
|
|
||||||
#define DIR_SEPARATOR_STRING "/"
|
|
||||||
#else
|
|
||||||
#ifdef DOS_PATHS
|
|
||||||
#define DIR_SEPARATOR_CHAR '\\'
|
#define DIR_SEPARATOR_CHAR '\\'
|
||||||
#define DIR_SEPARATOR_STRING "\\"
|
#define DIR_SEPARATOR_STRING "\\"
|
||||||
#endif
|
#else
|
||||||
|
#define DIR_SEPARATOR_CHAR '/'
|
||||||
|
#define DIR_SEPARATOR_STRING "/"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char* convert_path(char* origpath)
|
char* convert_path(char* origpath)
|
||||||
|
|
|
@ -19,3 +19,6 @@
|
||||||
<directory name="winebuild">
|
<directory name="winebuild">
|
||||||
<xi:include href="winebuild/winebuild.xml" />
|
<xi:include href="winebuild/winebuild.xml" />
|
||||||
</directory>
|
</directory>
|
||||||
|
<module name="rmkdir" type="buildtool">
|
||||||
|
<file>rmkdir.c</file>
|
||||||
|
</module>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue