CMakeLists.bwa_wasm.txt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. cmake_minimum_required (VERSION 3.14)
  4. project(bwa_wasm C)
  5. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake)
  6. ################ dependencies ################
  7. find_package(Binaryen 111 REQUIRED)
  8. ################ LIBZ ################
  9. set(LIBZ_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../libz)
  10. add_library(z_wasm STATIC
  11. ${LIBZ_SRC_DIR}/adler32.c
  12. ${LIBZ_SRC_DIR}/compress.c
  13. ${LIBZ_SRC_DIR}/crc32.c
  14. ${LIBZ_SRC_DIR}/deflate.c
  15. ${LIBZ_SRC_DIR}/gzclose.c
  16. ${LIBZ_SRC_DIR}/gzlib.c
  17. ${LIBZ_SRC_DIR}/gzread.c
  18. ${LIBZ_SRC_DIR}/gzwrite.c
  19. ${LIBZ_SRC_DIR}/infback.c
  20. ${LIBZ_SRC_DIR}/inffast.c
  21. ${LIBZ_SRC_DIR}/inflate.c
  22. ${LIBZ_SRC_DIR}/inftrees.c
  23. ${LIBZ_SRC_DIR}/trees.c
  24. ${LIBZ_SRC_DIR}/uncompr.c
  25. ${LIBZ_SRC_DIR}/zutil.c
  26. )
  27. set_target_properties(z_wasm PROPERTIES LINKER_LANGUAGE C)
  28. target_compile_definitions(z_wasm PRIVATE Z_HAVE_UNISTD_H _LARGEFILE64_SOURCE=1)
  29. target_compile_options(z_wasm
  30. PRIVATE
  31. -Wno-unused-function
  32. -Wno-unused-variable
  33. )
  34. target_include_directories(z_wasm
  35. PUBLIC
  36. ${LIBZ_SRC_DIR}
  37. )
  38. ################ BWA_WASM ################
  39. set(BWA_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
  40. set(BWA_SOURCE
  41. ${BWA_SRC_DIR}/utils.c
  42. ${BWA_SRC_DIR}/kthread.c
  43. ${BWA_SRC_DIR}/kstring.c
  44. ${BWA_SRC_DIR}/ksw.c
  45. ${BWA_SRC_DIR}/bwt.c
  46. ${BWA_SRC_DIR}/bntseq.c
  47. ${BWA_SRC_DIR}/bwa.c
  48. ${BWA_SRC_DIR}/bwamem.c
  49. ${BWA_SRC_DIR}/bwamem_pair.c
  50. ${BWA_SRC_DIR}/bwamem_extra.c
  51. ${BWA_SRC_DIR}/malloc_wrap.c
  52. ${BWA_SRC_DIR}/QSufSort.c
  53. ${BWA_SRC_DIR}/bwt_gen.c
  54. ${BWA_SRC_DIR}/rope.c
  55. ${BWA_SRC_DIR}/rle.c
  56. ${BWA_SRC_DIR}/is.c
  57. ${BWA_SRC_DIR}/bwtindex.c
  58. ${BWA_SRC_DIR}/bwashm.c
  59. ${BWA_SRC_DIR}/bwase.c
  60. ${BWA_SRC_DIR}/bwaseqio.c
  61. ${BWA_SRC_DIR}/bwtgap.c
  62. ${BWA_SRC_DIR}/bwtaln.c
  63. ${BWA_SRC_DIR}/bamlite.c
  64. ${BWA_SRC_DIR}/bwape.c
  65. ${BWA_SRC_DIR}/kopen.c
  66. ${BWA_SRC_DIR}/pemerge.c
  67. ${BWA_SRC_DIR}/maxk.c
  68. ${BWA_SRC_DIR}/bwtsw2_core.c
  69. ${BWA_SRC_DIR}/bwtsw2_main.c
  70. ${BWA_SRC_DIR}/bwtsw2_aux.c
  71. ${BWA_SRC_DIR}/bwt_lite.c
  72. ${BWA_SRC_DIR}/bwtsw2_chain.c
  73. ${BWA_SRC_DIR}/fastmap.c
  74. ${BWA_SRC_DIR}/bwtsw2_pair.c
  75. ${BWA_SRC_DIR}/main.c
  76. )
  77. add_executable(${PROJECT_NAME} ${BWA_SOURCE})
  78. set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME bwa.wasm)
  79. target_compile_definitions(${PROJECT_NAME}
  80. PRIVATE
  81. USE_MALLOC_WRAPPERS
  82. __SSE__ __SSE2__ __SSE4_1__
  83. _WASI_EMULATED_MMAN _WASI_EMULATED_SIGNAL _WASI_EMULATED_PROCESS_CLOCKS
  84. )
  85. target_compile_options(${PROJECT_NAME}
  86. PRIVATE
  87. -Wno-unused-function
  88. -Wno-unused-variable
  89. -msimd128
  90. )
  91. target_link_options(${PROJECT_NAME}
  92. PRIVATE
  93. -Wno-unused-command-line-argument
  94. LINKER:--allow-undefined,--export=__heap_base,--export=__data_end
  95. LINKER:-z,stack-size=1048576
  96. )
  97. target_link_libraries(${PROJECT_NAME} z_wasm wasi-emulated-process-clocks)
  98. add_custom_target(bwa_wasm_opt ALL
  99. COMMAND
  100. ${Binaryen_WASM_OPT} -Oz --enable-simd -o bwa.opt.wasm bwa.wasm
  101. BYPRODUCTS
  102. ${CMAKE_CURRENT_BINARY_DIR}/bwa.opt.wasm
  103. WORKING_DIRECTORY
  104. ${CMAKE_CURRENT_BINARY_DIR}
  105. )
  106. add_dependencies(bwa_wasm_opt ${PROJECT_NAME})