Codebase list gpsbabel / debian/1.7.0+ds-6 GPSBabel.pro
debian/1.7.0+ds-6

Tree @debian/1.7.0+ds-6 (Download .tar.gz)

GPSBabel.pro @debian/1.7.0+ds-6raw · history · blame

# Enforce minimum Qt version.
# versionAtLeast() was introduced in Qt 5.10, so we can't count on it being available.
MIN_QT_VERSION = 5.9 # major[.minor[.patch]]
MIN_QT_VERSION_COMPONENTS = $$split(MIN_QT_VERSION, .)
MIN_QT_VERSION_MAJOR = $$member(MIN_QT_VERSION_COMPONENTS, 0)
MIN_QT_VERSION_MINOR = $$member(MIN_QT_VERSION_COMPONENTS, 1)
MIN_QT_VERSION_PATCH = $$member(MIN_QT_VERSION_COMPONENTS, 2)
count(MIN_QT_VERSION_MINOR, 0): MIN_QT_VERSION_MINOR = 0
count(MIN_QT_VERSION_PATCH, 0): MIN_QT_VERSION_PATCH = 0
lessThan(QT_MAJOR_VERSION, $$MIN_QT_VERSION_MAJOR) | \
if(equals(QT_MAJOR_VERSION, $$MIN_QT_VERSION_MAJOR):lessThan(QT_MINOR_VERSION, $$MIN_QT_VERSION_MINOR)) | \
if(equals(QT_MAJOR_VERSION, $$MIN_QT_VERSION_MAJOR):equals(QT_MINOR_VERSION, $$MIN_QT_VERSION_MINOR):lessThan(QT_PATCH_VERSION, $$MIN_QT_VERSION_PATCH)) {
  error("$$QMAKE_QMAKE uses Qt version $$QT_VERSION but version $${MIN_QT_VERSION_MAJOR}.$${MIN_QT_VERSION_MINOR}.$${MIN_QT_VERSION_PATCH} or newer is required.")  
}

QT -= gui

TARGET = gpsbabel

CONFIG += console
CONFIG -= app_bundle
CONFIG += c++14

TEMPLATE = app

MINIMAL_FMTS =  magproto.cc explorist_ini.cc gpx.cc geo.cc mapsend.cc garmin.cc \
               garmin_device_xml.cc garmin_tables.cc internal_styles.cc nmea.cc \
               kml.cc wbt-200.cc

ALL_FMTS=$$MINIMAL_FMTS gtm.cc gpsutil.cc pcx.cc \
        skytraq.cc holux.cc tmpro.cc tpg.cc tpo.cc \
        xcsv.cc tiger.cc easygps.cc \
        saroute.cc navicache.cc delgpl.cc \
        ozi.cc text.cc html.cc netstumbler.cc \
        igc.cc brauniger_iq.cc shape.cc hiketech.cc glogbook.cc \
        vcf.cc lowranceusr.cc an1.cc tomtom.cc \
        tef_xml.cc maggeo.cc vitosmt.cc gdb.cc bcr.cc \
        ignrando.cc stmwpp.cc cst.cc nmn4.cc compegps.cc \
        yahoo.cc unicsv.cc wfff_xml.cc garmin_txt.cc gpssim.cc \
        stmsdf.cc gtrnctr.cc dmtlog.cc raymarine.cc alan.cc vitovtt.cc \
        ggv_log.cc g7towin.cc garmin_gpi.cc lmx.cc random.cc xol.cc dg-100.cc \
        navilink.cc mtk_logger.cc ik3d.cc osm.cc destinator.cc exif.cc vidaone.cc \
        igo8.cc gopal.cc humminbird.cc mapasia.cc gnav_trl.cc navitel.cc ggv_ovl.cc \
        jtr.cc sbp.cc sbn.cc mmo.cc skyforce.cc itracku.cc v900.cc \
        pocketfms_bc.cc pocketfms_fp.cc pocketfms_wp.cc naviguide.cc enigma.cc \
        vpl.cc teletype.cc jogmap.cc bushnell.cc bushnell_trl.cc wintec_tes.cc \
        subrip.cc garmin_xt.cc garmin_fit.cc \
        mtk_locus.cc googledir.cc mapbar_track.cc mapfactor.cc f90g_track.cc \
        energympro.cc mynav.cc ggv_bin.cc globalsat_sport.cc geojson.cc qstarz_bl_1000.cc

DEPRECATED_FMTS=cetus.cc copilot.cc gpspilot.cc magnav.cc psp.cc gcdb.cc quovadis.cc gpilots.cc geoniche.cc palmdoc.cc hsa_ndv.cc coastexp.cc pathaway.cc coto.cc msroute.cc mag_pdb.cc axim_gpb.cc delbin.cc google.cc psitrex.cc

DEPRECATED_HEADERS=geo.h quovadis.h
DEPRECATED_SHAPE=pdbfile.cc

# ALL_FMTS=$$MINIMAL_FMTS
FILTERS=position.cc radius.cc duplicate.cc arcdist.cc polygon.cc smplrout.cc \
        reverse_route.cc sort.cc stackfilter.cc trackfilter.cc discard.cc \
        nukedata.cc interpolate.cc transform.cc height.cc swapdata.cc bend.cc \
        validate.cc
FILTER_HEADERS = $$FILTERS
FILTER_HEADERS ~= s/\.cc/.h/g

SHAPE=shapelib/shpopen.c shapelib/dbfopen.c shapelib/safileio.c

ZLIB=zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c zlib/inffast.c \
        zlib/inflate.c zlib/infback.c zlib/inftrees.c zlib/trees.c \
        zlib/uncompr.c zlib/gzlib.c zlib/gzclose.c zlib/gzread.c \
        zlib/gzwrite.c zlib/zutil.c

JEEPS += jeeps/gpsapp.cc jeeps/gpscom.cc \
         jeeps/gpsmath.cc jeeps/gpsmem.cc  \
         jeeps/gpsprot.cc jeeps/gpsread.cc \
         jeeps/gpsdevice.cc jeeps/gpsdevice_ser.cc jeeps/gpsdevice_usb.cc \
         jeeps/gpsrqst.cc jeeps/gpssend.cc jeeps/gpsserial.cc jeeps/jgpsutil.cc \
         jeeps/gpsusbread.cc jeeps/gpsusbsend.cc \
         jeeps/gpsusbcommon.cc


SUPPORT = route.cc waypt.cc filter_vecs.cc util.cc vecs.cc mkshort.cc \
          csv_util.cc strptime.c grtcirc.cc util_crc.cc xmlgeneric.cc \
          formspec.cc xmltag.cc cet.cc cet_util.cc fatal.cc rgbcolors.cc \
          inifile.cc garmin_fs.cc units.cc gbser.cc \
          gbfile.cc parse.cc session.cc main.cc globals.cc \
          src/core/textstream.cc \
          src/core/usasciicodec.cc \
          src/core/xmlstreamwriter.cc 

HEADERS =  \
	an1sym.h \
	cet.h \
	cet_util.h \
	csv_util.h \
	defs.h \
	dg-100.h \
	energympro.h \
	explorist_ini.h \
	filter.h \
	filter_vecs.h \
	format.h \
	formspec.h \
	garmin_device_xml.h \
	garmin_fit.h \
	garmin_fs.h \
	garmin_gpi.h \
	garmin_icon_tables.h \
	garmin_tables.h \
	gbfile.h \
	gbser.h \
	gbser_private.h \
	gbversion.h \
	geojson.h \
	ggv_bin.h \
	globalsat_sport.h \
	gpx.h \
	grtcirc.h \
	heightgrid.h \
	holux.h \
	inifile.h \
	jeeps/garminusb.h \
	jeeps/gps.h \
	jeeps/gpsapp.h \
	jeeps/gpscom.h \
	jeeps/gpsdatum.h \
	jeeps/gpsdevice.h \
	jeeps/gpsfmt.h \
	jeeps/gpsmath.h \
	jeeps/gpsmem.h \
	jeeps/gpsport.h \
	jeeps/gpsprot.h \
	jeeps/gpsread.h \
	jeeps/gpsrqst.h \
	jeeps/gpssend.h \
	jeeps/gpsserial.h \
	jeeps/gpsusbcommon.h \
	jeeps/gpsusbint.h \
	jeeps/gpsutil.h \
	kml.h \
	legacyformat.h \
	lowranceusr.h \
	magellan.h \
	mapsend.h \
	mynav.h \
	navilink.h \
	nmea.h \
	osm.h \
	random.h \
	session.h \
	shape.h \
	shapelib/shapefil.h \
	strptime.h \
	subrip.h \
	unicsv.h \
	units.h \
	vecs.h \
	xcsv.h \
	xmlgeneric.h \
	yahoo.h \
	zlib/crc32.h \
	zlib/deflate.h \
	zlib/gzguts.h \
	zlib/inffast.h \
	zlib/inffixed.h \
	zlib/inflate.h \
	zlib/inftrees.h \
	zlib/trees.h \
	zlib/zconf.h \
	zlib/zlib.h \
	zlib/zutil.h \
	src/core/datetime.h \
	src/core/file.h \
	src/core/logging.h \
	src/core/optional.h \
	src/core/textstream.h \
	src/core/usasciicodec.h \
	src/core/xmlstreamwriter.h \
	src/core/xmltag.h

HEADERS += $$FILTER_HEADERS

INCLUDEPATH += zlib

load(configure)

CONFIG(release, debug|release): DEFINES *= NDEBUG

macx|linux|openbsd {
  qtCompileTest(unistd) {
    # this is used by zlib
    DEFINES += HAVE_UNISTD_H
  }
  qtCompileTest(stdarg) {
    # this is used by zlib
    DEFINES += HAVE_STDARG_H
  }
  DEFINES += HAVE_LIBUSB_1_0
  SOURCES += gbser_posix.cc
  HEADERS += gbser_posix.h
  JEEPS += jeeps/gpslibusb.cc
  INCLUDEPATH += jeeps
}

win32 {
  DEFINES += __WIN32__ _CONSOLE
  DEFINES -= UNICODE ZLIB_INHIBITED
  CONFIG(debug, debug|release) {
    DEFINES += _DEBUG
  }
  SOURCES += gbser_win.cc
  HEADERS += gbser_win.h
  JEEPS += jeeps/gpsusbwin.cc
  LIBS += "-lsetupapi" 
  RC_FILE = win32/gpsbabel.rc
}

win32-msvc* {
  DEFINES += _CRT_SECURE_NO_DEPRECATE
  QMAKE_CXXFLAGS += /MP -wd4100
}

linux|openbsd {
  LIBS += "-lusb-1.0"
}

macx {
  LIBS += -lobjc -framework IOKit -framework CoreFoundation
  INCLUDEPATH += mac/libusb \
                 mac/libusb/Xcode
  SOURCES += mac/libusb/core.c \
             mac/libusb/descriptor.c \
             mac/libusb/hotplug.c \
             mac/libusb/io.c \
             mac/libusb/strerror.c \
             mac/libusb/sync.c \
             mac/libusb/os/darwin_usb.c \
             mac/libusb/os/poll_posix.c \
             mac/libusb/os/threads_posix.c
  HEADERS += mac/libusb/hotplug.h \
             mac/libusb/libusb.h \
             mac/libusb/libusbi.h \
             mac/libusb/version.h \
             mac/libusb/version_nano.h \
             mac/libusb/os/darwin_usb.h \
             mac/libusb/os/poll_posix.h \
             mac/libusb/os/threads_posix.h
}

SOURCES += $$ALL_FMTS $$FILTERS $$SUPPORT $$SHAPE $$ZLIB $$JEEPS

# We don't care about stripping things out of the build.  Full monty, baby.
DEFINES += MAXIMAL_ENABLED
DEFINES += FILTERS_ENABLED
DEFINES += SHAPELIB_ENABLED
DEFINES += CSVFMTS_ENABLED

# Creator insists on adding -W to -Wall which results in a completely
# absurd amount of jibber-jabber on perfectly legally formed code.
# Rather than wade through a thousand lines of yammer, let's just nuke -W
# but leave -Wall, which actually has useful stuff.
# Citation: http://stackoverflow.com/questions/18667291/disable-wall-compiler-warnings-in-a-qt-project
QMAKE_CFLAGS_WARN_ON -= -W
QMAKE_CXXFLAGS_WARN_ON -= -W

macx|linux|openbsd{
  check.commands = PNAME=./$(TARGET) ./testo
  check.depends = $(TARGET)
  QMAKE_EXTRA_TARGETS += check
}

# build the compilation data base used by clang tools including clang-tidy.
macx|linux|openbsd{
  compile_command_database.target = compile_commands.json
  compile_command_database.commands = make clean; bear make
  QMAKE_EXTRA_TARGETS += compile_command_database
}

# run clang-tidy
# example usage:
# make clang-tidy RUN_CLANG_TIDY_FLAGS="-header-filter=.*\\\.h -checks=-*,modernize-use-nullptr -fix"
# It seems to be better to use run-clang-tidy with the compilation database as opposed to
# running clang-tidy directly and listing the 
# compilation options on the clang-tidy line after --.
# An example is modernize-use-override which inserts repeadted overrides when run directly,
# but works as expected when run with run-clang-tidy.
clang-tidy.commands = run-clang-tidy.py $(RUN_CLANG_TIDY_FLAGS)
clang-tidy.depends = compile_commands.json
QMAKE_EXTRA_TARGETS += clang-tidy

# generate coverage report for codacy
# must use gcc, g++
# dependencies:
# extra ubuntu bionic packages: gcovr lcov
linux{
  coverage.commands = make clean;
  coverage.commands += rm -f gpsbabel_coverage.xml;
  coverage.commands += $(MAKE) CFLAGS=\"$(CFLAGS) -fprofile-arcs -ftest-coverage\" CXXFLAGS=\"$(CXXFLAGS) -fprofile-arcs -ftest-coverage\" LFLAGS=\"$(LFLAGS) --coverage\" &&
  coverage.commands += ./testo &&
  coverage.commands += gcov -r -o . $(SOURCES) &&
  coverage.commands += gcovr -k -r . --xml --exclude='zlib/*' --exclude='shapelib/*' -o gpsbabel_coverage.xml;
  coverage.commands += lcov --capture --directory . --no-external --output-file coverage.info;
  coverage.commands += genhtml coverage.info --output-directory coverage_report;
  QMAKE_EXTRA_TARGETS += coverage
}

cppcheck.commands = cppcheck --enable=all --force --config-exclude=zlib --config-exclude=shapelib $(INCPATH) $$ALL_FMTS $$FILTERS $$SUPPORT $$JEEPS
QMAKE_EXTRA_TARGETS += cppcheck

gpsbabel.pdf.depends = FORCE
gpsbabel.pdf.commands += perl xmldoc/makedoc && 
gpsbabel.pdf.commands += xmlwf xmldoc/readme.xml && #check for well-formedness
gpsbabel.pdf.commands += xmllint --noout --valid xmldoc/readme.xml &&   #validate
gpsbabel.pdf.commands += xsltproc -o gpsbabel.fo xmldoc/babelpdf.xsl xmldoc/readme.xml &&
gpsbabel.pdf.commands += HOME=. fop -q -fo gpsbabel.fo -pdf gpsbabel.pdf
#gpsbabel.pdf.commands += cp gpsbabel.pdf $(WEB)/htmldoc-$(DOCVERSION)/gpsbabel-$(DOCVERSION).pdf
QMAKE_EXTRA_TARGETS += gpsbabel.pdf