xmake-io / luarocks-build-xmake Goto Github PK
View Code? Open in Web Editor NEWA luarocks build module based on xmake
Home Page: https://xmake.io
License: Apache License 2.0
A luarocks build module based on xmake
Home Page: https://xmake.io
License: Apache License 2.0
Hello Ruki!
I created a little lua module with xmake and tested it. I then created a LuaRocks rockspec and set the build system to xmake. Here is the rockspec:
package = "wltime"
version = "1.0-1"
source = {
url = "git://github.com/winlua/wltime",
tag = "time, sleep"
}
dependencies = {
"lua >= 5.1",
"luarocks-build-xmake"
}
build = {
type = "xmake",
copy_directories = {}
}
I also tried this:
package = "wltime"
version = "1.0-1"
source = {
url = "git://github.com/winlua/wltime",
tag = "time, sleep"
}
dependencies = {
"lua >= 5.1",
"luarocks-build-xmake"
}
build = {
type = "xmake",
copy_directories = {},
xmake = {
plat = "mingw",
arch = "i686",
mode = "debug",
}
}
Here is the output when I run luarocks make
, which runs a local build (the code is not published to github yet). Note that I was running with 2.3.9 and then run this upgrade, then re-ran my test with the same result
C:\Users\russh\git\xmake [dev โก +0 ~1 -0 !]> Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content
__ ___ __ __ __ _| | ______ \ \/ / | \/ |/ _ | |/ / __ \ > < | \__/ | /_| | < ___/ /_/\_\_|_| |_|\__ \|_|\_\____| getter
Start downloading https://ci.appveyor.com/api/projects/waruqi/xmake/artifacts/xmake-installer.exe?branch=master&pr=false&job=Image%3A+Visual+Studio+2017%3B+Platform%3A+x64 ..
Start installation... Hope your antivirus doesn't trouble
Install to C:\Program Files (x86)\WinLua\XMake\bin
Adding to PATH... almost done
xmake v2.5.1+202102110353, A cross-platform build utility based on Lua
__ ___ __ __ __ _| | ______
\ \/ / | \/ |/ _ | |/ / __ \
> < | \__/ | /_| | < ___/
/_/\_\_|_| |_|\__ \|_|\_\____|
๐ Manual: https://xmake.io/#/getting_started
๐ Donate: https://xmake.io/#/sponsor
Tab completion service
Would you like to install tab completion service of xmake to your profile?
[A] For all users [M] Just for me [H] Just for this host [N] No [?] Help (default is "M"): M
Tab completion installed
C:\Users\russh\git\xmake [dev โก +0 ~1 -0 !]> xmake --version
xmake v2.5.1+202102110353, A cross-platform build utility based on Lua
Copyright (C) 2015-present Ruki Wang, tboox.org, xmake.io
_
__ ___ __ __ __ _| | ______
\ \/ / | \/ |/ _ | |/ / __ \
> < | \__/ | /_| | < ___/
/_/\_\_|_| |_|\__ \|_|\_\____|
by ruki, xmake.io
๐ Manual: https://xmake.io/#/getting_started
๐ Donate: https://xmake.io/#/sponsor
C:\Users\russh\git\xmake [dev โก +0 ~1 -0 !]> cd C:\temp\timer\
C:\temp\timer> xmake
checking for mingw directory ... C:\Program Files (x86)\WinLua\WLC
[ 25%]: compiling.release src\wltime.c
[ 50%]: linking.release wltime.dll
[100%]: build ok!
C:\temp\timer> luarocks make .\rockspec\wltime-1.0-1.rockspec
wltime 1.0-1 depends on lua >= 5.1 (5.3-1 provided by VM)
wltime 1.0-1 depends on luarocks-build-xmake (1.0-28 installed)
xmake v2.5.1+202102110353, A cross-platform build utility based on Lua
Copyright (C) 2015-present Ruki Wang, tboox.org, xmake.io
_
__ ___ __ __ __ _| | ______
\ \/ / | \/ |/ _ | |/ / __ \
> < | \__/ | /_| | < ___/
/_/\_\_|_| |_|\__ \|_|\_\____|
by ruki, xmake.io
๐ Manual: https://xmake.io/#/getting_started
๐ Donate: https://xmake.io/#/sponsor
Usage: $xmake config|f [options] [target]
Configure the project.
Common options:
-q, --quiet Quiet operation.
-y, --yes Input yes by default if need user confirm.
--confirm=CONFIRM Input the given result if need user confirm.
- yes
- no
- def
-v, --verbose Print lots of verbose information for users.
--root Allow to run xmake as root.
-D, --diagnosis Print lots of diagnosis information (backtrace, check info ..) only for
developers.
And we can append -v to get more whole information.
e.g. $ xmake -vD
--version Print the version number and exit.
-h, --help Print this help message and exit.
-F FILE, --file=FILE Read a given xmake.lua file.
-P PROJECT, --project=PROJECT Change to the given project directory.
Search priority:
1. The Given Command Argument
2. The Envirnoment Variable: XMAKE_PROJECT_DIR
3. The Current Directory
Command options (config):
-c, --clean Clean the cached configure and configure all again.
--menu Configure project with a menu-driven user interface.
-p PLAT, --plat=PLAT Compile for the given platform. (default: auto)
- android
- bsd
- cross
- cygwin
- iphoneos
- linux
- macosx
- mingw
- msys
- wasm
- watchos
- windows
-a ARCH, --arch=ARCH Compile for the given architecture. (default: auto)
- android: armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mip64
- bsd: i386 x86_64
- cross: i386 x86_64 arm arm64 mips mips64 riscv riscv64 s390x ppc ppc64
sh4
- cygwin: i386 x86_64
- iphoneos: arm64 armv7 armv7s i386 x86_64
- linux: i386 x86_64 armv7 armv7s arm64-v8a mips mips64 mipsel mips64el
- macosx: i386 x86_64 arm64
- mingw: i386 x86_64 arm arm64
- msys: i386 x86_64
- wasm: wasm32
- watchos: armv7k i386
- windows: x86 x64
-m MODE, --mode=MODE Compile for the given mode. (default: release)
-k KIND, --kind=KIND Compile for the given target kind. (default: static)
- static
- shared
- binary
--host=HOST Set the current host environment. (default: windows)
--require=REQUIRE Require all dependent packages?
- y: force to enable
- n: disable
--pkg_searchdirs=PKG_SEARCHDIRS The search directories of the remote package.
e.g.
- xmake f --pkg_searchdirs=/dir1;/dir2
--cross=CROSS Set cross toolchains prefix
e.g.
- i386-mingw32-
- arm-linux-androideabi-
--target_os=TARGET_OS Set target os only for cross-complation
--bin=BIN Set cross toolchains bin directory
e.g.
- sdk/bin (/arm-linux-gcc ..)
--sdk=SDK Set cross SDK directory
e.g.
- sdk/bin
- sdk/lib
- sdk/include
--toolchain=TOOLCHAIN Set toolchain name
e.g.
- xmake f --toolchain=clang
- xmake f --toolchain=[cross|llvm|sdcc ..] --sdk=/xxx
- run `xmake show -l toolchains` to get all toolchains
--cu=CU The Cuda Compiler
--cu-ccbin=CU-CCBIN The Cuda Host C++ Compiler
--culd=CULD The Cuda Linker
--cuflags=CUFLAGS The Cuda Compiler Flags
--culdflags=CULDFLAGS The Cuda Linker Flags
--links=LINKS The Link Libraries
--syslinks=SYSLINKS The System Link Libraries
--linkdirs=LINKDIRS The Link Search Directories
--includedirs=INCLUDEDIRS The Include Search Directories
--sc=SC The Swift Compiler
--scld=SCLD The Swift Linker
--scsh=SCSH The Swift Shared Library Linker
--frameworks=FRAMEWORKS The Frameworks
--frameworkdirs=FRAMEWORKDIRS The Frameworks Search Directories
--fc=FC The Fortran Compiler
--fcld=FCLD The Fortran Linker
--fcsh=FCSH The Fortran Shared Library Linker
--cc=CC The C Compiler
--cxx=CXX The C++ Compiler
--cpp=CPP The C Preprocessor
--ld=LD The Linker
--ar=AR The Static Library Linker
--sh=SH The Shared Library Linker
--ranlib=RANLIB The Static Library Index Generator
--cflags=CFLAGS The C Compiler Flags
--cxflags=CXFLAGS The C/C++ compiler Flags
--cxxflags=CXXFLAGS The C++ Compiler Flags
--ldflags=LDFLAGS The Binary Linker Flags
--arflags=ARFLAGS The Static Library Linker Flags
--shflags=SHFLAGS The Shared Library Linker Flags
--go=GO The Golang Compiler
--gcld=GCLD The Golang Linker
--go-ar=GO-AR The Golang Static Library Linker
--mm=MM The Objc Compiler
--mxx=MXX The Objc++ Compiler
--mflags=MFLAGS The Objc Compiler Flags
--mxflags=MXFLAGS The Objc/c++ Compiler Flags
--mxxflags=MXXFLAGS The Objc++ Compiler Flags
--as=AS The Assembler
--asflags=ASFLAGS The Assembler Flags
--rc=RC The Rust Compiler
--rcld=RCLD The Rust Linker
--rcar=RCAR The Rust Static Library Archiver
--rcsh=RCSH The Rust Shared Library Linker
--zc=ZC The Zig Compiler
--zcld=ZCLD The Zig Linker
--zcar=ZCAR The Zig Static Library Archiver
--zcsh=ZCSH The Zig Shared Library Linker
--mrc=MRC The Microsoft Resource Compiler
--mrcflags=MRCFLAGS The Microsoft Resource Flags
--dc=DC The Dlang Compiler
--dcld=DCLD The Dlang Linker
--dcar=DCAR The Dlang Static Library Archiver
--dcsh=DCSH The Dlang Shared Library Linker
--ndk=NDK The NDK Directory
--ndk_sdkver=NDK_SDKVER The SDK Version for NDK (default: auto)
--android_sdk=ANDROID_SDK The Android SDK Directory
--build_toolver=BUILD_TOOLVER The Build Tool Version of Android SDK
--ndk_stdcxx=[y|n] Use stdc++ library for NDK (default: y)
--ndk_cxxstl=NDK_CXXSTL The stdc++ stl library for NDK
- c++_static
- c++_shared
- gnustl_static
- gnustl_shared
- stlport_shared
- stlport_static
--cuda=CUDA The Cuda SDK Directory (default: auto)
--qt=QT The Qt SDK Directory (default: auto)
--qt_sdkver=QT_SDKVER The Qt SDK Version (default: auto)
--vcpkg=VCPKG The Vcpkg Directory (default: auto)
--mingw=MINGW The MingW SDK Directory
--vs=VS The Microsoft Visual Studio (default: auto)
e.g. --vs=2017
--vs_toolset=VS_TOOLSET The Microsoft Visual Studio Toolset Version
e.g. --vs_toolset=14.0
--vs_sdkver=VS_SDKVER The Windows SDK Version of Visual Studio
e.g. --vs_sdkver=10.0.15063.0
--vs_runtime=VS_RUNTIME The Runtime library of Visual Studio
- MT
- MTd
- MD
- MDd
--wdk=WDK The WDK Directory (default: auto)
--wdk_sdkver=WDK_SDKVER The WDK Version (default: auto)
--wdk_winver=WDK_WINVER The WDK Windows Version (default: auto)
- win10[|_rs3]
- win81
- win8
- win7[|_sp1|_sp2|_sp3]
--debugger=DEBUGGER Set debugger (default: auto)
e.g.
- xmake f --trybuild=auto; xmake
- xmake f --trybuild=autotools -p android --ndk=xxx; xmake
the third-party buildsystems:
- auto
- make
- autotools
- cmake
- scons
- meson
- bazel
- ninja
- msbuild
- xcodebuild
- ndkbuild
--tryconfigs=TRYCONFIGS Set the extra configurations of the third-party buildsystem for the try-
build mode.
e.g.
- xmake f --trybuild=autotools --tryconfigs='--enable-shared=no'
-o BUILDIR, --buildir=BUILDIR Set build directory. (default: build)
target Configure for the given target.
- wltime
error: invalid argument: (x86)\WinLua\Lua\5.3\include
Error: Build error: Failed configuring.
C:\temp\timer> xmake clean
C:\temp\timer> xmake
[ 25%]: compiling.release src\wltime.c
[ 50%]: linking.release wltime.dll
[100%]: build ok!
C:\temp\timer>
I'm not sure how to run xmake -v -D
when the system is invoked using luarocks? Here is my luarocks config:
C:\temp\timer> luarocks config
accept_unknown_fields = false
arch = "win32-x86"
cache = {
luajit_version_checked = true
}
cache_fail_timeout = 86400
cache_timeout = 60
check_certificates = false
cmake_generator = "MinGW Makefiles"
config_files = {
nearest = "C:/Program Files (x86)/WinLua/LuaRocks//config-5.3.lua",
system = {
file = "C:/Program Files (x86)/WinLua/LuaRocks//config-5.3.lua",
found = true
},
user = {
file = "C:/Users/russh/AppData/Roaming/luarocks/config-5.3.lua",
found = false
}
}
connection_timeout = 30
deploy_bin_dir = "C:/Users/russh/AppData/Roaming/luarocks/bin"
deploy_lib_dir = "C:/Users/russh/AppData/Roaming/luarocks/lib/lua/5.3"
deploy_lua_dir = "C:/Users/russh/AppData/Roaming/luarocks/share/lua/5.3"
deps_mode = "one"
disabled_servers = {}
export_path_separator = ";"
external_deps_dirs = {
"C:\\Program Files (x86)\\WinLua\\WLC\\i686-w64-mingw32/",
"c:/mingw",
"c:/windows/system32"
}
external_deps_patterns = {
bin = {
"?.exe",
"?.bat"
},
include = {
"?.h"
},
lib = {
"?.lib",
"lib?.lib",
"lib?.a",
"lib?.dll.a",
"?.dll.a",
"?.dll",
"?.lib"
}
}
external_deps_subdirs = {
bin = "bin",
include = "include",
lib = {
"",
"lib",
"bin"
}
}
external_lib_extension = "lib"
fs_use_modules = true
home = "C:\\Users\\russh\\AppData\\Roaming"
home_tree = "C:\\Users\\russh\\AppData\\Roaming/luarocks"
homeconfdir = "C:\\Users\\russh\\AppData\\Roaming/luarocks"
hooks_enabled = true
is_binary = true
lib_extension = "dll"
lib_modules_path = "/lib/lua/5.3"
link_lua_explicitly = true
local_by_default = true
local_cache = "C:\\Users\\russh\\AppData\\Local/LuaRocks/Cache"
lua_extension = "lua"
lua_found = {
lua_bindir = "C:\\Program Files (x86)\\WinLua\\Lua\\5.3\\bin",
lua_dir = "C:\\Program Files (x86)\\WinLua\\Lua\\5.3\\bin",
lua_interpreter = "lua.exe",
lua_version = "5.3"
}
lua_interpreter = "luarocks.exe"
lua_modules_path = "/share/lua/5.3"
lua_version = "5.3"
major_version = "3.4"
makefile = "Makefile"
no_manifest = false
obj_extension = "o"
processor = "x86"
program_series = "3.4"
program_version = "3.4.0"
rocks_dir = "C:/Users/russh/AppData/Roaming/luarocks/lib/luarocks/rocks-5.3"
rocks_servers = {
{
"https://luarocks.org",
"https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/",
"https://luafr.org/luarocks/",
"http://luarocks.logiceditor.com/rocks"
}
}
rocks_subdir = "/lib/luarocks/rocks-5.3"
rocks_trees = {
{
name = "user",
root = "C:\\Users\\russh\\AppData\\Roaming\\\\luarocks"
},
{
name = "system",
root = "C:\\Program Files (x86)\\WinLua\\Lua\\5.3"
}
}
runtime_external_deps_patterns = {
bin = {
"?.exe",
"?.bat"
},
include = {
"?.h"
},
lib = {
"cyg?.dll",
"?.dll",
"lib?.dll"
}
}
runtime_external_deps_subdirs = {
bin = "bin",
include = "include",
lib = {
"",
"lib",
"bin"
}
}
static_lib_extension = "a"
sysconfdir = "C:\\Program Files (x86)\\WinLua\\LuaRocks\\"
target_cpu = "x86"
upload = {
api_version = "1",
server = "https://luarocks.org",
tool_version = "1.0.0"
}
user_agent = "LuaRocks/3.4.0 win32-x86"
variables = {
AR = "ar",
BUNZIP2 = "bunzip2",
CC = "wlc32.exe",
CFLAGS = "-O2",
CHMOD = "chmod",
CMAKE = "cmake",
CP = "cp",
CURL = "curl",
CURLNOCERTFLAG = "-k",
CVS = "cvs",
FIND = "find",
GIT = "git",
GPG = "gpg",
GUNZIP = "gunzip",
HG = "hg",
ICACLS = "icacls",
LD = "wlc32.exe",
LIBFLAG = "-shared",
LIB_EXTENSION = "dll",
LS = "ls",
LUA = "C:\\Program Files (x86)\\WinLua\\LuaRocks\\bin/luarocks.exe",
LUALIB = "lua53.lib",
LUA_BINDIR = "C:\\Program Files (x86)\\WinLua\\LuaRocks\\bin",
LUA_DIR = "C:\\Program Files (x86)\\WinLua\\Lua\\5.3\\bin",
LUA_INCDIR = "C:\\Program Files (x86)\\WinLua\\Lua\\5.3\\include",
LUA_LIBDIR = "C:\\Program Files (x86)\\WinLua\\Lua\\5.3\\bin",
LUA_LIBDIR_FILE = "lua53.lib",
MAKE = "mingw32-make",
MD5 = "md5",
MD5SUM = "md5sum",
MKDIR = "mkdir",
MKTEMP = "mktemp",
MT = "mt",
OBJ_EXTENSION = "o",
OPENSSL = "openssl",
PWD = "pwd",
RANLIB = "ranlib",
RC = "windres",
RM = "rm",
RMDIR = "rmdir",
ROCKS_TREE = "C:/Users/russh/AppData/Roaming/luarocks/lib/luarocks/rocks-5.3",
RSYNC = "rsync",
RSYNCFLAGS = "--exclude=.git -Oavz",
SCP = "scp",
SCRIPTS_DIR = "C:/Users/russh/AppData/Roaming/luarocks/bin",
SEVENZ = "7z",
SSCM = "sscm",
SVN = "svn",
TAR = "tar",
TOUCH = "touch",
UNZIP = "unzip -n",
WGET = "wget",
WGETNOCERTFLAG = "--no-check-certificate",
ZIP = "zip"
}
verbose = false
web_browser = "start"
wrapper_suffix = ".bat"
Thanks!
Russ
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.