/xmake-repo

📦 An official xmake package repository

Primary LanguageLuaApache License 2.0Apache-2.0

xmake-repo

github-ci github-ci github-ci github-ci
Reddit Gitter Telegram QQ Discord license Donate

An official xmake package repository

Supporting the project

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. 🙏 [Become a sponsor]

Introduction (中文)

xmake-repo is an official xmake package repository.

Package dependences

Package management

If you want to know more, please refer to:

Xrepo

xrepo is a cross-platform C/C++ package manager based on Xmake.

It is based on the runtime provided by xmake, but it is a complete and independent package management program. Compared with package managers such as vcpkg/homebrew, xrepo can provide C/C++ packages for more platforms and architectures at the same time.

If you want to know more, please refer to: Documents, Github and Gitee

Submit package to repository

Write a xmake.lua of new package in packages/x/xxx/xmake.lua and push a pull-request to the dev branch.

For example, packages/z/zlib/xmake.lua:

If you want to known more, please see: Create and Submit packages to the official repository

package("zlib")

    set_homepage("http://www.zlib.net")
    set_description("A Massively Spiffy Yet Delicately Unobtrusive Compression Library")

    set_urls("http://zlib.net/zlib-$(version).tar.gz",
             "https://downloads.sourceforge.net/project/libpng/zlib/$(version)/zlib-$(version).tar.gz")

    add_versions("1.2.10", "8d7e9f698ce48787b6e1c67e6bff79e487303e66077e25cb9784ac8835978017")
    add_versions("1.2.11", "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1")

    on_install("windows", function (package)
        io.gsub("win32/Makefile.msc", "%-MD", "-" .. package:config("vs_runtime"))
        os.vrun("nmake -f win32\\Makefile.msc zlib.lib")
        os.cp("zlib.lib", package:installdir("lib"))
        os.cp("*.h", package:installdir("include"))
    end)

    on_install("linux", "macosx", function (package)
        import("package.tools.autoconf").install(package, {"--static"})
    end)
 
    on_install("iphoneos", "android@linux,macosx", "mingw@linux,macosx", function (package)
        import("package.tools.autoconf").configure(package, {host = "", "--static"})
        io.gsub("Makefile", "\nAR=.-\n",      "\nAR=" .. (package:build_getenv("ar") or "") .. "\n")
        io.gsub("Makefile", "\nARFLAGS=.-\n", "\nARFLAGS=cr\n")
        io.gsub("Makefile", "\nRANLIB=.-\n",  "\nRANLIB=\n")
        os.vrun("make install -j4")
    end)

    on_test(function (package)
        assert(package:has_cfuncs("inflate", {includes = "zlib.h"}))
    end)

Supported Packages

linux windows mingw iphoneos macosx android
boost boost catch2 catch2 autoconf catch2
bullet3 bzip2 concurrentqueue cjson automake cjson
bzip2 cairo cpp-taskflow concurrentqueue boost concurrentqueue
cairo catch2 doctest cpp-taskflow bullet3 cpp-taskflow
catch2 concurrentqueue fmt doctest bzip2 doctest
cjson cpp-taskflow gtest fmt cairo ffmpeg
concurrentqueue doctest imgui gtest catch2 fmt
cpp-taskflow expat inja imgui cjson gtest
doctest fmt libjpeg inja cmake imgui
expat freeglut libsdl json-c concurrentqueue inja
ffmpeg freetype nlohmann_json libcurl cpp-taskflow json-c
fmt glew pcre libev doctest libjpeg
fontconfig go pcre2 libffi expat libpng
freeglut gtest spdlog libjpeg ffmpeg libuv
freetype imgui tbox libpng fmt libxml2
gettext inja xz libuv fontconfig lua
glew libcurl zlib libxml2 freetype nlohmann_json
glib libjpeg nlohmann_json gettext spdlog
go libpng spdlog glew tbox
gperf libsdl tbox glib zlib
gtest libtiff zlib go
icu4c libuv gperf
imgui libwebsockets gtest
inja lua icu4c
json-c luajit imgui
libcurl nana inja
libev nlohmann_json json-c
libffi oatpp libcurl
libiconv pcre libev
libjpeg pixman libffi
libmill protobuf-c libiconv
libpng protobuf-cpp libjpeg
libsdl raylib libmill
libtask skia libpng
libtiff spdlog libsdl
libusb sqlite3 libtask
libuv tbox libtiff
libwebsockets unqlite libtool
libxml2 zeromq libusb

Note: Only some packages are shown here. If you want to see a complete list of all packages, please see: Packages List

We also welcome everyone to contribute some packages to our package repository.🙏