From 00f434dca943378a29efd5b65623118b6e11a8a0 Mon Sep 17 00:00:00 2001 From: Scott R Charlton Date: Fri, 3 Apr 2015 00:05:24 +0000 Subject: [PATCH] enabled iphreeqc cmake to be standalone git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@9464 1feff8c3-07ed-0310-ac33-dd36852eb9cd --- CMakeLists.txt | 129 ++++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 70 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15645c89..2a13a3af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,43 +1,40 @@ cmake_minimum_required (VERSION 2.8) -include(CheckLanguage) -check_language(Fortran) -if (CMAKE_Fortran_COMPILER) - enable_language(Fortran) -endif() - -if (POLICY CMP0054) - cmake_policy(PUSH) - cmake_policy(SET CMP0054 OLD) -endif() project (IPhreeqc CXX C) -if (POLICY CMP0054) - cmake_policy(POP) + +# check if this is the root project +if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) + set(STANDALONE_BUILD 1) +else() + set(STANDALONE_BUILD 0) endif() -### overide docdir on windows -##if(WIN32 AND NOT CMAKE_INSTALL_DOCDIR) -## set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (doc)") -## set(CMAKE_INSTALL_DOCDIR "doc") -##endif() + +# overide docdir on windows +if(WIN32 AND NOT CMAKE_INSTALL_DOCDIR) + set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (doc)") + set(CMAKE_INSTALL_DOCDIR "doc") +endif() + +# set standard directory locations +include(GNUInstallDirs) + # Fortran -if (NOT IPHREEQC_BUILD_FORTRAN) - if (NOT CMAKE_Fortran_COMPILER OR CMAKE_Fortran_COMPILER STREQUAL "CMAKE_Fortran_COMPILER-NOTFOUND") - option (IPHREEQC_BUILD_FORTRAN "Build FORTRAN support" OFF) +if (STANDALONE_BUILD EQUAL 1) + if (NOT IPHREEQC_FORTRAN_TESTING) + if (NOT CMAKE_Fortran_COMPILER OR CMAKE_Fortran_COMPILER STREQUAL "CMAKE_Fortran_COMPILER-NOTFOUND") + option (IPHREEQC_FORTRAN_TESTING "Build Fortran test" OFF) + else() + option (IPHREEQC_FORTRAN_TESTING "Build Fortran test" ON) + endif() else() - option (IPHREEQC_BUILD_FORTRAN "Build FORTRAN support" ON) + if (IPHREEQC_FORTRAN_TESTING) + enable_language(Fortran) + endif() endif() -else() - if (IPHREEQC_BUILD_FORTRAN) - enable_language(Fortran) - ##include(FortranCInterface) - ##FortranCInterface_HEADER(FC.h MACRO_NAMESPACE "FC_") - ##FortranCInterface_VERIFY(CXX QUIET) - endif() endif() -include(GNUInstallDirs) # Disable deprecation warnings for standard C and STL functions in VS2005 # and later @@ -80,7 +77,7 @@ src/phreeqcpp/dense.cpp src/phreeqcpp/dense.h src/phreeqcpp/dumper.cpp src/phreeqcpp/dumper.h -src/phreeqcpp/dw.cpp +#src/phreeqcpp/dw.cpp src/phreeqcpp/gases.cpp src/phreeqcpp/global_structures.h src/phreeqcpp/input.cpp @@ -203,29 +200,20 @@ src/phreeqcpp/Utils.h # compile Var.c as c++ SET_SOURCE_FILES_PROPERTIES(src/Var.c PROPERTIES LANGUAGE CXX) -### maybe always include? -##if (PHREEQCRM_BUILD_FORTRAN) -## SET(PhreeqcRM_SOURCES -## ${PhreeqcRM_SOURCES} -## RM_interface_F.cpp -## ) -##endif () - - -##if (IPHREEQC_BUILD_FORTRAN AND MSVC) -## SET(IPhreeqc_SOURCES -## ${IPhreeqc_SOURCES} -## src/fwrap.cpp -## src/fwrap1.cpp -## src/fwrap2.cpp -## src/fwrap3.cpp -## src/fwrap4.cpp -## src/fwrap5.cpp -## src/fwrap6.cpp -## src/fwrap7.cpp -## src/fwrap8.cpp -## ) -##endif () +# always include fwrap files +SET(IPhreeqc_SOURCES +${IPhreeqc_SOURCES} +src/fimpl.h +src/fwrap.cpp +src/fwrap1.cpp +src/fwrap2.cpp +src/fwrap3.cpp +src/fwrap4.cpp +src/fwrap5.cpp +src/fwrap6.cpp +src/fwrap7.cpp +src/fwrap8.cpp +) # setup include directories include_directories("${PROJECT_SOURCE_DIR}") @@ -238,28 +226,24 @@ OPTION(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) SET(LIB_TYPE STATIC) if (BUILD_SHARED_LIBS) SET(LIB_TYPE SHARED) - if (MSVC) - OPTION(BUILD_CLR_LIBS "Build CLR Libraries" OFF) + if (STANDALONE_BUILD EQUAL 1) + if (MSVC) + OPTION(BUILD_CLR_LIBS "Build CLR Libraries" OFF) + endif() endif() endif() add_library(IPhreeqc ${LIB_TYPE} ${IPhreeqc_SOURCES}) set_target_properties(IPhreeqc PROPERTIES DEBUG_POSTFIX "d") SET(IPhreeqc_Headers +${PROJECT_SOURCE_DIR}/src/IPhreeqc.f.inc +${PROJECT_SOURCE_DIR}/src/IPhreeqc.f90.inc ${PROJECT_SOURCE_DIR}/src/IPhreeqc.h ${PROJECT_SOURCE_DIR}/src/IPhreeqc.hpp ${PROJECT_SOURCE_DIR}/src/IPhreeqcCallbacks.h ${PROJECT_SOURCE_DIR}/src/Var.h ) -##if (PHREEQCRM_BUILD_FORTRAN) -## SET(PhreeqcRM_Headers -## ${PhreeqcRM_Headers} -## $(PROJECT_SOURCE_DIR)/RM_interface_F.h -## $(PROJECT_SOURCE_DIR)/IPhreeqcPhast/IPhreeqc/IPhreeqc.f90.inc -## $(PROJECT_SOURCE_DIR)/IPhreeqcPhast/IPhreeqc/IPhreeqc.f.inc -## ) -##endif () # Setup references for /CLR if (MSVC AND BUILD_SHARED_LIBS AND BUILD_CLR_LIBS) @@ -305,10 +289,12 @@ if (WIN32) endif() # install -install(TARGETS IPhreeqc DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(FILES ${IPhreeqc_Headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -if (BUILD_CLR_LIBS) - install(FILES "${PROJECT_SOURCE_DIR}/src/phreeqcpp/ZedGraph.dll" DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if (STANDALONE_BUILD EQUAL 1) + install(TARGETS IPhreeqc DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(FILES ${IPhreeqc_Headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + if (BUILD_CLR_LIBS) + install(FILES "${PROJECT_SOURCE_DIR}/src/phreeqcpp/ZedGraph.dll" DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() endif() ##IF(MSVC) @@ -329,7 +315,10 @@ endif() ## ) ##ENDIF(MSVC) -# tests -enable_testing() -add_subdirectory(tests) +if (STANDALONE_BUILD EQUAL 1) + # tests + enable_testing() + + add_subdirectory(tests) +endif()