summaryrefslogtreecommitdiff
path: root/core/src/mimalloc/xmake.lua
blob: d436811f72cca53374e75e86044d3c1d5e59c5e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
set_project("mimalloc")
add_rules("mode.release", "mode.debug")

set_warnings("all")
set_languages("c99")

target("mimalloc")
    set_kind("$(kind)")
    add_includedirs("mimalloc/include", {public = true})
    add_defines("XM_CONFIG_API_HAVE_MIMALLOC", {public = true})

    add_files("mimalloc/src/alloc.c")
    add_files("mimalloc/src/alloc-aligned.c")
    add_files("mimalloc/src/alloc-posix.c")
    add_files("mimalloc/src/arena.c")
    add_files("mimalloc/src/bitmap.c")
    add_files("mimalloc/src/heap.c")
    add_files("mimalloc/src/init.c")
    add_files("mimalloc/src/libc.c")
    add_files("mimalloc/src/options.c")
    add_files("mimalloc/src/os.c")
    add_files("mimalloc/src/page.c")
    add_files("mimalloc/src/random.c")
    add_files("mimalloc/src/segment.c")
    add_files("mimalloc/src/segment-map.c")
    add_files("mimalloc/src/stats.c")
    add_files("mimalloc/src/prim/prim.c")

    -- override malloc
    if is_plat("macosx") then
        add_files("mimalloc/src/prim/osx/alloc-override-zone.c")
        add_defines("MI_OSX_ZONE=1", "MI_OSX_INTERPOSE=1")
    end
    add_cflags("-fno-builtin-malloc", {tools = {"gcc", "clang", "gxx", "clangxx"}})

    -- fast atomics
    if is_plat("macosx", "iphoneos") and is_arch("arm64") then
        add_cflags("-Xarch_arm64", "-march=armv8.1-a")
    elseif is_plat("windows") and is_arch("arm64") then
        add_cflags("cl:/arch:armv8.1")
    elseif is_arch("arm64") then
        add_cflags("-march=armv8.1-a", {tools = {"gcc", "clang", "gxx", "clangxx"}})
    end

    add_defines("MI_SKIP_COLLECT_ON_EXIT=1")
    if is_plat("windows") and is_kind("static") then
        add_defines("MI_WIN_USE_FIXED_TLS=1")
    end
    if is_plat("mingw") then
        add_defines("_WIN32_WINNT=0x600")
    end

    if is_plat("windows", "mingw") then
        add_syslinks("psapi", "shell32", "user32", "advapi32", "bcrypt", {public = true})
    else
        add_syslinks("pthread", {public = true})
    end