Extract WINE resources at compile-time Modified: branches/xmlbuildsystem/reactos/Makefile Modified: branches/xmlbuildsystem/reactos/ReactOS.xml Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_large.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_small.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_large.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_small.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_large.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_small.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_copy.cur Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divider.cur Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divideropen.cur Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_movebutton.cur Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_dragarrow.ico Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_error_sm.ico Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_info_sm.ico Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_warn_sm.ico Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idt_check.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/800.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/cdrom.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/floppy.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/folder.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/folder2.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/fontpics.bmp Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/hdisk.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/network.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_collate.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_landscape.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_nocollate.ico Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_portrait.ico Deleted: branches/xmlbuildsystem/reactos/lib/ole32/drag_copy.cur Deleted: branches/xmlbuildsystem/reactos/lib/ole32/drag_link.cur Deleted: branches/xmlbuildsystem/reactos/lib/ole32/drag_move.cur Deleted: branches/xmlbuildsystem/reactos/lib/ole32/nodrop.cur Deleted: branches/xmlbuildsystem/reactos/lib/shell32/desktop.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/document.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/drive.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/floppy.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/folder.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/folder_open.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/mycomputer.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/netdrive.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/netdrive2.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/printer.ico Deleted: branches/xmlbuildsystem/reactos/lib/shell32/ramdisk.ico Modified: branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.c Modified: branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.mak Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.mak Added: branches/xmlbuildsystem/reactos/tools/rbuild/wineresource.cpp _____
Modified: branches/xmlbuildsystem/reactos/Makefile --- branches/xmlbuildsystem/reactos/Makefile 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/Makefile 2005-05-14 17:57:31 UTC (rev 15280) @@ -229,6 +229,7 @@
-include makefile.auto
PREAUTO := \ + $(BIN2RES_TARGET) \ $(BUILDNO_H) \ $(BUGCODES_H) \ $(BUGCODES_RC) \ _____
Modified: branches/xmlbuildsystem/reactos/ReactOS.xml --- branches/xmlbuildsystem/reactos/ReactOS.xml 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/ReactOS.xml 2005-05-14 17:57:31 UTC (rev 15280) @@ -14,6 +14,13 @@
<define name="DBG" value="1" /> <property name="DBG_OR_KDBG" value="true" /> </if> + <if property="DBG" value="0"> + <compilerflag>-O2</compilerflag> + <compilerflag>-Wno-strict-aliasing</compilerflag> + <compilerflag>-ftracer</compilerflag> + <compilerflag>-momit-leaf-frame-pointer</compilerflag> + <compilerflag>-mpreferred-stack-boundary=2</compilerflag> + </if> <if property="KDBG" value="1"> <define name="KDBG" value="1" /> <property name="DBG_OR_KDBG" value="true" /> _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_large.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_small.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_large.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_small.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_large.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_small.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_copy.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divider.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divideropen.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idc_movebutton.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_dragarrow.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_error_sm.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_info_sm.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_warn_sm.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comctl32/idt_check.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/800.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/cdrom.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/floppy.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/folder.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/folder2.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/fontpics.bmp (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/hdisk.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/network.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_collate.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_landscape.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_nocollate.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/comdlg32/pd32_portrait.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/ole32/drag_copy.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/ole32/drag_link.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/ole32/drag_move.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/ole32/nodrop.cur (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/desktop.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/document.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/drive.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/floppy.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/folder.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/folder_open.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/mycomputer.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/netdrive.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/netdrive2.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/printer.ico (Binary files differ) _____
Deleted: branches/xmlbuildsystem/reactos/lib/shell32/ramdisk.ico (Binary files differ) _____
Modified: branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.c --- branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.c 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.c 2005-05-14 17:57:31 UTC (rev 15280) @@ -35,14 +35,25 @@
# include <unistd.h> #endif
+#if defined(WIN32) +#define DIR_SEPARATOR "\" +#else +#define DIR_SEPARATOR "/" +#endif + extern int mkstemps(char *template, int suffix_len);
+int process_resources(const char* input_file_name, const char* specific_file_name, + const char* relative_path, + int inserting, int force_processing, int verbose); + static const char* help = "Usage: bin2res [OPTIONS] <rsrc.rc>\n" " -a archive binaries into the <rsrc.rc> file\n" " -x extract binaries from the <rsrc.rc> file\n" " -i <filename> archive the named file into the <rsrc.rc> file\n" " -o <filename> extract the named file from the <rsrc.rc> file\n" + " -b <path> assume resources are relative to this base path\n" " -f force processing of older resources\n" " -v causes the command to be verbous during processing\n" " -h print this help screen and exit\n" @@ -127,9 +138,62 @@ return res_file_name; }
+const char* parse_include(const char *line) +{ + static char include_filename[PATH_MAX], *rpos, *wpos; + + if (!(rpos = strstr(line, "#"))) return 0; + for (rpos += 1; *rpos && isspace(*rpos); rpos++) /**/; + if (!(rpos = strstr(line, "include"))) return 0; + for (rpos += 7; *rpos && isspace(*rpos); rpos++) /**/; + for (; *rpos && (*rpos == '"' || *rpos == '<'); rpos++) /**/; + for (wpos = include_filename; *rpos && !(*rpos == '"' || *rpos == '<'); ) *wpos++ = *rpos++; + if (!(rpos = strstr(include_filename, ".rc"))) return 0; + *wpos = 0; + + return include_filename; +} + +char* get_filename_with_full_path(char* output, const char* filename, const char* relative_path) +{ + if (relative_path != NULL && relative_path[0] != 0) + { + strcpy(output, relative_path); + strcat(output, DIR_SEPARATOR); + strcat(output, filename); + } + else + strcpy(output, filename); + return output; +} + +void process_includes(const char* input_file_name, const char* specific_file_name, + const char* relative_path, + int inserting, int force_processing, int verbose) +{ + char filename[PATH_MAX]; + char buffer[2048]; + const char *include_file_name; + FILE *fin; + int c; + + if (!(fin = fopen(input_file_name, "r"))) return; + for (c = EOF; fgets(buffer, sizeof(buffer), fin); c = EOF) + { + if (!(include_file_name = parse_include(buffer))) continue; + if ( verbose ) printf ( "Processing included file %s\n", include_file_name); + process_resources(get_filename_with_full_path(filename, include_file_name, relative_path), + specific_file_name, relative_path, + inserting, force_processing, verbose); + } + fclose(fin); +} + int process_resources(const char* input_file_name, const char* specific_file_name, + const char* relative_path, int inserting, int force_processing, int verbose) { + char filename[PATH_MAX]; char buffer[2048], tmp_file_name[PATH_MAX]; const char *res_file_name; time_t rc_last_update, res_last_update; @@ -169,7 +233,8 @@ if (inserting) fputc(c, ftmp); if (c == EOF) break;
- if (!(fres = fopen(res_file_name, inserting ? "rb" : "wb"))) break; + if (!(fres = fopen(get_filename_with_full_path(filename, res_file_name, relative_path), + inserting ? "rb" : "wb"))) break; if (inserting) { if (!insert_hexdump(ftmp, fres)) break; @@ -201,6 +266,11 @@ } else unlink(tmp_file_name); } + else + { + process_includes(input_file_name, specific_file_name, relative_path, + inserting, force_processing, verbose); + }
return c == EOF; } @@ -211,8 +281,9 @@ int force_overwrite = 0, verbose = 0; const char* input_file_name = 0; const char* specific_file_name = 0; + const char* relative_path = 0;
- while((optc = getopt(argc, argv, "axi:o:fhv")) != EOF) + while((optc = getopt(argc, argv, "axi:o:b:fhv")) != EOF) { switch(optc) { @@ -229,6 +300,10 @@ if (convert_dir && convert_dir != optc) usage(); convert_dir = optc; break; + case 'b': + if (relative_path) usage(); + relative_path = optarg; + break; case 'f': force_overwrite = 1; break; @@ -249,7 +324,7 @@
if (!convert_dir) usage();
- if (!process_resources(input_file_name, specific_file_name, + if (!process_resources(input_file_name, specific_file_name, relative_path, convert_dir == 'a', force_overwrite, verbose)) { perror("Processing failed"); _____
Modified: branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.mak --- branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.mak 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.mak 2005-05-14 17:57:31 UTC (rev 15280) @@ -42,6 +42,9 @@
$(ECHO_CC) ${host_gcc} $(BIN2RES_HOST_CFLAGS) -c $< -o $@
+.PHONY: bin2res +bin2res: $(BIN2RES_TARGET) + .PHONY: bin2res_clean bin2res_clean: $(BIN2RES_TARGET) -@$(rm) $(BIN2RES_TARGET) $(BIN2RES_OBJECTS) 2>$(NUL) _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-05-14 17:57:31 UTC (rev 15280) @@ -121,8 +121,8 @@
string Directory::ReplaceVariable ( string name, - string value, - string path ) + string value, + string path ) { size_t i = path.find ( name ); if ( i != string::npos ) @@ -131,9 +131,9 @@ return path; }
-string +/* static */ string Directory::GetEnvironmentVariablePathOrDefault ( const string& name, - const string& defaultValue ) + const string& defaultValue ) { const string& environmentVariableValue = Environment::GetVariable ( name ); if ( environmentVariableValue.length () > 0 ) @@ -142,21 +142,21 @@ return defaultValue; }
-string +/* static */ string Directory::GetIntermediatePath () { return GetEnvironmentVariablePathOrDefault ( "ROS_INTERMEDIATE", "obj-i386" ); }
-string +/* static */ string Directory::GetOutputPath () { return GetEnvironmentVariablePathOrDefault ( "ROS_OUTPUT", "output-i386" ); }
-string +/* static */ string Directory::GetInstallPath () { return GetEnvironmentVariablePathOrDefault ( "ROS_INSTALL", @@ -165,7 +165,7 @@
void Directory::ResolveVariablesInPath ( char* buf, - string path ) + string path ) { string s = ReplaceVariable ( "$(INTERMEDIATE)", GetIntermediatePath (), path ); s = ReplaceVariable ( "$(OUTPUT)", GetOutputPath (), s ); @@ -175,7 +175,7 @@
void Directory::GenerateTree ( const string& parent, - bool verbose ) + bool verbose ) { string path;
@@ -355,6 +355,7 @@ GenerateInstallTarget (); GenerateDirectoryTargets (); GenerateDirectories (); + UnpackWineResources (); CheckAutomaticDependencies (); CloseMakefile (); } @@ -637,7 +638,23 @@ fprintf ( fMakefile, "\n" ); }
+string +MingwBackend::GetBin2ResExecutable () +{ + return NormalizeFilename ( Directory::GetOutputPath () + SSEP + "tools/bin2res/bin2res" + EXEPOSTFIX ); +} + void +MingwBackend::UnpackWineResources () +{ + printf ( "Unpacking WINE resources..." ); + WineResource wineResource ( ProjectNode, + GetBin2ResExecutable () ); + wineResource.UnpackResources ( verbose ); + printf ( "done\n" ); +} + +void MingwBackend::CheckAutomaticDependencies () { printf ( "Checking automatic dependencies..." ); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-05-14 17:57:31 UTC (rev 15280) @@ -37,17 +37,17 @@
std::string EscapeSpaces ( std::string path ); void CreateRule ( FILE* f, const std::string& parent ); + static std::string GetIntermediatePath (); + static std::string GetOutputPath (); + static std::string GetInstallPath (); private: bool mkdir_p ( const char* path ); std::string ReplaceVariable ( std::string name, std::string value, std::string path ); std::string GetEnvironmentVariable ( const std::string& name ); - std::string GetEnvironmentVariablePathOrDefault ( const std::string& name, - const std::string& defaultValue ); - std::string GetIntermediatePath (); - std::string GetOutputPath (); - std::string GetInstallPath (); + static std::string GetEnvironmentVariablePathOrDefault ( const std::string& name, + const std::string& defaultValue ); void ResolveVariablesInPath ( char* buf, std::string path ); bool CreateDirectory ( std::string path ); @@ -90,6 +90,8 @@ std::string GetBuildToolDependencies () const; void GenerateInitTarget () const; void GenerateXmlBuildFilesMacro() const; + std::string GetBin2ResExecutable (); + void UnpackWineResources (); void CheckAutomaticDependencies (); bool IncludeDirectoryTarget ( const std::string& directory ) const; bool TryToDetectThisCompiler ( const std::string& compiler ); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-05-14 17:57:31 UTC (rev 15280) @@ -1848,7 +1848,7 @@
deps[i].c_str () );
fprintf ( fMakefile, " | %s\n", - GetDirectory ( GetTargetFilename ( module, NULL ) ).c_str () ); + GetDirectory ( GetImportLibraryFilename ( module, NULL ) ).c_str () );
fprintf ( fMakefile, "\t$(ECHO_DLLTOOL)\n" );
@@ -2236,34 +2236,10 @@ void MingwWin32DLLModuleHandler::Process () { - GenerateExtractWineDLLResourcesTarget (); GenerateWin32DLLModuleTarget (); }
void -MingwWin32DLLModuleHandler::GenerateExtractWineDLLResourcesTarget () -{ - fprintf ( fMakefile, ".PHONY: %s_extractresources\n\n", - module.name.c_str () ); - fprintf ( fMakefile, "%s_extractresources: $(BIN2RES_TARGET)\n", - module.name.c_str () ); - const vector<File*>& files = module.non_if_data.files; - for ( size_t i = 0; i < files.size (); i++ ) - { - File& file = *files[i]; - string extension = GetExtension ( file.name ); - if ( extension == ".rc" || extension == ".RC" ) - { - string resource = NormalizeFilename ( file.name ); - fprintf ( fMakefile, "\t$(ECHO_BIN2RES)\n" ); - fprintf ( fMakefile, "\t@:echo ${bin2res} -f -x %s\n", - resource.c_str () ); - } - } - fprintf ( fMakefile, "\n"); -} - -void MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget () { string targetMacro ( GetTargetMacro (module) ); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-05-14 17:57:31 UTC (rev 15280) @@ -291,7 +291,6 @@
virtual HostType DefaultHost() { return HostFalse; } virtual void Process (); private: - void GenerateExtractWineDLLResourcesTarget (); void GenerateWin32DLLModuleTarget (); };
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-05-14 17:57:31 UTC (rev 15280) @@ -55,6 +55,7 @@
class CompilerFlag; class LinkerFlag; class Property; +class WineResource; class AutomaticDependency; class Bootstrap; class CDFile; @@ -421,6 +422,26 @@ };
+class WineResource +{ +public: + const Project& project; + std::string bin2res; + + WineResource ( const Project& project, + std::string bin2res ); + ~WineResource (); + void UnpackResources ( bool verbose ); +private: + bool IsSpecFile ( const File& file ); + bool IsWineModule ( const Module& module ); + bool IsResourceFile ( const File& file ); + std::string GetResourceFilename ( const Module& module ); + void UnpackResourcesInModule ( Module& module, + bool verbose ); +}; + + class SourceFile { public: _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.mak --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.mak 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.mak 2005-05-14 17:57:31 UTC (rev 15280) @@ -123,6 +123,7 @@
project.cpp \ ssprintf.cpp \ stubbedcomponent.cpp \ + wineresource.cpp \ XML.cpp \ )
@@ -261,6 +262,10 @@ $(ECHO_CC) ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@
+$(RBUILD_INT_)wineresource.o: $(RBUILD_BASE_)wineresource.cpp $(RBUILD_HEADERS) | $(RBUILD_INT) + $(ECHO_CC) + ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@ + $(RBUILD_INT_)XML.o: $(RBUILD_BASE_)XML.cpp $(RBUILD_HEADERS) | $(RBUILD_INT) $(ECHO_CC) ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@ @@ -335,7 +340,6 @@
.PHONY: rbuild_test - rbuild_test: $(RBUILD_TEST_TARGET) $(ECHO_TEST) $(Q)$(RBUILD_TEST_TARGET) _____
Added: branches/xmlbuildsystem/reactos/tools/rbuild/wineresource.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/wineresource.cpp 2005-05-14 15:07:11 UTC (rev 15279) +++ branches/xmlbuildsystem/reactos/tools/rbuild/wineresource.cpp 2005-05-14 17:57:31 UTC (rev 15280) @@ -0,0 +1,100 @@
+#include "pch.h" +#include <assert.h> + +#include "rbuild.h" + +using std::string; +using std::vector; + +WineResource::WineResource ( const Project& project, + string bin2res ) + : project ( project ), + bin2res ( bin2res ) +{ +} + +WineResource::~WineResource () +{ +} + +bool +WineResource::IsSpecFile ( const File& file ) +{ + string extension = GetExtension ( file.name ); + if ( extension == ".spec" || extension == ".SPEC" ) + return true; + return false; +} + +bool +WineResource::IsWineModule ( const Module& module ) +{ + const vector<File*>& files = module.non_if_data.files; + for ( size_t i = 0; i < files.size (); i++ ) + { + if ( IsSpecFile ( *files[i] ) ) + return true; + } + return false; +} + +bool +WineResource::IsResourceFile ( const File& file ) +{ + string extension = GetExtension ( file.name ); + if ( extension == ".rc" || extension == ".RC" ) + return true; + return false; +} + +string +WineResource::GetResourceFilename ( const Module& module ) +{ + const vector<File*>& files = module.non_if_data.files; + for ( size_t i = 0; i < files.size (); i++ ) + { + if ( IsResourceFile ( *files[i] ) ) + return files[i]->name; + } + return ""; +} + +void +WineResource::UnpackResources ( bool verbose ) +{ + for ( size_t i = 0; i < project.modules.size (); i++ ) + { + if ( IsWineModule ( *project.modules[i] ) ) + { + UnpackResourcesInModule ( *project.modules[i], + verbose ); + } + } +} + +void +WineResource::UnpackResourcesInModule ( Module& module, + bool verbose ) +{ + string resourceFilename = GetResourceFilename ( module ); + if ( resourceFilename.length () == 0 ) + return; + + if ( verbose ) + { + printf ( "Unpacking resources for %s", + module.name.c_str () ); + } + + string outputDirectory = GetDirectory ( module.GetPath () ); + string parameters = ssprintf ( "-b %s -f -x %s", + NormalizeFilename ( outputDirectory ).c_str (), + NormalizeFilename ( resourceFilename ).c_str () ); + string command = bin2res + " " + parameters; + int exitcode = system ( command.c_str () ); + if ( exitcode != 0 ) + { + throw InvocationFailedException ( command, + exitcode ); + } +} Property changes on: branches/xmlbuildsystem/reactos/tools/rbuild/wineresource.cpp ___________________________________________________________________ Name: svn:eol-style + native