mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-04-01 03:00:13 -04:00
C# works on linux
This commit is contained in:
@@ -199,13 +199,17 @@ if (COOLPROP_CSHARP_MODULE)
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src)
|
||||
|
||||
set(I_FILE "${CMAKE_SOURCE_DIR}/src/CoolProp.i")
|
||||
|
||||
|
||||
# Set properties before adding module
|
||||
SET_SOURCE_FILES_PROPERTIES(${I_FILE} PROPERTIES CPLUSPLUS ON)
|
||||
SET_SOURCE_FILES_PROPERTIES(${I_FILE} PROPERTIES SWIG_FLAGS "-dllimport \"CoolProp\"")
|
||||
|
||||
if (WIN32)
|
||||
SET_SOURCE_FILES_PROPERTIES(${I_FILE} PROPERTIES SWIG_FLAGS "-dllimport CoolProp")
|
||||
endif()
|
||||
SWIG_ADD_MODULE(CoolProp csharp ${I_FILE} ${APP_SOURCES})
|
||||
|
||||
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
||||
if (WIN32)
|
||||
set_target_properties(CoolProp PROPERTIES PREFIX "")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
162
dev/cmake/Modules/FindMono.cmake
Normal file
162
dev/cmake/Modules/FindMono.cmake
Normal file
@@ -0,0 +1,162 @@
|
||||
#
|
||||
# A CMake Module for finding Mono.
|
||||
#
|
||||
# The following variables are set:
|
||||
# CSHARP_MONO_FOUND
|
||||
# CSHARP_MONO_COMPILER_${version} eg. "CSHARP_MONO_COMPILER_2.10.2"
|
||||
# CSHARP_MONO_INTERPRETOR_${version} eg. "CSHARP_MONO_INTERPRETOR_2.10.2"
|
||||
# CSHARP_MONO_VERSION eg. "2.10.2"
|
||||
# CSHARP_MONO_VERSIONS eg. "2.10.2, 2.6.7"
|
||||
#
|
||||
# Additional references can be found here:
|
||||
# http://www.mono-project.com/Main_Page
|
||||
# http://www.mono-project.com/CSharp_Compiler
|
||||
# http://mono-project.com/FAQ:_Technical (How can I tell where the Mono runtime is installed)
|
||||
#
|
||||
# This file is based on the work of GDCM:
|
||||
# http://gdcm.svn.sf.net/viewvc/gdcm/trunk/CMake/FindMono.cmake
|
||||
# Copyright (c) 2006-2010 Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
#
|
||||
|
||||
set( csharp_mono_valid 1 )
|
||||
if( DEFINED CSHARP_MONO_FOUND )
|
||||
# The Mono compiler has already been found
|
||||
# It may have been reset by the user, verify it is correct
|
||||
if( NOT DEFINED CSHARP_MONO_COMPILER_${CSHARP_MONO_VERSION} )
|
||||
set( csharp_mono_version_user ${CSHARP_MONO_VERSION} )
|
||||
set( csharp_mono_valid 0 )
|
||||
set( CSHARP_MONO_FOUND 0 )
|
||||
set( CSHARP_MONO_VERSION "CSHARP_MONO_VERSION-NOTVALID" CACHE STRING "C# Mono compiler version, choices: ${CSHARP_MONO_VERSIONS}" FORCE )
|
||||
message( FATAL_ERROR "The C# Mono version '${csharp_mono_version_user}' is not valid. Please enter one of the following: ${CSHARP_MONO_VERSIONS}" )
|
||||
endif( NOT DEFINED CSHARP_MONO_COMPILER_${CSHARP_MONO_VERSION} )
|
||||
endif( DEFINED CSHARP_MONO_FOUND )
|
||||
|
||||
unset( CSHARP_MONO_VERSIONS CACHE ) # Clear versions
|
||||
if( WIN32 )
|
||||
# Search for Mono on Win32 systems
|
||||
# See http://mono-project.com/OldReleases and http://www.go-mono.com/mono-downloads/download.html
|
||||
set( csharp_mono_bin_dirs )
|
||||
set( csharp_mono_search_hints
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.11.2;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.9;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.8;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.7;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.6;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.5;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.4;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.3;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.2;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10.1;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.10;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.8;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.6.7;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.6.4;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.6.3;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.6.1;SdkInstallRoot]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono\\2.6;SdkInstallRoot]/bin"
|
||||
)
|
||||
foreach( csharp_mono_search_hint ${csharp_mono_search_hints} )
|
||||
get_filename_component( csharp_mono_bin_dir "${csharp_mono_search_hint}" ABSOLUTE )
|
||||
if ( EXISTS "${csharp_mono_bin_dir}" )
|
||||
set( csharp_mono_bin_dirs ${csharp_mono_bin_dirs} ${csharp_mono_bin_dir} )
|
||||
endif ( EXISTS "${csharp_mono_bin_dir}" )
|
||||
endforeach( csharp_mono_search_hint )
|
||||
# TODO: Use HKLM_LOCAL_MACHINE\Software\Novell\Mono\DefaultCLR to specify default version
|
||||
# get_filename_component( test "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Novell\\Mono;DefaultCLR]" NAME )
|
||||
|
||||
foreach ( csharp_mono_bin_dir ${csharp_mono_bin_dirs} )
|
||||
string( REPLACE "\\" "/" csharp_mono_bin_dir ${csharp_mono_bin_dir} )
|
||||
if (EXISTS "${csharp_mono_bin_dir}/dmcs.bat")
|
||||
set( csharp_mono_executable "${csharp_mono_bin_dir}/dmcs.bat")
|
||||
elseif (EXISTS "${csharp_mono_bin_dir}/gmcs.bat")
|
||||
set( csharp_mono_executable "${csharp_mono_bin_dir}/gmcs.bat")
|
||||
elseif (EXISTS "${csharp_mono_bin_dir}/mcs.bat")
|
||||
set( csharp_mono_executable "${csharp_mono_bin_dir}/mcs.bat")
|
||||
endif (EXISTS "${csharp_mono_bin_dir}/dmcs.bat")
|
||||
|
||||
if( csharp_mono_valid )
|
||||
# Extract version number (eg. 2.10.2)
|
||||
string(REGEX MATCH "([0-9]*)([.])([0-9]*)([.]*)([0-9]*)" csharp_mono_version_temp ${csharp_mono_bin_dir})
|
||||
set( CSHARP_MONO_VERSION ${csharp_mono_version_temp} CACHE STRING "C# Mono compiler version" )
|
||||
mark_as_advanced( CSHARP_MONO_VERSION )
|
||||
|
||||
# Add variable holding executable
|
||||
set( CSHARP_MONO_COMPILER_${csharp_mono_version_temp} ${csharp_mono_executable} CACHE STRING "C# Mono compiler ${csharp_mono_version_temp}" FORCE )
|
||||
mark_as_advanced( CSHARP_MONO_COMPILER_${csharp_mono_version_temp} )
|
||||
|
||||
# Set interpreter
|
||||
if (EXISTS "${csharp_mono_bin_dir}/mono.exe")
|
||||
set( CSHARP_MONO_INTERPRETER_${csharp_mono_version_temp} "${csharp_mono_bin_dir}/mono.exe" CACHE STRING "C# Mono interpreter ${csharp_mono_version_temp}" FORCE )
|
||||
mark_as_advanced( CSHARP_MONO_INTERPRETER_${csharp_mono_version_temp} )
|
||||
endif (EXISTS "${csharp_mono_bin_dir}/mono.exe")
|
||||
endif( csharp_mono_valid )
|
||||
|
||||
# Create a list of supported compiler versions
|
||||
if( NOT DEFINED CSHARP_MONO_VERSIONS )
|
||||
set( CSHARP_MONO_VERSIONS "${csharp_mono_version_temp}" CACHE STRING "Available C# Mono compiler versions" FORCE )
|
||||
else( NOT DEFINED CSHARP_MONO_VERSIONS )
|
||||
set( CSHARP_MONO_VERSIONS "${CSHARP_MONO_VERSIONS}, ${csharp_mono_version_temp}" CACHE STRING "Available C# Mono versions" FORCE )
|
||||
endif( NOT DEFINED CSHARP_MONO_VERSIONS )
|
||||
mark_as_advanced( CSHARP_MONO_VERSIONS )
|
||||
|
||||
# We found at least one Mono compiler version
|
||||
set( CSHARP_MONO_FOUND 1 CACHE INTERNAL "Boolean indicating if C# Mono was found" )
|
||||
endforeach( csharp_mono_bin_dir )
|
||||
|
||||
else( UNIX )
|
||||
# Search for Mono on non-Win32 systems
|
||||
set( chsarp_mono_names "mcs" "mcs.exe" "dmcs" "dmcs.exe" "smcs" "smcs.exe" "gmcs" "gmcs.exe" )
|
||||
set(
|
||||
csharp_mono_paths
|
||||
"/usr/bin/"
|
||||
"/usr/local/bin/"
|
||||
"/usr/lib/mono/2.0"
|
||||
"/opt/novell/mono/bin"
|
||||
)
|
||||
find_program(
|
||||
csharp_mono_compiler # variable is added to the cache, we removed it below
|
||||
NAMES ${chsarp_mono_names}
|
||||
PATHS ${csharp_mono_paths}
|
||||
)
|
||||
|
||||
if( EXISTS ${csharp_mono_compiler} )
|
||||
# Determine version
|
||||
find_program(
|
||||
csharp_mono_interpreter # variable is added to the cache, we removed it below
|
||||
NAMES mono
|
||||
PATHS ${csharp_mono_paths}
|
||||
)
|
||||
if ( EXISTS ${csharp_mono_interpreter} )
|
||||
execute_process(
|
||||
COMMAND ${csharp_mono_interpreter} -V
|
||||
OUTPUT_VARIABLE csharp_mono_version_string
|
||||
)
|
||||
string( REGEX MATCH "([0-9]*)([.])([0-9]*)([.]*)([0-9]*)" csharp_mono_version_temp ${csharp_mono_version_string} )
|
||||
set( CSHARP_MONO_INTERPRETER_${CSHARP_MONO_VERSION} ${csharp_mono_interpreter} CACHE STRING "C# Mono interpreter ${csharp_mono_version_temp}" FORCE )
|
||||
mark_as_advanced( CSHARP_MONO_INTERPRETER_${CSHARP_MONO_VERSION} )
|
||||
endif ( EXISTS ${csharp_mono_interpreter} )
|
||||
unset( csharp_mono_interpreter CACHE )
|
||||
|
||||
# We found Mono compiler
|
||||
set( CSHARP_MONO_VERSION ${csharp_mono_version_temp} CACHE STRING "C# Mono compiler version" )
|
||||
mark_as_advanced( CSHARP_MONO_VERSION )
|
||||
set( CSHARP_MONO_COMPILER_${CSHARP_MONO_VERSION} ${csharp_mono_compiler} CACHE STRING "C# Mono compiler ${CSHARP_MONO_VERSION}" FORCE )
|
||||
mark_as_advanced( CSHARP_MONO_COMPILER_${CSHARP_MONO_VERSION} )
|
||||
set( CSHARP_MONO_VERSIONS ${CSHARP_MONO_VERSION} CACHE STRING "Available C# Mono compiler versions" FORCE )
|
||||
mark_as_advanced( CSHARP_MONO_VERSIONS )
|
||||
set( CSHARP_MONO_FOUND 1 CACHE INTERNAL "Boolean indicating if C# Mono was found" )
|
||||
endif( EXISTS ${csharp_mono_compiler} )
|
||||
|
||||
# Remove temp variable from cache
|
||||
unset( csharp_mono_compiler CACHE )
|
||||
|
||||
endif( WIN32 )
|
||||
|
||||
if( CSHARP_MONO_FOUND )
|
||||
# Report the found versions
|
||||
message( STATUS "Found the following C# Mono versions: ${CSHARP_MONO_VERSIONS}" )
|
||||
endif( CSHARP_MONO_FOUND )
|
||||
|
||||
# Set USE_FILE
|
||||
get_filename_component( current_list_path ${CMAKE_CURRENT_LIST_FILE} PATH )
|
||||
set( Mono_USE_FILE ${current_list_path}/UseMono.cmake )
|
||||
Reference in New Issue
Block a user