22 char * env_metis_lib_name;
31 if ( env_metis_lib_name = getenv(
"VH_MUMPS_LIBRARY" ) ) {
32 size_t lenv = strlen( env_metis_lib_name );
34 fprintf( stdout ,
"%s @ %d failed : metis library name too long (%s)\n" , basename(__FILE__) , __LINE__ , env_metis_lib_name );
39 memcpy( (
void * ) metis_lib_name , (
void * ) env_metis_lib_name , lenv *
sizeof(
char) );
40 metis_lib_name[ lenv ] =
'\0';
41 fprintf( stdout ,
"%s @ %d input library %s\n" , basename(__FILE__) , __LINE__ , metis_lib_name );
46 strcpy( metis_lib_name ,
"libvh.so" );
55 handle = vhcall_install( metis_lib_name );
56 if (
handle == (vhcall_handle)-1) {
57 perror(
"vhcall_install");
58 fprintf( stdout ,
"%s @ %d failed : can't install library %s\n" , basename(__FILE__) , __LINE__ , metis_lib_name );
59 fprintf( stdout ,
"Please check your LD_LIBRARY_PATH variable\n");
70 symid = vhcall_find(
handle,
"METIS_SetDefaultOptions");
72 fprintf( stdout ,
"%s @ %d failed : can't find symbol METIS_SetDefaultOptions\n" , basename(__FILE__) , __LINE__ );
73 perror(
"vhcall_find");
84 ca = vhcall_args_alloc();
86 perror(
"vhcall_args_alloc");
87 fprintf( stdout ,
"%s @ %d failed : unable to allocate function's argument list\n" , basename(__FILE__) , __LINE__ );
98 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , 0 , options , METIS_NOPTIONS *
sizeof( idx_t ) );
100 perror(
"vhcall_args_set_pointer");
101 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
112 ret = vhcall_invoke_with_args( symid , ca , &retval );
114 perror(
"vhcall_invoke_with_args");
115 fprintf( stdout ,
"%s @ %d failed : unable to invoke the symbol from library\n" , basename(__FILE__) , __LINE__ );
126 vhcall_args_free( ca );
134 if ( vhcall_uninstall(
handle ) ) {
135 perror(
"vhcall_uninstall");
136 fprintf( stdout ,
"cvhmetis_nodend failed : unable to uninstall the library\n" , basename(__FILE__) , __LINE__ );
141 return( (
int) retval );