Mercurial > repo
view share/lua/5.2/luarocks/build/cmake.lua @ 8065:591b1467ccdf
<int-e> le/rn paste/"Paste" is a short story by Henry James. Its contents has been cut into pieces and distributed over numerous tin boxes on the World Wide Web, little pearls of wisdom buried among ordinary pastes.
author | HackBot |
---|---|
date | Sun, 15 May 2016 13:14:57 +0000 |
parents | d137f631bad5 |
children |
line wrap: on
line source
--- Build back-end for CMake-based modules. module("luarocks.build.cmake", package.seeall) local fs = require("luarocks.fs") local util = require("luarocks.util") local cfg = require("luarocks.cfg") --- Driver function for the "cmake" build back-end. -- @param rockspec table: the loaded rockspec. -- @return boolean or (nil, string): true if no errors ocurred, -- nil and an error message otherwise. function run(rockspec) assert(type(rockspec) == "table") local build = rockspec.build local variables = build.variables or {} -- Pass Env variables variables.CMAKE_MODULE_PATH=os.getenv("CMAKE_MODULE_PATH") variables.CMAKE_LIBRARY_PATH=os.getenv("CMAKE_LIBRARY_PATH") variables.CMAKE_INCLUDE_PATH=os.getenv("CMAKE_INCLUDE_PATH") util.variable_substitutions(variables, rockspec.variables) if not fs.execute_string(fs.quiet(rockspec.variables.CMAKE.." --help")) then return nil, "'"..rockspec.variables.CMAKE.."' program not found. Is cmake installed? You may want to edit variables.CMAKE" end -- If inline cmake is present create CMakeLists.txt from it. if type(build.cmake) == "string" then local cmake = assert(io.open(fs.current_dir().."/CMakeLists.txt", "w")) cmake:write(build.cmake) cmake:close() end -- Execute cmake with variables. local args = "" if cfg.cmake_generator then args = args .. ' -G"'..cfg.cmake_generator.. '"' end for k,v in pairs(variables) do args = args .. ' -D' ..k.. '="' ..v.. '"' end if not fs.execute_string(rockspec.variables.CMAKE.." . " ..args) then return nil, "Failed cmake." end if not fs.execute_string(rockspec.variables.MAKE.." -fMakefile") then return nil, "Failed building." end if not fs.execute_string(rockspec.variables.MAKE.." -fMakefile install") then return nil, "Failed installing." end return true end