|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
From aaf0fed5dccb53333ff2706be608be9c327707ea Mon Sep 17 00:00:00 2001
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
From: Mark Abraham <mark.j.abraham@gmail.com>
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
Date: Thu, 12 May 2016 17:39:18 +0200
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
Subject: [PATCH] Re-add support for linking against external TinyXML-2
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
I always intended this support, to permit convenient packaging of
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
GROMACS by distributions, but it got lost from gerrit while rebasing
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
from patch set 4 to 5 of I6153136.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
Fixes #1956
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
Change-Id: Ie76dc9e8c6116814439d813d5a9555c5bfb7bfc5
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
---
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
index 14f091b..2e64a6a 100644
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
--- a/CMakeLists.txt
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+++ b/CMakeLists.txt
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
@@ -512,6 +512,17 @@
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+option(GMX_EXTERNAL_TINYXML2 "Use external TinyXML-2 instead of compiling the version bundled with GROMACS." OFF)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+mark_as_advanced(GMX_EXTERNAL_TINYXML2)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+if(GMX_EXTERNAL_TINYXML2)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ # Find an external TinyXML-2 library.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ find_package(TinyXML-2 3.0.0)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ set(HAVE_TINYXML2 ${TinyXML2_FOUND})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ if(NOT HAVE_TINYXML2)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ message(FATAL_ERROR "External TinyXML-2 could not be found, please adjust your search paths")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
option(GMX_EXTRAE "Add support for tracing using EXTRAE" OFF)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
mark_as_advanced(GMX_EXTRAE)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
diff --git a/cmake/FindTinyXML-2.cmake b/cmake/FindTinyXML-2.cmake
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
new file mode 100644
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
index 0000000..3bea516
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
--- /dev/null
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+++ b/cmake/FindTinyXML-2.cmake
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
@@ -0,0 +1,89 @@
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# This file is part of the GROMACS molecular simulation package.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# Copyright (c) 2016, by the GROMACS development team, led by
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# and including many others, as listed in the AUTHORS file in the
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# top-level source directory and at http://www.gromacs.org.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# GROMACS is free software; you can redistribute it and/or
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# modify it under the terms of the GNU Lesser General Public License
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# as published by the Free Software Foundation; either version 2.1
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# of the License, or (at your option) any later version.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# GROMACS is distributed in the hope that it will be useful,
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# Lesser General Public License for more details.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# You should have received a copy of the GNU Lesser General Public
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# License along with GROMACS; if not, see
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# http://www.gnu.org/licenses, or write to the Free Software Foundation,
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# If you want to redistribute modifications to GROMACS, please
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# consider that scientific software is very special. Version
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# control is crucial - bugs must be traceable. We will be happy to
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# consider code for inclusion in the official distribution, but
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# derived work must not be called official GROMACS. Details are found
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# in the README & COPYING files - if they are missing, get the
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# official version at http://www.gromacs.org.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# To help us fund GROMACS development, we humbly ask that you cite
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# the research papers on the package. Check out http://www.gromacs.org.
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# This package tries to find the TinyXML-2 library. It will consider
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# the directory ${TinyXML2_DIR} in its search. Upon exit, the
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# following variables may be set:
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# TinyXML2_FOUND - TinyXML-2 was found
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# TinyXML2_INCLUDE_DIR - TinyXML-2 include directory
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# TinyXML2_LIBRARIES - TinyXML-2 libraries
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# TinyXML2_LINKS_OK - TinyXML-2 libraries link correctly
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# TinyXML2_VERSION - TinyXML-2 version string as "major.minor"
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+find_package(PkgConfig QUIET)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+if(PKG_CONFIG_FOUND)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ if(TinyXML2_FIND_VERSION)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ if(TinyXML2_FIND_VERSION_EXACT)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ pkg_check_modules(PC_TINYXML2 QUIET tinyxml2=${TinyXML2_FIND_VERSION})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ else()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ pkg_check_modules(PC_TINYXML2 QUIET tinyxml2>=${TinyXML2_FIND_VERSION})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ else()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ pkg_check_modules(PC_TINYXML2 QUIET tinyxml2)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# Try to find tinyxml2, perhaps with help from pkg-config
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+find_path(TinyXML2_INCLUDE_DIR tinyxml2.h PATHS "${TinyXML2_DIR}" "${PC_TINYXML2_INCLUDE_DIRS}" PATH_SUFFIXES include)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+find_library(TinyXML2_LIBRARIES NAMES tinyxml2 PATHS "${TinyXML2_DIR}" "${PC_TINYXML2_LIBRARIES}" PATH_SUFFIXES lib64 lib)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+if(TinyXML2_INCLUDE_DIR AND EXISTS "${TinyXML2_INCLUDE_DIR}/tinyxml2.h" AND TinyXML2_LIBRARIES)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ file(STRINGS "${TinyXML2_INCLUDE_DIR}/tinyxml2.h" _TinyXML2_H_MAJOR REGEX "TIXML2_MAJOR_VERSION = [0-9]+;")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ file(STRINGS "${TinyXML2_INCLUDE_DIR}/tinyxml2.h" _TinyXML2_H_MINOR REGEX "TIXML2_MINOR_VERSION = [0-9]+;")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ string(REGEX REPLACE "TIXML2_MAJOR_VERSION = ([0-9]+);" "\\1" _TinyXML2_MAJOR_VERSION "${_TinyXML2_H_MAJOR}")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ string(REGEX REPLACE "TIXML2_MINOR_VERSION = ([0-9]+);" "\\1" _TinyXML2_MINOR_VERSION "${_TinyXML2_H_MINOR}")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ set(TinyXML2_VERSION "${_TinyXML2_MAJOR_VERSION}.${_TinyXML2_MINOR_VERSION}")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+# Make sure we can also link, so that cross-compilation is properly supported
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+if (TinyXML2_INCLUDE_DIR AND TinyXML2_LIBRARIES)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ include(CheckCXXSourceCompiles)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ set(CMAKE_REQUIRED_INCLUDES ${TinyXML2_INCLUDE_DIR})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ set(CMAKE_REQUIRED_LIBRARIES ${TinyXML2_LIBRARIES})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ check_cxx_source_compiles("#include <tinyxml2.h>\nint main(){tinyxml2::XMLDocument doc;}" TinyXML2_LINKS_OK)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+include(FindPackageHandleStandardArgs)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+find_package_handle_standard_args(TinyXML2
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ FOUND_VAR
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ TinyXML2_FOUND
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ REQUIRED_VARS
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ TinyXML2_INCLUDE_DIR
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ TinyXML2_LIBRARIES
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ TinyXML2_LINKS_OK
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ VERSION_VAR
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ TinyXML2_VERSION)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+mark_as_advanced(TinyXML2_INCLUDE_DIR TinyXML2_LIBRARIES)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
diff --git a/src/testutils/CMakeLists.txt b/src/testutils/CMakeLists.txt
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
index eb0fa8d..2bd34f4 100644
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
--- a/src/testutils/CMakeLists.txt
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+++ b/src/testutils/CMakeLists.txt
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
@@ -48,8 +48,11 @@
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
testoptions.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
textblockmatchers.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
xvgtest.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
- ../external/tinyxml2/tinyxml2.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+if(NOT HAVE_TINYXML2)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ list(APPEND TESTUTILS_SOURCES ../external/tinyxml2/tinyxml2.cpp)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
add_library(testutils STATIC ${UNITTEST_TARGET_OPTIONS} ${TESTUTILS_SOURCES})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
set(TESTUTILS_LIBS testutils)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
@@ -57,6 +60,13 @@
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
set_property(TARGET testutils APPEND PROPERTY COMPILE_FLAGS "${GMOCK_COMPILE_FLAGS}")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
target_link_libraries(testutils libgromacs ${GMOCK_LIBRARIES})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+if(HAVE_TINYXML2)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ include_directories(SYSTEM ${TinyXML2_INCLUDE_DIR})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ target_link_libraries(testutils ${TinyXML2_LIBRARIES})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+else()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+ include_directories(BEFORE SYSTEM "../external/tinyxml2")
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+endif()
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
set(TESTUTILS_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
set(TESTUTILS_DIR ${TESTUTILS_DIR} PARENT_SCOPE)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
set(TESTUTILS_LIBS ${TESTUTILS_LIBS} PARENT_SCOPE)
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
diff --git a/src/testutils/refdata-xml.cpp b/src/testutils/refdata-xml.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
index ae2eadd..bdf6018 100644
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
--- a/src/testutils/refdata-xml.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+++ b/src/testutils/refdata-xml.cpp
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
@@ -44,7 +44,7 @@
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
#include "refdata-xml.h"
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
-#include "external/tinyxml2/tinyxml2.h"
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
+#include <tinyxml2.h>
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
#include "gromacs/utility/exceptions.h"
|
|
Dominik 'Rathann' Mierzejewski |
a2ef00b |
|