! include/41/iomp_lib.h.var

!
!//===----------------------------------------------------------------------===//
!//
!//                     The LLVM Compiler Infrastructure
!//
!// This file is dual licensed under the MIT and the University of Illinois Open
!// Source Licenses. See LICENSE.txt for details.
!//
!//===----------------------------------------------------------------------===//
!

!***
!*** omp_integer_kind and omp_logical_kind appear to be predefined by gcc and
!*** gfortran (definitions do not appear in the omp.h / omp_lib.h /omp_lib.f).
!*** omp_real_kind is not predefined, however.
!***

        integer, parameter :: kmp_version_major = $KMP_VERSION_MAJOR
        integer, parameter :: kmp_version_minor = $KMP_VERSION_MINOR
        integer, parameter :: kmp_version_build = $KMP_VERSION_BUILD
        character(*)          kmp_build_date
        parameter( kmp_build_date = '$KMP_BUILD_DATE' )

        integer, parameter :: omp_real_kind = 4

!***
!*** kmp_* type extensions
!***

        integer, parameter :: kmp_pointer_kind       = $KMP_INT_PTR_KIND
        integer, parameter :: kmp_size_t_kind        = $KMP_INT_PTR_KIND
        integer, parameter :: kmp_affinity_mask_kind = $KMP_INT_PTR_KIND

!***
!*** kmp_* entry points
!***

        external kmp_set_stacksize
        external kmp_set_stacksize_s
        external kmp_set_blocktime
        external kmp_set_library_serial
        external kmp_set_library_turnaround
        external kmp_set_library_throughput
        external kmp_set_library
        external kmp_set_defaults
        external kmp_get_stacksize
        integer kmp_get_stacksize
        external kmp_get_stacksize_s
        integer (kind = kmp_size_t_kind) kmp_get_stacksize_s
        external kmp_get_blocktime
        integer kmp_get_blocktime
        external kmp_get_library
        integer kmp_get_library
        external kmp_set_affinity
        integer kmp_set_affinity
        external kmp_get_affinity
        integer kmp_get_affinity
        external kmp_get_affinity_max_proc
        integer kmp_get_affinity_max_proc
        external kmp_create_affinity_mask
        external kmp_destroy_affinity_mask
        external kmp_set_affinity_mask_proc
        integer kmp_set_affinity_mask_proc
        external kmp_unset_affinity_mask_proc
        integer kmp_unset_affinity_mask_proc
        external kmp_get_affinity_mask_proc
        integer kmp_get_affinity_mask_proc
        external kmp_malloc
        integer (kind = kmp_pointer_kind) kmp_malloc
        external kmp_calloc
        integer (kind = kmp_pointer_kind) kmp_calloc
        external kmp_realloc
        integer (kind = kmp_pointer_kind) kmp_realloc
        external kmp_free

        external kmp_set_warnings_on
        external kmp_set_warnings_off


