use pkg-config for qt5 compiler flags

6 days ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 26 Mar 2025 21:15:20 +0100 (6 days ago)
changeset 518
45ed276ba7a4
parent 517
ac867877999e
child 519
8884c7fbe4cb

use pkg-config for qt5 compiler flags

application/main.c file | annotate | diff | comparison | revisions
configure file | annotate | diff | comparison | revisions
make/project.xml file | annotate | diff | comparison | revisions
ui/qt/Makefile file | annotate | diff | comparison | revisions
ui/qt/qt4.pro file | annotate | diff | comparison | revisions
ui/qt/qt5.pro file | annotate | diff | comparison | revisions
ui/qt/toolkit.cpp file | annotate | diff | comparison | revisions
ui/ui/toolkit.h file | annotate | diff | comparison | revisions
--- a/application/main.c	Wed Mar 26 20:42:02 2025 +0100
+++ b/application/main.c	Wed Mar 26 21:15:20 2025 +0100
@@ -773,7 +773,16 @@
 
 #ifdef UI_QT
 
+void application_startup(UiEvent *event, void *data) {
+
+}
+
 int main(int argc, char **argv) {
+    ui_init("app1", 0, NULL);
+    ui_onstartup(application_startup, NULL);
+
+    ui_main();
+
     return 0;
 }
 
--- a/configure	Wed Mar 26 20:42:02 2025 +0100
+++ b/configure	Wed Mar 26 21:15:20 2025 +0100
@@ -311,27 +311,26 @@
         if [ -z "$lang_cpp" ] ; then
             break
         fi
+        if [ -z "$PKG_CONFIG" ]; then
+            break
+        fi
         if which qmake-qt5 > /dev/null ; then
             :
         else
             break
         fi
-        TEMP_CFLAGS="$TEMP_CFLAGS -DUI_QT5"
-        if tmp_flags=`qmake-qt5 -o - /dev/null | grep "DEFINES " | sed "s/DEFINES[ ]*=//g"` ; then
-            TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags"
+        if test_pkg_config "Qt5Widgets" "" "" "" ; then
+            TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags Qt5Widgets`"
+            TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs Qt5Widgets`"
         else
             break
         fi
-        if tmp_flags=`qmake-qt5 -o - /dev/null | grep "INCPATH " | sed "s/INCPATH[ ]*=//g"` ; then
-            TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags"
-        else
-            break
-        fi
-        if tmp_flags=`qmake-qt5 -o - /dev/null | grep "LIBS " | sed "s/LIBS[ ]*=//g"` ; then
-            TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags"
-        else
-            break
-        fi
+        TEMP_CFLAGS="$TEMP_CFLAGS -DUI_QT5"
+        cat >> $TEMP_DIR/make.mk << __EOF__
+# Dependency: qt5
+QMAKE = qmake-qt5
+QT_PRO_FILE = qt5.pro
+__EOF__
         print_check_msg "$dep_checked_qt5" "yes\n"
         dep_checked_qt5=1
         return 1
--- a/make/project.xml	Wed Mar 26 20:42:02 2025 +0100
+++ b/make/project.xml	Wed Mar 26 21:15:20 2025 +0100
@@ -46,9 +46,9 @@
 		<test>which qmake-qt5</test>
 		<lang>cpp</lang>
 		<cflags>-DUI_QT5</cflags>
-		<cflags exec="true">qmake-qt5 -o - /dev/null | grep "DEFINES " | sed "s/DEFINES[ ]*=//g"</cflags>
-		<cflags exec="true">qmake-qt5 -o - /dev/null | grep "INCPATH " | sed "s/INCPATH[ ]*=//g"</cflags>
-		<ldflags exec="true">qmake-qt5 -o - /dev/null | grep "LIBS " | sed "s/LIBS[ ]*=//g"</ldflags>
+		<pkgconfig>Qt5Widgets</pkgconfig>
+		<make>QMAKE = qmake-qt5</make>
+		<make>QT_PRO_FILE = qt5.pro</make>
 	</dependency>
 	
 	<dependency name="cocoa" platform="macos">
--- a/ui/qt/Makefile	Wed Mar 26 20:42:02 2025 +0100
+++ b/ui/qt/Makefile	Wed Mar 26 21:15:20 2025 +0100
@@ -30,8 +30,8 @@
 
 UI_QT_LIB = ../build/ui/qt/
 
-$(QT_MAKEFILE): qt/qt4.pro
-	qmake-qt4 -o - qt/qt4.pro > $(QT_MAKEFILE)
+$(QT_MAKEFILE): qt/$(QT_PRO_FILE)
+	$(QMAKE) -o - $< > $(QT_MAKEFILE)
 
 $(UI_LIB): $(QT_MAKEFILE) $(OBJ) FORCE
 	$(MAKE) -f $(QT_MAKEFILE)
--- a/ui/qt/qt4.pro	Wed Mar 26 20:42:02 2025 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-#
-# Copyright 2014 Olaf Wintermann. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-#   1. Redistributions of source code must retain the above copyright notice,
-#      this list of conditions and the following disclaimer.
-#
-#   2. Redistributions in binary form must reproduce the above copyright
-#      notice, this list of conditions and the following disclaimer in the
-#      documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-
-TARGET = uitk
-TEMPLATE = lib
-CONFIG += staticlib warn_off debug
-DESTDIR = ../build/lib
-MOC_DIR = ../build/ui/qt
-OBJECTS_DIR = ../build/ui/qt
-
-DEFINES += UI_QT4
-
-SOURCES += toolkit.cpp
-SOURCES += window.cpp
-SOURCES += menu.cpp
-SOURCES += toolbar.cpp
-SOURCES += stock.cpp
-SOURCES += container.cpp
-SOURCES += text.cpp
-SOURCES += model.cpp
-SOURCES += tree.cpp
-SOURCES += button.cpp
-SOURCES += label.cpp
-SOURCES += graphics.cpp
-
-HEADERS += toolkit.h
-HEADERS += window.h
-HEADERS += menu.h
-HEADERS += toolbar.h
-HEADERS += stock.h
-HEADERS += container.h
-HEADERS += text.h
-HEADERS += model.h
-HEADERS += tree.h
-HEADERS += button.h
-HEADERS += label.h
-HEADERS += graphics.h
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/qt/qt5.pro	Wed Mar 26 21:15:20 2025 +0100
@@ -0,0 +1,65 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2014 Olaf Wintermann. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+#   1. Redistributions of source code must retain the above copyright notice,
+#      this list of conditions and the following disclaimer.
+#
+#   2. Redistributions in binary form must reproduce the above copyright
+#      notice, this list of conditions and the following disclaimer in the
+#      documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+TARGET = uitk
+TEMPLATE = lib
+CONFIG += staticlib warn_off debug
+DESTDIR = ../build/lib
+MOC_DIR = ../build/ui/qt
+OBJECTS_DIR = ../build/ui/qt
+
+QT += core gui widgets
+
+DEFINES += UI_QT5
+
+SOURCES += toolkit.cpp
+SOURCES += window.cpp
+SOURCES += menu.cpp
+SOURCES += toolbar.cpp
+SOURCES += stock.cpp
+SOURCES += container.cpp
+SOURCES += text.cpp
+SOURCES += model.cpp
+SOURCES += tree.cpp
+SOURCES += button.cpp
+SOURCES += label.cpp
+SOURCES += graphics.cpp
+
+HEADERS += toolkit.h
+HEADERS += window.h
+HEADERS += menu.h
+HEADERS += toolbar.h
+HEADERS += stock.h
+HEADERS += container.h
+HEADERS += text.h
+HEADERS += model.h
+HEADERS += tree.h
+HEADERS += button.h
+HEADERS += label.h
+HEADERS += graphics.h
+
--- a/ui/qt/toolkit.cpp	Wed Mar 26 20:42:02 2025 +0100
+++ b/ui/qt/toolkit.cpp	Wed Mar 26 21:15:20 2025 +0100
@@ -38,10 +38,18 @@
 
 static const char *application_name;
 
+static ui_callback   startup_func;
+static void          *startup_data;
+static ui_callback   open_func;
+void                 *open_data;
+static ui_callback   exit_func;
+void                 *exit_data;
+
 static ui_callback appclose_fnc;
 static void *appclose_udata;
 
-//static QApplication app(qargc, qargv);
+static int is_toplevel_realized = 0;
+
 int app_argc;
 char **app_argv;
 QApplication *application = NULL;
@@ -63,13 +71,19 @@
     return application_name;
 }
 
-void ui_exitfunc(ui_callback f, void *udata) {
-    appclose_fnc = f;
-    appclose_udata = udata;
+void ui_onstartup(ui_callback f, void *userdata) {
+    startup_func = f;
+    startup_data = userdata;
 }
 
-void ui_openfilefunc(ui_callback f, void *userdata) {
-    // OS X only
+void ui_onopen(ui_callback f, void *userdata) {
+    open_func = f;
+    open_data = userdata;
+}
+
+void ui_onexit(ui_callback f, void *userdata) {
+    exit_func = f;
+    exit_data = userdata;
 }
 
 void ui_main() {
--- a/ui/ui/toolkit.h	Wed Mar 26 20:42:02 2025 +0100
+++ b/ui/ui/toolkit.h	Wed Mar 26 21:15:20 2025 +0100
@@ -65,9 +65,11 @@
 #define UI_QT
 
 #ifdef	__cplusplus
+
 #include <QApplication>
 #include <QWidget>
 #include <QMenu>
+
 #define UIWIDGET QWidget*
 #define UIWINDOW QWidget*
 #define UIMENU   QMenu*

mercurial