Signed-off-by: falkTX <falktx@falktx.com>tags/v1.0
| @@ -3,17 +3,57 @@ | |||
| set -e | |||
| cd $(dirname ${0}) | |||
| PAWPAW_ROOT="${PWD}" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # TODO CLI args | |||
| target="${1}" | |||
| # NOTE all of these need to be defined. either 0 or 1 | |||
| CROSS_COMPILING=1 | |||
| if [ -z "${target}" ]; then | |||
| echo "usage: ${0} <target>" | |||
| exit 1 | |||
| fi | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| CROSS_COMPILING=0 | |||
| MACOS=0 | |||
| MACOS_OLD=0 | |||
| WIN32=1 | |||
| WIN64=1 | |||
| WIN32=0 | |||
| WIN64=0 | |||
| case ${target} in | |||
| "macos") | |||
| MACOS=1 | |||
| ;; | |||
| "macos-old") | |||
| MACOS=1 | |||
| MACOS_OLD=1 | |||
| CROSS_COMPILING=1 | |||
| ;; | |||
| "win32") | |||
| WIN32=1 | |||
| CROSS_COMPILING=1 | |||
| ;; | |||
| "win64") | |||
| WIN32=1 | |||
| WIN64=1 | |||
| CROSS_COMPILING=1 | |||
| ;; | |||
| "native") | |||
| echo "TODO" | |||
| exit 2 | |||
| ;; | |||
| default) | |||
| echo "Invalid target '${target}', possible values are:" | |||
| echo "\tmacos" | |||
| echo "\tmacos-old" | |||
| echo "\twin32" | |||
| echo "\twin64" | |||
| echo "\tnative" | |||
| exit 2 | |||
| ;; | |||
| esac | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| @@ -92,43 +132,15 @@ download lv2 "${LV2_VERSION}" "http://lv2plug.in/spec" "tar.bz2" | |||
| build_waf lv2 "${LV2_VERSION}" "--lv2dir=${PAWPAW_PREFIX}/lib/lv2" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # now the fun: plugins! | |||
| for p in $(ls plugins); do | |||
| name=$(jq -crM .name plugins/${p}) | |||
| version=$(jq -crM .version plugins/${p}) | |||
| buildtype=$(jq -crM .buildtype plugins/${p}) | |||
| dlbaseurl=$(jq -crM .dlbaseurl plugins/${p}) | |||
| # optional args | |||
| buildargs=$(echo -e $(jq -ecrM .buildargs plugins/${p} || echo '\n\n') | tail -n 1) | |||
| dlext=$(echo -e $(jq -ecrM .dlext plugins/${p} || echo '\n\n') | tail -n 1) | |||
| dlmethod=$(echo -e $(jq -ecrM .dlmethod plugins/${p} || echo '\n\n') | tail -n 1) | |||
| download "${name}" "${version}" "${dlbaseurl}" "${dlext}" "${dlmethod}" | |||
| # TODO patch_file support? | |||
| case ${buildtype} in | |||
| "autoconf") | |||
| build_autoconf "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "conf") | |||
| build_conf "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "cmake") | |||
| build_cmake "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "make") | |||
| build_make "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "meson") | |||
| build_meson "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "waf") | |||
| build_waf "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| esac | |||
| done | |||
| # fftw | |||
| download fftw "${FFTW_VERSION}" "http://www.fftw.org" | |||
| build_autoconf fftw "${FFTW_VERSION}" "--enable-sse2 --disable-debug --disable-alloca --disable-fortran --with-our-malloc" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # fftwf | |||
| copy_download fftw fftwf "${FFTW_VERSION}" | |||
| build_autoconf fftwf "${FFTW_VERSION}" "--enable-single --enable-sse2 --disable-debug --disable-alloca --disable-fortran --with-our-malloc" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| @@ -0,0 +1,111 @@ | |||
| #!/bin/bash | |||
| set -e | |||
| cd $(dirname ${0}) | |||
| PAWPAW_ROOT="${PWD}" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| target="${1}" | |||
| plugin="${2}" | |||
| if [ -z "${target}" ] || [ -z "${plugin}" ]; then | |||
| echo "usage: ${0} <target> <plugin>" | |||
| exit 1 | |||
| fi | |||
| # TODO check that bootstrap.sh has been run | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| CROSS_COMPILING=0 | |||
| MACOS=0 | |||
| MACOS_OLD=0 | |||
| WIN32=0 | |||
| WIN64=0 | |||
| case ${target} in | |||
| "macos") | |||
| MACOS=1 | |||
| ;; | |||
| "macos-old") | |||
| MACOS=1 | |||
| MACOS_OLD=1 | |||
| CROSS_COMPILING=1 | |||
| ;; | |||
| "win32") | |||
| WIN32=1 | |||
| CROSS_COMPILING=1 | |||
| ;; | |||
| "win64") | |||
| WIN32=1 | |||
| WIN64=1 | |||
| CROSS_COMPILING=1 | |||
| ;; | |||
| "native") | |||
| echo "TODO" | |||
| exit 2 | |||
| ;; | |||
| default) | |||
| echo "Invalid target '${target}', possible values are:" | |||
| echo "\tmacos" | |||
| echo "\tmacos-old" | |||
| echo "\twin32" | |||
| echo "\twin64" | |||
| echo "\tnative" | |||
| exit 2 | |||
| ;; | |||
| esac | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| source setup/env.sh | |||
| source setup/functions.sh | |||
| source setup/versions.sh | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| pfile="${PAWPAW_ROOT}/plugins/${plugin}.json" | |||
| if [ ! -e "${pfile}" ]; then | |||
| echo "Requested plugin file '${pfile}' does not exist" | |||
| exit 2 | |||
| fi | |||
| name=$(jq -crM .name ${pfile}) | |||
| version=$(jq -crM .version ${pfile}) | |||
| buildtype=$(jq -crM .buildtype ${pfile}) | |||
| dlbaseurl=$(jq -crM .dlbaseurl ${pfile}) | |||
| # optional args | |||
| buildargs=$(echo -e $(jq -ecrM .buildargs ${pfile} || echo '\n\n') | tail -n 1) | |||
| dlext=$(echo -e $(jq -ecrM .dlext ${pfile} || echo '\n\n') | tail -n 1) | |||
| dlmethod=$(echo -e $(jq -ecrM .dlmethod ${pfile} || echo '\n\n') | tail -n 1) | |||
| download "${name}" "${version}" "${dlbaseurl}" "${dlext}" "${dlmethod}" | |||
| # TODO patch_file support? | |||
| case ${buildtype} in | |||
| "autoconf") | |||
| build_autoconf "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "conf") | |||
| build_conf "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "cmake") | |||
| build_cmake "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "make") | |||
| build_make "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "meson") | |||
| build_meson "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| "waf") | |||
| build_waf "${name}" "${version}" "${buildargs}" | |||
| ;; | |||
| esac | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| @@ -1,33 +1,45 @@ | |||
| #!/bin/bash | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # pawpaw setup | |||
| PAWPAW_DIR="$(realpath ~/PawPawBuilds)" | |||
| PAWPAW_BUILDDIR="${PAWPAW_DIR}/builds" | |||
| PAWPAW_DOWNLOADDIR="${PAWPAW_DIR}/downloads" | |||
| PAWPAW_PREFIX="${PAWPAW_DIR}/target" | |||
| PAWPAW_TMPDIR="/tmp" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # OS setup | |||
| if [ "${MACOS}" -eq 1 ]; then | |||
| CMAKE_SYSTEM_NAME="Darwin" | |||
| if [ "${MACOS_OLD}" -eq 1 ]; then | |||
| PAWPAW_TARGET="macos-old" | |||
| else | |||
| PAWPAW_TARGET="macos" | |||
| fi | |||
| elif [ "${WIN32}" -eq 1 ]; then | |||
| CMAKE_SYSTEM_NAME="Windows" | |||
| if [ "${WIN64}" -eq 1 ]; then | |||
| PAWPAW_TARGET="win64" | |||
| else | |||
| PAWPAW_TARGET="win32" | |||
| fi | |||
| else | |||
| PAWPAW_TARGET="native" | |||
| fi | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # PawPaw setup | |||
| PAWPAW_DIR="$(realpath ~/PawPawBuilds)" | |||
| PAWPAW_DOWNLOADDIR="${PAWPAW_DIR}/downloads" | |||
| PAWPAW_BUILDDIR="${PAWPAW_DIR}/builds/${PAWPAW_TARGET}" | |||
| PAWPAW_PREFIX="${PAWPAW_DIR}/targets/${PAWPAW_TARGET}" | |||
| PAWPAW_TMPDIR="/tmp" | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # build environment | |||
| ## build flags | |||
| BUILD_FLAGS="-O2 -pipe -I${PAWPAW_PREFIX}/include" | |||
| BUILD_FLAGS="${BUILD_FLAGS} -mtune=generic -msse -msse2 -mfpmath=sse" | |||
| # -ffast-math | |||
| BUILD_FLAGS="${BUILD_FLAGS} -mtune=generic -msse -msse2 -mfpmath=sse -ffast-math" | |||
| BUILD_FLAGS="${BUILD_FLAGS} -fPIC -DPIC -DNDEBUG" | |||
| BUILD_FLAGS="${BUILD_FLAGS} -fdata-sections -ffunction-sections -fno-common -fvisibility=hidden" | |||
| if [ "${MACOS}" -eq 1 ]; then | |||
| if [ "${MACOS_OLD}" -eq 1 ]; then | |||
| BUILD_FLAGS="${BUILD_FLAGS} -mmacosx-version-min=10.5" | |||
| @@ -36,14 +48,18 @@ if [ "${MACOS}" -eq 1 ]; then | |||
| fi | |||
| elif [ "${WIN32}" -eq 1 ]; then | |||
| BUILD_FLAGS="${BUILD_FLAGS} -DPTW32_STATIC_LIB -mstackrealign" | |||
| # -DWIN32_LEAN_AND_MEAN | |||
| fi | |||
| # -DFLUIDSYNTH_NOT_A_DLL | |||
| TARGET_CFLAGS="${BUILD_FLAGS}" | |||
| TARGET_CXXFLAGS="${BUILD_FLAGS} -fvisibility-inlines-hidden" | |||
| ## link flags | |||
| LINK_FLAGS="-fdata-sections -ffunction-sections -L${PAWPAW_PREFIX}/lib" | |||
| LINK_FLAGS="-L${PAWPAW_PREFIX}/lib" | |||
| LINK_FLAGS="${LINK_FLAGS} -fdata-sections -ffunction-sections" | |||
| if [ "${MACOS}" -eq 1 ]; then | |||
| LINK_FLAGS="${LINK_FLAGS} -Wl,-dead_strip -Wl,-dead_strip_dylibs" | |||
| if [ "${MACOS_OLD}" -ne 1 ]; then | |||
| @@ -55,6 +71,7 @@ else | |||
| LINK_FLAGS="${LINK_FLAGS} -static" | |||
| fi | |||
| fi | |||
| TARGET_LDFLAGS="${LINK_FLAGS}" | |||
| ## toolchain | |||
| @@ -69,6 +86,7 @@ elif [ "${WIN32}" -eq 1 ]; then | |||
| TOOLCHAIN_PREFIX="i686-w64-mingw32" | |||
| TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-" | |||
| fi | |||
| TARGET_AR="${TOOLCHAIN_PREFIX_}ar" | |||
| TARGET_CC="${TOOLCHAIN_PREFIX_}gcc" | |||
| TARGET_CXX="${TOOLCHAIN_PREFIX_}g++" | |||
| @@ -42,6 +42,25 @@ function download() { | |||
| fi | |||
| } | |||
| function copy_download() { | |||
| local name1="${1}" | |||
| local name2="${2}" | |||
| local version="${3}" | |||
| local dlext="${4}" | |||
| if [ -z "${dlext}" ]; then | |||
| dlext="tar.gz" | |||
| fi | |||
| local dlfile1="${PAWPAW_DOWNLOADDIR}/${name1}-${version}.${dlext}" | |||
| local dlfolder2="${PAWPAW_BUILDDIR}/${name2}-${version}" | |||
| if [ ! -d "${dlfolder2}" ]; then | |||
| mkdir "${dlfolder2}" | |||
| tar -xf "${dlfile1}" -C "${dlfolder2}" --strip-components=1 | |||
| fi | |||
| } | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| function _prebuild() { | |||
| @@ -95,11 +114,15 @@ function build_autoconf() { | |||
| local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | |||
| if [ "${CROSS_COMPILING}" -eq 1 ]; then | |||
| extraconfrules="--host=${TOOLCHAIN_PREFIX} ${extraconfrules}" | |||
| fi | |||
| _prebuild "${pkgdir}" | |||
| if [ ! -f "${pkgdir}/.stamp_configured" ]; then | |||
| pushd "${pkgdir}" | |||
| ./configure --enable-static --disable-shared --prefix="${PAWPAW_PREFIX}" --host=${TOOLCHAIN_PREFIX} ${extraconfrules} | |||
| ./configure --enable-static --disable-shared --prefix="${PAWPAW_PREFIX}" ${extraconfrules} | |||
| touch .stamp_configured | |||
| popd | |||
| fi | |||
| @@ -161,13 +184,17 @@ function build_cmake() { | |||
| local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | |||
| if [ "${CROSS_COMPILING}" -eq 1 ]; then | |||
| extraconfrules="-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} ${extraconfrules}" | |||
| fi | |||
| _prebuild "${pkgdir}" | |||
| if [ ! -f "${pkgdir}/.stamp_configured" ]; then | |||
| pushd "${pkgdir}" | |||
| # FIXME put this as a patch file | |||
| sed -i -e 's/ -Wl,--no-undefined//' CMakeLists.txt | |||
| cmake -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX="${PAWPAW_PREFIX}" -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}" ${extraconfrules} | |||
| cmake -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX="${PAWPAW_PREFIX}" ${extraconfrules} | |||
| touch .stamp_configured | |||
| popd | |||
| fi | |||
| @@ -224,6 +251,10 @@ function build_meson() { | |||
| local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | |||
| if [ "${CROSS_COMPILING}" -eq 1 ]; then | |||
| extraconfrules="--cross-file ${PAWPAW_ROOT}/setup/meson/${PAWPAW_TARGET}.ini ${extraconfrules}" | |||
| fi | |||
| _prebuild "${pkgdir}" | |||
| if [ ! -f "${pkgdir}/.stamp_configured" ]; then | |||
| @@ -0,0 +1,19 @@ | |||
| [properties] | |||
| needs_exe_wrapper = true | |||
| [binaries] | |||
| name = 'macos-old' | |||
| c = 'i686-apple-darwin10-gcc' | |||
| cpp = 'i686-apple-darwin10-g++' | |||
| ar = 'i686-apple-darwin10-gcc-ar' | |||
| nm = 'i686-apple-darwin10-gcc-nm' | |||
| ld = 'i686-apple-darwin10-ld' | |||
| strip = 'i686-apple-darwin10-strip' | |||
| pkgconfig = 'pkg-config' | |||
| # exe_wrapper = 'darwine' | |||
| [host_machine] | |||
| system = 'macos' | |||
| cpu_family = 'x86_64' | |||
| cpu = 'x86_64' | |||
| endian = 'little' | |||
| @@ -0,0 +1,19 @@ | |||
| [properties] | |||
| sys_root = '/home/falktx/xlv2-builds/target' | |||
| pkg_config_libdir = '/home/falktx/xlv2-builds/target/lib/pkgconfig' | |||
| [binaries] | |||
| name = 'darwin' | |||
| c = 'i686-apple-darwin10-gcc' | |||
| cpp = 'i686-apple-darwin10-g++' | |||
| ar = 'i686-apple-darwin10-gcc-ar' | |||
| nm = 'i686-apple-darwin10-gcc-nm' | |||
| ld = 'i686-apple-darwin10-ld' | |||
| strip = 'i686-apple-darwin10-strip' | |||
| pkgconfig = '/home/falktx/xlv2-builds/target/bin/pkg-config' | |||
| [host_machine] | |||
| system = 'darwin' | |||
| cpu_family = 'x86_64' | |||
| cpu = 'x86_64' | |||
| endian = 'little' | |||
| @@ -0,0 +1,19 @@ | |||
| [properties] | |||
| needs_exe_wrapper = true | |||
| [binaries] | |||
| name = 'win64' | |||
| c = 'x86_64-w64-mingw32-gcc' | |||
| cpp = 'x86_64-w64-mingw32-g++' | |||
| ar = 'x86_64-w64-mingw32-gcc-ar' | |||
| nm = 'x86_64-w64-mingw32-gcc-nm' | |||
| ld = 'x86_64-w64-mingw32-ld' | |||
| strip = 'x86_64-w64-mingw32-strip' | |||
| pkgconfig = 'pkg-config' | |||
| exe_wrapper = 'wine64' | |||
| [host_machine] | |||
| system = 'windows' | |||
| cpu_family = 'x86_64' | |||
| cpu = 'x86_64' | |||
| endian = 'little' | |||
| @@ -9,12 +9,12 @@ LIBVORBIS_VERSION=1.3.6 | |||
| FLAC_VERSION=1.3.2 | |||
| LIBSNDFILE_VERSION=1.0.28 | |||
| LV2_VERSION=1.18.0 | |||
| FFTW_VERSION=3.3.8 | |||
| # GLIB_VERSION=2.44.1 | |||
| # GLIB_MVERSION=2.44 | |||
| # FLUIDSYNTH_VERSION=1.1.11 | |||
| # MXML_VERSION=2.12 | |||
| # FFTW3_VERSION=3.3.8 | |||
| # PYTHON_VERSION=3.7.4 | |||
| # PYLIBLO_VERSION=0.9.2 | |||
| # CXFREEZE_VERSION=6.1 | |||