rcedgar / muscle

Multiple sequence and structure alignment with top benchmark scores scalable to thousands of sequences. Generates replicate alignments, enabling assessment of downstream analyses such as trees and predicted structures.
https://drive5.com/muscle
GNU General Public License v3.0
203 stars 22 forks source link

Does not build on non-Intel architectures #25

Closed tillea closed 2 years ago

tillea commented 2 years ago

Hi, I upgraded the Debian package to muscle 5.1. It builds nicely for Intel architectures. However, Debian builds for several other architectures and this was successful for version 3.8.1551. The autobuilders logs can be seen here. Looking for instance at arm64 log you can find at the end the failure:

g++ -Wdate-time -D_FORTIFY_SOURCE=2 -DNDEBUG -pthread -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -O3 -fopenmp -ffast-math -c -o Linux/transaln.o transaln.cpp
In file included from testlog.cpp:2:
timing.h: In function ‘void cmd_testlog()’:
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
timing.h:26:9: error: impossible constraint in ‘asm’
   26 |         __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      |         ^~~~~~~
make[2]: *** [Makefile:53: Linux/testlog.o] Error 1

This assembly is for x86 based system. On arm64 you would want something like this. It would be great if muscle would be portable also to other architectures.

Kind regards, Andreas.

rcedgar commented 2 years ago

Hi @tillea thanks for the helpful feedback! As noted in #22 I'm working on figuring out OBS so that as many architectures as possible are supported. Closing this issue as duplicate of #22.