Cross-Platform build scripts for audio plugins
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
5.0KB

  1. #!/bin/bash
  2. # ---------------------------------------------------------------------------------------------------------------------
  3. # OS setup
  4. if [ "${LINUX}" -eq 1 ]; then
  5. APP_EXT=""
  6. CMAKE_SYSTEM_NAME="Linux"
  7. PAWPAW_TARGET="linux"
  8. elif [ "${MACOS}" -eq 1 ]; then
  9. APP_EXT=""
  10. CMAKE_SYSTEM_NAME="Darwin"
  11. if [ "${MACOS_OLD}" -eq 1 ]; then
  12. PAWPAW_TARGET="macos-old"
  13. elif [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  14. PAWPAW_TARGET="macos-universal"
  15. else
  16. PAWPAW_TARGET="macos"
  17. fi
  18. elif [ "${WIN32}" -eq 1 ]; then
  19. APP_EXT=".exe"
  20. CMAKE_SYSTEM_NAME="Windows"
  21. if [ "${WIN64}" -eq 1 ]; then
  22. PAWPAW_TARGET="win64"
  23. else
  24. PAWPAW_TARGET="win32"
  25. fi
  26. else
  27. echo "Unknown target '${target}'"
  28. exit 4
  29. fi
  30. # ---------------------------------------------------------------------------------------------------------------------
  31. # PawPaw setup
  32. PAWPAW_DIR="${HOME}/PawPawBuilds"
  33. PAWPAW_DOWNLOADDIR="${PAWPAW_DIR}/downloads"
  34. PAWPAW_BUILDDIR="${PAWPAW_DIR}/builds/${PAWPAW_TARGET}"
  35. PAWPAW_PREFIX="${PAWPAW_DIR}/targets/${PAWPAW_TARGET}"
  36. PAWPAW_TMPDIR="/tmp"
  37. # ---------------------------------------------------------------------------------------------------------------------
  38. # build environment
  39. ## build flags
  40. BUILD_FLAGS="-O2 -pipe -I${PAWPAW_PREFIX}/include"
  41. BUILD_FLAGS+=" -mtune=generic -msse -msse2 -ffast-math"
  42. BUILD_FLAGS+=" -fPIC -DPIC -DNDEBUG -D_FORTIFY_SOURCE=2"
  43. BUILD_FLAGS+=" -fdata-sections -ffunction-sections -fno-common -fstack-protector -fvisibility=hidden"
  44. if [ "${MACOS_UNIVERSAL}" -eq 0 ]; then
  45. BUILD_FLAGS+=" -mfpmath=sse"
  46. fi
  47. if [ "${MACOS}" -eq 1 ]; then
  48. if [ "${MACOS_OLD}" -eq 1 ]; then
  49. BUILD_FLAGS+=" -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5 -mmacosx-version-min=10.5"
  50. elif [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  51. BUILD_FLAGS+=" -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -mmacosx-version-min=10.12 -arch x86_64 -arch arm64"
  52. else
  53. BUILD_FLAGS+=" -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_8 -mmacosx-version-min=10.8 -stdlib=libc++ -Wno-deprecated-declarations"
  54. fi
  55. elif [ "${WIN32}" -eq 1 ]; then
  56. BUILD_FLAGS+=" -DFLUIDSYNTH_NOT_A_DLL -DPTW32_STATIC_LIB -mstackrealign"
  57. fi
  58. # anything that talks to db should have this
  59. BUILD_FLAGS+=" -DHAVE_MIXED_SIZE_ADDRESSING"
  60. TARGET_CFLAGS="${BUILD_FLAGS}"
  61. TARGET_CXXFLAGS="${BUILD_FLAGS} -fvisibility-inlines-hidden"
  62. ## link flags
  63. LINK_FLAGS="-L${PAWPAW_PREFIX}/lib"
  64. LINK_FLAGS+=" -fdata-sections -ffunction-sections -fstack-protector"
  65. if [ "${MACOS}" -eq 1 ]; then
  66. LINK_FLAGS+=" -Wl,-dead_strip -Wl,-dead_strip_dylibs"
  67. if [ "${MACOS_OLD}" -eq 1 ]; then
  68. LINK_FLAGS+=" -mmacosx-version-min=10.5"
  69. elif [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  70. LINK_FLAGS+=" -mmacosx-version-min=10.12 -arch x86_64 -arch arm64"
  71. else
  72. LINK_FLAGS+=" -mmacosx-version-min=10.8 -stdlib=libc++"
  73. fi
  74. else
  75. LINK_FLAGS+=" -Wl,-O1 -Wl,--as-needed -Wl,--gc-sections -Wl,--no-undefined -Wl,--strip-all"
  76. if [ "${WIN32}" -eq 1 ]; then
  77. LINK_FLAGS+=" -static -Wl,-Bstatic"
  78. if [ "${CROSS_COMPILING}" -eq 0 ] && [ -e "/usr/lib/libssp.a" ]; then
  79. LINK_FLAGS+=" /usr/lib/libssp.a"
  80. else
  81. LINK_FLAGS+=" -lssp_nonshared"
  82. fi
  83. fi
  84. fi
  85. TARGET_LDFLAGS="${LINK_FLAGS}"
  86. ## toolchain
  87. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  88. if [ "${MACOS}" -eq 1 ]; then
  89. TOOLCHAIN_PREFIX="i686-apple-darwin10"
  90. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  91. elif [ "${WIN64}" -eq 1 ]; then
  92. TOOLCHAIN_PREFIX="x86_64-w64-mingw32"
  93. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  94. elif [ "${WIN32}" -eq 1 ]; then
  95. TOOLCHAIN_PREFIX="i686-w64-mingw32"
  96. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  97. fi
  98. fi
  99. TARGET_AR="${TOOLCHAIN_PREFIX_}ar"
  100. TARGET_CC="${TOOLCHAIN_PREFIX_}gcc"
  101. TARGET_CXX="${TOOLCHAIN_PREFIX_}g++"
  102. TARGET_LD="${TOOLCHAIN_PREFIX_}ld"
  103. TARGET_STRIP="${TOOLCHAIN_PREFIX_}strip"
  104. TARGET_PATH="${PAWPAW_PREFIX}/bin:/usr/${TOOLCHAIN_PREFIX}/bin:${PATH}"
  105. TARGET_PKG_CONFIG="${PAWPAW_PREFIX}/bin/pkg-config --static"
  106. TARGET_PKG_CONFIG_PATH="${PAWPAW_PREFIX}/lib/pkgconfig"
  107. # ---------------------------------------------------------------------------------------------------------------------
  108. # other
  109. MAKE_ARGS=""
  110. WAF_ARGS=""
  111. if which nproc > /dev/null; then
  112. MAKE_ARGS+="-j $(nproc)"
  113. WAF_ARGS+="-j $(nproc)"
  114. elif [ "${MACOS}" -eq 1 ]; then
  115. MAKE_ARGS+="-j $(sysctl -n hw.logicalcpu)"
  116. WAF_ARGS+="-j $(sysctl -n hw.logicalcpu)"
  117. fi
  118. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  119. MAKE_ARGS+=" CROSS_COMPILING=true"
  120. fi
  121. if [ "${MACOS}" -eq 1 ]; then
  122. MAKE_ARGS+=" MACOS=true"
  123. if [ "${MACOS_OLD}" -eq 1 ]; then
  124. MAKE_ARGS+=" MACOS_OLD=true"
  125. elif [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  126. MAKE_ARGS+=" MACOS_UNIVERSAL=true"
  127. fi
  128. elif [ "${WIN32}" -eq 1 ]; then
  129. MAKE_ARGS+=" WINDOWS=true WIN32=true"
  130. if [ "${WIN64}" -eq 1 ]; then
  131. MAKE_ARGS+=" WIN64=true"
  132. fi
  133. export EXE_WRAPPER="wine"
  134. fi
  135. # ---------------------------------------------------------------------------------------------------------------------