From 4ad684deaf644024ae1d3ce63a8061106a864575 Mon Sep 17 00:00:00 2001 From: filux Date: Tue, 22 Sep 2015 00:52:09 +0200 Subject: [PATCH] updated modules: LUA, GLEW --- CMakeLists.txt | 56 +++--- mk/cmake/Modules/FindFTGL.cmake | 1 - mk/cmake/Modules/FindFriBiDi.cmake | 1 - mk/cmake/Modules/FindGLEW.cmake | 110 ++++++----- mk/cmake/Modules/FindIrcclient.cmake | 1 - mk/cmake/Modules/FindLIBVLC.cmake | 1 - mk/cmake/Modules/FindLUA.cmake | 258 ++++++++++++++++--------- mk/cmake/Modules/FindOGG.cmake | 1 - mk/cmake/Modules/FindXercesC.cmake | 1 - mk/linux/build-mg.sh | 35 ++-- mk/macosx/build-mg.sh | 17 +- source/g3d_viewer/CMakeLists.txt | 23 +-- source/glest_game/CMakeLists.txt | 31 ++- source/glest_map_editor/CMakeLists.txt | 17 +- source/shared_lib/CMakeLists.txt | 46 ++--- 15 files changed, 319 insertions(+), 280 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45304204..d85d63d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,10 +8,11 @@ PROJECT( MegaGlest ) # VC++ users should not use CMake yet but rather the build-mg.bat file in mk/windoze # -# build type defaults to release -if(NOT DEFINED CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.") -endif(NOT DEFINED CMAKE_BUILD_TYPE) +# build type +IF(NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) +ENDIF() +SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS None Debug Release RelWithDebInfo MinSizeRel) # add additional CMake modules MESSAGE(STATUS "CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}") @@ -32,6 +33,7 @@ OPTION(BUILD_MEGAGLEST "Build MegaGlest" ON) OPTION(BUILD_MEGAGLEST_TESTS "Build MegaGlest Unit Tests" OFF) OPTION(WITH_VLC "Use libVLC to play videos" ON) OPTION(SINGLE_INSTALL_DIRECTORY "Use single install directory for everything. It is useful for example for MacOS cpack bundles." OFF) +OPTION(WANT_STATIC_LIBS "Builds as many static libs as possible." OFF) FIND_PROGRAM(HELP2MAN "help2man") @@ -41,8 +43,9 @@ if (NOT ${XVFB_RUN} MATCHES "XVFB_RUN-NOTFOUND") set(XVFB_EXEC ${XVFB_RUN}) message(STATUS "Using xvfb-run to run man2help.") endif() +MARK_AS_ADVANCED(HELP2MAN XVFB_RUN) -include(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/SpecialMacros.cmake) +include(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/SpecialMacros.cmake) SET(PKG_NAME "megaglest") # read version @@ -96,10 +99,6 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) MESSAGE(STATUS "Detected MINGW Compiler...") ENDIF() - if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo) - endif (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - # Default compiler flags #SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") ## Strip binary @@ -200,22 +199,17 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) # Release compiler flags SET(CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS_RELEASE} -O3 ") - IF(CMAKE_GENERATOR STREQUAL Xcode) - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") ## Strip binary - ELSE() + IF(NOT CMAKE_GENERATOR STREQUAL Xcode) SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary ENDIF() # Release with debug info compiler flags - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ") # Release minimum size compiler flags SET(CMAKE_CXX_FLAGS_MINSIZEREL "-O3 ${CMAKE_CXX_FLAGS_MINSIZEREL} -O3 ") - SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}") ## Strip binary - IF(CMAKE_GENERATOR STREQUAL Xcode) - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") ## Strip binary - ELSE() - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary + IF(NOT CMAKE_GENERATOR STREQUAL Xcode) + SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary ENDIF() # Get the git revision info for the binary @@ -333,15 +327,15 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") IF( CMAKE_BUILD_TYPE STREQUAL None ) - message("CMAKE_CXX_FLAGS_NONE: ${CMAKE_CXX_FLAGS_NONE}") + message(STATUS "CMAKE_CXX_FLAGS_NONE: ${CMAKE_CXX_FLAGS_NONE}") ELSEIF( CMAKE_BUILD_TYPE STREQUAL Debug ) - message("CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}") + message(STATUS "CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}") ELSEIF( CMAKE_BUILD_TYPE STREQUAL Release ) - message("CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}") + message(STATUS "CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}") ELSEIF( CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo ) - message("CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + message(STATUS "CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") ELSEIF( CMAKE_BUILD_TYPE STREQUAL MinSizeRel ) - message("CMAKE_CXX_FLAGS_MINSIZEREL: ${CMAKE_CXX_FLAGS_MINSIZEREL}") + message(STATUS "CMAKE_CXX_FLAGS_MINSIZEREL: ${CMAKE_CXX_FLAGS_MINSIZEREL}") ENDIF() @@ -358,6 +352,9 @@ IF(UNIX AND NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # We don't wanna see bug reports with deprecation warnings from OSes where game isn't # actively developed, and where usually those warnings can make "make log" completely unreadable. # Main targets are: bsd and macos + + MARK_AS_ADVANCED(CLEAR wxWidgets_CONFIG_EXECUTABLE) + # This variable may be sometimes necessary to set manually. ELSE() OPTION(WANT_DEPRECATION_WARNINGS "Want to see warnings related with deprecated code parts." ON) ENDIF() @@ -379,6 +376,17 @@ ELSE() ENDIF() MARK_AS_ADVANCED(WANT_USE_SDL2) +OPTION(WANT_DEV_OUTPATH "Use developer friendly output paths." OFF) +IF(UNIX AND "${CMAKE_SYSTEM_NAME}" MATCHES "^[A-Z][a-z]*BSD$") + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/bsd/") +ELSEIF(UNIX AND NOT APPLE) + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/linux/") +ELSEIF(UNIX AND APPLE) + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/macosx/") +ELSE() + SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/data/glest_game/") +ENDIF() + IF(WIN32) SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${PROJECT_SOURCE_DIR}/source/win32_deps/lib @@ -505,3 +513,5 @@ endforeach() MARK_AS_ADVANCED(${SDL_VERSION_NAME}MAIN_LIBRARY) MARK_AS_ADVANCED(${SDL_VERSION_NAME}_INCLUDE_DIR) MARK_AS_ADVANCED(${SDL_VERSION_NAME}_LIBRARY) +MARK_AS_ADVANCED(wxWidgets_CONFIG_EXECUTABLE) +MARK_AS_ADVANCED(wxWidgets_wxrc_EXECUTABLE) diff --git a/mk/cmake/Modules/FindFTGL.cmake b/mk/cmake/Modules/FindFTGL.cmake index f7fc97b4..2d525af2 100644 --- a/mk/cmake/Modules/FindFTGL.cmake +++ b/mk/cmake/Modules/FindFTGL.cmake @@ -10,7 +10,6 @@ # # -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) IF(WANT_STATIC_LIBS) OPTION(FTGL_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) ENDIF() diff --git a/mk/cmake/Modules/FindFriBiDi.cmake b/mk/cmake/Modules/FindFriBiDi.cmake index 5c8ae4ae..6fca93fd 100644 --- a/mk/cmake/Modules/FindFriBiDi.cmake +++ b/mk/cmake/Modules/FindFriBiDi.cmake @@ -28,7 +28,6 @@ set(FRIBIDI_INCLUDE_DIR ${xFRIBIDI_INCLUDE_DIR}) SET(FRIBIDI_NAMES ${FRIBIDI_NAMES} fribidi libfribidi) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) IF(WANT_STATIC_LIBS) SET(FRIBIDI_NAMES fribidi.a libfribidi.a ${FRIBIDI_NAMES}) ENDIF() diff --git a/mk/cmake/Modules/FindGLEW.cmake b/mk/cmake/Modules/FindGLEW.cmake index f7a42fdb..5b2821b9 100644 --- a/mk/cmake/Modules/FindGLEW.cmake +++ b/mk/cmake/Modules/FindGLEW.cmake @@ -1,54 +1,66 @@ - -# Try to find GLEW library and include path. -# Once done this will define +#.rst: +# FindGLEW +# -------- # -# GLEW_FOUND -# GLEW_INCLUDE_PATH -# GLEW_LIBRARY -# +# Find the OpenGL Extension Wrangler Library (GLEW) +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines the :prop_tgt:`IMPORTED` target ``GLEW::GLEW``, +# if GLEW has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# :: +# +# GLEW_INCLUDE_DIRS - include directories for GLEW +# GLEW_LIBRARIES - libraries to link against GLEW +# GLEW_FOUND - true if GLEW has been found and can be used -IF (WIN32) - FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h - $ENV{PROGRAMFILES}/GLEW/include - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES glew GLEW glew32 glew32s - PATHS - $ENV{PROGRAMFILES}/GLEW/lib - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin - ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib - DOC "The GLEW library") -ELSE (WIN32) +#============================================================================= +# Copyright 2012 Benjamin Eikel +# Copyright 2015 filux +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) - SET(GLEW_NAMES ${GLEW_NAMES} GLEW glew) - OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) - IF(WANT_STATIC_LIBS) - SET(GLEW_NAMES libGLEW.a libglew.a ${GLEW_NAMES}) - ENDIF() - - FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h - /usr/include - /usr/local/include - /sw/include - /opt/local/include - DOC "The directory where GL/glew.h resides") - FIND_LIBRARY( GLEW_LIBRARY - NAMES ${GLEW_NAMES} - PATHS - /usr/lib64 - /usr/lib - /usr/local/lib64 - /usr/local/lib - /sw/lib - /opt/local/lib - DOC "The GLEW library") -ENDIF (WIN32) - -IF(GLEW_INCLUDE_PATH) - SET( GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") -ELSE() - SET( GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") +IF(WANT_STATIC_LIBS) + OPTION(GLEW_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) ENDIF() -MARK_AS_ADVANCED(GLEW_FOUND GLEW_INCLUDE_PATH GLEW_LIBRARY) +find_path(GLEW_INCLUDE_DIR GL/glew.h) + +SET(GLEW_NAMES ${GLEW_NAMES} GLEW glew32 glew glew32s) +IF(GLEW_STATIC) + SET(GLEW_NAMES libGLEW.a libglew32.a libglew.a libglew32s.a ${GLEW_NAMES}) +ENDIF() + +find_library(GLEW_LIBRARY NAMES ${GLEW_NAMES} PATH_SUFFIXES lib64) + +set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR}) +set(GLEW_LIBRARIES ${GLEW_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GLEW REQUIRED_VARS GLEW_INCLUDE_DIR GLEW_LIBRARY) + +if(GLEW_FOUND AND NOT TARGET GLEW::GLEW) + add_library(GLEW::GLEW UNKNOWN IMPORTED) + set_target_properties(GLEW::GLEW PROPERTIES + IMPORTED_LOCATION "${GLEW_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}") + + message(STATUS "GLEW_LIBRARY: ${GLEW_LIBRARIES}") +endif() + +mark_as_advanced(GLEW_INCLUDE_DIR GLEW_LIBRARY) diff --git a/mk/cmake/Modules/FindIrcclient.cmake b/mk/cmake/Modules/FindIrcclient.cmake index 7559e127..3c41f969 100644 --- a/mk/cmake/Modules/FindIrcclient.cmake +++ b/mk/cmake/Modules/FindIrcclient.cmake @@ -41,7 +41,6 @@ FIND_PATH(IRCCLIENT_INCLUDE_DIR libircclient.h SET(IRCCLIENT_FIND_LIBRARIES ircclient) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) OPTION(FORCE_IRCCLIENT_DYNAMIC_LIBS "force the use of dynamic libs for IRCCLIENT" OFF) MESSAGE(STATUS "Force IRCCLient dynamic: ${FORCE_IRCCLIENT_DYNAMIC_LIBS}") diff --git a/mk/cmake/Modules/FindLIBVLC.cmake b/mk/cmake/Modules/FindLIBVLC.cmake index f28da0de..31b61d09 100644 --- a/mk/cmake/Modules/FindLIBVLC.cmake +++ b/mk/cmake/Modules/FindLIBVLC.cmake @@ -46,7 +46,6 @@ find_path(LIBVLC_INCLUDE_DIR PATHS "${CMAKE_INCLUDE_PATH}/vlc" NAMES vlc.h HINTS ${PC_LIBVLC_INCLUDEDIR} ${PC_LIBVLC_INCLUDE_DIRS}) # dream on libvlc doesn't support static linking -#OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) set(LIBVLC_LIB_NAMES vlc libvlc) set(LIBVLC_LIB_CORE_NAMES vlccore libvlccore) #IF(WANT_STATIC_LIBS) diff --git a/mk/cmake/Modules/FindLUA.cmake b/mk/cmake/Modules/FindLUA.cmake index 1941f9d5..22906a5f 100644 --- a/mk/cmake/Modules/FindLUA.cmake +++ b/mk/cmake/Modules/FindLUA.cmake @@ -1,104 +1,186 @@ -# Find the Lua 5.1 includes and library +#.rst: +# FindLua +# ------- # -# 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, # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# Locate Lua library This module defines +# +# :: +# +# LUA_FOUND - if false, do not try to link to Lua +# LUA_LIBRARIES - both lua and lualib +# LUA_INCLUDE_DIR - where to find lua.h +# LUA_VERSION_STRING - the version of Lua found +# LUA_VERSION_MAJOR - the major version of Lua +# LUA_VERSION_MINOR - the minor version of Lua +# LUA_VERSION_PATCH - the patch version of Lua +# +# +# +# Note that the expected include convention is +# +# :: +# +# #include "lua.h" +# +# and not +# +# :: +# +# #include +# +# This is because, the lua location is not standardized and may exist in +# locations other than lua/ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# Copyright 2013 Rolf Eike Beer +# Copyright 2015 filux +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +unset(_lua_include_subdirs) +unset(_lua_library_names) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) IF(WANT_STATIC_LIBS) OPTION(LUA_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) ENDIF() - -IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) - #SET(LUA_FIND_QUIETLY TRUE) -ENDIF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) - -IF(FORCE_LUA_5_3) - MESSAGE(STATUS "Trying to FORCE LUA 5.3 ...") - - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.3 - /usr/include/lua - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.3.a lua5.3 liblua.a lua ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.3 lua ) - -ELSEIF(FORCE_LUA_5_2) - MESSAGE(STATUS "Trying to FORCE LUA 5.2 ...") - - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.2 - /usr/include/lua - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.2.a lua5.2 liblua.a lua ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.2 lua ) - -ELSEIF(FORCE_LUA_5_1) - MESSAGE(STATUS "Trying to FORCE LUA 5.1 ...") - - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.1 - /usr/include/lua - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.1.a lua5.1 liblua.a lua ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.1 lua ) +IF("${FORCE_LUA_VERSION}" STREQUAL "OFF") + SET(LUA_VERSIONS5 "${ALL_LUA_VERSIONS_IN_ORDER}") ELSE() - SET(LUA_FIND_INCLUDE_PATHS /usr/include/lua5.3 - /usr/include/lua5.2 - /usr/include/lua - /usr/include/lua5.1 - /usr/include ) - SET(LUA_FIND_STATIC_LIB_NAMES liblua5.3.a liblua5.2.a liblua.a liblua5.1.a lua5.3 lua5.2 lua lua5.1 ) - SET(LUA_FIND_DYNAMIC_LIB_NAMES lua5.3 lua5.2 lua lua5.1 ) + SET(LUA_VERSIONS5 "${FORCE_LUA_VERSION}") ENDIF() -FIND_PATH(LUA_INCLUDE_DIR NAMES lua.hpp - PATHS ${LUA_FIND_INCLUDE_PATHS} - IF(FreeBSD) - SET(PATHS "/usr/local/include/lua53 /usr/local/include/lua52 /usr/local/include/lua51") - ENDIF() - $ENV{LUA_HOME}) +# this is a function only to have all the variables inside go away automatically +function(set_lua_version_vars) + if (Lua_FIND_VERSION_EXACT) + if (Lua_FIND_VERSION_COUNT GREATER 1) + set(lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}) + endif () + elseif (Lua_FIND_VERSION) + # once there is a different major version supported this should become a loop + if (NOT Lua_FIND_VERSION_MAJOR GREATER 5) + if (Lua_FIND_VERSION_COUNT EQUAL 1) + set(lua_append_versions ${LUA_VERSIONS5}) + else () + foreach (subver IN LISTS LUA_VERSIONS5) + if (NOT subver VERSION_LESS ${Lua_FIND_VERSION}) + list(APPEND lua_append_versions ${subver}) + endif () + endforeach () + endif () + endif () + else () + # once there is a different major version supported this should become a loop + set(lua_append_versions ${LUA_VERSIONS5}) + endif () -IF (LUA_STATIC AND NOT LUA_LIBRARIES) - FIND_LIBRARY(LUA_LIBRARIES NAMES ${LUA_FIND_STATIC_LIB_NAMES} - PATHS - IF(FreeBSD) - SET(PATHS "/usr/local/lib/lua53 /usr/local/lib/lua52 /usr/local/lib/lua51") - ENDIF() - $ENV{LUA_HOME}) + foreach (ver IN LISTS lua_append_versions) + string(REGEX MATCH "^([0-9]+)\\.([0-9]+)$" _ver "${ver}") + list(APPEND _lua_include_subdirs + include/lua${CMAKE_MATCH_1}${CMAKE_MATCH_2} + include/lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + include/lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + ) + IF(LUA_STATIC) + list(APPEND _lua_library_names + liblua${CMAKE_MATCH_1}${CMAKE_MATCH_2}.a + liblua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.a + liblua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.a + ) + ENDIF() + list(APPEND _lua_library_names + lua${CMAKE_MATCH_1}${CMAKE_MATCH_2} + lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2} + ) + endforeach () -ELSE() - FIND_LIBRARY(LUA_LIBRARIES NAMES ${LUA_FIND_DYNAMIC_LIB_NAMES} - PATHS - IF(FreeBSD) - SET(PATHS "/usr/local/lib/lua53 /usr/local/lib/lua52 /usr/local/lib/lua51") - ENDIF() - $ENV{LUA_HOME}) -ENDIF() + set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE) + set(_lua_library_names "${_lua_library_names}" PARENT_SCOPE) +endfunction(set_lua_version_vars) -#MESSAGE(STATUS "LUA_INC: ${LUA_INCLUDE_DIR}") -#MESSAGE(STATUS "LUA_LIB: ${LUA_LIBRARIES}") +set_lua_version_vars() -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) +find_path(LUA_INCLUDE_DIR lua.h + HINTS + ENV LUA_DIR + PATH_SUFFIXES ${_lua_include_subdirs} include/lua include + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt +) +unset(_lua_include_subdirs) -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) +find_library(LUA_LIBRARY + NAMES ${_lua_library_names} lua + HINTS + ENV LUA_DIR + PATH_SUFFIXES lib + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt +) +unset(_lua_library_names) -MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARIES) +if (LUA_LIBRARY) + # include the math library for Unix + if (UNIX AND NOT APPLE AND NOT BEOS) + find_library(LUA_MATH_LIBRARY m) + set(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}") + # For Windows and Mac, don't need to explicitly include the math library + else () + set(LUA_LIBRARIES "${LUA_LIBRARY}") + endif () +endif () +if (LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h") + # At least 5.[012] have different ways to express the version + # so all of them need to be tested. Lua 5.2 defines LUA_VERSION + # and LUA_RELEASE as joined by the C preprocessor, so avoid those. + file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_strings + REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*") + + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};") + if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};") + set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}") + else () + string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};") + if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};") + endif () + string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}") + string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}") + string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}") + endif () + + unset(lua_version_strings) +endif() + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if +# all listed variables are TRUE +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua + REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR + VERSION_VAR LUA_VERSION_STRING) + +mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY) diff --git a/mk/cmake/Modules/FindOGG.cmake b/mk/cmake/Modules/FindOGG.cmake index 92a165e7..657f956b 100644 --- a/mk/cmake/Modules/FindOGG.cmake +++ b/mk/cmake/Modules/FindOGG.cmake @@ -6,7 +6,6 @@ # VORBIS_FILE_LIBRARY # -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) IF(WANT_STATIC_LIBS) OPTION(OGG_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) ENDIF() diff --git a/mk/cmake/Modules/FindXercesC.cmake b/mk/cmake/Modules/FindXercesC.cmake index 983a9c72..60febbc5 100644 --- a/mk/cmake/Modules/FindXercesC.cmake +++ b/mk/cmake/Modules/FindXercesC.cmake @@ -46,7 +46,6 @@ IF (XERCESC_INCLUDE AND XERCESC_LIBRARY) #MESSAGE(STATUS "Found cached Xerces-C lib [${XERCESC_LIBRARY}]") ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY) -OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) IF(WANT_STATIC_LIBS) OPTION(XERCESC_STATIC "Set to ON to link your project with static library (instead of DLL)." ON) ENDIF() diff --git a/mk/linux/build-mg.sh b/mk/linux/build-mg.sh index 05561e14..505f5edc 100755 --- a/mk/linux/build-mg.sh +++ b/mk/linux/build-mg.sh @@ -24,47 +24,47 @@ FORCE_32BIT_CROSS_COMPILE=0 while getopts "c:dfhl:mnx" option; do case "${option}" in - c) + c) CPU_COUNT=${OPTARG} # echo "${option} value: ${OPTARG}" ;; - d) + d) WANT_STATIC_LIBS="-DWANT_STATIC_LIBS=OFF" # echo "${option} value: ${OPTARG}" ;; - f) + f) CLANG_FORCED=1 # echo "${option} value: ${OPTARG}" ;; - h) + h) echo "Usage: $0