Skip to content

Commit

Permalink
Share unix getexepath() definition via src/native (#44999)
Browse files Browse the repository at this point in the history
* Share unix getexepath() definition via src/native

* Address CR feedback

* Remove duplicate property

* Inline variable with single usage

* Fix include path in tests

* Remove unixcoreruncommon static lib dependency

* Merge coreruncommon.{cpp,h} into corerun.cpp

* Include local headers before the first use

* Remove Unix case from (Win32 only) corerun

* Use realpath in getauxval case

* Delete obsolete comment
  • Loading branch information
am11 committed Nov 26, 2020
1 parent a4d877e commit 05cd29c
Show file tree
Hide file tree
Showing 31 changed files with 597 additions and 985 deletions.
4 changes: 1 addition & 3 deletions eng/native/build-commons.sh
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,7 @@ EOF
scan_build=scan-build
fi

engNativeDir="$__RepoRootDir/eng/native"
cmakeArgs="-DCLR_ENG_NATIVE_DIR=\"$engNativeDir\" $cmakeArgs"
nextCommand="\"$engNativeDir/gen-buildsys.sh\" \"$cmakeDir\" \"$tryrunDir\" \"$intermediatesDir\" $platformArch $__Compiler \"$__CompilerMajorVersion\" \"$__CompilerMinorVersion\" $__BuildType \"$generator\" $scan_build $cmakeArgs"
nextCommand="\"$__RepoRootDir/eng/native/gen-buildsys.sh\" \"$cmakeDir\" \"$tryrunDir\" \"$intermediatesDir\" $platformArch $__Compiler \"$__CompilerMajorVersion\" \"$__CompilerMinorVersion\" $__BuildType \"$generator\" $scan_build $cmakeArgs"
echo "Invoking $nextCommand"
eval $nextCommand

Expand Down
7 changes: 7 additions & 0 deletions eng/native/configurepaths.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
get_filename_component(CLR_REPO_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUTE)
set(CLR_ENG_NATIVE_DIR ${CMAKE_CURRENT_LIST_DIR})
get_filename_component(CLR_SRC_NATIVE_DIR ${CMAKE_CURRENT_LIST_DIR}/../../src/native ABSOLUTE)

# TO_NATIVE_PATH so it uses backslashes in Windows to avoid getting error,
# as CLR_SRC_NATIVE_DIR is used to specify source files.
file (TO_NATIVE_PATH ${CLR_SRC_NATIVE_DIR} CLR_SRC_NATIVE_DIR)
1 change: 1 addition & 0 deletions src/coreclr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ endif()
# Set the project name
project(CoreCLR)

include(../../eng/native/configurepaths.cmake)
include(${CLR_ENG_NATIVE_DIR}/configurecompiler.cmake)

if(MSVC)
Expand Down
18 changes: 9 additions & 9 deletions src/coreclr/build-runtime.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -450,10 +450,10 @@ if %__BuildCrossArchNative% EQU 1 (
set "__CMakeBinDir=!__CMakeBinDir:\=/!"

if %__Ninja% EQU 1 (
set __ExtraCmakeArgs="-DCMAKE_BUILD_TYPE=!__BuildType!"
set __ExtraCmakeArgs="-DCMAKE_BUILD_TYPE=!__BuildType!"
)

set __ExtraCmakeArgs=!__ExtraCmakeArgs! %__CMakeClrBuildSubsetArgs% "-DCLR_CROSS_COMPONENTS_BUILD=1" "-DCLR_CMAKE_TARGET_ARCH=%__BuildArch%" "-DCLR_CMAKE_TARGET_OS=%__TargetOS%" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=0" "-DCLR_ENG_NATIVE_DIR=%__RepoRootDir%/eng/native" "-DCLR_REPO_ROOT_DIR=%__RepoRootDir%" %__CMakeArgs%
set __ExtraCmakeArgs=!__ExtraCmakeArgs! %__CMakeClrBuildSubsetArgs% "-DCLR_CROSS_COMPONENTS_BUILD=1" "-DCLR_CMAKE_TARGET_ARCH=%__BuildArch%" "-DCLR_CMAKE_TARGET_OS=%__TargetOS%" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=0" %__CMakeArgs%
call "%__RepoRootDir%\eng\native\gen-buildsys.cmd" "%__ProjectDir%" "%__CrossCompIntermediatesDir%" %__VSVersion% %__CrossArch% !__ExtraCmakeArgs!

if not !errorlevel! == 0 (
Expand Down Expand Up @@ -512,22 +512,22 @@ if %__BuildCrossArchNative% EQU 1 (

if /i "%__CrossArch2%" == "x86" ( set __VCBuildArch=x86 )
if /i "%__CrossArch2%" == "x64" ( set __VCBuildArch=x86_amd64 )

echo %__MsgPrefix%Using environment: "%__VCToolsRoot%\vcvarsall.bat" !__VCBuildArch!
call "%__VCToolsRoot%\vcvarsall.bat" !__VCBuildArch!
@if defined _echo @echo on

if not exist "%__CrossComp2IntermediatesDir%" md "%__CrossComp2IntermediatesDir%"
if defined __SkipConfigure goto SkipConfigureCrossBuild2

set __CMakeBinDir="%__CrossComponent2BinDir%"
set "__CMakeBinDir=!__CMakeBinDir:\=/!"

if %__Ninja% EQU 1 (
set __ExtraCmakeArgs="-DCMAKE_BUILD_TYPE=!__BuildType!"
set __ExtraCmakeArgs="-DCMAKE_BUILD_TYPE=!__BuildType!"
)

set __ExtraCmakeArgs=!__ExtraCmakeArgs! %__CMakeClrBuildSubsetArgs% "-DCLR_CROSS_COMPONENTS_BUILD=1" "-DCLR_CMAKE_TARGET_ARCH=%__BuildArch%" "-DCLR_CMAKE_TARGET_OS=%__TargetOS%" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=0" "-DCMAKE_SYSTEM_VERSION=10.0" "-DCLR_ENG_NATIVE_DIR=%__RepoRootDir%/eng/native" "-DCLR_REPO_ROOT_DIR=%__RepoRootDir%" %__CMakeArgs%
set __ExtraCmakeArgs=!__ExtraCmakeArgs! %__CMakeClrBuildSubsetArgs% "-DCLR_CROSS_COMPONENTS_BUILD=1" "-DCLR_CMAKE_TARGET_ARCH=%__BuildArch%" "-DCLR_CMAKE_TARGET_OS=%__TargetOS%" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=0" "-DCMAKE_SYSTEM_VERSION=10.0" %__CMakeArgs%
call "%__RepoRootDir%\eng\native\gen-buildsys.cmd" "%__ProjectDir%" "%__CrossComp2IntermediatesDir%" %__VSVersion% %__CrossArch2% !__ExtraCmakeArgs!

if not !errorlevel! == 0 (
Expand Down Expand Up @@ -620,10 +620,10 @@ if %__BuildNative% EQU 1 (
echo %__MsgPrefix%Regenerating the Visual Studio solution

if %__Ninja% EQU 1 (
set __ExtraCmakeArgs="-DCMAKE_BUILD_TYPE=!__BuildType!"
set __ExtraCmakeArgs="-DCMAKE_BUILD_TYPE=!__BuildType!"
)

set __ExtraCmakeArgs=!__ExtraCmakeArgs! !___CrossBuildDefine! %__CMakeClrBuildSubsetArgs% "-DCLR_CMAKE_PGO_INSTRUMENT=%__PgoInstrument%" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=%__PgoOptimize%" "-DCLR_ENG_NATIVE_DIR=%__RepoRootDir%/eng/native" "-DCLR_REPO_ROOT_DIR=%__RepoRootDir%" %__CMakeArgs%
set __ExtraCmakeArgs=!__ExtraCmakeArgs! !___CrossBuildDefine! %__CMakeClrBuildSubsetArgs% "-DCLR_CMAKE_PGO_INSTRUMENT=%__PgoInstrument%" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=%__PgoOptimize%" %__CMakeArgs%
call "%__RepoRootDir%\eng\native\gen-buildsys.cmd" "%__ProjectDir%" "%__IntermediatesDir%" %__VSVersion% %__BuildArch% !__ExtraCmakeArgs!
if not !errorlevel! == 0 (
echo %__ErrMsgPrefix%%__MsgPrefix%Error: failed to generate native component build project!
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/build-runtime.sh
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ check_prereqs
restore_optdata

# Build the coreclr (native) components.
__CMakeArgs="-DCLR_CMAKE_PGO_INSTRUMENT=$__PgoInstrument -DCLR_CMAKE_OPTDATA_PATH=$__PgoOptDataPath -DCLR_CMAKE_PGO_OPTIMIZE=$__PgoOptimize -DCLR_REPO_ROOT_DIR=\"$__RepoRootDir\" $__CMakeArgs"
__CMakeArgs="-DCLR_CMAKE_PGO_INSTRUMENT=$__PgoInstrument -DCLR_CMAKE_OPTDATA_PATH=$__PgoOptDataPath -DCLR_CMAKE_PGO_OPTIMIZE=$__PgoOptimize $__CMakeArgs"
__CMakeArgs="-DCLR_CMAKE_BUILD_SUBSET_JIT=$__BuildJit -DCLR_CMAKE_BUILD_SUBSET_ALLJITS=$__BuildAllJits -DCLR_CMAKE_BUILD_SUBSET_RUNTIME=$__BuildRuntime $__CMakeArgs"
__CMakeArgs="-DCLR_CMAKE_BUILD_TESTS=$__BuildPALTests $__CMakeArgs"

Expand Down
1 change: 0 additions & 1 deletion src/coreclr/src/hosts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,5 @@ if(CLR_CMAKE_HOST_WIN32)
add_subdirectory(coreshim)
else(CLR_CMAKE_HOST_WIN32)
add_definitions(-D_FILE_OFFSET_BITS=64)
add_subdirectory(unixcoreruncommon)
add_subdirectory(unixcorerun)
endif(CLR_CMAKE_HOST_WIN32)
49 changes: 16 additions & 33 deletions src/coreclr/src/hosts/corerun/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,38 +1,21 @@
project(CoreRun)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CoreRun_SOURCES corerun.cpp logger.cpp)
set(CoreRun_RESOURCES native.rc)

add_definitions(-DFX_VER_INTERNALNAME_STR=CoreRun.exe)

if(CLR_CMAKE_HOST_UNIX)
# This does not compile on Linux yet
if(CAN_BE_COMPILED_ON_LINUX)
_add_executable(CoreRun
${CoreRun_SOURCES}
${CoreRun_RESOURCES}
)
endif(CAN_BE_COMPILED_ON_LINUX)

else()
_add_executable(CoreRun
${CoreRun_SOURCES}
${CoreRun_RESOURCES}
)

target_link_libraries(CoreRun
utilcodestaticnohost
advapi32.lib
oleaut32.lib
uuid.lib
user32.lib
${STATIC_MT_CRT_LIB}
${STATIC_MT_VCRT_LIB}
)

# Can't compile on linux yet so only add for windows
install_clr(TARGETS CoreRun)

endif(CLR_CMAKE_HOST_UNIX)
_add_executable(CoreRun
corerun.cpp logger.cpp
native.rc
)

target_link_libraries(CoreRun
utilcodestaticnohost
advapi32.lib
oleaut32.lib
uuid.lib
user32.lib
${STATIC_MT_CRT_LIB}
${STATIC_MT_VCRT_LIB}
)

install_clr(TARGETS CoreRun)
28 changes: 6 additions & 22 deletions src/coreclr/src/hosts/unixcorerun/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,33 +1,17 @@
project(unixcorerun)

include_directories(../unixcoreruncommon)
include_directories("${CLR_SRC_NATIVE_DIR}/common")
include(configure.cmake)

set(CORERUN_SOURCES
corerun.cpp
)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

_add_executable(corerun
${CORERUN_SOURCES}
)
_add_executable(corerun corerun.cpp)

# FreeBSD and NetBSD implement dlopen(3) in libc
if(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD)
target_link_libraries(corerun
dl
)
endif(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD)

# Libc turns locks into no-ops if pthread was not loaded into process yet. Loading
# pthread by the process executable ensures that all locks are initialized properly.
target_link_libraries(corerun
unixcoreruncommon
)
target_link_libraries(corerun ${CMAKE_DL_LIBS})

# Android implements pthread natively
if(NOT CLR_CMAKE_TARGET_ANDROID)
target_link_libraries(corerun
pthread
)
target_link_libraries(corerun pthread)
endif()

install_clr(TARGETS corerun)
Loading

0 comments on commit 05cd29c

Please sign in to comment.