ElmerCSC / elmerfem

Official git repository of Elmer FEM software
http://www.elmerfem.org
Other
1.13k stars 308 forks source link

error: call to undeclared function 'umfpack_di_defaults'; ISO C99 and later do not support implicit function declarations #471

Open jeffhammond opened 3 weeks ago

jeffhammond commented 3 weeks ago

I don't see -Werror in my build recipe anywhere but Clang 19 errors rather than warns on these C99 violations, breaking the build.

Have you tried to build Elmer with recent versions of Clang? Is it expected to work?

[ 60%] Building C object fem/src/CMakeFiles/elmersolver.dir/umf4_f77wrapper.c.o
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:127:5: error: call to undeclared function 'umfpack_di_defaults'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  127 |     UMFPACK_defaults (Control) ;
      |     ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:101:27: note: expanded from macro 'UMFPACK_defaults'
  101 | #define UMFPACK_defaults         umfpack_di_defaults
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:143:12: error: call to undeclared function 'umfpack_di_symbolic'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  143 |     (void) UMFPACK_symbolic (*m, *n, Ap, Ai, Ax, Symbolic, Control, Info) ;
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:113:27: note: expanded from macro 'UMFPACK_symbolic'
  113 | #define UMFPACK_symbolic         umfpack_di_symbolic
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:158:12: error: call to undeclared function 'umfpack_di_numeric'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  158 |     (void) UMFPACK_numeric (Ap, Ai, Ax, *Symbolic, Numeric, Control, Info);
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:104:27: note: expanded from macro 'UMFPACK_numeric'
  104 | #define UMFPACK_numeric          umfpack_di_numeric
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:173:12: error: call to undeclared function 'umfpack_di_solve'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  173 |     (void) UMFPACK_solve (*sys, Ap, Ai, Ax, x, b, *Numeric, Control, Info) ;
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:112:25: note: expanded from macro 'UMFPACK_solve'
  112 | #define UMFPACK_solve            umfpack_di_solve
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:188:12: error: call to undeclared function 'umfpack_di_solve'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  188 |     (void) UMFPACK_solve (*sys, (Int *) NULL, (Int *) NULL, (double *) NULL,
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:112:25: note: expanded from macro 'UMFPACK_solve'
  112 | #define UMFPACK_solve            umfpack_di_solve
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:202:5: error: call to undeclared function 'umfpack_di_free_numeric'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  202 |     UMFPACK_free_numeric (Numeric) ;
      |     ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:102:31: note: expanded from macro 'UMFPACK_free_numeric'
  102 | #define UMFPACK_free_numeric     umfpack_di_free_numeric
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:215:5: error: call to undeclared function 'umfpack_di_free_symbolic'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  215 |     UMFPACK_free_symbolic (Symbolic) ;
      |     ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:103:32: note: expanded from macro 'UMFPACK_free_symbolic'
  103 | #define UMFPACK_free_symbolic    umfpack_di_free_symbolic
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:259:5: error: call to undeclared function 'umfpack_dl_defaults'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  259 |     UMFPACK_defaults (Control) ;
      |     ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:236:27: note: expanded from macro 'UMFPACK_defaults'
  236 | #define UMFPACK_defaults         umfpack_dl_defaults
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:274:12: error: call to undeclared function 'umfpack_dl_symbolic'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  274 |     (void) UMFPACK_symbolic (*m, *n, Ap, Ai, Ax, Symbolic, Control, Info) ;
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:248:27: note: expanded from macro 'UMFPACK_symbolic'
  248 | #define UMFPACK_symbolic         umfpack_dl_symbolic
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:289:12: error: call to undeclared function 'umfpack_dl_numeric'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  289 |     (void) UMFPACK_numeric (Ap, Ai, Ax, *Symbolic, Numeric, Control, Info);
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:239:27: note: expanded from macro 'UMFPACK_numeric'
  239 | #define UMFPACK_numeric          umfpack_dl_numeric
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:304:12: error: call to undeclared function 'umfpack_dl_solve'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  304 |     (void) UMFPACK_solve (*sys, Ap, Ai, Ax, x, b, *Numeric, Control, Info) ;
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:247:25: note: expanded from macro 'UMFPACK_solve'
  247 | #define UMFPACK_solve            umfpack_dl_solve
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:318:12: error: call to undeclared function 'umfpack_dl_solve'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  318 |     (void) UMFPACK_solve (*sys, (Int *) NULL, (Int *) NULL, (double *) NULL,
      |            ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:247:25: note: expanded from macro 'UMFPACK_solve'
  247 | #define UMFPACK_solve            umfpack_dl_solve
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:332:5: error: call to undeclared function 'umfpack_dl_free_numeric'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  332 |     UMFPACK_free_numeric (Numeric) ;
      |     ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:237:31: note: expanded from macro 'UMFPACK_free_numeric'
  237 | #define UMFPACK_free_numeric     umfpack_dl_free_numeric
      |                                  ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:345:5: error: call to undeclared function 'umfpack_dl_free_symbolic'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  345 |     UMFPACK_free_symbolic (Symbolic) ;
      |     ^
/home/jehammond/ELMER/elmerfem/fem/src/umf4_f77wrapper.c:238:32: note: expanded from macro 'UMFPACK_free_symbolic'
  238 | #define UMFPACK_free_symbolic    umfpack_dl_free_symbolic
      |                                  ^
14 errors generated.
ghostforest commented 2 weeks ago

This issue can be solved by adding:

include "../umfpack/src/umfpack/include/umfpack.h"

right below the

include "../config.h" statement inside umf4_f77wrapper.c inside elmer/fem/src

However beware of spiraling down into deeper compiler rabbitholes!