mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 09:55:19 +00:00
`contrib/cmake/bootstrap.py` script no longer needs to be executed. The previous location of the CMake files was a compromise proposed by @agurfinkel in #461. While this has served us well (allowing progress to be made) over time limitations of this approach have appeared. The main problem is that doing many git operations (e.g. pull, rebase) means the CMake files don't get updated unless the user remembers to run the script. This can lead to broken and confusing build system behaviour. This commit only does the file moving and necessary changes to `.gitignore`. Other changes will be done in subsequent commits.
54 lines
1.7 KiB
CMake
54 lines
1.7 KiB
CMake
# Tries to find a working .NET tool chain
|
|
#
|
|
# Once complete this will define
|
|
# DOTNET_TOOLCHAIN_FOUND : BOOL : System has a .NET toolchain
|
|
# DOTNET_CSC_EXECUTABLE - STRING : Path to C# compiler
|
|
# DOTNET_GACUTIL_EXECUTABLE - STRING : Path to gacutil
|
|
# DOTNET_TOOLCHAIN_IS_MONO : BOOL : True if detected .NET toolchain is Mono
|
|
# DOTNET_TOOLCHAIN_IS_WINDOWS : BOOL : True if detected .NET toolchain is native Windows
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
find_program(
|
|
DOTNET_CSC_EXECUTABLE
|
|
NAMES "csc.exe" "mcs" "dmcs"
|
|
)
|
|
message(STATUS "DOTNET_CSC_EXECUTABLE: \"${DOTNET_CSC_EXECUTABLE}\"")
|
|
|
|
find_program(
|
|
DOTNET_GACUTIL_EXECUTABLE
|
|
NAMES "gacutil.exe" "gacutil"
|
|
)
|
|
message(STATUS "DOTNET_GACUTIL_EXECUTABLE: \"${DOTNET_GACUTIL_EXECUTABLE}\"")
|
|
|
|
# Try to determine the tool chain vendor
|
|
set(DOTNET_DETERMINED_VENDOR FALSE)
|
|
if (DOTNET_CSC_EXECUTABLE)
|
|
execute_process(COMMAND "${DOTNET_CSC_EXECUTABLE}" "/help"
|
|
RESULT_VARIABLE CSC_EXIT_CODE
|
|
OUTPUT_VARIABLE CSC_STD_OUT
|
|
)
|
|
if (${CSC_EXIT_CODE} EQUAL 0)
|
|
if ("${CSC_STD_OUT}" MATCHES "^Mono[ ]+C#")
|
|
set(DOTNET_DETERMINED_VENDOR TRUE)
|
|
set(DOTNET_TOOLCHAIN_IS_MONO TRUE)
|
|
set(DOTNET_TOOLCHAIN_IS_WINDOWS FALSE)
|
|
message(STATUS ".NET toolchain is Mono")
|
|
elseif ("${CSC_STD_OUT}" MATCHES "^Microsoft.+Visual[ ]+C#")
|
|
set(DOTNET_DETERMINED_VENDOR TRUE)
|
|
set(DOTNET_TOOLCHAIN_IS_MONO FALSE)
|
|
set(DOTNET_TOOLCHAIN_IS_WINDOWS TRUE)
|
|
message(STATUS ".NET toolchain is Windows native")
|
|
else()
|
|
message(STATUS ".NET toolchain is unknown")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# TODO: Check C# compiler works
|
|
|
|
find_package_handle_standard_args(DotNetToolChain DEFAULT_MSG
|
|
DOTNET_CSC_EXECUTABLE
|
|
DOTNET_GACUTIL_EXECUTABLE
|
|
DOTNET_DETERMINED_VENDOR
|
|
)
|