Added cmake build files (thanks RCL)

This commit is contained in:
Mark Vejvoda 2010-06-05 17:34:55 +00:00
parent 4ec55dd434
commit 9c5d911edc
8 changed files with 365 additions and 11 deletions

7
CMakeLists.txt Normal file
View File

@ -0,0 +1,7 @@
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
PROJECT( MegaGlest )
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mk/cmake/Modules)
ADD_SUBDIRECTORY( source/shared_lib )
ADD_SUBDIRECTORY( source/glest_game )

View File

@ -0,0 +1,27 @@
# - Find curl
# Find the native CURL headers and libraries.
#
# CURL_INCLUDE_DIRS - where to find curl/curl.h, etc.
# CURL_LIBRARIES - List of libraries when using curl.
# CURL_FOUND - True if curl found.
# Look for the header file.
FIND_PATH(CURL_INCLUDE_DIR NAMES curl/curl.h)
MARK_AS_ADVANCED(CURL_INCLUDE_DIR)
# Look for the library.
FIND_LIBRARY(CURL_LIBRARY NAMES curl curl-gnutls)
MARK_AS_ADVANCED(CURL_LIBRARY)
# handle the QUIETLY and REQUIRED arguments and set CURL_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL DEFAULT_MSG CURL_LIBRARY CURL_INCLUDE_DIR)
IF(CURL_FOUND)
SET(CURL_LIBRARIES ${CURL_LIBRARY})
SET(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
ELSE(CURL_FOUND)
SET(CURL_LIBRARIES)
SET(CURL_INCLUDE_DIRS)
ENDIF(CURL_FOUND)

View File

@ -0,0 +1,45 @@
# Find the Lua 5.1 includes and library
#
# LUA_INCLUDE_DIR - where to find lua.h
# LUA_LIBRARIES - List of fully qualified libraries to link against
# LUA_FOUND - Set to TRUE if found
# Copyright (c) 2007, Pau Garcia i Quiles, <pgquiles@elpauer.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# [RCL] FIXME: is it future proof with names like lua5.1? Kubuntu does not provide
# a generic (version-independent) include directory for LUA...
IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES)
SET(LUA_FIND_QUIETLY TRUE)
ENDIF(LUA_INCLUDE_DIR AND LUA_LIBRARIES)
FIND_PATH(LUA_INCLUDE_DIR NAMES lua.hpp
PATHS /usr/include/lua
/usr/include/lua5.1
)
FIND_LIBRARY(LUA_LIBRARIES NAMES lua5.1 )
IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES)
SET(LUA_FOUND TRUE)
INCLUDE(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(${LUA_LIBRARIES} lua_close "" LUA_NEED_PREFIX)
ELSE(LUA_INCLUDE_DIR AND LUA_LIBRARIES)
SET(LUA_FOUND FALSE)
ENDIF (LUA_INCLUDE_DIR AND LUA_LIBRARIES)
IF(LUA_FOUND)
IF (NOT LUA_FIND_QUIETLY)
MESSAGE(STATUS "Found Lua library: ${LUA_LIBRARIES}")
MESSAGE(STATUS "Found Lua headers: ${LUA_INCLUDE_DIR}")
ENDIF (NOT LUA_FIND_QUIETLY)
ELSE(LUA_FOUND)
IF(LUA_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could NOT find Lua")
ENDIF(LUA_FIND_REQUIRED)
ENDIF(LUA_FOUND)
MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARIES)

View File

@ -0,0 +1,38 @@
# Defines
# OGG_FOUND
# OGG_INCLUDE_DIR
# OGG_LIBRARY
# VORBIS_LIBRARY
# VORBIS_FILE_LIBRARY
#
# check for cache to avoid littering log
IF(OGG_INCLUDE_DIR AND OGG_LIBRARY AND VORBIS_LIBRARY)
SET(OGG_BE_QUIET TRUE)
ENDIF(OGG_INCLUDE_DIR AND OGG_LIBRARY AND VORBIS_LIBRARY)
FIND_PATH(OGG_INCLUDE_DIR ogg/ogg.h)
FIND_LIBRARY(OGG_LIBRARY NAMES ogg)
FIND_LIBRARY(VORBIS_LIBRARY NAMES vorbis)
FIND_LIBRARY(VORBIS_FILE_LIBRARY NAMES vorbisfile)
IF(OGG_INCLUDE_DIR AND OGG_LIBRARY AND VORBIS_LIBRARY AND VORBIS_FILE_LIBRARY)
SET(OGG_FOUND TRUE)
IF(NOT OGG_BE_QUIET)
MESSAGE(STATUS "OGG/Vorbis includes: ${OGG_INCLUDE_DIR}")
MESSAGE(STATUS "OGG library : ${OGG_LIBRARY}")
MESSAGE(STATUS "Vorbis library : ${VORBIS_LIBRARY}")
MESSAGE(STATUS "Vorbis file library: ${VORBIS_FILE_LIBRARY}")
ENDIF(NOT OGG_BE_QUIET)
ELSE(OGG_INCLUDE_DIR AND OGG_LIBRARY AND VORBIS_LIBRARY AND VORBIS_FILE_LIBRARY)
SET(OGG_FOUND FALSE)
MESSAGE("OGG/Vorbis was not found on this system!")
ENDIF(OGG_INCLUDE_DIR AND OGG_LIBRARY AND VORBIS_LIBRARY AND VORBIS_FILE_LIBRARY)
MARK_AS_ADVANCED(
OGG_INCLUDE_DIR
OGG_LIBRARY
VORBIS_LIBRARY
VORBIS_FILE_LIBRARY
)

View File

@ -0,0 +1,30 @@
# - Find Xerces-C
# Find the Xerces-C includes and library
#
# XERCESC_INCLUDE_DIR - Where to find xercesc include sub-directory.
# XERCESC_LIBRARIES - List of libraries when using Xerces-C.
# XERCESC_FOUND - True if Xerces-C found.
IF (XERCESC_INCLUDE_DIR)
# Already in cache, be silent.
SET(XERCESC_FIND_QUIETLY TRUE)
ENDIF (XERCESC_INCLUDE_DIR)
FIND_PATH(XERCESC_INCLUDE_DIR xercesc/dom/DOM.hpp)
SET(XERCESC_NAMES xerces-c xerces-c_3 xerces-c_2)
FIND_LIBRARY(XERCESC_LIBRARY NAMES ${XERCESC_NAMES} )
# Handle the QUIETLY and REQUIRED arguments and set XERCESC_FOUND to
# TRUE if all listed variables are TRUE.
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XercesC DEFAULT_MSG XERCESC_LIBRARY XERCESC_INCLUDE_DIR)
IF(XERCESC_FOUND)
SET( XERCESC_LIBRARIES ${XERCESC_LIBRARY} )
ELSE(XERCESC_FOUND)
SET( XERCESC_LIBRARIES )
ENDIF(XERCESC_FOUND)
MARK_AS_ADVANCED( XERCESC_LIBRARY XERCESC_INCLUDE_DIR )

View File

@ -0,0 +1,95 @@
#########################################################################################
# common libraries
SET(EXTERNAL_LIBS "")
FIND_PACKAGE(SDL REQUIRED)
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${SDL_LIBRARY})
FIND_PACKAGE(OpenGL REQUIRED)
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OPENGL_LIBRARY})
FIND_PACKAGE(XercesC REQUIRED)
INCLUDE_DIRECTORIES(${XERCESC_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${XERCESC_LIBRARY})
FIND_PACKAGE(OpenAL REQUIRED)
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OPENAL_LIBRARY})
FIND_PACKAGE(OGG REQUIRED)
INCLUDE_DIRECTORIES(${OGG_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OGG_LIBRARY})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${VORBIS_LIBRARY})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${VORBIS_FILE_LIBRARY})
FIND_PACKAGE(LUA REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUA_LIBRARIES})
FIND_PACKAGE(JPEG REQUIRED)
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${JPEG_LIBRARY})
FIND_PACKAGE(PNG REQUIRED)
INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PNG_LIBRARY})
#########################################################################################
# glest game
SET(DIRS_WITH_SRC
ai
facilities
game
global
graphics
gui
main
menu
network
sound
type_instances
types
world)
SET(GLEST_LIB_INCLUDE_ROOT "../shared_lib/include/")
SET(GLEST_LIB_INCLUDE_DIRS
${GLEST_LIB_INCLUDE_ROOT}platform/common
${GLEST_LIB_INCLUDE_ROOT}platform/sdl
${GLEST_LIB_INCLUDE_ROOT}platform/posix
${GLEST_LIB_INCLUDE_ROOT}util
${GLEST_LIB_INCLUDE_ROOT}graphics
${GLEST_LIB_INCLUDE_ROOT}graphics/gl
${GLEST_LIB_INCLUDE_ROOT}sound
${GLEST_LIB_INCLUDE_ROOT}sound/openal
${GLEST_LIB_INCLUDE_ROOT}xml
${GLEST_LIB_INCLUDE_ROOT}glew
${GLEST_LIB_INCLUDE_ROOT}lua
${GLEST_LIB_INCLUDE_ROOT}streflop
${GLEST_LIB_INCLUDE_ROOT}streflop/libm_flt32_source)
INCLUDE_DIRECTORIES( ${GLEST_LIB_INCLUDE_DIRS} )
SET(MG_SOURCE_FILES "")
FOREACH(DIR IN LISTS DIRS_WITH_SRC)
INCLUDE_DIRECTORIES( ${DIR} )
set(SRC_DIR_TO_GLOB ${DIR})
FILE(GLOB SRC_FILES_FROM_THIS_DIR ${SRC_DIR_TO_GLOB}/*.cpp)
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${SRC_FILES_FROM_THIS_DIR})
ENDFOREACH(DIR)
# [RCL] FIXME: make it compiler-agnostic
SET(CMAKE_CXX_FLAGS "-O3 -msse -msse2 -mfpmath=sse -DSTREFLOP_SSE")
SET(TARGET_NAME "glest.bin")
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game)
ADD_EXECUTABLE(${TARGET_NAME} ${MG_SOURCE_FILES})
TARGET_LINK_LIBRARIES(${TARGET_NAME} streflop)
TARGET_LINK_LIBRARIES(${TARGET_NAME} glest_lib)
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${EXTERNAL_LIBS})

View File

@ -0,0 +1,107 @@
#########################################################################################
# streflop
# IMPORTANT: should come BEFORE finding packages
ADD_SUBDIRECTORY(sources/streflop)
#########################################################################################
# common libraries
SET(EXTERNAL_LIBS "")
FIND_PACKAGE(SDL REQUIRED)
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${SDL_LIBRARY})
FIND_PACKAGE(OpenGL REQUIRED)
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OPENGL_LIBRARY})
FIND_PACKAGE(XercesC REQUIRED)
INCLUDE_DIRECTORIES(${XERCESC_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${XERCESC_LIBRARY})
FIND_PACKAGE(OpenAL REQUIRED)
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OPENAL_LIBRARY})
FIND_PACKAGE(OGG REQUIRED)
INCLUDE_DIRECTORIES(${OGG_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OGG_LIBRARY})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${VORBIS_LIBRARY})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${VORBIS_FILE_LIBRARY})
FIND_PACKAGE(LUA REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUA_LIBRARIES})
FIND_PACKAGE(JPEG REQUIRED)
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${JPEG_LIBRARY})
FIND_PACKAGE(PNG REQUIRED)
INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PNG_LIBRARY})
FIND_PACKAGE(CURL REQUIRED)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${CURL_LIBRARIES})
#########################################################################################
# glest lib
SET(DIRS_WITH_SRC
platform/common
platform/sdl
platform/posix
util
graphics
graphics/gl
sound
sound/openal
xml
glew
lua
streflop
streflop/libm_flt32_source)
SET(MG_INCLUDES_ROOT "include/")
SET(MG_SOURCES_ROOT "sources/")
SET(MG_INCLUDE_FILES "")
SET(MG_SOURCE_FILES "")
FOREACH(DIR IN LISTS DIRS_WITH_SRC)
set(INCLUDE_DIR_TO_GLOB ${MG_INCLUDES_ROOT}${DIR})
INCLUDE_DIRECTORIES( ${INCLUDE_DIR_TO_GLOB} )
#MESSAGE(STATUS "INCLUDE_DIR_TO_GLOB: ${INCLUDE_DIR_TO_GLOB}")
#FILE(GLOB INC_FILES_FROM_THIS_DIR ${INCLUDE_DIR_TO_GLOB}/*.h)
#MESSAGE(STATUS "INCLUDE FILES GLOBBED: ${INC_FILES_FROM_THIS_DIR}")
#SET(MG_INCLUDE_FILES ${MG_INCLUDE_FILES} ${INC_FILES_FROM_THIS_DIR})
set(SRC_DIR_TO_GLOB ${MG_SOURCES_ROOT}${DIR})
#MESSAGE(STATUS "SRC_DIR_TO_GLOB: ${SRC_DIR_TO_GLOB}")
FILE(GLOB SRC_FILES_FROM_THIS_DIR ${SRC_DIR_TO_GLOB}/*.cpp)
#MESSAGE(STATUS "SRC_FILES_FROM_THIS_DIR: ${SRC_FILES_FROM_THIS_DIR}")
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${SRC_FILES_FROM_THIS_DIR})
ENDFOREACH(DIR)
#MESSAGE(STATUS "Source files: ${MG_INCLUDE_FILES}")
#MESSAGE(STATUS "Source files: ${MG_SOURCE_FILES}")
#MESSAGE(STATUS "Include dirs: ${INCLUDE_DIRECTORIES}")
# FIXME: hackish, should be tested for
SET(UNIX_SPECIFIC_DEFINES "-DX11_AVAILABLE -DHAVE_SYS_IOCTL_H")
# FIXME: hackish...
SET(STREFLOP_PROPERTIES "-DSTREFLOP_SSE -DLIBM_COMPILING_FLT32")
# FIXME: should choose between platforms
SET_SOURCE_FILES_PROPERTIES(${MG_SOURCE_FILES} PROPERTIES COMPILE_FLAGS
"${UNIX_SPECIFIC_DEFINES} ${STREFLOP_PROPERTIES} ${CXXFLAGS}")
# [RCL] FIXME: make it compiler-agnostic
SET(CMAKE_CXX_FLAGS "-O3 -msse -msse2 -mfpmath=sse")
ADD_LIBRARY(glest_lib ${MG_SOURCE_FILES})
TARGET_LINK_LIBRARIES(glest_lib streflop)
TARGET_LINK_LIBRARIES(glest_lib ${EXTERNAL_LIBS})

View File

@ -1,16 +1,21 @@
AUX_SOURCE_DIRECTORY(libm/flt-32 libm_flt32_source)
#########################################################################################
# streflop
#if (NOT $ENV{CXX} MATCHES "icpc")
# SET(cxxflags "${cxxflags} -mfpmath=sse -msse")
#endif (NOT $ENV{CXX} MATCHES "icpc")
SET(cxxflags "-w -O3 -I${CMAKE_CURRENT_SOURCE_DIR}/libm/headers")
if (NOT $ENV{CXX} MATCHES "icpc")
SET(cxxflags "${cxxflags} -mfpmath=sse -msse")
endif (NOT $ENV{CXX} MATCHES "icpc")
SET_SOURCE_FILES_PROPERTIES(${libm_flt32_source} PROPERTIES COMPILE_FLAGS "-DLIBM_COMPILING_FLT32 ${cxxflags}")
FILE(GLOB_RECURSE STREFLOP_GLOBBED_CPP libm/flt-32/*.cpp)
INCLUDE_DIRECTORIES(
../../include/streflop/libm/flt-32
../../include/streflop/libm/headers
)
SET(STREFLOP_SRC ${STREFLOP_GLOBBED_CPP})
# use SSE unconditionally (FIXME?)
SET_SOURCE_FILES_PROPERTIES(${STREFLOP_SRC} PROPERTIES COMPILE_FLAGS "-DSTREFLOP_SSE -DLIBM_COMPILING_FLT32 -O3 ${CXXFLAGS}")
ADD_LIBRARY(streflop STATIC EXCLUDE_FROM_ALL
SMath.cpp
Random.cpp
streflopC.cpp
${libm_flt32_source}
${STREFLOP_SRC}
)
set_target_properties(streflop PROPERTIES COMPILE_FLAGS "${PIC_FLAG}")
#TODO do not use -fPIC for streflop (decreases performance)