[Local GC] Enable building the GC as a shared library (dotnet/coreclr#13137)
authorSean Gillespie <segilles@microsoft.com>
Tue, 22 Aug 2017 17:20:36 +0000 (10:20 -0700)
committerGitHub <noreply@github.com>
Tue, 22 Aug 2017 17:20:36 +0000 (10:20 -0700)
commit796b1e8c124a86a02aca77897923c1179735bb27
tree4c338fef9c4eceec9621e3618142c159c29afccc
parentbd82f55a693e5cea6948a64d0af1bf57f6f301f5
[Local GC] Enable building the GC as a shared library (dotnet/coreclr#13137)

* [Local GC] Build the GC using system headers

* Disable features to get the GC to build

* Get rid of the separate 'GC PAL' build

* Remove unused stuff

* Don't build gcenv.os.cpp when linking in a standalone gc

* Stub out CPUGroupInfo and NumaNodeInfo

* Stub out IsGCThread and friends

* Build the GC as a shared library :tada:

* Build, link, and run! :tada:

* Fix standalone GC build break

* Fixes where the GC's MethodTable and VM's MethodTable classes disagree

* Integrate a standalone GC into the CoreCLR build system (so it gets copied to the output folder). Re-enable some ifdef-ed out includes that are required for a non-standalone build of the GC.

* Bring changes to Unix and fix the Unix build. Implement some compiler intrinsic wrappers and alignment functions expected by the GC.

* Fix the Windows build

* 1. Code review feedback: use standard types for BitScanForward and
   BitScanForward64
2. Delete FEATURE_COM stuff from the build system, not needed for this
PR
3. Fix the Unix build

* Fix the Windows x86 build - the _BitScanForward64 intrinsic is not available when targeting 32-bit platforms

* Remove a number of things from gcenv.base.h that are not used

* Remove a linker workaround now that we are not linking a standalone GC into the runtime

* Remove dead code, make the lack of GC_PROFILING for standalone gc not break profiling on the non-standalone build

* Code review feedback - use add_library_clr and other cmake-related fixes

* Fix include indentation

* Remove some extraneous parameters to cmake functions (cmake is remarkably lenient...)

Commit migrated from https://github.com/dotnet/coreclr/commit/8acf6c9f7e33b1bfe77205cd2e61f2c60e8c00ce
31 files changed:
src/coreclr/CMakeLists.txt
src/coreclr/clrdefinitions.cmake
src/coreclr/clrfeatures.cmake
src/coreclr/functions.cmake
src/coreclr/src/CMakeLists.txt
src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
src/coreclr/src/dlls/mscoree/mscorwks_unixexports.src
src/coreclr/src/gc/CMakeLists.txt
src/coreclr/src/gc/WarningControl.h [new file with mode: 0644]
src/coreclr/src/gc/env/gcenv.base.h
src/coreclr/src/gc/env/gcenv.h [new file with mode: 0644]
src/coreclr/src/gc/env/gcenv.object.h
src/coreclr/src/gc/gc.h
src/coreclr/src/gc/gcenv.ee.standalone.inl
src/coreclr/src/gc/gcenv.inl [new file with mode: 0644]
src/coreclr/src/gc/gcinterface.h
src/coreclr/src/gc/gcpriv.h
src/coreclr/src/gc/gcscan.h
src/coreclr/src/gc/gcsvr.cpp
src/coreclr/src/gc/gcwks.cpp
src/coreclr/src/gc/handletablecore.cpp
src/coreclr/src/gc/objecthandle.cpp
src/coreclr/src/gc/objecthandle.h
src/coreclr/src/gc/sample/GCSample.cpp
src/coreclr/src/gc/sample/gcenv.ee.cpp
src/coreclr/src/gc/unix/configure.cmake
src/coreclr/src/gc/unix/events.cpp
src/coreclr/src/gc/unix/gcenv.unix.cpp
src/coreclr/src/vm/CMakeLists.txt
src/coreclr/src/vm/ceemain.cpp
src/coreclr/src/vm/proftoeeinterfaceimpl.cpp