Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ipv6/src/CMakeLists.txt @ 7386

Last change on this file since 7386 was 7386, checked in by rgrieder, 14 years ago

Added missing changes to remove ENet as external dependency and add it as internal one.

  • Property svn:eol-style set to native
File size: 5.8 KB
Line 
1 #
2 #             ORXONOX - the hottest 3D action shooter ever to exist
3 #                             > www.orxonox.net <
4 #
5 #        This program is free software; you can redistribute it and/or
6 #         modify it under the terms of the GNU General Public License
7 #        as published by the Free Software Foundation; either version 2
8 #            of the License, or (at your option) any later version.
9 #
10 #       This program is distributed in the hope that it will be useful,
11 #        but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #                 GNU General Public License for more details.
14 #
15 #   You should have received a copy of the GNU General Public License along
16 #      with this program; if not, write to the Free Software Foundation,
17 #     Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 #
19 #
20 #  Author:
21 #    Reto Grieder
22 #  Description:
23 #    Configures the compilers and sets build options.
24 #
25
26# Required macros and functions
27INCLUDE(FlagUtilities)
28INCLUDE(TargetUtilities)
29
30# Configure the two headers and set some options
31INCLUDE(OrxonoxConfig.cmake)
32
33####### Library Behaviour (dependencies) ########
34
35# Disable Boost auto linking completely
36ADD_COMPILER_FLAGS("-DBOOST_ALL_NO_LIB")
37
38# If no defines are specified, these libs get linked statically
39ADD_COMPILER_FLAGS("-DBOOST_ALL_DYN_LINK" WIN32 LINK_BOOST_DYNAMIC)
40#ADD_COMPILER_FLAGS("-DENET_DLL"           WIN32 LINK_ENET_DYNAMIC)
41ADD_COMPILER_FLAGS("-DLUA_BUILD_AS_DLL"   WIN32 LINK_LUA_DYNAMIC)
42ADD_COMPILER_FLAGS("-DZLIB_DLL"           WIN32 LINK_ZLIB_DYNAMIC)
43# If no defines are specified, these libs get linked dynamically
44ADD_COMPILER_FLAGS("-DCEGUI_STATIC"       WIN32 NOT LINK_CEGUI_DYNAMIC)
45ADD_COMPILER_FLAGS("-DOGRE_STATIC_LIB"    WIN32 NOT LINK_OGRE_DYNAMIC)
46ADD_COMPILER_FLAGS("-DSTATIC_BUILD"       WIN32 NOT LINK_TCL_DYNAMIC)
47
48######### Library Behaviour (external) ##########
49
50# Use TinyXML++
51ADD_COMPILER_FLAGS("-DTIXML_USE_TICPP")
52
53# Default linking for externals is SHARED
54SET(ORXONOX_EXTERNAL_LINK_MODE SHARED CACHE STRING "Link mode for external libraries that we build ourselves. Note: on Windows, some libraries cannot be linked shared.")
55
56IF(ORXONOX_EXTERNAL_LINK_MODE STREQUAL "SHARED")
57  SET(_external_shared_link TRUE)
58ELSE()
59  SET(_external_shared_link FALSE)
60ENDIF()
61# If no defines are specified, these libs get linked dynamically
62ADD_COMPILER_FLAGS("-DCEGUILUA_STATIC"             WIN32 NOT _external_shared_link)
63ADD_COMPILER_FLAGS("-DENET_DLL"                    WIN32 NOT _external_shared_link)
64ADD_COMPILER_FLAGS("-DOGRE_GUIRENDERER_STATIC_LIB" WIN32 NOT _external_shared_link)
65ADD_COMPILER_FLAGS("-DOIS_STATIC_LIB"              WIN32 NOT _external_shared_link)
66ADD_COMPILER_FLAGS("-DTOLUA_STATIC_BUILD"          WIN32 NOT _external_shared_link)
67
68############## Include Directories ##############
69
70# Set the search paths for include files
71INCLUDE_DIRECTORIES(
72  # External
73  ${OGRE_INCLUDE_DIR}
74  ${CEGUI_INCLUDE_DIR}
75  #${ENET_INCLUDE_DIR}
76  ${Boost_INCLUDE_DIRS}
77  ${POCO_INCLUDE_DIR}
78  ${OPENAL_INCLUDE_DIRS}
79  ${ALUT_INCLUDE_DIR}
80  ${VORBIS_INCLUDE_DIR}
81  ${OGG_INCLUDE_DIR}
82  ${LUA_INCLUDE_DIR}
83  ${TCL_INCLUDE_PATH}
84  ${DIRECTX_INCLUDE_DIR}
85  ${ZLIB_INCLUDE_DIR}
86  ${VLD_INCLUDE_DIR}
87
88  # All includes in "externals" should be prefixed with the path
89  # relative to "external" to avoid conflicts
90  ${CMAKE_CURRENT_SOURCE_DIR}/external
91  # Include directories needed even if only included by Orxonox
92  ${CMAKE_CURRENT_SOURCE_DIR}/external/bullet
93  ${CMAKE_CURRENT_SOURCE_DIR}/external/ois
94  ${CMAKE_CURRENT_SOURCE_DIR}/external/enet/include
95
96  # OrxonoxConfig.h
97  ${CMAKE_CURRENT_BINARY_DIR}
98)
99
100IF(CEGUILUA_USE_INTERNAL_LIBRARY)
101  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/external/ceguilua/ceguilua-${CEGUI_VERSION})
102ENDIF()
103
104################### Tolua Bind ##################
105
106# Create directory because the tolua application doesn't work otherwise
107IF(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/toluabind/${CMAKE_CFG_INTDIR})
108  FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/toluabind/${CMAKE_CFG_INTDIR})
109ENDIF()
110
111INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/toluabind/${CMAKE_CFG_INTDIR})
112
113################ Sub Directories ################
114
115ADD_SUBDIRECTORY(external)
116ADD_SUBDIRECTORY(libraries)
117ADD_SUBDIRECTORY(orxonox)
118ADD_SUBDIRECTORY(modules)
119
120################ Executable ################
121
122INCLUDE_DIRECTORIES(
123  ${CMAKE_CURRENT_SOURCE_DIR}/libraries
124  ${CMAKE_CURRENT_SOURCE_DIR}/orxonox
125)
126
127# Translate argument
128IF(ORXONOX_USE_WINMAIN)
129  SET(ORXONOX_WIN32 WIN32)
130ENDIF()
131
132ORXONOX_ADD_EXECUTABLE(orxonox-main
133  # When defined as WIN32 this removes the console window on Windows
134  ${ORXONOX_WIN32}
135  LINK_LIBRARIES
136    orxonox
137  SOURCE_FILES
138    Orxonox.cc
139  OUTPUT_NAME orxonox
140)
141
142# Get name to configure the run scripts
143GET_TARGET_PROPERTY(_exec_loc orxonox-main LOCATION)
144GET_FILENAME_COMPONENT(_exec_name ${_exec_loc} NAME)
145SET(ORXONOX_EXECUTABLE_NAME ${_exec_name} CACHE INTERNAL "")
146
147
148# When using Visual Studio we want to use the output directory as working
149# directory and we also want to specify where the external dlls
150# (lua, ogre, etc.) are. The problem hereby is that these information cannot
151# be specified in CMake because they are not stored in the actual project file.
152# This workaround will create a configured *.vcproj.user file that holds the
153# right values. When starting the solution for the first time,
154# these get written to the *vcproj.yourPCname.yourname.user
155IF(MSVC)
156  IF(CMAKE_CL_64)
157    SET(MSVC_PLATFORM "x64")
158  ELSE()
159    SET(MSVC_PLATFORM "Win32")
160  ENDIF()
161  STRING(REGEX REPLACE "^Visual Studio ([0-9][0-9]?) .*$" "\\1"
162         VISUAL_STUDIO_VERSION_SIMPLE "${CMAKE_GENERATOR}")
163  CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/orxonox-main.vcproj.user.in" "${CMAKE_CURRENT_BINARY_DIR}/orxonox-main.vcproj.user")
164ENDIF(MSVC)
Note: See TracBrowser for help on using the repository browser.