Skip to content

Commit

Permalink
[11167] Added CMake support
Browse files Browse the repository at this point in the history
(based on cipherCOM's commit 0039476)

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
  • Loading branch information
cipherCOM authored and VladimirMangos committed Feb 14, 2011
1 parent c6546fc commit 33fd34a
Show file tree
Hide file tree
Showing 43 changed files with 3,465 additions and 4 deletions.
23 changes: 23 additions & 0 deletions .gitignore
Expand Up @@ -80,8 +80,31 @@ cmake_install.cmake
#
# Special exceptions
#

# cmake generated files in sources
dep/ACE_wrappers/ace/ACE_vc8.vcxproj*
dep/ACE_wrappers/ace/Backup*
dep/ACE_wrappers/ace/Debug*
dep/ACE_wrappers/ace/ETCL/ACE_ETCL_Parser_vc8.vcxproj*
dep/ACE_wrappers/ace/ETCL/ACE_ETCL_vc8.vcxproj*
dep/ACE_wrappers/ace/ETCL/Debug*
dep/ACE_wrappers/ace/ETCL/Release*
dep/ACE_wrappers/ace/Monitor_Control/Debug*
dep/ACE_wrappers/ace/Monitor_Control/Monitor_Control_vc8.vcxproj*
dep/ACE_wrappers/ace/Monitor_Control/Release*
dep/ACE_wrappers/ace/QoS/Debug*
dep/ACE_wrappers/ace/QoS/QoS_vc8.vcxproj*
dep/ACE_wrappers/ace/QoS/Release*
dep/ACE_wrappers/ace/UpgradeLog*
dep/ACE_wrappers/ace/Release*
dep/ACE_wrappers/ace/_UpgradeReport_Files*
dep/ACE_wrappers/lib/*
dep/ACE_wrappers/ace/config.h

# ned files from excluded dirs

This comment has been minimized.

Copy link
@Ambal

Ambal Feb 14, 2011

Contributor

ah, another commit to fix comment :D

This comment has been minimized.

Copy link
@VladimirMangos

VladimirMangos Feb 14, 2011

i rejected fixing this ;P In fact better fix this cmake build process part for avoid need this files exclude...

!dep/ACE_wrappers/ace/ace_message_table.bin
!dep/ACE_wrappers/bin/GNUmakefile.bin
!dep/ACE_wrappers/configure.ac~
!dep/ACE_wrappers/lib/.empty
!dep/tbb/src/Makefile

16 comments on commit 33fd34a

@Gucky
Copy link

@Gucky Gucky commented on 33fd34a Feb 14, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just to good to be true. I'm almost crying 'caus of joy.
Thanks a lot, this makes life a lot easier!

@pasdVn
Copy link
Contributor

@pasdVn pasdVn commented on 33fd34a Feb 14, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/sign :-)

@DomGries
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! I hope you are also considering using only Cmake on Windows because that really makes the work of developers much easier :)

@Ambal
Copy link
Contributor

@Ambal Ambal commented on 33fd34a Feb 14, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CMake on Windows does not make work easier. There are obvious drawbacks in CMake way of generating .vsproj files (aka missing folder filters etc) which does not get everyone excited about them.

@VladimirMangos
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current cmake in mangos work for windows case have problems from devs use points.
But if you want cmake can be used at windows also. Tested by me and build mangos.

@DomGries
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well though you only have to care about files included/renamed in the cmake files other than 2 different kinds of vsproj files (2008, 2010). Having no folders in Visual studio is only a minor drawback :P

@Ambal
Copy link
Contributor

@Ambal Ambal commented on 33fd34a Feb 14, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stfx, .vsproj existance under Windows is out-of-discussion for now. Especially when there are not much ppl using this platform for hosting servers. You are free to choose whatever you like: VS or CMake to build binaries.

@wolfiestyle
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this support precompiled headers on linux?

@VladimirMangos
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, if you add -DPCH=1 (at windows its auto enabled, at Unux, auto-disabled by default. I tests pch under unix, it work, but i not see big diff in build.
But i build clean core, maybe with integrated scripting lib build it can more affect to time.

@ariath
Copy link

@ariath ariath commented on 33fd34a Feb 16, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have seen something strange: Yesterday i was trying to compile last RSA commit, who also added CMake support, and, although i managed to build the solutions files for VS 2008, when i started compiling, i got an error: VS doesn't recognizes an argument named "/upgrade" .

Any idea?

P.D: I know MaNGOS isn't RSA, but ... :) .

@Ambal
Copy link
Contributor

@Ambal Ambal commented on 33fd34a Feb 16, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ariath, you should ask RSA for your particular issue.

@blueboy
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only problem I had building the revised code under linux using cmake, was that git could no recover the MANGOS-Core revision.

-- Detected 32-bit platform.
-- Found Git: /usr/bin/git

This script builds the MaNGOS server.
  Options that can be used in order to configure the process:
    PREFIX: Path where the server should be installed to
    PCH: Use precompiled headers
    DEBUG: Debug mode
  To set an option simply type -D= after 'cmake '.
  For example: cmake .. -DDEBUG=1 -DPREFIX=/opt/mangos

-- Using mysql-config: /usr/bin/mysql_config
-- Found MySQL library: /usr/lib/libmysqlclient_r.so
-- Found MySQL headers: /usr/include/mysql
-- Found OpenSSL library: /usr/lib/libssl.so
-- Found OpenSSL headers: /usr/include/openssl
-- Found ZLIB: /usr/lib/libz.so
fatal: No names found, cannot describe anything.

MaNGOS-Core revision  : 
Install server to     : /home/mangos/wow

This occurs because the command COMMAND ${GIT_EXECUTABLE} describe in CMakeList.txt (source root @ line ~217) requires either describe --always for the short version number of HEAD commit. Alternatively, you could use rev-parse HEAD for the long version number.

# Find core revision
if(GIT_EXECUTABLE)
  execute_process(
    COMMAND ${GIT_EXECUTABLE} describe
    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
    OUTPUT_VARIABLE GIT_REVISION
  )
else()
  set(GIT_REVISION "Git not found")
endif()

Hope this helps

@VladimirMangos
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you provide your modified version then will clean what you suggest?

@blueboy
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I thought it was clear. Here is the block of code (@ line ~217) in CMakeList.txt, modified (CMakeList.txt located in source root).

# Find core revision
if(GIT_EXECUTABLE)
  execute_process(
    COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
    OUTPUT_VARIABLE GIT_REVISION
  )
else()
  set(GIT_REVISION "Git not found")
endif()

Hope this helps

@VladimirMangos
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, do some tests with created git repo, but i think code must also modifed to allow buuild not from git repo
if attempt build in normal dir then build fail also. Ah, possible add ERROR_QUIET
I will add fix, also i think normal commit hash more make sense in this case.

@VladimirMangos
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in [11184]. Thank you :)

Please sign in to comment.