DaehwanKimLab / hisat2

Graph-based alignment (Hierarchical Graph FM index)
GNU General Public License v3.0
464 stars 113 forks source link

Is this software can support aarch64(arm64) platform #244

Open darmac opened 4 years ago

darmac commented 4 years ago

When I build it on my aarch64 platform, it reports errors as follows:

8 errors found in build log:
     23    /home/xiaojun/spack/lib/spack/env/gcc/g++ -O3 -m32 -msse2 -funroll-loops -g3 -DCOMPILER_OPTIONS="\"-O3 -m32 -msse2 -funroll-loops -g3 -DPOPCNT_CAPABILITY -std=c++11\"" -DPOPCNT_CAPABILITY
           -std=c++11 \
     24    -fno-strict-aliasing -DHISAT2_VERSION="\"`cat VERSION`\"" -DBUILD_HOST="\"`hostname`\"" -DBUILD_TIME="\"`date`\"" -DCOMPILER_VERSION="\"`/home/xiaojun/spack/lib/spack/env/gcc/g++ -v 2>&1 |
            tail -1`\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE  -DBOWTIE_MM   -DBOWTIE2 -DBOWTIE_64BIT_INDEX -DNDEBUG -Wall \
     25     -I. -I third_party   \
     26    -o hisat2-align-l hisat2.cpp \
     27    ccnt_lut.cpp ref_read.cpp alphabet.cpp shmem.cpp edit.cpp gfm.cpp reference.cpp ds.cpp multikey_qsort.cpp limit.cpp random_source.cpp tinythread.cpp qual.cpp pat.cpp read_qseq.cpp aligner_
           seed_policy.cpp aligner_seed.cpp aligner_seed2.cpp aligner_sw.cpp aligner_sw_driver.cpp aligner_cache.cpp aligner_result.cpp ref_coord.cpp mask.cpp pe.cpp aln_sink.cpp dp_framer.cpp scorin
           g.cpp presets.cpp unique.cpp simple_func.cpp random_util.cpp aligner_bt.cpp sse_util.cpp aligner_swsse.cpp outq.cpp aligner_swsse_loc_i16.cpp aligner_swsse_ee_i16.cpp aligner_swsse_loc_u8.
           cpp aligner_swsse_ee_u8.cpp aligner_driver.cpp splice_site.cpp  hisat2_main.cpp \
     28    -lpthread
  >> 29    g++: error: unrecognized command line option '-m32'
  >> 30    g++: error: unrecognized command line option '-msse2'
     31    make: *** [Makefile:348: hisat2-build-s] Error 1
     32    make: *** Waiting for unfinished jobs....
  >> 33    g++: error: unrecognized command line option '-m32'
  >> 34    g++: error: unrecognized command line option '-msse2'
     35    make: *** [Makefile:356: hisat2-build-l] Error 1
  >> 36    g++: error: unrecognized command line option '-m32'
  >> 37    g++: error: unrecognized command line option '-msse2'
     38    make: *** [Makefile:384: hisat2-align-s] Error 1
  >> 39    g++: error: unrecognized command line option '-m32'
  >> 40    g++: error: unrecognized command line option '-msse2'
     41    make: *** [Makefile:392: hisat2-align-l] Error 1

It looks like the g++ option '-m32' & '-msse2' are not suitable for aarch64

ifeq (32,$(BITS))
    BITS_FLAG = -m32
endif

ifeq (64,$(BITS))
    BITS_FLAG = -m64
endif
SSE_FLAG=-msse2

DEBUG_FLAGS    = -O0 -g3 $(BITS_FLAG) $(SSE_FLAG)
mr-c commented 4 years ago

Hello @darmac , can you try my pull request at https://github.com/DaehwanKimLab/hisat2/pull/251 ? This is the patch that Debian uses to allow compilation on arm64. You will also need to remove the -m32 and -msse2 flags as you discovered