1 /*===-- include/flang/Runtime/entry-names.h -------------------------*- C -*-=// 2 * 3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 * See https://llvm.org/LICENSE.txt for license information. 5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 * 7 *===------------------------------------------------------------------------=== 8 */ 9 10 /* Defines the macro RTNAME(n) which decorates the external name of a runtime 11 * library function or object with extra characters so that it 12 * (a) is not in the user's name space, 13 * (b) doesn't conflict with other libraries, and 14 * (c) prevents incompatible versions of the runtime library from linking 15 * 16 * The value of REVISION should not be changed until/unless the API to the 17 * runtime library must change in some way that breaks backward compatibility. 18 */ 19 #ifndef FORTRAN_RUNTIME_ENTRY_NAMES_H 20 #define FORTRAN_RUNTIME_ENTRY_NAMES_H 21 22 #include "flang/Common/api-attrs.h" 23 24 #ifndef RTNAME 25 #define NAME_WITH_PREFIX_AND_REVISION(prefix, revision, name) \ 26 prefix##revision##name 27 #define RTNAME(name) NAME_WITH_PREFIX_AND_REVISION(_Fortran, A, name) 28 #endif 29 30 #ifndef RTDECL 31 #define RTDECL(name) RT_API_ATTRS RTNAME(name) 32 #endif 33 34 #ifndef RTDEF 35 #define RTDEF(name) RT_API_ATTRS RTNAME(name) 36 #endif 37 38 #ifndef RTNAME_STRING 39 #define RTNAME_STRINGIFY_(x) #x 40 #define RTNAME_STRINGIFY(x) RTNAME_STRINGIFY_(x) 41 #define RTNAME_STRING(name) RTNAME_STRINGIFY(RTNAME(name)) 42 #endif 43 44 #endif /* !FORTRAN_RUNTIME_ENTRY_NAMES_H */ 45