Skip to content

Commit

Permalink
[build] Fixes build with CMake <3.0.2. (#2123)
Browse files Browse the repository at this point in the history
  • Loading branch information
jlsantiago0 authored Sep 16, 2021
1 parent ad84c38 commit 4d0fe61
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 70 deletions.
10 changes: 3 additions & 7 deletions scripts/CheckCXXAtomic.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,12 @@

include(CheckCXXSourceCompiles)
include(CheckLibraryExists)
include(UnSetVariableFull)

function(CheckCXXAtomic)

unset(HAVE_CXX_ATOMIC)
unset(HAVE_CXX_ATOMIC PARENT_SCOPE)
unset(HAVE_CXX_ATOMIC CACHE)

unset(HAVE_CXX_ATOMIC_STATIC)
unset(HAVE_CXX_ATOMIC_STATIC PARENT_SCOPE)
unset(HAVE_CXX_ATOMIC_STATIC CACHE)
UnSetVariableFull(HAVE_CXX_ATOMIC)
UnSetVariableFull(HAVE_CXX_ATOMIC_STATIC)

unset(CMAKE_REQUIRED_FLAGS)
unset(CMAKE_REQUIRED_LIBRARIES)
Expand Down
25 changes: 6 additions & 19 deletions scripts/CheckGCCAtomicIntrinsics.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,28 +22,15 @@

include(CheckCSourceCompiles)
include(CheckLibraryExists)
include(UnSetVariableFull)

function(CheckGCCAtomicIntrinsics)

unset(HAVE_LIBATOMIC)
unset(HAVE_LIBATOMIC PARENT_SCOPE)
unset(HAVE_LIBATOMIC CACHE)

unset(HAVE_GCCATOMIC_INTRINSICS)
unset(HAVE_GCCATOMIC_INTRINSICS PARENT_SCOPE)
unset(HAVE_GCCATOMIC_INTRINSICS CACHE)

unset(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC)
unset(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC PARENT_SCOPE)
unset(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC CACHE)

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC)
unset(HAVE_GCCATOMIC_INTRINSICS_STATIC PARENT_SCOPE)
unset(HAVE_GCCATOMIC_INTRINSICS_STATIC CACHE)

unset(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC)
unset(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC PARENT_SCOPE)
unset(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC CACHE)
UnSetVariableFull(HAVE_LIBATOMIC)
UnSetVariableFull(HAVE_GCCATOMIC_INTRINSICS)
UnSetVariableFull(HAVE_GCCATOMIC_INTRINSICS_REQUIRES_LIBATOMIC)
UnSetVariableFull(HAVE_GCCATOMIC_INTRINSICS_STATIC)
UnSetVariableFull(HAVE_GCCATOMIC_INTRINSICS_STATIC_REQUIRES_LIBATOMIC)

unset(CMAKE_REQUIRED_FLAGS)
unset(CMAKE_REQUIRED_LIBRARIES)
Expand Down
80 changes: 36 additions & 44 deletions scripts/FindPThreadGetSetName.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,56 +27,48 @@
# add_definitions(-DHAVE_PTHREAD_SETNAME_NP=1)

include(CheckSymbolExists)
include(UnSetVariableFull)

function(FindPThreadGetSetName)

unset(HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
unset(HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H PARENT_SCOPE)
unset(HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H CACHE)
unset(HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
unset(HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H PARENT_SCOPE)
unset(HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H CACHE)
UnSetVariableFull(HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
UnSetVariableFull(HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
UnSetVariableFull(HAVE_PTHREAD_GETNAME_NP)
UnSetVariableFull(HAVE_PTHREAD_SETNAME_NP)

unset(HAVE_PTHREAD_GETNAME_NP)
unset(HAVE_PTHREAD_GETNAME_NP PARENT_SCOPE)
unset(HAVE_PTHREAD_GETNAME_NP CACHE)
unset(HAVE_PTHREAD_SETNAME_NP)
unset(HAVE_PTHREAD_SETNAME_NP PARENT_SCOPE)
unset(HAVE_PTHREAD_SETNAME_NP CACHE)
set(CMAKE_REQUIRED_DEFINITIONS
-D_GNU_SOURCE -D_DARWIN_C_SOURCE -D_POSIX_SOURCE=1)
set(CMAKE_REQUIRED_FLAGS "-pthread")

set(CMAKE_REQUIRED_DEFINITIONS
-D_GNU_SOURCE -D_DARWIN_C_SOURCE -D_POSIX_SOURCE=1)
set(CMAKE_REQUIRED_FLAGS "-pthread")
message(STATUS "Checking for pthread_(g/s)etname_np in 'pthread_np.h':")
check_symbol_exists(
pthread_getname_np "pthread_np.h" HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
if (HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
add_definitions(-DHAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H=1)
endif()
check_symbol_exists(
pthread_setname_np "pthread_np.h" HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
if (HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
add_definitions(-DHAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H=1)
endif()

message(STATUS "Checking for pthread_(g/s)etname_np in 'pthread_np.h':")
check_symbol_exists(
pthread_getname_np "pthread_np.h" HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
if (HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
add_definitions(-DHAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H=1)
endif()
check_symbol_exists(
pthread_setname_np "pthread_np.h" HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
if (HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
add_definitions(-DHAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H=1)
endif()
message(STATUS "Checking for pthread_(g/s)etname_np in 'pthread.h':")
check_symbol_exists(pthread_getname_np "pthread.h" HAVE_PTHREAD_GETNAME_NP)
if (HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
set(HAVE_PTHREAD_GETNAME_NP TRUE PARENT_SCOPE)
endif()
check_symbol_exists(pthread_setname_np "pthread.h" HAVE_PTHREAD_SETNAME_NP)
if (HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
set(HAVE_PTHREAD_SETNAME_NP TRUE PARENT_SCOPE)
endif()
if (HAVE_PTHREAD_GETNAME_NP)
add_definitions(-DHAVE_PTHREAD_GETNAME_NP=1)
endif()
if (HAVE_PTHREAD_SETNAME_NP)
add_definitions(-DHAVE_PTHREAD_SETNAME_NP=1)
endif()

message(STATUS "Checking for pthread_(g/s)etname_np in 'pthread.h':")
check_symbol_exists(pthread_getname_np "pthread.h" HAVE_PTHREAD_GETNAME_NP)
if (HAVE_PTHREAD_GETNAME_NP_IN_PTHREAD_NP_H)
set(HAVE_PTHREAD_GETNAME_NP TRUE PARENT_SCOPE)
endif()
check_symbol_exists(pthread_setname_np "pthread.h" HAVE_PTHREAD_SETNAME_NP)
if (HAVE_PTHREAD_SETNAME_NP_IN_PTHREAD_NP_H)
set(HAVE_PTHREAD_SETNAME_NP TRUE PARENT_SCOPE)
endif()
if (HAVE_PTHREAD_GETNAME_NP)
add_definitions(-DHAVE_PTHREAD_GETNAME_NP=1)
endif()
if (HAVE_PTHREAD_SETNAME_NP)
add_definitions(-DHAVE_PTHREAD_SETNAME_NP=1)
endif()

unset(CMAKE_REQUIRED_DEFINITIONS)
unset(CMAKE_REQUIRED_FLAGS)
unset(CMAKE_REQUIRED_DEFINITIONS)
unset(CMAKE_REQUIRED_FLAGS)

endfunction(FindPThreadGetSetName)
27 changes: 27 additions & 0 deletions scripts/UnSetVariableFull.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#
# SRT - Secure, Reliable, Transport
# Copyright (c) 2021 Haivision Systems Inc.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

# Notes:
#
# Macro that UnSets a variable in Cache, Local Scope, and Parent Scope.
#
# Usage:
#
# UnSetVariableFull(<variable>)

macro(UnSetVariableFull tVariable)
unset(tVariable)
unset(tVariable CACHE)
# unset(.... PARENT_SCOPE) was introduced in cmake-3.0.2.
if ("${CMAKE_VERSION}" VERSION_LESS "3.0.2")
set(tVariable "" PARENT_SCOPE)
else()
unset(tVariable PARENT_SCOPE)
endif()
endmacro()

0 comments on commit 4d0fe61

Please sign in to comment.