From: Igor Kulaychuk Date: Sat, 25 Aug 2018 20:29:14 +0000 (+0300) Subject: Fix dbgshim location for Tizen X-Git-Tag: submit/tizen/20180921.084208~2^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8c7760f10cdd5c3f05932eb526f76b9fc9831b4f;p=sdk%2Ftools%2Fnetcoredbg.git Fix dbgshim location for Tizen --- diff --git a/CMakeLists.txt b/CMakeLists.txt index d3127bd..3f3151a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,8 @@ project(netcoredbg) set(CLR_DIR "${CMAKE_SOURCE_DIR}/../coreclr" CACHE FILEPATH "Path to coreclr 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 dbgshim library") +set(DBGSHIM_DIR "" CACHE FILEPATH "Path to dbgshim library directory") + if (WIN32) set(CMAKE_CXX_STANDARD 11) else() diff --git a/README.md b/README.md index 154e507..18a15f9 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,6 @@ The debugger provides GDB/MI or VSCode debug adapter interface and allows to deb `-DCLR_BIN_DIR=$HOME/git/coreclr/bin/Product/Linux.x64.Debug` path to coreclr build result directory - `-DCORECLR_SET_RPATH=/usr/shared/dotnet/Microsoft.NETCore.App/2.0.0` path where `libdbgshim.so` is located - 4. The above commands create `./bin` directory with `netcoredbg` binary and additional libraries. Now running the debugger with `--help` option should look like this: diff --git a/packaging/netcoredbg.spec b/packaging/netcoredbg.spec index c05e4b2..3c31841 100644 --- a/packaging/netcoredbg.spec +++ b/packaging/netcoredbg.spec @@ -77,9 +77,8 @@ cmake ../netcoredbg \ -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ -DCMAKE_BUILD_TYPE=Release \ -DCLR_CMAKE_LINUX_ID=tizen \ - -DCORECLR_SET_RPATH=$NETCOREAPPDIR \ - -DBUILD_MANAGED=OFF \ - -DDBGSHIM_INSTALL=OFF + -DDBGSHIM_DIR=$NETCOREAPPDIR \ + -DBUILD_MANAGED=OFF make %{?jobs:-j%jobs} %dotnet_build ../netcoredbg/src/debug/netcoredbg diff --git a/src/debug/netcoredbg/CMakeLists.txt b/src/debug/netcoredbg/CMakeLists.txt index 13a8877..2f815ab 100644 --- a/src/debug/netcoredbg/CMakeLists.txt +++ b/src/debug/netcoredbg/CMakeLists.txt @@ -2,10 +2,11 @@ set(CORECLR_PRODUCT ${CLR_DIR}/bin/Product/${CORECLR_PLATFORM}) -set(DBGSHIM_LOCATION ${CLR_BIN_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}dbgshim${CMAKE_SHARED_LIBRARY_SUFFIX}) - -add_library(dbgshim SHARED IMPORTED) -set_target_properties(dbgshim PROPERTIES IMPORTED_LOCATION ${DBGSHIM_LOCATION}) +if (NOT DBGSHIM_DIR STREQUAL "") + add_definitions(-DDBGSHIM_DIR="${DBGSHIM_DIR}") +else() + set(DBGSHIM_LOCATION ${CLR_BIN_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}dbgshim${CMAKE_SHARED_LIBRARY_SUFFIX}) +endif() add_library(corguids STATIC IMPORTED) set_target_properties(corguids PROPERTIES IMPORTED_LOCATION ${CLR_BIN_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}corguids${CMAKE_STATIC_LIBRARY_SUFFIX}) @@ -44,19 +45,6 @@ set(netcoredbg_SRC set(CMAKE_INCLUDE_CURRENT_DIR ON) -# Set the RPATH of debugger so that it can find dependencies without needing to set LD_LIBRARY_PATH -# For more information: http://www.cmake.org/Wiki/CMake_RPATH_handling. -if (CORECLR_SET_RPATH) - set(CMAKE_INSTALL_RPATH "${CORECLR_SET_RPATH}") -else() - set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - if(CLR_CMAKE_PLATFORM_DARWIN) - set(CMAKE_INSTALL_RPATH "@loader_path") - else() - set(CMAKE_INSTALL_RPATH "\$ORIGIN") - endif() -endif() - if (NOT WIN32) add_definitions(-DPAL_STDCPP_COMPAT) endif() @@ -70,8 +58,8 @@ else() endif() install(TARGETS netcoredbg DESTINATION ${CMAKE_INSTALL_PREFIX}) -if (DBGSHIM_INSTALL) - install(FILES ${DBGSHIM_LOCATION} DESTINATION ${CMAKE_INSTALL_PREFIX}) +if (DBGSHIM_LOCATION) + install(FILES ${DBGSHIM_LOCATION} DESTINATION ${CMAKE_INSTALL_PREFIX}) endif() # SymbolReader diff --git a/src/debug/netcoredbg/manageddebugger.cpp b/src/debug/netcoredbg/manageddebugger.cpp index cbfa348..e756e09 100644 --- a/src/debug/netcoredbg/manageddebugger.cpp +++ b/src/debug/netcoredbg/manageddebugger.cpp @@ -42,11 +42,16 @@ struct dbgshim_t CreateDebuggingInterfaceFromVersionEx(nullptr), m_module(nullptr) { +#ifdef DBGSHIM_DIR + std::string libName(DBGSHIM_DIR); + libName += DIRECTORY_SEPARATOR_STR_A; +#else std::string exe = GetExeAbsPath(); std::size_t dirSepIndex = exe.rfind(DIRECTORY_SEPARATOR_STR_A); if (dirSepIndex == std::string::npos) return; std::string libName = exe.substr(0, dirSepIndex + 1); +#endif #ifdef WIN32 libName += "dbgshim.dll";