build-swift-macos.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. export CPLUS_INCLUDE_PATH=$PWD/openmp-11.0.0.src/build-x86_64/install/include:$CPLUS_INCLUDE_PATH
  32. mkdir -p build-x86_64
  33. pushd build-x86_64
  34. cmake \
  35. -DCMAKE_OSX_ARCHITECTURES="x86_64" \
  36. -DOpenMP_C_FLAGS="-Xclang -fopenmp" \
  37. -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
  38. -DOpenMP_C_LIB_NAMES="libomp" \
  39. -DOpenMP_CXX_LIB_NAMES="libomp" \
  40. -DOpenMP_libomp_LIBRARY="$PWD/../openmp-11.0.0.src/build-x86_64/install/lib/libomp.a" \
  41. \
  42. -DCMAKE_INSTALL_PREFIX=./install \
  43. -DCMAKE_BUILD_TYPE=Release \
  44. -DBUILD_SHARED_LIBS=OFF \
  45. -DSHERPA_NCNN_ENABLE_PYTHON=OFF \
  46. -DSHERPA_NCNN_ENABLE_PORTAUDIO=OFF \
  47. -DSHERPA_NCNN_ENABLE_JNI=OFF \
  48. -DSHERPA_NCNN_ENABLE_BINARY=OFF \
  49. -DSHERPA_NCNN_ENABLE_TEST=OFF \
  50. -DSHERPA_NCNN_ENABLE_C_API=ON \
  51. ../..
  52. make VERBOSE=1 -j4
  53. make install
  54. rm -rf install/lib/cmake
  55. rm -rf install/lib/pkgconfig
  56. rm -rf install/include/ncnn
  57. rm -rf install/include/kaldi-native-fbank
  58. popd
  59. # For openmp.framework
  60. rm -rf openmp.framework
  61. mkdir -p openmp.framework/Versions/A/Headers
  62. mkdir -p openmp.framework/Versions/A/Resources
  63. ln -s A openmp.framework/Versions/Current
  64. ln -s Versions/Current/Headers openmp.framework/Headers
  65. ln -s Versions/Current/Resources openmp.framework/Resources
  66. ln -s Versions/Current/openmp openmp.framework/openmp
  67. cp openmp-11.0.0.src/build-x86_64/install/lib/libomp.a openmp.framework/Versions/A/openmp
  68. cp -a openmp-11.0.0.src/build-x86_64/install/include/* openmp.framework/Versions/A/Headers/
  69. sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' ../Info.plist > openmp.framework/Versions/A/Resources/Info.plist
  70. # For sherpa-ncnn.framework
  71. rm -rf sherpa-ncnn.framework
  72. mkdir -p sherpa-ncnn.framework/Versions/A/Headers
  73. mkdir -p sherpa-ncnn.framework/Versions/A/Headers
  74. mkdir -p sherpa-ncnn.framework/Versions/A/Resources
  75. ln -s A sherpa-ncnn.framework/Versions/Current
  76. ln -s Versions/Current/Headers sherpa-ncnn.framework/Headers
  77. ln -s Versions/Current/Resources sherpa-ncnn.framework/Resources
  78. ln -s Versions/Current/sherpa-ncnn sherpa-ncnn.framework/sherpa-ncnn
  79. libtool -static -o sherpa-ncnn.framework/Versions/A/sherpa-ncnn \
  80. build-x86_64/install/lib/libncnn.a \
  81. build-x86_64/install/lib/libsherpa-ncnn-c-api.a \
  82. build-x86_64/install/lib/libsherpa-ncnn-core.a \
  83. build-x86_64/install/lib/libkaldi-native-fbank-core.a
  84. cp -a build-x86_64/install/include/* sherpa-ncnn.framework/Versions/A/Headers/
  85. sed -e 's/__NAME__/sherpa-ncnn/g' -e 's/__IDENTIFIER__/com.k2-fsa.org/g' -e 's/__VERSION__/1.3.2/g' ../Info.plist > sherpa-ncnn.framework/Versions/A/Resources/Info.plist