From d2a3c051e57ded7103f65870af356967c035c28c Mon Sep 17 00:00:00 2001 From: KimLS Date: Wed, 26 Jun 2013 09:57:06 -0700 Subject: [PATCH] Added custom find lua cmake module to make building on windows easier --- CMakeLists.txt | 4 +- cmake/FindEQLua51.cmake | 124 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 cmake/FindEQLua51.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ca8fb61b7..215a356e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,9 +33,11 @@ IF(MSVC) IF(CMAKE_CL_64) SET(ZLIB_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/zlib_x64") SET(MYSQL_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/mysql_x64") + SET(LUA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luaj_x64") ELSE(CMAKE_CL_64) SET(ZLIB_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/zlib_x86") SET(MYSQL_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/mysql_x86") + SET(LUA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luaj_x86") ENDIF(CMAKE_CL_64) #disable CRT warnings on windows cause they're annoying as shit and we use C functions everywhere @@ -153,7 +155,7 @@ IF(EQEMU_BUILD_PERL) ENDIF(EQEMU_BUILD_PERL) IF(EQEMU_BUILD_LUA) - FIND_PACKAGE(Lua51 REQUIRED) + FIND_PACKAGE(EQLua51 REQUIRED) SET(Boost_USE_STATIC_LIBS OFF) SET(Boost_USE_MULTITHREADED ON) SET(Boost_USE_STATIC_RUNTIME OFF) diff --git a/cmake/FindEQLua51.cmake b/cmake/FindEQLua51.cmake new file mode 100644 index 000000000..9f6663d56 --- /dev/null +++ b/cmake/FindEQLua51.cmake @@ -0,0 +1,124 @@ +#CMake - Cross Platform Makefile Generator +#Copyright 2000-2011 Kitware, Inc., Insight Software Consortium +#All rights reserved. +# +#Redistribution and use in source and binary forms, with or without +#modification, are permitted provided that the following conditions +#are met: +# +#* Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +#* Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +#* Neither the names of Kitware, Inc., the Insight Software Consortium, +# nor the names of their contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +#A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +#HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +#SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +#LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +#DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +#THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +#(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This module defines +# LUA51_FOUND, if false, do not try to link to Lua +# LUA_LIBRARIES +# LUA_INCLUDE_DIR, where to find lua.h +# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8) + +IF(LUA_ROOT) + FIND_PATH(LUA_INCLUDE_DIR + NAMES lua.h + HINTS + ENV LUA_DIR + PATHS + ${LUA_ROOT} + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt + PATH_SUFFIXES include/lua51 include/lua5.1 include/lua include src + ) + + FIND_LIBRARY(LUA_LIBRARY + NAMES lua51 lua5.1 lua-5.1 lua + HINTS + ENV LUA_DIR + PATHS + ${LUA_ROOT} + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt + PATH_SUFFIXES lib bin + ) +ELSE(LUA_ROOT) + FIND_PATH(LUA_INCLUDE_DIR + NAMES lua.h + HINTS + ENV LUA_DIR + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt + PATH_SUFFIXES include/lua51 include/lua5.1 include/lua include + ) + + FIND_LIBRARY(LUA_LIBRARY + NAMES lua51 lua5.1 lua-5.1 lua + HINTS + ENV LUA_DIR + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt + PATH_SUFFIXES lib bin + ) +ENDIF(LUA_ROOT) + +IF(LUA_LIBRARY) + # include the math library for Unix + IF(UNIX AND NOT APPLE) + FIND_LIBRARY(LUA_MATH_LIBRARY m) + SET(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries") + # For Windows and Mac, don't need to explicitly include the math library + ELSE() + SET( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries") + ENDIF() +ENDIF() + +IF(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h") + FILE(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"") + + STRING(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}") + UNSET(lua_version_str) +ENDIF() + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua51 + REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR + VERSION_VAR LUA_VERSION_STRING) + +MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY) + +