Opened 10 years ago

Closed 9 years ago

Last modified 13 months ago

#9137 closed patch (fixed)

Tools: create_project (Visual Studio/XCode/Code::Blocks)

Reported by: Templier Owned by: lordhoto
Priority: normal Component: Tools
Keywords: Cc:
Game:

Description

This in an entry to track progress and patches for the create_project tools (formerly create_msvc).

Goals for this project are:
- Separation of project providers into their own source files & some cleanup/abstraction
- Support for Code::Blocks
- Support for XCode
- Support for Intel C++ compiler (VS2008 only at this time)
- Support for "Verify" build configuration with Code Analysis turned on (VS2010)

Ticket imported from: #2946946. Ticket imported from: patches/1242.

Attachments (5)

TOOLS - Update batch files for new create_project tool.zip (43.3 KB ) - added by Templier 9 years ago.
1 - Update batch files in dists
TOOLS - Add revision template file.patch (616 bytes ) - added by Templier 9 years ago.
3 - Add revision template file
TOOLS - Add create_project tool.patch (134.0 KB ) - added by Templier 9 years ago.
4 - Add create_project tool
TOOLS - Remove create_msvc tool and update tools readme.patch (110.1 KB ) - added by Templier 9 years ago.
2 - Remove create_msvc and update readme
TOOLS - Add analysis build configuration.patch (23.2 KB ) - added by Templier 9 years ago.
5 - Add support for analysis build configuration

Download all attachments as: .zip

Change History (24)

comment:1 by Templier, 10 years ago

My git tree is now available on GitHub if you want to track progress on this.

The first two items are mostly complete (cleanup & Code::Blocks support) and XCode support is about halfway done.

http://github.com/Littleboy/scummvm-jt/tree/create_project

comment:2 by fingolfin, 10 years ago

Nice :). Assigning to LordHoto, the create_msvc author, to hear what he has to say about this (if anything).

comment:3 by fingolfin, 10 years ago

Owner: set to lordhoto

comment:4 by lordhoto, 10 years ago

Actually I'm having not much to say about it, currently a bit less on time and motivation for that.

comment:5 by Templier, 10 years ago

Sorry, I haven't had time to work on it since I opened this entry. While the first few changesets dealing with moving the project providers to separate files could be merged with a little bit of cleanup work, the Code::Blocks and (more so) the XCode project providers still need quite a bit more work.

I don't know when I will have the time to work on it again (probably not until May). If there is a tools GSoc project this year, some code in that tree might end up being useful as a starting point for the selected student though.

comment:6 by Templier, 9 years ago

Added a patch for the create_project tool. It implements the first two items in the list:
- Separation of project providers into their own source files & some cleanup/abstraction
- Support for Code::Blocks

The work in progress XCode support has been removed so that this patch can committed to trunk.

In addition to the two patches, the following is necessary:
- Remove all Code::Blocks generated files from dists/codeblocks
- Remove the create_msvc tool

You could also consider removing the devcpp project files. They haven't been updated since 2006 and since there is no support for mutli-project solutions, I won't be adding support for it in create_project.

If you want to see the full history instead of the big patch, it is available here: http://github.com/Littleboy/scummvm-jt/commits/create_project/

comment:7 by Templier, 9 years ago

Updated the patch with support for SCUMMVM_SVN_REVISION generation on build (in debug mode only)

This uses the SubWCRev tool (it has to be in the path) that is included with TortoiseSVN (or can be downloaded separately from https://sourceforge.net/projects/tortoisesvn/files/Tools/ ). An empty include file is also generated when running the create_project tool for fallback. The scummvm_version.h file is then force included (only as part of the scummvm project build).

Drawbacks: it forces the rebuild of the whole scummvm project on a revision change.

Note: While there is support for VS8/9, it hasn't been tested yet.

comment:8 by fingolfin, 9 years ago

Actually, only one file uses SCUMMVM_SVN_REVISION directly, namely base/internal_version.h -- and that is only to be included by base/version.cpp. Hence, it shouldn't be necessary to rebuild the whole project, this single file would suffice.

Our current Makefile buildsystem passes SCUMMVM_SVN_REVISION via a "-D" command line option, which is not very nice, as it tempts code authors to incorrectly make use of it. I consider this a bug, or at least a misfeature :).

comment:9 by Templier, 9 years ago

Yes, I know about base/internal_version.h

The alternative is to use a template to generate that file with the revision number included, so that only version.cpp is rebuilt, but it comes with its own drawback, namely the build will fail is the SubWCRev tool is not present (unless we detect it when running create_project and only put the proper code in the project files if found).

Note: the reason it needs a full rebuild in the current patch is because of the way Forced Include (or /FI) works: it forces inclusion of the include file for every source file in the project.

It might be possible to use the current method (a pre-build action) with the alternative method I descrived (that would usually use a custom build action on the template file). I will look at it and post an updated patch if it works properly.

comment:10 by Templier, 9 years ago

New patch set with the following updates:
- Corrected lib path for new pre-compiled libs
- Corrected pre-build event to look for .svn folder and handle errors gracefully
- Added post-build event to copy engine data, themes, translation and SDL.dll to build folder

comment:11 by fingolfin, 9 years ago

Nice! I was just thinking about this patch, looked here, and noticed there was an update (somehow I had missed the mail).
BTW, I also tried accessing your git repos, but <http://github.com/Littleboy/scummvm-jt/commits/create_project/> gives me an error, and <http://github.com/Littleboy/scummvm-jt/> shows nothing :(

[ As an update to the earlier discussion: After my last comment here, I went and modified the default buildsystem; now -DSCUMMVM_SVN_REVISION is *only* passed when compiling version.cpp. ]

comment:12 by fingolfin, 9 years ago

[Looking at your patches, they seem to be made using mercurial, so I guess you moved away from github?]

Some instructions as to how and in which order to apply your patches would be helpful :).

Looking at the "Add" patch, it seems to contain CRLF line endings (inside the new .ccp files, that is), that should ideally be changed to simple unix line endings (LF only). Or maybe there is a way to apply the patch that does this automatically?

by Templier, 9 years ago

1 - Update batch files in dists

by Templier, 9 years ago

3 - Add revision template file

comment:13 by Templier, 9 years ago

Hi Max!

I uploaded the last version of patches. Hopefully this fixes the line endings. The order shouldn't matter, but I numbered them and made sure they cleanly applied in that order.

I indeed switched to Mercurial and I've been using a patch queue to manage all my patches (much easier to deal with than git on windows). I'll try to have a tree up (if I can find a good way to mirror the patch queue) on GitHub or Bitbucket soon.

by Templier, 9 years ago

4 - Add create_project tool

comment:14 by Templier, 9 years ago

Updated with support for the sword25 engine

(and my patch queue is now visible here: http://bitbucket.org/Littleboy/scummvm-jt )

by Templier, 9 years ago

2 - Remove create_msvc and update readme

by Templier, 9 years ago

5 - Add support for analysis build configuration

comment:15 by Templier, 9 years ago

Added a patch with support for analysis build configuration.

The VS2010 version has been tested, but not the VS2005/2008 one.

comment:16 by Templier, 9 years ago

Any objection to merging this soon (patches 1 through 4 for now)?

comment:17 by Templier, 9 years ago

Merged into trunk in revisions r41180-48182

Support for Xcode is still unfinished, so I haven't merged it yet. The patch can be found there: http://bitbucket.org/Littleboy/scummvm-jt/src/tip/TOOLS%20-%20Add%20support%20for%20XCode%20to%20create_project.patch

comment:18 by Templier, 9 years ago

Resolution: fixed
Status: newclosed

comment:19 by digitall, 13 months ago

Component: Tools
Note: See TracTickets for help on using tickets.