From b1346eec95560eb7ffc0276c2994fc20b2f35eaf Mon Sep 17 00:00:00 2001 From: Thomas Sailer Date: Mar 22 2016 01:24:37 +0000 Subject: compile fixes --- diff --git a/vfrnav-compilefix.patch b/vfrnav-compilefix.patch new file mode 100644 index 0000000..2665b9c --- /dev/null +++ b/vfrnav-compilefix.patch @@ -0,0 +1,402 @@ +diff -ur vfrnav/src/geomavx.cc vfrnav/src/geomavx.cc +--- vfrnav/src/geomavx.cc 2016-03-21 22:27:17.000000000 +0100 ++++ vfrnav/src/geomavx.cc 2016-03-22 02:19:20.836678670 +0100 +@@ -24,10 +24,6 @@ + #include + #endif + +-#ifdef __AVX__ +-#include +-#endif +- + #include + #include + +diff -ur vfrnav/src/geom.h vfrnav/src/geom.h +--- vfrnav/src/geom.h 2016-03-21 22:27:17.000000000 +0100 ++++ vfrnav/src/geom.h 2016-03-22 02:19:23.956632290 +0100 +@@ -21,6 +21,10 @@ + #include + #include + ++#ifdef __AVX__ ++#include ++#endif ++ + #include "sysdeps.h" + #include "alignedalloc.h" + +diff -ur vfrnav/src/Navigate.cc vfrnav/src/Navigate.cc +--- vfrnav/src/Navigate.cc 2016-03-21 22:27:17.000000000 +0100 ++++ vfrnav/src/Navigate.cc 2016-03-22 02:19:27.748575921 +0100 +@@ -4,7 +4,7 @@ + // Description: Navigation Mode Windows + // + // +-// Author: Thomas Sailer , (C) 2007, 2009, 2011, 2012 ++// Author: Thomas Sailer , (C) 2007, 2009, 2011, 2012, 2016 + // + // Copyright: See COPYING file that comes with this distribution + // +@@ -181,7 +181,7 @@ + return SVVector(); + } + +-#ifdef HAVE_LIBLOCATION ++#if defined(HAVE_LIBLOCATION) + + class Navigate::GPSCommGPSD : public Navigate::GPSComm { + private: +@@ -946,9 +946,13 @@ + + #elif defined(HAVE_LIBGPS) + ++#if GPSD_API_MAJOR_VERSION >= 5 ++#define gps_open_r gps_open ++#endif ++ + class Navigate::GPSCommGPSD : public Navigate::GPSComm { + private: +- GPSCommGPSD(struct gps_data_t *gd); ++ GPSCommGPSD(struct gps_data_t& gd); + virtual ~GPSCommGPSD(); + + public: +@@ -978,23 +982,27 @@ + virtual SVVector get_svvector(void) const; + + private: +- struct gps_data_t *m_gpsdata; ++ struct gps_data_t m_gpsdata; ++ sigc::connection m_gpssigioconn; ++#if GPSD_API_MAJOR_VERSION < 5 + typedef std::map gpsmap_t; + static gpsmap_t m_gpsmap; +- sigc::connection m_gpssigioconn; + + static void gps_hook(struct gps_data_t *, char *, size_t, int); ++#endif + bool gps_poll(Glib::IOCondition iocond); + void update_gps(void); + void gps_send(const std::string& s); + }; + ++#if GPSD_API_MAJOR_VERSION < 5 + Navigate::GPSCommGPSD::gpsmap_t Navigate::GPSCommGPSD::m_gpsmap; ++#endif + + Navigate::GPSCommGPSD *Navigate::GPSCommGPSD::create( const Glib::ustring & server, const Glib::ustring & port ) + { +- struct gps_data_t *gpsdata = gps_open(server.c_str(), port.c_str()); +- if (!gpsdata) { ++ struct gps_data_t gpsdata; ++ if (gps_open_r(server.c_str(), port.c_str(), &gpsdata)) { + std::cerr << "open_gps: error opening GPS" << std::endl; + return 0; + } +@@ -1002,32 +1010,36 @@ + return ngps; + } + +-Navigate::GPSCommGPSD::GPSCommGPSD( struct gps_data_t * gd ) ++Navigate::GPSCommGPSD::GPSCommGPSD(struct gps_data_t& gd) + : m_gpsdata(gd) + { +- m_gpsmap[m_gpsdata] = this; ++#if GPSD_API_MAJOR_VERSION < 5 ++ m_gpsmap[&m_gpsdata] = this; + gps_set_raw_hook(m_gpsdata, gps_hook); +- m_gpssigioconn = Glib::signal_io().connect(sigc::mem_fun(*this, &Navigate::GPSCommGPSD::gps_poll), m_gpsdata->gps_fd, Glib::IO_IN); ++#endif ++ m_gpssigioconn = Glib::signal_io().connect(sigc::mem_fun(*this, &Navigate::GPSCommGPSD::gps_poll), m_gpsdata.gps_fd, Glib::IO_IN); + gps_send("w1\n"); + } + + Navigate::GPSCommGPSD::~GPSCommGPSD( ) + { + m_gpssigioconn.disconnect(); +- gpsmap_t::iterator i(m_gpsmap.find(m_gpsdata)); ++ #if GPSD_API_MAJOR_VERSION < 5 ++ gpsmap_t::iterator i(m_gpsmap.find(m_gpsdata)); + if (i != m_gpsmap.end()) + m_gpsmap.erase(i); +- gps_close(m_gpsdata); +- m_gpsdata = 0; ++#endif ++ gps_close(&m_gpsdata); + } + + void Navigate::GPSCommGPSD::gps_send(const std::string& s) + { +- int r = write(m_gpsdata->gps_fd, s.c_str(), s.size()); ++ int r = write(m_gpsdata.gps_fd, s.c_str(), s.size()); + if (r != s.size()) + std::cerr << "gps_send: error " << r << std::endl; + } + ++#if GPSD_API_MAJOR_VERSION < 5 + void Navigate::GPSCommGPSD::gps_hook( struct gps_data_t *p, char *, size_t, int ) + { + gpsmap_t::iterator i(m_gpsmap.find(p)); +@@ -1036,13 +1048,19 @@ + return; + } + } ++#endif + + bool Navigate::GPSCommGPSD::gps_poll(Glib::IOCondition iocond) + { + if (!(iocond & Glib::IO_IN)) + return true; ++#if GPSD_API_MAJOR_VERSION >= 5 ++ if (gps_read(&m_gpsdata) >= 0) ++ update_gps(); ++#else + ::gps_poll(m_gpsdata); +- std::cerr << "status " << m_gpsdata->status << " fixtype " << m_gpsdata->fix.mode << std::endl; ++#endif ++ std::cerr << "status " << m_gpsdata.status << " fixtype " << m_gpsdata.fix.mode << std::endl; + return true; + } + +@@ -1053,7 +1071,7 @@ + + Navigate::GPSCommGPSD::fixtype_t Navigate::GPSCommGPSD::get_fixtype(void) const + { +- switch (m_gpsdata->fix.mode) { ++ switch (m_gpsdata.fix.mode) { + default: + case MODE_NOT_SEEN: + return fixtype_noconn; +@@ -1071,7 +1089,7 @@ + + Navigate::GPSCommGPSD::fixstatus_t Navigate::GPSCommGPSD::get_fixstatus(void) const + { +- switch (m_gpsdata->status) { ++ switch (m_gpsdata.status) { + default: + case STATUS_NO_FIX: + return fixstatus_nofix; +@@ -1079,119 +1097,170 @@ + case STATUS_FIX: + return fixstatus_fix; + ++#if GPSD_API_MAJOR_VERSION < 6 + case STATUS_DGPS_FIX: + return fixstatus_dgpsfix; ++#endif + } + } + + double Navigate::GPSCommGPSD::get_fixtime(void) const + { +- return m_gpsdata->fix.time; ++ return m_gpsdata.fix.time; + } + + Point Navigate::GPSCommGPSD::get_coord(void) const + { +- return Point((int32_t)(m_gpsdata->fix.longitude * Point::from_deg), +- (int32_t)(m_gpsdata->fix.latitude * Point::from_deg)); ++ return Point((int32_t)(m_gpsdata.fix.longitude * Point::from_deg), ++ (int32_t)(m_gpsdata.fix.latitude * Point::from_deg)); + } + + float Navigate::GPSCommGPSD::get_coord_uncertainty(void) const + { +- return m_gpsdata->fix.ept; ++ return m_gpsdata.fix.ept; + } + + bool Navigate::GPSCommGPSD::is_coord_valid(void) const + { +- return Navigate::GPSComm::is_coord_valid() && (!std::isnan(m_gpsdata->fix.longitude)) && (!std::isnan(m_gpsdata->fix.latitude)); ++ return Navigate::GPSComm::is_coord_valid() && (!std::isnan(m_gpsdata.fix.longitude)) && (!std::isnan(m_gpsdata.fix.latitude)); + } + + float Navigate::GPSCommGPSD::get_altitude(void) const + { +- return m_gpsdata->fix.altitude; ++ return m_gpsdata.fix.altitude; + } + + float Navigate::GPSCommGPSD::get_altitude_uncertainty(void) const + { +- return m_gpsdata->fix.epv; ++ return m_gpsdata.fix.epv; + } + + bool Navigate::GPSCommGPSD::is_altitude_valid(void) const + { +- return Navigate::GPSComm::is_altitude_valid() && !std::isnan(m_gpsdata->fix.altitude); ++ return Navigate::GPSComm::is_altitude_valid() && !std::isnan(m_gpsdata.fix.altitude); + } + + float Navigate::GPSCommGPSD::get_track(void) const + { +- return m_gpsdata->fix.track; ++ return m_gpsdata.fix.track; + } + + float Navigate::GPSCommGPSD::get_track_uncertainty(void) const + { +- return m_gpsdata->fix.epd; ++ return m_gpsdata.fix.epd; + } + + float Navigate::GPSCommGPSD::get_velocity(void) const + { +- return m_gpsdata->fix.speed; ++ return m_gpsdata.fix.speed; + } + + float Navigate::GPSCommGPSD::get_velocity_uncertainty(void) const + { +- return m_gpsdata->fix.eps; ++ return m_gpsdata.fix.eps; + } + + float Navigate::GPSCommGPSD::get_verticalvelocity(void) const + { +- return m_gpsdata->fix.climb; ++ return m_gpsdata.fix.climb; + } + + float Navigate::GPSCommGPSD::get_verticalvelocity_uncertainty(void) const + { +- return m_gpsdata->fix.epc; ++ return m_gpsdata.fix.epc; + } + + float Navigate::GPSCommGPSD::get_pdop(void) const + { +- return m_gpsdata->pdop; ++#if GPSD_API_MAJOR_VERSION < 6 ++ return m_gpsdata.pdop; ++#else ++ return m_gpsdata.dop.pdop; ++#endif + } + + float Navigate::GPSCommGPSD::get_hdop(void) const + { +- return m_gpsdata->hdop; ++#if GPSD_API_MAJOR_VERSION < 6 ++ return m_gpsdata.hdop; ++#else ++ return m_gpsdata.dop.pdop; ++#endif + } + + float Navigate::GPSCommGPSD::get_vdop(void) const + { +- return m_gpsdata->vdop; ++#if GPSD_API_MAJOR_VERSION < 6 ++ return m_gpsdata.vdop; ++#else ++ return m_gpsdata.dop.vdop; ++#endif + } + + float Navigate::GPSCommGPSD::get_tdop(void) const + { +- return m_gpsdata->tdop; ++#if GPSD_API_MAJOR_VERSION < 6 ++ return m_gpsdata.tdop; ++#else ++ return m_gpsdata.dop.tdop; ++#endif + } + + float Navigate::GPSCommGPSD::get_gdop(void) const + { +- return m_gpsdata->gdop; ++#if GPSD_API_MAJOR_VERSION < 6 ++ return m_gpsdata.gdop; ++#else ++ return m_gpsdata.dop.gdop; ++#endif + } + + unsigned int Navigate::GPSCommGPSD::get_nrsv(void) const + { +- return m_gpsdata->satellites; ++ if (!(m_gpsdata.set & SATELLITE_SET)) ++ return 0; ++ return m_gpsdata.satellites_visible; + } + + Navigate::GPSCommGPSD::SV Navigate::GPSCommGPSD::get_sv( unsigned int idx ) const + { +- if (idx >= (unsigned int)m_gpsdata->satellites) +- return SV(); +- return SV(m_gpsdata->PRN[idx], m_gpsdata->azimuth[idx], m_gpsdata->elevation[idx], m_gpsdata->ss[idx], !!m_gpsdata->used[idx]); ++ if (!(m_gpsdata.set & SATELLITE_SET)) ++ return SV(); ++ if (idx >= (unsigned int)m_gpsdata.satellites_visible) ++ return SV(); ++#if GPSD_API_MAJOR_VERSION >= 6 ++ std::set satused; ++ for (int i = 0; i < m_gpsdata.satellites_used; ++i) ++ satused.insert(m_gpsdata.skyview[i].used); ++ return SV(m_gpsdata.skyview[idx].PRN, m_gpsdata.skyview[idx].azimuth, m_gpsdata.skyview[idx].elevation, ++ m_gpsdata.skyview[idx].ss, satused.find(m_gpsdata.skyview[idx].PRN) != satused.end()); ++#else ++ std::set satused; ++ for (int i = 0; i < m_gpsdata.satellites_used; ++i) ++ satused.insert(m_gpsdata.used[i]); ++ return SV(m_gpsdata.PRN[idx], m_gpsdata.azimuth[idx], m_gpsdata.elevation[idx], ++ m_gpsdata.ss[idx], satused.find(m_gpsdata.PRN[idx]) != satused.end()); ++#endif + } + + Navigate::GPSCommGPSD::SVVector Navigate::GPSCommGPSD::get_svvector(void) const + { + SVVector v; +- for (int i = 0; i < m_gpsdata->satellites; i++) +- v.push_back(SV(m_gpsdata->PRN[i], m_gpsdata->azimuth[i], m_gpsdata->elevation[i], m_gpsdata->ss[i], !!m_gpsdata->used[i])); ++#if GPSD_API_MAJOR_VERSION >= 6 ++ std::set satused; ++ for (int i = 0; i < m_gpsdata.satellites_used; ++i) ++ satused.insert(m_gpsdata.skyview[i].used); ++ for (int i = 0; i < m_gpsdata.satellites_visible; ++i) ++ v.push_back(SV(m_gpsdata.skyview[i].PRN, m_gpsdata.skyview[i].azimuth, m_gpsdata.skyview[i].elevation, ++ m_gpsdata.skyview[i].ss, satused.find(m_gpsdata.skyview[i].PRN) != satused.end())); ++#else ++ std::set satused; ++ for (int i = 0; i < m_gpsdata.satellites_used; ++i) ++ satused.insert(m_gpsdata.used[i]); ++ for (int i = 0; i < m_gpsdata.satellites_visible; ++i) ++ v.push_back(SV(m_gpsdata.PRN[i], m_gpsdata.azimuth[i], m_gpsdata.elevation[i], ++ m_gpsdata.ss[i], satused.find(m_gpsdata.PRN[idx]) != satused.end())); ++#endif + return v; + } + +diff -ur vfrnav/src/ssetest.cc vfrnav/src/ssetest.cc +--- vfrnav/src/ssetest.cc 2016-03-21 22:27:17.000000000 +0100 ++++ vfrnav/src/ssetest.cc 2016-03-22 02:19:15.836752996 +0100 +@@ -29,10 +29,6 @@ + #include + #include + +-#ifdef __AVX__ +-#include +-#endif +- + typedef std::pair tpoint_t; + + static tpoint_t transform1(const Point& pt, const Point& porigin, const Point& pvec) +diff -ur vfrnav/vfrnav.spec.in vfrnav/vfrnav.spec.in +--- vfrnav/vfrnav.spec.in 2016-03-21 23:20:49.000000000 +0100 ++++ vfrnav/vfrnav.spec.in 2016-03-21 23:27:35.547023953 +0100 +@@ -282,7 +282,8 @@ + + %files + %defattr(-,root,root,-) +-%doc AUTHORS ChangeLog COPYING INSTALL NEWS README TODO doc/flightdeck.pdf ++%license COPYING ++%doc AUTHORS ChangeLog INSTALL NEWS README TODO doc/flightdeck.pdf + %{_datadir}/applications/vfrnav.desktop + %{_datadir}/applications/flightdeck.desktop + %{_datadir}/applications/vfrairporteditor.desktop diff --git a/vfrnav.spec b/vfrnav.spec index fc081fa..d6e8613 100644 --- a/vfrnav.spec +++ b/vfrnav.spec @@ -7,6 +7,7 @@ Group: Applications/Productivity License: GPLv2+ URL: http://www.baycom.org/~tom/vfrnav Source0: http://download.gna.org/vfrnav/%{name}-%{version}.tar.gz +Patch0: vfrnav-compilefix.patch %bcond_without webservice @@ -196,6 +197,7 @@ This package contains a webservice for the CFMU Autorouter. %prep %setup -q +%patch0 -p1 -b .compfix %build CXXFLAGS=`echo %optflags -std=c++11 | sed -e 's/-O2//'`