From 12938474d9693b611b78dae11a1103cd0aa4b2bb Mon Sep 17 00:00:00 2001
From: jlaura <jlaura@usgs.gov>
Date: Thu, 2 Aug 2018 08:27:20 -0700
Subject: [PATCH] Adds travis for linux (#53)

* Adds travis for linux

* Adds libcsm dep.

* Fixes a bad merge on find_path

* adds GTest to the repo for CI

* Removed commented code from tests/CMakeList.txt
---
 .gitmodules          |  3 +++
 .travis.yml          | 25 +++++++++++++++++++++++++
 CMakeLists.txt       | 19 +++++++++++++++----
 cmake/gtest.cmake    | 17 +++++++++++++++++
 gtest                |  1 +
 tests/CMakeLists.txt |  4 ----
 6 files changed, 61 insertions(+), 8 deletions(-)
 create mode 100644 .gitmodules
 create mode 100644 .travis.yml
 create mode 100644 cmake/gtest.cmake
 create mode 160000 gtest

diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..110ccc4
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "gtest"]
+	path = gtest
+	url = git@github.com:google/googletest.git
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..6a02fd2
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,25 @@
+language: cpp
+
+os: linux
+
+env:
+  - CSM_LIBRARY_PATH="$HOME/miniconda/lib"
+  - CSM_INCLUDE_PATH="$HOME/miniconda/include"
+ addons:
+   apt:
+     sources:
+       - ubuntu-toolchain-r-test
+     packages:
+       - g++-6
+
+install:
+  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
+       wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
+    else
+      curl -o miniconda.sh  https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh;
+    fi
+  - conda install -c usgs-astrogeology libcsm
+
+script:
+  - CXX=/usr/bin/g++-6 CC=/usr/bin/gcc-6 cmake .
+  - cmake --build . 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e9b245..0ce0128 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,12 @@
 cmake_minimum_required(VERSION 3.10)
 project(usgscsm VERSION 0.0.1 DESCRIPTION "usgscsm library")
 
+include(cmake/gtest.cmake)
+include(GNUInstallDirs)
+include(GoogleTest)
+
 set(CMAKE_CXX_STANDARD 11)
 
-include(GNUInstallDirs)
 add_library(usgscsm SHARED
             src/UsgsAstroFramePlugin.cpp
             src/UsgsAstroFrameSensorModel.cpp
@@ -22,8 +25,8 @@ set_target_properties(usgscsm PROPERTIES
     UsgsAstroLsStateData.h
 )
 
-find_library(CSM_LIBRARY csmapi REQUIRED)
-find_path(CSM_INCLUDE_DIR PATH_SUFFIXES csm NAMES csm.h)
+find_library(CSM_LIBRARY csmapi REQUIRED HINTS $ENV{CSM_LIBRARY_PATH})
+find_path(CSM_INCLUDE_DIR PATH_SUFFIXES csm NAMES csm.h HINTS $ENV{CSM_INCLUDE_PATH})
 
 target_include_directories(usgscsm
                            PUBLIC
@@ -32,12 +35,20 @@ target_include_directories(usgscsm
                            ${CSM_INCLUDE_DIR}
 )
 
-target_link_libraries(usgscsm ${CSM_LIBRARY})
+# Setup for GoogleTest
+
+find_package (Threads)
+
+target_link_libraries(usgscsm
+                      ${CSM_LIBRARY} 
+                      gtest ${CMAKE_THREAD_LIBS_INIT})
 
 install(TARGETS usgscsm
     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
     PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
 
+
+
 include(CTest)
 
 enable_testing()
diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake
new file mode 100644
index 0000000..5534ad2
--- /dev/null
+++ b/cmake/gtest.cmake
@@ -0,0 +1,17 @@
+set(GOOGLETEST_ROOT gtest/googletest CACHE STRING "Google Test source root")
+
+include_directories(SYSTEM
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/include
+    )
+
+set(GOOGLETEST_SOURCES
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest-all.cc
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest_main.cc
+    )
+
+foreach(_source ${GOOGLETEST_SOURCES})
+    set_source_files_properties(${_source} PROPERTIES GENERATED 1)
+endforeach()
+
+add_library(gtest ${GOOGLETEST_SOURCES})
\ No newline at end of file
diff --git a/gtest b/gtest
new file mode 160000
index 0000000..e5e2ef7
--- /dev/null
+++ b/gtest
@@ -0,0 +1 @@
+Subproject commit e5e2ef7cd27cc089c1d8302a11970ef870554294
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d4b6023..207b959 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,9 +1,5 @@
 cmake_minimum_required(VERSION 3.10)
 
-# Locate GTest
-find_package(GTest REQUIRED)
-include_directories(${GTEST_INCLUDE_DIRS})
-
 # Link runTests with what we want to test and the GTest and pthread library
 add_executable(runTests TestyMcTestFace.cpp)
 target_link_libraries(runTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
-- 
GitLab