libflame  revision_anchor
blis_f77_name_mangling.h
Go to the documentation of this file.
1 /*
2 
3  Copyright (C) 2014, The University of Texas at Austin
4 
5  This file is part of libflame and is available under the 3-Clause
6  BSD license, which can be found in the LICENSE file at the top-level
7  directory, or at http://opensource.org/licenses/BSD-3-Clause
8 
9 */
10 
11 // --- Define Fortran name-mangling macro --------------------------------------
12 
13 // If the F77_FUNC name-mangling macro is undefined, then we we need to define
14 // it ourselves.
15 #ifndef F77_FUNC
16 
17  // Case 1: F77_FUNC is undefined because we're building for Windows.
18  #ifdef BLIS1_ENABLE_WINDOWS_BUILD
19 
20  // Check whether we need to use uppercase Fortran routine names; otherwise
21  // default to lowercase.
22  #ifdef BLIS1_ENABLE_UPPERCASE_F77
23 
24  // Use uppercase routine names (no underscore).
25  #define F77_FUNC( name_lower, name_upper ) \
26  name_upper
27  #else
28 
29  // Use lowercase routine names (no underscore).
30  #define F77_FUNC( name_lower, name_upper ) \
31  name_lower
32  #endif
33 
34  // Case 2: F77_FUNC is undefined because we're in a Linux-like environment
35  // that did not define it for us.
36  #else
37 
38  // Check whether we need to use uppercase Fortran routine names; otherwise
39  // default to lowercase.
40  #ifdef BLIS1_ENABLE_UPPERCASE_F77
41 
42  // Use uppercase routine names (single underscore).
43  #define F77_FUNC( name_lower, name_upper ) \
44  name_upper ## _
45  #else
46 
47  // Use lowercase routine names (single underscore).
48  #define F77_FUNC( name_lower, name_upper ) \
49  name_lower ## _
50  #endif
51 
52  #endif // #ifdef BLIS1_ENABLE_WINDOWS_BUILD
53 
54 #endif // #ifndef F77_FUNC
55