ut-beg-texnet / NonLinLoc

Probabilistic, Non-Linear, Global-Search Earthquake Location in 3D Media
http://www.alomax.net/nlloc/docs
GNU General Public License v3.0
96 stars 32 forks source link

build error in sphfd_SWR_NLL.c file #37

Open fontiela opened 1 year ago

fontiela commented 1 year ago

When I compile NLL I get several errors related to the sphfd_SWR_NLL.c file

[ 85%] Building C object CMakeFiles/sphfd_SWR_NLL.dir/sphfd_SWR_NLL.c.o
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:700:29: error: call to undeclared function 'gp_add_entry'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
        if (name[0] == '-') gp_add_entry("SWITCH", &name[1]);
                            ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:703:13: error: call to undeclared function 'gp_do_par_file'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
            gp_do_par_file(value, 1);
            ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:715:9: error: call to undeclared function 'getpar'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    if (GETPAR("STOP", "s", value)) addflags |= STOP;
        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:597:16: note: expanded from macro 'GETPAR'
#define GETPAR getpar
               ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:715:9: note: did you mean 'setpar'?
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:597:16: note: expanded from macro 'GETPAR'
#define GETPAR getpar
               ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:647:1: note: 'setpar' declared here
setpar(ac, av) /* set up arglist & process INPUT command */
^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:759:9: error: call to undeclared function 'gp_getpar_err'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
        gp_getpar_err("setpar", "cannot allocate memory");
        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:763:19: error: call to undeclared function 'gp_compute_hash'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    alptr->hash = gp_compute_hash(name);
                  ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:842:16: error: call to undeclared function 'getpar'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    if ((cnt = GETPAR(name, type, val)) > 0) return (cnt);
               ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:597:16: note: expanded from macro 'GETPAR'
#define GETPAR getpar
               ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:875:5: error: call to undeclared function 'gp_getpar_err'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    gp_getpar_err("mstpar", "must specify value for '%s', expecting %s",
    ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:898:9: error: call to undeclared function 'gp_getpar_err'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
        gp_getpar_err("getpar", "called after endpar");
        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:913:9: error: call to undeclared function 'gp_compute_hash'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    h = gp_compute_hash(name);
        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:942:25: error: call to undeclared function 'gp_getvector'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                found = gp_getvector(str, type, val);
                        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:1055:9: error: call to undeclared function 'gp_getpar_err'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
        gp_getpar_err("setpar", "%d (too many) recursive par file", level);
        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:1568:5: error: call to undeclared function 'read'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    read(vfint, &headin, 232);
    ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:1568:5: note: did you mean 'fread'?
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include/stdio.h:150:9: note: 'fread' declared here
size_t   fread(void * __restrict __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream);
         ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:1617:9: error: call to undeclared function 'close'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
        close(vfint);
        ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:6654:5: error: call to undeclared function 'writeNLLtimeGrid'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    writeNLLtimeGrid(&headout, timefile, time0);
    ^
/Users/joaofontiela/geophysics/NonLinLoc/src/sphfd_SWR_NLL.c:6657:5: error: call to undeclared function 'writeNLLmodelGrid'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    writeNLLmodelGrid(&headout, timefile, slow0);
    ^
15 errors generated.
make[2]: *** [CMakeFiles/sphfd_SWR_NLL.dir/sphfd_SWR_NLL.c.o] Error 1
make[1]: *** [CMakeFiles/sphfd_SWR_NLL.dir/all] Error 2
make: *** [all] Error 2

I tried to compile on macOS 14.0 with M1 and M2.

alomax commented 1 year ago

Hello,

I am not sure I ever replied to this issue, my apologies.

The functions are declared later in the sphfd_SWR_NLL.c code, but apparently depending on compiler and compiler flags this gives an error. If you are not using sphfd_SWR_NLL, then the easiest might be to comment out in src/CMakeLists.txt the following lines:

add_executable(sphfd_SWR_NLL sphfd_SWR_NLL.c)
target_link_libraries(sphfd_SWR_NLL GRID_LIB_OBJS m)
target_compile_options(sphfd_SWR_NLL PRIVATE "-w")

and then recompile. If you want to use sphfd_SWR_NLL or get this error for other NLL objects, then I would check which flag on your compiler should be set to either recognize the older C code conventions or to not give an error when they are used.

Anthony

fontiela commented 11 months ago

Dear Anthony,

I follow your recommendations and I was able to compile.

Thank you

claudiodsf commented 6 months ago

Hi Anthony,

I attach here a patch which should make sphfd_SWR_NLL.c compilable. (But I didn't test the code).

sphfd_SWR_NLL.c.patch