[Local GC] Enable building the GC as a shared library (#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)
commit8acf6c9f7e33b1bfe77205cd2e61f2c60e8c00ce
tree5f7e55f04b5182a6ef1bd537ef76accd5a494782
parent2766385624a9c5b73d32bed85519c044447701ff
[Local GC] Enable building the GC as a shared library (#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...)
31 files changed:
CMakeLists.txt
clrdefinitions.cmake
clrfeatures.cmake
functions.cmake
src/CMakeLists.txt
src/dlls/mscoree/coreclr/CMakeLists.txt
src/dlls/mscoree/mscorwks_unixexports.src
src/gc/CMakeLists.txt
src/gc/WarningControl.h [new file with mode: 0644]
src/gc/env/gcenv.base.h
src/gc/env/gcenv.h [new file with mode: 0644]
src/gc/env/gcenv.object.h
src/gc/gc.h
src/gc/gcenv.ee.standalone.inl
src/gc/gcenv.inl [new file with mode: 0644]
src/gc/gcinterface.h
src/gc/gcpriv.h
src/gc/gcscan.h
src/gc/gcsvr.cpp
src/gc/gcwks.cpp
src/gc/handletablecore.cpp
src/gc/objecthandle.cpp
src/gc/objecthandle.h
src/gc/sample/GCSample.cpp
src/gc/sample/gcenv.ee.cpp
src/gc/unix/configure.cmake
src/gc/unix/events.cpp
src/gc/unix/gcenv.unix.cpp
src/vm/CMakeLists.txt
src/vm/ceemain.cpp
src/vm/proftoeeinterfaceimpl.cpp