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})
7 add_definitions(-DUNICODE)
8 add_definitions(-D_UNICODE)
11 if(CMAKE_CONFIGURATION_TYPES) # multi-configuration generator?
12 foreach (Config DEBUG CHECKED)
13 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:${Config}>:WRITE_BARRIER_CHECK=1>)
16 if(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
17 add_definitions(-DWRITE_BARRIER_CHECK=1)
18 endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
19 endif(CMAKE_CONFIGURATION_TYPES)
21 if(CLR_CMAKE_PLATFORM_UNIX)
22 add_compile_options(-fPIC)
23 endif(CLR_CMAKE_PLATFORM_UNIX)
31 if(FEATURE_JIT_PITCHING)
32 add_definitions(-DFEATURE_JIT_PITCHING)
33 endif(FEATURE_JIT_PITCHING)
35 set(VM_SOURCES_DAC_AND_WKS_COMMON
62 eedbginterfaceimpl.cpp
107 threadpoolrequest.cpp
117 versionresilienthashcode.cpp
120 yieldprocessornormalized.cpp
124 set( GC_SOURCES_DAC_AND_WKS_COMMON
125 ../gc/handletable.cpp
126 ../gc/handletablecore.cpp
127 ../gc/handletablescan.cpp
128 ../gc/objecthandle.cpp)
130 if(FEATURE_READYTORUN)
131 list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON
134 endif(FEATURE_READYTORUN)
136 if(FEATURE_JIT_PITCHING)
137 list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON
138 codepitchingmanager.cpp
140 endif(FEATURE_JIT_PITCHING)
143 ${VM_SOURCES_DAC_AND_WKS_COMMON}
145 threaddebugblockinginfo.cpp
149 ${GC_SOURCES_DAC_AND_WKS_COMMON})
152 ${VM_SOURCES_DAC_AND_WKS_COMMON}
163 clrprivbinderutil.cpp
166 comdependenthandle.cpp
168 commemoryfailpoint.cpp
170 compatibilityswitch.cpp
171 comsynchronizable.cpp
176 custommarshalerinfo.cpp
177 dllimportcallback.cpp
182 eetoprofinterfaceimpl.cpp
184 eventpipeconfiguration.cpp
186 eventpipeeventinstance.cpp
189 eventpipejsonfile.cpp
190 eventpipeprovider.cpp
192 eventpipebuffermanager.cpp
199 frameworkexceptionloader.cpp
217 methodtablebuilder.cpp
219 mscorlib.cpp # <DisablePrecompiledHeaders>true</DisablePrecompiledHeaders>
220 multicorejit.cpp # Condition="'$(FeatureMulticoreJIT)' == 'true'
221 multicorejitplayer.cpp # Condition="'$(FeatureMulticoreJIT)' == 'true'
222 nativeeventsource.cpp
231 profilermetadataemitvalidator.cpp
232 profilingenumerators.cpp
234 proftoeeinterfaceimpl.cpp
236 reflectclasswriter.cpp
237 reflectioninvocation.cpp
244 stackingallocator.cpp
251 synchronizationcontextnative.cpp
253 tieredcompilation.cpp
254 threaddebugblockinginfo.cpp
257 weakreferencenative.cpp
262 ${GC_SOURCES_DAC_AND_WKS_COMMON}
263 ../gc/gceventstatus.cpp
269 ../gc/gchandletable.cpp
273 ../gc/softwarewritewatch.cpp
274 ../gc/handletablecache.cpp)
276 if(FEATURE_EVENT_TRACE)
277 list(APPEND VM_SOURCES_WKS
280 endif(FEATURE_EVENT_TRACE)
282 if(FEATURE_STANDALONE_GC)
283 list(APPEND VM_SOURCES_WKS
284 gcenv.ee.standalone.cpp
286 endif(FEATURE_STANDALONE_GC)
290 set(VM_SOURCES_DAC_AND_WKS_WIN32
293 winrttypenameconverter.cpp
296 list(APPEND VM_SOURCES_WKS
297 ${VM_SOURCES_DAC_AND_WKS_WIN32}
298 # These should not be included for Linux
300 assemblynativeresource.cpp
303 clrprivbinderwinrt.cpp
304 clrprivtypecachewinrt.cpp
306 comcallablewrapper.cpp
307 comconnectionpoints.cpp
308 cominterfacemarshaler.cpp
309 commtmemberinfomap.cpp
312 dispparammarshaler.cpp
315 extensibleclassfactory.cpp
318 olecontexthelpers.cpp
321 runtimecallablewrapper.cpp
324 stdinterfaces_wrapper.cpp
328 list(APPEND VM_SOURCES_DAC
329 ${VM_SOURCES_DAC_AND_WKS_WIN32}
330 # These should not be included for Linux
331 clrprivbinderwinrt.cpp
332 clrprivtypecachewinrt.cpp
335 if(CLR_CMAKE_TARGET_ARCH_AMD64)
336 set(VM_SOURCES_WKS_ARCH_ASM
337 ${ARCH_SOURCES_DIR}/AsmHelpers.asm
338 ${ARCH_SOURCES_DIR}/CallDescrWorkerAMD64.asm
339 ${ARCH_SOURCES_DIR}/ComCallPreStub.asm
340 ${ARCH_SOURCES_DIR}/CrtHelpers.asm
341 ${ARCH_SOURCES_DIR}/GenericComCallStubs.asm
342 ${ARCH_SOURCES_DIR}/GenericComPlusCallStubs.asm
343 ${ARCH_SOURCES_DIR}/getstate.asm
344 ${ARCH_SOURCES_DIR}/InstantiatingStub.asm
345 ${ARCH_SOURCES_DIR}/JitHelpers_Fast.asm
346 ${ARCH_SOURCES_DIR}/JitHelpers_FastWriteBarriers.asm
347 ${ARCH_SOURCES_DIR}/JitHelpers_InlineGetThread.asm
348 ${ARCH_SOURCES_DIR}/JitHelpers_SingleAppDomain.asm
349 ${ARCH_SOURCES_DIR}/JitHelpers_Slow.asm
350 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
351 ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
352 ${ARCH_SOURCES_DIR}/ThePreStubAMD64.asm
353 ${ARCH_SOURCES_DIR}/ExternalMethodFixupThunk.asm
354 ${ARCH_SOURCES_DIR}/UMThunkStub.asm
355 ${ARCH_SOURCES_DIR}/VirtualCallStubAMD64.asm
357 elseif(CLR_CMAKE_TARGET_ARCH_I386)
358 set(VM_SOURCES_WKS_ARCH_ASM
359 ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
360 ${ARCH_SOURCES_DIR}/asmhelpers.asm
361 ${ARCH_SOURCES_DIR}/fptext.asm
362 ${ARCH_SOURCES_DIR}/gmsasm.asm
363 ${ARCH_SOURCES_DIR}/jithelp.asm
365 elseif(CLR_CMAKE_TARGET_ARCH_ARM)
366 set(VM_SOURCES_WKS_ARCH_ASM
367 ${ARCH_SOURCES_DIR}/asmhelpers.asm
368 ${ARCH_SOURCES_DIR}/CrtHelpers.asm
369 ${ARCH_SOURCES_DIR}/ehhelpers.asm
370 ${ARCH_SOURCES_DIR}/memcpy.asm
371 ${ARCH_SOURCES_DIR}/patchedcode.asm
372 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
374 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
375 set(VM_SOURCES_WKS_ARCH_ASM
376 ${ARCH_SOURCES_DIR}/AsmHelpers.asm
377 ${ARCH_SOURCES_DIR}/CallDescrWorkerARM64.asm
378 ${ARCH_SOURCES_DIR}/CrtHelpers.asm
379 ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
386 if(CLR_CMAKE_TARGET_ARCH_AMD64)
387 set(VM_SOURCES_WKS_ARCH_ASM
388 ${ARCH_SOURCES_DIR}/asmhelpers.S
389 ${ARCH_SOURCES_DIR}/calldescrworkeramd64.S
390 ${ARCH_SOURCES_DIR}/crthelpers.S
391 ${ARCH_SOURCES_DIR}/externalmethodfixupthunk.S
392 ${ARCH_SOURCES_DIR}/getstate.S
393 ${ARCH_SOURCES_DIR}/jithelpers_fast.S
394 ${ARCH_SOURCES_DIR}/jithelpers_fastwritebarriers.S
395 ${ARCH_SOURCES_DIR}/jithelpers_singleappdomain.S
396 ${ARCH_SOURCES_DIR}/jithelpers_slow.S
397 ${ARCH_SOURCES_DIR}/pinvokestubs.S
398 ${ARCH_SOURCES_DIR}/theprestubamd64.S
399 ${ARCH_SOURCES_DIR}/unixasmhelpers.S
400 ${ARCH_SOURCES_DIR}/umthunkstub.S
401 ${ARCH_SOURCES_DIR}/virtualcallstubamd64.S
403 elseif(CLR_CMAKE_TARGET_ARCH_I386)
404 set(VM_SOURCES_WKS_ARCH_ASM
405 ${ARCH_SOURCES_DIR}/ehhelpers.S
406 ${ARCH_SOURCES_DIR}/asmhelpers.S
407 ${ARCH_SOURCES_DIR}/jithelp.S
408 ${ARCH_SOURCES_DIR}/gmsasm.S
409 ${ARCH_SOURCES_DIR}/umthunkstub.S
411 elseif(CLR_CMAKE_TARGET_ARCH_ARM)
412 set(VM_SOURCES_WKS_ARCH_ASM
413 ${ARCH_SOURCES_DIR}/asmhelpers.S
414 ${ARCH_SOURCES_DIR}/crthelpers.S
415 ${ARCH_SOURCES_DIR}/ehhelpers.S
416 ${ARCH_SOURCES_DIR}/memcpy.S
417 ${ARCH_SOURCES_DIR}/patchedcode.S
418 ${ARCH_SOURCES_DIR}/pinvokestubs.S
420 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
421 set(VM_SOURCES_WKS_ARCH_ASM
422 ${ARCH_SOURCES_DIR}/asmhelpers.S
423 ${ARCH_SOURCES_DIR}/calldescrworkerarm64.S
424 ${ARCH_SOURCES_DIR}/crthelpers.S
425 ${ARCH_SOURCES_DIR}/pinvokestubs.S
432 if(CLR_CMAKE_TARGET_ARCH_AMD64)
433 set(VM_SOURCES_DAC_AND_WKS_ARCH
434 ${ARCH_SOURCES_DIR}/cgenamd64.cpp
435 ${ARCH_SOURCES_DIR}/excepamd64.cpp
436 ${ARCH_SOURCES_DIR}/gmsamd64.cpp
437 ${ARCH_SOURCES_DIR}/stublinkeramd64.cpp
440 set(VM_SOURCES_WKS_ARCH
441 ${ARCH_SOURCES_DIR}/jithelpersamd64.cpp
442 ${ARCH_SOURCES_DIR}/jitinterfaceamd64.cpp
443 ${ARCH_SOURCES_DIR}/profiler.cpp
444 exceptionhandling.cpp
448 elseif(CLR_CMAKE_TARGET_ARCH_I386)
449 set(VM_SOURCES_DAC_AND_WKS_ARCH
452 ${ARCH_SOURCES_DIR}/cgenx86.cpp
453 ${ARCH_SOURCES_DIR}/excepx86.cpp
454 ${ARCH_SOURCES_DIR}/gmsx86.cpp
455 ${ARCH_SOURCES_DIR}/stublinkerx86.cpp
458 set(VM_SOURCES_WKS_ARCH
459 ${ARCH_SOURCES_DIR}/jitinterfacex86.cpp
460 ${ARCH_SOURCES_DIR}/profiler.cpp
461 exceptionhandling.cpp
464 elseif(CLR_CMAKE_TARGET_ARCH_ARM)
465 set(VM_SOURCES_DAC_AND_WKS_ARCH
466 ${ARCH_SOURCES_DIR}/exceparm.cpp
467 ${ARCH_SOURCES_DIR}/stubs.cpp
468 ${ARCH_SOURCES_DIR}/armsinglestepper.cpp
471 set(VM_SOURCES_WKS_ARCH
472 ${ARCH_SOURCES_DIR}/jithelpersarm.cpp
473 ${ARCH_SOURCES_DIR}/profiler.cpp
474 exceptionhandling.cpp
477 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
478 set(VM_SOURCES_DAC_AND_WKS_ARCH
479 ${ARCH_SOURCES_DIR}/stubs.cpp
480 exceptionhandling.cpp
485 if(CLR_CMAKE_PLATFORM_UNIX)
486 list(APPEND VM_SOURCES_WKS_ARCH
487 ${ARCH_SOURCES_DIR}/unixstubs.cpp
489 endif(CLR_CMAKE_PLATFORM_UNIX)
491 set(VM_SOURCES_DAC_ARCH
493 exceptionhandling.cpp
496 list(APPEND VM_SOURCES_WKS
497 ${VM_SOURCES_WKS_ARCH}
498 ${VM_SOURCES_DAC_AND_WKS_ARCH}
501 list(APPEND VM_SOURCES_DAC
502 ${VM_SOURCES_DAC_ARCH}
503 ${VM_SOURCES_DAC_AND_WKS_ARCH}
506 list(APPEND VM_SOURCES_WKS
510 # The DAC does need GC sources in order to link correctly, even if
512 list(APPEND VM_SOURCES_DAC
516 convert_to_absolute_path(VM_SOURCES_WKS ${VM_SOURCES_WKS})
517 convert_to_absolute_path(VM_SOURCES_WKS_ARCH_ASM ${VM_SOURCES_WKS_ARCH_ASM})
518 convert_to_absolute_path(VM_SOURCES_DAC ${VM_SOURCES_DAC})
520 add_subdirectory(dac)
521 add_subdirectory(wks)
523 if(FEATURE_PERFTRACING)
524 add_subdirectory(${GENERATED_EVENTING_DIR}/eventpipe ${CMAKE_CURRENT_BINARY_DIR}/eventpipe)
525 endif(FEATURE_PERFTRACING)