diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..b353d038d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +os: + - linux + - osx + +env: + - QT=4 + - QT=5 + +before_install: + - git clone --depth=1 https://github.com/GoldenCheetah/GoldenCheetah.git GoldenCheetah + - cp -R travis-ci GoldenCheetah/ + - cd GoldenCheetah + - pwd + - sh travis-ci/$TRAVIS_OS_NAME/before_install_QT$QT.sh $TRAVIS_OS_NAME $QT + +before_script: + - sh travis-ci/$TRAVIS_OS_NAME/before_script_QT$QT.sh $TRAVIS_OS_NAME $QT + +script: + - sh travis-ci/$TRAVIS_OS_NAME/script_QT$QT.sh $TRAVIS_OS_NAME $QT + +after_success: + - sh travis-ci/$TRAVIS_OS_NAME/after_success_QT$QT.sh $TRAVIS_OS_NAME $QT diff --git a/travis/after_success_QT4.sh b/travis/after_success_QT4.sh new file mode 100644 index 000000000..3ad54e14e --- /dev/null +++ b/travis/after_success_QT4.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo +echo "# arguments called with ----> ${@} " +echo "# \$1 ----------------------> $1 " +echo "# \$2 ----------------------> $2 " +echo "# path to me ---------------> ${0} " +echo "# parent path --------------> ${0%/*} " +echo "# my name ------------------> ${0##*/} " +echo +exit diff --git a/travis/after_success_QT5.sh b/travis/after_success_QT5.sh new file mode 100644 index 000000000..3ad54e14e --- /dev/null +++ b/travis/after_success_QT5.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo +echo "# arguments called with ----> ${@} " +echo "# \$1 ----------------------> $1 " +echo "# \$2 ----------------------> $2 " +echo "# path to me ---------------> ${0} " +echo "# parent path --------------> ${0%/*} " +echo "# my name ------------------> ${0##*/} " +echo +exit diff --git a/travis/before_install_QT4.sh b/travis/before_install_QT4.sh new file mode 100644 index 000000000..8b7c8ea84 --- /dev/null +++ b/travis/before_install_QT4.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +cat ${0} + +# Update brew +brew update + +# Install QT +brew install qt$QT + +# Install libical support +brew install libical + +# Install libusb support +brew install libusb libusb-compat + +# Install SRM support +brew install srmio + +# Install libmkl support +brew install --HEAD https://raw.github.com/gcoco/CI-for-GoldenCheetah/master/libkml.rb + +# Allo write to brew files for later deployment +sudo chmod -R +w /usr/local + +# Install qwtplot3d support +git clone --depth 1 https://github.com/sintegrial/qwtplot3d.git qwtplot3d +cd qwtplot3d +CC=clang CXX=clang++ /usr/local/opt/qt$QT/bin/qmake -makefile -recursive QMAKE_CXXFLAGS_WARN_ON+=-Wno-unused-private-field +CC=clang CXX=clang++ make -j2 +cd .. + +# Install kQOAuth support +git clone --branch 0.98 https://github.com/kypeli/kQOAuth.git kQOAuth-0.98 +cd kQOAuth-0.98 +CC=clang CXX=clang++ /usr/local/opt/qt$QT/bin/qmake -makefile -recursive QMAKE_CXXFLAGS_WARN_ON+=-Wno-unused-private-field +CC=clang CXX=clang++ make -j2 qmake_all +CC=clang CXX=clang++ sudo make install +cd .. + +# Install D2XX support +curl -O http://www.ftdichip.com/Drivers/D2XX/MacOSX/D2XX1.2.2.dmg +hdiutil mount D2XX1.2.2.dmg +mkdir D2XX +cp /Volumes/release/D2XX/Object/10.5-10.7/x86_64/libftd2xx.1.2.2.dylib D2XX +sudo cp /Volumes/release/D2XX/Object/10.5-10.7/x86_64/libftd2xx.1.2.2.dylib /usr/local/lib +cp /Volumes/release/D2XX/bin/*.h D2XX + +exit diff --git a/travis/before_install_QT5.sh b/travis/before_install_QT5.sh new file mode 100644 index 000000000..3ad54e14e --- /dev/null +++ b/travis/before_install_QT5.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo +echo "# arguments called with ----> ${@} " +echo "# \$1 ----------------------> $1 " +echo "# \$2 ----------------------> $2 " +echo "# path to me ---------------> ${0} " +echo "# parent path --------------> ${0%/*} " +echo "# my name ------------------> ${0##*/} " +echo +exit diff --git a/travis/before_script_QT4.sh b/travis/before_script_QT4.sh new file mode 100644 index 000000000..277098d01 --- /dev/null +++ b/travis/before_script_QT4.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Copy default files to actual build files + +cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri +cp src/gcconfig.pri.in src/gcconfig.pri + +# Modify src/gcconfig.pri with build specifics + +sed -i "" "s|#\(CONFIG += release.*\)|\1 static |" src/gcconfig.pri +sed -i "" "s|#\(QMAKE_LFLAGS\).*|\1_RELEASE += -mmacosx-version-min=10.7 |" src/gcconfig.pri +sed -i "" "s|#\(SRMIO_INSTALL =.*\)|\1 /usr/local|" src/gcconfig.pri +sed -i "" "s|#\(D2XX_INCLUDE =.*\)|\1 ../D2XX|" src/gcconfig.pri +sed -i "" "s|#\(D2XX_LIBS =.*\)|\1 -L../D2XX -lftd2xx.1.2.2|" src/gcconfig.pri +sed -i "" "s|#\(KQOAUTH_INSTALL =.*\)|\1 /usr/local|" src/gcconfig.pri +sed -i "" "s|#\(KQOAUTH_INCLUDE =.*\)|\1 \$\$[QT_INSTALL_LIBS]/kqoauth.framework/Headers|" src/gcconfig.pri +sed -i "" "s|#\(KQOAUTH_LIBS =.*\)|\1 -F\$\$[QT_INSTALL_LIBS] -framework kqoauth|" src/gcconfig.pri +sed -i "" "s|#\(QWT3D_INSTALL =.*\)|\1 ../../qwtplot3d|" src/gcconfig.pri +sed -i "" "s|#\(QWT3D_INCLUDE =.*\)|\1 /usr/local/include/qwtplot3d-$QT|" src/gcconfig.pri +sed -i "" "s|#\(QWT3D_LIBS =.*\)|\1 -L/usr/local/lib -lqwtplot3d-$QT|" src/gcconfig.pri +sed -i "" "s|#\(ICAL_INSTALL =.*\)|\1 /usr/local|" src/gcconfig.pri +sed -i "" "s|#\(ICAL_LIBS =.*\)|\1 -L/usr/local/lib -lical|" src/gcconfig.pri +sed -i "" "s|#\(LIBUSB_INSTALL =\).*|\1 /usr/local|" src/gcconfig.pri +sed -i "" "s|#\(LIBUSB_LIBS =.*\)|\1 -L/usr/local/lib -lusb|" src/gcconfig.pri +sed -i "" "s|#\(KML_INSTALL =.*\)|\1 /usr/local|" src/gcconfig.pri +sed -i "" "s|#\(KML_LIBS =.*\)|\1 -L/usr/local/lib -lkmlxsd -lkmlregionator -lkmldom -lkmlconvenience -lkmlengine -lkmlbase|" src/gcconfig.pri +sed -i "" "s|#\(QMAKE_CFLAGS_\).*|\1RELEASE += -mmacosx-version-min=10.7 -arch x86_64|" src/gcconfig.pri +sed -i "" "s|#\(QMAKE_CXXFLAGS_\).*|\1RELEASE += -mmacosx-version-min=10.7 -arch x86_64|" src/gcconfig.pri +sed -i "" "s|#\(DEFINES += GC_VIDEO_QUICKTIME.*\)|\1 |" src/gcconfig.pri +sed -i "" "s|#\(CONFIG += link_pkgconfig\)|\1|" src/gcconfig.pri +sed -i "" "s|#\(PKGCONFIG = .*\)|\1 libical libusb|" src/gcconfig.pri + +# Allow D2XX to be included in the deployment bundle + +sed -i "" "s|libftd2xx.dylib|@executable_path/../Frameworks/libftd2xx.1.2.2.dylib|" src/D2XX.cpp + +# Update translations +/usr/local/opt/qt/bin/lupdate src/src.pro + +exit diff --git a/travis/before_script_QT5.sh b/travis/before_script_QT5.sh new file mode 100644 index 000000000..3ad54e14e --- /dev/null +++ b/travis/before_script_QT5.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo +echo "# arguments called with ----> ${@} " +echo "# \$1 ----------------------> $1 " +echo "# \$2 ----------------------> $2 " +echo "# path to me ---------------> ${0} " +echo "# parent path --------------> ${0%/*} " +echo "# my name ------------------> ${0##*/} " +echo +exit diff --git a/travis/libkml.rb b/travis/libkml.rb new file mode 100644 index 000000000..9450fcfec --- /dev/null +++ b/travis/libkml.rb @@ -0,0 +1,64 @@ +require 'formula' + +class Libkml < Formula + homepage 'http://code.google.com/p/libkml/' + + stable do + url "https://libkml.googlecode.com/files/libkml-1.2.0.tar.gz" + sha1 "3fa5acdc2b2185d7f0316d205002b7162f079894" + + # Correct an issue where internal third-party libs (libminizip and liburiparser) + # are installed as dylibs. liburiparser conflicts with uriparser formula. + # libminizip conflicts with new formula, and some of its symbols have been + # renamed with prefixes of "libkml_", i.e, can't be linked against for other builds + # Fix just forces internal libs to be linked statically until the following + # is addressed upstream: https://code.google.com/p/libkml/issues/detail?id=50 + patch do + url "https://gist.githubusercontent.com/dakcarto/7419882/raw/10ae08af224b3fee0617fa6288d806d3ccf37c0f/libkml-1.2-static-deps" + sha1 "eba47421e64e75bcf68026bbbe7c985b3bebcde5" + end + end + + + head do + url 'https://github.com/google/libkml.git', + :revision => "9b50572641f671194e523ad21d0171ea6537426e" + + depends_on "autoconf" => :build + depends_on "automake" => :build + depends_on "libtool" => :build + end + + # Fix compilation with clang and gcc 4.7+ + # https://code.google.com/p/libkml/issues/detail?id=179 + patch :DATA if build.stable? + + def install + if build.head? + inreplace "third_party/Makefile.am" do |s| + s.sub! /(lib_LTLIBRARIES =) libminizip.la liburiparser.la/, "\\1" + s.sub! /(noinst_LTLIBRARIES = libgtest.la libgtest_main.la)/, + "\\1 libminizip.la liburiparser.la" + s.sub! /(libminizip_la_LDFLAGS =)/, "\\1 -static" + s.sub! /(liburiparser_la_LDFLAGS =)/, "\\1 -static" + end + system "./autogen.sh" + end + + system "./configure", "--prefix=#{prefix}" + system "make install" + end +end + +__END__ +diff --git a/src/kml/base/file_posix.cc b/src/kml/base/file_posix.cc +index 764ae55..8ee9892 100644 +--- a/src/kml/base/file_posix.cc ++++ b/src/kml/base/file_posix.cc +@@ -29,6 +29,7 @@ + #include "kml/base/file.h" + #include + #include ++#include + #include + #include diff --git a/travis/script_QT4.sh b/travis/script_QT4.sh new file mode 100644 index 000000000..3ad54e14e --- /dev/null +++ b/travis/script_QT4.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo +echo "# arguments called with ----> ${@} " +echo "# \$1 ----------------------> $1 " +echo "# \$2 ----------------------> $2 " +echo "# path to me ---------------> ${0} " +echo "# parent path --------------> ${0%/*} " +echo "# my name ------------------> ${0##*/} " +echo +exit diff --git a/travis/script_QT5.sh b/travis/script_QT5.sh new file mode 100644 index 000000000..3ad54e14e --- /dev/null +++ b/travis/script_QT5.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo +echo "# arguments called with ----> ${@} " +echo "# \$1 ----------------------> $1 " +echo "# \$2 ----------------------> $2 " +echo "# path to me ---------------> ${0} " +echo "# parent path --------------> ${0%/*} " +echo "# my name ------------------> ${0##*/} " +echo +exit