[ocaml] use glib from gtk3 if gtk2 is not found (#3290)

Gtk3 doesn't support all features of gtk2 (or have a different interface), so if only gtk3 is found, GUI tools are not compiled, only CLI tools based only on glib.
If no gtk found, tools based on glib/gtk are not compiled.
Remove two old tools not used and not supported by gtk3.
This commit is contained in:
Gautier Hattenberger
2024-06-05 18:10:51 +02:00
committed by GitHub
parent 308a698bf4
commit c158c856f3
13 changed files with 87 additions and 914 deletions
+17 -2
View File
@@ -30,8 +30,8 @@ endif
endif
OCAML = ocaml
OCAMLC = ocamlfind ocamlc -safe-string -g
OCAMLOPT = ocamlfind ocamlopt -safe-string -g
OCAMLC = ocamlfind ocamlc -safe-string -g -thread
OCAMLOPT = ocamlfind ocamlopt -safe-string -g -thread
OCAMLDEP = ocamlfind ocamldep
OCAMLMKLIB = ocamlmklib
OCAMLLEX=ocamllex
@@ -50,3 +50,18 @@ OCAMLXDLL = -dllpath $(LIBPPRZDIR),$(LIBPPRZLINKDIR)
OCAMLPATH:=$(shell echo $(LIBPPRZLINKDIR):$(LIBPPRZDIR):$(OCAMLPATH))
export OCAMLPATH
# Test lablgtk version, use V2 if available, V3 otherwise
# disable ocaml/gtk tools if none ?
LABLGTK2_VER = $(shell ocamlfind query -p-format lablgtk2 2>/dev/null)
LABLGTK3_VER = $(shell ocamlfind query -p-format lablgtk3 2>/dev/null)
ifneq ($(LABLGTK2_VER),)
USE_LABELGTK = $(LABLGTK2_VER)
else
ifneq ($(LABLGTK3_VER),)
USE_LABELGTK = $(LABLGTK3_VER)
else
USE_LABELGTK=
endif
endif
+11 -2
View File
@@ -29,9 +29,17 @@ include ../../Makefile.ocaml
OCAMLPATH:=$(shell echo $(PAPARAZZI_SRC)/sw/ground_segment/cockpit/lib:$(OCAMLPATH))
export OCAMLPATH
ifneq ($(USE_LABELGTK),lablgtk2)
all :
@echo Skipping legacy GCS build \(missing lablgtk2\)
opt :
@echo Skipping legacy GCS.opt build \(missing lablgtk2\)
else
INCLUDES=
PKG = -package pprzlink,gcslib
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprzlink,gcslib,pprz
PKG = -package lablgtk2,pprzlink,gcslib
LINKPKG = $(PKG) -linkpkg -dllpath-pkg lablgtk2,pprzlink,gcslib,pprz
LABLGTK2INIT = $(shell ocamlfind query -p-format lablgtk2.init 2>/dev/null)
ifeq ($(LABLGTK2INIT),)
@@ -68,6 +76,7 @@ all : $(MAIN)
opt : $(MAIN).opt
endif
endif
endif
+2 -2
View File
@@ -47,8 +47,8 @@ PKGCOMMON=pprzlink
XINCLUDES=
XPKGCOMMON=pprzlink,xml-light,glibivy,$(LABLGTK2GNOMECANVAS),lablgtk2.glade
PKG = -package pprzlink,pprz.xlib
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz.xlib,pprzlink
PKG = -package lablgtk2,pprzlink,pprz.xlib
LINKPKG = $(PKG) -linkpkg -dllpath-pkg lablgtk2,pprz.xlib,pprzlink
XSRC = contrastLabel.ml acIcon.ml wind_sock.ml gtk_papget_editor.ml gtk_papget_text_editor.ml gtk_papget_gauge_editor.ml gtk_papget_led_editor.ml papget_common.ml papget_renderer.ml papget.ml mapCanvas.ml mapWaypoints.ml mapTrack.ml mapGoogle.ml mapIGN.ml ml_gtk_drag.o xmlEdit.ml mapFP.ml
XCMO = $(XSRC:.ml=.cmo)
+6 -2
View File
@@ -32,8 +32,8 @@ CAML_LD_LIBRARY_PATH := /usr/lib/$(shell uname -m)-linux-gnu/:$(CAML_LD_LIBRARY_
export CAML_LD_LIBRARY_PATH
PKG = -package pprz,glibivy
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink
PKG = -package pprz,glibivy,$(USE_LABELGTK)
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink,$(USE_LABELGTK)
GLIB_CFLAGS = -Wall -fPIC $(shell pkg-config glib-2.0 --cflags)
GLIB_LDFLAGS = $(shell pkg-config glib-2.0 --libs)
@@ -71,7 +71,11 @@ else
endif
endif
ifneq ($(USE_LABELGTK),)
all: test_stick input2ivy
else
all: test_stick
endif
test_stick: test_sdl_stick.o
@echo BUILD $@
+11 -2
View File
@@ -35,9 +35,14 @@ else
LIBRARYS =
endif
GTK2_INC = $(shell pkg-config gtk+-2.0 --cflags 2> /dev/null)
GTK2_LDFLAGS = $(shell pkg-config gtk+-2.0 --libs 2> /dev/null)
ifneq ($(GTK2_INC),)
CFLAGS += -Wall -fPIC -g
GTK_CFLAGS = $(shell pkg-config gtk+-2.0 --cflags) -DGTK_DISABLE_DEPRECATED
GTK_LDFLAGS = $(shell pkg-config gtk+-2.0 --libs) $(shell pkg-config --libs ivy-glib) $(shell pcre-config --libs) -fPIC
GTK_CFLAGS = $(GTK2_INC) -DGTK_DISABLE_DEPRECATED
GTK_LDFLAGS = $(GTK2_LDFLAGS) $(shell pkg-config --libs ivy-glib) $(shell pcre-config --libs) -fPIC
endif
GLIBIVY_CFLAGS = $(shell pkg-config --cflags ivy-glib)
GLIBIVY_LDFLAGS = $(shell pkg-config --libs ivy-glib) $(shell pcre-config --libs)
@@ -57,7 +62,11 @@ GLIB_LDFLAGS = $(shell pkg-config glib-2.0 --libs) -lglibivy -lm $(shell pcre-co
INCLUDES += $(shell pkg-config glib-2.0 --cflags) -I$(PAPARAZZI_SRC)/sw/airborne/ -I$(PAPARAZZI_SRC)/sw/include/ $(IVY_INC)
INCLUDES += -I$(PAPARAZZI_SRC)/sw/ext/libsbp/c/include/ -I$(PAPARAZZI_SRC)/sw/airborne/modules/gps/librtcm3/ -I$(PAPARAZZI_SRC)/sw/airborne/arch/linux/
ifeq ($(GTK2_INC),)
all: davis2ivy kestrel2ivy sbp2ivy rtcm2ivy ublox2ivy
else
all: davis2ivy kestrel2ivy sbp2ivy video_synchronizer sbs2ivy rtcm2ivy ublox2ivy
endif
clean:
$(Q)rm -f *.o davis2ivy kestrel2ivy sbp2ivy video_synchronizer sbs2ivy rtcm2ivy ublox2ivy
+10 -18
View File
@@ -29,21 +29,24 @@ CONF = ../../../conf
VAR = ../../../var
INCLUDES=
PKG = -package glibivy,pprz
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink
XPKG = -package pprz.xlib
XLINKPKG = $(XPKG) -linkpkg -dllpath-pkg pprz.xlib,pprzlink
PKG = -package glibivy,pprz,$(USE_LABELGTK)
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink,$(USE_LABELGTK)
XPKG = -package pprz.xlib,$(USE_LABELGTK)
XLINKPKG = $(XPKG) -linkpkg -dllpath-pkg pprz.xlib,pprzlink,$(USE_LABELGTK)
SERVERCMO = server_globals.cmo aircraft_server.cmo wind.cmo airprox.cmo kml.cmo parse_messages_v1.ml intruder.cmo server.cmo
SERVERCMX = $(SERVERCMO:.cmo=.cmx)
all: link server ivy_tcp_aircraft ivy_tcp_controller broadcaster ivy2udp ivy2serial app_server ivy2nmea gpsd2ivy gtk_tools
all: link server messages ivy_tcp_aircraft ivy_tcp_controller broadcaster ivy2udp ivy2serial ivy_serial_bridge app_server ivy2nmea gpsd2ivy
ifeq ($(USE_LABELGTK),lablgtk2)
gtk_tools: messages
endif
opt: server.opt
clean:
$(Q)rm -f link server messages *.bak *~ core *.o .depend *.opt *.out *.cm* ivy_tcp_aircraft ivy_tcp_controller broadcaster ivy2udp ivy2serial ivy_serial_bridge app_server gpsd2ivy c_ivy_client_example_1 c_ivy_client_example_2 c_ivy_client_example_3 ivy2nmea
$(Q)rm -f link server messages *.bak *~ core *.o .depend *.opt *.out *.cm* ivy_tcp_aircraft ivy_tcp_controller broadcaster ivy2udp ivy2serial ivy_serial_bridge app_server gpsd2ivy c_ivy_client_example_1 c_ivy_client_example_2 ivy2nmea
messages : messages.cmo $(LIBPPRZCMA) $(LIBPPRZLINKCMA)
@echo OL $@
@@ -105,9 +108,6 @@ ivy2serial : ivy2serial.cmo $(LIBPPRZCMA) $(LIBPPRZLINKCMA)
CC = gcc
GTK_CFLAGS = $(shell pkg-config gtk+-2.0 --cflags) -DGTK_DISABLE_DEPRECATED
GTK_LDFLAGS = $(shell pkg-config gtk+-2.0 --libs) $(shell pcre-config --libs)
GLIBIVY_CFLAGS = -Wall -fPIC $(shell pkg-config --cflags ivy-glib)
GLIBIVY_LDFLAGS = $(shell pkg-config --libs ivy-glib) $(shell pcre-config --libs)
@@ -143,15 +143,7 @@ c_ivy_client_example_1: c_ivy_client_example_1.c Makefile
c_ivy_client_example_2: c_ivy_client_example_2.c Makefile
$(CC) $(GLIBIVY_CFLAGS) -o $@ $< $(GLIBIVY_LDFLAGS)
c_ivy_client_example_3: c_ivy_client_example_3.c Makefile
$(CC) $(GLIBIVY_CFLAGS) $(GTK_CFLAGS) -o $@ $< $(GLIBIVY_LDFLAGS) $(GTK_LDFLAGS)
ivy_serial_bridge: ivy_serial_bridge.c Makefile
@echo OL $@
$(Q)$(CC) $(GLIBIVY_CFLAGS) $(GTK_CFLAGS) -o $@ $< $(GLIBIVY_LDFLAGS) $(GTK_LDFLAGS)
.PHONY: all opt clean
.PHONY: all opt clean gtk_tools
#
# Dependencies
@@ -1,38 +0,0 @@
#include <glib.h>
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include <Ivy/ivy.h>
#include <Ivy/ivyglibloop.h>
static void on_button_clicked (GtkWidget *widget, gpointer data) {
g_message("hello world");
int foo = 42;
IvySendMsg("ME HELLO_WORLD 1234 5678 %d", foo);
}
int main ( int argc, char** argv) {
gtk_init(&argc, &argv);
IvyInit ("Example1", "Example1 READY", NULL, NULL, NULL, NULL);
IvyStart("127.255.255.255");
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "HelloWorld");
GtkWidget* button = gtk_toggle_button_new_with_label( "ClickMe" );
gtk_container_add (GTK_CONTAINER (window), button);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_button_clicked), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,5 +1,5 @@
description = "Paparazzi UAS package"
requires = "unix,str,pprzlink,xml-light,lablgtk2,glibivy,netclient,nettls-gnutls"
requires = "unix,str,pprzlink,xml-light,glibivy,netclient,nettls-gnutls"
version = "1.0"
directory = ""
+6 -2
View File
@@ -30,16 +30,20 @@ include ../../Makefile.ocaml
VERBOSITY =
INCLUDES=
PKGCOMMON=pprzlink,xml-light,netclient,nettls-gnutls,glibivy,lablgtk2
PKGCOMMON=pprzlink,xml-light,netclient,nettls-gnutls,glibivy
XINCLUDES=
XPKGCOMMON=pprzlink,xml-light,glibivy,lablgtk2
XPKGCOMMON=pprzlink,xml-light,glibivy,$(USE_LABELGTK)
SRC = fig.ml debug.ml base64.ml serial.ml ocaml_tools.ml expr_syntax.ml expr_parser.ml expr_lexer.ml extXml.ml env.ml xml2h.ml latlong.ml egm96.ml srtm.ml http.ml gm.ml iGN.ml geometry_2d.ml cserial.o ubx.ml xmlCom.ml os_calls.ml editAirframe.ml defivybus.ml fp_proc.ml quaternion.ml
SRC += gen_common.ml radio.ml settings.ml module.ml flight_plan.ml autopilot.ml airframe.ml telemetry.ml aircraft.ml
CMO = $(SRC:.ml=.cmo)
CMX = $(SRC:.ml=.cmx)
ifeq ($(USE_LABELGTK),lablgtk2)
XSRC = gtk_tools.ml
else
XSRC =
endif
XCMO = $(XSRC:.ml=.cmo)
XCMX = $(XSRC:.ml=.cmx)
+8 -4
View File
@@ -25,21 +25,25 @@ Q=@
include ../Makefile.ocaml
INCLUDES=
PKG = -package glibivy,pprz
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink
PKG = -package glibivy,pprz,$(USE_LABELGTK)
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink,$(USE_LABELGTK)
LABLGTK2GLADE = $(shell ocamlfind query -p-format lablgtk2.glade 2>/dev/null)
ifeq ($(USE_LABELGTK),lablgtk2)
# only compile it lablgtk2.glade is installed
ifeq ($(LABLGTK2GLADE),)
XPKG = -package pprz.xlib
XPKG = -package pprz.xlib,lablgtk2
XLINKPKG = $(XPKG) -linkpkg -dllpath-pkg pprz.xlib,pprzlink
all : play plotter sd2log plotprofile openlog2tlm sdlogger_download
else
XPKG = -package pprz.xlib,lablgtk2.glade
XPKG = -package lablgtk2,pprz.xlib,lablgtk2.glade
XLINKPKG = $(XPKG) -linkpkg -dllpath-pkg pprz.xlib,pprzlink
all : play plotter logplotter sd2log plotprofile openlog2tlm sdlogger_download
endif
else # no gtk2
all: sd2log plotprofile openlog2tlm sdlogger_download
endif
play : log_file.cmo play_core.cmo play.cmo $(LIBPPRZCMA) $(LIBPPRZLINKCMA)
+6 -2
View File
@@ -28,8 +28,8 @@ include ../Makefile.ocaml
OCAMLC += -g
INCLUDES =
PKG = -package glibivy,pprz
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink
PKG = -package glibivy,pprz,$(USE_LABELGTK)
LINKPKG = $(PKG) -linkpkg -dllpath-pkg pprz,pprzlink,$(USE_LABELGTK)
AIRBORNE = ../airborne
VARINCLUDE=$(PAPARAZZI_HOME)/var/include
@@ -37,7 +37,11 @@ ACINCLUDE = $(PAPARAZZI_HOME)/var/$(AIRCRAFT)
CAML_CFLAGS = -I $(shell $(OCAMLC) -where)
ifeq ($(USE_LABELGTK),lablgtk2)
all : gaia
else
all :
endif
gaia : gaia.cmo $(LIBPPRZCMA) $(LIBPPRZLINKCMA)
@echo OL $@
+9 -6
View File
@@ -32,6 +32,7 @@ else
MKTEMP = mktemp
endif
ifeq ($(USE_LABELGTK),lablgtk2)
LABLGTK2GNOMEUI = $(shell ocamlfind query -p-format lablgtk2-gnome.gnomeui 2>/dev/null)
ifeq ($(LABLGTK2GNOMEUI),)
LABLGTK2GNOMEUI = $(shell ocamlfind query -p-format lablgtk2.gnomeui 2>/dev/null)
@@ -40,18 +41,20 @@ endif
LABLGTK2GLADE = $(shell ocamlfind query -p-format lablgtk2.glade 2>/dev/null)
INCLUDES =
XPKG = -package pprz.xlib,lablgtk2.glade,$(LABLGTK2GNOMEUI)
XLINKPKG = $(XPKG) -linkpkg -dllpath-pkg pprz.xlib,pprzlink
XPKG = -package lablgtk2,pprz.xlib,lablgtk2.glade,$(LABLGTK2GNOMEUI)
XLINKPKG = $(XPKG) -linkpkg -dllpath-pkg lablgtk2,pprz.xlib,pprzlink
PAPARAZZICENTERCMO = gtk_pc.cmo gtk_process.cmo pc_common.cmo pc_control_panel.cmo pc_aircraft.cmo paparazzicenter.cmo
# only compile it lablgtk2.glade is installed
ifeq ($(LABLGTK2GLADE),)
ifneq ($(LABLGTK2GLADE),)
all: paparazzicenter
endif
else # no gtk2
all :
@echo Skipping legacy Paparazzi Center build
else
all: paparazzicenter
endif
paparazzicenter : $(PAPARAZZICENTERCMO) $(LIBPPRZCMA) $(LIBPPRZLINKCMA) $(XLIBPPRZCMA)