Automaticaly find CoreCLR bin directory if it is not specified
authorIgor Kulaychuk <i.kulaychuk@samsung.com>
Tue, 22 May 2018 15:47:18 +0000 (18:47 +0300)
committerIgor Kulaychuk <i.kulaychuk@samsung.com>
Tue, 22 May 2018 15:47:18 +0000 (18:47 +0300)
CMakeLists.txt

index a8f92d1..ee0e76e 100644 (file)
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.12.2)
 project(netcoredbg)
 
 set(CLR_DIR "${CMAKE_SOURCE_DIR}/../coreclr" CACHE FILEPATH "Path to coreclr directory")
-set(CLR_BIN_DIR "${CLR_DIR}/bin/Product/Linux.x64.Debug" CACHE FILEPATH "Path to coreclr bin directory")
+set(CLR_BIN_DIR "" CACHE FILEPATH "Path to coreclr bin directory")
 set(BUILD_MANAGED ON CACHE BOOL "Build managed part")
 set(DBGSHIM_INSTALL ON CACHE BOOL "Install libdbgshim")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-null-conversion")
@@ -10,4 +10,31 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-null-conversion")
 include(clrdefinitions.cmake)
 include(compileoptions.cmake)
 
+if (NOT IS_DIRECTORY "${CLR_DIR}")
+    message(FATAL_ERROR "Unable to find CoreCLR directory")
+endif()
+
+if ("${CLR_BIN_DIR}" STREQUAL "")
+    if (CMAKE_SYSTEM_NAME STREQUAL Darwin)
+        set(TARGET_OS_NAME "OSX")
+    elseif (CMAKE_SYSTEM_NAME STREQUAL Linux)
+        set(TARGET_OS_NAME "Linux")
+    endif()
+    # TODO: Search for CMAKE_BUILD_TYPE configuration first
+    # TODO: CLR_CMAKE_TARGET_ARCH may be armel
+    set(CLR_BIN_DIR ${CLR_DIR}/bin/Product/${TARGET_OS_NAME}.${CLR_CMAKE_TARGET_ARCH}.Debug)
+    if (NOT IS_DIRECTORY "${CLR_BIN_DIR}")
+        set(CLR_BIN_DIR ${CLR_DIR}/bin/Product/${TARGET_OS_NAME}.${CLR_CMAKE_TARGET_ARCH}.Release)
+    endif()
+    if (NOT IS_DIRECTORY "${CLR_BIN_DIR}")
+        set(CLR_BIN_DIR ${CLR_DIR}/bin/Product/${TARGET_OS_NAME}.${CLR_CMAKE_TARGET_ARCH}.Checked)
+    endif()
+
+    if (IS_DIRECTORY "${CLR_BIN_DIR}")
+        message(STATUS "CoreCLR bin directory: " ${CLR_BIN_DIR})
+    else()
+        message(FATAL_ERROR "Unable to find CoreCLR bin directory")
+    endif()
+endif()
+
 add_subdirectory(src/debug/netcoredbg)