diff --git a/package/gpsd/Config.in b/package/gpsd/Config.in index cbdcdb5725..92a124b8ac 100644 --- a/package/gpsd/Config.in +++ b/package/gpsd/Config.in @@ -9,6 +9,8 @@ menuconfig BR2_PACKAGE_GPSD depends on BR2_TOOLCHAIN_HAS_THREADS # Always tries to build a shared library depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GPSD_CLIENTS if !BR2_PACKAGE_GPSD_DAEMON \ + && !BR2_PACKAGE_GPSD_PYTHON help gpsd is a service daemon that monitors one or more GPSes or AIS receivers attached to a host computer through serial or @@ -22,6 +24,15 @@ menuconfig BR2_PACKAGE_GPSD if BR2_PACKAGE_GPSD +config BR2_PACKAGE_GPSD_DAEMON + bool "gpsd daemon" + default y # legacy + select BR2_PACKAGE_GPSD_CLIENTS + help + Build and install the gpsd daemon itself + +if BR2_PACKAGE_GPSD_DAEMON + config BR2_PACKAGE_GPSD_DEVICES string "Where to look for GPSes" default "/dev/ttyS1" @@ -210,6 +221,8 @@ config BR2_PACKAGE_GPSD_UBX help uBlox UBX binary support +endif # GPSD_DAEMON + config BR2_PACKAGE_GPSD_CLIENTS bool "gpsd clients" default y # legacy diff --git a/package/gpsd/gpsd.mk b/package/gpsd/gpsd.mk index 77c6f6c562..8f87766dcc 100644 --- a/package/gpsd/gpsd.mk +++ b/package/gpsd/gpsd.mk @@ -26,8 +26,7 @@ GPSD_SCONS_OPTS = \ prefix=/usr \ sysroot=$(STAGING_DIR) \ strip=no \ - qt=no \ - systemd=$(if $(BR2_INIT_SYSTEMD),yes,no) + qt=no ifeq ($(BR2_PACKAGE_NCURSES),y) GPSD_DEPENDENCIES += ncurses @@ -178,6 +177,40 @@ ifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y) GPSD_SCONS_OPTS += max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE) endif +ifeq ($(BR2_PACKAGE_GPSD_DAEMON),y) +GPSD_SCONS_OPTS += \ + gpsd=yes \ + systemd=$(if $(BR2_INIT_SYSTEMD),yes,no) + +GPSD_INSTALL_RULE = $(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install) + +# When using chrony, wait for after Buildroot's chrony.service +ifeq ($(BR2_PACKAGE_CHRONY),y) +define GPSD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(GPSD_PKGDIR)/br-chrony.conf \ + $(TARGET_DIR)/usr/lib/systemd/system/gpsd.service.d/br-chrony.conf +endef +endif + +define GPSD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd + $(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd +endef + +# After the udev rule is installed, make it writable so that this +# package can be re-built/re-installed. +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define GPSD_INSTALL_UDEV_RULES + chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules +endef +GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES +endif + +else # GPSD_DAEMON +GPSD_SCONS_OPTS += gpsd=no systemd=no +GPSD_INSTALL_RULE = install +endif + ifeq ($(BR2_PACKAGE_GPSD_CLIENTS),y) GPSD_SCONS_OPTS += gpsdclients=yes else @@ -211,22 +244,9 @@ define GPSD_INSTALL_TARGET_CMDS DESTDIR=$(TARGET_DIR) \ $(SCONS) \ $(GPSD_SCONS_OPTS) \ - $(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install)) + $(GPSD_INSTALL_RULE)) endef -define GPSD_INSTALL_INIT_SYSV - $(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd - $(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd -endef - -# When using chrony, wait for after Buildroot's chrony.service -ifeq ($(BR2_PACKAGE_CHRONY),y) -define GPSD_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 0644 $(GPSD_PKGDIR)/br-chrony.conf \ - $(TARGET_DIR)/usr/lib/systemd/system/gpsd.service.d/br-chrony.conf -endef -endif - define GPSD_INSTALL_STAGING_CMDS (cd $(@D); \ $(GPSD_SCONS_ENV) \ @@ -236,14 +256,4 @@ define GPSD_INSTALL_STAGING_CMDS install) endef -# After the udev rule is installed, make it writable so that this -# package can be re-built/re-installed. -ifeq ($(BR2_PACKAGE_HAS_UDEV),y) -define GPSD_INSTALL_UDEV_RULES - chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules -endef - -GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES -endif - $(eval $(generic-package))