Jump to content
XCOMUFO & Xenocide

Can I Get Away Without Using Bcb6?


Wolfman

Recommended Posts

Hiya,

 

Is there any way I can compile the source without using BCB6? I dont ahve the £50 that it costs to buy.

 

I have got MSVC++6 and I could download DevC++/Ming if needed. Are these two IDE's/compilers right out? Or is there another solution?

 

Cheers,

 

-wolfman

Link to comment
Share on other sites

Our official compiler is supposed to be free for download. So that anyone can have it, use it and not risk breaking the build.
Link to comment
Share on other sites

I'm currently working with VCPP6 and I can compile and debug..

but I had to build the entire project, importing files, setting incude directories... very boring stuff :bash:

I'm moving to Kylix or BCB as soon as I get them

Link to comment
Share on other sites

We are changing to Borland C++ Builder Personal Edition, we will have in 3 days a licensed copy for release purposes only. Licenced under the name of Project Xenocide, bought with some money very nice people had donated this last two months. I am glad to announce that.

 

Greetings

Red Knight

Link to comment
Share on other sites

Guest Jim69
Really? Wow, that very good. Thnx in advance 2 all those who donated their cash towards this project, thats a really selfless thing 2 do IMO.
Link to comment
Share on other sites

We are changing to Borland C++ Builder Personal Edition, we will have  in 3 days a licensed copy for release purposes only. Licenced under the name of Project Xenocide, bought with some money very nice people had donated this last two months. I am glad to announce that.

 

What will this mean for us then? Do any/all programmers on the team get a licensed copy of BCB? Or does it mean something else. If the first one, how do you stop people who just join to get their hands on the software, and then just leave?

 

Thx,

 

-wolfman

Link to comment
Share on other sites

You as a programmer are left to use whatever thing you want, we cannot... the licensed copy is just to be use for building the sources that we release in executable form. And only 1 person will be in charge of doing that.

 

Greetings

Red Knight

Link to comment
Share on other sites

If anyone will succeed to compile Xenocide code with any compiler other than BCB6 enterprise edition, please organize that compiler projects in the similar order as we have for BCB6 in 'devpack\compiler' directory and make it available to public.

 

Eventually I hope there will be an online repository collecting latest projects for different compilers, so everyone will be able to benefit from them.

 

But, BCB6 Personal Edition is our official compiler at present time and if any programmer will write a code which will break a compilation using this compiler - then it got to be fixed and no 'it compiled fine on my compiler' will be accepted.

Link to comment
Share on other sites

Guest Jim69
Where can I get a ( legal ) copy of this compiler? As I've heard that some compilers add and remove some functions, so I'd like to get the same 1 as most of the other programmers. In the case of everyone using a diff 1 ( which is what I think is happening ) does ne1 know of a compiler that is free and sticks to the ISO standards.
Link to comment
Share on other sites

GCC but it is a pain to configure and make it work, certainly not for NON Hardcore Developers (read hardcore as: Not only I like fighting with the code, I like fighting with my own compiler type of guy) thats why we had drop it, certainly not for beginners.

 

By the way, you can buy a legal copy for 69 bucks...

 

Greetings

Red Knight

Link to comment
Share on other sites

I have gotten the source to compile with VC.NET, and I had to do quite a few things in order to make it work.

 

1) Download DX9, OGG, CG(nVidia), and OpenAL SDKs

2) Install and tell VC to look in the proper lib directories for all these (under Options/Projects/VCC Directories)

3) Download and compile the pnglib and zlib, slap those into proper directory

4) Throw the .dll files from OGG into the bin.

 

Don't try to use the .libs from Red Knight's devkit, they really don't like VC for some reason, gives linking errors. (no offense)

 

All in all, it took a while. Once I find my way around the code, I will hopefully have enough of an idea to post up a project file for all us Mickeysoft lovers.

Link to comment
Share on other sites

All in all, it took a while. Once I find my way around the code, I will hopefully have enough of an idea to post up a project file for all us Mickeysoft lovers.

That would be helpful, since some of our developers do not have Borland.

Link to comment
Share on other sites

Just to let everyone know, I am still working on a truly working VC++.NET devpack for us Microsoft wimps, but I am running into compiler differences between the Borland and Microsoft compiler, with RTTI. Between my stubbornness and Red Knight's knowledge, we should have this licked fairly quick. Post here with your e-mail address if you want a copy that compiles all the code, but crashes when you click, and I will find a way to get it to you.
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Feeling a bit crazy, I decided to play with MSVC devpack created by Fritz.

 

It required some work, so if anyone is going to do the same, the info below might prove useful for you:

 

- Each project required changes for 'Additional Include Directories' value. Fritz has used hardcoded value, but it is possible to speicify environment variable $(XENOCIDE) (that is right! MS uses Unix style!), which points to directory containing your source and devpack.

- It is necessary to add additional library directories and specify additional libraries (as well as to ignore libc.lib) for all executable projects and WinToolkit.

- MSVC does not understand format of libpng.lib, as I guess it was build with BCB. I have downloaded PNG sources from SourceForge, but their project creates DLL, and not static lib.

 

Here I ran out of time. I would like to finish it eventually though. Does anyone have static PNG libraries for MSVC .NET version? Or at least project file and sources to build them? I will appreciate if you will share them with me.

 

I will put updated MSVC devpack if (when) I will be able to compile and link it successfully.

Link to comment
Share on other sites

Actually, I realized later, that Xenocide uses dynamic PNG libraries. I was confused, because there were both static libraries and .lib files for linking to dynamic functions.

 

Anyway, when I was using non-static lib, I was getting linker error about unresolved __ftol2 method. Anyone knows what is it about?

Link to comment
Share on other sites

Given that you are compiling with another compiler, there is no reason you wouldnt use a static library, Ive done that cause I didnt want to make the executable (and memory footprint) bigger, but for test at home a static library is more than enough.

 

Greetings

Red Knight

Link to comment
Share on other sites

Yeah, but I did not want to deviate too much from original project. I am sure there will be more issues later, so I want to move fast.

 

I made another attempt yesterday. This time I used the latest code (the one you sent me) and it appeared that MS compiler hated exception.h class, because it had definition and declaration of RuntimeException in it. I got tons of warning in libraries and errors in executables linking. I changed the function to be inline and commented the .impl file. Then I ran out of time again, but I noticed that there were nor warnings.

 

I hated to change code like that. First, I am not sure why BCB let it trhough. Second, we are supporting MSVC, so the attempt is starting to look pointless if there will be code changes due to incompatibility of compilers.

Link to comment
Share on other sites

I guess that what you said was that the implementation of the code was on the header file via an include preprocessor call... That is the way to do it in ISO C++ if you dont want to clutter the class specification with implementation... I will have to look at it, maybe MSVC wants something else...

 

By the way if the changes are not that big (as this one) do them...

 

Greetings

Red Knight

Link to comment
Share on other sites

Had a go at compiling wth MSVC - didn't have much luck. Seem to be missing a few files, some things MSVC just doesn't like. I've attached the errors it throws up (not too bothered about the warnings for now) - maybe someone else can make sense out of them :huh:

compiler_errors.txt

Link to comment
Share on other sites

It is hard to say why are you getting those erros, because I do not know what code and devpack do you use.

 

I can upload the latest MSVC .NET devpack I have mentioned before. I also will include the code with it, so you will not need to go through the changes I made. I will post here as soon as I do that. Be prepared to download around several tens of MB. :)

 

@ Red Knight post:

Yeah, I share your passion for clear code. It could be some settings with precompiled header in MSVC, but I need to check on that.

 

Also, I am not that motivated to spend lots of time on that conversion (I would rather see game released on one compiler, than to have half-working code on many compilers). I just did it for the only one reason, that I like MSVC IDE more, but I will sacrify. :)

Link to comment
Share on other sites

Ok. I just uploaded the MSVC .NET devpack together with the code. It is here.

The file is about 3MB, so beware!

 

You would need to have an env variable called XENOCIDE, which would point to the root directory found inside of the archive.

 

Anyone who has will, power and power of will feel free to work out with that devpack, but with one condition: let everybody know about the progress you made, k?

Link to comment
Share on other sites

Hi, I don't want to beat a dead horse here, since this topic has generated a fairly extreme amount of controversy, but what is the current official stance on supporting multiple build environments.

 

I downloaded the VCNetdevpack a few days ago, and got the entire game and all examples building and running. However, I had to make 3 or 4 changes to the code in CVS (I actually used .NET 2003, which has significantly better ANSI compliance than .NET, and, as I understand it, BCB6) for the compile to work.

 

I also had to get a new version of nvparse and build and link to that lib, which caused a slew of link errors that required that I make one final correction to the code.

 

All in all, it took around 4 hours (it would have taken WAY longer if somebody hadn't already done a lot of the groundwork first).

 

So I have it all up and running now, but I don't want to have to spend an hour every time I get latest code from CVS reconfiguring project settings, creating new projects, finding libs compatible with .NET, etc.

 

 

So here are my actual questions/points

1) Please clarify unambiguosly what the officially supported build environment(s) and devpack(s) are. Where can I get them?

 

2) What is the level of interest in a VC6 / .NET / .NET 2003 devpack, however official that may be? Please note that .NET project files are incompatible with VC6, and .NET 2003 project files are incompatible with .NET 2002. Not sure about lib files generated with each one.

 

3) Why are the devpack(s) not in CVS? They could each be in, for example /xenocide/devpack_bcb6, /xenocide/devpack_NET, etc. Then to build, you simply rename that directory to /devpack and build away. I personally think it's VERY important that the build files exist in CVS since they are necessarily tightly coupled to the source in CVS. It also helps to have history on these files as sometimes things go haywire with them. It also would be nice to get everything required to build the project from one location. Finally, I _know_ I duplicated some of your work in getting .NET 2003 up and running. As well, it would be hard to share that work if the files were not in some version control repository somewhere.

 

 

Well, I guess that's my first contribution to the programming discussion board. I just really want to help make the barrier to contribution on this project as low as possible.

Link to comment
Share on other sites

The devpack idea is rather new (2 or 3 months), however as in every Open Source development you are not forced to work in specified enviroment. As a difference with other projects we have something to fear if for instance Atari (You know them) wants to shutdown the project because of copyright infridgement of something as had happened to other Open Source projects. So we have our LEGAL BOUGHT copy of the compiler to release in binary and that is BCB6. So anyone is free to create a similar one to every compiler as long as we dont officially build with them. Code is code, however a binary is another thing.

 

About being in the CVS we though to do that, but CVS do not have binary compatibility for difs and until we dont have a Stable one we are keeping them outside. Our space in sourceforge is finite and storing lots of binary files with multiple versions in there is space wise.

 

If you have any further question, just ask.

 

Greetings

Red Knight

Link to comment
Share on other sites

1)  Please clarify unambiguosly what the officially supported build environment(s) and devpack(s) are.  Where can I get them?

Officially supported build environment is Borland C Builder 6 Personal Edition. As RK mentioned we have bought an official license and we will use it for all our releases.

2)  What is the level of interest in a VC6 / .NET / .NET 2003 devpack, however official that may be?  Please note that .NET project files are incompatible with VC6, and .NET 2003 project files are incompatible with .NET 2002.  Not sure about lib files generated with each one.

It seemed to be quite popular among project members. I personally like it better than BCB6. However, due to fact that our final code must compile on BCB6, there were only private efforts to convert our code from BCB6 to MSVC. You are the first one who succeeded in that, as far as I know. Additionally, there is a concern that if developers will start to modify code in CVS using one IDE, it might broke the functionality (and even compilation) for developers who is using other IDEs. Noone can guarantee that the code will work with other compilers until code is tested there.

3)  Why are the devpack(s) not in CVS?  They could each be in, for example /xenocide/devpack_bcb6, /xenocide/devpack_NET, etc.  Then to build, you simply rename that directory to /devpack and build away.  I personally think it's VERY important that the build files exist in CVS since they are necessarily tightly coupled to the source in CVS.  It also helps to have history on these files as sometimes things go haywire with them.  It also would be nice to get everything required to build the project from one location.  Finally, I _know_ I duplicated some of your work in getting .NET 2003 up and running.  As well, it would be hard to share that work if the files were not in some version control repository somewhere.

I understood that you meant to keep project files as well as binaries. RK has already explained about binary constriction we have. As regarding to project file, then it is quite possible, but great care should be taken when someone modifies the file so not to break other developers configuration. I guess it could be achieved by imposing some rules, environment variables, etc. However, BCB6 inserts entries for directories without explicit programmer actions. So, I am very cautios about that too.

 

Please suggest ways how we can go around those issues if you can think of any.

 

Also, could you please share that working devpack for MSVC?

Link to comment
Share on other sites

Additionally, there is a concern that if developers will start to modify code in CVS using one IDE, it might broke the functionality (and even compilation) for developers who is using other IDEs. Noone can guarantee that the code will work with other compilers until code is tested there.

 

I agree. This is a non-trivial problem. One of my recent Real World tasks was maintaing the GameCube port of a game. The primary platform was XBox, and we also had a PS2 port. As such, we had 3 separate build environments by necessity. I would estimate that amortized over time, I spent approx. 2 hours per week making sure that I was compiling the appropriate files, including the appropriate headers, building the appropriate libraries, linking the appropriate libs, and dealing with compiler incompatibility issues (though in practice this was minimal as the game team did not heavily use advanced C++ features).

 

It is also obviously a solvable problem if this is a goal, but may be beyond current project resources.

 

RK has already explained about binary constriction we have.

 

I'm sorry, I was unaware of the specific restrictions. Is it that sourceforge limits the size of the repository?

 

As regarding to project file, then it is quite possible, but great care should be taken when someone modifies the file so not to break  other developers configuration. I guess it could be achieved by imposing some rules, environment variables, etc. However, BCB6 inserts entries for directories without explicit programmer actions. So, I am very cautios about that too.

 

I have little to no knowledge of BCB6 and how it structures projects. However, MSVC contains all build parameters in the .dsp/.vcproj file, and then maintains the list of projects in a .dsw/.sln file. These are reasonably small ( typically < 100k even for sizable projects ) and text. User specific options are kept in other files, such as .suo and .bsc files. But all you need to build the project can be self-contained in the .dsp / .dsw combination. Additionally, if all files are off a common root folder (as Xenocide is currently structured), all paths can be made relative (like ../../xenoengine/src), and as such it's possible to even do away with environment variables.

 

It is a significant burden to require each developers to have to know how to and remember to add and remove the appropriate files from their project each time they get code. As well, these files are tightly coupled to the source. And finally it's beneficial to have version control / labeling capabilities for these files.

 

If everyone builds using these files, then there shouldn't be many situations where a developer checks in one that breaks the build. And if they do, you can simply get the last version of the file that doesn't break the build since CVS will be keeping history.

 

 

I understand that .lib files for things such as opanal and cg may need to be a separate download. This is less of a problem since these change significantly less often in practice.

 

Also, could you please share that working devpack for MSVC?

 

Sure, no problem. Well... actually a couple of problems.

1) It's for .NET 2003, not .NET. I assume most people don't have 2003. I have .NET 2002 installed as well, I can go through the same steps for 2002 in probably less than an hour.

2) It required some (minimal) changes to the code. I guess I can include a README file explaining those.

3) I don't really have a good place to upload it. Speaking of which. I've heard talk of a repository at xenocide-repository.net which may contain some docs worth reading, but I don't know how to access it.

Link to comment
Share on other sites

BCB6 behaves similar to MSVC and uses .bpg for project groups and .bpr for individual project. These are small text files. I am not sure where are user IDE preferences are stored. So, in theory we can get away by storing those files in CVS, but I am afraid they will be done and redone very often.

 

Biggest problem is to have code modified in two different IDEs. Since we do not have an official builder now, it is a problem to maintain code compilable and working under two IDEs. That would require that someone will do compilation of the same code in both IDEs and it would require to obtain a legal version of MSVC. Unless we will keep MSVC version unofficial, but that still would require a person who uses MSVC to verify that code is working under BCB6. Well, I guess you got my point already. Another possibility is to switch to MSVC completely, but I would like to see other reasons to do that as well.

 

Again, I guess you see the problem, but unfortunately there are no easy ways around it.

Link to comment
Share on other sites

Yeah, on our last project we had just under 300 changes to our main librarie's .dsp. However, _someone_ has to make those changes, because otherwise the IDE won't know how to build your code when you add or remove files, change directory structures, link to new libraries, etc. So you might as well put it under source control and get the benefits of history, labeling, and being able to retrive it from the same location as your code, IMHO.

 

It seems to me like the VC version should definitely remain unofficial. There are no truly undeniable reasons to switch to it that I can see, and it's quite an expensive product.

 

Personally, I'm still waffling on whether or not to try and stick it out unofficially through VC or pick up BCB6.

Link to comment
Share on other sites

As much as I prefer to work with MSVC myself, I don't think we should create code changes on two IDEs until we will get a person who would do that work and guarantee testing of functionality on both IDEs.

 

As for keeping devpack in CVS, I think we can do following. All the binaries and third-party headers, which are not going to be changed often could be separated in an archive and put on Sourceforge as released files to download. The project files and project groups could be put in CVS in separate subdirectories (devpack???) and Access Control List should be setup in such way that only limited number of developers could write there. A developer will need to earn trust to be allowed to modify projects, and in the mean time the project files will be updated by admins and the trusted developers. I think this should work out pretty well in the future. For now we do not have such problem as only 2 (count them all!) developers are currently doing commits into CVS.

 

P.S.: Are we still on for tonights' chat?

Edited by mamutas
Link to comment
Share on other sites

×
×
  • Create New...