1 set(CMAKE_INCLUDE_CURRENT_DIR ON)
3 # Needed due to the cmunged files being in the binary folders, the set(CMAKE_INCLUDE_CURRENT_DIR ON) is not enough
4 include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
5 include_directories(${ARCH_SOURCES_DIR})
6 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../interop/inc)
8 # needed when zLib compression is used
9 include_directories(${CLR_SRC_LIBS_NATIVE_DIR}/AnyOS/zlib)
10 if(NOT CLR_CMAKE_TARGET_WIN32)
11 include_directories(${CLR_SRC_LIBS_NATIVE_DIR}/Unix/Common)
14 add_definitions(-DUNICODE)
15 add_definitions(-D_UNICODE)
17 if(FEATURE_AUTO_TRACE)
18 add_definitions(-DFEATURE_AUTO_TRACE)
19 endif(FEATURE_AUTO_TRACE)
21 foreach (Config DEBUG CHECKED)
22 add_compile_definitions($<$<CONFIG:${Config}>:WRITE_BARRIER_CHECK>)
34 if(FEATURE_JIT_PITCHING)
35 add_definitions(-DFEATURE_JIT_PITCHING)
36 endif(FEATURE_JIT_PITCHING)
38 if(FEATURE_PERFTRACING)
39 set(SHARED_EVENTPIPE_DIR ${CLR_SRC_NATIVE_DIR}/eventpipe)
40 set(CORECLR_EVENTPIPE_SHIM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/eventing/eventpipe)
41 endif(FEATURE_PERFTRACING)
43 if(FEATURE_PERFTRACING)
44 include_directories(${SHARED_EVENTPIPE_DIR})
45 include_directories(${CORECLR_EVENTPIPE_SHIM_DIR})
46 endif(FEATURE_PERFTRACING)
48 set(VM_SOURCES_DAC_AND_WKS_COMMON
52 assemblyloadcontext.cpp
75 eedbginterfaceimpl.cpp
102 methoddescbackpatchinfo.cpp
108 onstackreplacement.cpp
124 threadpoolrequest.cpp
127 tieredcompilation.cpp
130 typeequivalencehash.cpp
136 versionresilienthashcode.cpp
142 set(VM_HEADERS_DAC_AND_WKS_COMMON
150 assemblyloadcontext.h
175 eedbginterfaceimpl.inl
202 methoddescbackpatchinfo.h
238 typeequivalencehash.hpp
242 typehashingalgorithms.h
246 versionresilienthashcode.h
252 set( GC_SOURCES_DAC_AND_WKS_COMMON
253 ../gc/handletable.cpp
254 ../gc/handletablecore.cpp
255 ../gc/handletablescan.cpp
256 ../gc/objecthandle.cpp)
258 set( GC_HEADERS_DAC_AND_WKS_COMMON
260 ../gc/handletable.inl
261 ../gc/handletablepriv.h
262 ../gc/objecthandle.h)
264 if(FEATURE_READYTORUN)
265 list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON
268 list(APPEND VM_HEADERS_DAC_AND_WKS_COMMON
271 endif(FEATURE_READYTORUN)
273 if(FEATURE_JIT_PITCHING)
274 list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON
275 codepitchingmanager.cpp
277 endif(FEATURE_JIT_PITCHING)
280 ${VM_SOURCES_DAC_AND_WKS_COMMON}
281 threaddebugblockinginfo.cpp
285 ${VM_HEADERS_DAC_AND_WKS_COMMON}
286 threaddebugblockinginfo.h
290 ${GC_SOURCES_DAC_AND_WKS_COMMON})
293 ${GC_HEADERS_DAC_AND_WKS_COMMON})
296 ${VM_SOURCES_DAC_AND_WKS_COMMON}
311 comdependenthandle.cpp
314 compatibilityswitch.cpp
315 comsynchronizable.cpp
321 corelib.cpp # <DisablePrecompiledHeaders>true</DisablePrecompiledHeaders>
323 custommarshalerinfo.cpp
326 dllimportcallback.cpp
327 dynamicinterfacecastable.cpp
332 eetoprofinterfaceimpl.cpp
333 eventpipeinternal.cpp
355 methodtablebuilder.cpp
357 multicorejit.cpp # Condition="'$(FeatureMulticoreJIT)' == 'true'
358 multicorejitplayer.cpp # Condition="'$(FeatureMulticoreJIT)' == 'true'
359 nativeeventsource.cpp
362 nativelibrarynative.cpp
368 profilermetadataemitvalidator.cpp
369 profilingenumerators.cpp
371 proftoeeinterfaceimpl.cpp
373 reflectclasswriter.cpp
374 reflectioninvocation.cpp
379 stackingallocator.cpp
387 threaddebugblockinginfo.cpp
390 weakreferencenative.cpp
391 yieldprocessornormalized.cpp
395 # coreclr needs to compile codeman.cpp differently depending on flavor (i.e. dll vs. static lib))
396 list(REMOVE_ITEM VM_SOURCES_WKS codeman.cpp)
399 ${VM_HEADERS_DAC_AND_WKS_COMMON}
401 coreclr/corebindresult.h
402 coreclr/corebindresult.inl
423 compatibilityswitch.h
429 custommarshalerinfo.h
431 diagnosticserveradapter.h
440 eetoprofinterfaceimpl.h
441 eetoprofinterfaceimpl.inl
443 eventpipeadaptertypes.h
470 nativelibrarynative.h
475 profilermetadataemitvalidator.h
476 profilingenumerators.h
478 proftoeeinterfaceimpl.h
479 proftoeeinterfaceimpl.inl
482 reflectioninvocation.h
495 threaddebugblockinginfo.h
498 weakreferencenative.h
503 ${GC_SOURCES_DAC_AND_WKS_COMMON}
504 ../gc/gceventstatus.cpp
510 ../gc/gchandletable.cpp
514 ../gc/softwarewritewatch.cpp
515 ../gc/handletablecache.cpp)
517 if (CLR_CMAKE_TARGET_ARCH_AMD64 AND CLR_CMAKE_TARGET_WIN32)
520 ../gc/vxsort/isa_detection.cpp
521 ../gc/vxsort/do_vxsort_avx2.cpp
522 ../gc/vxsort/do_vxsort_avx512.cpp
523 ../gc/vxsort/machine_traits.avx2.cpp
524 ../gc/vxsort/smallsort/bitonic_sort.AVX2.int64_t.generated.cpp
525 ../gc/vxsort/smallsort/bitonic_sort.AVX2.int32_t.generated.cpp
526 ../gc/vxsort/smallsort/bitonic_sort.AVX512.int64_t.generated.cpp
527 ../gc/vxsort/smallsort/bitonic_sort.AVX512.int32_t.generated.cpp
528 ../gc/vxsort/smallsort/avx2_load_mask_tables.cpp
530 endif (CLR_CMAKE_TARGET_ARCH_AMD64 AND CLR_CMAKE_TARGET_WIN32)
533 ${GC_HEADERS_DAC_AND_WKS_COMMON}
534 ../gc/gceventstatus.h
537 ../gc/gchandletableimpl.h
538 ../gc/softwarewritewatch.h)
540 if(FEATURE_EVENT_TRACE)
541 list(APPEND VM_SOURCES_WKS
544 list(APPEND VM_HEADERS_WKS
547 endif(FEATURE_EVENT_TRACE)
549 if(FEATURE_STANDALONE_GC)
550 list(APPEND VM_SOURCES_WKS
551 gcenv.ee.standalone.cpp
553 endif(FEATURE_STANDALONE_GC)
556 # Targeted interop scenarios
559 list(APPEND VM_SOURCES_WKS
560 interoplibinterface_shared.cpp
562 list(APPEND VM_HEADERS_WKS
563 interoplibinterface.h
566 if(FEATURE_COMWRAPPERS)
567 list(APPEND VM_SOURCES_WKS
568 interoplibinterface_comwrappers.cpp
571 list(APPEND VM_HEADERS_WKS
574 endif(FEATURE_COMWRAPPERS)
576 if(FEATURE_OBJCMARSHAL)
577 list(APPEND VM_SOURCES_WKS
578 interoplibinterface_objc.cpp
580 endif(FEATURE_OBJCMARSHAL)
582 if(CLR_CMAKE_TARGET_WIN32)
584 set(VM_SOURCES_DAC_AND_WKS_WIN32
588 set(VM_HEADERS_DAC_AND_WKS_WIN32
592 # COM interop scenarios
593 list(APPEND VM_SOURCES_DAC_AND_WKS_WIN32
596 list(APPEND VM_HEADERS_DAC_AND_WKS_WIN32
600 list(APPEND VM_SOURCES_WKS
601 ${VM_SOURCES_DAC_AND_WKS_WIN32}
602 # These should not be included for Linux
609 list(APPEND VM_HEADERS_WKS
610 ${VM_HEADERS_DAC_AND_WKS_WIN32}
611 # These should not be included for Linux
618 # COM interop scenarios
619 list(APPEND VM_SOURCES_WKS
622 comcallablewrapper.cpp
623 comconnectionpoints.cpp
624 cominterfacemarshaler.cpp
625 commtmemberinfomap.cpp
628 dispparammarshaler.cpp
631 olecontexthelpers.cpp
632 runtimecallablewrapper.cpp
634 stdinterfaces_wrapper.cpp
636 list(APPEND VM_HEADERS_WKS
640 comconnectionpoints.h
641 cominterfacemarshaler.h
649 runtimecallablewrapper.h
651 stdinterfaces_internal.h
654 list(APPEND VM_SOURCES_DAC
655 ${VM_SOURCES_DAC_AND_WKS_WIN32}
658 list(APPEND VM_HEADERS_DAC
659 ${VM_HEADERS_DAC_AND_WKS_WIN32}
662 endif(CLR_CMAKE_TARGET_WIN32)
664 if(CLR_CMAKE_TARGET_WIN32)
666 if(CLR_CMAKE_TARGET_ARCH_AMD64)
667 set(VM_SOURCES_WKS_ARCH_ASM
668 ${ARCH_SOURCES_DIR}/AsmHelpers.asm
669 ${ARCH_SOURCES_DIR}/CallDescrWorkerAMD64.asm
670 ${ARCH_SOURCES_DIR}/ComCallPreStub.asm
671 ${ARCH_SOURCES_DIR}/CrtHelpers.asm
672 ${ARCH_SOURCES_DIR}/GenericComCallStubs.asm
673 ${ARCH_SOURCES_DIR}/GenericComPlusCallStubs.asm
674 ${ARCH_SOURCES_DIR}/getstate.asm
675 ${ARCH_SOURCES_DIR}/JitHelpers_Fast.asm
676 ${ARCH_SOURCES_DIR}/JitHelpers_FastWriteBarriers.asm
677 ${ARCH_SOURCES_DIR}/JitHelpers_InlineGetThread.asm
678 ${ARCH_SOURCES_DIR}/JitHelpers_SingleAppDomain.asm
679 ${ARCH_SOURCES_DIR}/JitHelpers_Slow.asm
680 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
681 ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
682 ${ARCH_SOURCES_DIR}/ThePreStubAMD64.asm
683 ${ARCH_SOURCES_DIR}/Context.asm
684 ${ARCH_SOURCES_DIR}/ExternalMethodFixupThunk.asm
685 ${ARCH_SOURCES_DIR}/UMThunkStub.asm
686 ${ARCH_SOURCES_DIR}/VirtualCallStubAMD64.asm
689 set(VM_HEADERS_WKS_ARCH_ASM
690 ${ARCH_SOURCES_DIR}/asmconstants.h
692 elseif(CLR_CMAKE_TARGET_ARCH_I386)
693 set(VM_SOURCES_WKS_ARCH_ASM
694 ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
695 ${ARCH_SOURCES_DIR}/asmhelpers.asm
696 ${ARCH_SOURCES_DIR}/gmsasm.asm
697 ${ARCH_SOURCES_DIR}/jithelp.asm
698 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
701 set(VM_HEADERS_WKS_ARCH_ASM
702 ${ARCH_SOURCES_DIR}/asmconstants.h
704 elseif(CLR_CMAKE_TARGET_ARCH_ARM)
705 set(VM_SOURCES_WKS_ARCH_ASM
706 ${ARCH_SOURCES_DIR}/asmhelpers.asm
707 ${ARCH_SOURCES_DIR}/CrtHelpers.asm
708 ${ARCH_SOURCES_DIR}/ehhelpers.asm
709 ${ARCH_SOURCES_DIR}/patchedcode.asm
710 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
713 set(VM_HEADERS_WKS_ARCH_ASM
714 ${ARCH_SOURCES_DIR}/asmconstants.h
716 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
717 set(VM_SOURCES_WKS_ARCH_ASM
718 ${ARCH_SOURCES_DIR}/AsmHelpers.asm
719 ${ARCH_SOURCES_DIR}/CallDescrWorkerARM64.asm
720 ${ARCH_SOURCES_DIR}/CrtHelpers.asm
721 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
724 set(VM_HEADERS_WKS_ARCH_ASM
725 ${ARCH_SOURCES_DIR}/asmconstants.h
729 else(CLR_CMAKE_TARGET_WIN32)
730 if (TIZEN_ASAN_ENVIRONMENT)
731 list(APPEND VM_SOURCES_WKS
734 list(APPEND VM_HEADERS_WKS
739 if(CLR_CMAKE_TARGET_ARCH_AMD64)
740 set(VM_SOURCES_WKS_ARCH_ASM
741 ${ARCH_SOURCES_DIR}/asmhelpers.S
742 ${ARCH_SOURCES_DIR}/calldescrworkeramd64.S
743 ${ARCH_SOURCES_DIR}/crthelpers.S
744 ${ARCH_SOURCES_DIR}/externalmethodfixupthunk.S
745 ${ARCH_SOURCES_DIR}/getstate.S
746 ${ARCH_SOURCES_DIR}/jithelpers_fast.S
747 ${ARCH_SOURCES_DIR}/jithelpers_fastwritebarriers.S
748 ${ARCH_SOURCES_DIR}/jithelpers_singleappdomain.S
749 ${ARCH_SOURCES_DIR}/jithelpers_slow.S
750 ${ARCH_SOURCES_DIR}/pinvokestubs.S
751 ${ARCH_SOURCES_DIR}/theprestubamd64.S
752 ${ARCH_SOURCES_DIR}/unixasmhelpers.S
753 ${ARCH_SOURCES_DIR}/umthunkstub.S
754 ${ARCH_SOURCES_DIR}/virtualcallstubamd64.S
756 elseif(CLR_CMAKE_TARGET_ARCH_I386)
757 set(VM_SOURCES_WKS_ARCH_ASM
758 ${ARCH_SOURCES_DIR}/ehhelpers.S
759 ${ARCH_SOURCES_DIR}/asmhelpers.S
760 ${ARCH_SOURCES_DIR}/jithelp.S
761 ${ARCH_SOURCES_DIR}/gmsasm.S
762 ${ARCH_SOURCES_DIR}/pinvokestubs.S
763 ${ARCH_SOURCES_DIR}/umthunkstub.S
765 elseif(CLR_CMAKE_TARGET_ARCH_ARM)
766 set(VM_SOURCES_WKS_ARCH_ASM
767 ${ARCH_SOURCES_DIR}/asmhelpers.S
768 ${ARCH_SOURCES_DIR}/crthelpers.S
769 ${ARCH_SOURCES_DIR}/ehhelpers.S
770 ${ARCH_SOURCES_DIR}/patchedcode.S
771 ${ARCH_SOURCES_DIR}/pinvokestubs.S
773 if (TIZEN_ASAN_ENVIRONMENT)
774 list(APPEND VM_SOURCES_WKS_ARCH_ASM
775 ${ARCH_SOURCES_DIR}/tizenasanenv.S
778 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
779 set(VM_SOURCES_WKS_ARCH_ASM
780 ${ARCH_SOURCES_DIR}/asmhelpers.S
781 ${ARCH_SOURCES_DIR}/calldescrworkerarm64.S
782 ${ARCH_SOURCES_DIR}/crthelpers.S
783 ${ARCH_SOURCES_DIR}/pinvokestubs.S
787 endif(CLR_CMAKE_TARGET_WIN32)
790 if(CLR_CMAKE_TARGET_ARCH_AMD64)
791 set(VM_SOURCES_DAC_AND_WKS_ARCH
792 ${ARCH_SOURCES_DIR}/cgenamd64.cpp
793 ${ARCH_SOURCES_DIR}/excepamd64.cpp
794 ${ARCH_SOURCES_DIR}/gmsamd64.cpp
795 ${ARCH_SOURCES_DIR}/stublinkeramd64.cpp
798 set(VM_HEADERS_DAC_AND_WKS_ARCH
799 ${ARCH_SOURCES_DIR}/asmconstants.h
800 ${ARCH_SOURCES_DIR}/cgencpu.h
801 ${ARCH_SOURCES_DIR}/excepcpu.h
802 ${ARCH_SOURCES_DIR}/gmscpu.h
803 ${ARCH_SOURCES_DIR}/stublinkeramd64.h
806 set(VM_SOURCES_WKS_ARCH
807 ${ARCH_SOURCES_DIR}/jitinterfaceamd64.cpp
808 ${ARCH_SOURCES_DIR}/profiler.cpp
809 exceptionhandling.cpp
814 set(VM_HEADERS_WKS_ARCH
817 elseif(CLR_CMAKE_TARGET_ARCH_I386)
818 set(VM_SOURCES_DAC_AND_WKS_ARCH
820 ${ARCH_SOURCES_DIR}/cgenx86.cpp
821 ${ARCH_SOURCES_DIR}/excepx86.cpp
822 ${ARCH_SOURCES_DIR}/gmsx86.cpp
823 ${ARCH_SOURCES_DIR}/stublinkerx86.cpp
826 set(VM_HEADERS_DAC_AND_WKS_ARCH
828 ${ARCH_SOURCES_DIR}/cgencpu.h
829 ${ARCH_SOURCES_DIR}/excepcpu.h
830 ${ARCH_SOURCES_DIR}/gmscpu.h
831 ${ARCH_SOURCES_DIR}/stublinkerx86.h
834 set(VM_SOURCES_WKS_ARCH
835 ${ARCH_SOURCES_DIR}/jitinterfacex86.cpp
836 ${ARCH_SOURCES_DIR}/profiler.cpp
837 exceptionhandling.cpp
841 set(VM_HEADERS_WKS_ARCH
844 elseif(CLR_CMAKE_TARGET_ARCH_ARM)
845 set(VM_SOURCES_DAC_AND_WKS_ARCH
846 ${ARCH_SOURCES_DIR}/exceparm.cpp
847 ${ARCH_SOURCES_DIR}/stubs.cpp
850 set(VM_HEADERS_DAC_AND_WKS_ARCH
851 ${ARCH_SOURCES_DIR}/asmconstants.h
852 ${ARCH_SOURCES_DIR}/excepcpu.h
853 ${ARCH_SOURCES_DIR}/virtualcallstubcpu.hpp
856 set(VM_SOURCES_WKS_ARCH
857 ${ARCH_SOURCES_DIR}/profiler.cpp
858 ${ARCH_SOURCES_DIR}/armsinglestepper.cpp
859 exceptionhandling.cpp
863 set(VM_HEADERS_WKS_ARCH
866 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
867 set(VM_SOURCES_DAC_AND_WKS_ARCH
868 ${ARCH_SOURCES_DIR}/stubs.cpp
869 exceptionhandling.cpp
872 set(VM_HEADERS_DAC_AND_WKS_ARCH
873 ${ARCH_SOURCES_DIR}/virtualcallstubcpu.hpp
877 set(VM_SOURCES_WKS_ARCH
878 ${ARCH_SOURCES_DIR}/profiler.cpp
882 if(CLR_CMAKE_HOST_UNIX)
883 list(APPEND VM_SOURCES_WKS_ARCH
884 ${ARCH_SOURCES_DIR}/arm64singlestepper.cpp
886 endif(CLR_CMAKE_HOST_UNIX)
889 if(CLR_CMAKE_HOST_UNIX)
890 list(APPEND VM_SOURCES_WKS_ARCH
891 ${ARCH_SOURCES_DIR}/unixstubs.cpp
893 endif(CLR_CMAKE_HOST_UNIX)
895 set(VM_SOURCES_DAC_ARCH
896 exceptionhandling.cpp
899 set(VM_HEADERS_DAC_ARCH
903 list(APPEND VM_SOURCES_WKS
904 ${VM_SOURCES_WKS_ARCH}
905 ${VM_SOURCES_DAC_AND_WKS_ARCH}
908 list(APPEND VM_HEADERS_WKS
909 ${VM_HEADERS_WKS_ARCH}
910 ${VM_HEADERS_DAC_AND_WKS_ARCH}
913 list(APPEND VM_SOURCES_DAC
914 ${VM_SOURCES_DAC_ARCH}
915 ${VM_SOURCES_DAC_AND_WKS_ARCH}
918 list(APPEND VM_HEADERS_DAC
919 ${VM_HEADERS_DAC_ARCH}
920 ${VM_HEADERS_DAC_AND_WKS_ARCH}
923 list(APPEND VM_SOURCES_WKS
927 list(APPEND VM_HEADERS_WKS
931 # The DAC does need GC sources in order to link correctly, even if
933 list(APPEND VM_SOURCES_DAC
937 list(APPEND VM_HEADERS_DAC
941 if (CLR_CMAKE_TARGET_WIN32)
942 list(APPEND VM_SOURCES_WKS ${VM_HEADERS_WKS})
943 list(APPEND VM_SOURCES_WKS ${VM_HEADERS_WKS_ARCH_ASM})
944 list(APPEND VM_SOURCES_DAC ${VM_HEADERS_DAC})
945 endif(CLR_CMAKE_TARGET_WIN32)
947 # these two files we need to compile differently for standalone and mergeable flavors of WKS
948 set (VM_SOURCES_WKS_SPECIAL
954 list(APPEND VM_SOURCES_DAC
958 # gcdecode.cpp is included by both JIT and VM. to avoid duplicate definitions we need to
959 # treat it in a special way when statically linking with both VM and JIT
960 if(CLR_CMAKE_TARGET_ARCH_I386)
961 if(CLR_CMAKE_TARGET_WIN32)
962 list(APPEND VM_SOURCES_DAC
966 list(APPEND VM_SOURCES_WKS_SPECIAL
971 convert_to_absolute_path(VM_SOURCES_WKS ${VM_SOURCES_WKS})
972 convert_to_absolute_path(VM_SOURCES_WKS_ARCH_ASM ${VM_SOURCES_WKS_ARCH_ASM})
973 convert_to_absolute_path(VM_SOURCES_DAC ${VM_SOURCES_DAC})
974 convert_to_absolute_path(VM_SOURCES_WKS_SPECIAL ${VM_SOURCES_WKS_SPECIAL})
976 add_library_clr(cee_dac ${VM_SOURCES_DAC})
977 add_dependencies(cee_dac eventing_headers)
978 set_target_properties(cee_dac PROPERTIES DAC_COMPONENT TRUE)
979 target_precompile_headers(cee_dac PRIVATE [["common.h"]])
981 add_subdirectory(wks)
983 if(FEATURE_PERFTRACING)
984 add_subdirectory(eventing)
985 endif(FEATURE_PERFTRACING)