[ros-dev] rbuild auto generated resources

Ged gedmurphy at gmail.com
Fri Nov 9 19:36:31 CET 2007


My only concern is Visual Studio
Whatever you do, you must make sure all projects are able to be fully 
loaded by Visual Studio 2005/2008 without the interaction of rbuild.
As one of the hopes is to make everything in ROS VS compatible and 
buildable by Visual Studio, I would consider anything moving away from 
this a regression.

Ged.


Marc Piulachs wrote:
>
> From all changes introduced on my rbuild branch auto generated 
> resources seems to be the most controversial by far so I will try to 
> explain here the design decision behind it
>
>  
>
> One of my particular obsessions is trying to optimize and automate the 
> maxium ammout of things, if something can be reasonably created 
> automatically why do it by hand?
>
>  
>
> CURRENT SITUATION
>
> =================
>
>  
>
> Currently the version common defines REACTOS_STR_FILE_DESCRIPTION , 
> REACTOS_STR_INTERNAL_NAME and REACTOS_STR_ORIGINAL_FILENAME , 
> localized resources and theme manifest are added to [modulename].rc , 
> rsrc.rc or splitted between both.
>
>  
>
> Problems:
>
>  
>
>             - Theme manifests files "manifest.xml" are architecture 
> dependent (X86)
>
>             - Duplicated content, we will have hundreds of identical 
> manifest files for every aplication
>
>             - No way to compile an aplication without manifest
>
>             - No way to compile an aplication with only specified 
> localizations
>
>             - Duplicated work, rbuild has all the information required 
> to automatically generate the defines
>
>             - If we decide to rename or introduce a new define in the 
> future we will have to edit all resources by hand.
>
>             - Resource localizations are compiled with any control , 
> the only way to check if they are included is by hand.
>
>  
>
> Advantatges to my proposal:
>
>  
>
>             - It solve all the above problems.
>
>             - Reduce man work
>
>             - Allows future changes in the format (editing the 
> resource generator source code (1 file) vs all resources files on SVN)
>
>             - It's the base to other future enchancments , when a new 
> feature is added to rbuild we have just to modify it and all modules 
> will automatically inherit it.
>
>  
>
> An most important of all , it represents a change of the model to a 
> metadata oriented build process. You describe the content  (source 
> code , resources ...) rather than the build , rbuild uses that 
> information to generate the apropiate image (as always) but this 
> information can also be used for multiple other things, analitics , 
> reports , web ....
>
>  
>
> How does it work?
>
> =================
>
>  
>
> First of all IT'S OPTIONAL , you can decide to use it or not, your choice.
>
>  
>
> We will use the eventvwr.rbuild as sample:
>
>  
>
> <?xml version="1.0"?>
>
> <module name="eventvwr" type="win32gui" installbase="system32" 
> installname="eventvwr.exe">
>
>             <include base="eventvwr">.</include>
>
>             <include base="eventvwr" root="intermediate">.</include>
>
>  
>
> ...
>
>  
>
>             <!-- Auto generated stuff -->
>
>             <automanifest>manifest.xml</automanifest>
>
>             <autoresource>auto.rc</autoresource>
>
>  
>
>             <!-- Authors -->
>
>             <developer>mpiulachs</developer>
>
>             <translator>cfinck</translator>
>
>             <translator>fireball</translator>
>
>             <translator>mpiulachs</translator>
>
>  
>
>             <metadata description="ReactOS Event Log Viewer" />
>
>  
>
>             <!-- Avialable localizations for this module -->
>
>             <localization isoname="de-DE">lang/de-DE.rc</localization>
>
>             <localization isoname="en-US">lang/en-US.rc</localization>
>
>             <localization isoname="es-ES">lang/es-ES.rc</localization>
>
>             <localization isoname="fr-FR">lang/fr-FR.rc</localization>
>
>             <localization isoname="ru-RU">lang/ru-RU.rc</localization>
>
> </module>
>
>  
>
> to turn auto resources on we have to add the <autoresource> element 
> with the name of the resource that will be created in the INTERMEDIATE 
> folder in this case it will be named "auto.rc".
>
>  
>
> It will also automatically create the apropiate manifest.xml file for 
> the architecture being build (x86 or PPC) and will reference it in 
> "auto.rc"
>
>  
>
> Also it will validate and include the localizations, even it has 
> localizations for 5 languages it will only compile those specified on 
> languages.rbuild
>
>  
>
> See attached files for autogenerated content
>
>  
>
> I tried to explain the motivation behind my changes and why I think 
> they are positive , of course I'm open to your questions , ideas or 
> comments but please be contructive and argument your point of view , 
> "I don't like it , we won't use it" as someone said is not an expected 
> opinion.
>
>  
>
> /Marc
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev



More information about the Ros-dev mailing list