00001 /* 00002 libflame 00003 An object-based infrastructure for developing high-performance 00004 dense linear algebra libraries. 00005 00006 Copyright (C) 2009, The University of Texas 00007 00008 libflame is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as 00010 published by the Free Software Foundation; either version 2.1 of 00011 the License, or (at your option) any later version. 00012 00013 libflame is distributed in the hope that it will be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with libflame; if you did not receive a copy, see 00020 http://www.gnu.org/licenses/. 00021 00022 For more information, please contact us at flame@cs.utexas.edu or 00023 send mail to: 00024 00025 Field G. Van Zee and/or 00026 Robert A. van de Geijn 00027 The University of Texas at Austin 00028 Department of Computer Sciences 00029 1 University Station C0500 00030 Austin TX 78712 00031 */ 00032 00033 #ifndef FLAME_H 00034 #define FLAME_H 00035 00036 // Allow C++ users to include this header file in their source code. However, 00037 // we make the extern "C" conditional on whether we're using a C++ compiler, 00038 // since regular C compilers don't understand the extern "C" construct. 00039 #ifdef __cplusplus 00040 extern "C" { 00041 #endif 00042 00043 // Include autoconf-related preprocessor defines. 00044 #include "FLA_config.h" 00045 #include "FLA_config_check.h" 00046 00047 // Include standard C header files. 00048 #include <stdio.h> 00049 #include <stdlib.h> 00050 #include <stdarg.h> 00051 #include <string.h> 00052 #ifdef FLA_ENABLE_WINDOWS_BUILD 00053 //#include <windows.h> 00054 #include "FLA_win_types.h" 00055 #else 00056 #include <unistd.h> 00057 #include <fcntl.h> 00058 #include <sys/types.h> 00059 #endif 00060 #include <math.h> 00061 #include <signal.h> 00062 00063 // Include macros to convert BLAS invocations and prototypes to uppercase, 00064 // if requested. 00065 #ifdef FLA_ENABLE_UPPERCASE_BLAS 00066 #include "FLA_blas_to_upper.h" 00067 #endif 00068 00069 // Include macros to convert LAPACK invocations and prototypes to uppercase, 00070 // if requested. 00071 #ifdef FLA_ENABLE_UPPERCASE_LAPACK 00072 #include "FLA_lapack_to_upper.h" 00073 #endif 00074 00075 // Include macros to convert various internal Fortran invocations and 00076 // prototypes to uppercase, if requested. 00077 #ifdef FLA_ENABLE_UPPERCASE_INTERNAL_F77 00078 #include "FLA_internal_f77_to_upper.h" 00079 #endif 00080 00081 // Include general FLAME macro and _PTR macro definitions. 00082 #include "FLA_macro_defs.h" 00083 #include "FLA_macro_ptr_defs.h" 00084 00085 // Include general FLAME type definitions, including those for FLA_Obj. 00086 #include "FLA_type_defs.h" 00087 00088 // Include Fortran-to-C and C-to-Fortran underscoring macros. 00089 #include "FLA_F2C.h" 00090 00091 // Include "extern" definitions for global FLAME scalar constants. 00092 #include "FLA_extern_defs.h" 00093 00094 // Include control tree structure definitions, utility prototypes, and 00095 // initialization prototypes. 00096 #include "FLA_Cntl.h" 00097 #include "FLA_Cntl_init.h" 00098 00099 // Include prototypes for base FLAME routines. 00100 #include "FLA_main_prototypes.h" 00101 #include "FLA_util_base_prototypes.h" 00102 #include "FLA_util_lapack_prototypes.h" 00103 00104 // Include prototypes for standard Fortran BLAS and LAPACK routines. 00105 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00106 #ifdef FLA_ENABLE_WINDOWS_BUILD 00107 #include "cblas.h" 00108 #else 00109 #include "FLA_blas_c_prototypes.h" 00110 #endif 00111 #else 00112 #include "FLA_blas_f77_prototypes.h" 00113 #endif 00114 #include "FLA_lapack_f77_prototypes.h" 00115 00116 // Include prototypes for FLAME interfaces to BLAS and LAPACK operations. 00117 #include "FLA_blas1_prototypes.h" 00118 #include "FLA_blas2_prototypes.h" 00119 #include "FLA_blas3_prototypes.h" 00120 #include "FLA_lapack_prototypes.h" 00121 00122 // Include prototypes for FLAME implementations of BLAS and LAPACK operations. 00123 #include "FLA_blas_var_prototypes.h" 00124 #include "FLA_lapack_var_prototypes.h" 00125 00126 // Include FLASH headers. 00127 #include "FLASH.h" 00128 00129 // Include SuperMatrix headers. 00130 #include "FLASH_Queue.h" 00131 00132 // End extern "C" construct block. 00133 #ifdef __cplusplus 00134 } 00135 #endif 00136 00137 #endif 00138