Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix wine detection
  • Loading branch information
PhysSong committed Apr 4, 2020
1 parent 9c2ccdf commit d173f42
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 20 deletions.
18 changes: 10 additions & 8 deletions cmake/linux/package_linux.sh.in
Expand Up @@ -110,14 +110,6 @@ unset LD_LIBRARY_PATH
# Ensure linuxdeployqt can find shared objects
export LD_LIBRARY_PATH="${APPDIR}"usr/lib/lmms/:"${APPDIR}"usr/lib/lmms/optional:"$LD_LIBRARY_PATH"

# Handle wine linking
if [ -d "@WINE_32_LIBRARY_DIR@" ]; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_32_LIBRARY_DIRS@
fi
if [ -d "@WINE_64_LIBRARY_DIR@" ]; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_64_LIBRARY_DIRS@
fi

# Move executables so linuxdeployqt can find them
ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx"
VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so"
Expand All @@ -131,6 +123,16 @@ mv "$ZYNLIB" "$ZYNBIN"
mv "$VSTLIB32" "$VSTBIN32" || true
mv "$VSTLIB64" "$VSTBIN64" || true

# Handle wine linking
if [ -d "@WINE_32_LIBRARY_DIR@" ] && \
ldd "$VSTBIN32" | grep "libwine\.so" | grep "not found"; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_32_LIBRARY_DIRS@"
fi
if [ -d "@WINE_64_LIBRARY_DIR@" ] && \
ldd "$VSTBIN64" | grep "libwine\.so" | grep "not found"; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_64_LIBRARY_DIRS@"
fi

# Patch the desktop file
sed -i 's/.*Exec=.*/Exec=lmms.real/' "$DESKTOPFILE"

Expand Down
20 changes: 14 additions & 6 deletions cmake/modules/FindWine.cmake
Expand Up @@ -11,11 +11,19 @@ MACRO(_findwine_find_flags output expression result)
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}")
FOREACH(FLAG ${WINEBUILD_FLAGS})
IF("${FLAG}" MATCHES "${expression}")
SET(${result} "${FLAG}")
LIST(APPEND ${result} "${FLAG}")
ENDIF()
ENDFOREACH()
ENDMACRO()

MACRO(_regex_replace_foreach EXPRESSION REPLACEMENT RESULT INPUT)
SET(${RESULT} "")
FOREACH(ITEM ${INPUT})
STRING(REGEX REPLACE "${EXPRESSION}" "${REPLACEMENT}" ITEM "${ITEM}")
LIST(APPEND ${RESULT} "${ITEM}")
ENDFOREACH()
ENDMACRO()

LIST(APPEND CMAKE_PREFIX_PATH /opt/wine-stable /opt/wine-devel /opt/wine-staging /usr/lib/wine/)

FIND_PROGRAM(WINE_CXX
Expand All @@ -31,10 +39,10 @@ IF(WINE_CXX)
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem" WINEGCC_INCLUDE_DIR)
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "libwinecrt0\\.a.*" WINECRT_32)
_findwine_find_flags("${WINEBUILD_OUTPUT_64}" "libwinecrt0\\.a.*" WINECRT_64)
STRING(REGEX REPLACE "^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}")
STRING(REGEX REPLACE "/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}")
STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}")
STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}")
_regex_replace_foreach("^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}")
_regex_replace_foreach("/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}")
STRING(REGEX REPLACE "wine/libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}")
STRING(REGEX REPLACE "wine/libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}")

IF(BUGGED_WINEGCC)
MESSAGE(WARNING "Your winegcc is unusable due to https://bugs.winehq.org/show_bug.cgi?id=46293,\n
Expand Down Expand Up @@ -76,7 +84,7 @@ IF(WINE_CXX)
ENDIF()

FIND_PATH(WINE_INCLUDE_DIR wine/exception.h
HINTS "${WINE_INCLUDE_HINT}"
HINTS ${WINE_INCLUDE_HINT}
)

SET(_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE})
Expand Down
12 changes: 6 additions & 6 deletions tests/src/core/AutomatableModelTest.cpp
Expand Up @@ -35,8 +35,8 @@ class AutomatableModelTest : QTestSuite
void resetChanged() { m1Changed = m2Changed = false; }

private slots: // helper slots
void onM1Changed(Model* ) { m1Changed = true; }
void onM2Changed(Model* ) { m2Changed = true; }
void onM1Changed() { m1Changed = true; }
void onM2Changed() { m2Changed = true; }

private slots: // tests
//! Test that upcast and exact casts work,
Expand All @@ -62,10 +62,10 @@ private slots: // tests
{
BoolModel m1(false), m2(false);

QObject::connect(&m1, SIGNAL(dataChanged(Model*)),
this, SLOT(onM1Changed(Model*)));
QObject::connect(&m2, SIGNAL(dataChanged(Model*)),
this, SLOT(onM2Changed(Model*)));
QObject::connect(&m1, SIGNAL(dataChanged()),
this, SLOT(onM1Changed()));
QObject::connect(&m2, SIGNAL(dataChanged()),
this, SLOT(onM2Changed()));

resetChanged();
AutomatableModel::linkModels(&m1, &m1);
Expand Down

0 comments on commit d173f42

Please sign in to comment.