summaryrefslogtreecommitdiff
path: root/core/src/cli/xmake.sh
blob: e2b388213daba557bf556a079776b4ecaa1c3321 (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/sh

target "cli"
    add_deps "xmake"
    set_kind "binary"
    set_basename "xmake"
    set_targetdir "${builddir}"

    # add definitions
    add_defines "__tb_prefix__=\"xmake\""

    # add includes directory
    add_includedirs "${projectdir}/core" "${projectdir}/core/src"

    # add the common source files
    add_files "**.c"

    # add links
    if is_plat "macosx" && is_config "runtime" "luajit"; then
        add_ldflags "-all_load" "-pagezero_size 10000" "-image_base 100000000"
    elif is_plat "mingw"; then
        add_ldflags "-static-libgcc"
    fi

    # add install files
    add_installfiles "${projectdir}/(xmake/**.lua)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/*)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/cmake_importfiles/**)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/completions/**)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/xpack/**)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/xrepo/**)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/virtualenvs/**)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/conan/**)" "share"
    add_installfiles "${projectdir}/(xmake/scripts/module/**)" "share"
    add_installfiles "${projectdir}/(xmake/templates/**)" "share"
    add_installfiles "${projectdir}/scripts/xrepo.sh" "bin" "xrepo"

    # fix os.exec() call incorrect program from /mingw64/bin. e.g. python, ..
    #
    # because xmake is installed to /mingw64/bin/xmake,
    # os.exec/CreateProcess always gives the highest priority to finding the process from /mingw64/bin (if it exists),
    # rather than from the $PATH environment variable.
    #
    # we install the xmake executable into a separate directory to ensure
    # that os.exec() does not look for additional executables.
    #
    # @see https://github.com/xmake-io/xmake/issues/3628
    if is_host "msys"; then
        after_install "xmake_after_install"
    fi

    # add syslinks
    add_options "atomic"
    if is_plat "mingw" "msys" "cygwin"; then
        add_syslinks "ws2_32" "pthread" "m"
    elif is_plat "bsd"; then
        add_syslinks "pthread" "m"
    elif is_plat "haiku"; then
        add_syslinks "pthread" "network" "m"
    elif test_nz "${TERMUX_ARCH}"; then
        add_syslinks "m" "dl"
    else
        add_syslinks "pthread" "dl" "m" "c"
    fi

xmake_after_install() {
    local target=${1}
    local installdir=${2}
    if test_eq "${project_generator}" "gmake"; then
        print "\t@if test -f ${installdir}/bin/xmake.exe; then rm ${installdir}/bin/xmake.exe; fi" >> "${xmake_sh_makefile}"
        print "\t@cp ${projectdir}/scripts/msys/xmake.sh ${installdir}/bin/xmake" >> "${xmake_sh_makefile}"
        print "\t@cp ${projectdir}/scripts/msys/xmake.cmd ${installdir}/bin/xmake.cmd" >> "${xmake_sh_makefile}"
        print "\t@cp ${projectdir}/scripts/msys/xmake.ps1 ${installdir}/bin/xmake.ps1" >> "${xmake_sh_makefile}"
        print "\t@cp ${builddir}/xmake.exe ${installdir}/share/xmake" >> "${xmake_sh_makefile}"
    fi
}