1################################################################################ 2# 3# gpsd 4# 5################################################################################ 6 7GPSD_VERSION = 3.23.1 8GPSD_SITE = http://download-mirror.savannah.gnu.org/releases/gpsd 9GPSD_LICENSE = BSD-2-Clause 10GPSD_LICENSE_FILES = COPYING 11GPSD_CPE_ID_VENDOR = gpsd_project 12GPSD_SELINUX_MODULES = gpsd 13GPSD_INSTALL_STAGING = YES 14 15GPSD_DEPENDENCIES = host-python3 host-scons host-pkgconf 16 17GPSD_LDFLAGS = $(TARGET_LDFLAGS) 18GPSD_CFLAGS = $(TARGET_CFLAGS) 19GPSD_CXXFLAGS = $(TARGET_CXXFLAGS) 20 21GPSD_SCONS_ENV = $(TARGET_CONFIGURE_OPTS) 22 23GPSD_SCONS_OPTS = \ 24 arch=$(ARCH) \ 25 manbuild=no \ 26 prefix=/usr \ 27 sysroot=$(STAGING_DIR) \ 28 strip=no \ 29 qt=no \ 30 systemd=$(if $(BR2_INIT_SYSTEMD),yes,no) 31 32ifeq ($(BR2_PACKAGE_NCURSES),y) 33GPSD_DEPENDENCIES += ncurses 34else 35GPSD_SCONS_OPTS += ncurses=no 36endif 37 38# Build libgpsmm if we've got C++ 39ifeq ($(BR2_INSTALL_LIBSTDCPP),y) 40GPSD_LDFLAGS += -lstdc++ 41GPSD_CFLAGS += -std=gnu++98 42GPSD_CXXFLAGS += -std=gnu++98 43GPSD_SCONS_OPTS += libgpsmm=yes 44else 45GPSD_SCONS_OPTS += libgpsmm=no 46endif 47 48ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) 49GPSD_CFLAGS += -O0 50GPSD_CXXFLAGS += -O0 51endif 52 53# If libusb is available build it before so the package can use it 54ifeq ($(BR2_PACKAGE_LIBUSB),y) 55GPSD_DEPENDENCIES += libusb 56else 57GPSD_SCONS_OPTS += usb=no 58endif 59 60# If bluetooth is available build it before so the package can use it 61ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) 62GPSD_DEPENDENCIES += bluez5_utils 63else 64GPSD_SCONS_OPTS += bluez=no 65endif 66 67# If pps-tools is available, build it before so the package can use it 68# (HAVE_SYS_TIMEPPS_H). 69ifeq ($(BR2_PACKAGE_PPS_TOOLS),y) 70GPSD_DEPENDENCIES += pps-tools 71endif 72 73ifeq ($(BR2_PACKAGE_DBUS_GLIB),y) 74GPSD_SCONS_OPTS += dbus_export=yes 75GPSD_DEPENDENCIES += dbus-glib 76endif 77 78# Protocol support 79ifneq ($(BR2_PACKAGE_GPSD_ASHTECH),y) 80GPSD_SCONS_OPTS += ashtech=no 81endif 82ifneq ($(BR2_PACKAGE_GPSD_AIVDM),y) 83GPSD_SCONS_OPTS += aivdm=no 84endif 85ifneq ($(BR2_PACKAGE_GPSD_EARTHMATE),y) 86GPSD_SCONS_OPTS += earthmate=no 87endif 88ifneq ($(BR2_PACKAGE_GPSD_EVERMORE),y) 89GPSD_SCONS_OPTS += evermore=no 90endif 91ifneq ($(BR2_PACKAGE_GPSD_FURY),y) 92GPSD_SCONS_OPTS += fury=no 93endif 94ifneq ($(BR2_PACKAGE_GPSD_FV18),y) 95GPSD_SCONS_OPTS += fv18=no 96endif 97ifneq ($(BR2_PACKAGE_GPSD_GARMIN),y) 98GPSD_SCONS_OPTS += garmin=no 99endif 100ifneq ($(BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT),y) 101GPSD_SCONS_OPTS += garmintxt=no 102endif 103ifneq ($(BR2_PACKAGE_GPSD_GEOSTAR),y) 104GPSD_SCONS_OPTS += geostar=no 105endif 106ifneq ($(BR2_PACKAGE_GPSD_GPSCLOCK),y) 107GPSD_SCONS_OPTS += gpsclock=no 108endif 109ifneq ($(BR2_PACKAGE_GPSD_GREIS),y) 110GPSD_SCONS_OPTS += greis=no 111endif 112ifneq ($(BR2_PACKAGE_GPSD_ISYNC),y) 113GPSD_SCONS_OPTS += isync=no 114endif 115ifneq ($(BR2_PACKAGE_GPSD_ITRAX),y) 116GPSD_SCONS_OPTS += itrax=no 117endif 118ifneq ($(BR2_PACKAGE_GPSD_MTK3301),y) 119GPSD_SCONS_OPTS += mtk3301=no 120endif 121ifneq ($(BR2_PACKAGE_GPSD_NMEA),y) 122GPSD_SCONS_OPTS += nmea0183=no 123endif 124ifneq ($(BR2_PACKAGE_GPSD_NTRIP),y) 125GPSD_SCONS_OPTS += ntrip=no 126endif 127ifneq ($(BR2_PACKAGE_GPSD_NAVCOM),y) 128GPSD_SCONS_OPTS += navcom=no 129endif 130ifneq ($(BR2_PACKAGE_GPSD_NMEA2000),y) 131GPSD_SCONS_OPTS += nmea2000=no 132endif 133ifneq ($(BR2_PACKAGE_GPSD_OCEANSERVER),y) 134GPSD_SCONS_OPTS += oceanserver=no 135endif 136ifneq ($(BR2_PACKAGE_GPSD_ONCORE),y) 137GPSD_SCONS_OPTS += oncore=no 138endif 139ifneq ($(BR2_PACKAGE_GPSD_RTCM104V2),y) 140GPSD_SCONS_OPTS += rtcm104v2=no 141endif 142ifneq ($(BR2_PACKAGE_GPSD_RTCM104V3),y) 143GPSD_SCONS_OPTS += rtcm104v3=no 144endif 145ifneq ($(BR2_PACKAGE_GPSD_SIRF),y) 146GPSD_SCONS_OPTS += sirf=no 147endif 148ifneq ($(BR2_PACKAGE_GPSD_SKYTRAQ),y) 149GPSD_SCONS_OPTS += skytraq=no 150endif 151ifneq ($(BR2_PACKAGE_GPSD_SUPERSTAR2),y) 152GPSD_SCONS_OPTS += superstar2=no 153endif 154ifneq ($(BR2_PACKAGE_GPSD_TRIMBLE_TSIP),y) 155GPSD_SCONS_OPTS += tsip=no 156endif 157ifneq ($(BR2_PACKAGE_GPSD_TRIPMATE),y) 158GPSD_SCONS_OPTS += tripmate=no 159endif 160ifneq ($(BR2_PACKAGE_GPSD_TRUE_NORTH),y) 161GPSD_SCONS_OPTS += tnt=no 162endif 163ifneq ($(BR2_PACKAGE_GPSD_UBX),y) 164GPSD_SCONS_OPTS += ublox=no 165endif 166 167# Features 168ifeq ($(BR2_PACKAGE_GPSD_SQUELCH),y) 169GPSD_SCONS_OPTS += squelch=yes 170endif 171ifneq ($(BR2_PACKAGE_GPSD_OLDSTYLE),y) 172GPSD_SCONS_OPTS += oldstyle=no 173endif 174ifeq ($(BR2_PACKAGE_GPSD_PROFILING),y) 175GPSD_SCONS_OPTS += profiling=yes 176endif 177ifneq ($(BR2_PACKAGE_GPSD_CLIENT_DEBUG),y) 178GPSD_SCONS_OPTS += clientdebug=no 179endif 180ifeq ($(BR2_PACKAGE_GPSD_USER),y) 181GPSD_SCONS_OPTS += gpsd_user=$(BR2_PACKAGE_GPSD_USER_VALUE) 182endif 183ifeq ($(BR2_PACKAGE_GPSD_GROUP),y) 184GPSD_SCONS_OPTS += gpsd_group=$(BR2_PACKAGE_GPSD_GROUP_VALUE) 185endif 186ifeq ($(BR2_PACKAGE_GPSD_MAX_CLIENT),y) 187GPSD_SCONS_OPTS += max_clients=$(BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE) 188endif 189ifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y) 190GPSD_SCONS_OPTS += max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE) 191endif 192 193ifeq ($(BR2_PACKAGE_PYTHON3),y) 194GPSD_SCONS_OPTS += \ 195 python=yes \ 196 python_libdir="/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages" 197else ifeq ($(BR2_PACKAGE_PYTHON),y) 198GPSD_SCONS_OPTS += \ 199 python=yes \ 200 python_libdir="/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages" 201else 202GPSD_SCONS_OPTS += python=no 203endif 204 205GPSD_SCONS_ENV += \ 206 LDFLAGS="$(GPSD_LDFLAGS)" \ 207 CFLAGS="$(GPSD_CFLAGS)" \ 208 CCFLAGS="$(GPSD_CFLAGS)" \ 209 CXXFLAGS="$(GPSD_CXXFLAGS)" 210 211define GPSD_BUILD_CMDS 212 (cd $(@D); \ 213 $(GPSD_SCONS_ENV) \ 214 $(HOST_DIR)/bin/python3 $(SCONS) \ 215 $(GPSD_SCONS_OPTS)) 216endef 217 218define GPSD_INSTALL_TARGET_CMDS 219 (cd $(@D); \ 220 $(GPSD_SCONS_ENV) \ 221 DESTDIR=$(TARGET_DIR) \ 222 $(HOST_DIR)/bin/python3 $(SCONS) \ 223 $(GPSD_SCONS_OPTS) \ 224 $(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install)) 225endef 226 227define GPSD_INSTALL_INIT_SYSV 228 $(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd 229 $(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd 230endef 231 232# systemd unit files are installed automatically, but need to update the 233# /usr/local path references in the provided files to /usr. 234define GPSD_INSTALL_INIT_SYSTEMD 235 $(SED) 's%/usr/local%/usr%' \ 236 $(TARGET_DIR)/usr/lib/systemd/system/gpsd.service \ 237 $(TARGET_DIR)/usr/lib/systemd/system/gpsdctl@.service 238endef 239 240define GPSD_INSTALL_STAGING_CMDS 241 (cd $(@D); \ 242 $(GPSD_SCONS_ENV) \ 243 DESTDIR=$(STAGING_DIR) \ 244 $(HOST_DIR)/bin/python3 $(SCONS) \ 245 $(GPSD_SCONS_OPTS) \ 246 install) 247endef 248 249# After the udev rule is installed, make it writable so that this 250# package can be re-built/re-installed. 251ifeq ($(BR2_PACKAGE_HAS_UDEV),y) 252define GPSD_INSTALL_UDEV_RULES 253 chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules 254endef 255 256GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES 257endif 258 259$(eval $(generic-package)) 260