Skip to content

Commit d173f42

Browse files
committed
Fix wine detection
1 parent 9c2ccdf commit d173f42

File tree

3 files changed

+30
-20
lines changed

3 files changed

+30
-20
lines changed

Diff for: cmake/linux/package_linux.sh.in

+10-8
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,6 @@ unset LD_LIBRARY_PATH
110110
# Ensure linuxdeployqt can find shared objects
111111
export LD_LIBRARY_PATH="${APPDIR}"usr/lib/lmms/:"${APPDIR}"usr/lib/lmms/optional:"$LD_LIBRARY_PATH"
112112

113-
# Handle wine linking
114-
if [ -d "@WINE_32_LIBRARY_DIR@" ]; then
115-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_32_LIBRARY_DIRS@
116-
fi
117-
if [ -d "@WINE_64_LIBRARY_DIR@" ]; then
118-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_64_LIBRARY_DIRS@
119-
fi
120-
121113
# Move executables so linuxdeployqt can find them
122114
ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx"
123115
VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so"
@@ -131,6 +123,16 @@ mv "$ZYNLIB" "$ZYNBIN"
131123
mv "$VSTLIB32" "$VSTBIN32" || true
132124
mv "$VSTLIB64" "$VSTBIN64" || true
133125

126+
# Handle wine linking
127+
if [ -d "@WINE_32_LIBRARY_DIR@" ] && \
128+
ldd "$VSTBIN32" | grep "libwine\.so" | grep "not found"; then
129+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_32_LIBRARY_DIRS@"
130+
fi
131+
if [ -d "@WINE_64_LIBRARY_DIR@" ] && \
132+
ldd "$VSTBIN64" | grep "libwine\.so" | grep "not found"; then
133+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_64_LIBRARY_DIRS@"
134+
fi
135+
134136
# Patch the desktop file
135137
sed -i 's/.*Exec=.*/Exec=lmms.real/' "$DESKTOPFILE"
136138

Diff for: cmake/modules/FindWine.cmake

+14-6
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,19 @@ MACRO(_findwine_find_flags output expression result)
1111
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}")
1212
FOREACH(FLAG ${WINEBUILD_FLAGS})
1313
IF("${FLAG}" MATCHES "${expression}")
14-
SET(${result} "${FLAG}")
14+
LIST(APPEND ${result} "${FLAG}")
1515
ENDIF()
1616
ENDFOREACH()
1717
ENDMACRO()
1818

19+
MACRO(_regex_replace_foreach EXPRESSION REPLACEMENT RESULT INPUT)
20+
SET(${RESULT} "")
21+
FOREACH(ITEM ${INPUT})
22+
STRING(REGEX REPLACE "${EXPRESSION}" "${REPLACEMENT}" ITEM "${ITEM}")
23+
LIST(APPEND ${RESULT} "${ITEM}")
24+
ENDFOREACH()
25+
ENDMACRO()
26+
1927
LIST(APPEND CMAKE_PREFIX_PATH /opt/wine-stable /opt/wine-devel /opt/wine-staging /usr/lib/wine/)
2028

2129
FIND_PROGRAM(WINE_CXX
@@ -31,10 +39,10 @@ IF(WINE_CXX)
3139
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem" WINEGCC_INCLUDE_DIR)
3240
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "libwinecrt0\\.a.*" WINECRT_32)
3341
_findwine_find_flags("${WINEBUILD_OUTPUT_64}" "libwinecrt0\\.a.*" WINECRT_64)
34-
STRING(REGEX REPLACE "^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}")
35-
STRING(REGEX REPLACE "/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}")
36-
STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}")
37-
STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}")
42+
_regex_replace_foreach("^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}")
43+
_regex_replace_foreach("/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}")
44+
STRING(REGEX REPLACE "wine/libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}")
45+
STRING(REGEX REPLACE "wine/libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}")
3846

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

7886
FIND_PATH(WINE_INCLUDE_DIR wine/exception.h
79-
HINTS "${WINE_INCLUDE_HINT}"
87+
HINTS ${WINE_INCLUDE_HINT}
8088
)
8189

8290
SET(_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE})

Diff for: tests/src/core/AutomatableModelTest.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ class AutomatableModelTest : QTestSuite
3535
void resetChanged() { m1Changed = m2Changed = false; }
3636

3737
private slots: // helper slots
38-
void onM1Changed(Model* ) { m1Changed = true; }
39-
void onM2Changed(Model* ) { m2Changed = true; }
38+
void onM1Changed() { m1Changed = true; }
39+
void onM2Changed() { m2Changed = true; }
4040

4141
private slots: // tests
4242
//! Test that upcast and exact casts work,
@@ -62,10 +62,10 @@ private slots: // tests
6262
{
6363
BoolModel m1(false), m2(false);
6464

65-
QObject::connect(&m1, SIGNAL(dataChanged(Model*)),
66-
this, SLOT(onM1Changed(Model*)));
67-
QObject::connect(&m2, SIGNAL(dataChanged(Model*)),
68-
this, SLOT(onM2Changed(Model*)));
65+
QObject::connect(&m1, SIGNAL(dataChanged()),
66+
this, SLOT(onM1Changed()));
67+
QObject::connect(&m2, SIGNAL(dataChanged()),
68+
this, SLOT(onM2Changed()));
6969

7070
resetChanged();
7171
AutomatableModel::linkModels(&m1, &m1);

0 commit comments

Comments
 (0)