diff options
-rw-r--r-- | games-rpg/solarus/files/FindLuaJIT.cmake | 63 | ||||
-rw-r--r-- | games-rpg/solarus/solarus-9999.ebuild | 34 |
2 files changed, 86 insertions, 11 deletions
diff --git a/games-rpg/solarus/files/FindLuaJIT.cmake b/games-rpg/solarus/files/FindLuaJIT.cmake new file mode 100644 index 0000000..e626a5a --- /dev/null +++ b/games-rpg/solarus/files/FindLuaJIT.cmake @@ -0,0 +1,63 @@ +# Locate LuaJIT library +# This module defines +# LUAJIT_FOUND, if false, do not try to link to Lua +# LUA_LIBRARIES +# LUA_INCLUDE_DIR, where to find lua.h +# LUAJIT_VERSION_STRING, the version of Lua found (since CMake 2.8.8) + +## Copied from default CMake FindLua51.cmake + +find_path(LUA_INCLUDE_DIR luajit.h + HINTS + ENV LUA_DIR + PATH_SUFFIXES include/luajit-2.0 include + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt +) + +find_library(LUA_LIBRARY + NAMES luajit-5.1 + HINTS + ENV LUA_DIR + PATH_SUFFIXES lib + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt +) + +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}/luajit.h") + file(STRINGS "${LUA_INCLUDE_DIR}/luajit.h" luajit_version_str REGEX "^#define[ \t]+LUAJIT_VERSION[ \t]+\"LuaJIT .+\"") + + string(REGEX REPLACE "^#define[ \t]+LUAJIT_VERSION[ \t]+\"LuaJIT ([^\"]+)\".*" "\\1" LUAJIT_VERSION_STRING "${luajit_version_str}") + unset(luajit_version_str) +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(LuaJIT + REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR + VERSION_VAR LUAJIT_VERSION_STRING) + +mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY) + diff --git a/games-rpg/solarus/solarus-9999.ebuild b/games-rpg/solarus/solarus-9999.ebuild index 76f6b5d..9bc2fe2 100644 --- a/games-rpg/solarus/solarus-9999.ebuild +++ b/games-rpg/solarus/solarus-9999.ebuild @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: $ -EAPI="2" +EAPI="5" inherit cmake-utils games subversion @@ -13,31 +13,44 @@ ESVN_REPO_URI="svn://svn.solarus-engine.org/solarus/trunk" LICENSE="GPL-3" SLOT="0" KEYWORDS="" -IUSE="debug" +IUSE="debug luajit" DEPEND="media-libs/sdl-image[png] media-libs/sdl-ttf media-libs/openal - dev-lang/lua + || ( =dev-lang/lua-5.1* dev-lang/luajit:2 ) + luajit? ( dev-lang/luajit ) media-libs/libsndfile dev-games/physfs[zip]" RDEPEND="${DEPEND} app-arch/zip" -src_configure() -{ +src_prepare() { + use luajit && { + cp "${FILESDIR}/FindLuaJIT.cmake" "${S}/cmake/modules/" || die "copying failed" + sed \ + -e "s#Lua51#LuaJIT#" \ + -i "${S}/src/CMakeLists.txt" || die "luajit sed failed" + sed -r \ + -e 's#(COMMAND) (luac -o) (\$\{CMAKE_CURRENT_BINARY_DIR\}/\$\{lua_source_file\}c) (\$\{lua_source_file\})#\1 luajit -b \4 \3#' \ + -i "${S}/quests/zsdx/data/CMakeLists.txt" + } + sed \ + -e "s#-pedantic -Wall -Werror#-Wno-error -fpermissive#" \ + -i "${S}/src/CMakeLists.txt" || die "compilation fix sed failed" +} + +src_configure() { mycmakeargs="${mycmakeargs} -DDATAPATH=${GAMES_DATADIR}/${PN}" cmake-utils_src_configure } -src_compile() -{ +src_compile() { cmake-utils_src_compile } -src_install() -{ +src_install() { dogamesbin "${WORKDIR}/${P}_build/src/${PN}" || die "dobin failed" local datadir="${GAMES_DATADIR}"/"${PN}" @@ -48,7 +61,6 @@ src_install() prepgamesdirs } -pkg_postinst() -{ +pkg_postinst() { games_pkg_postinst } |