[freefalcon-developers] Compiler and Make stuff

  • From: Peter Meyer <pmvstrm@xxxxxxxx>
  • To: freefalcon-developers@xxxxxxxxxxxxx
  • Date: Wed, 16 Jan 2013 22:07:21 +0100

Hi Vinny

I like the direction that you're taking this. I guess I may as well comment individually:

Your welcome :-)


   1) The Entire FreeFalcon Sourcecodes are migrated to Visual Studio
   2010 SP1 (Express doesnt work, because it has no MFC Support)


Is there any reason that you didn't go for MSVS 2012? I assume that you're sticking to 2010 for compatibility with WinXP, which is understandable.

Basicly this is iam working on Windows Vista and VS2012 dont run on Vista, but there is no Problem to use Visual Studio 2012 involved just for a building. Once we use CMake this will be a lot easier and any developer can use the Compiler he likes most.

But once we have removed the MFC Libs, the entire FreeFalcon Solution can be compiled with the VS 2010/2012 Express Vision wich doesnt cost any thing. Just VS201x and the Windows Platform 7.1 ISO is needed to get a full fledged build. I think we shouldnt not force anyone in the Future to buy M$ Licenses just to be able to compile FreeFalcon. For now we need the DirectX 8.1 SDK Headers to get it compiled (just unzip DX81SDK where ever you like and Register a Windows Env Variable DX81_SDK wich points to c:\dx81sdk\ so Visual C/C++ Compiler find the DX
Headers and Libs.

Note:
I tested the Intel Compiler V13, wich is way faster but not fee. FFViper.exe. I found out it runs much faster then if the build is done with the normal VS2010 Compiler (but this is only childplay).


   5) The Build Targets Release will compiled in build/win32_release
   the Debug build will generated in build/win32_debug


Should probably be made configurable, but that's easy enough and not a priority.

There is a bit more after this, it think i give a little description to be clear:


Root Dir:
c:\myprojects\GitHub\FreeFalcon
<-- This sould allways the normal checkout Dir after doing a GitHub clone.

\FreeFalcon\build\
<-- This is allways the Output Directory for any sort of Compiler generated stuff, to keep all other Folders clean.

Right now we can only compile 32-Bit Win32 targets but after we get rid of some of the old MS Dependencies
64-Bit should be no Problem.

In to the detail:
If a Windows 32 Bit Debug build is running, it looks like this:
\FreeFalcon\build\x86\debug_win32\*.*
(All Debug Symbols are turned on, no Optimization, stop and continue debugging enabled)

If a Windows 32 Bit Release build is running, it looks like this:
\FreeFalcon\build\x86\release_win32\*.*
(All Optimization, SSE2 Support, are produced, Debug Symbols are turned off)

In both cases the preporcessor Macros for avoiding properitary MS VC Compiler Warnings _CRT are in force, so it might be a lot of warnings if you migrate to VS2012, but this Warnings are only MS nonsense and attemp
to write Windows only code, so this souldnt bother us.

** not implemented yet**
If Win64 builds are done,
it should looks like this \FreeFalcon\build\x86\release_win64\*.* and \FreeFalcon\build\x86\debug_win64\*.*

** not implemented yet**
If Mac32 builds are done, (not implemented yet)
\FreeFalcon\build\x86\release_osx32\*.* and \FreeFalcon\build\x86\release_osx32\*.*
for Mac 64-Bit
\FreeFalcon\build\x86\release_osx64\*.* and \FreeFalcon\build\x86\release_osx64\*.*

** not implemented yet**
for Linux
\FreeFalcon\build\x86\release_linux32\*.* and \FreeFalcon\build\x86\release_linux32\*.* \FreeFalcon\build\x86\release_linux64\*.* and \FreeFalcon\build\x86\release_linux64\*.*

** not implemented yet**
Deployment -> Setup/Installer Packages:
This should be generated here:
\FreeFalcon\deploy\x86\win32\FreeFalcon_<version>_x86.msi (OpenSource WIX Installer System) \FreeFalcon\deploy\x86\win64\FreeFalcon_<version>_x64.msi (OpenSource WIX Installer System)

And of cause DMG Files for Macs and *.deb and *.rpm Installer Files for the Ubuntu and RedHat based
Linux Distros :-)


   7) There is an Startupbug in the Weather.lib Module wich isnt solved
   right now, but prevents FFViper.exe to get started.


I'll see if I can diagnose that as soon as I get home.

The Entire Solution, which includes all Sub Projects is in "\FreeFalcon\FreeFalcon.sln" just open it and right click on the FFViper Project and select build, all dependecies should be compiled (as long as you have installed the DX81 SDK and registered the Windows Env Var and the Windows SDK 7.1

The Windows SDK 7.1 can be found here:
http://www.microsoft.com/en-us/download/details.aspx?id=8279

The Direct X 8.1 Headers and Libs can be found here:
http://pmvstrm.tipido.net/libs/DX81SDK.iso

Just open it with Winrar/7zp or Deamon Tools and place it in DX81SDK and make the Win Env var point to it.(Maybe we can find some other place to place it, as long as we need it).


   Ranger emailed me some parts of FreeFalcon and it is not exactly the
   FreeFalcon 6.0 Codebase, because the former Coder has
   done some hide and seek play so we was forced to repair the broken
   parts.


Yeah, some parts, namely packaging as an installer, will probably need to be re-implemented (and could probably be done better than it has been done previously).

Yeah on Windows MSI Files should be the first choice to solve problems with Admin Permissions and the UAC System wich was
integrated with Vista.


   Future Roadmap:

   1) Switching over to the CMake OpenSource Crossplatform Buildsystem


Very important, this. The sooner that we can get away from Visual Studio (and, eventually, Visual C++), the better. Automake is also pretty popular, I'm not sure which of the two build systems would best suit this project but I'd check out both to see what you like best.

Yeah, but it runs only on POSIX Operating Systems. But GNU Make is used by CMake on Linux/Unix/Mac and on Windows it produces Visual Studio Solutions and Project Workspaces, so this makes it easy but is not implemented right now.

   2) Removing MFC/COM and DirectX and migrating to OpenGL


This is getting better and better. : )
This is a massive step to take, but once it's done, that'll be a massive dependency off our shoulders and we can finally go cross-platform.

I have checked out some Frameworks who can be used for this and i think FreeGLUT is compact and handy and it runs on top of the OpenGL Driver so there is a minimal Overhead. I evaluated GTK and GTK and SDL but this comes with a large list of dependencies wich i try to avoid where ever i can. FreeGLUT gives us everything wee need (latest GL Shader Modell Support, Window Widgets and a small Memory Footprint).

   3) GCC Compiler Support, so we can compile also on Linux and Mac.


We should ideally try to support both GCC and Clang, but GCC is of course the premiere compiler collection and should be the main priority. Coming at you from Gentoo Linux, not having to boot into Windows, which I have a long history of despising, is great news.

Yeah, why not. But i jave no experience with Clang but the Idea behind Clang sounds cool:-)

   4) Replacing WinThreading against the OpenSource Version of intel
   Thread building Blocks (Multicore Support).


More ties with Microsoft broken, excellent.

Excactly!
http://threadingbuildingblocks.org/
It can compile with the most ISO Compliant C/C++ Compilers, it is C++ OOP and works on Linux/Mac and Windows in the same Manner and reduces the headache WinThreads and Posix Threading normally causes.

All the best,
Peter

Best wishes back to ya from New Jersey, USA, and missing Europe more and more every day : P,

Vinny

P.S.: I own the FreeFalcon organisation on GitHub- if you would like to host the repository there so that we can better organise the development team, I could get the code up there and make you an admin on the organisation. Let me know what you want to do with that, I snagged the name a while back so that some asshole didn't steal it should FreeFalcon eventually want to go open source, which it now has.


Other related posts:

  • » [freefalcon-developers] Compiler and Make stuff - Peter Meyer