package An official xmake package repository https://xrepo.xmake.io/
 
 
 

41 lines
2.0 KiB

package("offsetallocator")
set_homepage("https://github.com/sebbbi/OffsetAllocator")
set_description("Fast O(1) offset allocator with minimal fragmentation")
set_license("MIT")
add_urls("https://github.com/sebbbi/OffsetAllocator.git")
add_versions("2023.03.27", "3610a7377088b1e8c8f1525f458c96038a4e6fc0")
on_install(function (package)
if package:is_plat("windows") and package:config("shared") then
io.replace("offsetAllocator.hpp", "namespace OffsetAllocator", [[
#define LIBRARY_API __declspec(dllexport)
namespace OffsetAllocator
]], {plain = true})
io.replace("offsetAllocator.hpp", "struct Allocation", "struct LIBRARY_API Allocation", {plain = true})
io.replace("offsetAllocator.hpp", "struct Region", "struct LIBRARY_API Region", {plain = true})
io.replace("offsetAllocator.hpp", "struct StorageReport", "struct LIBRARY_API StorageReport", {plain = true})
io.replace("offsetAllocator.hpp", "class Allocator", "class LIBRARY_API Allocator", {plain = true})
io.replace("offsetAllocator.hpp", "struct Node", "struct LIBRARY_API Node", {plain = true})
end
io.writefile("xmake.lua", [[
add_rules("mode.release", "mode.debug")
target("OffsetAllocator")
set_kind("$(kind)")
set_languages("c++20")
add_files("offsetAllocator.cpp")
add_headerfiles("offsetAllocator.hpp")
]])
import("package.tools.xmake").install(package)
end)
on_test(function (package)
assert(package:check_cxxsnippets({test = [[
void test() {
using namespace OffsetAllocator;
Allocator allocator(12345);
Allocation a = allocator.allocate(1337);
uint32 offset_a = a.offset;
}
]]}, {configs = {languages = "c++20"}, includes = {"offsetAllocator.hpp"}}))
end)