@@ -5,8 +5,10 @@ set -e | |||||
# common | # common | ||||
sudo apt-get install -y build-essential curl cmake jq | sudo apt-get install -y build-essential curl cmake jq | ||||
# for cross-compilation | |||||
if [ "${TARGET}" = "macos-old" ]; then | |||||
if [ "${TARGET}" = "linux" ]; then | |||||
sudo apt-get install -y libglib2.0-dev | |||||
elif [ "${TARGET}" = "macos-old" ]; then | |||||
mkdir -p ${HOME}/PawPawBuilds/debs | mkdir -p ${HOME}/PawPawBuilds/debs | ||||
pushd ${HOME}/PawPawBuilds/debs | pushd ${HOME}/PawPawBuilds/debs | ||||
if [ ! -f 'apple-uni-sdk-10.5_20110407-0.flosoft1_amd64.deb' ]; then | if [ ! -f 'apple-uni-sdk-10.5_20110407-0.flosoft1_amd64.deb' ]; then | ||||
@@ -31,10 +31,19 @@ source setup/env.sh | |||||
source setup/functions.sh | source setup/functions.sh | ||||
source setup/versions.sh | source setup/versions.sh | ||||
mkdir -p ${PAWPAW_BUILDDIR} | |||||
mkdir -p ${PAWPAW_DOWNLOADDIR} | |||||
mkdir -p ${PAWPAW_PREFIX} | |||||
mkdir -p ${PAWPAW_TMPDIR} | |||||
mkdir -p "${PAWPAW_BUILDDIR}" | |||||
mkdir -p "${PAWPAW_DOWNLOADDIR}" | |||||
mkdir -p "${PAWPAW_PREFIX}" | |||||
mkdir -p "${PAWPAW_TMPDIR}" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# let's use native glib for linux builds | |||||
if [ "${LINUX}" -eq 1 ] && [ ! -e "${TARGET_PKG_CONFIG_PATH}/glib-2.0.pc" ]; then | |||||
mkdir -p ${TARGET_PKG_CONFIG_PATH} | |||||
ln -s $(pkg-config --variable=pcfiledir glib-2.0)/g{io,lib,module,object,thread}-2.0.pc ${TARGET_PKG_CONFIG_PATH}/ | |||||
ln -s $(pkg-config --variable=pcfiledir libpcre)/libpcre.pc ${TARGET_PKG_CONFIG_PATH}/ | |||||
fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# pkgconfig | # pkgconfig | ||||
@@ -43,16 +52,47 @@ download pkg-config "${PKG_CONFIG_VERSION}" "https://pkg-config.freedesktop.org/ | |||||
build_host_autoconf pkg-config "${PKG_CONFIG_VERSION}" "--enable-indirect-deps --with-internal-glib --with-pc-path=${TARGET_PKG_CONFIG_PATH}" | build_host_autoconf pkg-config "${PKG_CONFIG_VERSION}" "--enable-indirect-deps --with-internal-glib --with-pc-path=${TARGET_PKG_CONFIG_PATH}" | ||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# liblo | |||||
# file/magic (posix only) | |||||
download liblo "${LIBLO_VERSION}" "http://download.sourceforge.net/liblo" | |||||
build_autoconf liblo "${LIBLO_VERSION}" "--enable-threads --disable-examples --disable-tests --disable-tools" | |||||
# if [ "${WIN32}" -eq 0 ]; then | |||||
# download file "${FILE_VERSION}" "ftp://ftp.astron.com/pub/file" | |||||
# build_autoconf file "${FILE_VERSION}" | |||||
# fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# zlib | |||||
# glib | |||||
if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then | |||||
if [ "${WIN32}" -eq 1 ]; then | |||||
GLIB_EXTRAFLAGS="--with-threads=win32" | |||||
else | |||||
GLIB_EXTRAFLAGS="--with-threads=posix" | |||||
fi | |||||
download glib ${GLIB_VERSION} "http://caesar.ftp.acc.umu.se/pub/GNOME/sources/glib/${GLIB_MVERSION}" "${GLIB_TAR_EXT}" | |||||
if [ "${MACOS}" -eq 1 ]; then | |||||
export EXTRA_LDFLAGS="-lresolv" | |||||
patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g' | |||||
if [ "${MACOS_OLD}" -eq 1 ]; then | |||||
GLIB_EXTRAFLAGS+=" glib_cv_stack_grows=yes" | |||||
GLIB_EXTRAFLAGS+=" glib_cv_rtldglobal_broken=no" | |||||
GLIB_EXTRAFLAGS+=" glib_cv_uscore=no" | |||||
GLIB_EXTRAFLAGS+=" ac_cv_func_posix_getpwuid_r=yes" | |||||
GLIB_EXTRAFLAGS+=" ac_cv_func_posix_getgrgid_r=yes" | |||||
patch_file glib ${GLIB_VERSION} "configure.in" 's/G_ATOMIC_I486/G_ATOMIC_I486_NOT/' | |||||
fi | |||||
fi | |||||
build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}" | |||||
fi | |||||
download zlib "${ZLIB_VERSION}" "https://github.com/madler/zlib/archive" | |||||
build_conf zlib "${ZLIB_VERSION}" "--static --prefix=${PAWPAW_PREFIX}" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# liblo | |||||
download liblo "${LIBLO_VERSION}" "http://download.sourceforge.net/liblo" | |||||
build_autoconf liblo "${LIBLO_VERSION}" "--enable-threads --disable-examples --disable-tests --disable-tools" | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# libogg | # libogg | ||||
@@ -61,14 +101,6 @@ download libogg "${LIBOGG_VERSION}" "https://ftp.osuosl.org/pub/xiph/releases/og | |||||
patch_file libogg "${LIBOGG_VERSION}" "include/ogg/os_types.h" 's/__MACH__/__MACH_SKIP__/' | patch_file libogg "${LIBOGG_VERSION}" "include/ogg/os_types.h" 's/__MACH__/__MACH_SKIP__/' | ||||
build_autoconf libogg "${LIBOGG_VERSION}" | build_autoconf libogg "${LIBOGG_VERSION}" | ||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# file/magic (posix only) | |||||
# if [ "${WIN32}" -eq 0 ]; then | |||||
# download file "${FILE_VERSION}" "ftp://ftp.astron.com/pub/file" | |||||
# build_autoconf file "${FILE_VERSION}" | |||||
# fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# libvorbis | # libvorbis | ||||
@@ -87,25 +119,6 @@ fi | |||||
download flac "${FLAC_VERSION}" "https://ftp.osuosl.org/pub/xiph/releases/flac" "tar.xz" | download flac "${FLAC_VERSION}" "https://ftp.osuosl.org/pub/xiph/releases/flac" "tar.xz" | ||||
build_autoconf flac "${FLAC_VERSION}" "${FLAC_EXTRAFLAGS}" | build_autoconf flac "${FLAC_VERSION}" "${FLAC_EXTRAFLAGS}" | ||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# libsamplerate | |||||
download libsamplerate "${LIBSAMPLERATE_VERSION}" "http://www.mega-nerd.com/SRC" | |||||
build_autoconf libsamplerate "${LIBSAMPLERATE_VERSION}" "--disable-fftw --disable-sndfile" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# libsndfile | |||||
download libsndfile "${LIBSNDFILE_VERSION}" "http://www.mega-nerd.com/libsndfile/files" | |||||
patch_file libsndfile "${LIBSNDFILE_VERSION}" "configure" 's/ -Wvla//' | |||||
build_autoconf libsndfile "${LIBSNDFILE_VERSION}" "--disable-full-suite --disable-alsa --disable-sqlite" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# lv2 | |||||
download lv2 "${LV2_VERSION}" "http://lv2plug.in/spec" "tar.bz2" | |||||
build_waf lv2 "${LV2_VERSION}" "--lv2dir=${PAWPAW_PREFIX}/lib/lv2 --no-coverage --no-plugins" | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# fftw | # fftw | ||||
@@ -139,3 +152,68 @@ fi | |||||
build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}" | build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}" | ||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# libsamplerate | |||||
download libsamplerate "${LIBSAMPLERATE_VERSION}" "http://www.mega-nerd.com/SRC" | |||||
build_autoconf libsamplerate "${LIBSAMPLERATE_VERSION}" "--disable-fftw --disable-sndfile" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# libsndfile | |||||
download libsndfile "${LIBSNDFILE_VERSION}" "http://www.mega-nerd.com/libsndfile/files" | |||||
patch_file libsndfile "${LIBSNDFILE_VERSION}" "configure" 's/ -Wvla//' | |||||
build_autoconf libsndfile "${LIBSNDFILE_VERSION}" "--disable-full-suite --disable-alsa --disable-sqlite" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# lv2 | |||||
download lv2 "${LV2_VERSION}" "http://lv2plug.in/spec" "tar.bz2" | |||||
build_waf lv2 "${LV2_VERSION}" "--lv2dir=${PAWPAW_PREFIX}/lib/lv2 --no-coverage --no-plugins" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# fluidsynth | |||||
FLUIDSYNTH_EXTRAFLAGS="-Denable-floats=ON" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-alsa=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-aufile=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coreaudio=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coremidi=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-dbus=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-debug=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-fpe-check=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-framework=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ipv6=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-jack=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladcca=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladspa=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-lash=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-midishare=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-oss=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-portaudio=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-profiling=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-pulseaudio=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-readline=OFF" | |||||
FLUIDSYNTH_EXTRAFLAGS+=" -Denable-trap-on-fpe=OFF" | |||||
download fluidsynth ${FLUIDSYNTH_VERSION} "https://github.com/FluidSynth/fluidsynth/archive" | |||||
patch_file fluidsynth ${FLUIDSYNTH_VERSION} "CMakeLists.txt" 's/_init_lib_suffix "64"/_init_lib_suffix ""/' | |||||
build_cmake fluidsynth ${FLUIDSYNTH_VERSION} "${FLUIDSYNTH_EXTRAFLAGS}" | |||||
# touch src/fluidsynth | |||||
# sed -i -e "s|-lfluidsynth|-lfluidsynth -lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -logg -lpthread -lm -liconv|" ${PREFIX}/lib/pkgconfig/fluidsynth.pc | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# mxml | |||||
download mxml ${MXML_VERSION} "https://github.com/michaelrsweet/mxml/archive" | |||||
build_autoconf mxml ${MXML_VERSION} "--disable-shared --prefix=${PAWPAW_PREFIX}" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# zlib | |||||
if [ "${MACOS}" -eq 0 ]; then | |||||
download zlib ${ZLIB_VERSION} "https://github.com/madler/zlib/archive" | |||||
build_conf zlib ${ZLIB_VERSION} "--static --prefix=${PAWPAW_PREFIX}" | |||||
fi | |||||
# --------------------------------------------------------------------------------------------------------------------- |
@@ -5,6 +5,9 @@ set -e | |||||
cd $(dirname ${0}) | cd $(dirname ${0}) | ||||
PAWPAW_ROOT="${PWD}" | PAWPAW_ROOT="${PWD}" | ||||
JACK2_VERSION=git | |||||
QJACKCTL_VERSION=0.6.2 | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
target="${1}" | target="${1}" | ||||
@@ -18,10 +21,6 @@ fi | |||||
# TODO check that bootstrap.sh has been run | # TODO check that bootstrap.sh has been run | ||||
# TODO | |||||
# - portaudio (with asio support) for windows | |||||
# - readline for windows? | |||||
source setup/check_target.sh | source setup/check_target.sh | ||||
source setup/env.sh | source setup/env.sh | ||||
source setup/functions.sh | source setup/functions.sh | ||||
@@ -114,8 +113,22 @@ if [ "${WIN32}" -eq 1 ]; then | |||||
ASIO_DIR="${PAWPAW_BUILDDIR}/rtaudio-${RTAUDIO_VERSION}/include" | ASIO_DIR="${PAWPAW_BUILDDIR}/rtaudio-${RTAUDIO_VERSION}/include" | ||||
export EXTRA_CFLAGS="-I${ASIO_DIR}" | export EXTRA_CFLAGS="-I${ASIO_DIR}" | ||||
export EXTRA_CXXFLAGS="-I${ASIO_DIR}" | export EXTRA_CXXFLAGS="-I${ASIO_DIR}" | ||||
export EXTRA_MAKE_ARGS="-j 1" | |||||
download portaudio19 "${PORTAUDIO_VERSION}" "http://deb.debian.org/debian/pool/main/p/portaudio19" "orig.tar.gz" | download portaudio19 "${PORTAUDIO_VERSION}" "http://deb.debian.org/debian/pool/main/p/portaudio19" "orig.tar.gz" | ||||
build_autoconf portaudio19 "${PORTAUDIO_VERSION}" "--enable-cxx --with-asiodir="${ASIO_DIR}" --with-winapi=asio" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/audioclient.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/devicetopology.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/endpointvolume.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/ksguid.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/ksproxy.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/ksuuids.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/mmdeviceapi.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/propkeydef.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/propsys.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/rpcsal.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/sal.h" | |||||
remove_file portaudio19 "${PORTAUDIO_VERSION}" "src/hostapi/wasapi/mingw-include/structuredquery.h" | |||||
build_autoconf portaudio19 "${PORTAUDIO_VERSION}" "--enable-cxx --with-asiodir="${ASIO_DIR}" --with-winapi=asio,directx,wasapi,wdmks,wmme" | |||||
fi | fi | ||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
@@ -136,12 +149,10 @@ fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# and finally jack2 | # and finally jack2 | ||||
if [ ! -d jack2 ]; then | |||||
git clone --recursive git@github.com:jackaudio/jack2.git | |||||
fi | |||||
jack2_args="--prefix="${PAWPAW_PREFIX}/jack2"" | |||||
jack2_repo="git@github.com:jackaudio/jack2.git" | |||||
jack2_prefix="${PAWPAW_PREFIX}/jack2" | |||||
jack2_args="--prefix=${jack2_prefix}" | |||||
# if [ "${MACOS_OLD}" -eq 1 ] || [ "${WIN64}" -eq 1 ]; then | # if [ "${MACOS_OLD}" -eq 1 ] || [ "${WIN64}" -eq 1 ]; then | ||||
# jack2_args="${jack2_args} --mixed" | # jack2_args="${jack2_args} --mixed" | ||||
# fi | # fi | ||||
@@ -160,9 +171,49 @@ if [ "${MACOS_OLD}" -eq 1 ]; then | |||||
patch_file jack2 "git" "wscript" '/-Wno-deprecated-register/d' | patch_file jack2 "git" "wscript" '/-Wno-deprecated-register/d' | ||||
fi | fi | ||||
ln -sf "$(pwd)/jack2" "${PAWPAW_BUILDDIR}/jack2-git" | |||||
rm -f "${PAWPAW_BUILDDIR}/jack2-git/.stamp_built" | |||||
build_waf jack2 "git" "${jack2_args}" | |||||
if [ "${JACK2_VERSION}" = "git" ]; then | |||||
if [ ! -d jack2 ]; then | |||||
git clone --recursive "${jack2_repo}" | |||||
fi | |||||
if [ ! -e "${PAWPAW_BUILDDIR}/jack2-git" ]; then | |||||
ln -sf "$(pwd)/jack2" "${PAWPAW_BUILDDIR}/jack2-git" | |||||
fi | |||||
rm -f "${PAWPAW_BUILDDIR}/jack2-git/.stamp_built" | |||||
else | |||||
download jack2 "${JACK2_VERSION}" "${jack2_repo}" "" "git" | |||||
fi | |||||
build_waf jack2 "${JACK2_VERSION}" "${jack2_args}" | |||||
# patch pkg-config file for static builds in regular prefix | |||||
if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" ]; then | |||||
if [ "${WIN64}" -eq 1 ]; then | |||||
s="64" | |||||
else | |||||
s="" | |||||
fi | |||||
cp -v "${PAWPAW_PREFIX}/jack2/lib/pkgconfig/jack.pc" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" | |||||
if [ "${WIN32}" -eq 1 ]; then | |||||
# FIXME rule that works for server lib too | |||||
sed -i -e "s/lib -ljack${s}/lib -Wl,-Bdynamic -ljack${s} -Wl,-Bstatic/" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" | |||||
fi | |||||
fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# if qt is available, build qjackctl | |||||
if [ -f "${PAWPAW_PREFIX}/bin/moc" ]; then | |||||
download qjackctl "${QJACKCTL_VERSION}" https://download.sourceforge.net/qjackctl | |||||
if [ "${WIN64}" -eq 1 ]; then | |||||
patch_file qjackctl "${QJACKCTL_VERSION}" "configure" 's/-ljack /-Wl,-Bdynamic -ljack64 -Wl,-Bstatic /' | |||||
elif [ "${WIN32}" -eq 1 ]; then | |||||
patch_file qjackctl "${QJACKCTL_VERSION}" "configure" 's/-ljack /-Wl,-Bdynamic -ljack -Wl,-Bstatic /' | |||||
fi | |||||
build_autoconf qjackctl "${QJACKCTL_VERSION}" "--enable-jack-version" | |||||
if [ "${WIN32}" -eq 1 ]; then | |||||
copy_file qjackctl "${QJACKCTL_VERSION}" "src/release/qjackctl.exe" "${PAWPAW_PREFIX}/jack2/bin/qjackctl.exe" | |||||
fi | |||||
fi | |||||
if [ "${MACOS}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 0 ]; then | if [ "${MACOS}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 0 ]; then | ||||
@@ -0,0 +1,257 @@ | |||||
#!/bin/bash | |||||
set -e | |||||
cd $(dirname ${0}) | |||||
PAWPAW_ROOT="${PWD}" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
target="${1}" | |||||
if [ -z "${target}" ]; then | |||||
echo "usage: ${0} <target>" | |||||
exit 1 | |||||
fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# TODO check that bootstrap.sh has been run | |||||
source setup/check_target.sh | |||||
source setup/env.sh | |||||
source setup/functions.sh | |||||
source setup/versions.sh | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
qtsuffix="-opensource-src" | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
function download_qt() { | |||||
local name="${1}" | |||||
local dlfile="${PAWPAW_DOWNLOADDIR}/${name}${qtsuffix}-${QT5_VERSION}.tar.xz" | |||||
local dlfolder="${PAWPAW_BUILDDIR}/${name}${qtsuffix}-${QT5_VERSION}" | |||||
if [ ! -f "${dlfile}" ]; then | |||||
dlurl="https://download.qt.io/archive/qt/${QT5_MVERSION}/${QT5_VERSION}/submodules/${name}${qtsuffix}-${QT5_VERSION}.tar.xz" | |||||
curl -L "${dlurl}" -o "${dlfile}" | |||||
fi | |||||
if [ ! -d "${dlfolder}" ]; then | |||||
mkdir "${dlfolder}" | |||||
tar -xf "${dlfile}" -C "${dlfolder}" --strip-components=1 | |||||
fi | |||||
# if [ ! -d "${dlfolder}" ]; then | |||||
# unzip "${dlfile}" -d "${PAWPAW_BUILDDIR}" | |||||
# chmod +x "${dlfolder}/configure" | |||||
# dos2unix "${dlfolder}/configure" | |||||
# fi | |||||
} | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
function build_qt_conf() { | |||||
local name="${1}" | |||||
local extraconfrules="${2}" | |||||
local pkgdir="${PAWPAW_BUILDDIR}/${name}${qtsuffix}-${QT5_VERSION}" | |||||
unset AR | |||||
unset CC | |||||
unset CXX | |||||
unset LD | |||||
unset STRIP | |||||
unset CFLAGS | |||||
unset CPPFLAGS | |||||
unset CXXFLAGS | |||||
unset LDFLAGS | |||||
export PKG_CONFIG="${TARGET_PKG_CONFIG}" | |||||
export PKG_CONFIG_LIBDIR="${TARGET_PKG_CONFIG_PATH}" | |||||
export PKG_CONFIG_PATH="${TARGET_PKG_CONFIG_PATH}" | |||||
export PKG_CONFIG_SYSROOT_DIR="${TARGET_PKG_CONFIG_PATH}" | |||||
if [ -d "${PAWPAW_ROOT}/patches/${name}" ]; then | |||||
for p in $(ls "${PAWPAW_ROOT}/patches/${name}/" | grep "\.patch" | sort); do | |||||
if [ ! -f "${pkgdir}/.stamp_applied_${p}" ]; then | |||||
patch -p1 -d "${pkgdir}" -i "${PAWPAW_ROOT}/patches/${name}/${p}" | |||||
touch "${pkgdir}/.stamp_applied_${p}" | |||||
fi | |||||
done | |||||
fi | |||||
if [ ! -f "${pkgdir}/.stamp_configured" ]; then | |||||
pushd "${pkgdir}" | |||||
./configure ${extraconfrules} | |||||
touch .stamp_configured | |||||
popd | |||||
fi | |||||
if [ ! -f "${pkgdir}/.stamp_built" ]; then | |||||
pushd "${pkgdir}" | |||||
make ${MAKE_ARGS} | |||||
touch .stamp_built | |||||
popd | |||||
fi | |||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | |||||
pushd "${pkgdir}" | |||||
make ${MAKE_ARGS} -j 1 install | |||||
touch .stamp_installed | |||||
popd | |||||
fi | |||||
unset PKG_CONFIG | |||||
unset PKG_CONFIG_LIBDIR | |||||
unset PKG_CONFIG_PATH | |||||
unset PKG_CONFIG_SYSROOT_DIR | |||||
} | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
# base | |||||
qtbase_conf_args="-opensource -confirm-license" | |||||
qtbase_conf_args+=" -c++std c++11" | |||||
# qtbase_conf_args+=" -optimized-qmake" | |||||
qtbase_conf_args+=" -optimize-size" | |||||
qtbase_conf_args+=" -release -strip" | |||||
# qtbase_conf_args+=" -static" | |||||
qtbase_conf_args+=" -shared" | |||||
qtbase_conf_args+=" -silent" | |||||
# qtbase_conf_args+=" -verbose" | |||||
# build type | |||||
qtbase_conf_args+=" -make libs" | |||||
qtbase_conf_args+=" -make tools" | |||||
qtbase_conf_args+=" -gui" | |||||
qtbase_conf_args+=" -widgets" | |||||
# paths | |||||
qtbase_conf_args+=" -prefix ${PAWPAW_PREFIX}" | |||||
qtbase_conf_args+=" -headerdir ${PAWPAW_PREFIX}/include/qt5" | |||||
qtbase_conf_args+=" -libexecdir ${PAWPAW_PREFIX}/libexec" | |||||
qtbase_conf_args+=" -plugindir ${PAWPAW_PREFIX}/lib/qt5/plugins" | |||||
# enable optimizations (sse2 only) | |||||
qtbase_conf_args+=" -sse2" | |||||
qtbase_conf_args+=" -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -no-avx512" | |||||
# enable some basic stuff | |||||
qtbase_conf_args+=" -opengl desktop" | |||||
qtbase_conf_args+=" -qt-doubleconversion" | |||||
qtbase_conf_args+=" -qt-pcre" | |||||
qtbase_conf_args+=" -qt-sqlite" | |||||
# disable examples and tests | |||||
qtbase_conf_args+=" -nomake examples" | |||||
qtbase_conf_args+=" -nomake tests" | |||||
qtbase_conf_args+=" -no-compile-examples" | |||||
# disable a couple of things | |||||
qtbase_conf_args+=" -no-cups" | |||||
qtbase_conf_args+=" -no-dbus" | |||||
qtbase_conf_args+=" -no-directfb" | |||||
qtbase_conf_args+=" -no-eglfs" | |||||
qtbase_conf_args+=" -no-evdev" | |||||
qtbase_conf_args+=" -no-eventfd" | |||||
qtbase_conf_args+=" -no-journald" | |||||
qtbase_conf_args+=" -no-glib" | |||||
qtbase_conf_args+=" -no-gtk" | |||||
qtbase_conf_args+=" -no-icu" | |||||
qtbase_conf_args+=" -no-inotify" | |||||
qtbase_conf_args+=" -no-libinput" | |||||
qtbase_conf_args+=" -no-libproxy" | |||||
qtbase_conf_args+=" -no-mtdev" | |||||
qtbase_conf_args+=" -no-openssl" | |||||
qtbase_conf_args+=" -no-pch" | |||||
qtbase_conf_args+=" -no-sctp" | |||||
qtbase_conf_args+=" -no-securetransport" | |||||
qtbase_conf_args+=" -no-syslog" | |||||
qtbase_conf_args+=" -no-tslib" | |||||
qtbase_conf_args+=" -no-xinput2" | |||||
qtbase_conf_args+=" -no-xkbcommon-evdev" | |||||
qtbase_conf_args+=" -no-xkbcommon-x11" | |||||
# font stuff | |||||
qtbase_conf_args+=" -qt-freetype" | |||||
qtbase_conf_args+=" -no-fontconfig" | |||||
qtbase_conf_args+=" -no-harfbuzz" | |||||
# supported image formats | |||||
qtbase_conf_args+=" -qt-libjpeg" | |||||
qtbase_conf_args+=" -qt-libpng" | |||||
qtbase_conf_args+=" -no-gif" | |||||
qtbase_conf_args+=" -no-ico" | |||||
# use pkg-config | |||||
qtbase_conf_args+=" -pkg-config" | |||||
qtbase_conf_args+=" -force-pkg-config" | |||||
# platform specific | |||||
if [ "${CROSS_COMPILING}" -eq 1 ]; then | |||||
if [ "${LINUX}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -xplatform linux-g++" | |||||
elif [ "${MACOS}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -xplatform macx-clang" | |||||
elif [ "${WIN32}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -xplatform win32-g++" | |||||
fi | |||||
qtbase_conf_args+=" -device-option CROSS_COMPILE=${TOOLCHAIN_PREFIX_}" | |||||
else | |||||
if [ "${LINUX}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -platform linux-g++" | |||||
elif [ "${MACOS}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -platform macx-clang" | |||||
elif [ "${WIN32}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -platform win32-g++" | |||||
fi | |||||
fi | |||||
# platform specific | |||||
if [ "${LINUX}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -qpa xcb" | |||||
qtbase_conf_args+=" -qt-xcb" | |||||
qtbase_conf_args+=" -xcb-xlib" | |||||
elif [ "${MACOS}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -qpa cocoa" | |||||
elif [ "${WIN32}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -qpa windows" | |||||
fi | |||||
# zlib | |||||
if [ "${MACOS}" -eq 1 ]; then | |||||
qtbase_conf_args+=" -system-zlib" | |||||
else | |||||
qtbase_conf_args+=" -qt-zlib" | |||||
fi | |||||
download_qt qtbase | |||||
# patch_file qtbase${qtsuffix} ${QT5_VERSION} "configure" 's/ --sdk $sdk / /' | |||||
# patch_file qtbase${qtsuffix} ${QT5_VERSION} "mkspecs/features/mac/sdk.prf" 's/ --sdk $$sdk / /' | |||||
patch_file qtbase${qtsuffix} ${QT5_VERSION} "mkspecs/macx-clang/qmake.conf" 's/10.10/10.8/' | |||||
patch_file qtbase${qtsuffix} ${QT5_VERSION} "mkspecs/win32-g++/qmake.conf" 's/= -shared/= -static -shared/' | |||||
patch_file qtbase${qtsuffix} ${QT5_VERSION} "src/plugins/platforms/direct2d/direct2d.pro" 's/-lVersion/-lversion/' | |||||
build_qt_conf qtbase "${qtbase_conf_args}" | |||||
if [ "${MACOS}" -eq 1 ] && [ ! -e "ln -s ${PAWPAW_PREFIX}/include/qt5/QtCore" ]; then | |||||
ln -sfv ${PAWPAW_PREFIX}/lib/QtCore.framework/Headers ${PAWPAW_PREFIX}/include/qt5/QtCore | |||||
ln -sfv ${PAWPAW_PREFIX}/lib/QtGui.framework/Headers ${PAWPAW_PREFIX}/include/qt5/QtGui | |||||
ln -sfv ${PAWPAW_PREFIX}/lib/QtWidgets.framework/Headers ${PAWPAW_PREFIX}/include/qt5/QtWidgets | |||||
fi | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
download_qt qtsvg | |||||
build_qmake qtsvg${qtsuffix} ${QT5_VERSION} | |||||
# --------------------------------------------------------------------------------------------------------------------- | |||||
if [ "${CROSS_COMPILING}" -eq 0 ]; then | |||||
download_qt qttools | |||||
build_qmake qttools${qtsuffix} ${QT5_VERSION} | |||||
fi | |||||
# --------------------------------------------------------------------------------------------------------------------- |
@@ -0,0 +1,60 @@ | |||||
--- fluidsynth-static-1.1.11.orig/src/CMakeLists.txt | |||||
+++ fluidsynth-static-1.1.11/src/CMakeLists.txt | |||||
@@ -175,11 +175,6 @@ set ( libfluidsynth_SOURCES | |||||
midi/fluid_midi_router.h | |||||
midi/fluid_seqbind.c | |||||
midi/fluid_seq.c | |||||
- drivers/fluid_adriver.c | |||||
- drivers/fluid_adriver.h | |||||
- drivers/fluid_mdriver.c | |||||
- drivers/fluid_mdriver.h | |||||
- drivers/fluid_aufile.c | |||||
bindings/fluid_cmd.c | |||||
bindings/fluid_cmd.h | |||||
bindings/fluid_filerenderer.c | |||||
@@ -335,32 +330,14 @@ target_link_libraries ( libfluidsynth | |||||
${LIBFLUID_LIBS} | |||||
) | |||||
-# ************ CLI program ************ | |||||
- | |||||
-set ( fluidsynth_SOURCES fluidsynth.c ) | |||||
- | |||||
-add_executable ( fluidsynth | |||||
- ${fluidsynth_SOURCES} | |||||
-) | |||||
- | |||||
-if ( FLUID_CPPFLAGS ) | |||||
- set_target_properties ( fluidsynth | |||||
- PROPERTIES COMPILE_FLAGS ${FLUID_CPPFLAGS} ) | |||||
-endif ( FLUID_CPPFLAGS ) | |||||
- | |||||
-target_link_libraries ( fluidsynth | |||||
- libfluidsynth | |||||
- ${FLUID_LIBS} | |||||
-) | |||||
- | |||||
if ( MACOSX_FRAMEWORK ) | |||||
- install ( TARGETS fluidsynth libfluidsynth | |||||
+ install ( TARGETS libfluidsynth | |||||
RUNTIME DESTINATION ${BIN_INSTALL_DIR} | |||||
FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} | |||||
ARCHIVE DESTINATION ${FRAMEWORK_INSTALL_DIR} | |||||
) | |||||
else ( MACOSX_FRAMEWORK ) | |||||
- install ( TARGETS fluidsynth libfluidsynth | |||||
+ install ( TARGETS libfluidsynth | |||||
RUNTIME DESTINATION ${BIN_INSTALL_DIR} | |||||
LIBRARY DESTINATION ${LIB_INSTALL_DIR} | |||||
ARCHIVE DESTINATION ${LIB_INSTALL_DIR} | |||||
--- fluidsynth-static-1.1.11.orig/src/utils/fluid_settings.c | |||||
+++ fluidsynth-static-1.1.11/src/utils/fluid_settings.c | |||||
@@ -297,8 +297,6 @@ fluid_settings_init(fluid_settings_t* se | |||||
fluid_shell_settings(settings); | |||||
fluid_player_settings(settings); | |||||
fluid_file_renderer_settings(settings); | |||||
- fluid_audio_driver_settings(settings); | |||||
- fluid_midi_driver_settings(settings); | |||||
} | |||||
static int |
@@ -0,0 +1,40 @@ | |||||
diff --git a/Makefile.in b/Makefile.in | |||||
index 3402627..27210f1 100644 | |||||
--- a/Makefile.in | |||||
+++ b/Makefile.in | |||||
@@ -401,7 +401,7 @@ EXTRA_DIST = ChangeLog.pre-2-20 ChangeLog.pre-2-18 ChangeLog.pre-2-16 \ | |||||
gio-2.0-uninstalled.pc.in gio-unix-2.0-uninstalled.pc.in | |||||
TEST_PROGS = | |||||
AUTOMAKE_OPTIONS = 1.7 | |||||
-SUBDIRS = . m4macros glib gmodule gthread gobject gio tests po docs | |||||
+SUBDIRS = . m4macros glib gmodule gthread gobject gio tests po | |||||
DIST_SUBDIRS = $(SUBDIRS) build | |||||
bin_SCRIPTS = glib-gettextize | |||||
AM_CPPFLAGS = \ | |||||
diff --git a/configure.in b/configure.in | |||||
index b9c3342..e421aa0 100644 | |||||
--- a/configure.in | |||||
+++ b/configure.in | |||||
@@ -465,13 +465,6 @@ ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`" | |||||
AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS']) | |||||
GLIB_GNU_GETTEXT | |||||
-if test "$gt_cv_have_gettext" != "yes" ; then | |||||
- AC_MSG_ERROR([ | |||||
-*** You must have either have gettext support in your C library, or use the | |||||
-*** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html | |||||
-]) | |||||
-fi | |||||
- | |||||
LIBS="$INTLLIBS $LIBS" | |||||
GETTEXT_PACKAGE=glib20 | |||||
@@ -2682,8 +2675,6 @@ dnl ************************** | |||||
dnl *** Checks for gtk-doc *** | |||||
dnl ************************** | |||||
-GTK_DOC_CHECK([1.11]) | |||||
- | |||||
AC_ARG_ENABLE(man, | |||||
[AC_HELP_STRING([--enable-man], | |||||
[regenerate man pages from Docbook [default=no]])],enable_man=yes, |
@@ -0,0 +1,11 @@ | |||||
diff --git a/bindings/cpp/source/portaudiocpp/Device.cxx b/bindings/cpp/source/portaudiocpp/Device.cxx | |||||
index 7b21b03..04e75b1 100644 | |||||
--- a/bindings/cpp/source/portaudiocpp/Device.cxx | |||||
+++ b/bindings/cpp/source/portaudiocpp/Device.cxx | |||||
@@ -166,3 +166,6 @@ namespace portaudio | |||||
} // namespace portaudio | |||||
+#ifdef _WIN32 | |||||
+#include "AsioDeviceAdapter.cxx" | |||||
+#endif |
@@ -0,0 +1,67 @@ | |||||
diff -Naur configure.in configure.in | |||||
--- a/configure.in 2016-10-30 02:23:04.000000000 +0100 | |||||
+++ b/configure.in 2017-05-29 22:20:15.000000000 +0200 | |||||
@@ -346,7 +346,7 @@ | |||||
add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o | |||||
LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" | |||||
DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" | |||||
- CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1" | |||||
+ CFLAGS="$CFLAGS -UPA_USE_WASAPI -DPA_USE_WASAPI=1" | |||||
fi | |||||
;; | |||||
diff -Naur src/hostapi/dsound/pa_win_ds.c src/hostapi/dsound/pa_win_ds.c | |||||
--- a/src/hostapi/dsound/pa_win_ds.c 2016-10-30 02:23:04.000000000 +0100 | |||||
+++ b/src/hostapi/dsound/pa_win_ds.c 2017-05-29 22:20:15.000000000 +0200 | |||||
@@ -904,7 +904,10 @@ | |||||
case DSSPEAKER_STEREO: count = 2; break; | |||||
case DSSPEAKER_SURROUND: count = 4; break; | |||||
case DSSPEAKER_5POINT1: count = 6; break; | |||||
- case DSSPEAKER_7POINT1: count = 8; break; | |||||
+#ifndef DSSPEAKER_7POINT1 | |||||
+#define DSSPEAKER_7POINT1 0x00000007 | |||||
+#endif | |||||
+ case DSSPEAKER_7POINT1: count = 8; break; | |||||
#ifndef DSSPEAKER_7POINT1_SURROUND | |||||
#define DSSPEAKER_7POINT1_SURROUND 0x00000008 | |||||
#endif | |||||
@@ -2136,7 +2139,7 @@ | |||||
} | |||||
else | |||||
{ | |||||
- CalculateBufferSettings( &stream->hostBufferSizeFrames, &pollingPeriodFrames, | |||||
+ CalculateBufferSettings( (unsigned long*)&stream->hostBufferSizeFrames, &pollingPeriodFrames, | |||||
/* isFullDuplex = */ (inputParameters && outputParameters), | |||||
suggestedInputLatencyFrames, | |||||
suggestedOutputLatencyFrames, | |||||
diff -Naur src/hostapi/wasapi/pa_win_wasapi.c src/hostapi/wasapi/pa_win_wasapi.c | |||||
--- a/src/hostapi/wasapi/pa_win_wasapi.c 2016-10-30 02:23:04.000000000 +0100 | |||||
+++ b/src/hostapi/wasapi/pa_win_wasapi.c 2017-05-29 22:20:15.000000000 +0200 | |||||
@@ -54,16 +54,22 @@ | |||||
#endif | |||||
// WASAPI | |||||
+// using adjustments for MinGW build from @mgeier/MXE | |||||
+// https://github.com/mxe/mxe/commit/f4bbc45682f021948bdaefd9fd476e2a04c4740f | |||||
#include <mmreg.h> // must be before other Wasapi headers | |||||
-#if defined(_MSC_VER) && (_MSC_VER >= 1400) | |||||
- #include <Avrt.h> | |||||
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) || defined(__MINGW64_VERSION_MAJOR) | |||||
+ #include <avrt.h> | |||||
#define COBJMACROS | |||||
- #include <Audioclient.h> | |||||
+ #include <audioclient.h> | |||||
#include <endpointvolume.h> | |||||
#define INITGUID // Avoid additional linkage of static libs, excessive code will be optimized out by the compiler | |||||
#include <mmdeviceapi.h> | |||||
- #include <functiondiscoverykeys.h> | |||||
- #include <devicetopology.h> // Used to get IKsJackDescription interface | |||||
+#ifndef _MSC_VER | |||||
+ #include <functiondiscoverykeys_devpkey.h> | |||||
+#endif | |||||
+ #include <functiondiscoverykeys.h> | |||||
+ #include <mmdeviceapi.h> | |||||
+ #include <devicetopology.h> // Used to get IKsJackDescription interface | |||||
#undef INITGUID | |||||
#endif | |||||
#ifndef __MWERKS__ |
@@ -0,0 +1,14 @@ | |||||
diff --git a/src/qjackctlMainForm.cpp b/src/qjackctlMainForm.cpp | |||||
index ddc448b..3f4814d 100644 | |||||
--- a/src/qjackctlMainForm.cpp | |||||
+++ b/src/qjackctlMainForm.cpp | |||||
@@ -2645,9 +2645,6 @@ void qjackctlMainForm::exitNotifyEvent (void) | |||||
jackFinished(); | |||||
break; | |||||
case QProcess::Crashed: | |||||
- #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) | |||||
- if (!m_bJackStopped) | |||||
- #endif | |||||
appendMessagesColor(tr("JACK has crashed."), "#cc3366"); | |||||
break; | |||||
case QProcess::Timedout: |
@@ -0,0 +1,751 @@ | |||||
diff --git a/mkspecs/common/clang-mac.conf b/mkspecs/common/clang-mac.conf | |||||
index cbae2e6..ed6132c 100644 | |||||
--- a/mkspecs/common/clang-mac.conf | |||||
+++ b/mkspecs/common/clang-mac.conf | |||||
@@ -10,4 +10,4 @@ QMAKE_CXXFLAGS += -stdlib=libc++ | |||||
QMAKE_LFLAGS += -stdlib=libc++ | |||||
QMAKE_AR_LTCG = libtool -static -o | |||||
-QMAKE_CFLAGS_APPLICATION_EXTENSION = -fapplication-extension | |||||
+QMAKE_CFLAGS_APPLICATION_EXTENSION = | |||||
diff --git a/src/corelib/global/qoperatingsystemversion_darwin.mm b/src/corelib/global/qoperatingsystemversion_darwin.mm | |||||
index d8b927f..9a690ad 100644 | |||||
--- a/src/corelib/global/qoperatingsystemversion_darwin.mm | |||||
+++ b/src/corelib/global/qoperatingsystemversion_darwin.mm | |||||
@@ -40,16 +40,37 @@ | |||||
#include "qoperatingsystemversion_p.h" | |||||
#import <Foundation/Foundation.h> | |||||
+typedef qint16 (*GestaltFunction)(quint32 selector, qint32 *response); | |||||
+ | |||||
QT_BEGIN_NAMESPACE | |||||
QOperatingSystemVersion QOperatingSystemVersion::current() | |||||
{ | |||||
- NSOperatingSystemVersion osv = NSProcessInfo.processInfo.operatingSystemVersion; | |||||
QOperatingSystemVersion v; | |||||
v.m_os = currentType(); | |||||
- v.m_major = osv.majorVersion; | |||||
- v.m_minor = osv.minorVersion; | |||||
- v.m_micro = osv.patchVersion; | |||||
+ v.m_major = -1; | |||||
+ v.m_minor = -1; | |||||
+ v.m_micro = -1; | |||||
+ static GestaltFunction pGestalt = 0; | |||||
+ if (!pGestalt) { | |||||
+ CFBundleRef b = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.CoreServices")); | |||||
+ pGestalt = reinterpret_cast<GestaltFunction>(CFBundleGetFunctionPointerForName(b, | |||||
+ CFSTR("Gestalt"))); | |||||
+ } | |||||
+ // Use temporary variables so we can return 0.0.0 (unknown version) | |||||
+ // in case of an error partway through determining the OS version | |||||
+ qint32 major = 0, minor = 0, patch = 0; | |||||
+ if (!pGestalt) | |||||
+ return v; | |||||
+ if (pGestalt('sys1', &major) != 0) | |||||
+ return v; | |||||
+ if (pGestalt('sys2', &minor) != 0) | |||||
+ return v; | |||||
+ if (pGestalt('sys3', &patch) != 0) | |||||
+ return v; | |||||
+ v.m_major = major; | |||||
+ v.m_minor = minor; | |||||
+ v.m_micro = patch; | |||||
return v; | |||||
} | |||||
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp | |||||
index 7fed54f..bbf5e6d 100644 | |||||
--- a/src/corelib/io/qfilesystemengine_unix.cpp | |||||
+++ b/src/corelib/io/qfilesystemengine_unix.cpp | |||||
@@ -126,8 +126,11 @@ static bool isPackage(const QFileSystemMetaData &data, const QFileSystemEntry &e | |||||
#ifdef Q_OS_MACOS | |||||
// Find if an application other than Finder claims to know how to handle the package | |||||
- QCFType<CFURLRef> application = LSCopyDefaultApplicationURLForURL(url, | |||||
- kLSRolesEditor | kLSRolesViewer, nullptr); | |||||
+ QCFType<CFURLRef> application; | |||||
+ LSGetApplicationForURL(url, | |||||
+ kLSRolesEditor|kLSRolesViewer, | |||||
+ NULL, | |||||
+ &application); | |||||
if (application) { | |||||
QCFType<CFBundleRef> bundle = CFBundleCreate(kCFAllocatorDefault, application); | |||||
diff --git a/src/corelib/kernel/qcore_foundation.mm b/src/corelib/kernel/qcore_foundation.mm | |||||
index 56eabc4..c48a797 100644 | |||||
--- a/src/corelib/kernel/qcore_foundation.mm | |||||
+++ b/src/corelib/kernel/qcore_foundation.mm | |||||
@@ -46,7 +46,7 @@ | |||||
#include <QtCore/qbytearray.h> | |||||
#include <QtCore/qrect.h> | |||||
-#if QT_CONFIG(timezone) && !defined(QT_NO_SYSTEMLOCALE) | |||||
+#if 0 | |||||
#include <QtCore/qtimezone.h> | |||||
#include <QtCore/private/qtimezoneprivate_p.h> | |||||
#include <QtCore/private/qcore_mac_p.h> | |||||
@@ -433,7 +433,7 @@ NSDate *QDateTime::toNSDate() const | |||||
// ---------------------------------------------------------------------------- | |||||
-#if QT_CONFIG(timezone) && !defined(QT_NO_SYSTEMLOCALE) | |||||
+#if 0 | |||||
/*! | |||||
\since 5.9 | |||||
diff --git a/src/corelib/tools/qtimezone.h b/src/corelib/tools/qtimezone.h | |||||
index bd87139..d154cbf 100644 | |||||
--- a/src/corelib/tools/qtimezone.h | |||||
+++ b/src/corelib/tools/qtimezone.h | |||||
@@ -47,7 +47,7 @@ | |||||
QT_REQUIRE_CONFIG(timezone); | |||||
-#if (defined(Q_OS_DARWIN) || defined(Q_QDOC)) && !defined(QT_NO_SYSTEMLOCALE) | |||||
+#if 0 | |||||
Q_FORWARD_DECLARE_CF_TYPE(CFTimeZone); | |||||
Q_FORWARD_DECLARE_OBJC_CLASS(NSTimeZone); | |||||
#endif | |||||
@@ -147,7 +147,7 @@ public: | |||||
static QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId, | |||||
QLocale::Country country); | |||||
-#if (defined(Q_OS_DARWIN) || defined(Q_QDOC)) && !defined(QT_NO_SYSTEMLOCALE) | |||||
+#if 0 | |||||
static QTimeZone fromCFTimeZone(CFTimeZoneRef timeZone); | |||||
CFTimeZoneRef toCFTimeZone() const Q_DECL_CF_RETURNS_RETAINED; | |||||
static QTimeZone fromNSTimeZone(const NSTimeZone *timeZone); | |||||
diff --git a/src/gui/painting/qcoregraphics.mm b/src/gui/painting/qcoregraphics.mm | |||||
index c4fb8af..91875cd 100644 | |||||
--- a/src/gui/painting/qcoregraphics.mm | |||||
+++ b/src/gui/painting/qcoregraphics.mm | |||||
@@ -47,6 +47,21 @@ | |||||
#include <QtCore/qcoreapplication.h> | |||||
#include <QtCore/qoperatingsystemversion.h> | |||||
+@interface NSGraphicsContext (QtAdditions) | |||||
+ | |||||
+ | |||||
+@end | |||||
+ | |||||
+@implementation NSGraphicsContext (QtAdditions) | |||||
+ | |||||
+{ | |||||
+ return [self graphicsContextWithGraphicsPort:graphicsPort flipped:initialFlippedState]; | |||||
+} | |||||
+ | |||||
+@end | |||||
+ | |||||
QT_BEGIN_NAMESPACE | |||||
// ---------------------- Images ---------------------- | |||||
@@ -147,7 +162,7 @@ QPixmap qt_mac_toQPixmap(const NSImage *image, const QSizeF &size) | |||||
QMacCGContext ctx(&pixmap); | |||||
if (!ctx) | |||||
return QPixmap(); | |||||
- NSGraphicsContext *gc = [NSGraphicsContext graphicsContextWithCGContext:ctx flipped:YES]; | |||||
+ NSGraphicsContext *gc = [NSGraphicsContext qt_graphicsContextWithCGContext:ctx flipped:YES]; | |||||
if (!gc) | |||||
return QPixmap(); | |||||
[NSGraphicsContext saveGraphicsState]; | |||||
diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | |||||
index f8fe160..3c350b3 100644 | |||||
--- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | |||||
+++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | |||||
@@ -456,7 +456,6 @@ QFontEngine *QCoreTextFontDatabaseEngineFactory<QFontEngineFT>::fontEngine(const | |||||
return QFontEngineFT::create(*fontData, fontDef.pixelSize, | |||||
static_cast<QFont::HintingPreference>(fontDef.hintingPreference)); | |||||
} else if (NSURL *url = descriptorAttribute<NSURL>(descriptor, kCTFontURLAttribute)) { | |||||
- Q_ASSERT(url.fileURL); | |||||
QFontEngine::FaceId faceId; | |||||
faceId.filename = QString::fromNSString(url.path).toUtf8(); | |||||
return QFontEngineFT::create(fontDef, faceId); | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm | |||||
index aa61245..2423378 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm | |||||
@@ -78,7 +78,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); | |||||
mHelper = 0; | |||||
mStolenContentView = 0; | |||||
mPanelButtons = nil; | |||||
- mResultCode = NSModalResponseCancel; | |||||
+ mResultCode = NSCancelButton; | |||||
mDialogIsExecuting = false; | |||||
mResultSet = false; | |||||
mClosingDueToKnownButton = false; | |||||
@@ -166,7 +166,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); | |||||
mClosingDueToKnownButton = true; | |||||
[mColorPanel close]; | |||||
[self updateQtColor]; | |||||
- [self finishOffWithCode:NSModalResponseOK]; | |||||
+ [self finishOffWithCode:NSOKButton]; | |||||
} | |||||
- (void)onCancelClicked | |||||
@@ -175,7 +175,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); | |||||
mClosingDueToKnownButton = true; | |||||
[mColorPanel close]; | |||||
mQtColor = QColor(); | |||||
- [self finishOffWithCode:NSModalResponseCancel]; | |||||
+ [self finishOffWithCode:NSCancelButton]; | |||||
} | |||||
} | |||||
@@ -236,12 +236,12 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); | |||||
[NSApp runModalForWindow:mColorPanel]; | |||||
mDialogIsExecuting = false; | |||||
- return (mResultCode == NSModalResponseOK); | |||||
+ return (mResultCode == NSOKButton); | |||||
} | |||||
- (QPlatformDialogHelper::DialogCode)dialogResultCode | |||||
{ | |||||
- return (mResultCode == NSModalResponseOK) ? QPlatformDialogHelper::Accepted : QPlatformDialogHelper::Rejected; | |||||
+ return (mResultCode == NSOKButton) ? QPlatformDialogHelper::Accepted : QPlatformDialogHelper::Rejected; | |||||
} | |||||
- (BOOL)windowShouldClose:(id)window | |||||
@@ -250,7 +250,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); | |||||
if (!mPanelButtons) | |||||
[self updateQtColor]; | |||||
if (mDialogIsExecuting) { | |||||
- [self finishOffWithCode:NSModalResponseCancel]; | |||||
+ [self finishOffWithCode:NSCancelButton]; | |||||
} else { | |||||
mResultSet = true; | |||||
if (mHelper) | |||||
@@ -276,7 +276,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); | |||||
// This check will prevent any such recursion. | |||||
if (!mResultSet) { | |||||
mResultSet = true; | |||||
- if (mResultCode == NSModalResponseCancel) { | |||||
+ if (mResultCode == NSCancelButton) { | |||||
emit mHelper->reject(); | |||||
} else { | |||||
emit mHelper->accept(); | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm | |||||
index b22f1b1..d2dd645 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm | |||||
@@ -401,7 +401,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) | |||||
// [NSApp run], which is the normal code path for cocoa applications. | |||||
if (NSModalSession session = d->currentModalSession()) { | |||||
QBoolBlocker execGuard(d->currentExecIsNSAppRun, false); | |||||
- while ([NSApp runModalSession:session] == NSModalResponseContinue && !d->interrupt) { | |||||
+ while ([NSApp runModalSession:session] == NSRunContinuesResponse && !d->interrupt) { | |||||
qt_mac_waitForMoreEvents(NSModalPanelRunLoopMode); | |||||
if (session != d->currentModalSessionCached) { | |||||
// It's possible to release the current modal session | |||||
@@ -445,7 +445,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) | |||||
if (flags & QEventLoop::WaitForMoreEvents) | |||||
qt_mac_waitForMoreEvents(NSModalPanelRunLoopMode); | |||||
NSInteger status = [NSApp runModalSession:session]; | |||||
- if (status != NSModalResponseContinue && session == d->currentModalSessionCached) { | |||||
+ if (status != NSRunContinuesResponse && session == d->currentModalSessionCached) { | |||||
// INVARIANT: Someone called [NSApp stopModal:] from outside the event | |||||
// dispatcher (e.g to stop a native dialog). But that call wrongly stopped | |||||
// 'session' as well. As a result, we need to restart all internal sessions: | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm | |||||
index 9a96895..b227794 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm | |||||
@@ -104,7 +104,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); | |||||
mHelper = 0; | |||||
mStolenContentView = 0; | |||||
mPanelButtons = 0; | |||||
- mResultCode = NSModalResponseCancel; | |||||
+ mResultCode = NSCancelButton; | |||||
mDialogIsExecuting = false; | |||||
mResultSet = false; | |||||
@@ -169,7 +169,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); | |||||
- (void)onOkClicked | |||||
{ | |||||
[mFontPanel close]; | |||||
- [self finishOffWithCode:NSModalResponseOK]; | |||||
+ [self finishOffWithCode:NSOKButton]; | |||||
} | |||||
- (void)onCancelClicked | |||||
@@ -177,7 +177,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); | |||||
if (mPanelButtons) { | |||||
[mFontPanel close]; | |||||
mQtFont = QFont(); | |||||
- [self finishOffWithCode:NSModalResponseCancel]; | |||||
+ [self finishOffWithCode:NSCancelButton]; | |||||
} | |||||
} | |||||
@@ -222,12 +222,12 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); | |||||
[NSApp runModalForWindow:mFontPanel]; | |||||
mDialogIsExecuting = false; | |||||
- return (mResultCode == NSModalResponseOK); | |||||
+ return (mResultCode == NSOKButton); | |||||
} | |||||
- (QPlatformDialogHelper::DialogCode)dialogResultCode | |||||
{ | |||||
- return (mResultCode == NSModalResponseOK) ? QPlatformDialogHelper::Accepted : QPlatformDialogHelper::Rejected; | |||||
+ return (mResultCode == NSOKButton) ? QPlatformDialogHelper::Accepted : QPlatformDialogHelper::Rejected; | |||||
} | |||||
- (BOOL)windowShouldClose:(id)window | |||||
@@ -236,7 +236,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); | |||||
if (!mPanelButtons) | |||||
[self updateQtFont]; | |||||
if (mDialogIsExecuting) { | |||||
- [self finishOffWithCode:NSModalResponseCancel]; | |||||
+ [self finishOffWithCode:NSCancelButton]; | |||||
} else { | |||||
mResultSet = true; | |||||
if (mHelper) | |||||
@@ -262,7 +262,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); | |||||
// This check will prevent any such recursion. | |||||
if (!mResultSet) { | |||||
mResultSet = true; | |||||
- if (mResultCode == NSModalResponseCancel) { | |||||
+ if (mResultCode == NSCancelButton) { | |||||
emit mHelper->reject(); | |||||
} else { | |||||
emit mHelper->accept(); | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm | |||||
index bac49cf..83b51cd 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm | |||||
@@ -144,7 +144,7 @@ void QCocoaScreen::updateGeometry() | |||||
// The reference screen for the geometry is always the primary screen, but since | |||||
// we may be in the process of creating and registering the primary screen, we | |||||
// must special-case that and assign it direcly. | |||||
- QCocoaScreen *primaryScreen = (nsScreen == [[NSScreen screens] firstObject]) ? | |||||
+ QCocoaScreen *primaryScreen = (nsScreen == [[NSScreen screens] objectAtIndex:0]) ? | |||||
this : static_cast<QCocoaScreen*>(QGuiApplication::primaryScreen()->handle()); | |||||
m_geometry = primaryScreen->mapFromNative(m_geometry).toRect(); | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm | |||||
index e41c70b..815028b 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm | |||||
@@ -329,13 +329,6 @@ void QCocoaMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem * | |||||
} | |||||
insertNative(cocoaItem, beforeItem); | |||||
- | |||||
- // Empty menus on a menubar are hidden by default. If the menu gets | |||||
- // added to the menubar before it contains any item, we need to sync. | |||||
- if (isVisible() && attachedItem().hidden) { | |||||
- if (auto *mb = qobject_cast<QCocoaMenuBar *>(menuParent())) | |||||
- mb->syncMenu(this); | |||||
- } | |||||
} | |||||
void QCocoaMenu::insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem) | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm | |||||
index a4cd465..06d63f7 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoamenubar.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm | |||||
@@ -369,7 +369,7 @@ void QCocoaMenuBar::updateMenuBarImmediately() | |||||
QCocoaMenuLoader *loader = [QCocoaMenuLoader sharedMenuLoader]; | |||||
[loader ensureAppMenuInMenu:mb->nsMenu()]; | |||||
- NSMutableSet *mergedItems = [[NSMutableSet setWithCapacity:mb->merged().count()] retain]; | |||||
+ NSMutableSet *mergedItems = [[NSMutableSet setWithCapacity:0] retain]; | |||||
foreach (QCocoaMenuItem *m, mb->merged()) { | |||||
[mergedItems addObject:m->nsItem()]; | |||||
m->syncMerged(); | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm | |||||
index 5504c24..fa0b7f7 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm | |||||
@@ -172,12 +172,11 @@ void *QCocoaNativeInterface::NSPrintInfoForPrintEngine(QPrintEngine *printEngine | |||||
QPixmap QCocoaNativeInterface::defaultBackgroundPixmapForQWizard() | |||||
{ | |||||
+ QCFType<CFURLRef> url; | |||||
const int ExpectedImageWidth = 242; | |||||
const int ExpectedImageHeight = 414; | |||||
- QCFType<CFArrayRef> urls = LSCopyApplicationURLsForBundleIdentifier( | |||||
- CFSTR("com.apple.KeyboardSetupAssistant"), nullptr); | |||||
- if (urls && CFArrayGetCount(urls) > 0) { | |||||
- CFURLRef url = (CFURLRef)CFArrayGetValueAtIndex(urls, 0); | |||||
+ if (LSFindApplicationForInfo(kLSUnknownCreator, CFSTR("com.apple.KeyboardSetupAssistant"), | |||||
+ 0, 0, &url) == noErr) { | |||||
QCFType<CFBundleRef> bundle = CFBundleCreate(kCFAllocatorDefault, url); | |||||
if (bundle) { | |||||
url = CFBundleCopyResourceURL(bundle, CFSTR("Background"), CFSTR("png"), 0); | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h | |||||
index aa8fffd..e6abf49 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoawindow.h | |||||
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h | |||||
@@ -217,7 +217,9 @@ public: | |||||
Q_NOTIFICATION_HANDLER(NSWindowDidExitFullScreenNotification) void windowDidExitFullScreen(); | |||||
Q_NOTIFICATION_HANDLER(NSWindowDidOrderOffScreenNotification) void windowDidOrderOffScreen(); | |||||
Q_NOTIFICATION_HANDLER(NSWindowDidOrderOnScreenAndFinishAnimatingNotification) void windowDidOrderOnScreen(); | |||||
+#if 0 | |||||
Q_NOTIFICATION_HANDLER(NSWindowDidChangeOcclusionStateNotification) void windowDidChangeOcclusionState(); | |||||
+#endif | |||||
Q_NOTIFICATION_HANDLER(NSWindowDidChangeScreenNotification) void windowDidChangeScreen(); | |||||
Q_NOTIFICATION_HANDLER(NSWindowWillCloseNotification) void windowWillClose(); | |||||
@@ -316,6 +318,8 @@ public: // for QNSView | |||||
bool m_viewIsEmbedded; // true if the m_view is actually embedded in a "foreign" NSView hiearchy | |||||
bool m_viewIsToBeEmbedded; // true if the m_view is intended to be embedded in a "foreign" NSView hiearchy | |||||
+ QCocoaWindow *m_parentCocoaWindow; | |||||
+ | |||||
Qt::WindowFlags m_windowFlags; | |||||
Qt::WindowState m_lastReportedWindowState; | |||||
Qt::WindowModality m_windowModality; | |||||
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm | |||||
index 86fd7b8..5d63dea 100644 | |||||
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm | |||||
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm | |||||
@@ -325,7 +325,7 @@ static void qt_closePopups() | |||||
+ (void)applicationActivationChanged:(NSNotification*)notification | |||||
{ | |||||
const id sender = self; | |||||
- NSEnumerator<NSWindow*> *windowEnumerator = nullptr; | |||||
+ NSEnumerator* windowEnumerator = nullptr; | |||||
NSApplication *application = [NSApplication sharedApplication]; | |||||
#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_12) | |||||
@@ -526,6 +526,7 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw, WId nativeHandle) | |||||
, m_nsWindow(0) | |||||
, m_viewIsEmbedded(false) | |||||
, m_viewIsToBeEmbedded(false) | |||||
+ , m_parentCocoaWindow(0) | |||||
, m_lastReportedWindowState(Qt::WindowNoState) | |||||
, m_windowModality(Qt::NonModal) | |||||
, m_windowUnderMouse(false) | |||||
@@ -594,10 +595,12 @@ QCocoaWindow::~QCocoaWindow() | |||||
[m_nsWindow makeFirstResponder:nil]; | |||||
[m_nsWindow setContentView:nil]; | |||||
[m_nsWindow.helper detachFromPlatformWindow]; | |||||
- if (m_view.window.parentWindow) | |||||
- [m_view.window.parentWindow removeChildWindow:m_view.window]; | |||||
- else if ([m_view superview]) | |||||
+ if (m_view.window.parentWindow) { | |||||
+ if (m_parentCocoaWindow) | |||||
+ m_parentCocoaWindow->removeChildWindow(this); | |||||
+ } else if ([m_view superview]) { | |||||
[m_view removeFromSuperview]; | |||||
+ } | |||||
removeMonitor(); | |||||
@@ -614,6 +617,7 @@ QCocoaWindow::~QCocoaWindow() | |||||
foreachChildNSWindow(^(QCocoaWindow *childWindow) { | |||||
[m_nsWindow removeChildWindow:childWindow->m_nsWindow]; | |||||
+ childWindow->m_parentCocoaWindow = 0; | |||||
}); | |||||
[m_view release]; | |||||
@@ -690,7 +694,7 @@ void QCocoaWindow::setCocoaGeometry(const QRect &rect) | |||||
if (isChildNSWindow()) { | |||||
QPlatformWindow::setGeometry(rect); | |||||
- NSWindow *parentNSWindow = m_view.window.parentWindow; | |||||
+ NSWindow *parentNSWindow = m_parentCocoaWindow->m_nsWindow; | |||||
NSRect parentWindowFrame = [parentNSWindow contentRectForFrameRect:parentNSWindow.frame]; | |||||
clipWindow(parentWindowFrame); | |||||
@@ -744,7 +748,7 @@ void QCocoaWindow::clipWindow(const NSRect &clipRect) | |||||
m_hiddenByClipping = false; | |||||
if (!m_hiddenByAncestor) { | |||||
[m_nsWindow orderFront:nil]; | |||||
- static_cast<QCocoaWindow *>(QPlatformWindow::parent())->reinsertChildWindow(this); | |||||
+ m_parentCocoaWindow->reinsertChildWindow(this); | |||||
} | |||||
} | |||||
} | |||||
@@ -781,7 +785,7 @@ void QCocoaWindow::show(bool becauseOfAncestor) | |||||
if ([m_nsWindow isVisible]) | |||||
return; | |||||
- if (m_view.window.parentWindow && !m_view.window.parentWindow.visible) { | |||||
+ if (m_parentCocoaWindow && ![m_parentCocoaWindow->m_nsWindow isVisible]) { | |||||
m_hiddenByAncestor = true; // Parent still hidden, don't show now | |||||
} else if ((becauseOfAncestor == m_hiddenByAncestor) // Was NEITHER explicitly hidden | |||||
&& !m_hiddenByClipping) { // ... NOR clipped | |||||
@@ -792,7 +796,7 @@ void QCocoaWindow::show(bool becauseOfAncestor) | |||||
if (!m_hiddenByClipping) { // setCocoaGeometry() can change the clipping status | |||||
[m_nsWindow orderFront:nil]; | |||||
if (isChildNSWindow()) | |||||
- static_cast<QCocoaWindow *>(QPlatformWindow::parent())->reinsertChildWindow(this); | |||||
+ m_parentCocoaWindow->reinsertChildWindow(this); | |||||
foreachChildNSWindow(^(QCocoaWindow *childWindow) { | |||||
childWindow->show(true); | |||||
}); | |||||
@@ -854,12 +858,7 @@ void QCocoaWindow::setVisible(bool visible) | |||||
applyWindowState(window()->windowState()); | |||||
if (window()->windowState() != Qt::WindowMinimized) { | |||||
- if ((window()->modality() == Qt::WindowModal | |||||
- || window()->type() == Qt::Sheet) | |||||
- && parentCocoaWindow) { | |||||
- // show the window as a sheet | |||||
- [parentCocoaWindow->m_nsWindow beginSheet:m_nsWindow completionHandler:nil]; | |||||
- } else if (window()->modality() != Qt::NonModal) { | |||||
+ if (window()->modality() != Qt::NonModal) { | |||||
// show the window as application modal | |||||
QCocoaEventDispatcher *cocoaEventDispatcher = qobject_cast<QCocoaEventDispatcher *>(QGuiApplication::instance()->eventDispatcher()); | |||||
Q_ASSERT(cocoaEventDispatcher != 0); | |||||
@@ -919,11 +918,6 @@ void QCocoaWindow::setVisible(bool visible) | |||||
if (cocoaEventDispatcherPrivate) | |||||
cocoaEventDispatcherPrivate->endModalSession(window()); | |||||
m_hasModalSession = false; | |||||
- } else { | |||||
- if ([m_nsWindow isSheet]) { | |||||
- Q_ASSERT_X(parentCocoaWindow, "QCocoaWindow", "Window modal dialog has no transient parent."); | |||||
- [parentCocoaWindow->m_nsWindow endSheet:m_nsWindow]; | |||||
- } | |||||
} | |||||
hide(); | |||||
@@ -1190,7 +1184,7 @@ void QCocoaWindow::raise() | |||||
// -[NSWindow orderFront:] doesn't work with attached windows. | |||||
// The only solution is to remove and add the child window. | |||||
// This will place it on top of all the other NSWindows. | |||||
- NSWindow *parentNSWindow = m_view.window.parentWindow; | |||||
+ NSWindow *parentNSWindow = m_parentCocoaWindow->m_nsWindow; | |||||
[parentNSWindow removeChildWindow:m_nsWindow]; | |||||
[parentNSWindow addChildWindow:m_nsWindow ordered:NSWindowAbove]; | |||||
} else { | |||||
@@ -1226,7 +1220,7 @@ void QCocoaWindow::lower() | |||||
// The only solution is to remove and add all the child windows except this one. | |||||
// This will keep the current window at the bottom while adding the others on top of it, | |||||
// hopefully in the same order (this is not documented anywhere in the Cocoa documentation). | |||||
- NSWindow *parentNSWindow = m_view.window.parentWindow; | |||||
+ NSWindow *parentNSWindow = m_parentCocoaWindow->m_nsWindow; | |||||
NSArray *children = [parentNSWindow.childWindows copy]; | |||||
for (NSWindow *child in children) | |||||
if (m_nsWindow != child) { | |||||
@@ -1528,6 +1522,7 @@ void QCocoaWindow::windowDidOrderOnScreen() | |||||
exposeWindow(); | |||||
} | |||||
+#if 0 | |||||
void QCocoaWindow::windowDidChangeOcclusionState() | |||||
{ | |||||
// Several unit tests expect paint and/or expose events for windows that are | |||||
@@ -1543,6 +1538,7 @@ void QCocoaWindow::windowDidChangeOcclusionState() | |||||
} | |||||
} | |||||
} | |||||
+#endif | |||||
void QCocoaWindow::windowDidChangeScreen() | |||||
{ | |||||
@@ -1698,14 +1694,15 @@ void QCocoaWindow::recreateWindowIfNeeded() | |||||
qCDebug(lcQpaCocoaWindow) << "Reconfiguring NSWindow due to" << recreateReason; | |||||
- QCocoaWindow *parentCocoaWindow = static_cast<QCocoaWindow *>(parentWindow); | |||||
+ // FIXME: Replace member with direct parentWindow usage (possibly cast) | |||||
+ m_parentCocoaWindow = static_cast<QCocoaWindow *>(parentWindow); | |||||
if (shouldBeChildNSWindow) { | |||||
QWindow *parentQWindow = parentWindow->window(); | |||||
// Ensure that all parents in the hierarchy are also child NSWindows | |||||
if (!parentQWindow->property("_q_platform_MacUseNSWindow").toBool()) { | |||||
parentQWindow->setProperty("_q_platform_MacUseNSWindow", QVariant(true)); | |||||
- parentCocoaWindow->recreateWindowIfNeeded(); | |||||
+ m_parentCocoaWindow->recreateWindowIfNeeded(); | |||||
} | |||||
} | |||||
@@ -1713,8 +1710,8 @@ void QCocoaWindow::recreateWindowIfNeeded() | |||||
if ((isContentView() && !shouldBeContentView) || (recreateReason & PanelChanged)) { | |||||
qCDebug(lcQpaCocoaWindow) << "Getting rid of existing window" << m_nsWindow; | |||||
[m_nsWindow closeAndRelease]; | |||||
- if (isChildNSWindow()) | |||||
- [m_view.window.parentWindow removeChildWindow:m_view.window]; | |||||
+ if (isChildNSWindow() && oldParentCocoaWindow) | |||||
+ oldParentCocoaWindow->removeChildWindow(this); | |||||
if (isContentView()) { | |||||
// We explicitly disassociate m_view from the window's contentView, | |||||
// as AppKit does not automatically do this in response to removing | |||||
@@ -1730,9 +1727,9 @@ void QCocoaWindow::recreateWindowIfNeeded() | |||||
if (noPreviousWindow) | |||||
m_nsWindow = createNSWindow(shouldBeChildNSWindow, shouldBePanel); | |||||
- if (m_view.window.parentWindow) { | |||||
- if (!shouldBeChildNSWindow || (recreateReason & ParentChanged)) | |||||
- [m_view.window.parentWindow removeChildWindow:m_view.window]; | |||||
+ if (oldParentCocoaWindow) { | |||||
+ if (!shouldBeChildNSWindow || oldParentCocoaWindow != m_parentCocoaWindow) | |||||
+ oldParentCocoaWindow->removeChildWindow(this); | |||||
m_forwardWindow = oldParentCocoaWindow; | |||||
} | |||||
@@ -1759,8 +1756,8 @@ void QCocoaWindow::recreateWindowIfNeeded() | |||||
setWindowState(window()->windowState()); | |||||
} else if (shouldBeChildNSWindow) { | |||||
if (!m_hiddenByClipping) { | |||||
- [parentCocoaWindow->m_nsWindow addChildWindow:m_nsWindow ordered:NSWindowAbove]; | |||||
- parentCocoaWindow->reinsertChildWindow(this); | |||||
+ [m_parentCocoaWindow->m_nsWindow addChildWindow:m_nsWindow ordered:NSWindowAbove]; | |||||
+ m_parentCocoaWindow->reinsertChildWindow(this); | |||||
} | |||||
// Set properties after the window has been made a child NSWindow | |||||
@@ -1771,7 +1768,7 @@ void QCocoaWindow::recreateWindowIfNeeded() | |||||
if ([m_view superview]) | |||||
[m_view removeFromSuperview]; | |||||
- [parentCocoaWindow->m_view addSubview:m_view]; | |||||
+ [m_parentCocoaWindow->m_view addSubview:m_view]; | |||||
QRect rect = windowGeometry(); | |||||
// Prevent setting a (0,0) window size; causes opengl context | |||||
// "Invalid Drawable" warnings. | |||||
@@ -1915,6 +1912,11 @@ bool QCocoaWindow::alwaysShowToolWindow() const | |||||
return qt_mac_resolveOption(false, window(), "_q_macAlwaysShowToolWindow", ""); | |||||
} | |||||
+void QCocoaWindow::removeChildWindow(QCocoaWindow *child) | |||||
+{ | |||||
+ [m_nsWindow removeChildWindow:child->m_nsWindow]; | |||||
+} | |||||
+ | |||||
void QCocoaWindow::removeMonitor() | |||||
{ | |||||
if (!monitor) | |||||
@@ -2046,12 +2048,14 @@ Qt::WindowState QCocoaWindow::windowState() const | |||||
// FIXME: Support compound states (Qt::WindowStates) | |||||
NSWindow *window = m_view.window; | |||||
+ /* | |||||
if (window.miniaturized) | |||||
return Qt::WindowMinimized; | |||||
+ */ | |||||
if (window.qt_fullScreen) | |||||
return Qt::WindowFullScreen; | |||||
- if ((window.zoomed && !isTransitioningToFullScreen()) | |||||
- || (m_lastReportedWindowState == Qt::WindowMaximized && isTransitioningToFullScreen())) | |||||
+ if (/*(window.zoomed && !isTransitioningToFullScreen()) | |||||
+ ||*/ (m_lastReportedWindowState == Qt::WindowMaximized && isTransitioningToFullScreen())) | |||||
return Qt::WindowMaximized; | |||||
// Note: We do not report Qt::WindowActive, even if isActive() | |||||
@@ -2181,7 +2185,6 @@ void QCocoaWindow::applyContentBorderThickness(NSWindow *window) | |||||
if (!m_drawContentBorderGradient) { | |||||
[window setStyleMask:[window styleMask] & ~NSTexturedBackgroundWindowMask]; | |||||
[[[window contentView] superview] setNeedsDisplay:YES]; | |||||
- window.titlebarAppearsTransparent = NO; | |||||
return; | |||||
} | |||||
@@ -2206,7 +2209,6 @@ void QCocoaWindow::applyContentBorderThickness(NSWindow *window) | |||||
int effectiveBottomContentBorderThickness = m_bottomContentBorderThickness; | |||||
[window setStyleMask:[window styleMask] | NSTexturedBackgroundWindowMask]; | |||||
- window.titlebarAppearsTransparent = YES; | |||||
[window setContentBorderThickness:effectiveTopContentBorderThickness forEdge:NSMaxYEdge]; | |||||
[window setAutorecalculatesContentBorderThickness:NO forEdge:NSMaxYEdge]; | |||||
diff --git a/src/printsupport/dialogs/qpagesetupdialog_mac.mm b/src/printsupport/dialogs/qpagesetupdialog_mac.mm | |||||
index 1e39845..9305566 100644 | |||||
--- a/src/printsupport/dialogs/qpagesetupdialog_mac.mm | |||||
+++ b/src/printsupport/dialogs/qpagesetupdialog_mac.mm | |||||
@@ -77,7 +77,7 @@ QT_USE_NAMESPACE | |||||
QPageSetupDialog *dialog = static_cast<QPageSetupDialog *>(contextInfo); | |||||
QPrinter *printer = dialog->printer(); | |||||
- if (returnCode == NSModalResponseOK) { | |||||
+ if (returnCode == NSOKButton) { | |||||
PMPageFormat format = static_cast<PMPageFormat>([printInfo PMPageFormat]); | |||||
PMRect paperRect; | |||||
PMGetUnadjustedPaperRect(format, &paperRect); | |||||
@@ -88,7 +88,7 @@ QT_USE_NAMESPACE | |||||
printer->printEngine()->setProperty(QPrintEngine::PPK_Orientation, orientation == kPMLandscape ? QPrinter::Landscape : QPrinter::Portrait); | |||||
} | |||||
- dialog->done((returnCode == NSModalResponseOK) ? QDialog::Accepted : QDialog::Rejected); | |||||
+ dialog->done((returnCode == NSOKButton) ? QDialog::Accepted : QDialog::Rejected); | |||||
} | |||||
@end | |||||
diff --git a/src/printsupport/dialogs/qprintdialog_mac.mm b/src/printsupport/dialogs/qprintdialog_mac.mm | |||||
index 8547799..f7bbb59 100644 | |||||
--- a/src/printsupport/dialogs/qprintdialog_mac.mm | |||||
+++ b/src/printsupport/dialogs/qprintdialog_mac.mm | |||||
@@ -101,7 +101,7 @@ QT_USE_NAMESPACE | |||||
QPrintDialog *dialog = static_cast<QPrintDialog *>(contextInfo); | |||||
QPrinter *printer = dialog->printer(); | |||||
- if (returnCode == NSModalResponseOK) { | |||||
+ if (returnCode == NSOKButton) { | |||||
PMPrintSession session = static_cast<PMPrintSession>([printInfo PMPrintSession]); | |||||
PMPrintSettings settings = static_cast<PMPrintSettings>([printInfo PMPrintSettings]); | |||||
@@ -190,7 +190,7 @@ QT_USE_NAMESPACE | |||||
printer->setPageSize(pageSize); | |||||
printer->setOrientation(orientation == kPMLandscape ? QPrinter::Landscape : QPrinter::Portrait); | |||||
- dialog->done((returnCode == NSModalResponseOK) ? QDialog::Accepted : QDialog::Rejected); | |||||
+ dialog->done((returnCode == NSOKButton) ? QDialog::Accepted : QDialog::Rejected); | |||||
} | |||||
@end | |||||
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp | |||||
index 4c5c9e1..5b4a95e 100644 | |||||
--- a/src/testlib/qtestcase.cpp | |||||
+++ b/src/testlib/qtestcase.cpp | |||||
@@ -147,6 +147,7 @@ static bool debuggerPresent() | |||||
return CFStringCompare(str1, str2, kCFCompareCaseInsensitive) == kCFCompareEqualTo; | |||||
}; | |||||
+#if 0 | |||||
// Check if there is an exception handler for the process: | |||||
mach_msg_type_number_t portCount = 0; | |||||
exception_mask_t masks[EXC_TYPES_COUNT]; | |||||
@@ -163,6 +164,7 @@ static bool debuggerPresent() | |||||
} | |||||
} | |||||
} | |||||
+#endif | |||||
// Ok, no debugger attached. So, let's see if CrashReporter will throw up a dialog. If so, we | |||||
// leave it to the OS to do the stack trace. | |||||
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm | |||||
index e6436f8..db1878a 100644 | |||||
--- a/src/widgets/styles/qmacstyle_mac.mm | |||||
+++ b/src/widgets/styles/qmacstyle_mac.mm | |||||
@@ -137,6 +137,21 @@ | |||||
#include <qpa/qplatformtheme.h> | |||||
#include <QtGui/private/qcoregraphics_p.h> | |||||
+@interface NSGraphicsContext (QtAdditions) | |||||
+ | |||||
+ | |||||
+@end | |||||
+ | |||||
+@implementation NSGraphicsContext (QtAdditions) | |||||
+ | |||||
+{ | |||||
+ return [self graphicsContextWithGraphicsPort:graphicsPort flipped:initialFlippedState]; | |||||
+} | |||||
+ | |||||
+@end | |||||
+ | |||||
QT_USE_NAMESPACE | |||||
static QWindow *qt_getWindow(const QWidget *widget) | |||||
@@ -1036,8 +1051,8 @@ void QMacStylePrivate::drawFocusRing(QPainter *p, const QRect &targetRect, int h | |||||
CGContextSetAlpha(ctx, 0.5); // As applied to the stroke color below | |||||
[NSGraphicsContext saveGraphicsState]; | |||||
- [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithCGContext:ctx | |||||
- flipped:NO]]; | |||||
+ [NSGraphicsContext setCurrentContext:[NSGraphicsContext qt_graphicsContextWithCGContext:ctx | |||||
+ flipped:NO]]; | |||||
CGRect focusRingRect = CGRectMake(hMargin, vMargin, size, size); | |||||
NSBezierPath *focusRingPath; | |||||
if (radius > 0) { |
@@ -3,7 +3,11 @@ | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# OS setup | # OS setup | ||||
if [ "${MACOS}" -eq 1 ]; then | |||||
if [ "${LINUX}" -eq 1 ]; then | |||||
CMAKE_SYSTEM_NAME="Linux" | |||||
PAWPAW_TARGET="linux" | |||||
elif [ "${MACOS}" -eq 1 ]; then | |||||
CMAKE_SYSTEM_NAME="Darwin" | CMAKE_SYSTEM_NAME="Darwin" | ||||
if [ "${MACOS_OLD}" -eq 1 ]; then | if [ "${MACOS_OLD}" -eq 1 ]; then | ||||
PAWPAW_TARGET="macos-old" | PAWPAW_TARGET="macos-old" | ||||
@@ -19,10 +23,6 @@ elif [ "${WIN32}" -eq 1 ]; then | |||||
PAWPAW_TARGET="win32" | PAWPAW_TARGET="win32" | ||||
fi | fi | ||||
elif [ "${LINUX}" -eq 1 ]; then | |||||
CMAKE_SYSTEM_NAME="Linux" | |||||
PAWPAW_TARGET="linux" | |||||
else | else | ||||
echo "Unknown target '${target}'" | echo "Unknown target '${target}'" | ||||
exit 4 | exit 4 | ||||
@@ -78,7 +78,7 @@ if [ "${MACOS}" -eq 1 ]; then | |||||
else | else | ||||
LINK_FLAGS="${LINK_FLAGS} -Wl,-O1 -Wl,--as-needed -Wl,--gc-sections -Wl,--no-undefined -Wl,--strip-all" | LINK_FLAGS="${LINK_FLAGS} -Wl,-O1 -Wl,--as-needed -Wl,--gc-sections -Wl,--no-undefined -Wl,--strip-all" | ||||
if [ "${WIN32}" -eq 1 ]; then | if [ "${WIN32}" -eq 1 ]; then | ||||
LINK_FLAGS="${LINK_FLAGS} -static -static-libgcc -static-libstdc++" | |||||
LINK_FLAGS="${LINK_FLAGS} -static -lssp_nonshared -Wl,-Bstatic" | |||||
fi | fi | ||||
fi | fi | ||||
@@ -111,8 +111,13 @@ TARGET_PKG_CONFIG_PATH="${PAWPAW_PREFIX}/lib/pkgconfig" | |||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
# other | # other | ||||
# "-j 2" | |||||
MAKE_ARGS="" | MAKE_ARGS="" | ||||
WAF_ARGS="" | |||||
if which nproc > /dev/null; then | |||||
MAKE_ARGS+="-j $(nproc)" | |||||
WAF_ARGS+="-j $(nproc)" | |||||
fi | |||||
if [ "${CROSS_COMPILING}" -eq 1 ]; then | if [ "${CROSS_COMPILING}" -eq 1 ]; then | ||||
MAKE_ARGS="${MAKE_ARGS} CROSS_COMPILING=true" | MAKE_ARGS="${MAKE_ARGS} CROSS_COMPILING=true" | ||||
@@ -92,6 +92,15 @@ function _prebuild() { | |||||
done | done | ||||
fi | fi | ||||
if [ -d "${PAWPAW_ROOT}/patches/${name}/${PAWPAW_TARGET}" ]; then | |||||
for p in $(ls "${PAWPAW_ROOT}/patches/${name}/${PAWPAW_TARGET}/" | grep "\.patch" | sort); do | |||||
if [ ! -f "${pkgdir}/.stamp_applied_${p}" ]; then | |||||
patch -p1 -d "${pkgdir}" -i "${PAWPAW_ROOT}/patches/${name}/${PAWPAW_TARGET}/${p}" | |||||
touch "${pkgdir}/.stamp_applied_${p}" | |||||
fi | |||||
done | |||||
fi | |||||
if [ ! -f "${pkgdir}/.stamp_configured" ]; then | if [ ! -f "${pkgdir}/.stamp_configured" ]; then | ||||
rm -f "${pkgdir}/.stamp_built" | rm -f "${pkgdir}/.stamp_built" | ||||
rm -f "${pkgdir}/.stamp_installed" | rm -f "${pkgdir}/.stamp_installed" | ||||
@@ -118,6 +127,7 @@ function _postbuild() { | |||||
unset EXTRA_CFLAGS | unset EXTRA_CFLAGS | ||||
unset EXTRA_CXXFLAGS | unset EXTRA_CXXFLAGS | ||||
unset EXTRA_LDFLAGS | unset EXTRA_LDFLAGS | ||||
unset EXTRA_MAKE_ARGS | |||||
export PATH="${OLD_PATH}" | export PATH="${OLD_PATH}" | ||||
} | } | ||||
@@ -139,21 +149,21 @@ function build_autoconf() { | |||||
if [ ! -f "${pkgdir}/.stamp_configured" ]; then | if [ ! -f "${pkgdir}/.stamp_configured" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
./configure --enable-static --disable-shared --disable-debug --disable-doc --disable-maintainer-mode --prefix="${PAWPAW_PREFIX}" ${extraconfrules} | |||||
./configure --enable-static --disable-shared --disable-debug --disable-doc --disable-docs --disable-maintainer-mode --prefix="${PAWPAW_PREFIX}" ${extraconfrules} | |||||
touch .stamp_configured | touch .stamp_configured | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_built" ]; then | if [ ! -f "${pkgdir}/.stamp_built" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
make ${MAKE_ARGS} | |||||
make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} | |||||
touch .stamp_built | touch .stamp_built | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | if [ ! -f "${pkgdir}/.stamp_installed" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
make ${MAKE_ARGS} install | |||||
make ${MAKE_ARGS} install -j 1 | |||||
touch .stamp_installed | touch .stamp_installed | ||||
popd | popd | ||||
fi | fi | ||||
@@ -161,6 +171,37 @@ function build_autoconf() { | |||||
_postbuild | _postbuild | ||||
} | } | ||||
function build_autoconfgen() { | |||||
local name="${1}" | |||||
local version="${2}" | |||||
local extraconfrules="${3}" | |||||
local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | |||||
local EXTRA_CFLAGS2="${EXTRA_CFLAGS}" | |||||
local EXTRA_CXXFLAGS2="${EXTRA_CXXFLAGS}" | |||||
local EXTRA_LDFLAGS2="${EXTRA_LDFLAGS}" | |||||
local EXTRA_MAKE_ARGS2="${EXTRA_MAKE_ARGS}" | |||||
_prebuild "${name}" "${pkgdir}" | |||||
if [ ! -f "${pkgdir}/.stamp_preconfigured" ]; then | |||||
pushd "${pkgdir}" | |||||
autoconf | |||||
touch .stamp_preconfigured | |||||
popd | |||||
fi | |||||
_postbuild | |||||
export EXTRA_CFLAGS="${EXTRA_CFLAGS2}" | |||||
export EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS2}" | |||||
export EXTRA_LDFLAGS="${EXTRA_LDFLAGS2}" | |||||
export EXTRA_MAKE_ARGS="${EXTRA_MAKE_ARGS2}" | |||||
build_autoconf "${name}" "${version}" "${extraconfrules}" | |||||
} | |||||
function build_conf() { | function build_conf() { | ||||
local name="${1}" | local name="${1}" | ||||
local version="${2}" | local version="${2}" | ||||
@@ -179,14 +220,14 @@ function build_conf() { | |||||
if [ ! -f "${pkgdir}/.stamp_built" ]; then | if [ ! -f "${pkgdir}/.stamp_built" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
make ${MAKE_ARGS} | |||||
make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} | |||||
touch .stamp_built | touch .stamp_built | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | if [ ! -f "${pkgdir}/.stamp_installed" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
make ${MAKE_ARGS} install | |||||
make ${MAKE_ARGS} -j 1 install | |||||
touch .stamp_installed | touch .stamp_installed | ||||
popd | popd | ||||
fi | fi | ||||
@@ -210,21 +251,21 @@ function build_cmake() { | |||||
if [ ! -f "${pkgdir}/.stamp_configured" ]; then | if [ ! -f "${pkgdir}/.stamp_configured" ]; then | ||||
pushd "${pkgdir}/build" | pushd "${pkgdir}/build" | ||||
cmake -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX="${PAWPAW_PREFIX}" ${extraconfrules} .. | |||||
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX="${PAWPAW_PREFIX}" ${extraconfrules} .. | |||||
touch ../.stamp_configured | touch ../.stamp_configured | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_built" ]; then | if [ ! -f "${pkgdir}/.stamp_built" ]; then | ||||
pushd "${pkgdir}/build" | pushd "${pkgdir}/build" | ||||
make ${MAKE_ARGS} | |||||
make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} | |||||
touch ../.stamp_built | touch ../.stamp_built | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | if [ ! -f "${pkgdir}/.stamp_installed" ]; then | ||||
pushd "${pkgdir}/build" | pushd "${pkgdir}/build" | ||||
make ${MAKE_ARGS} install | |||||
make ${MAKE_ARGS} -j 1 install | |||||
touch ../.stamp_installed | touch ../.stamp_installed | ||||
popd | popd | ||||
fi | fi | ||||
@@ -252,7 +293,7 @@ function build_make() { | |||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | if [ ! -f "${pkgdir}/.stamp_installed" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
make PREFIX="${PAWPAW_PREFIX}" PKG_CONFIG="${TARGET_PKG_CONFIG}" ${MAKE_ARGS} install | |||||
make PREFIX="${PAWPAW_PREFIX}" PKG_CONFIG="${TARGET_PKG_CONFIG}" ${MAKE_ARGS} -j 1 install | |||||
touch .stamp_installed | touch .stamp_installed | ||||
popd | popd | ||||
fi | fi | ||||
@@ -297,32 +338,70 @@ function build_meson() { | |||||
_postbuild | _postbuild | ||||
} | } | ||||
function build_qmake() { | |||||
local name="${1}" | |||||
local version="${2}" | |||||
local extraconfrules="${3}" | |||||
local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | |||||
_prebuild "${name}" "${pkgdir}" | |||||
if [ ! -f "${pkgdir}/.stamp_configured" ]; then | |||||
pushd "${pkgdir}" | |||||
qmake ${extraconfrules} | |||||
touch .stamp_configured | |||||
popd | |||||
fi | |||||
if [ ! -f "${pkgdir}/.stamp_built" ]; then | |||||
pushd "${pkgdir}" | |||||
make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS} | |||||
touch .stamp_built | |||||
popd | |||||
fi | |||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | |||||
pushd "${pkgdir}" | |||||
make ${MAKE_ARGS} -j 1 install | |||||
touch .stamp_installed | |||||
popd | |||||
fi | |||||
_postbuild | |||||
} | |||||
function build_waf() { | function build_waf() { | ||||
local name="${1}" | local name="${1}" | ||||
local version="${2}" | local version="${2}" | ||||
local extraconfrules="${3}" | local extraconfrules="${3}" | ||||
local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | ||||
local python=python3 | |||||
if ! which python3 > /dev/null; then | |||||
python=python | |||||
fi | |||||
_prebuild "${name}" "${pkgdir}" | _prebuild "${name}" "${pkgdir}" | ||||
if [ ! -f "${pkgdir}/.stamp_configured" ]; then | if [ ! -f "${pkgdir}/.stamp_configured" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
./waf configure --prefix="${PAWPAW_PREFIX}" ${extraconfrules} | |||||
${python} waf configure --prefix="${PAWPAW_PREFIX}" ${extraconfrules} | |||||
touch .stamp_configured | touch .stamp_configured | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_built" ]; then | if [ ! -f "${pkgdir}/.stamp_built" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
./waf build | |||||
${python} waf build ${WAF_ARGS} | |||||
touch .stamp_built | touch .stamp_built | ||||
popd | popd | ||||
fi | fi | ||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | if [ ! -f "${pkgdir}/.stamp_installed" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
./waf install | |||||
${python} waf install ${WAF_ARGS} -j 1 | |||||
touch .stamp_installed | touch .stamp_installed | ||||
popd | popd | ||||
fi | fi | ||||
@@ -365,7 +444,7 @@ function build_host_autoconf() { | |||||
if [ ! -f "${pkgdir}/.stamp_installed" ]; then | if [ ! -f "${pkgdir}/.stamp_installed" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
make install | |||||
make ${MAKE_ARGS} install -j 1 | |||||
touch .stamp_installed | touch .stamp_installed | ||||
popd | popd | ||||
fi | fi | ||||
@@ -384,6 +463,21 @@ function patch_file() { | |||||
sed -i -e "${rule}" "${pkgdir}/${file}" | sed -i -e "${rule}" "${pkgdir}/${file}" | ||||
} | } | ||||
function copy_file() { | |||||
local name="${1}" | |||||
local version="${2}" | |||||
local source="${3}" | |||||
local target="${4}" | |||||
local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | |||||
if [ ! -e "${pkgdir}/${target}" ]; then | |||||
pushd "${pkgdir}" | |||||
cp -v "${source}" "${target}" | |||||
popd | |||||
fi | |||||
} | |||||
function link_file() { | function link_file() { | ||||
local name="${1}" | local name="${1}" | ||||
local version="${2}" | local version="${2}" | ||||
@@ -394,7 +488,7 @@ function link_file() { | |||||
if [ ! -e "${pkgdir}/${target}" ]; then | if [ ! -e "${pkgdir}/${target}" ]; then | ||||
pushd "${pkgdir}" | pushd "${pkgdir}" | ||||
ln -sf "${source}" "${target}" | |||||
ln -sfv "${source}" "${target}" | |||||
popd | popd | ||||
fi | fi | ||||
} | } | ||||
@@ -406,8 +500,9 @@ function remove_file() { | |||||
local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}" | ||||
echo rm -f "${pkgdir}/${file}" | |||||
rm -f "${pkgdir}/${file}" | |||||
if [ ! -e "${pkgdir}/${file}" ]; then | |||||
rm -fv "${pkgdir}/${file}" | |||||
fi | |||||
} | } | ||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- |
@@ -6,24 +6,25 @@ PKG_CONFIG_VERSION=0.28 | |||||
# common | # common | ||||
FILE_VERSION=5.34 | FILE_VERSION=5.34 | ||||
FLAC_VERSION=1.3.2 | FLAC_VERSION=1.3.2 | ||||
FLUIDSYNTH_VERSION=1.1.11 | |||||
FFTW_VERSION=3.3.8 | FFTW_VERSION=3.3.8 | ||||
GLIB_VERSION=2.22.5 | |||||
GLIB_MVERSION=2.22 | |||||
LIBLO_VERSION=0.30 | LIBLO_VERSION=0.30 | ||||
LIBOGG_VERSION=1.3.4 | LIBOGG_VERSION=1.3.4 | ||||
LIBSAMPLERATE_VERSION=0.1.9 | LIBSAMPLERATE_VERSION=0.1.9 | ||||
LIBSNDFILE_VERSION=1.0.28 | LIBSNDFILE_VERSION=1.0.28 | ||||
LIBVORBIS_VERSION=1.3.6 | LIBVORBIS_VERSION=1.3.6 | ||||
LV2_VERSION=1.18.0 | LV2_VERSION=1.18.0 | ||||
MXML_VERSION=3.1 | |||||
ZLIB_VERSION=1.2.11 | ZLIB_VERSION=1.2.11 | ||||
# FLUIDSYNTH_VERSION=1.1.11 | |||||
# GLIB_VERSION=2.44.1 | |||||
# GLIB_MVERSION=2.44 | |||||
# MXML_VERSION=2.12 | |||||
# carla builds only | |||||
# CXFREEZE_VERSION=6.1 | |||||
# qt stuff | |||||
QT5_VERSION=5.9.8 | |||||
QT5_MVERSION=5.9 | |||||
# PYTHON_VERSION=3.7.4 | # PYTHON_VERSION=3.7.4 | ||||
# PYLIBLO_VERSION=0.9.2 | # PYLIBLO_VERSION=0.9.2 | ||||
# CXFREEZE_VERSION=6.1 | |||||
# jack builds only | # jack builds only | ||||
AFTEN_VERSION=0.0.8 | AFTEN_VERSION=0.0.8 | ||||