summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--games-rpg/solarus/files/FindLuaJIT.cmake63
-rw-r--r--games-rpg/solarus/solarus-9999.ebuild34
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
}