CMake for the masses

Development directions, tasks, and features being actively implemented or pursued by the development team.

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 7:32 am

What the hell, no FFMpeg

That message in your cmake output to console is troubling. From the cache it looks like all the main stuff is found, but yet it still says the include dir is not found. You do have all the -dev packages for those 3 libs i mentioned installed right? I may have to wait until i get home to verify what my own run of cmake detects in detail so i can compare to yours.

Have you tried running that cmake ...ie, building vegastrike ... to see if it builds and then if it does, run ldd on it to see if it's linked to libavcodec and such. I know mine does get linked in.
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Share On:

Share on Facebook Facebook Share on Twitter Twitter Share on Digg Digg

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 8:33 am

safemode wrote:What the hell, no FFMpeg

That message in your cmake output to console is troubling. From the cache it looks like all the main stuff is found, but yet it still says the include dir is not found. You do have all the -dev packages for those 3 libs i mentioned installed right? I may have to wait until i get home to verify what my own run of cmake detects in detail so i can compare to yours.
ok, thanks. I do have the -dev of all three libraries. As for the non-dev packages, I had a hard decision to make with one of them; --there was a xxx49 and a xxx-extras-49, and they were mutually incompatible; I installed the extras.

Have you tried running that cmake ...ie, building vegastrike ... to see if it builds and then if it does, run ldd on it to see if it's linked to libavcodec and such. I know mine does get linked in.
Donno know how to build. What's the command? Cmake's help is inscrutable.
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 8:43 am

cmake is analogous to ./configure just type make like you would after ./configure


cmake creates build files. Be it automake, visual C++, etc. That's why it's so important we move as many people over to it early, because the intention is to replace having to maintain build files for each arch separately and instead maintain them all from a single cmake setup.

Once you get the hang of the fundamentals of cmake, it's incredibly easy to maintain and extend it.

Just remember, run cmake from outside of your source tree. cmake really really doesn't want you to pollute the source tree it's reading from. So just create a directory from somewhere and feed it the path to your source tree and run make from within that directory you created.
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 9:19 am

Nice colors! ;-)
(Seems faster, too; though I'm sure it's just me not having consumed enough caffeine this am.)
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 9:32 am

Lots of warnings...; but I guess that's what you're working on in your branch, so I'd better not
work on them, right?
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 9:37 am

Done.

Code: Select all
~/vs/cmake/vegastrike$ ldd vegastrike
   linux-vdso.so.1 =>  (0x00007fff6e7ff000)
   libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00007f5b5a369000)
   libboost_python-py26.so.1.40.0 => /usr/lib/libboost_python-py26.so.1.40.0 (0x00007f5b5a118000)
   libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007f5b59ea7000)
   libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f5b5a831000)
   libSM.so.6 => /usr/lib/libSM.so.6 (0x00007f5b59c9e000)
   libICE.so.6 => /usr/lib/libICE.so.6 (0x00007f5b59a83000)
   libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f5b5974d000)
   libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f5b5953b000)
   libglut.so.3 => /usr/lib/libglut.so.3 (0x00007f5b592f7000)
   libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00007f5b590de000)
   libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f5b58ed3000)
   libopenal.so.1 => /usr/lib/libopenal.so.1 (0x00007f5b58bb2000)
   libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x00007f5b5891b000)
   libpthread.so.0 => /lib/libpthread.so.0 (0x00007f5b586ff000)
   libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f5b584d2000)
   libvorbisfile.so.3 => /usr/lib/libvorbisfile.so.3 (0x00007f5b582ca000)
   libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f5b580c4000)
   libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00007f5b57e9f000)
   libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00007f5b57c78000)
   libz.so.1 => /lib/libz.so.1 (0x00007f5b57a61000)
   libexpat.so.1 => /lib/libexpat.so.1 (0x00007f5b57837000)
   libdl.so.2 => /lib/libdl.so.2 (0x00007f5b57633000)
   libutil.so.1 => /lib/libutil.so.1 (0x00007f5b57430000)
   libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f5b5711f000)
   libm.so.6 => /lib/libm.so.6 (0x00007f5b56e9b000)
   libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f5b56c84000)
   libc.so.6 => /lib/libc.so.6 (0x00007f5b56914000)
   librt.so.1 => /lib/librt.so.1 (0x00007f5b5670c000)
   libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x00007f5b553e6000)
   libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0x00007f5b552e3000)
   libuuid.so.1 => /lib/libuuid.so.1 (0x00007f5b550de000)
   libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f5b54ec2000)
   libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f5b54cbe000)
   libXt.so.6 => /usr/lib/libXt.so.6 (0x00007f5b54a58000)
   libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f5b54777000)
   libdirectfb-1.2.so.0 => /usr/lib/libdirectfb-1.2.so.0 (0x00007f5b544ec000)
   libfusion-1.2.so.0 => /usr/lib/libfusion-1.2.so.0 (0x00007f5b542e2000)
   libdirect-1.2.so.0 => /usr/lib/libdirect-1.2.so.0 (0x00007f5b540c7000)
   /lib64/ld-linux-x86-64.so.2 (0x00007f5b5a80d000)
   libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f5b53ec1000)


Code: Select all
~/vs/cmake/vegastrike$ ldd vegaserver
   linux-vdso.so.1 =>  (0x00007fffe0bbb000)
   libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00007f76f3d4e000)
   libboost_python-py26.so.1.40.0 => /usr/lib/libboost_python-py26.so.1.40.0 (0x00007f76f3afd000)
   libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007f76f388c000)
   libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f76f4216000)
   libSM.so.6 => /usr/lib/libSM.so.6 (0x00007f76f3683000)
   libICE.so.6 => /usr/lib/libICE.so.6 (0x00007f76f3468000)
   libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f76f3132000)
   libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f76f2f20000)
   libglut.so.3 => /usr/lib/libglut.so.3 (0x00007f76f2cdc000)
   libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00007f76f2ac3000)
   libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f76f28b8000)
   libopenal.so.1 => /usr/lib/libopenal.so.1 (0x00007f76f2597000)
   libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x00007f76f2300000)
   libpthread.so.0 => /lib/libpthread.so.0 (0x00007f76f20e4000)
   libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f76f1eb7000)
   libvorbisfile.so.3 => /usr/lib/libvorbisfile.so.3 (0x00007f76f1caf000)
   libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f76f1aa9000)
   libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00007f76f1884000)
   libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00007f76f165d000)
   libz.so.1 => /lib/libz.so.1 (0x00007f76f1446000)
   libexpat.so.1 => /lib/libexpat.so.1 (0x00007f76f121c000)
   libdl.so.2 => /lib/libdl.so.2 (0x00007f76f1018000)
   libutil.so.1 => /lib/libutil.so.1 (0x00007f76f0e15000)
   libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f76f0b04000)
   libm.so.6 => /lib/libm.so.6 (0x00007f76f0880000)
   libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f76f0669000)
   libc.so.6 => /lib/libc.so.6 (0x00007f76f02f9000)
   librt.so.1 => /lib/librt.so.1 (0x00007f76f00f1000)
   libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x00007f76eedcb000)
   libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0x00007f76eecc8000)
   libuuid.so.1 => /lib/libuuid.so.1 (0x00007f76eeac3000)
   libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f76ee8a7000)
   libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f76ee6a3000)
   libXt.so.6 => /usr/lib/libXt.so.6 (0x00007f76ee43d000)
   libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f76ee15c000)
   libdirectfb-1.2.so.0 => /usr/lib/libdirectfb-1.2.so.0 (0x00007f76eded1000)
   libfusion-1.2.so.0 => /usr/lib/libfusion-1.2.so.0 (0x00007f76edcc7000)
   libdirect-1.2.so.0 => /usr/lib/libdirect-1.2.so.0 (0x00007f76edaac000)
   /lib64/ld-linux-x86-64.so.2 (0x00007f76f41f2000)
   libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f76ed8a6000)
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 10:19 am

ok, so you dont have any ffmpeg libs linked in because it failed to find a header it was looking for.

If you have all the pkgs mentioned installed, then i'll need to verify the paths of the various detected headers and libs are so i can compare them to what you have and see if this is an issue with a missing standard search path or if you're missing something or if mine is detecting a self-compiled header in /usr/local and not using a distro installed header (that may be in a non-standard type location).

For now, i would not worry about it. The only animation we have in the game is the video instructor guy when you start a new game. If you can see him (shows up as a com window popup in your cockpit) then i guess we currenly dont use ffmpeg for anything at the moment. I wont be back home at the computer for 6 hours.


Do you notice if cmake build takes less time than autoconf's? such discrepencies are possible due to how i have cmake organize it's static libs vs how we have autoconf's
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 10:45 am

Yeah, I do see the guy's animation when I start a new game; it probably uses multiple images rather than ffmpeg.
And yes; I'm pretty sure it took a lot less time than autotools to build, though I didn't time it.
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 11:04 am

What cmake builds under by default is -O0, maintainer mode. This is basically the baseline. If it fails to build here, then we know it's bad code and nothing to do with the compiler.

You can change your mode via either ccmake in your build dir or running cmake -i <path-to-source> and hitting enter until you reach Build target (or Build mode), it will be default Maintainer, but you can type in Release and it will then give you the CXXFLAGS it will use, you can customize this too. Release build flags default to -O2 and with debug symbols (though, not full debug symbols).

I usually remove the debug symbols when i want to test out a release build. Brings the VS bin down to about 7.5MB after being stripped. You can expect the regular Maintainer mode build to be about 12MB after stripping. at least in 64bit land.
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 11:25 am

Code: Select all
Couldn't find any package matching "ccmake".  However, the following
packages contain "ccmake" in their description:
  cmake-curses-gui xutils-dev
No packages will be installed, upgraded, or removed.


Running cmake -i ...

Default is O3 right now for Release.
No way to copy the flags and edit them... :(
Gazillions of pointer aliasing warnings in the collide library, with O3.
Ctrl-C.

Running cmake -i again, to choose Release with debug (whose default is O2).

Uh, no; RelWithDebInfo's default is -O0

There should be a better way of changing optimization level than this cmake -i monstruosity...

Building, anyways; not sure what for, now.

EDIT:
Question: Is cmake configured to build --with-data-dir or something? I don't understand... I tried, just for the
hell of it, double-clicking on vegastrike in the cmake build folder, expecting the engine to crash from not
knowing where the game data is; but --to my utter amazement--, the game started normally !?!?!?! :shock:

EDIT2:
Crapped out:
Code: Select all
In file included from /usr/include/boost/python/object/function_handle.hpp:8,
                 from /usr/include/boost/python/converter/arg_to_python.hpp:19,
                 from /usr/include/boost/python/call.hpp:15,
                 from /usr/include/boost/python/object_core.hpp:12,
                 from /usr/include/boost/python/object.hpp:9,
                 from /home/d/vs/repo/trunk/vegastrike/src/python/python_class.h:25,
                 from /home/d/vs/repo/trunk/vegastrike/src/python/unit_exports.h:1,
                 from /home/d/vs/repo/trunk/vegastrike/src/python/unit_exports1.cpp:3:
/usr/include/boost/python/detail/caller.hpp: In static member function ‘static const PyTypeObject* boost::python::detail::converter_target_type<ResultConverter>::get_pytype() [with ResultConverter = boost::python::to_python_value<const QVector&>]’:
/usr/include/boost/python/detail/caller.hpp:242:   instantiated from ‘static boost::python::detail::py_func_sig_info boost::python::detail::caller_arity<1u>::impl<F, Policies, Sig>::signature() [with F = QVector (UnitWrapper::*)(), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector2<QVector, UnitWrapper&>]’
/usr/include/boost/python/object/py_function.hpp:48:   instantiated from ‘boost::python::detail::py_func_sig_info boost::python::objects::caller_py_function_impl<Caller>::signature() const [with Caller = boost::python::detail::caller<QVector (UnitWrapper::*)(), boost::python::default_call_policies, boost::mpl::vector2<QVector, UnitWrapper&> >]’
/home/d/vs/repo/trunk/vegastrike/src/python/unit_exports.h:91:   instantiated from here
/usr/include/boost/python/detail/caller.hpp:102: error: ‘struct boost::python::detail::caller_arity<1u>::impl<F, Policies, Sig>::operator()(PyObject*, PyObject*) [with F = QVector (UnitWrapper::*)(), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector2<QVector, UnitWrapper&>]::result_converter’ has no member named ‘get_pytype’
/usr/include/boost/python/detail/caller.hpp: In static member function ‘static const PyTypeObject* boost::python::detail::converter_target_type<ResultConverter>::get_pytype() [with ResultConverter = boost::python::to_python_value<const Vector&>]’:
/usr/include/boost/python/detail/caller.hpp:242:   instantiated from ‘static boost::python::detail::py_func_sig_info boost::python::detail::caller_arity<2u>::impl<F, Policies, Sig>::signature() [with F = Vector (UnitWrapper::*)(UnitWrapper), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector3<Vector, UnitWrapper&, UnitWrapper>]’
/usr/include/boost/python/object/py_function.hpp:48:   instantiated from ‘boost::python::detail::py_func_sig_info boost::python::objects::caller_py_function_impl<Caller>::signature() const [with Caller = boost::python::detail::caller<Vector (UnitWrapper::*)(UnitWrapper), boost::python::default_call_policies, boost::mpl::vector3<Vector, UnitWrapper&, UnitWrapper> >]’
/home/d/vs/repo/trunk/vegastrike/src/python/unit_exports.h:91:   instantiated from here
/usr/include/boost/python/detail/caller.hpp:102: error: ‘struct boost::python::detail::caller_arity<2u>::impl<F, Policies, Sig>::operator()(PyObject*, PyObject*) [with F = Vector (UnitWrapper::*)(UnitWrapper), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector3<Vector, UnitWrapper&, UnitWrapper>]::result_converter’ has no member named ‘get_pytype’
make[2]: *** [CMakeFiles/engine_com.dir/src/python/unit_exports1.o] Error 1
make[1]: *** [CMakeFiles/engine_com.dir/all] Error 2
make: *** [all] Error 2
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 11:38 am

ccmake is the preferred way to really getting into customizing it. It's much easier than cmake -i .

your data dir is saved in your config file i believe. after you first run it.

But there are numerous default lookups vegastrike has to finding it. If you have it in some "standard" path, it will find it without running vs within the data dir.

Time to try compiling under python 2.5 :)

Last time the python was edited really for a version of python was 2.3, 2.4 and 2.5 worked out of the box. 2.6 may be another story. Only way to know is to use 2.5 and see if it crashes.

Note: I use 2.5 and i've never had python crap out on me.

edit, wait was that build from some build you modified the CXXFLAGS from? you need the -DNO_PY_SIGNATURES or whatever flag .. i thought i added them to every build type we define. You may have selected a build type we dont currently define but may be some default standard type cmake supports. We do "Maintainer" "Release" and "Debug" i believe.
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 11:50 am

safemode wrote:ccmake is the preferred way to really getting into customizing it. It's much easier than cmake -i .

So, which should I install?; cmake-curses-gui?, or xutils-dev? There's no "ccmake" in the repos I got in aptitude.

your data dir is saved in your config file i believe. after you first run it.

But there are numerous default lookups vegastrike has to finding it. If you have it in some "standard" path, it will find it without running vs within the data dir.

This could be bad for someone who likes to play all the vs mods.

Time to try compiling under python 2.5 :)

Last time the python was edited really for a version of python was 2.3, 2.4 and 2.5 worked out of the box. 2.6 may be another story. Only way to know is to use 2.5 and see if it crashes.

Note: I use 2.5 and i've never had python crap out on me.
Before you forget, the Release default is -O3; needs to be -O2 or vegaserver segfaults.
I don't know where to change it, or else I'd be doing it myself.

edit, wait was that build from some build you modified the CXXFLAGS from? you need the -DNO_PY_SIGNATURES or whatever flag .. i thought i added them to every build type we define. You may have selected a build type we dont currently define but may be some default standard type cmake supports. We do "Maintainer" "Release" and "Debug" i believe.

Yes, I picked RelWithDebInfo; I thought that's what you meant you used.
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 12:22 pm

chuck_starchaser wrote:
safemode wrote:ccmake is the preferred way to really getting into customizing it. It's much easier than cmake -i .

So, which should I install?; cmake-curses-gui?, or xutils-dev? There's no "ccmake" in the repos I got in aptitude.

your data dir is saved in your config file i believe. after you first run it.

But there are numerous default lookups vegastrike has to finding it. If you have it in some "standard" path, it will find it without running vs within the data dir.

This could be bad for someone who likes to play all the vs mods.


cmake-curses-gui is the one you want. this will give you ccmake. which is very cool if you ever need to veer from defaults. Though,i haven't used it in a while. I believe you use it in-place of cmake ...rather than after. so you would do ccmake <path to source> rather than cmake.

mods will behave as normal, because those mods have means of executing vegastrike so it finds their config first. if you have multiple mods installed, you can't expect vegastrike to know which one you happen to want to play magically. It just has some default lookups and it's config file to go by. One can't supply it with more than one data dir. There is a mod-dir but this can only be overloaded by one mod.

Otherwise you need a seperate data dir for each mod and have to execute it from there.

There's nothing wrong with this setup, it's been like this forever.
Time to try compiling under python 2.5 :)

Last time the python was edited really for a version of python was 2.3, 2.4 and 2.5 worked out of the box. 2.6 may be another story. Only way to know is to use 2.5 and see if it crashes.

Note: I use 2.5 and i've never had python crap out on me.
Before you forget, the Release default is -O3; needs to be -O2 or vegaserver segfaults.
I don't know where to change it, or else I'd be doing it myself.


in cmakelists.txt down near the bottom line 476 and 479, just change -O3 to -O2 and get rid of the -g3 while you're at it.

edit, wait was that build from some build you modified the CXXFLAGS from? you need the -DNO_PY_SIGNATURES or whatever flag .. i thought i added them to every build type we define. You may have selected a build type we dont currently define but may be some default standard type cmake supports. We do "Maintainer" "Release" and "Debug" i believe.

Yes, I picked RelWithDebInfo; I thought that's what you meant you used.


That error is almost always the result of the PY_SIGNATURES define not being set. If you have that as an active CXXFLAG when you compile that file that gets the error ....then i wonder if python 2.6 changed, but since you built it before just fine, then i'm wondering if you may have accidentally cleared the CXXFLAGS following the choosing of RelWithDebInfo or whichever mode you chose when you got that error.

I know the cmakelist.txt file has it listed for all target modes. but cmake -i will ask you to modify those flags.

You can probably skip the -i mode of cmake and just use
cmake -DCMAKE_BUILD_TYPE=Release <path to source>
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 1:04 pm

safemode wrote:cmake-curses-gui is the one you want. this will give you ccmake. which is very cool if you ever need to veer from defaults. Though,i haven't used it in a while. I believe you use it in-place of cmake ...rather than after. so you would do ccmake <path to source> rather than cmake.

Got it. Used it.

mods will behave as normal, because those mods have means of executing vegastrike so it finds their config first. if you have multiple mods installed, you can't expect vegastrike to know which one you happen to want to play magically. It just has some default lookups and it's config file to go by. One can't supply it with more than one data dir. There is a mod-dir but this can only be overloaded by one mod.

Gottcha.

in cmakelists.txt down near the bottom line 476 and 479, just change -O3 to -O2 and get rid of the -g3 while you're at it.

Done. Building for Release now. If it works, I'll commit CMakeLists.txt.
Huge number of warnings about aliasing strict rule violations in the collide library, BTW,
Code: Select all
... dereferencing type-punned pointer will break strict-aliasing rules

But it's still building...

That error is almost always the result of the PY_SIGNATURES define not being set. If you have that as an active CXXFLAG when you compile that file that gets the error ....then i wonder if python 2.6 changed, but since you built it before just fine, then i'm wondering if you may have accidentally cleared the CXXFLAGS following the choosing of RelWithDebInfo or whichever mode you chose when you got that error.
No idea. Not intentionally. And I don't think so, I only changed one thing; the target; then pressed enter until I was out of the monster's grip.

I know the cmakelist.txt file has it listed for all target modes. but cmake -i will ask you to modify those flags.

You can probably skip the -i mode of cmake and just use
cmake -DCMAKE_BUILD_TYPE=Release <path to source>
Ok. I just used ccmake and it seems to work, tho.
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 1:09 pm

ok.


about the warning:
yea, i'll have to go look into what it is complaining about. Saw it last night but couldn't get into it. I usually just build with Maintainer mode (-O0). Those warnings dont get generated there, so it's related to something turned on by -O2. probably a minor edit that just needs to be applied all over the place.
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania

Re: CMake for the masses

Postby chuck_starchaser » Mon Mar 01, 2010 1:50 pm

Code: Select all
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h: In function ‘bool IsNAN(float)’:
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h:30: warning: dereferencing type-punned pointer will break strict-aliasing rules
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h: In function ‘bool IsIndeterminate(float)’:
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h:31: warning: dereferencing type-punned pointer will break strict-aliasing rules
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h: In function ‘bool IsPlusInf(float)’:
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h:32: warning: dereferencing type-punned pointer will break strict-aliasing rules
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h: In function ‘bool IsMinusInf(float)’:
/home/d/vs/repo/trunk/vegastrike/src/cmd/collide2/Ice/IceFPU.h:33: warning: dereferencing type-punned pointer will break strict-aliasing rules


Looking at the file,
Code: Select all
   //! Integer representation of a floating-point value.
   #define IR(x)               ((udword&)(x))

   //! Signed integer representation of a floating-point value.
   #define SIR(x)               ((sdword&)(x))

   //! Absolute integer representation of a floating-point value
   #define AIR(x)               (IR(x)&0x7fffffff)

   //! Floating-point representation of an integer value.
   #define FR(x)               ((float&)(x))
   
   //! Is the float valid ?
   inline_ bool IsNAN(float value)            { return (IR(value)&0x7f800000) == 0x7f800000;   }
   inline_ bool IsIndeterminate(float value)   { return IR(value) == 0xffc00000;            }
   inline_ bool IsPlusInf(float value)         { return IR(value) == 0x7f800000;            }
   inline_ bool IsMinusInf(float value)      { return IR(value) == 0xff800000;            }

Using an old cast to reinterpret a float as a ***reference*** to a udword?
What the hell?
Aren't there standard float tests in math.h? Why are these guys rolling their own?
User avatar
chuck_starchaser
Elite
Elite
 
Posts: 8014
Topics: 195
Joined: Thu Sep 04, 2003 9:03 pm
Location: Montreal

Re: CMake for the masses

Postby klauss » Mon Mar 01, 2010 3:57 pm

Shouldn't cmake build optimized binaries by default?

Almost all ./configure && make setups do that, because it's easy for the developer to add a flag to build a debug version but not so easy for a regular user to add the flag to build an optimized version.

Besides, vegastrike is unplayable in -O0. I usually build with optimizations AND debugging symbols, and just live with the mess it creates. Because it sometimes drops below 1 FPS without optimizations on heavy systems.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
User avatar
klauss
Elite
Elite
 
Posts: 7243
Topics: 55
Joined: Mon Apr 18, 2005 7:40 am
Location: LS87, Buenos Aires, República Argentina

Re: CMake for the masses

Postby safemode » Mon Mar 01, 2010 4:08 pm

that can be changed if we want it to.. it's set in the cmakelist.txt file.

Maintainer mode was chosen i guess as the safest settings and least amount of compiler version specific issues.
Ed Sweetman endorses this message.
safemode
Developer
Developer
 
Posts: 2150
Topics: 84
Joined: Sun Apr 22, 2007 6:17 pm
Location: Pennsylvania


Previous

Return to Engine Development

Who is online

Users browsing this forum: No registered users and 1 guest

cron