Using https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git to download the source code.
Added compile option to compile qrtr support.
Enabled lto and additional gcc flags for perfomance and less size.
Modified to use meson as upstream has abandoned autotools.
Removed BUILD_PARALLEL options. These are default with ninja/meson.
Signed-off-by: Maxim Anisimov <redacted>
menu "Configuration"
-depends on PACKAGE_modemmanager
+ depends on PACKAGE_modemmanager
- config MODEMMANAGER_WITH_MBIM
- bool "Include MBIM support"
- default y
- help
- Compile ModemManager with MBIM support
+config MODEMMANAGER_WITH_MBIM
+ bool "Include MBIM support"
+ default y
+ help
+ Compile ModemManager with MBIM support
- config MODEMMANAGER_WITH_QMI
- bool "Include QMI support"
- default y
- help
- Compile ModemManager with QMI support
+config MODEMMANAGER_WITH_QMI
+ bool "Include QMI support"
+ default y
+ help
+ Compile ModemManager with QMI support
+
+config MODEMMANAGER_WITH_QRTR
+ bool "Include QRTR support"
+ default y
+ depends on MODEMMANAGER_WITH_QMI
+ select LIBQMI_WITH_QRTR_GLIB
+ help
+ Compile ModemManager with QRTR support
+
+config MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS
+ bool "Allow AT commands via DBus"
+ default n
+ help
+ Compile ModemManager allowing AT commands without debug flag
- config MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS
- bool "Allow AT commands via DBus"
- default n
- help
- Compile ModemManager allowing AT commands without debug flag
endmenu
include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager
-PKG_VERSION:=1.18.6
+PKG_SOURCE_VERSION:=1.18.6
PKG_RELEASE:=$(AUTORELEASE)
-PKG_SOURCE:=ModemManager-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://www.freedesktop.org/software/ModemManager
-PKG_HASH:=d4f804b31cf504239c5f1d4973c62095c00cba1ee9abb503718dac6d146a470a
-PKG_BUILD_DIR:=$(BUILD_DIR)/ModemManager-$(PKG_VERSION)
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git
+PKG_MIRROR_HASH:=72f1a865153745d05c482ed3a77f2045d24387f1f9a37177fe7bc35ab7663765
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DEPENDS:=glib2/host libxslt/host
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
+include $(INCLUDE_DIR)/meson.mk
+
+TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants
+TARGET_LDFLAGS += -Wl,--gc-sections
define Package/modemmanager/config
source "$(SOURCE)/Config.in"
+dbus \
+ppp \
+MODEMMANAGER_WITH_MBIM:libmbim \
- +MODEMMANAGER_WITH_QMI:libqmi
+ +MODEMMANAGER_WITH_QMI:libqmi \
+ +MODEMMANAGER_WITH_QRTR:libqrtr-glib
endef
define Package/modemmanager/description
Select Utilities/usb-modeswitch if needed.
endef
-CONFIGURE_ARGS += \
- --without-polkit \
- --without-udev \
- --without-systemdsystemunitdir \
- --disable-rpath \
- --disable-gtk-doc
-
-ifeq ($(CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS),y)
- CONFIGURE_ARGS += --with-at-command-via-dbus
-endif
-
-ifdef CONFIG_MODEMMANAGER_WITH_MBIM
- CONFIGURE_ARGS += --with-mbim
-else
- CONFIGURE_ARGS += --without-mbim
-endif
-
-ifdef CONFIG_MODEMMANAGER_WITH_QMI
- CONFIGURE_ARGS += --with-qmi
-else
- CONFIGURE_ARGS += --without-qmi
-endif
-
-define Build/Prepare
- $(call Build/Prepare/Default)
- ( cd "$(PKG_BUILD_DIR)"; \
- printf "all:\ninstall:\n" >po/Makefile.in.in; \
- )
-endef
+MESON_ARGS += \
+ -Dudev=false \
+ -Dudevdir=/lib/udev \
+ -Dsystemdsystemunitdir=no \
+ -Dsystemd_suspend_resume=false \
+ -Dsystemd_journal=false \
+ -Dpolkit=no \
+ -Dintrospection=false \
+ -Dman=false \
+ -Dbash_completion=false \
+ -Db_lto=true \
+ -Dmbim=$(if $(CONFIG_MODEMMANAGER_WITH_MBIM),true,false) \
+ -Dqmi=$(if $(CONFIG_MODEMMANAGER_WITH_QMI),true,false) \
+ -Dqrtr=$(if $(CONFIG_MODEMMANAGER_WITH_QRTR),true,false) \
+ -Dat_command_via_dbus=$(if $(CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS),true,false)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/ModemManager
--- /dev/null
+--- a/plugins/broadmobi/mm-plugin-broadmobi.c
++++ b/plugins/broadmobi/mm-plugin-broadmobi.c
+@@ -19,7 +19,6 @@
+ #define _LIBMM_INSIDE_MM
+ #include <libmm-glib.h>
+
+-#include "mm-port-enums-types.h"
+ #include "mm-log-object.h"
+ #include "mm-plugin-broadmobi.h"
+ #include "mm-broadband-modem.h"
+--- a/plugins/dlink/mm-plugin-dlink.c
++++ b/plugins/dlink/mm-plugin-dlink.c
+@@ -19,7 +19,6 @@
+ #define _LIBMM_INSIDE_MM
+ #include <libmm-glib.h>
+
+-#include "mm-port-enums-types.h"
+ #include "mm-log-object.h"
+ #include "mm-plugin-dlink.h"
+ #include "mm-broadband-modem.h"
+--- a/plugins/meson.build
++++ b/plugins/meson.build
+@@ -461,7 +461,7 @@ if plugins_options['huawei']
+ plugins += {'plugin-huawei': {
+ 'plugin': true,
+ 'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c'), 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+- 'module': {'sources': sources + enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
++ 'module': {'sources': sources + enums_sources + port_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'test': {'sources': files('huawei/tests/test-modem-helpers-huawei.c') + enums_sources, 'include_directories': huawei_inc, 'dependencies': libhelpers_dep},
+ }}
+
+--- a/plugins/telit/mm-plugin-telit.c
++++ b/plugins/telit/mm-plugin-telit.c
+@@ -21,7 +21,6 @@
+ #define _LIBMM_INSIDE_MM
+ #include <libmm-glib.h>
+
+-#include "mm-port-enums-types.h"
+ #include "mm-log-object.h"
+ #include "mm-modem-helpers.h"
+ #include "mm-plugin-telit.h"
+--- a/plugins/tplink/mm-plugin-tplink.c
++++ b/plugins/tplink/mm-plugin-tplink.c
+@@ -19,7 +19,6 @@
+ #define _LIBMM_INSIDE_MM
+ #include <libmm-glib.h>
+
+-#include "mm-port-enums-types.h"
+ #include "mm-log-object.h"
+ #include "mm-plugin-tplink.h"
+ #include "mm-broadband-modem.h"
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -147,15 +147,15 @@ endif
+
+ enums_types = 'mm-port-enums-types'
+
+-enums_sources = []
+-enums_sources += gnome.mkenums(
++port_enums_sources = []
++port_enums_sources += gnome.mkenums(
+ enums_types + '.c',
+ sources: headers,
+ c_template: build_aux_dir / enums_types + '.c.template',
+ fhead: '#include "mm-port-enums-types.h"',
+ )
+
+-enums_sources += gnome.mkenums(
++port_enums_sources += gnome.mkenums(
+ enums_types + '.h',
+ sources: headers,
+ h_template: build_aux_dir / enums_types + '.h.template',
+@@ -165,13 +165,13 @@ enums_sources += gnome.mkenums(
+
+ libport = static_library(
+ 'port',
+- sources: sources + enums_sources,
++ sources: sources + port_enums_sources,
+ include_directories: top_inc,
+ dependencies: deps + private_deps,
+ )
+
+ libport_dep = declare_dependency(
+- sources: enums_sources[1],
++ sources: port_enums_sources[1],
+ include_directories: '.',
+ dependencies: deps,
+ link_with: libport,
--- /dev/null
+--- a/plugins/meson.build
++++ b/plugins/meson.build
+@@ -88,7 +88,7 @@ if plugins_shared['icera']
+ plugins += {'shared-icera': {
+ 'plugin': false,
+ 'helper': {'sources': files('icera/mm-modem-helpers-icera.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
+- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
++ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
+ 'test': {'sources': files('icera/tests/test-modem-helpers-icera.c'), 'include_directories': plugins_incs + [icera_inc], 'dependencies': libhelpers_dep},
+ }}
+ endif
+@@ -185,7 +185,7 @@ if plugins_shared['telit']
+ plugins += {'shared-telit': {
+ 'plugin': false,
+ 'helper': {'sources': files('telit/mm-modem-helpers-telit.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
+- 'module': {'sources': sources, 'include_directories': plugins_incs + [telit_inc], 'c_args': common_c_args},
++ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs + [telit_inc], 'c_args': common_c_args},
+ 'test': {'sources': files('telit/tests/test-mm-modem-helpers-telit.c'), 'include_directories': telit_inc, 'dependencies': libmm_test_common_dep},
+ }}
+ endif
+@@ -285,7 +285,7 @@ if plugins_options['cinterion']
+ plugins += {'plugin-cinterion': {
+ 'plugin': true,
+ 'helper': {'sources': files('cinterion/mm-modem-helpers-cinterion.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
+- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
++ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
+ 'test': {'sources': files('cinterion/tests/test-modem-helpers-cinterion.c'), 'include_directories': plugins_incs + [include_directories('cinterion')], 'dependencies': libport_dep},
+ }}
+
+@@ -460,8 +460,8 @@ if plugins_options['huawei']
+
+ plugins += {'plugin-huawei': {
+ 'plugin': true,
+- 'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c'), 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+- 'module': {'sources': sources + enums_sources + port_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
++ 'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c') + daemon_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
++ 'module': {'sources': sources + enums_sources + port_enums_sources + daemon_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'test': {'sources': files('huawei/tests/test-modem-helpers-huawei.c') + enums_sources, 'include_directories': huawei_inc, 'dependencies': libhelpers_dep},
+ }}
+
+@@ -534,7 +534,7 @@ if plugins_options['mbm']
+ plugins += {'plugin-ericsson-mbm': {
+ 'plugin': true,
+ 'helper': {'sources': files('mbm/mm-modem-helpers-mbm.c'), 'include_directories': plugins_incs, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
+- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
++ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
+ 'test': {'sources': files('mbm/tests/test-modem-helpers-mbm.c'), 'include_directories': plugins_incs + [include_directories('mbm')], 'dependencies': libhelpers_dep},
+ }}
+
+@@ -644,7 +644,7 @@ if plugins_options['option-hso']
+
+ plugins += {'plugin-option-hso': {
+ 'plugin': true,
+- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="option-hso"'},
++ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="option-hso"'},
+ }}
+ endif
+
+@@ -852,7 +852,7 @@ if plugins_options['ublox']
+ plugins += {'plugin-ublox': {
+ 'plugin': true,
+ 'helper': {'sources': files('ublox/mm-modem-helpers-ublox.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
+- 'module': {'sources': sources, 'include_directories': plugins_incs + [ublox_inc], 'c_args': common_c_args},
++ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs + [ublox_inc], 'c_args': common_c_args},
+ 'test': {'sources': files('ublox/tests/test-modem-helpers-ublox.c'), 'include_directories': ublox_inc, 'dependencies': libmm_test_common_dep},
+ }}
+
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -225,14 +225,15 @@ sources = files(
+
+ enums_types = 'mm-daemon-enums-types'
+
+-sources += gnome.mkenums(
++daemon_enums_sources = []
++daemon_enums_sources += gnome.mkenums(
+ enums_types + '.c',
+ sources: headers,
+ c_template: build_aux_dir / enums_types + '.c.template',
+ fhead: '#include "mm-daemon-enums-types.h"',
+ )
+
+-sources += gnome.mkenums(
++daemon_enums_sources += gnome.mkenums(
+ enums_types + '.h',
+ sources: headers,
+ h_template: build_aux_dir / enums_types + '.h.template',
+@@ -296,7 +297,7 @@ endif
+
+ executable(
+ 'ModemManager',
+- sources: sources,
++ sources: sources + daemon_enums_sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: c_args,