mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-10 06:28:03 -05:00
* Fix build of LibreOffice wrapper for LibreOffice SDK >= 7.5 In the LibreOffice SDK version 7.4 the "idlc" and "regmerge" tools were deprecated and replaced by the new UNOIDL compiler "unoidl-write". The old tools have been removed from version 7.5 onwards. Thus, the build process is changed to use the new compiler. - The new binary type libary format produced by "unoidl-write" has already been used internally since LibreOffice 4.1 in 2013, so that extensions built with the new compiler will also run on older office versions. The minimal LibreOffice version for the extension is therefore changed to 4.1 - With the "unoidl-write" compiler some API changes were introduced. Identifiers containing underscores must start with an uppercase letter, as identifiers with underscores and starting with a lowercase letter are reserved for internal purposes. Thus, the naming of some functions used in the extension is changed. * Enable install of CoolProp python package dev versions If the LibreOffice extension was built for a development version, then it should also download the appropriate development version of the CoolProp python package. * Add a builder for LibreOffice wrapper * Add LibreOffice builder to release workflow
2121 lines
78 KiB
CMake
2121 lines
78 KiB
CMake
cmake_minimum_required(VERSION 2.8.11)
|
|
|
|
include(CheckIncludeFileCXX)
|
|
|
|
if(DEFINED COOLPROP_INSTALL_PREFIX)
|
|
#set(COOLPROP_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install_root)
|
|
message(STATUS "COOLPROP_INSTALL_PREFIX=${COOLPROP_INSTALL_PREFIX}")
|
|
else()
|
|
set(COOLPROP_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install_root)
|
|
message(STATUS "COOLPROP_INSTALL_PREFIX=${COOLPROP_INSTALL_PREFIX}")
|
|
endif()
|
|
|
|
set(CMAKE_INSTALL_PREFIX
|
|
${COOLPROP_INSTALL_PREFIX}
|
|
CACHE PATH "default install path" FORCE)
|
|
|
|
#######################################
|
|
# BUILD OPTIONS #
|
|
#-------------------------------------#
|
|
# These options are available to be #
|
|
# modified in the build process. #
|
|
# packages may want to modify these #
|
|
# to suit, or just leave as defaults. #
|
|
#######################################
|
|
|
|
option(COOLPROP_STATIC_LIBRARY "Build CoolProp as a static library (.lib, .a)"
|
|
OFF)
|
|
|
|
option(COOLPROP_SHARED_LIBRARY "Build CoolProp as a shared library (.dll, .so)"
|
|
OFF)
|
|
|
|
option(COOLPROP_OBJECT_LIBRARY
|
|
"Build CoolProp objects, but do not link them (.obj, .o)" OFF)
|
|
|
|
option(COOLPROP_EES_MODULE "Build the EES module" OFF)
|
|
|
|
option(COOLPROP_WINDOWS_PACKAGE "Build the Windows installer" OFF)
|
|
|
|
option(BUILD_TESTING "Enable testing for this given builder" OFF)
|
|
|
|
option(FORCE_BITNESS_32 "Force a 32bit build regardless of the host" OFF)
|
|
|
|
option(FORCE_BITNESS_64 "Force a 64bit build regardless of the host" OFF)
|
|
|
|
option(FORCE_BITNESS_NATIVE
|
|
"Force a native bitness build regardless of the host" OFF)
|
|
|
|
option(COOLPROP_RELEASE "Optimize the builds with the release specs" OFF)
|
|
|
|
option(COOLPROP_DEBUG "Make a debug build" OFF)
|
|
|
|
option(COOLPROP_SMATH_WORK_INPLACE "Build SMath wrapper in source directory"
|
|
OFF)
|
|
|
|
option(
|
|
COOLPROP_MSVC_STATIC
|
|
"Statically link Microsoft Standard library removes dependency on MSVCRXXX.dll."
|
|
OFF)
|
|
|
|
option(
|
|
COOLPROP_MSVC_DYNAMIC
|
|
"Dynamically link Microsoft Standard library to integrate with other builds."
|
|
OFF)
|
|
|
|
option(
|
|
COOLPROP_MSVC_DEBUG
|
|
"Link the debug version of Microsoft Standard library to the debug builds."
|
|
ON)
|
|
|
|
option(COOLPROP_NO_EXAMPLES
|
|
"Do not generate example code, does only apply to some wrappers." OFF)
|
|
|
|
#option (DARWIN_USE_LIBCPP
|
|
# "On Darwin systems, compile and link with -std=libc++ instead of the default -std=libstdc++"
|
|
# ON)
|
|
|
|
# Force C++11 since lambdas are used in CPStrings.h
|
|
# In the future, we may want to force C++14 since std::make_unique is used in DataStructures.cpp
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
# see
|
|
# https://stackoverflow.com/questions/52509602/cant-compile-c-program-on-a-mac-after-upgrade-to-mojave
|
|
# https://support.enthought.com/hc/en-us/articles/204469410-OS-X-GCC-Clang-and-Cython-in-10-9-Mavericks
|
|
# https://github.com/pandas-dev/pandas/pull/24274/files
|
|
# https://github.com/explosion/thinc/pull/84/files
|
|
# https://github.com/jlfaucher/builder/commit/d144d3a695949f90c5e2acff4dfd94fdcf8dcdfa
|
|
# https://github.com/CoolProp/CoolProp/issues/1778
|
|
# https://gitlab.kitware.com/cmake/cmake/issues/18396
|
|
if(DEFINED DARWIN_USE_LIBCPP)
|
|
if(DARWIN_USE_LIBCPP)
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET
|
|
"10.9"
|
|
CACHE STRING "Minimum OS X deployment version")
|
|
set(OSX_COMPILE_FLAGS "${OSX_COMPILE_FLAGS} -stdlib=libc++")
|
|
set(OSX_COMPILE_FLAGS "${OSX_COMPILE_FLAGS} -mmacosx-version-min=10.9")
|
|
#set(OSX_COMPILE_FLAGS "${OSX_COMPILE_FLAGS} -std=c++11")
|
|
set(OSX_LINK_FLAGS "${OSX_LINK_FLAGS} -lc++")
|
|
set(OSX_LINK_FLAGS "${OSX_LINK_FLAGS} -nodefaultlibs")
|
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
|
else(DARWIN_USE_LIBCPP)
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET
|
|
"10.5"
|
|
CACHE STRING "Minimum OS X deployment version") # Default is 10.7
|
|
set(OSX_COMPILE_FLAGS "${OSX_COMPILE_FLAGS} -stdlib=libstdc++")
|
|
set(OSX_COMPILE_FLAGS "${OSX_COMPILE_FLAGS} -mmacosx-version-min=10.5")
|
|
set(OSX_LINK_FLAGS "${OSX_LINK_FLAGS} -lstdc++")
|
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")
|
|
endif(DARWIN_USE_LIBCPP)
|
|
message(STATUS "DARWIN_USE_LIBCPP was set added some flags:")
|
|
message(STATUS " OSX_COMPILE_FLAGS: ${OSX_COMPILE_FLAGS}")
|
|
message(STATUS " OSX_LINK_FLAGS: ${OSX_LINK_FLAGS}")
|
|
else(DEFINED DARWIN_USE_LIBCPP)
|
|
if("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
|
message(STATUS "OSX build detected:")
|
|
message(
|
|
STATUS " You might want to pass the -DDARWIN_USE_LIBCPP=ON/OFF parameter"
|
|
)
|
|
message(STATUS " to enable or disable different C++ standard libraries.")
|
|
message(
|
|
STATUS
|
|
" You can also specify the environment variable MACOSX_DEPLOYMENT_TARGET=10.9 to force clang builds."
|
|
)
|
|
endif("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
|
endif(DEFINED DARWIN_USE_LIBCPP)
|
|
|
|
#if("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
|
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}${OSX_COMPILE_FLAGS}")
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${OSX_COMPILE_FLAGS}")
|
|
#endif()
|
|
# Alternatively you could use
|
|
# set_target_properties(TARGET_NAME PROPERTIES APPEND_STRING PROPERTY COMPILE_FLAGS "-mmacosx-version-min=10.5")
|
|
# set_target_properties(TARGET_NAME PROPERTIES APPEND_STRING PROPERTY LINK_FLAGS "-mmacosx-version-min=10.5")
|
|
|
|
#######################################
|
|
# PROJECT INFORMATION #
|
|
#-------------------------------------#
|
|
# This CMakeLists.txt file is for the #
|
|
# CoolProp thermodynamic library #
|
|
# written by Ian Bell. The following #
|
|
# section contains project and #
|
|
# version information. #
|
|
#######################################
|
|
|
|
# Project name
|
|
set(project_name "CoolProp")
|
|
set(app_name ${project_name})
|
|
project(${project_name})
|
|
|
|
# Project version
|
|
set(COOLPROP_VERSION_MAJOR 6)
|
|
set(COOLPROP_VERSION_MINOR 6)
|
|
set(COOLPROP_VERSION_PATCH 1)
|
|
set(COOLPROP_VERSION_REVISION dev)
|
|
set(COOLPROP_VERSION
|
|
"${COOLPROP_VERSION_MAJOR}.${COOLPROP_VERSION_MINOR}.${COOLPROP_VERSION_PATCH}${COOLPROP_VERSION_REVISION}"
|
|
)
|
|
message(STATUS "CoolProp version: ${COOLPROP_VERSION}")
|
|
|
|
string(TIMESTAMP COOLPROP_YEAR 2010-%Y)
|
|
#set ( COOLPROP_YEAR "2010-2016" )
|
|
set(COOLPROP_PUBLISHER "The CoolProp developers")
|
|
|
|
# Add definitions to silence warnings in MSVC2017 related to shared ptr code.
|
|
#if (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS_EQUAL 1919) # OR MSVC_TOOLSET_VERSION EQUAL 141) # This requuires CMake >= 3.7
|
|
# add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
|
|
#endif (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS_EQUAL 1919)
|
|
|
|
if(MSVC
|
|
AND NOT (MSVC_VERSION LESS 1910)
|
|
AND NOT (MSVC_VERSION GREATER 1919))
|
|
add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
|
|
endif()
|
|
|
|
if(COOLPROP_RELEASE AND COOLPROP_DEBUG)
|
|
message(FATAL_ERROR "You can only make a release OR and debug build.")
|
|
endif()
|
|
if(COOLPROP_RELEASE)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
elseif(COOLPROP_DEBUG)
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
#ELSEIF ("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
|
# IF("${COOLPROP_VERSION_REVISION}" STREQUAL "dev")
|
|
# SET(CMAKE_BUILD_TYPE Debug)
|
|
# ELSE ()
|
|
# SET(CMAKE_BUILD_TYPE Release)
|
|
# ENDIF()
|
|
endif()
|
|
|
|
if(COOLPROP_MSVC_STATIC)
|
|
set(COOLPROP_MSVC_REL "/MT")
|
|
if(COOLPROP_MSVC_DEBUG)
|
|
set(COOLPROP_MSVC_DBG "/MTd")
|
|
else()
|
|
set(COOLPROP_MSVC_DBG "/MT")
|
|
endif()
|
|
elseif(COOLPROP_MSVC_DYNAMIC)
|
|
set(COOLPROP_MSVC_REL "/MD")
|
|
if(COOLPROP_MSVC_DEBUG)
|
|
set(COOLPROP_MSVC_DBG "/MDd")
|
|
else()
|
|
set(COOLPROP_MSVC_DBG "/MD")
|
|
endif()
|
|
else(COOLPROP_MSVC_DYNAMIC)
|
|
set(COOLPROP_MSVC_REL "IGNORE")
|
|
set(COOLPROP_MSVC_DBG "IGNORE")
|
|
endif()
|
|
|
|
set(COOLPROP_MSVC_ALL "/MTd" "/MT" "/MDd" "/MD"
|
|
)# order matters "/MXd" before "/MX"
|
|
|
|
#######################################
|
|
# FIND ALL SOURCES #
|
|
#-------------------------------------#
|
|
# The project is organised with #
|
|
# split includes and source folders #
|
|
# this makes it easier for developers #
|
|
# to quickly find relevant includes. #
|
|
# This section finds all sources, #
|
|
# headers and corresponding dirs. #
|
|
#######################################
|
|
|
|
# These backends will be compiled in
|
|
set(COOLPROP_ENABLED_BACKENDS
|
|
Cubics
|
|
IF97
|
|
Helmholtz
|
|
REFPROP
|
|
Incompressible
|
|
Tabular
|
|
PCSAFT)
|
|
|
|
# Get everything in the src/ directory (always), but not recursive
|
|
file(GLOB APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
|
|
|
|
# For each enabled backend, grab its files
|
|
foreach(backend ${COOLPROP_ENABLED_BACKENDS})
|
|
file(GLOB_RECURSE BACKEND_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/Backends/${backend}/*.cpp")
|
|
list(APPEND APP_SOURCES ${BACKEND_SOURCES})
|
|
endforeach()
|
|
|
|
## You can exclude this file, in case you want to run your own tests or use Catch
|
|
list(REMOVE_ITEM APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/Tests/Tests.cpp")
|
|
list(REMOVE_ITEM APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/Tests/CoolProp-Tests.cpp")
|
|
|
|
## This file is only needed for the library, normal builds do not need it.
|
|
list(REMOVE_ITEM APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolPropLib.cpp")
|
|
|
|
set(APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/externals/Eigen")
|
|
list(APPEND APP_INCLUDE_DIRS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/externals/msgpack-c/include")
|
|
list(APPEND APP_INCLUDE_DIRS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/externals/fmtlib/include")
|
|
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/externals/fmtlib"
|
|
)# should be deprecated
|
|
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
|
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
|
|
## Set endianess for msgpack on ARM64 with MSVC
|
|
#if(MSVC)
|
|
# if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64")
|
|
# message(STATUS "Forcing msgpack-c to use little endian configuration")
|
|
# add_compile_definitions(MSGPACK_ENDIAN_LITTLE_BYTE)
|
|
# endif()
|
|
#endif()
|
|
|
|
include_directories(${APP_INCLUDE_DIRS})
|
|
|
|
set(SWIG_DEPENDENCIES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/DataStructures.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/CoolProp.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/AbstractState.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/Configuration.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/PhaseEnvelope.h)
|
|
|
|
set(COOLPROP_APP_SOURCES
|
|
${APP_SOURCES}
|
|
CACHE LIST "List of CPP sources needed for CoolProp")
|
|
set(COOLPROP_INCLUDE_DIRECTORIES
|
|
${APP_INCLUDE_DIRS}
|
|
CACHE LIST "List of include directories needed for CoolProp")
|
|
|
|
#######################################
|
|
# REQUIRED MODULES #
|
|
#-------------------------------------#
|
|
# CoolProp requires some standard OS #
|
|
# features, these include: #
|
|
# DL (CMAKE_DL_LIBS) for REFPROP #
|
|
#######################################
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/dev/cmake/Modules/")
|
|
|
|
set(Python_ADDITIONAL_VERSIONS 2.7 2.6 2.5 2.4)
|
|
find_package(PythonInterp 2.7)
|
|
if(NOT PYTHON_EXECUTABLE)
|
|
message(STATUS "Looking for Python")
|
|
find_package(Python COMPONENTS Interpreter)
|
|
endif()
|
|
if(NOT PYTHON_EXECUTABLE)
|
|
message(STATUS "Looking for Python2")
|
|
find_package(Python2 COMPONENTS Interpreter)
|
|
if(Python2_Interpreter_FOUND)
|
|
set(PYTHON_EXECUTABLE ${Python2_EXECUTABLE})
|
|
endif()
|
|
endif()
|
|
if(NOT PYTHON_EXECUTABLE)
|
|
message(STATUS "Looking for Python3")
|
|
find_package(Python3 COMPONENTS Interpreter)
|
|
if(Python3_Interpreter_FOUND)
|
|
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
|
endif()
|
|
endif()
|
|
if(NOT PYTHON_EXECUTABLE)
|
|
message(WARNING "Could not find Python, be prepared for errors.")
|
|
endif()
|
|
|
|
if(CMAKE_DL_LIBS)
|
|
find_package(${CMAKE_DL_LIBS} REQUIRED)
|
|
endif()
|
|
|
|
include(FlagFunctions) # Is found since it is in the module path.
|
|
macro(modify_msvc_flag_release flag_new) # Use a macro to avoid a new scope
|
|
foreach(flag_old IN LISTS COOLPROP_MSVC_ALL)
|
|
remove_compiler_flag_release("${flag_old} ") # add a space
|
|
remove_compiler_flag_release(" ${flag_old}") # add a space
|
|
endforeach()
|
|
add_compiler_flag_release("${flag_new}")
|
|
endmacro()
|
|
macro(modify_msvc_flag_debug flag_new) # Use a macro to avoid a new scope
|
|
foreach(flag_old IN LISTS COOLPROP_MSVC_ALL)
|
|
remove_compiler_flag_debug("${flag_old} ") # add a space
|
|
remove_compiler_flag_debug(" ${flag_old}") # add a space
|
|
endforeach()
|
|
add_compiler_flag_debug("${flag_new}")
|
|
endmacro()
|
|
macro(modify_msvc_flags flag_default) # Use a macro to avoid a new scope
|
|
if(NOT "${COOLPROP_MSVC_REL}" STREQUAL "IGNORE")
|
|
modify_msvc_flag_release("${COOLPROP_MSVC_REL}")
|
|
else()
|
|
modify_msvc_flag_release("${flag_default}")
|
|
endif()
|
|
if(NOT "${COOLPROP_MSVC_DBG}" STREQUAL "IGNORE")
|
|
modify_msvc_flag_debug("${COOLPROP_MSVC_DBG}")
|
|
else()
|
|
modify_msvc_flag_debug("${flag_default}d")
|
|
endif()
|
|
endmacro()
|
|
|
|
#if(MSVC)
|
|
# add_compiler_flag_release("/EHsc")
|
|
# add_compiler_flag_debug("/EHsc")
|
|
#endif()
|
|
|
|
#######################################
|
|
# BITNESS #
|
|
#-------------------------------------#
|
|
# Calculate if 32 or 64 #
|
|
#######################################
|
|
|
|
if(WIN32)
|
|
if(CMAKE_CL_64)
|
|
set(BITNESS "64")
|
|
else()
|
|
set(BITNESS "32")
|
|
endif()
|
|
else()
|
|
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
|
|
set(BITNESS "64")
|
|
else()
|
|
set(BITNESS "32")
|
|
endif()
|
|
endif()
|
|
|
|
if(MSVC AND (FORCE_BITNESS_32 OR FORCE_BITNESS_64))
|
|
message(
|
|
STATUS
|
|
"You cannot force a certain bitness for Visual Studio, use the generator settings for this purpose."
|
|
)
|
|
message(
|
|
STATUS
|
|
"Pass '-G \"Visual Studio 10 2010 Win64\"' to CMake to make a 64bit binary using VS2010."
|
|
)
|
|
message(
|
|
STATUS
|
|
"Pass '-G \"Visual Studio 10 2010\"' to CMake to make a 32bit binary using VS2010."
|
|
)
|
|
message(
|
|
STATUS
|
|
"Pass '-G \"Visual Studio 9 2008 Win64\"' to CMake to make a 64bit binary using VS2008."
|
|
)
|
|
message(
|
|
STATUS
|
|
"Pass '-G \"Visual Studio 9 2008\"' to CMake to make a 32bit binary using VS2008."
|
|
)
|
|
message(FATAL_ERROR "Fix that and try again...")
|
|
endif()
|
|
|
|
if(FORCE_BITNESS_32)
|
|
set(BITNESS "32")
|
|
elseif(FORCE_BITNESS_64)
|
|
set(BITNESS "64")
|
|
elseif(FORCE_BITNESS_NATIVE)
|
|
set(BITNESS "NATIVE")
|
|
endif()
|
|
|
|
#######################################
|
|
# SHARED POINTER #
|
|
#-------------------------------------#
|
|
# In this section we define the #
|
|
# flags needed to use shared_ptr #
|
|
# reliably #
|
|
#######################################
|
|
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/dev/cmake/Modules/FindSharedPtr.cmake")
|
|
find_shared_ptr()
|
|
if(NOT SHARED_PTR_FOUND)
|
|
message(FATAL_ERROR "Must be able to find shared_ptr")
|
|
else()
|
|
if(SHARED_PTR_TR1_MEMORY_HEADER)
|
|
add_definitions("-DSHARED_PTR_TR1_MEMORY_HEADER")
|
|
endif()
|
|
if(SHARED_PTR_TR1_NAMESPACE)
|
|
add_definitions("-DSHARED_PTR_TR1_NAMESPACE")
|
|
endif()
|
|
endif()
|
|
|
|
#######################################
|
|
# MAKE ARTEFACTS #
|
|
#-------------------------------------#
|
|
# In this section we define the #
|
|
# artefacts (exes, libs) that will be #
|
|
# made for CoolProp, these include #
|
|
# customisation from earlier options. #
|
|
#######################################
|
|
|
|
### FLUIDS, MIXTURES JSON ###
|
|
add_custom_target(
|
|
generate_headers
|
|
COMMAND "${PYTHON_EXECUTABLE}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/dev/generate_headers.py")
|
|
|
|
if(NOT COOLPROP_NO_EXAMPLES)
|
|
add_custom_target(
|
|
generate_examples
|
|
COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Python
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Example.py"
|
|
COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Octave
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Example.m"
|
|
COMMAND "${PYTHON_EXECUTABLE}" example_generator.py R
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Example.R"
|
|
#COMMAND "${PYTHON_EXECUTABLE}" example_generator.py MATLAB "${CMAKE_CURRENT_BINARY_DIR}/Example.m"
|
|
COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Java
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Example.java"
|
|
COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Csharp
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Example.cs"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/dev/scripts/examples")
|
|
else()
|
|
add_custom_target(
|
|
generate_examples
|
|
COMMAND
|
|
echo
|
|
"Example generation has been disabled with the COOLPROP_NO_EXAMPLES option."
|
|
)
|
|
endif()
|
|
|
|
### Library options ###
|
|
# We already know the bitness from the earlier
|
|
# settings. Let us rely on that and only handle
|
|
# calling conventions and shared/static issues.
|
|
|
|
option(COOLPROP_STDCALL_LIBRARY
|
|
"Build CoolProp as a 32bit shared library with stdcall" OFF)
|
|
|
|
option(COOLPROP_CDECL_LIBRARY
|
|
"Build CoolProp as a 32bit shared library with cdecl" OFF)
|
|
|
|
option(COOLPROP_EXTERNC_LIBRARY
|
|
"Overwrite the export settings to force extern C" OFF)
|
|
|
|
set(COOLPROP_LIBRARY_SOURCE
|
|
"src/CoolPropLib.cpp"
|
|
CACHE STRING "The file that contains the exported functions")
|
|
|
|
set(COOLPROP_LIBRARY_HEADER
|
|
"include/CoolPropLib.h"
|
|
CACHE STRING "The file that contains the export header")
|
|
|
|
set(COOLPROP_LIBRARY_NAME
|
|
"${app_name}"
|
|
CACHE STRING "The name of the generated library")
|
|
|
|
set(COOLPROP_LIBRARY_EXPORTS
|
|
""
|
|
CACHE STRING "The file that contains the export alias list")
|
|
|
|
# Rule out cases that do not make sense
|
|
if("${BITNESS}" STREQUAL "32")
|
|
if(COOLPROP_CDECL_LIBRARY)
|
|
set(CONVENTION "__cdecl")
|
|
elseif(COOLPROP_STDCALL_LIBRARY)
|
|
set(CONVENTION "__stdcall")
|
|
else()
|
|
set(CONVENTION "")
|
|
endif()
|
|
elseif("${BITNESS}" STREQUAL "64")
|
|
if(COOLPROP_CDECL_LIBRARY)
|
|
message(WARNING "You cannot use cdecl conventions in a 64-bit library.")
|
|
elseif(COOLPROP_STDCALL_LIBRARY)
|
|
message(WARNING "You cannot use stdcall conventions in a 64-bit library.")
|
|
endif()
|
|
set(CONVENTION "")
|
|
elseif("${BITNESS}" STREQUAL "NATIVE")
|
|
set(CONVENTION "")
|
|
else()
|
|
message(FATAL_ERROR "Bitness is not defined. Set it and run cmake again.")
|
|
endif()
|
|
|
|
if((COOLPROP_OBJECT_LIBRARY AND COOLPROP_STATIC_LIBRARY)
|
|
OR (COOLPROP_OBJECT_LIBRARY AND COOLPROP_SHARED_LIBRARY)
|
|
OR (COOLPROP_STATIC_LIBRARY AND COOLPROP_SHARED_LIBRARY))
|
|
message(FATAL_ERROR "You can only use one of the library switches!")
|
|
endif()
|
|
|
|
if(COOLPROP_OBJECT_LIBRARY
|
|
OR COOLPROP_STATIC_LIBRARY
|
|
OR COOLPROP_SHARED_LIBRARY)
|
|
# Project name
|
|
set(LIB_NAME ${COOLPROP_LIBRARY_NAME})
|
|
# Object, static or shared?
|
|
if(COOLPROP_OBJECT_LIBRARY)
|
|
add_library(${LIB_NAME} OBJECT ${APP_SOURCES})
|
|
set(COOLPROP_LIBRARY_SOURCE "")
|
|
set(COOLPROP_LIBRARY_HEADER "")
|
|
elseif(COOLPROP_STATIC_LIBRARY)
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${COOLPROP_LIBRARY_SOURCE}")
|
|
add_library(${LIB_NAME} STATIC ${APP_SOURCES} ${COOLPROP_LIBRARY_EXPORTS})
|
|
if(MSVC)
|
|
# Add postfix for debugging
|
|
set_property(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX d)
|
|
set_property(TARGET ${LIB_NAME} PROPERTY RELEASE_POSTFIX)
|
|
modify_msvc_flags("/MD")
|
|
|
|
# Note that the default is not used if ${COOLPROP_MSVC_REL} or ${COOLPROP_MSVC_DBG} is set
|
|
endif(MSVC)
|
|
install(
|
|
TARGETS ${LIB_NAME}
|
|
DESTINATION
|
|
static_library/${CMAKE_SYSTEM_NAME}/${BITNESS}bit_${CMAKE_CXX_COMPILER_ID}_${CMAKE_CXX_COMPILER_VERSION}
|
|
)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${COOLPROP_LIBRARY_HEADER}
|
|
DESTINATION static_library)
|
|
elseif(COOLPROP_SHARED_LIBRARY)
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${COOLPROP_LIBRARY_SOURCE}")
|
|
add_library(${LIB_NAME} SHARED ${APP_SOURCES} ${COOLPROP_LIBRARY_EXPORTS})
|
|
install(
|
|
TARGETS ${LIB_NAME}
|
|
DESTINATION shared_library/${CMAKE_SYSTEM_NAME}/${BITNESS}bit${CONVENTION}
|
|
)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${COOLPROP_LIBRARY_HEADER}
|
|
DESTINATION shared_library)
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -DCOOLPROP_LIB")
|
|
# Now all the compiler specific settings for Visual Studio
|
|
if(MSVC)
|
|
# Add postfix for debugging
|
|
set_property(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX d)
|
|
set_property(TARGET ${LIB_NAME} PROPERTY RELEASE_POSTFIX)
|
|
# No lib prefix for the shared library
|
|
set_property(TARGET ${LIB_NAME} PROPERTY PREFIX "")
|
|
modify_msvc_flags("/MT")
|
|
|
|
# Note that the default is not used if ${COOLPROP_MSVC_REL} or ${COOLPROP_MSVC_DBG} is set
|
|
add_custom_command(
|
|
TARGET ${LIB_NAME}
|
|
POST_BUILD
|
|
COMMAND dumpbin /EXPORTS $<TARGET_FILE:${LIB_NAME}> >
|
|
${CMAKE_CURRENT_BINARY_DIR}/exports.txt)
|
|
install(
|
|
FILES ${CMAKE_CURRENT_BINARY_DIR}/exports.txt
|
|
DESTINATION
|
|
shared_library/${CMAKE_SYSTEM_NAME}/${BITNESS}bit${CONVENTION})
|
|
endif()
|
|
# For Linux
|
|
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
|
set_property(TARGET ${LIB_NAME} PROPERTY VERSION ${COOLPROP_VERSION})
|
|
set_property(TARGET ${LIB_NAME} PROPERTY SOVERSION
|
|
${COOLPROP_VERSION_MAJOR})
|
|
endif()
|
|
else()
|
|
message(FATAL_ERROR "You have to build a static or shared library.")
|
|
endif()
|
|
|
|
if(NOT COOLPROP_OBJECT_LIBRARY)
|
|
target_link_libraries(${LIB_NAME} ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
# For windows systems, bug workaround for Eigen
|
|
if(MSVC90)
|
|
message(STATUS "EIGEN WORKAROUND ACTIVE!!")
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -DEIGEN_DONT_VECTORIZE")
|
|
endif()
|
|
|
|
# For mac systems, explicitly set the c++ libraries
|
|
if("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
|
if(DEFINED OSX_COMPILE_FLAGS)
|
|
set_target_properties(
|
|
${LIB_NAME} PROPERTIES APPEND_STRING PROPERTY COMPILE_FLAGS
|
|
"${OSX_COMPILE_FLAGS}")
|
|
endif(DEFINED OSX_COMPILE_FLAGS)
|
|
if(DEFINED OSX_COMPILE_FLAGS)
|
|
set_target_properties(
|
|
${LIB_NAME} PROPERTIES APPEND_STRING PROPERTY LINK_FLAGS
|
|
"${OSX_LINK_FLAGS}")
|
|
endif(DEFINED OSX_COMPILE_FLAGS)
|
|
endif()
|
|
|
|
# Name mangling settings
|
|
if(COOLPROP_EXTERNC_LIBRARY)
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -DEXTERNC")
|
|
endif()
|
|
### All options are set, we are building a library ###
|
|
add_dependencies(${LIB_NAME} generate_headers)
|
|
#
|
|
if(CMAKE_VERSION VERSION_GREATER 3.0)
|
|
# Add target include directories for easy linking with other applications
|
|
target_include_directories(${LIB_NAME} PUBLIC ${APP_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
# Set the bitness
|
|
if(NOT MSVC)
|
|
if(NOT "${BITNESS}" STREQUAL "NATIVE")
|
|
message(STATUS "Setting bitness flag -m${BITNESS}")
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -m${BITNESS}")
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY LINK_FLAGS " -m${BITNESS}")
|
|
endif()
|
|
endif()
|
|
|
|
# ADD -fPIC flag if needed
|
|
if(COOLPROP_FPIC)
|
|
message(STATUS "Setting fPIC flag")
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -fPIC")
|
|
endif()
|
|
#
|
|
# calling conventions
|
|
if(("${CONVENTION}" STREQUAL "NULL") OR ("${CONVENTION}" STREQUAL ""))
|
|
#MESSAGE(STATUS "Skipping unknown calling convention.")
|
|
else()
|
|
set_property(
|
|
TARGET ${LIB_NAME}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -DCONVENTION=${CONVENTION}")
|
|
endif()
|
|
#
|
|
#set_property(SOURCE MyFile.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -msse4.1 ")
|
|
message(STATUS "Library compilation detected:")
|
|
message(STATUS "Creating ${LIB_NAME}, a ${BITNESS}-bit library")
|
|
message(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
|
|
message(STATUS "COOLPROP_STATIC_LIBRARY: ${COOLPROP_STATIC_LIBRARY}")
|
|
message(STATUS "COOLPROP_SHARED_LIBRARY: ${COOLPROP_SHARED_LIBRARY}")
|
|
message(STATUS "COOLPROP_OBJECT_LIBRARY: ${COOLPROP_OBJECT_LIBRARY}")
|
|
message(STATUS "CONVENTION: ${CONVENTION}")
|
|
message(STATUS "COOLPROP_LIBRARY_HEADER: ${COOLPROP_LIBRARY_HEADER}")
|
|
message(STATUS "COOLPROP_LIBRARY_SOURCE: ${COOLPROP_LIBRARY_SOURCE}")
|
|
#
|
|
get_property(
|
|
tmpVar
|
|
TARGET ${LIB_NAME}
|
|
PROPERTY COMPILE_FLAGS)
|
|
message(STATUS "COMPILE_FLAGS: ${tmpVar}")
|
|
get_property(
|
|
tmpVar
|
|
TARGET ${LIB_NAME}
|
|
PROPERTY LINK_FLAGS)
|
|
message(STATUS "LINK_FLAGS: ${tmpVar}")
|
|
#
|
|
endif()
|
|
|
|
if(COOLPROP_IOS_TARGET)
|
|
# Set the Base SDK (only change the SDKVER value, if for instance, you are building for iOS 5.0):
|
|
set(SDKVER "9.2")
|
|
set(DEVROOT
|
|
"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer"
|
|
)
|
|
set(SDKROOT "${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk")
|
|
if(EXISTS ${SDKROOT})
|
|
set(CMAKE_OSX_SYSROOT "${SDKROOT}")
|
|
else()
|
|
message("Warning, iOS Base SDK path not found: " ${SDKROOT})
|
|
endif()
|
|
|
|
# Will resolve to "Standard (armv6 armv7)" on Xcode 4.0.2 and to "Standard (armv7)" on Xcode 4.2:
|
|
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)")
|
|
|
|
# seamless toggle between device and simulator
|
|
set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos;-iphonesimulator")
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|
endif()
|
|
|
|
if(COOLPROP_DEBIAN_PACKAGE)
|
|
if(NOT UNIX)
|
|
message(
|
|
FATAL_ERROR "COOLPROP_DEBIAN_PACKAGE can only be used on linux host")
|
|
endif()
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolPropLib.cpp")
|
|
add_library(${app_name} SHARED ${APP_SOURCES})
|
|
set_target_properties(
|
|
${app_name} PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -DCOOLPROP_LIB")
|
|
set_target_properties(
|
|
${app_name} PROPERTIES VERSION ${COOLPROP_VERSION}
|
|
SOVERSION ${COOLPROP_VERSION_MAJOR})
|
|
add_dependencies(${app_name} generate_headers)
|
|
install(TARGETS ${app_name} DESTINATION "${CMAKE_INSTALL_PREFIX}/usr/lib")
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/CoolPropLib.h
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/usr/include")
|
|
endif()
|
|
|
|
if(COOLPROP_VXWORKS_MAKEFILE)
|
|
|
|
set(INCLUDE_DIRECTORIES)
|
|
foreach(_srcFile ${APP_INCLUDE_DIRS})
|
|
string(CONCAT _el "-I\"" ${_srcFile} "\"")
|
|
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "$(COOLPROP_ROOT)" _el
|
|
"${_el}")
|
|
list(APPEND INCLUDE_DIRECTORIES ${_el})
|
|
endforeach()
|
|
string(REPLACE ";" " " INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}")
|
|
set(OLD_ROOT /home/ian/.wine/drive_c/)
|
|
set(NEW_ROOT c:/)
|
|
string(REPLACE ${OLD_ROOT} ${NEW_ROOT} INCLUDE_DIRECTORIES
|
|
"${INCLUDE_DIRECTORIES}")
|
|
set(SRC "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
string(REPLACE ${OLD_ROOT} ${NEW_ROOT} SRC "${SRC}")
|
|
file(RELATIVE_PATH COOLPROP_ROOT "${CMAKE_CURRENT_BINARY_DIR}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Labview/vxWorks/Makefile.in"
|
|
"vxWorksMakefile")
|
|
endif()
|
|
|
|
if(COOLPROP_VXWORKS_LIBRARY_MODULE OR COOLPROP_VXWORKS_LIBRARY)
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolPropLib.cpp")
|
|
add_executable(${app_name} ${APP_SOURCES})
|
|
set_target_properties(
|
|
${app_name} PROPERTIES SUFFIX ".out" COMPILE_FLAGS
|
|
"${COMPILE_FLAGS} -DEXTERNC")
|
|
add_dependencies(${app_name} generate_headers)
|
|
install(TARGETS ${app_name}
|
|
DESTINATION "${COOLPROP_INSTALL_PREFIX}/shared_library/VxWorks")
|
|
endif()
|
|
|
|
if(COOLPROP_PRIME_MODULE)
|
|
if(NOT WIN32)
|
|
message(
|
|
FATAL_ERROR "COOLPROP_PRIME_MODULE can only be used on windows host")
|
|
endif()
|
|
if("${COOLPROP_PRIME_ROOT}" STREQUAL "")
|
|
message(
|
|
FATAL_ERROR
|
|
"You must provide the path to Mathcad Prime Root directory using something like -DCOOLPROP_PRIME_ROOT=\"C:/Program Files/PTC/Mathcad Prime 3.1\""
|
|
)
|
|
else()
|
|
message(STATUS "COOLPROP_PRIME_ROOT: ${COOLPROP_PRIME_ROOT}")
|
|
endif()
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolPropLib.cpp")
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/MathCAD/CoolPropMathcad.cpp")
|
|
add_library(CoolPropMathcadWrapper SHARED ${APP_SOURCES})
|
|
include_directories("${COOLPROP_PRIME_ROOT}/Custom Functions")
|
|
target_link_libraries(CoolPropMathcadWrapper
|
|
"${COOLPROP_PRIME_ROOT}/Custom Functions/mcaduser.lib")
|
|
set_target_properties(CoolPropMathcadWrapper
|
|
PROPERTIES LINK_FLAGS "/ENTRY:\"DllEntryPoint\"")
|
|
add_dependencies(CoolPropMathcadWrapper generate_headers)
|
|
set_target_properties(CoolPropMathcadWrapper PROPERTIES SUFFIX ".dll" PREFIX
|
|
"")
|
|
install(TARGETS CoolPropMathcadWrapper
|
|
DESTINATION "${COOLPROP_INSTALL_PREFIX}/MathcadPrime")
|
|
install(
|
|
FILES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/MathCAD/Prime/CoolPropFluidProperties.mcdx"
|
|
DESTINATION MathcadPrime)
|
|
endif()
|
|
|
|
if(COOLPROP_MATHCAD15_MODULE)
|
|
if(NOT WIN32)
|
|
message(
|
|
FATAL_ERROR "COOLPROP_MATHCAD15_MODULE can only be used on windows host")
|
|
endif()
|
|
if("${COOLPROP_MATHCAD15_ROOT}" STREQUAL "")
|
|
message(
|
|
FATAL_ERROR
|
|
"You must provide the path to MathCAD 15 Root directory using something like -DCOOLPROP_MATHCAD15_ROOT=\"C:/Program Files (x86)/Mathcad/Mathcad 15\""
|
|
)
|
|
else()
|
|
message(STATUS "COOLPROP_MATHCAD15_ROOT: ${COOLPROP_MATHCAD15_ROOT}")
|
|
endif()
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolPropLib.cpp")
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/MathCAD/CoolPropMathcad.cpp")
|
|
add_library(CoolPropMathcadWrapper SHARED ${APP_SOURCES})
|
|
include_directories("${COOLPROP_MATHCAD15_ROOT}/userefi/microsft/include")
|
|
target_link_libraries(
|
|
CoolPropMathcadWrapper
|
|
"${COOLPROP_MATHCAD15_ROOT}/userefi/microsft/lib/mcaduser.lib")
|
|
set_target_properties(CoolPropMathcadWrapper
|
|
PROPERTIES LINK_FLAGS "/ENTRY:\"DllEntryPoint\"")
|
|
add_dependencies(CoolPropMathcadWrapper generate_headers)
|
|
set_target_properties(CoolPropMathcadWrapper PROPERTIES SUFFIX ".dll" PREFIX
|
|
"")
|
|
install(TARGETS CoolPropMathcadWrapper
|
|
DESTINATION "${COOLPROP_INSTALL_PREFIX}/MathCAD15")
|
|
install(
|
|
FILES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/MathCAD/CoolPropFluidProperties.xmcdz"
|
|
DESTINATION MathCAD15)
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/MathCAD/CoolProp_EN.xml"
|
|
DESTINATION MathCAD15)
|
|
endif()
|
|
|
|
# EES is only compiled for 32bit Windows
|
|
if(COOLPROP_EES_MODULE)
|
|
if(NOT "${BITNESS}" STREQUAL "32")
|
|
message(FATAL_ERROR "You cannot build the EES wrapper as a 64-bit library.")
|
|
endif()
|
|
# Prepare the sources
|
|
include_directories(${APP_INCLUDE_DIRS})
|
|
list(APPEND APP_SOURCES "wrappers/EES/main.cpp")
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${COOLPROP_LIBRARY_SOURCE}")
|
|
add_library(COOLPROP_EES SHARED ${APP_SOURCES})
|
|
# Modify the target and add dependencies
|
|
add_dependencies(COOLPROP_EES generate_headers)
|
|
set_target_properties(
|
|
COOLPROP_EES
|
|
PROPERTIES COMPILE_FLAGS
|
|
"${COMPILE_FLAGS} -DCOOLPROP_LIB -DCONVENTION=__cdecl")
|
|
set_target_properties(COOLPROP_EES PROPERTIES SUFFIX ".dlf" PREFIX "")
|
|
# Creates "COOLPROP_EES.dlf"
|
|
if(NOT MSVC)
|
|
set_target_properties(COOLPROP_EES PROPERTIES COMPILE_FLAGS "-m32"
|
|
LINK_FLAGS "-m32")
|
|
elseif(MSVC)
|
|
set_target_properties(COOLPROP_EES PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
|
${CMAKE_CURRENT_BINARY_DIR})
|
|
set_target_properties(COOLPROP_EES PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
|
|
${CMAKE_CURRENT_BINARY_DIR})
|
|
set_target_properties(
|
|
COOLPROP_EES PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
|
|
${CMAKE_CURRENT_BINARY_DIR})
|
|
# etc for the other available configuration types (MinSizeRel, RelWithDebInfo)
|
|
endif()
|
|
# copy required files
|
|
add_custom_command(
|
|
TARGET COOLPROP_EES
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/EES/CoolProp.htm"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/."
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/EES/CoolProp.LIB"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/."
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/EES/CoolProp_EES_Sample.EES"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/."
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Copying the EES files to the build directory"
|
|
VERBATIM)
|
|
# install the generated library and the other files
|
|
install(TARGETS COOLPROP_EES
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/EES/${CMAKE_SYSTEM_NAME}")
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/EES/CoolProp.htm"
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/EES/${CMAKE_SYSTEM_NAME}")
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/EES/CoolProp.LIB"
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/EES/${CMAKE_SYSTEM_NAME}")
|
|
install(
|
|
FILES "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/EES/CoolProp_EES_Sample.EES"
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/EES/${CMAKE_SYSTEM_NAME}")
|
|
endif()
|
|
|
|
# Windows package
|
|
if(COOLPROP_WINDOWS_PACKAGE)
|
|
|
|
message(
|
|
STATUS "Creating Windows installer for COOLPROP_VERSION=${COOLPROP_VERSION}"
|
|
)
|
|
# Setting some basic build paths
|
|
set(COOLPROP_WINDOWS_PACKAGE_32B_DIR "${CMAKE_CURRENT_BINARY_DIR}/32bitDLL")
|
|
set(COOLPROP_WINDOWS_PACKAGE_32B_DIR_STDCALL
|
|
"${CMAKE_CURRENT_BINARY_DIR}/32bitDLL_stdcall")
|
|
set(COOLPROP_WINDOWS_PACKAGE_32B_DIR_CDECL
|
|
"${CMAKE_CURRENT_BINARY_DIR}/32bitDLL_cdecl")
|
|
set(COOLPROP_WINDOWS_PACKAGE_64B_DIR "${CMAKE_CURRENT_BINARY_DIR}/64bitDLL")
|
|
set(COOLPROP_WINDOWS_PACKAGE_EES_DIR "${CMAKE_CURRENT_BINARY_DIR}/EES")
|
|
set(COOLPROP_WINDOWS_PACKAGE_TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/InnoScript")
|
|
# Pointers to the sources
|
|
set(COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Excel")
|
|
set(COOLPROP_WINDOWS_PACKAGE_ISS_DIR
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/externals/ExcelAddinInstaller")
|
|
# Generator for DLLs
|
|
set(COOLPROP_WINDOWS_PACKAGE_DLL_GEN "${CMAKE_GENERATOR}"
|
|
)# Use the currently selected generator, architecture is hard-coded below
|
|
# Configure variables like version number and build year
|
|
configure_file(
|
|
"${COOLPROP_WINDOWS_PACKAGE_ISS_DIR}/cmake-templates/config.iss"
|
|
"${COOLPROP_WINDOWS_PACKAGE_ISS_DIR}/config.iss")
|
|
# Find the installer generator executable
|
|
set(BINDIR32_ENV_NAME "ProgramFiles(x86)")
|
|
set(BINDIR32 $ENV{${BINDIR32_ENV_NAME}})
|
|
set(BINDIR64_ENV_NAME "ProgramFiles")
|
|
set(BINDIR64 $ENV{${BINDIR64_ENV_NAME}})
|
|
find_program(
|
|
COOLPROP_WINDOWS_PACKAGE_ISS_EXE
|
|
NAMES iscc.exe
|
|
HINTS "${BINDIR32}/Inno Setup 6" "${BINDIR64}/Inno Setup 6")
|
|
|
|
# ******************************************************************
|
|
# Add the targets that prepare the build directory for the subbuilds
|
|
# ******************************************************************
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_PREPARE)
|
|
# Prepare directories
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_PREPARE
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_32B_DIR}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_32B_DIR_STDCALL}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_32B_DIR_CDECL}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_64B_DIR}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EES_DIR}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source"
|
|
#COMMAND ${CMAKE_COMMAND} ARGS "-E" "remove_directory" "${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/deploy"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/deploy"
|
|
#COMMAND ${CMAKE_COMMAND} ARGS "-E" "remove_directory" "${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Preparing the directories for the Windows installer"
|
|
VERBATIM)
|
|
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_DELETE)
|
|
# Delete directories
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_DELETE
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "remove_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/deploy"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/deploy"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "remove_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Removing the old build directories for the Windows installer"
|
|
VERBATIM)
|
|
|
|
# **************************************************************
|
|
# Add the target for the shared libraries, 2x 32bit and 1x 64bit
|
|
# **************************************************************
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES
|
|
COOLPROP_WINDOWS_PACKAGE_PREPARE)
|
|
# Copy the header file
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/CoolPropLib.h"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/CoolPropLib.h"
|
|
WORKING_DIRECTORY ${COOLPROP_WINDOWS_PACKAGE_32B_DIR}
|
|
COMMENT "Copy the header file for the CoolProp library"
|
|
VERBATIM)
|
|
# Build the 32bit DLLs
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-G${COOLPROP_WINDOWS_PACKAGE_DLL_GEN}" "-AWin32"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}" "-DCOOLPROP_SHARED_LIBRARY=ON"
|
|
"-DCOOLPROP_STDCALL_LIBRARY=ON"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "--build" "." "--target" "CoolProp" "--config"
|
|
"Release"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_32B_DIR_STDCALL}/Release/CoolProp.dll"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/CoolProp_stdcall.dll"
|
|
WORKING_DIRECTORY ${COOLPROP_WINDOWS_PACKAGE_32B_DIR_STDCALL}
|
|
COMMENT "Building the 32bit shared library with stdcall"
|
|
VERBATIM)
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-G${COOLPROP_WINDOWS_PACKAGE_DLL_GEN}" "-AWin32"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}" "-DCOOLPROP_SHARED_LIBRARY=ON"
|
|
"-DCOOLPROP_CDECL_LIBRARY=ON"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "--build" "." "--target" "CoolProp" "--config"
|
|
"Release"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_32B_DIR_CDECL}/Release/CoolProp.dll"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/CoolProp_cdecl.dll"
|
|
WORKING_DIRECTORY ${COOLPROP_WINDOWS_PACKAGE_32B_DIR_CDECL}
|
|
COMMENT "Building the 32bit shared library with cdecl"
|
|
VERBATIM)
|
|
# Build the 64bit DLL
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-G${COOLPROP_WINDOWS_PACKAGE_DLL_GEN}"
|
|
"-Ax64" "${CMAKE_CURRENT_SOURCE_DIR}" "-DCOOLPROP_SHARED_LIBRARY=ON"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "--build" "." "--target" "CoolProp" "--config"
|
|
"Release"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_64B_DIR}/Release/CoolProp.dll"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/CoolProp_x64.dll"
|
|
WORKING_DIRECTORY ${COOLPROP_WINDOWS_PACKAGE_64B_DIR}
|
|
COMMENT "Building the 64bit shared library"
|
|
VERBATIM)
|
|
|
|
# *************************************************************
|
|
# Add the target for EES and populate it with custom commands
|
|
# *************************************************************
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_EES)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_EES
|
|
COOLPROP_WINDOWS_PACKAGE_PREPARE)
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_EES
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-G${COOLPROP_WINDOWS_PACKAGE_DLL_GEN}"
|
|
"-AWin32" "${CMAKE_CURRENT_SOURCE_DIR}" "-DCOOLPROP_EES_MODULE=ON"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "--build" "." "--target" "COOLPROP_EES"
|
|
"--config" "Release"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EES_DIR}"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/EES"
|
|
WORKING_DIRECTORY ${COOLPROP_WINDOWS_PACKAGE_EES_DIR}
|
|
COMMENT "Building the 32bit library for EES"
|
|
VERBATIM)
|
|
|
|
# *************************************************************
|
|
# Add the target for Excel and populate it with custom commands
|
|
# *************************************************************
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_EXCEL)
|
|
add_dependencies(
|
|
COOLPROP_WINDOWS_PACKAGE_EXCEL COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES
|
|
COOLPROP_WINDOWS_PACKAGE_PREPARE)
|
|
# Copy the Excel files
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_EXCEL
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR}/CoolProp.xla"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR}/CoolProp.xlam"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR}/TestExcel.xlsx"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/source/"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "remove_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/MicrosoftExcel/"
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/MicrosoftExcel/"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR}/CoolProp.xla"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/MicrosoftExcel/"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR}/CoolProp.xlam"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/MicrosoftExcel/"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_EXCEL_DIR}/TestExcel.xlsx"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/MicrosoftExcel/"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Copying the Excel files for the installer"
|
|
VERBATIM)
|
|
|
|
# *******************************************************************
|
|
# Add the target for Inno Script and populate it with custom commands
|
|
# *******************************************************************
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_ISS)
|
|
add_dependencies(
|
|
COOLPROP_WINDOWS_PACKAGE_ISS COOLPROP_WINDOWS_PACKAGE_EXCEL
|
|
COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES COOLPROP_WINDOWS_PACKAGE_PREPARE)
|
|
# Copy the ISS files
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_ISS
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_ISS_DIR}"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Copying the Inno Script files for the installer"
|
|
VERBATIM)
|
|
|
|
# *****************************************************************************
|
|
# Add the target for the installer package and populate it with custom commands
|
|
# *****************************************************************************
|
|
add_custom_target(COOLPROP_WINDOWS_PACKAGE_INSTALLER)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
COOLPROP_WINDOWS_PACKAGE_DELETE)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
COOLPROP_WINDOWS_PACKAGE_PREPARE)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
COOLPROP_WINDOWS_PACKAGE_SHARED_LIBRARIES)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
COOLPROP_WINDOWS_PACKAGE_EES)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
COOLPROP_WINDOWS_PACKAGE_EXCEL)
|
|
add_dependencies(COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
COOLPROP_WINDOWS_PACKAGE_ISS)
|
|
# Build the installer and copy it to the bin directory
|
|
add_custom_command(
|
|
TARGET COOLPROP_WINDOWS_PACKAGE_INSTALLER
|
|
POST_BUILD
|
|
COMMAND ${COOLPROP_WINDOWS_PACKAGE_ISS_EXE} ARGS "addin-installer.iss"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy_directory"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/deploy"
|
|
"${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/Installers/Windows"
|
|
WORKING_DIRECTORY "${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}"
|
|
COMMENT
|
|
"The new installer is located in '${COOLPROP_WINDOWS_PACKAGE_TMP_DIR}/bin/Installers/Windows'"
|
|
VERBATIM)
|
|
endif()
|
|
|
|
if(COOLPROP_OCTAVE_MODULE)
|
|
|
|
# Must have SWIG and Octave
|
|
find_package(SWIG REQUIRED)
|
|
include(${SWIG_USE_FILE})
|
|
find_package(Octave REQUIRED)
|
|
|
|
# Make a src directory to deal with file permissions problem with MinGW makefile
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src)
|
|
|
|
# Set the include folders
|
|
set(OCTAVE_WRAP_INCLUDE_DIRS ${INCLUDE_DIR})
|
|
foreach(ITR ${OCTAVE_INCLUDE_DIRS})
|
|
list(APPEND OCTAVE_WRAP_INCLUDE_DIRS ${ITR})
|
|
endforeach()
|
|
include_directories(${OCTAVE_INCLUDE_DIRS})
|
|
|
|
add_definitions(-DNO_ERROR_CATCHING)
|
|
|
|
#disable internal error catching and allow swig to do the error catching itself
|
|
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
|
|
set(SWIG_OPTIONS "${COOLPROP_SWIG_OPTIONS}")
|
|
set_source_files_properties(${I_FILE} PROPERTIES SWIG_FLAGS "${SWIG_OPTIONS}")
|
|
set_source_files_properties(${I_FILE} PROPERTIES CPLUSPLUS ON)
|
|
|
|
set(SWIG_MODULE_CoolProp_EXTRA_DEPS ${SWIG_DEPENDENCIES})
|
|
swig_add_module(CoolProp octave ${I_FILE} ${APP_SOURCES})
|
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
# We need to see which library to link with on OSX - clang++ or stdc++
|
|
message(STATUS "OCTAVE_OCTAVE_LIBRARY = ${OCTAVE_OCTAVE_LIBRARY}")
|
|
if(${CMAKE_VERSION} VERSION_LESS "3.10.0")
|
|
execute_process(COMMAND "otool -L ${OCTAVE_OCTAVE_LIBRARY} | grep libc++"
|
|
OUTPUT_VARIABLE COOLPROP_OCTAVE_USING_CLANG)
|
|
message(
|
|
STATUS "COOLPROP_OCTAVE_USING_CLANG = ${COOLPROP_OCTAVE_USING_CLANG}")
|
|
string(STRIP "${COOLPROP_OCTAVE_USING_CLANG}" COOLPROP_OCTAVE_USING_CLANG)
|
|
else()
|
|
execute_process(
|
|
COMMAND "otool -L ${OCTAVE_OCTAVE_LIBRARY}"
|
|
COMMAND "grep libc++"
|
|
OUTPUT_VARIABLE COOLPROP_OCTAVE_USING_CLANG
|
|
ERROR_VARIABLE COOLPROP_OCTAVE_USING_CLANG)
|
|
message(
|
|
STATUS "COOLPROP_OCTAVE_USING_CLANG = ${COOLPROP_OCTAVE_USING_CLANG}")
|
|
string(STRIP "${COOLPROP_OCTAVE_USING_CLANG}" COOLPROP_OCTAVE_USING_CLANG)
|
|
endif()
|
|
|
|
string(LENGTH "${COOLPROP_OCTAVE_USING_CLANG}" LEN)
|
|
if(${LEN} GREATER 0)
|
|
message(
|
|
STATUS
|
|
"Using -stdlib=libc++, this might override the settings based on DARWIN_USE_LIBCPP"
|
|
)
|
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
|
else()
|
|
message(
|
|
STATUS
|
|
"Using -stdlib=libstdc++, this might override the settings based on DARWIN_USE_LIBCPP"
|
|
)
|
|
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")
|
|
endif()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
include_directories($ENV{OCTAVE_ROOT}/include)
|
|
include_directories(
|
|
$ENV{OCTAVE_ROOT}/include/octave-${OCTAVE_VERSION}/octave)
|
|
set_target_properties(CoolProp PROPERTIES COMPILE_FLAGS "-fpermissive")
|
|
swig_link_libraries(CoolProp octave octinterp)
|
|
set_target_properties(
|
|
CoolProp
|
|
PROPERTIES
|
|
LINK_FLAGS
|
|
"-L$ENV{OCTAVE_ROOT}/mingw64/lib/octave/${OCTAVE_VERSION} -L$ENV{OCTAVE_ROOT}"
|
|
)
|
|
else()
|
|
swig_link_libraries(CoolProp ${OCTAVE_LIBRARIES})
|
|
endif()
|
|
|
|
set_target_properties(CoolProp PROPERTIES SUFFIX ".oct" PREFIX "")
|
|
add_dependencies(${app_name} generate_headers generate_examples)
|
|
|
|
#add_custom_command(TARGET CoolProp
|
|
# POST_BUILD
|
|
# COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Octave "${CMAKE_CURRENT_BINARY_DIR}/Example.m"
|
|
# WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/dev/scripts/examples")
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Example.m" DESTINATION Octave)
|
|
install(
|
|
TARGETS ${app_name}
|
|
DESTINATION
|
|
Octave/Octave${OCTAVE_VERSION}_${CMAKE_SYSTEM_NAME}_${BITNESS}bit)
|
|
endif()
|
|
|
|
if(COOLPROP_CSHARP_MODULE)
|
|
|
|
# Must have SWIG and C#
|
|
find_package(SWIG REQUIRED)
|
|
include(${SWIG_USE_FILE})
|
|
find_package(Csharp REQUIRED)
|
|
|
|
# Make a src directory to deal with file permissions problem with MinGW makefile
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src)
|
|
|
|
if(WIN32)
|
|
set(MORE_SWIG_FLAGS -dllimport \"CoolProp\")
|
|
endif()
|
|
|
|
# Define which headers the CoolProp wrapper is dependent on
|
|
set(SWIG_MODULE_CoolProp_EXTRA_DEPS ${SWIG_DEPENDENCIES})
|
|
|
|
set(SWIG_OPTIONS "${COOLPROP_SWIG_OPTIONS}" "${MORE_SWIG_FLAGS}")
|
|
string(REPLACE " " ";" SWIG_OPTIONS "${SWIG_OPTIONS}")
|
|
message(STATUS "options passed to swig: ${SWIG_OPTIONS}")
|
|
|
|
# Set properties before adding module
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
set_source_files_properties(${I_FILE} PROPERTIES SWIG_FLAGS "${SWIG_OPTIONS}"
|
|
CPLUSPLUS ON)
|
|
|
|
swig_add_module(CoolProp csharp ${I_FILE} ${APP_SOURCES})
|
|
|
|
add_definitions(-DNO_ERROR_CATCHING)
|
|
|
|
#disable internal error catching and allow swig to do the error catching itself
|
|
|
|
if(WIN32)
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
|
if(MSVC)
|
|
modify_msvc_flags("/MT")
|
|
|
|
# Note that the default is not used if ${COOLPROP_MSVC_REL} or ${COOLPROP_MSVC_DBG} is set
|
|
endif()
|
|
endif()
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "lib")
|
|
endif()
|
|
if(UNIX)
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "lib")
|
|
endif()
|
|
|
|
add_dependencies(${app_name} generate_headers generate_examples)
|
|
|
|
add_custom_command(
|
|
TARGET CoolProp
|
|
POST_BUILD
|
|
COMMAND 7z a "${CMAKE_CURRENT_BINARY_DIR}/platform-independent.7z"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/*.cs" -x!Example.cs
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
#add_custom_command(TARGET CoolProp
|
|
# POST_BUILD
|
|
# COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Csharp "${CMAKE_CURRENT_BINARY_DIR}/Example.cs"
|
|
# WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/dev/scripts/examples")
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Example.cs" DESTINATION Csharp)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/platform-independent.7z"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Csharp)
|
|
install(TARGETS ${app_name}
|
|
DESTINATION Csharp/${CMAKE_SYSTEM_NAME}_${BITNESS}bit)
|
|
enable_testing()
|
|
if(DEFINED BUILD_TESTING)
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory
|
|
${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Csharp${BITNESS})
|
|
# Copy the shared object to the folder with the executable - no idea like java.library.path in C#
|
|
install(
|
|
TARGETS ${app_name}
|
|
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Csharp${BITNESS})
|
|
endif()
|
|
file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/*.cs cp_cs_path)
|
|
if(${BITNESS} EQUAL "32")
|
|
set(CSHARP_PLAT "-platform:x86")
|
|
elseif((${BITNESS} EQUAL "64"))
|
|
set(CSHARP_PLAT "-platform:x64")
|
|
endif()
|
|
add_test(
|
|
NAME Csharptestbuild
|
|
COMMAND ${CSHARP_COMPILER} -out:Example.exe ${CSHARP_PLAT} ${cp_cs_path}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Csharp${BITNESS})
|
|
add_test(
|
|
NAME Csharptestrun
|
|
COMMAND ${CSHARP_INTERPRETER} Example.exe
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Csharp${BITNESS})
|
|
endif()
|
|
|
|
if(COOLPROP_VBDOTNET_MODULE)
|
|
|
|
# Must have SWIG and C#
|
|
find_package(SWIG REQUIRED)
|
|
include(${SWIG_USE_FILE})
|
|
find_package(Csharp REQUIRED)
|
|
|
|
# Make a src directory to deal with file permissions problem with MinGW makefile
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CoolPropVB)
|
|
|
|
set(MORE_SWIG_FLAGS -dllimport \"CoolProp\" -namespace CoolProp)
|
|
set(CMAKE_SWIG_OUTDIR CoolPropVB/CsharpClassLibrary)
|
|
|
|
# Define which headers the CoolProp wrapper is dependent on
|
|
set(SWIG_MODULE_CoolProp_EXTRA_DEPS ${SWIG_DEPENDENCIES})
|
|
|
|
set(SWIG_OPTIONS "${MORE_SWIG_FLAGS}")
|
|
string(REPLACE " " ";" SWIG_OPTIONS "${SWIG_OPTIONS}")
|
|
message(STATUS "options passed to swig: ${SWIG_OPTIONS}")
|
|
|
|
# Set properties before adding module
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
set_property(SOURCE ${I_FILE} PROPERTY CPLUSPLUS ON)
|
|
set_property(SOURCE ${I_FILE} PROPERTY SWIG_FLAGS ${SWIG_OPTIONS})
|
|
swig_add_module(CoolProp csharp ${I_FILE} ${APP_SOURCES})
|
|
|
|
add_definitions(-DNO_ERROR_CATCHING)
|
|
|
|
#disable internal error catching and allow swig to do the error catching itself
|
|
|
|
if(WIN32)
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
|
endif()
|
|
|
|
add_dependencies(${app_name} generate_headers)
|
|
|
|
add_custom_command(
|
|
TARGET CoolProp
|
|
PRE_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy_directory
|
|
${CMAKE_CURRENT_SOURCE_DIR}/wrappers/VB.NET/CoolPropVB
|
|
${CMAKE_CURRENT_BINARY_DIR}/CoolPropVB
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
add_custom_command(
|
|
TARGET CoolProp
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:CoolProp>
|
|
${CMAKE_CURRENT_BINARY_DIR}/CoolPropVB/CoolPropVB
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
add_custom_command(
|
|
TARGET CoolProp
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E remove
|
|
${CMAKE_CURRENT_BINARY_DIR}/CoolPropVB/CsharpClassLibrary/CoolPropCSHARP_wrap.cxx
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
add_custom_command(
|
|
TARGET CoolProp
|
|
POST_BUILD
|
|
COMMAND 7z a "${CMAKE_CURRENT_BINARY_DIR}/VB.net_VS2012_example.7z"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/CoolPropVB"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/VB.net_VS2012_example.7z"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/VB.NET)
|
|
|
|
endif()
|
|
|
|
if(COOLPROP_R_MODULE)
|
|
if(WIN32 AND MSVC)
|
|
message(FATAL_ERROR "Must use MinGW Makefiles generator on windows")
|
|
endif()
|
|
|
|
# Must have SWIG
|
|
find_package(SWIG REQUIRED)
|
|
include(${SWIG_USE_FILE})
|
|
|
|
# Define which headers the swig wrapper is dependent on
|
|
set(SWIG_MODULE_CoolProp_EXTRA_DEPS ${SWIG_DEPENDENCIES})
|
|
|
|
find_package(R REQUIRED)
|
|
include_directories(${R_INCLUDE_DIRS})
|
|
|
|
link_directories(${R_BIN_OUT})
|
|
if(NOT MSVC)
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -m${BITNESS}")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -m${BITNESS}")
|
|
endif()
|
|
|
|
add_definitions(-DNO_ERROR_CATCHING)
|
|
|
|
#disable internal error catching and allow swig to do the error catching itself
|
|
|
|
# Set properties before adding module
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
set_source_files_properties(
|
|
${I_FILE} PROPERTIES SWIG_FLAGS "${COOLPROP_SWIG_OPTIONS}" CPLUSPLUS ON)
|
|
|
|
swig_add_module(CoolProp r ${I_FILE} ${APP_SOURCES})
|
|
swig_link_libraries(CoolProp "${R_LIBRARY}")
|
|
|
|
# No lib prefix for the shared library
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
|
|
|
add_dependencies(${app_name} generate_headers generate_examples)
|
|
#add_custom_command(TARGET CoolProp
|
|
# POST_BUILD
|
|
# COMMAND "${PYTHON_EXECUTABLE}" example_generator.py R "${CMAKE_CURRENT_BINARY_DIR}/Example.R"
|
|
# WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/dev/scripts/examples")
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Example.R" DESTINATION R)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/CoolProp.R" DESTINATION R)
|
|
install(TARGETS ${app_name} DESTINATION R/${CMAKE_SYSTEM_NAME}_${BITNESS}bit)
|
|
|
|
enable_testing()
|
|
|
|
add_test(R_test "${R_BIN_DIR}/Rscript" Example.R)
|
|
|
|
endif()
|
|
|
|
if(COOLPROP_JAVA_MODULE)
|
|
|
|
# Must have SWIG and Java
|
|
find_package(SWIG REQUIRED)
|
|
include(${SWIG_USE_FILE})
|
|
find_package(Java REQUIRED)
|
|
find_package(JNI)
|
|
|
|
# Make a src directory to deal with file permissions problem with MinGW makefile
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src)
|
|
|
|
message(STATUS "JAVA_INCLUDE_PATH = ${JAVA_INCLUDE_PATH}")
|
|
|
|
include_directories(${JAVA_INCLUDE_PATH})
|
|
include_directories(${JAVA_INCLUDE_PATH}/win32)
|
|
include_directories(${JAVA_INCLUDE_PATH}/linux)
|
|
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
|
|
set(SWIG_OPTIONS "${COOLPROP_SWIG_OPTIONS}")
|
|
string(REPLACE " " ";" SWIG_OPTIONS "${SWIG_OPTIONS}")
|
|
set_source_files_properties(${I_FILE} PROPERTIES SWIG_FLAGS "${SWIG_OPTIONS}")
|
|
set_source_files_properties(${I_FILE} PROPERTIES CPLUSPLUS ON)
|
|
|
|
add_definitions(-DNO_ERROR_CATCHING)
|
|
|
|
#disable internal error catching and allow swig to do the error catching itself
|
|
|
|
set(SWIG_MODULE_CoolProp_EXTRA_DEPS ${SWIG_DEPENDENCIES})
|
|
swig_add_module(CoolProp java ${I_FILE} ${APP_SOURCES})
|
|
|
|
if(WIN32)
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
|
if(MSVC)
|
|
modify_msvc_flags("/MT")
|
|
|
|
# Note that the default is not used if ${COOLPROP_MSVC_REL} or ${COOLPROP_MSVC_DBG} is set
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT MSVC)
|
|
set_target_properties(CoolProp PROPERTIES COMPILE_FLAGS "-m${BITNESS}"
|
|
LINK_FLAGS "-m${BITNESS}")
|
|
endif()
|
|
|
|
add_dependencies(${app_name} generate_headers generate_examples)
|
|
|
|
add_custom_command(
|
|
TARGET CoolProp
|
|
POST_BUILD
|
|
COMMAND 7z a "${CMAKE_CURRENT_BINARY_DIR}/platform-independent.7z"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/*.java" -x!Example.java
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
#add_custom_command(TARGET CoolProp
|
|
# POST_BUILD
|
|
# COMMAND "${PYTHON_EXECUTABLE}" example_generator.py Java "${CMAKE_CURRENT_BINARY_DIR}/Example.java"
|
|
# WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/dev/scripts/examples")
|
|
#
|
|
# Install all the generated java files
|
|
install(
|
|
CODE "file( GLOB _GeneratedJavaSources \"${CMAKE_CURRENT_BINARY_DIR}/*.java\" )"
|
|
CODE "file( INSTALL \${_GeneratedJavaSources} DESTINATION ${CMAKE_INSTALL_PREFIX}/Java/platform-independent )"
|
|
)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Example.java"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Java)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/platform-independent.7z"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Java)
|
|
install(
|
|
TARGETS ${app_name}
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Java/${CMAKE_SYSTEM_NAME}_${BITNESS}bit)
|
|
enable_testing()
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory
|
|
${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Java${BITNESS})
|
|
add_test(
|
|
NAME Javatestbuild
|
|
COMMAND javac -d . ${CMAKE_INSTALL_PREFIX}/Java/Example.java -cp
|
|
${CMAKE_INSTALL_PREFIX}/Java/platform-independent
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Java${BITNESS})
|
|
add_test(
|
|
NAME Javatestrun
|
|
COMMAND
|
|
${Java_JAVA_EXECUTABLE}
|
|
-Djava.library.path=${CMAKE_INSTALL_PREFIX}/Java/${CMAKE_SYSTEM_NAME}_${BITNESS}bit
|
|
Example
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/testing_root/Java${BITNESS})
|
|
endif()
|
|
|
|
# A module for Android
|
|
if(COOLPROP_ANDROID_MODULE)
|
|
|
|
if(WIN32 AND (NOT MINGW))
|
|
message(
|
|
FATAL_ERROR "On windows, you must use the MinGW Makefiles generator ")
|
|
endif()
|
|
|
|
# For now, these must be changed manually
|
|
set(ANDROID_MODULE_NAME "CoolProp")
|
|
set(ANDROID_PACKAGE_NAME "CoolProp") # or blah.di.blah.CoolProp
|
|
|
|
# Must have SWIG
|
|
find_package(SWIG REQUIRED)
|
|
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
|
|
list(APPEND APP_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/jni/CoolProp_wrap.cxx)
|
|
string(REPLACE ";" " " APP_INCLUDE_DIRS "${APP_INCLUDE_DIRS}")
|
|
string(REPLACE ";" " " APP_SOURCES "${APP_SOURCES}")
|
|
|
|
file(MAKE_DIRECTORY jni)
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Android/Android.mk.template"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/jni/Android.mk")
|
|
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Android/Application.mk"
|
|
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/jni")
|
|
string(REPLACE "." "/" ANDROID_PACKAGE_PATH "${ANDROID_PACKAGE_NAME}")
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${ANDROID_PACKAGE_PATH}")
|
|
|
|
message(STATUS "WORKING_DIRECTORY=${CMAKE_CURRENT_BINARY_DIR}")
|
|
get_filename_component(NDK_BUILD_PATH "${NDK_PATH}/ndk-build" ABSOLUTE)
|
|
get_filename_component(SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src" ABSOLUTE)
|
|
get_filename_component(INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
ABSOLUTE)
|
|
|
|
add_custom_target(
|
|
CoolProp ALL
|
|
COMMAND ${NDK_BUILD_PATH}
|
|
DEPENDS jni/CoolProp_wrap.cxx
|
|
VERBATIM)
|
|
|
|
add_custom_command(
|
|
OUTPUT jni/CoolProp_wrap.cxx
|
|
COMMAND
|
|
${SWIG_EXECUTABLE} -v -c++ -java -I${SRC_PATH} -I${INCLUDE_PATH} -o
|
|
${CMAKE_CURRENT_BINARY_DIR}/jni/CoolProp_wrap.cxx -package
|
|
${ANDROID_PACKAGE_NAME} -outdir
|
|
${CMAKE_CURRENT_BINARY_DIR}/${ANDROID_PACKAGE_PATH} ${I_FILE}
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
VERBATIM)
|
|
|
|
add_dependencies(CoolProp generate_headers)
|
|
|
|
endif()
|
|
|
|
if(COOLPROP_PHP_MODULE)
|
|
|
|
# Must have SWIG
|
|
find_package(SWIG REQUIRED)
|
|
include(${SWIG_USE_FILE})
|
|
|
|
execute_process(
|
|
COMMAND php-config --includes
|
|
OUTPUT_VARIABLE php_config_includes
|
|
RESULT_VARIABLE php_config_failed)
|
|
if(php_config_failed)
|
|
message(FATAL_ERROR "calling \"php-config --includes\" failed; message:"
|
|
${php_config_includes})
|
|
endif()
|
|
string(STRIP "${php_config_includes}" php_config_includes)
|
|
string(REPLACE "-I" "" PHP_INCLUDES "${php_config_includes}")
|
|
separate_arguments(PHP_INCLUDES)
|
|
|
|
message(STATUS "php includes=${PHP_INCLUDES}")
|
|
include_directories(${PHP_INCLUDES})
|
|
|
|
add_definitions(-DNO_ERROR_CATCHING)
|
|
|
|
#disable internal error catching and allow swig to do the error catching itself
|
|
|
|
set(I_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolProp.i")
|
|
|
|
set(SWIG_OPTIONS "${COOLPROP_SWIG_OPTIONS}")
|
|
string(REPLACE " " ";" SWIG_OPTIONS "${SWIG_OPTIONS}")
|
|
set_source_files_properties(${I_FILE} PROPERTIES SWIG_FLAGS "${SWIG_OPTIONS}")
|
|
set_source_files_properties(${I_FILE} PROPERTIES CPLUSPLUS ON)
|
|
|
|
set(SWIG_MODULE_CoolProp_EXTRA_DEPS ${SWIG_DEPENDENCIES})
|
|
swig_add_module(CoolProp php ${I_FILE} ${APP_SOURCES})
|
|
|
|
if(WIN32)
|
|
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
|
endif()
|
|
|
|
if(NOT MSVC)
|
|
set_target_properties(CoolProp PROPERTIES COMPILE_FLAGS "-m${BITNESS}"
|
|
LINK_FLAGS "-m${BITNESS}")
|
|
endif()
|
|
add_dependencies(CoolProp generate_headers)
|
|
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CoolProp.php
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/PHP/cross-platform)
|
|
install(TARGETS ${app_name}
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/PHP/${CMAKE_SYSTEM_NAME})
|
|
|
|
endif()
|
|
|
|
function(JOIN VALUES GLUE OUTPUT)
|
|
string(REGEX REPLACE "([^\\]|^);" "\\1${GLUE}" _TMP_STR "${VALUES}")
|
|
string(REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") #fixes escaping
|
|
set(${OUTPUT}
|
|
"${_TMP_STR}"
|
|
PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
if(COOLPROP_PYTHON_BINARIES)
|
|
if(WIN32)
|
|
set(COOLPROP_PYTHON_BINARY_VERSIONS
|
|
bdist_wheel --dist-dir ${CMAKE_INSTALL_PREFIX}/Python bdist_wininst
|
|
--dist-dir ${CMAKE_INSTALL_PREFIX}/Python)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
set(COOLPROP_PYTHON_BINARY_VERSIONS bdist_wheel --dist-dir
|
|
${CMAKE_INSTALL_PREFIX}/Python)
|
|
endif()
|
|
|
|
add_custom_target(
|
|
CoolProp
|
|
COMMAND python setup.py ${COOLPROP_PYTHON_BINARY_VERSIONS}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Python)
|
|
|
|
endif()
|
|
|
|
if(COOLPROP_PYTHON_PYPI)
|
|
|
|
add_custom_target(
|
|
CoolProp
|
|
COMMAND python prepare_pypi.py --dist-dir=${CMAKE_INSTALL_PREFIX}/Python
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Python/pypi)
|
|
endif()
|
|
|
|
if(COOLPROP_LIBREOFFICE_MODULE)
|
|
|
|
if("${LO_PROGRAM_PATH}" STREQUAL "")
|
|
message(
|
|
FATAL_ERROR
|
|
"You must provide the path to LibreOffice programs, something like -DLO_PROGRAM_PATH=/usr/lib/libreoffice/program"
|
|
)
|
|
else()
|
|
message(STATUS "LO_PROGRAM_PATH: ${LO_PROGRAM_PATH}")
|
|
endif()
|
|
|
|
if("${LO_SDK_PATH}" STREQUAL "")
|
|
message(
|
|
FATAL_ERROR
|
|
"You must provide the path to LibreOffice SDK, something like -DLO_SDK_PATH=/usr/lib/libreoffice/sdk"
|
|
)
|
|
else()
|
|
message(STATUS "LO_SDK_PATH: ${LO_SDK_PATH}")
|
|
endif()
|
|
|
|
# set paths for LibreOffice tools
|
|
set(LO_UNOIDL_WRITE "${LO_SDK_PATH}/bin/unoidl-write")
|
|
set(COOLPROP_LIBREOFFICE_TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/LibreOffice")
|
|
|
|
# set version strings for LibreOffice extension
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/LibreOffice/src/description.xml.in"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src/description.xml")
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/LibreOffice/src/scripts/scripts.py.in"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src/scripts/scripts.py")
|
|
|
|
add_custom_target(CoolPropLibreOfficeAddin ALL DEPENDS CoolProp.oxt)
|
|
|
|
add_custom_command(
|
|
OUTPUT CoolProp.oxt
|
|
# copy source files to build directory
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy_directory"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/LibreOffice/src"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "remove"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src/description.xml.in"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src/scripts/scripts.py.in"
|
|
# build the registry database file (rdb)
|
|
COMMAND
|
|
${LO_UNOIDL_WRITE}
|
|
${LO_PROGRAM_PATH}/types.rdb ${LO_PROGRAM_PATH}/types/offapi.rdb
|
|
XCoolProp.idl XCoolProp.rdb
|
|
# download and bundle latest Python pip package (py2.py3, platform independent)
|
|
COMMAND pip download pip -d pythonpath
|
|
COMMAND 7z x "./pythonpath/pip-*.whl" -y -opythonpath
|
|
# download and bundle latest Python certifi package (py2.py3, platform independent)
|
|
COMMAND pip download certifi -d pythonpath
|
|
COMMAND 7z x "./pythonpath/certifi-*.whl" -y -opythonpath
|
|
# add license file
|
|
COMMAND ${CMAKE_COMMAND} ARGS "-E" "make_directory"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src/license"
|
|
COMMAND
|
|
${CMAKE_COMMAND} ARGS "-E" "copy" "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
|
|
"${COOLPROP_LIBREOFFICE_TMP_DIR}/src/license/."
|
|
# package complete folder to extension
|
|
COMMAND 7z a -tzip "../CoolProp.oxt"
|
|
WORKING_DIRECTORY ${COOLPROP_LIBREOFFICE_TMP_DIR}/src
|
|
COMMENT "Building LibreOffice wrapper"
|
|
VERBATIM)
|
|
|
|
# install LibreOffice extension and example spreadsheet file
|
|
install(FILES "${COOLPROP_LIBREOFFICE_TMP_DIR}/CoolProp.oxt"
|
|
DESTINATION "${COOLPROP_INSTALL_PREFIX}/LibreOffice")
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/LibreOffice/TestLibreOffice.ods"
|
|
DESTINATION "${COOLPROP_INSTALL_PREFIX}/LibreOffice")
|
|
endif()
|
|
|
|
if(COOLPROP_JAVASCRIPT_MODULE)
|
|
# cmake -DCOOLPROP_JAVASCRIPT_MODULE=ON
|
|
# -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Platform/Emscripten.cmake
|
|
# ../..
|
|
|
|
# Toolchain MUST be defined in the call to CMake
|
|
|
|
if(MSVC)
|
|
message(
|
|
FATAL_ERROR
|
|
"Cannot use visual studio, use MinGW Makefiles generator on windows")
|
|
endif()
|
|
|
|
add_definitions(-sDISABLE_EXCEPTION_CATCHING=0)
|
|
# If you want a monolithic file with no async memory loading, define EMSCRIPTEN_NO_MEMORY_INIT_FILE
|
|
if(EMSCRIPTEN_NO_MEMORY_INIT_FILE)
|
|
set(EMSCRIPTEN_INIT_FLAG "--memory-init-file 0")
|
|
else()
|
|
set(EMSCRIPTEN_INIT_FLAG "--memory-init-file 1")
|
|
endif()
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS
|
|
"--bind ${EMSCRIPTEN_INIT_FLAG} -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0"
|
|
)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/CoolPropLib.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/emscripten_interface.cxx")
|
|
include_directories(${APP_INCLUDE_DIRS})
|
|
add_executable(coolprop ${APP_SOURCES})
|
|
add_dependencies(coolprop generate_headers)
|
|
set_target_properties(coolprop PROPERTIES PREFIX "" SUFFIX .js)
|
|
#install (TARGETS coolprop DESTINATION ${CMAKE_INSTALL_PREFIX}/Javascript)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/coolprop.js"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Javascript)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/coolprop.wasm"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Javascript)
|
|
#install (FILES "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt" DESTINATION ${CMAKE_INSTALL_PREFIX}/Javascript)
|
|
install(
|
|
FILES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Web/coolprop/wrappers/Javascript/index.html"
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/Javascript)
|
|
endif()
|
|
|
|
if(COOLPROP_MATHEMATICA_MODULE)
|
|
|
|
if(MSVC)
|
|
modify_msvc_flags("/MT")
|
|
|
|
# Note that the default is not used if ${COOLPROP_MSVC_REL} or ${COOLPROP_MSVC_DBG} is set
|
|
endif()
|
|
|
|
set(CMAKE_MODULE_PATH
|
|
${CMAKE_MODULE_PATH}
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/externals/FindMathematica/CMake/Mathematica/"
|
|
)
|
|
find_package(Mathematica COMPONENTS WolframLibrary)
|
|
message(
|
|
STATUS
|
|
"Mathematica_WolframLibrary_FOUND=${Mathematica_WolframLibrary_FOUND}")
|
|
message(
|
|
STATUS
|
|
"Mathematica_WolframLibrary_INCLUDE_DIR=${Mathematica_WolframLibrary_INCLUDE_DIR}"
|
|
)
|
|
message(STATUS "Mathematica_USERBASE_DIR=${Mathematica_USERBASE_DIR}")
|
|
|
|
list(
|
|
APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Mathematica/CoolPropMathematica.cpp")
|
|
list(APPEND APP_INCLUDE_DIRS "${Mathematica_WolframLibrary_INCLUDE_DIR}")
|
|
include_directories(${APP_INCLUDE_DIRS})
|
|
add_library(CoolProp SHARED ${APP_SOURCES})
|
|
add_dependencies(CoolProp generate_headers)
|
|
|
|
if(MSVC)
|
|
add_custom_command(
|
|
TARGET ${app_name}
|
|
POST_BUILD
|
|
COMMAND dumpbin /EXPORTS $<TARGET_FILE:CoolProp> >
|
|
${CMAKE_CURRENT_BINARY_DIR}/exports.txt)
|
|
endif()
|
|
|
|
install(FILES $<TARGET_FILE:CoolProp>
|
|
DESTINATION Mathematica/${CMAKE_SYSTEM_NAME})
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/wrappers/Mathematica/example.nb"
|
|
DESTINATION Mathematica)
|
|
endif()
|
|
|
|
if(COOLPROP_SMATH_MODULE)
|
|
if(COOLPROP_SMATH_WORK_INPLACE)
|
|
set(COOLPROP_WORK_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
else()
|
|
set(COOLPROP_WORK_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|
endif()
|
|
set(COOLPROP_VERSION
|
|
${COOLPROP_VERSION_MAJOR}.${COOLPROP_VERSION_MINOR}.${COOLPROP_VERSION_PATCH}.0
|
|
)
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/SMath/coolprop_wrapper/Properties/AssemblyInfo.cs.template"
|
|
"${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/Properties/AssemblyInfo.cs"
|
|
)
|
|
message(
|
|
STATUS
|
|
"Generated ${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/Properties/AssemblyInfo.cs"
|
|
)
|
|
file(WRITE "${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/config.ini"
|
|
"${COOLPROP_VERSION}")
|
|
message(
|
|
STATUS "Generated ${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/config.ini")
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/SMath/coolprop_wrapper/install.bat.template"
|
|
"${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/install.bat")
|
|
message(
|
|
STATUS
|
|
"Generated ${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/install.bat"
|
|
)
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/SMath/coolprop_wrapper/build_zip.bat.template"
|
|
"${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/build_zip.bat")
|
|
message(
|
|
STATUS
|
|
"Generated ${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/build_zip.bat"
|
|
)
|
|
file(TO_NATIVE_PATH
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/SMath/coolprop_wrapper"
|
|
DOS_STYLE_SOURCE_DIR)
|
|
file(TO_NATIVE_PATH
|
|
"${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper"
|
|
DOS_STYLE_TARGET_DIR)
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/wrappers/SMath/coolprop_wrapper/coolprop_wrapper.csproj.template"
|
|
"${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/coolprop_wrapper.csproj"
|
|
)
|
|
message(
|
|
STATUS
|
|
"Generated ${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/coolprop_wrapper.csproj"
|
|
)
|
|
include_external_msproject(
|
|
CoolPropWrapper
|
|
${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/coolprop_wrapper.csproj
|
|
TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC
|
|
PLATFORM AnyCPU)
|
|
message(
|
|
STATUS
|
|
"C# project ${COOLPROP_WORK_BASE_DIR}/wrappers/SMath/coolprop_wrapper/coolprop_wrapper.csproj included"
|
|
)
|
|
|
|
endif()
|
|
|
|
# Use like cmake ..\CoolProp.git -DCOOLPROP_MY_MAIN=dev/coverity/main.cxx
|
|
if(COOLPROP_MY_MAIN)
|
|
list(APPEND APP_SOURCES "${COOLPROP_MY_MAIN}")
|
|
add_executable(Main ${APP_SOURCES})
|
|
add_dependencies(Main generate_headers)
|
|
if(UNIX)
|
|
target_link_libraries(Main ${CMAKE_DL_LIBS})
|
|
endif()
|
|
endif()
|
|
|
|
if(COOLPROP_MAIN_MODULE)
|
|
# Allow you to independently add back the testing CPP files
|
|
if(COOLPROP_TEST)
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/Tests/Tests.cpp")
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/Tests/CoolProp-Tests.cpp")
|
|
endif()
|
|
list(APPEND APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cxx")
|
|
add_executable(Main ${APP_SOURCES})
|
|
add_dependencies(Main generate_headers)
|
|
if(COOLPROP_TEST)
|
|
set_target_properties(Main PROPERTIES COMPILE_FLAGS
|
|
"${COMPILE_FLAGS} -DENABLE_CATCH")
|
|
endif()
|
|
|
|
if(COOLPROP_IWYU)
|
|
find_program(iwyu_path NAMES include-what-you-use iwyu)
|
|
if(NOT iwyu_path)
|
|
message(FATAL_ERROR "Could not find the program include-what-you-use")
|
|
endif()
|
|
set_property(TARGET Main PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path})
|
|
endif()
|
|
|
|
if(UNIX)
|
|
target_link_libraries(Main ${CMAKE_DL_LIBS})
|
|
endif()
|
|
endif()
|
|
|
|
### COOLPROP TESTING APP ###
|
|
if(COOLPROP_CATCH_MODULE)
|
|
|
|
add_subdirectory("externals/Catch2")
|
|
enable_testing()
|
|
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/Tests/CoolProp-Tests.cpp")
|
|
|
|
# CATCH TEST, compile everything with catch and set test entry point
|
|
add_executable(CatchTestRunner ${APP_SOURCES})
|
|
|
|
target_link_libraries(CatchTestRunner PRIVATE Catch2::Catch2WithMain)
|
|
target_compile_definitions(CatchTestRunner PRIVATE ENABLE_CATCH)
|
|
if(UNIX)
|
|
target_link_libraries(CatchTestRunner ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
include(CTest)
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/externals/Catch2/extras/Catch.cmake)
|
|
catch_discover_tests(CatchTestRunner)
|
|
|
|
if(COOLPROP_IWYU)
|
|
find_program(iwyu_path NAMES include-what-you-use iwyu)
|
|
if(NOT iwyu_path)
|
|
message(FATAL_ERROR "Could not find the program include-what-you-use")
|
|
endif()
|
|
set_property(TARGET CatchTestRunner PROPERTY CXX_INCLUDE_WHAT_YOU_USE
|
|
${iwyu_path})
|
|
endif()
|
|
endif()
|
|
|
|
if(COOLPROP_CPP_EXAMPLE_TEST)
|
|
# C++ Documentation Test
|
|
add_executable(docuTest.exe "Web/examples/C++/Example.cpp")
|
|
add_dependencies(docuTest.exe ${app_name})
|
|
target_link_libraries(docuTest.exe ${app_name})
|
|
if(UNIX)
|
|
target_link_libraries(docuTest.exe ${CMAKE_DL_LIBS})
|
|
endif()
|
|
add_test(DocumentationTest docuTest.exe)
|
|
endif()
|
|
|
|
if(COOLPROP_SNIPPETS)
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${COOLPROP_LIBRARY_SOURCE}")
|
|
# Make the static library with which the snippets will be linked
|
|
add_library(${app_name} STATIC ${APP_SOURCES})
|
|
add_dependencies(${app_name} generate_headers)
|
|
set_property(
|
|
TARGET ${app_name}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -DEXTERNC")
|
|
|
|
# Collect all the snippets
|
|
file(GLOB_RECURSE snippets
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Web/coolprop/snippets/*.cxx")
|
|
|
|
message(STATUS "snippets found = ${snippets}")
|
|
foreach(snippet ${snippets})
|
|
|
|
get_filename_component(snippet_name ${snippet} NAME)
|
|
get_filename_component(snippet_exe ${snippet} NAME_WE)
|
|
message(STATUS "snippet_name = ${snippet_name}")
|
|
|
|
add_executable(${snippet_exe} ${snippet})
|
|
add_dependencies(${snippet_exe} CoolProp)
|
|
target_link_libraries(${snippet_exe} CoolProp)
|
|
if(UNIX)
|
|
target_link_libraries(${snippet_exe} ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
if(MSVC)
|
|
set_target_properties(
|
|
${snippet_exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
|
${CMAKE_CURRENT_BINARY_DIR}/bin)
|
|
set_target_properties(
|
|
${snippet_exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
|
|
${CMAKE_CURRENT_BINARY_DIR}/bin)
|
|
set_target_properties(
|
|
${snippet_exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
|
|
${CMAKE_CURRENT_BINARY_DIR}/bin)
|
|
# etc for the other available configuration types (MinSizeRel, RelWithDebInfo)
|
|
set(BIN_PATH "${CMAKE_CURRENT_BINARY_DIR}/bin")
|
|
else()
|
|
set(BIN_PATH "${CMAKE_CURRENT_BINARY_DIR}")
|
|
endif()
|
|
|
|
set_property(
|
|
TARGET ${snippet_exe}
|
|
APPEND_STRING
|
|
PROPERTY COMPILE_FLAGS " -DEXTERNC")
|
|
|
|
# Run it and save the output to a file with .output appended
|
|
add_custom_command(
|
|
TARGET ${snippet_exe}
|
|
POST_BUILD
|
|
COMMAND
|
|
${BIN_PATH}/${snippet_exe} >
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Web/coolprop/snippets/${snippet_name}.output
|
|
)
|
|
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
if(COOLPROP_CLANG_ADDRESS_SANITIZER)
|
|
|
|
set(CMAKE_CXX_FLAGS "-fsanitize=address -g")
|
|
list(APPEND APP_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/Tests/catch_always_return_success.cxx")
|
|
# CATCH TEST, compile everything with catch and set test entry point
|
|
add_executable(CatchTestRunner ${APP_SOURCES})
|
|
add_dependencies(CatchTestRunner generate_headers)
|
|
set_target_properties(
|
|
CatchTestRunner PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -DENABLE_CATCH")
|
|
set(CMAKE_CXX_FLAGS "-O1")
|
|
set(CMAKE_EXE_LINKER_FLAGS
|
|
"-fsanitize=address -fno-omit-frame-pointer -lstdc++")
|
|
if(UNIX)
|
|
target_link_libraries(CatchTestRunner ${CMAKE_DL_LIBS})
|
|
endif()
|
|
add_custom_command(
|
|
TARGET CatchTestRunner
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/CatchTestRunner)
|
|
endif()
|
|
|
|
if(COOLPROP_PROFILE)
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
set(CMAKE_CXX_FLAGS "-g -O2")
|
|
set(CMAKE_C_FLAGS "-g -O2")
|
|
endif()
|
|
endif()
|
|
|
|
if(COOLPROP_COVERAGE)
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
# See also http://stackoverflow.com/a/16536401 (detailed guide on using gcov with cmake)
|
|
include(CodeCoverage)
|
|
set(CMAKE_CXX_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
|
|
set(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
|
|
setup_target_for_coverage(CoolProp_coverage Main coverage)
|
|
endif()
|
|
endif()
|
|
|
|
# TODO: check relevance of http://www.cmake.org/Wiki/BuildingWinDLL
|
|
|
|
#include_directories("${CMAKE_CURRENT_SOURCE_DIR}/CoolProp")
|
|
#FILE(GLOB coolprop_files "${CMAKE_CURRENT_SOURCE_DIR}/CoolProp/*.cpp")
|
|
#add_library(coolprop STATIC ${coolprop_files})
|