Switch over to managed Marvin implementation for string hashing (#17029)
[platform/upstream/coreclr.git] / src / vm / CMakeLists.txt
1 set(CMAKE_INCLUDE_CURRENT_DIR ON)
2
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
7 add_definitions(-DUNICODE)
8 add_definitions(-D_UNICODE)
9
10
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>)
14   endforeach (Config)
15 else()
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)
20
21 if(CLR_CMAKE_PLATFORM_UNIX)
22     add_compile_options(-fPIC)
23 endif(CLR_CMAKE_PLATFORM_UNIX)
24
25 if(FEATURE_GDBJIT)
26     set(VM_SOURCES_GDBJIT
27         gdbjit.cpp
28     )
29 endif(FEATURE_GDBJIT)
30
31 if(FEATURE_JIT_PITCHING)
32    add_definitions(-DFEATURE_JIT_PITCHING)
33 endif(FEATURE_JIT_PITCHING)
34
35 set(VM_SOURCES_DAC_AND_WKS_COMMON
36     appdomain.cpp
37     array.cpp
38     assembly.cpp
39     baseassemblyspec.cpp
40     binder.cpp
41     ceeload.cpp
42     class.cpp
43     classhash.cpp
44     clsload.cpp
45     codeman.cpp
46     codeversion.cpp
47     comdelegate.cpp
48     contractimpl.cpp
49     coreassemblyspec.cpp
50     corebindresult.cpp
51     corhost.cpp
52     crst.cpp
53     debugdebugger.cpp
54     debughelp.cpp
55     debuginfostore.cpp
56     decodemd.cpp
57     disassembler.cpp
58     dllimport.cpp
59     domainfile.cpp
60     dynamicmethod.cpp
61     ecall.cpp
62     eedbginterfaceimpl.cpp
63     eehash.cpp
64     eetwain.cpp
65     encee.cpp
66     excep.cpp
67     exstate.cpp
68     field.cpp
69     formattype.cpp
70     fptrstubs.cpp
71     frames.cpp
72     gctoclreventsink.cpp
73     gcheaputilities.cpp
74     gchandleutilities.cpp
75     genericdict.cpp
76     generics.cpp
77     hash.cpp
78     hillclimbing.cpp
79     ilinstrumentation.cpp
80     ilstubcache.cpp
81     ilstubresolver.cpp
82     inlinetracking.cpp
83     instmethhash.cpp
84     jitinterface.cpp
85     loaderallocator.cpp
86     memberload.cpp
87     method.cpp
88     methodimpl.cpp
89     methoditer.cpp
90     methodtable.cpp
91     object.cpp
92     pefile.cpp
93     peimage.cpp
94     peimagelayout.cpp
95     perfmap.cpp
96     perfinfo.cpp
97     precode.cpp
98     prestub.cpp
99     rejit.cpp
100     sigformat.cpp
101     siginfo.cpp
102     spinlock.cpp
103     stackwalk.cpp
104     stublink.cpp
105     stubmgr.cpp
106     syncblk.cpp
107     threadpoolrequest.cpp
108     threads.cpp
109     threadstatics.cpp
110     typectxt.cpp
111     typedesc.cpp
112     typehandle.cpp
113     typehash.cpp
114     typestring.cpp
115     util.cpp
116     vars.cpp
117     versionresilienthashcode.cpp
118     virtualcallstub.cpp
119     win32threadpool.cpp
120     yieldprocessornormalized.cpp
121     zapsig.cpp
122 )
123
124 set( GC_SOURCES_DAC_AND_WKS_COMMON
125   ../gc/handletable.cpp
126   ../gc/handletablecore.cpp
127   ../gc/handletablescan.cpp
128   ../gc/objecthandle.cpp)
129
130 if(FEATURE_READYTORUN)
131     list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON
132         readytoruninfo.cpp
133     )
134 endif(FEATURE_READYTORUN)
135
136 if(FEATURE_JIT_PITCHING)
137     list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON
138         codepitchingmanager.cpp
139     )
140 endif(FEATURE_JIT_PITCHING)
141
142 set(VM_SOURCES_DAC
143     ${VM_SOURCES_DAC_AND_WKS_COMMON}
144     contexts.cpp
145     threaddebugblockinginfo.cpp
146 )
147
148 set(GC_SOURCES_DAC
149     ${GC_SOURCES_DAC_AND_WKS_COMMON})
150
151 set(VM_SOURCES_WKS
152     ${VM_SOURCES_DAC_AND_WKS_COMMON}
153     appdomainnative.cpp
154     assemblyname.cpp
155     assemblynative.cpp
156     assemblyspec.cpp
157     cachelinealloc.cpp
158     callcounter.cpp
159     callhelpers.cpp
160     ceemain.cpp
161     clrconfignative.cpp
162     clrex.cpp
163     clrprivbinderutil.cpp
164     clrvarargs.cpp
165     comdatetime.cpp
166     comdependenthandle.cpp
167     comdynamic.cpp
168     commemoryfailpoint.cpp
169     commodule.cpp
170     compatibilityswitch.cpp
171     comsynchronizable.cpp
172     comthreadpool.cpp
173     comutilnative.cpp
174     comwaithandle.cpp
175     customattribute.cpp
176     custommarshalerinfo.cpp
177     dllimportcallback.cpp
178     eeconfig.cpp
179     eecontract.cpp
180     eemessagebox.cpp
181     eepolicy.cpp
182     eetoprofinterfaceimpl.cpp
183     eventpipe.cpp
184     eventpipeconfiguration.cpp
185     eventpipeevent.cpp
186     eventpipeeventinstance.cpp
187     eventpipeblock.cpp
188     eventpipefile.cpp
189     eventpipejsonfile.cpp
190     eventpipeprovider.cpp
191     eventpipebuffer.cpp
192     eventpipebuffermanager.cpp
193     eventpipesession.cpp
194     eventstore.cpp
195     fastserializer.cpp
196     fcall.cpp
197     fieldmarshaler.cpp
198     finalizerthread.cpp
199     frameworkexceptionloader.cpp
200     gccover.cpp
201     gcenv.ee.static.cpp
202     gcenv.ee.common.cpp
203     gcenv.os.cpp
204     gchelpers.cpp
205     genmeth.cpp
206     hosting.cpp
207     ibclogger.cpp
208     ilmarshalers.cpp
209     interopconverter.cpp
210     interoputil.cpp
211     interpreter.cpp
212     invokeutil.cpp
213     jithelpers.cpp
214     managedmdimport.cpp
215     marshalnative.cpp
216     mdaassistants.cpp
217     methodtablebuilder.cpp
218     mlinfo.cpp
219     mscorlib.cpp # <DisablePrecompiledHeaders>true</DisablePrecompiledHeaders>
220     multicorejit.cpp # Condition="'$(FeatureMulticoreJIT)' == 'true'
221     multicorejitplayer.cpp # Condition="'$(FeatureMulticoreJIT)' == 'true'
222     nativeeventsource.cpp
223     nativeoverlapped.cpp
224     objectlist.cpp
225     olevariant.cpp
226     pendingload.cpp
227     profattach.cpp
228     profattachclient.cpp
229     profattachserver.cpp
230     profdetach.cpp
231     profilermetadataemitvalidator.cpp
232     profilingenumerators.cpp
233     profilinghelper.cpp
234     proftoeeinterfaceimpl.cpp
235     qcall.cpp
236     reflectclasswriter.cpp
237     reflectioninvocation.cpp
238     runtimehandles.cpp
239     safehandle.cpp
240     sampleprofiler.cpp
241     sha1.cpp
242     simplerwlock.cpp
243     sourceline.cpp
244     stackingallocator.cpp
245     stringliteralmap.cpp
246     stubcache.cpp
247     stubgen.cpp
248     stubhelpers.cpp
249     syncclean.cpp
250     synch.cpp
251     synchronizationcontextnative.cpp
252     testhookmgr.cpp
253     tieredcompilation.cpp
254     threaddebugblockinginfo.cpp
255     threadsuspend.cpp
256     typeparse.cpp
257     weakreferencenative.cpp
258     ${VM_SOURCES_GDBJIT}
259 )
260
261 set(GC_SOURCES_WKS
262     ${GC_SOURCES_DAC_AND_WKS_COMMON}
263     ../gc/gceventstatus.cpp
264     ../gc/gcconfig.cpp
265     ../gc/gccommon.cpp
266     ../gc/gcscan.cpp
267     ../gc/gcsvr.cpp
268     ../gc/gcwks.cpp
269     ../gc/gchandletable.cpp
270     ../gc/gceesvr.cpp
271     ../gc/gceewks.cpp
272     ../gc/gcload.cpp
273     ../gc/softwarewritewatch.cpp
274     ../gc/handletablecache.cpp)
275
276 if(FEATURE_EVENT_TRACE)
277     list(APPEND VM_SOURCES_WKS
278         eventtrace.cpp
279         )
280 endif(FEATURE_EVENT_TRACE)
281
282 if(FEATURE_STANDALONE_GC)
283     list(APPEND VM_SOURCES_WKS
284         gcenv.ee.standalone.cpp
285         )
286 endif(FEATURE_STANDALONE_GC)
287
288 if(WIN32)
289
290 set(VM_SOURCES_DAC_AND_WKS_WIN32
291     clrtocomcall.cpp
292     rcwwalker.cpp
293     winrttypenameconverter.cpp
294 )
295
296 list(APPEND VM_SOURCES_WKS
297     ${VM_SOURCES_DAC_AND_WKS_WIN32}
298     # These should not be included for Linux
299     appxutil.cpp
300     assemblynativeresource.cpp
301     classcompat.cpp
302     classfactory.cpp
303     clrprivbinderwinrt.cpp
304     clrprivtypecachewinrt.cpp
305     comcache.cpp
306     comcallablewrapper.cpp
307     comconnectionpoints.cpp
308     cominterfacemarshaler.cpp
309     commtmemberinfomap.cpp
310     comtoclrcall.cpp
311     dispatchinfo.cpp
312     dispparammarshaler.cpp
313     dwreport.cpp
314     eventreporter.cpp
315     extensibleclassfactory.cpp
316     mngstdinterfaces.cpp
317     notifyexternals.cpp
318     olecontexthelpers.cpp
319     rcwrefcache.cpp
320     rtlfunctions.cpp
321     runtimecallablewrapper.cpp
322     stacksampler.cpp
323     stdinterfaces.cpp
324     stdinterfaces_wrapper.cpp
325     winrthelpers.cpp
326 )
327
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
333 )
334
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
356     )
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
364     )
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
373     )
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
380     )
381
382 endif()
383
384 else(WIN32)
385
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
402         )
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
410         )
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
419         )
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
426         )
427     endif()
428
429 endif(WIN32)
430
431
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
438     )
439
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
445         gcinfodecoder.cpp
446         jitinterfacegen.cpp
447     )
448 elseif(CLR_CMAKE_TARGET_ARCH_I386)
449     set(VM_SOURCES_DAC_AND_WKS_ARCH
450         gcdecode.cpp
451         exinfo.cpp
452         ${ARCH_SOURCES_DIR}/cgenx86.cpp
453         ${ARCH_SOURCES_DIR}/excepx86.cpp
454         ${ARCH_SOURCES_DIR}/gmsx86.cpp
455         ${ARCH_SOURCES_DIR}/stublinkerx86.cpp
456     )
457
458     set(VM_SOURCES_WKS_ARCH
459         ${ARCH_SOURCES_DIR}/jitinterfacex86.cpp
460         ${ARCH_SOURCES_DIR}/profiler.cpp
461         exceptionhandling.cpp
462         gcinfodecoder.cpp
463     )
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
469     )
470
471     set(VM_SOURCES_WKS_ARCH
472         ${ARCH_SOURCES_DIR}/jithelpersarm.cpp
473         ${ARCH_SOURCES_DIR}/profiler.cpp
474         exceptionhandling.cpp
475         gcinfodecoder.cpp
476     )
477 elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
478     set(VM_SOURCES_DAC_AND_WKS_ARCH
479         ${ARCH_SOURCES_DIR}/stubs.cpp
480         exceptionhandling.cpp
481         gcinfodecoder.cpp
482     )
483 endif()
484
485 if(CLR_CMAKE_PLATFORM_UNIX)
486     list(APPEND VM_SOURCES_WKS_ARCH
487         ${ARCH_SOURCES_DIR}/unixstubs.cpp
488     )
489 endif(CLR_CMAKE_PLATFORM_UNIX)
490
491 set(VM_SOURCES_DAC_ARCH
492     gcinfodecoder.cpp
493     exceptionhandling.cpp
494 )
495
496 list(APPEND VM_SOURCES_WKS
497     ${VM_SOURCES_WKS_ARCH}
498     ${VM_SOURCES_DAC_AND_WKS_ARCH}
499 )
500
501 list(APPEND VM_SOURCES_DAC
502     ${VM_SOURCES_DAC_ARCH}
503     ${VM_SOURCES_DAC_AND_WKS_ARCH}
504 )
505
506 list(APPEND VM_SOURCES_WKS
507      ${GC_SOURCES_WKS}
508 )
509
510 # The DAC does need GC sources in order to link correctly, even if
511 # it's not used.
512 list(APPEND VM_SOURCES_DAC
513     ${GC_SOURCES_DAC}
514 )
515
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})
519
520 add_subdirectory(dac)
521 add_subdirectory(wks)
522
523 if(FEATURE_PERFTRACING)
524     add_subdirectory(${GENERATED_EVENTING_DIR}/eventpipe ${CMAKE_CURRENT_BINARY_DIR}/eventpipe)
525 endif(FEATURE_PERFTRACING)