stephaneguindon / phyml

PhyML -- Phylogenetic estimation using (Maximum) Likelihood
GNU General Public License v3.0
177 stars 61 forks source link

Unable to compile phyml on M2 mac - MacOS Ventura V13.2 #180

Closed RogerBumgarner closed 1 year ago

RogerBumgarner commented 1 year ago

I'm trying to get phyml up and running on a new Macbook pro M2 laptop. After a bunch of fiddling around to solve issues with new versions of brew and with need GNU m4 1.4 being in a different location on this OS, I finally was able to get sh ./autogen.sh and ./configure --enable-phym to run appropriately. However, the make file didn't like the march=native option. Further searching lead me to a number of threads where this is an issue with the clang compiler (Apple clang version 14.0.0) and a suggestion that I delete the march=native option. This allows the compiler to run but it throws a bunch of errors (see below). Has anyone successfully compiled phyml under clang? If so, how did you do it/what did you do?

Errors thrown during Make below /Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive Making all in src

.: Building [phyml]. Version 3.3.20220408 :.

gcc -I. -I.. -std=c99 -O3 -fomit-frame-pointer -funroll-loops -Wall -Winline -finline -MT utilities.o -MD -MP -MF .deps/utilities.Tpo -c -o utilities.o utilities.c utilities.c:3212:18: error: no member named '_tPij1' in 'struct __Tree' boot_tree->_tPij1 = tree->_tPij1;


utilities.c:3212:47: error: no member named '_tPij1' in 'struct __Tree'
      boot_tree->_tPij1               = tree->_tPij1;
                                        ~~~~  ^
utilities.c:3213:18: error: no member named '_tPij2' in 'struct __Tree'
      boot_tree->_tPij2               = tree->_tPij2;
      ~~~~~~~~~  ^
utilities.c:3213:47: error: no member named '_tPij2' in 'struct __Tree'
      boot_tree->_tPij2               = tree->_tPij2;
                                        ~~~~  ^
utilities.c:3214:18: error: no member named '_pmat1plk1' in 'struct __Tree'
      boot_tree->_pmat1plk1           = tree->_pmat1plk1;
      ~~~~~~~~~  ^
utilities.c:3214:47: error: no member named '_pmat1plk1' in 'struct __Tree'
      boot_tree->_pmat1plk1           = tree->_pmat1plk1;
                                        ~~~~  ^
utilities.c:3215:18: error: no member named '_pmat2plk2' in 'struct __Tree'
      boot_tree->_pmat2plk2           = tree->_pmat2plk2;
      ~~~~~~~~~  ^
utilities.c:3215:47: error: no member named '_pmat2plk2' in 'struct __Tree'
      boot_tree->_pmat2plk2           = tree->_pmat2plk2;
                                        ~~~~  ^
utilities.c:3216:18: error: no member named '_plk0' in 'struct __Tree'
      boot_tree->_plk0                = tree->_plk0;
      ~~~~~~~~~  ^
utilities.c:3216:47: error: no member named '_plk0' in 'struct __Tree'
      boot_tree->_plk0                = tree->_plk0;
                                        ~~~~  ^
utilities.c:3219:18: error: no member named '_l_ev' in 'struct __Tree'; did you mean 'l_ev'?
      boot_tree->_l_ev                = tree->_l_ev;
                 ^~~~~
                 l_ev
./utilities.h:779:42: note: 'l_ev' declared here
  phydbl                  *p_lk_left_pi,*l_ev;
                                         ^
utilities.c:3219:47: error: no member named '_l_ev' in 'struct __Tree'; did you mean 'l_ev'?
      boot_tree->_l_ev                = tree->_l_ev;
                                              ^~~~~
                                              l_ev
./utilities.h:779:42: note: 'l_ev' declared here
  phydbl                  *p_lk_left_pi,*l_ev;
                                         ^
utilities.c:3220:18: error: no member named '_r_ev' in 'struct __Tree'
      boot_tree->_r_ev                = tree->_r_ev;
      ~~~~~~~~~  ^
utilities.c:3220:47: error: no member named '_r_ev' in 'struct __Tree'
      boot_tree->_r_ev                = tree->_r_ev;
                                        ~~~~  ^
utilities.c:3221:18: error: no member named '_prod_left' in 'struct __Tree'
      boot_tree->_prod_left           = tree->_prod_left;
      ~~~~~~~~~  ^
utilities.c:3221:47: error: no member named '_prod_left' in 'struct __Tree'
      boot_tree->_prod_left           = tree->_prod_left;
                                        ~~~~  ^
utilities.c:3222:18: error: no member named '_prod_rght' in 'struct __Tree'
      boot_tree->_prod_rght           = tree->_prod_rght;
      ~~~~~~~~~  ^
utilities.c:3222:47: error: no member named '_prod_rght' in 'struct __Tree'
      boot_tree->_prod_rght           = tree->_prod_rght;
                                        ~~~~  ^
utilities.c:6546:22: warning: variable 'sd' set but not used [-Wunused-but-set-variable]
  phydbl *delta,mean,sd,obs_stat,threshold;
                     ^
1 warning and 18 errors generated.
make[2]: *** [utilities.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
stephaneguindon commented 1 year ago

I think this issue was discussed (and fixed) here: #164

RogerBumgarner commented 1 year ago

Thanks, that fixed things.