build-swift-macos.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/usr/bin/env bash
  2. set -ex
  3. dir=build-swift-macos
  4. mkdir -p $dir
  5. cd $dir
  6. if [ ! -f openmp-11.0.0.src.tar.xz ]; then
  7. wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz
  8. fi
  9. if [ ! -d openmp-11.0.0.src ]; then
  10. tar -xf openmp-11.0.0.src.tar.xz
  11. pushd openmp-11.0.0.src
  12. sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S
  13. sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S
  14. popd
  15. fi
  16. if [ ! -f openmp-11.0.0.src/build-x86_64/install/include/omp.h ]; then
  17. pushd openmp-11.0.0.src
  18. mkdir -p build-x86_64
  19. cd build-x86_64
  20. cmake \
  21. -DCMAKE_BUILD_TYPE=Release \
  22. -DCMAKE_INSTALL_PREFIX=install \
  23. -DCMAKE_OSX_ARCHITECTURES="x86_64" \
  24. -DLIBOMP_ENABLE_SHARED=OFF \
  25. -DLIBOMP_OMPT_SUPPORT=OFF \
  26. -DLIBOMP_USE_HWLOC=OFF ..
  27. cmake --build . -j 3
  28. cmake --build . --target install/strip
  29. popd
  30. fi
  31. rm -rf openmp.xcframework
  32. xcodebuild -create-xcframework \
  33. -library "openmp-11.0.0.src/build-x86_64/install/lib/libomp.a" \
  34. -output openmp.xcframework
  35. mkdir -p openmp.xcframework/Headers
  36. cp -v openmp-11.0.0.src/build-x86_64/install/include/omp.h openmp.xcframework/Headers
  37. export CPLUS_INCLUDE_PATH=$PWD/openmp-11.0.0.src/build-x86_64/install/include:$CPLUS_INCLUDE_PATH
  38. mkdir -p build-x86_64
  39. pushd build-x86_64
  40. cmake \
  41. -DCMAKE_OSX_ARCHITECTURES="x86_64" \
  42. -DOpenMP_C_FLAGS="-Xclang -fopenmp" \
  43. -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
  44. -DOpenMP_C_LIB_NAMES="libomp" \
  45. -DOpenMP_CXX_LIB_NAMES="libomp" \
  46. -DOpenMP_libomp_LIBRARY="$PWD/../openmp-11.0.0.src/build-x86_64/install/lib/libomp.a" \
  47. \
  48. -DCMAKE_INSTALL_PREFIX=./install \
  49. -DCMAKE_BUILD_TYPE=Release \
  50. -DBUILD_SHARED_LIBS=OFF \
  51. -DSHERPA_NCNN_ENABLE_PYTHON=OFF \
  52. -DSHERPA_NCNN_ENABLE_PORTAUDIO=OFF \
  53. -DSHERPA_NCNN_ENABLE_JNI=OFF \
  54. -DSHERPA_NCNN_ENABLE_BINARY=OFF \
  55. -DSHERPA_NCNN_ENABLE_TEST=OFF \
  56. -DSHERPA_NCNN_ENABLE_C_API=ON \
  57. ../..
  58. make VERBOSE=1 -j4
  59. make install
  60. rm -rf install/lib/cmake
  61. rm -rf install/lib/pkgconfig
  62. rm -rf install/include/ncnn
  63. rm -rf install/include/kaldi-native-fbank
  64. popd
  65. rm -rf sherpa-ncnn.xcframework
  66. libtool -static -o ./build-x86_64/install/lib/sherpa-ncnn.a \
  67. build-x86_64/install/lib/libncnn.a \
  68. build-x86_64/install/lib/libsherpa-ncnn-c-api.a \
  69. build-x86_64/install/lib/libsherpa-ncnn-core.a \
  70. build-x86_64/install/lib/libkaldi-native-fbank-core.a
  71. xcodebuild -create-xcframework \
  72. -library "build-x86_64/install/lib/sherpa-ncnn.a" \
  73. -output sherpa-ncnn.xcframework
  74. mkdir -p sherpa-ncnn.xcframework/Headers
  75. cp -av build-x86_64/install/include/* sherpa-ncnn.xcframework/Headers
  76. pushd sherpa-ncnn.xcframework/macos-x86_64/
  77. ln -s sherpa-ncnn.a libsherpa-ncnn.a
  78. popd
  79. ls -ld ./*xcframework