aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/builtins/ya.make
blob: d6c09ba74d9cc39e7491d08896fdf6c584c335f9 (plain) (blame)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
LIBRARY()

# Part of compiler-rt LLVM subproject

# git repository: https://github.com/llvm/llvm-project.git
# directory: compiler-rt/lib/builtins
# revision: 08f0372c351a57b01afee6c64066961203da28c5

# os_version_check.c was taken from revision 81b89fd7bdddb7da66f2cdace97d6ede5f99d58a
# os_version_check.c was patched from git repository https://github.com/apple/llvm-project.git revision a02454b91d2aec347b9ce03020656c445f3b2841

LICENSE(
    Apache-2.0 AND
    Apache-2.0 WITH LLVM-exception AND
    MIT AND
    NCSA
)

LICENSE_TEXTS(.yandex_meta/licenses.list.txt)

VERSION(2016-03-03-08f0372c351a57b01afee6c64066961203da28c5)

ORIGINAL_SOURCE(https://github.com/llvm/llvm-project)

# Check MUSL before NO_PLATFORM() disables it.
IF (MUSL)
    # We use C headers despite NO_PLATFORM, but we do not propagate
    # them with ADDINCL GLOBAL because we do not have an API, and we
    # can not propagate them because libcxx has to put its own
    # includes before musl includes for its include_next to work.
    ADDINCL(
        contrib/libs/musl/arch/x86_64
        contrib/libs/musl/arch/generic
        contrib/libs/musl/include
        contrib/libs/musl/extra
    )
ENDIF()

NO_UTIL()

NO_RUNTIME()

NO_PLATFORM()

NO_COMPILER_WARNINGS()

IF (GCC OR CLANG)
    # Clang (maybe GCC too) LTO code generator leaves the builtin calls unresolved
    # even if they are available. After the code generation pass is done
    # a linker is forced to select original object files from this library again
    # as they contain unresolved symbols. But code generation is already done,
    # object files actually are not ELFs but an LLVM bytecode and we get
    # "member at xxxxx is not an ELF object" errors from the linker.
    # Just generate native code from the beginning.
    NO_LTO()
ENDIF()

SRCS(
    addtf3.c
    ashlti3.c
    clzti2.c
    comparetf2.c
    divdc3.c
    divsc3.c
    divtf3.c
    divti3.c
    divxc3.c
    extenddftf2.c
    extendsftf2.c
    fixdfti.c
    fixsfti.c
    fixtfdi.c
    fixtfsi.c
    fixunsdfti.c
    fixunssfti.c
    fixunstfdi.c
    fixunstfsi.c
    fixunstfti.c
    fixunsxfti.c
    floatditf.c
    floatsitf.c
    floattidf.c
    floattisf.c
    floattixf.c
    floatunditf.c
    floatunsitf.c
    floatuntidf.c
    floatuntisf.c
    gcc_personality_v0.c
    int_util.c
    lshrti3.c
    modti3.c
    muldc3.c
    muloti4.c
    mulsc3.c
    multf3.c
    mulxc3.c
    popcountdi2.c
    subtf3.c
    trunctfdf2.c
    trunctfsf2.c
    udivmodti4.c
    udivti3.c
    umodti3.c
)

IF (OS_DARWIN OR OS_IOS)
    SRCS(
        os_version_check.c
    )
ENDIF()

IF (ARCH_ARM)
    SRCS(
        clear_cache.c
        multc3.c
    )
ENDIF()

END()