A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/Haivision/srt/commit/e8f4057590c0f5e7e05c7b8f76b763147f883bb7 below:

[build] Automatically link libatomic if needed. (#2116) · Haivision/srt@e8f4057 · GitHub

1 +

#

2 +

# SRT - Secure, Reliable, Transport

3 +

# Copyright (c) 2021 Haivision Systems Inc.

4 +

#

5 +

# This Source Code Form is subject to the terms of the Mozilla Public

6 +

# License, v. 2.0. If a copy of the MPL was not distributed with this

7 +

# file, You can obtain one at http://mozilla.org/MPL/2.0/.

8 +

#

9 + 10 +

# Check for GCC Atomic Intrinsics and whether libatomic is required.

11 +

#

12 +

# Sets:

13 +

# HAVE_LIBATOMIC

14 +

# HAVE_GCCATOMIC_INTRINSICS

15 +

# HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC

16 +

# HAVE_GCCATOMIC_INTRINSICS_STATIC

17 +

# HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC

18 +

#

19 +

# See

20 +

# https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html

21 +

# https://gcc.gnu.org/wiki/Atomic/GCCMM/AtomicSync

22 + 23 +

include(CheckCSourceCompiles)

24 +

include(CheckLibraryExists)

25 + 26 +

function(CheckGCCAtomicIntrinsics)

27 + 28 +

unset(HAVE_LIBATOMIC)

29 +

unset(HAVE_LIBATOMIC PARENT_SCOPE)

30 +

unset(HAVE_LIBATOMIC CACHE)

31 + 32 +

unset(HAVE_GCCATOMIC_INTRINSICS)

33 +

unset(HAVE_GCCATOMIC_INTRINSICS PARENT_SCOPE)

34 +

unset(HAVE_GCCATOMIC_INTRINSICS CACHE)

35 + 36 +

unset(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC)

37 +

unset(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC PARENT_SCOPE)

38 +

unset(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC CACHE)

39 + 40 +

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC)

41 +

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC PARENT_SCOPE)

42 +

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC CACHE)

43 + 44 +

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC)

45 +

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC PARENT_SCOPE)

46 +

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC CACHE)

47 + 48 +

unset(CMAKE_REQUIRED_FLAGS)

49 +

unset(CMAKE_REQUIRED_LIBRARIES)

50 +

unset(CMAKE_REQUIRED_LINK_OPTIONS)

51 + 52 +

set(CheckGCCAtomicIntrinsics_CODE

53 +

"

54 +

#include<stddef.h>

55 +

#include<stdint.h>

56 +

int main(void)

57 +

{

58 +

ptrdiff_t x = 0;

59 +

intmax_t y = 0;

60 +

__atomic_add_fetch(&x, 1, __ATOMIC_SEQ_CST);

61 +

__atomic_add_fetch(&y, 1, __ATOMIC_SEQ_CST);

62 +

return __atomic_sub_fetch(&x, 1, __ATOMIC_SEQ_CST)

63 +

+ __atomic_sub_fetch(&y, 1, __ATOMIC_SEQ_CST);

64 +

}

65 +

")

66 + 67 +

check_library_exists(

68 +

atomic __atomic_fetch_add_8 "" HAVE_LIBATOMIC)

69 + 70 +

check_c_source_compiles(

71 +

"${CheckGCCAtomicIntrinsics_CODE}"

72 +

HAVE_GCCATOMIC_INTRINSICS)

73 + 74 +

if (NOT HAVE_GCCATOMIC_INTRINSICS

75 +

AND HAVE_LIBATOMIC)

76 +

set(CMAKE_REQUIRED_LIBRARIES "atomic")

77 +

check_c_source_compiles(

78 +

"${CheckGCCAtomicIntrinsics_CODE}"

79 +

HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC)

80 +

if (HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC)

81 +

set(HAVE_GCCATOMIC_INTRINSICS TRUE PARENT_SCOPE)

82 +

endif()

83 +

endif()

84 + 85 +

unset(CMAKE_REQUIRED_FLAGS)

86 +

unset(CMAKE_REQUIRED_LIBRARIES)

87 +

unset(CMAKE_REQUIRED_LINK_OPTIONS)

88 + 89 +

if (HAVE_GCCATOMIC_INTRINSICS)

90 +

set(CMAKE_REQUIRED_LINK_OPTIONS "-static")

91 +

check_c_source_compiles(

92 +

"${CheckGCCAtomicIntrinsics_CODE}"

93 +

HAVE_GCCATOMIC_INTRINSICS_STATIC)

94 +

if (NOT HAVE_GCCATOMIC_INTRINSICS_STATIC

95 +

AND HAVE_LIBATOMIC)

96 +

set(CMAKE_REQUIRED_LIBRARIES "atomic")

97 +

check_c_source_compiles(

98 +

"${CheckGCCAtomicIntrinsics_CODE}"

99 +

HAVE_GCCATOMIC_INTRINSICS_STATIC)

100 +

if (HAVE_GCCATOMIC_INTRINSICS_STATIC)

101 +

set(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC TRUE PARENT_SCOPE)

102 +

endif()

103 +

endif()

104 +

endif()

105 + 106 +

unset(CMAKE_REQUIRED_FLAGS)

107 +

unset(CMAKE_REQUIRED_LIBRARIES)

108 +

unset(CMAKE_REQUIRED_LINK_OPTIONS)

109 + 110 +

endfunction(CheckGCCAtomicIntrinsics)


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4