[vlc-commits] [Git][videolan/vlc][master] 3 commits: configure: factorize qmake makefile patching

Thomas Guillem (@tguillem) gitlab at videolan.org
Wed May 29 15:08:34 UTC 2024



Thomas Guillem pushed to branch master at VideoLAN / VLC


Commits:
1cf1d94d by Pierre Lamot at 2024-05-29T17:06:58+02:00
configure: factorize qmake makefile patching

- - - - -
d55f9d65 by Pierre Lamot at 2024-05-29T17:07:06+02:00
configure: fix library path extracted from qmake

- - - - -
4473bb37 by Pierre Lamot at 2024-05-29T17:07:09+02:00
configure: extract LDFLAGS from qmake

- - - - -


2 changed files:

- configure.ac
- modules/gui/qt/Makefile.am


Changes:

=====================================
configure.ac
=====================================
@@ -4019,29 +4019,41 @@ AS_IF([test "${enable_qt}" != "no"], [
   QT_PKG_ERRORS=$(${QMAKE} ${srcdir}/modules/gui/qt/qt6.pro -o ${ac_pwd}/modules/gui/qt/qmake-qt 2>&1)
   ac_status=$?
   AS_IF([test $ac_status = 0 && test -f ${ac_pwd}/modules/gui/qt/qmake-qt],[
-      echo "get_cflags:"                    >> ${ac_pwd}/modules/gui/qt/qmake-qt
-      echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-qt
-      echo "get_libs:"                      >> ${ac_pwd}/modules/gui/qt/qmake-qt
-      echo '	echo $(LIBS) | sed -e "s@/[[^ ]]*/lib\([[^ ]]*\)\.so at -l\1 at g"' >> ${ac_pwd}/modules/gui/qt/qmake-qt
+      echo "get_cflags:"                    > ${ac_pwd}/modules/gui/qt/qmake-common.mk
+      echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-common.mk
+      echo "get_libs:"                      >> ${ac_pwd}/modules/gui/qt/qmake-common.mk
+      dnl transform /foo/bar/libbaz.so arguments to -L/foo/bar -lbaz
+      dnl RS: each arguments (space separated) are treated as a new line
+      dnl FS: split fields using /[^/]* to extract the file basepath ($1)
+      dnl  /lib.*\.so/ lines (arguments) will add -Lxxx if this is not the current path (p), then transform into a -lxxx argument
+      dnl other arguments are kept as-is
+      echo '	echo $(LIBS) | awk '\''BEGIN{FS="/[[^/]]*$$";RS=" ";ORS=" "}{if($$0 ~ /\/lib.*\.so/){ if(p != $$1){ print "-L" $$1; p=$$1}; sub(/.*\/lib/, "-l"); sub(/\.so.*/, "")}; print $$0}'\' >> ${ac_pwd}/modules/gui/qt/qmake-common.mk
+      echo 'get_ldflags:'                   >> ${ac_pwd}/modules/gui/qt/qmake-common.mk
+      echo '	echo $(LFLAGS)'             >> ${ac_pwd}/modules/gui/qt/qmake-common.mk
+
+      echo "include ${ac_pwd}/modules/gui/qt/qmake-common.mk"  >> ${ac_pwd}/modules/gui/qt/qmake-qt
+
       AC_MSG_RESULT([yes])
       QT_LIBS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-qt get_libs)
       QT_CFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-qt get_cflags)
+      QT_LDFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-qt get_ldflags)
       AC_SUBST([QT_LIBS])
       AC_SUBST([QT_CFLAGS])
+      AC_SUBST([QT_LDFLAGS])
 
       AC_MSG_CHECKING([for Qt6WaylandClient])
       (${QMAKE} ${srcdir}/modules/gui/qt/wayland.pro -o ${ac_pwd}/modules/gui/qt/qmake-wayland) 2>/dev/null
       ac_status=$?
       AS_IF([test $ac_status = 0 && test -f ${ac_pwd}/modules/gui/qt/qmake-wayland],[
-        echo 'get_cflags:'                     >> ${ac_pwd}/modules/gui/qt/qmake-wayland
-        echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-wayland
-        echo 'get_libs:'                       >> ${ac_pwd}/modules/gui/qt/qmake-wayland
-        echo '	echo $(LIBS) | sed -e "s@/[[^ ]]*/lib\([[^ ]]*\)\.so at -l\1 at g"' >> ${ac_pwd}/modules/gui/qt/qmake-wayland
+        echo "include ${ac_pwd}/modules/gui/qt/qmake-common.mk"  >> ${ac_pwd}/modules/gui/qt/qmake-wayland
+
         AC_MSG_RESULT([yes])
         QT_WAYLAND_LIBS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-wayland get_libs)
         QT_WAYLAND_CFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-wayland get_cflags)
+        QT_WAYLAND_LDFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-wayland get_ldflags)
         AC_SUBST([QT_WAYLAND_LIBS])
         AC_SUBST([QT_WAYLAND_CFLAGS])
+        AC_SUBST([QT_WAYLAND_LDFLAGS])
         have_qt_wayland="yes"
       ],[
         AC_MSG_RESULT([no])
@@ -4091,15 +4103,14 @@ AS_IF([test "${enable_qt}" != "no"], [
         --qtconf "${with_qtconf}" \
         --modules QtTest="" \
         >&AS_MESSAGE_FD ], [
-            echo 'get_cflags:'                     >> ${ac_pwd}/modules/gui/qt/qmake-quicktest
-            echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-quicktest
-            echo 'get_libs:'                       >> ${ac_pwd}/modules/gui/qt/qmake-quicktest
-            echo '	echo $(LIBS) | sed -e "s@/[[^ ]]*/lib\([[^ ]]*\)\.so at -l\1 at g"' >> ${ac_pwd}/modules/gui/qt/qmake-quicktest
+            echo "include ${ac_pwd}/modules/gui/qt/qmake-common.mk"        >> ${ac_pwd}/modules/gui/qt/qmake-quicktest
             AC_MSG_RESULT([yes])
             QT_QUICK_TEST_LIBS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-quicktest get_libs)
             QT_QUICK_TEST_CFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-quicktest get_cflags)
+            QT_QUICK_TEST_LDFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-quicktest get_ldflags)
             AC_SUBST([QT_QUICK_TEST_LIBS])
             AC_SUBST([QT_QUICK_TEST_CFLAGS])
+            AC_SUBST([QT_QUICK_TEST_LDFLAGS])
             have_qt_quick_test="yes"
         ], [
             AC_MSG_RESULT([no])
@@ -4120,15 +4131,14 @@ AS_IF([test "${enable_qt}" != "no"], [
       (${QMAKE} ${srcdir}/modules/gui/qt/private-core.pro -o ${ac_pwd}/modules/gui/qt/qmake-private-core) 2>/dev/null
       ac_status=$?
       AS_IF([test $ac_status = 0 && test -f ${ac_pwd}/modules/gui/qt/qmake-private-core],[
-        echo 'get_cflags:'                     >> ${ac_pwd}/modules/gui/qt/qmake-private-core
-        echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-private-core
-        echo 'get_libs:'                       >> ${ac_pwd}/modules/gui/qt/qmake-private-core
-        echo '	echo $(LIBS) | sed -e "s@/[[^ ]]*/lib\([[^ ]]*\)\.so at -l\1 at g"' >> ${ac_pwd}/modules/gui/qt/qmake-private-core
+        echo "include ${ac_pwd}/modules/gui/qt/qmake-common.mk"        >> ${ac_pwd}/modules/gui/qt/qmake-private-core
         AC_MSG_RESULT([yes])
         QT_CORE_PRIVATE_LIBS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-core get_libs)
         QT_CORE_PRIVATE_CFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-core get_cflags)
+        QT_CORE_PRIVATE_LDFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-core get_cflags)
         AC_SUBST([QT_CORE_PRIVATE_LIBS])
         AC_SUBST([QT_CORE_PRIVATE_CFLAGS])
+        AC_SUBST([QT_CORE_PRIVATE_LDFLAGS])
         have_qt_core_private="yes"
       ],[
         AC_MSG_RESULT([no])
@@ -4139,15 +4149,15 @@ AS_IF([test "${enable_qt}" != "no"], [
       (${QMAKE} ${srcdir}/modules/gui/qt/private-gui.pro -o ${ac_pwd}/modules/gui/qt/qmake-private-gui) 2>/dev/null
       ac_status=$?
       AS_IF([test $ac_status = 0 && test -f ${ac_pwd}/modules/gui/qt/qmake-private-gui],[
-        echo 'get_cflags:'                     >> ${ac_pwd}/modules/gui/qt/qmake-private-gui
-        echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-private-gui
-        echo 'get_libs:'                       >> ${ac_pwd}/modules/gui/qt/qmake-private-gui
-        echo '	echo $(LIBS) | sed -e "s@/[[^ ]]*/lib\([[^ ]]*\)\.so at -l\1 at g"' >> ${ac_pwd}/modules/gui/qt/qmake-private-gui
+        echo "include ${ac_pwd}/modules/gui/qt/qmake-common.mk"        >> ${ac_pwd}/modules/gui/qt/qmake-private-gui
+
         AC_MSG_RESULT([yes])
         QT_GUI_PRIVATE_LIBS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-gui get_libs)
         QT_GUI_PRIVATE_CFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-gui get_cflags)
+        QT_GUI_PRIVATE_LDFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-gui get_ldflags)
         AC_SUBST([QT_GUI_PRIVATE_LIBS])
         AC_SUBST([QT_GUI_PRIVATE_CFLAGS])
+        AC_SUBST([QT_GUI_PRIVATE_LDFLAGS])
         have_qt_gui_private="yes"
       ],[
         AC_MSG_RESULT([no])
@@ -4158,15 +4168,14 @@ AS_IF([test "${enable_qt}" != "no"], [
       (${QMAKE} ${srcdir}/modules/gui/qt/private-quick.pro -o ${ac_pwd}/modules/gui/qt/qmake-private-quick) 2>/dev/null
       ac_status=$?
       AS_IF([test $ac_status = 0 && test -f ${ac_pwd}/modules/gui/qt/qmake-private-quick],[
-        echo 'get_cflags:'                     >> ${ac_pwd}/modules/gui/qt/qmake-private-quick
-        echo '	$(info $(DEFINES) $(INCPATH))' >> ${ac_pwd}/modules/gui/qt/qmake-private-quick
-        echo 'get_libs:'                       >> ${ac_pwd}/modules/gui/qt/qmake-private-quick
-        echo '	echo $(LIBS) | sed -e "s@/[[^ ]]*/lib\([[^ ]]*\)\.so at -l\1 at g"' >> ${ac_pwd}/modules/gui/qt/qmake-private-quick
+        echo "include ${ac_pwd}/modules/gui/qt/qmake-common.mk"        >> ${ac_pwd}/modules/gui/qt/qmake-private-quick
         AC_MSG_RESULT([yes])
         QT_QUICK_PRIVATE_LIBS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-quick get_libs)
         QT_QUICK_PRIVATE_CFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-quick get_cflags)
+        QT_QUICK_PRIVATE_LDFLAGS=$(cd ${ac_pwd}/modules/gui/qt && make -s -f qmake-private-quick get_ldflags)
         AC_SUBST([QT_QUICK_PRIVATE_LIBS])
         AC_SUBST([QT_QUICK_PRIVATE_CFLAGS])
+        AC_SUBST([QT_QUICK_PRIVATE_LDFLAGS])
         have_qt_declarative_private="yes"
       ],[
         AC_MSG_RESULT([no])
@@ -4182,6 +4191,7 @@ AS_IF([test "${enable_qt}" != "no"], [
       have_qt="no"
     ])
   ])
+  rm -f ${ac_pwd}/modules/gui/qt/qmake-common.mk
   rm -f ${ac_pwd}/modules/gui/qt/qmake-qt
   rm -f ${ac_pwd}/modules/gui/qt/.qmake.stash
     AS_IF([test "${have_qt}" = "no"],[


=====================================
modules/gui/qt/Makefile.am
=====================================
@@ -24,6 +24,7 @@ vlc_qt_check_SOURCES = vlc-qt-check.cpp plugins.hpp
 vlc_qt_check_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt)
 vlc_qt_check_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_qt)
 vlc_qt_check_LDADD = $(vlc_qt_libs)
+vlc_qt_check_LDFLAGS = $(AM_LDFLAGS) $(QT_LDFLAGS)
 
 libqt_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_qt) \
 	-DQT_STRICT_ITERATORS \
@@ -41,7 +42,7 @@ libqt_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_qt) \
 
 libqt_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) $(CXXFLAGS_qt)
 libqt_plugin_la_LIBADD = $(vlc_qt_libs)
-libqt_plugin_la_LDFLAGS = $(AM_LDFLAGS)
+libqt_plugin_la_LDFLAGS = $(AM_LDFLAGS) $(QT_LDFLAGS)
 if HAVE_DARWIN
 libqt_plugin_la_LDFLAGS += -Wl,-framework,Cocoa
 endif
@@ -57,8 +58,10 @@ endif
 if HAVE_QT_WAYLAND
 libqt_plugin_la_CPPFLAGS += $(QT_WAYLAND_CFLAGS)
 libqt_plugin_la_LIBADD += $(QT_WAYLAND_LIBS)
+libqt_plugin_la_LDFLAGS += $(QT_WAYLAND_LDFLAGS)
 vlc_qt_check_CPPFLAGS += $(QT_WAYLAND_CFLAGS) -DQT_HAS_WAYLAND
 vlc_qt_check_LDADD += $(QT_WAYLAND_LIBS)
+vlc_qt_check_LDFLAGS += $(QT_WAYLAND_LDFLAGS)
 endif
 
 if HAVE_WIN32
@@ -1250,6 +1253,7 @@ nodist_base_model_test_SOURCES = util/base_model.moc.cpp \
 
 base_model_test_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt)
 base_model_test_LDADD = $(QT_LIBS) $(LIBS_qt)
+base_model_test_LDFLAGS = $(AM_LDFLAGS) $(QT_LDFLAGS)
 check_PROGRAMS = base_model_test
 TESTS = base_model_test
 
@@ -1264,6 +1268,7 @@ nodist_qml_test_SOURCES += qmlcache_loader.cpp $(libqt_plugin_la_QML)
 endif
 qml_test_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt) ${QT_QUICK_TEST_CFLAGS} -DQUICK_TEST_SOURCE_DIR="\"${srcdir}/tests\""
 qml_test_LDADD = $(QT_INDIRECT_LIBS) ${QT_QUICK_TEST_LIBS} $(QT_LIBS) $(LIBS_qt)
+qml_test_LDFLAGS = $(AM_LDFLAGS) $(QT_QUICK_TEST_LDFLAGS)
 check_PROGRAMS += qml_test
 EXTRA_DIST += tests/tst_FSM.qml
 TESTS += tests/tst_FSM.qml



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/2d97c56afa67b54249d958096ef4ebce96ceaf62...4473bb37f965b66519b02d2cfa87ddb04496d4ba

-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/2d97c56afa67b54249d958096ef4ebce96ceaf62...4473bb37f965b66519b02d2cfa87ddb04496d4ba
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list