Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/CMakeLists.txt
5972 views
1
################################################################################
2
# Copyright (c) 2017, 2022 IBM Corp. and others
3
#
4
# This program and the accompanying materials are made available under
5
# the terms of the Eclipse Public License 2.0 which accompanies this
6
# distribution and is available at https://www.eclipse.org/legal/epl-2.0/
7
# or the Apache License, Version 2.0 which accompanies this distribution and
8
# is available at https://www.apache.org/licenses/LICENSE-2.0.
9
#
10
# This Source Code may also be made available under the following
11
# Secondary Licenses when the conditions for such availability set
12
# forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
13
# General Public License, version 2 with the GNU Classpath
14
# Exception [1] and GNU General Public License, version 2 with the
15
# OpenJDK Assembly Exception [2].
16
#
17
# [1] https://www.gnu.org/software/classpath/license.html
18
# [2] http://openjdk.java.net/legal/assembly-exception.html
19
#
20
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
21
################################################################################
22
23
###
24
### Basic housekeeping stuff
25
### i.e. things which need to be set up before including J9vmPlatform
26
###
27
28
include(cmake/version.cmake)
29
30
project(j9vm VERSION ${J9VM_VERSION} LANGUAGES CXX C)
31
32
set(J9VM_OMR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/omr" CACHE PATH "Path to the OMR directory")
33
set(CMAKE_MODULE_PATH "${j9vm_SOURCE_DIR}/cmake/modules" "${J9VM_OMR_DIR}/cmake/modules" ${CMAKE_MODULE_PATH})
34
35
# pull in definitions of what options we support
36
include(cmake/options.cmake)
37
38
# ensure that we apply omr configuration early so any overrides we might set apply properly
39
include(cmake/omr_config.cmake)
40
41
###
42
### End basic housekeeping
43
###
44
45
# Get platform specific configuration stuff
46
include(cmake/platform.cmake)
47
48
# Pull in definitions for omr_add_hookgen and omr_add_tracegen
49
# these will be in omr/cmake/modules
50
include(OmrHookgen)
51
set(OMR_TRACE_ROOT "${CMAKE_CURRENT_BINARY_DIR}")
52
include(cmake/J9vmTargetSupport.cmake)
53
include(OmrTracegen)
54
include(OmrDDRSupport)
55
include(cmake/build_tags.cmake)
56
include(cmake/J9vmGenAsm.cmake)
57
58
###
59
### Various configuration
60
### all configuration that does not need to proceed J9vmPlatform
61
###
62
63
# Set up an interface library to keep track of the various compiler defines
64
# used by the jit components.
65
# TODO should probably rename to j9vm_jit_defines for less ambiguity
66
67
j9vm_add_library(j9vm_compiler_defines INTERFACE)
68
target_compile_definitions(j9vm_compiler_defines INTERFACE ${TR_COMPILE_DEFINITIONS})
69
70
# Build everything with -fPIC (or equivalent).
71
# We do this to ensure that our static libraries get built with -fPIC
72
# (cmake automatically builds shared libraries with -fPIC)
73
# TODO this has the side effect that we also build executables with -fPIE which we don't want.
74
# Need to investigate if it's possible to get one without the other. If it's not we need
75
# to explicitly tag individual targets which seems tedious.
76
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
77
78
if(OMR_OS_OSX)
79
set(CMAKE_INSTALL_RPATH "@loader_path")
80
else()
81
set(CMAKE_INSTALL_RPATH "\$ORIGIN")
82
endif()
83
84
set(OMR_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING "")
85
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING "" FORCE)
86
87
set(OMR_INSTALL_BIN_DIR "${j9vm_SOURCE_DIR}" CACHE PATH "")
88
set(OMR_INSTALL_LIB_DIR "${j9vm_SOURCE_DIR}" CACHE PATH "")
89
set(OMR_INSTALL_ARCHIVE_DIR "${j9vm_SOURCE_DIR}/lib" CACHE PATH "")
90
91
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
92
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
93
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
94
# we also want to set the RPATH properly
95
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
96
97
if(OPENJ9_BUILD)
98
add_definitions(-DOPENJ9_BUILD)
99
endif()
100
101
###
102
### Handle Generated files
103
###
104
105
configure_file(include/j9cfg.h.in j9cfg.h)
106
configure_file(include/j9lib.h.in j9lib.h)
107
configure_file(include/j9version.h.in j9version.h)
108
configure_file(makelib/copyright.c.in copyright.c)
109
110
# Definition of add_hookgen pulled in from omr/cmake/modules/OmrHookgen.cmake
111
# Here we handle all the .hdf files which don't have a more logical home.
112
# i.e. they live in directories where we don't need to build anything
113
# and/or its hard to track down exactly who depends on them
114
115
omr_add_hookgen(INPUT oti/j9jit.hdf)
116
omr_add_hookgen(INPUT oti/j9vm.hdf)
117
omr_add_hookgen(INPUT oti/zipCachePool.hdf)
118
omr_add_hookgen(INPUT gc_include/j9mm.hdf)
119
120
# Wrap up the hookgen'd files in a named target
121
# This is to work around the fact that CMake does not do proper dependency tracking
122
# for generated files across different directories.
123
add_custom_target(j9vm_hookgen
124
DEPENDS
125
${CMAKE_CURRENT_BINARY_DIR}/jithook.h
126
${CMAKE_CURRENT_BINARY_DIR}/vmhook.h
127
${CMAKE_CURRENT_BINARY_DIR}/vmzipcachehook.h
128
${CMAKE_CURRENT_BINARY_DIR}/mmhook.h
129
)
130
131
# Generate NLS headers
132
file(GLOB_RECURSE nls_files "${CMAKE_CURRENT_SOURCE_DIR}/nls/*.nls")
133
add_custom_command(
134
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/nls.stamp"
135
DEPENDS j9nls ${nls_files}
136
COMMAND "${Java_JAVA_EXECUTABLE}" -cp "$<TARGET_PROPERTY:j9nls,JAR_FILE>" com.ibm.oti.NLSTool.J9NLS -source "${CMAKE_CURRENT_SOURCE_DIR}"
137
COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/nls.stamp"
138
COMMENT "Generating NLS files"
139
VERBATIM
140
)
141
add_custom_target(j9vm_nlsgen
142
DEPENDS
143
"${CMAKE_CURRENT_BINARY_DIR}/nls.stamp"
144
)
145
146
set(J9VM_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
147
file(MAKE_DIRECTORY "${J9VM_INCLUDE_DIR}")
148
149
# Note: the following does not appear to be needed anymore. It is left here in case we need it in the future.
150
# On z/OS, some generated files must be converted to EBCDIC for consistency.
151
# This macro is intended to be used as a replacement for add_custom_command
152
# for those files.
153
if("FALSE" AND OMR_OS_ZOS)
154
macro(add_custom_ascii_command)
155
set(options)
156
set(singleValueArgs OUTPUT WORKING_DIRECTORY)
157
set(multiValueArgs COMMAND DEPENDS)
158
cmake_parse_arguments(opt "${options}" "${singleValueArgs}" "${multiValueArgs}" ${ARGN})
159
160
add_custom_command(OUTPUT "${opt_OUTPUT}"
161
DEPENDS ${opt_DEPENDS}
162
COMMAND ${opt_COMMAND}
163
COMMAND iconv -f ISO8859-1 -t IBM-1047 < "${opt_OUTPUT}" > "${opt_OUTPUT}.tmp"
164
COMMAND mv -f "${opt_OUTPUT}.tmp" "${opt_OUTPUT}"
165
COMMAND chtag -t -c IBM-1047 "${opt_OUTPUT}"
166
VERBATIM
167
WORKING_DIRECTORY "${opt_WORKING_DIRECTORY}"
168
)
169
endmacro(add_custom_ascii_command)
170
else()
171
macro(add_custom_ascii_command)
172
set(options)
173
set(singleValueArgs OUTPUT WORKING_DIRECTORY)
174
set(multiValueArgs COMMAND DEPENDS)
175
cmake_parse_arguments(opt "${options}" "${singleValueArgs}" "${multiValueArgs}" ${ARGN})
176
177
add_custom_command(OUTPUT "${opt_OUTPUT}"
178
DEPENDS ${opt_DEPENDS}
179
COMMAND ${opt_COMMAND}
180
VERBATIM
181
WORKING_DIRECTORY "${opt_WORKING_DIRECTORY}"
182
)
183
endmacro(add_custom_ascii_command)
184
endif()
185
186
# generate headers
187
188
add_custom_ascii_command(OUTPUT "${J9VM_INCLUDE_DIR}/jni.h"
189
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/jni.h.m4"
190
COMMAND m4 -D "JAVA_SPEC_VERSION=${JAVA_SPEC_VERSION}" "${CMAKE_CURRENT_SOURCE_DIR}/include/jni.h.m4" ${ASCII_TO_NATIVE} > "jni.h"
191
VERBATIM
192
WORKING_DIRECTORY "${J9VM_INCLUDE_DIR}"
193
)
194
add_custom_ascii_command(OUTPUT "${J9VM_INCLUDE_DIR}/jvmti.h"
195
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/jvmti.h.m4"
196
COMMAND m4 -D "JAVA_SPEC_VERSION=${JAVA_SPEC_VERSION}" "${CMAKE_CURRENT_SOURCE_DIR}/include/jvmti.h.m4" ${ASCII_TO_NATIVE} > "jvmti.h"
197
VERBATIM
198
WORKING_DIRECTORY "${J9VM_INCLUDE_DIR}"
199
)
200
201
# Generate zOS 31/64-bit interoperability compatible jni.h and copy other dependent headers.
202
if(J9VM_ZOS_3164_INTEROPERABILITY)
203
set(J9VM_INCLUDE31_DIR "${CMAKE_CURRENT_BINARY_DIR}/include31")
204
file(MAKE_DIRECTORY "${J9VM_INCLUDE31_DIR}")
205
file(INSTALL "${CMAKE_CURRENT_SOURCE_DIR}/include/jni_convert.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/jniport.h"
206
DESTINATION "${J9VM_INCLUDE31_DIR}")
207
208
add_custom_ascii_command(OUTPUT "${J9VM_INCLUDE31_DIR}/jni.h"
209
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/jni.h.m4"
210
COMMAND m4 -D "J9_ZOS_3164_INTEROPERABILITY=1" -D "JAVA_SPEC_VERSION=${JAVA_SPEC_VERSION}" "${CMAKE_CURRENT_SOURCE_DIR}/include/jni.h.m4" ${ASCII_TO_NATIVE} > "jni.h"
211
VERBATIM
212
WORKING_DIRECTORY "${J9VM_INCLUDE31_DIR}"
213
)
214
215
add_custom_target(j9vm31_m4gen
216
DEPENDS
217
"${J9VM_INCLUDE31_DIR}/jni.h"
218
)
219
endif()
220
221
# Note we do this here rather than in the redirector directory to work around
222
# issues in cmake. If we did it there each target which consumed generated.c would need
223
# its own rule to create it, which leads race conditions when building in parallel.
224
225
add_custom_ascii_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/redirector/generated.c"
226
DEPENDS oti/helpers.m4 redirector/forwarders.m4 redirector/generated.c.m4
227
COMMAND m4 -I "${CMAKE_CURRENT_SOURCE_DIR}/oti" -I "${CMAKE_CURRENT_SOURCE_DIR}/redirector" "${CMAKE_CURRENT_SOURCE_DIR}/redirector/generated.c.m4" > generated.c
228
VERBATIM
229
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/redirector"
230
)
231
232
add_custom_ascii_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/j9vm/generated.h"
233
DEPENDS oti/helpers.m4 redirector/forwarders.m4 j9vm/generated.h.m4
234
COMMAND m4 -I "${CMAKE_CURRENT_SOURCE_DIR}/oti" -I "${CMAKE_CURRENT_SOURCE_DIR}/redirector" "${CMAKE_CURRENT_SOURCE_DIR}/j9vm/generated.h.m4" > generated.h
235
VERBATIM
236
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/j9vm"
237
)
238
239
add_custom_target(j9vm_m4gen
240
DEPENDS
241
"${CMAKE_CURRENT_BINARY_DIR}/redirector/generated.c"
242
"${CMAKE_CURRENT_BINARY_DIR}/j9vm/generated.h"
243
"${J9VM_INCLUDE_DIR}/jni.h"
244
"${J9VM_INCLUDE_DIR}/jvmti.h"
245
)
246
247
add_custom_target(copy_default_options ALL
248
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/options.default" "${CMAKE_CURRENT_BINARY_DIR}/options.default"
249
)
250
251
###
252
### Helper interface libraries
253
###
254
255
# j9vm_interface is used to hold properties we want to apply to everyone.
256
# e.g. adding oti/ to the include path etc.
257
j9vm_add_library(j9vm_interface INTERFACE)
258
target_include_directories(j9vm_interface
259
INTERFACE
260
${CMAKE_CURRENT_SOURCE_DIR}/oti
261
${CMAKE_CURRENT_SOURCE_DIR}/include
262
${J9VM_OMR_DIR}/include_core
263
${J9VM_OMR_DIR}/gc/include
264
${CMAKE_CURRENT_BINARY_DIR}/include
265
${CMAKE_CURRENT_BINARY_DIR}/omr
266
${CMAKE_CURRENT_BINARY_DIR}
267
${CMAKE_BINARY_DIR}
268
)
269
# Inject copyright file if building a shared library or executable
270
set(is_executable "$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTRABLE>")
271
set(is_shlib "$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>")
272
target_sources(j9vm_interface
273
INTERFACE
274
$<$<OR:${is_shlib},${is_executable}>:${CMAKE_CURRENT_BINARY_DIR}/copyright.c>
275
)
276
277
# If on z/OS link against omr_ascii, this is what gives us convlit(ISO8859-1) and links j9atoe
278
if(OMR_OS_ZOS)
279
target_link_libraries(j9vm_interface INTERFACE omr_ascii)
280
endif()
281
282
target_include_directories(j9vm_interface INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/nls)
283
284
add_dependencies(j9vm_interface
285
j9vm_hookgen
286
j9vm_m4gen
287
j9vm_nlsgen
288
run_tracegen
289
)
290
291
# j9vm_gc_includes is used to track the include directories that are consumed by the various gc components
292
j9vm_add_library(j9vm_gc_includes INTERFACE)
293
target_include_directories(j9vm_gc_includes
294
INTERFACE
295
# Pull in the public include paths exposed by the omrgc library
296
$<TARGET_PROPERTY:omrgc,INTERFACE_INCLUDE_DIRECTORIES>
297
# And then the include paths for the code we add ontop of the base omrgc
298
${j9vm_SOURCE_DIR}/gc_include
299
${j9vm_SOURCE_DIR}/gc_glue_java
300
${j9vm_SOURCE_DIR}/gc_base
301
${j9vm_SOURCE_DIR}/gc_stats
302
${j9vm_SOURCE_DIR}/gc_structs
303
)
304
305
# Stub library to simplify programs which use makelib/cmain.c to provide a signal protected main
306
j9vm_add_library(j9vm_main_wrapper INTERFACE)
307
target_sources(j9vm_main_wrapper INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/makelib/cmain.c)
308
target_link_libraries(j9vm_main_wrapper
309
INTERFACE
310
j9thr
311
j9prt
312
)
313
314
###
315
### OMR configuration stuff
316
###
317
318
# set up glue library target names
319
# See https://github.com/eclipse/omr/blob/master/doc/BuildingWithCMake.md
320
set(OMR_GC_GLUE_TARGET "j9vm_gc_glue" CACHE INTERNAL "")
321
set(OMR_GC_GLUE_FULL_TARGET "j9vm_gc_glue_full" CACHE INTERNAL "")
322
set(OMR_RAS_GLUE_TARGET "j9vm_ras_glue" CACHE INTERNAL "")
323
set(OMR_CORE_GLUE_TARGET "j9vm_core_glue" CACHE INTERNAL "")
324
set(OMR_UTIL_GLUE_TARGET "j9vm_util_glue" CACHE INTERNAL "")
325
326
# setup OMR library overrides
327
set(OMR_GC_LIB "j9gc" CACHE INTERNAL "")
328
set(OMR_GC_FULL_LIB "j9gc_full" CACHE INTERNAL "")
329
set(OMR_HOOK_LIB "j9hookable" CACHE INTERNAL "")
330
set(OMR_PORT_LIB "j9prt" CACHE INTERNAL "")
331
set(OMR_THREAD_LIB "j9thr" CACHE INTERNAL "")
332
set(OMR_TRACE_LIB "j9trc" CACHE INTERNAL "")
333
334
set(OMR_DDR_SET "j9ddr" CACHE INTERNAL "")
335
336
# Declare the GC glue interface libraries that omr might reference,
337
# including the 'full' version. We'll only add sources to the 'full'
338
# version in gc_glue_java, below, when appropriate.
339
j9vm_add_library(${OMR_GC_GLUE_TARGET} INTERFACE)
340
j9vm_add_library(${OMR_GC_GLUE_FULL_TARGET} INTERFACE)
341
342
# hack to add our binary dir to omr include path
343
# needed to grab the headers created by trace/hookgen
344
include_directories(${CMAKE_CURRENT_BINARY_DIR})
345
add_subdirectory("${J9VM_OMR_DIR}" omr)
346
347
add_subdirectory(gc_glue_java)
348
349
# Configure our DDR set
350
if(OMR_DDR)
351
make_ddr_set(j9ddr)
352
ddr_set_add_targets(j9ddr omrddr)
353
set_target_properties(j9ddr PROPERTIES
354
EXCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/ddr/excludes"
355
OVERRIDES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ddr/overrides"
356
BLOB "${CMAKE_CURRENT_BINARY_DIR}/j9ddr.dat"
357
SUPERSET "${CMAKE_BINARY_DIR}/superset.dat"
358
)
359
360
file(GLOB headers RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
361
include/*.h
362
include/*.hpp
363
oti/*.h
364
oti/*.hpp
365
)
366
ddr_add_headers(j9ddr
367
${CMAKE_CURRENT_BINARY_DIR}/j9cfg.h
368
${CMAKE_CURRENT_BINARY_DIR}/j9vmconstantpool.h
369
${headers}
370
)
371
372
set_property(TARGET j9ddr PROPERTY INCLUDE_DIRECTORIES
373
$<TARGET_PROPERTY:j9vm_interface,INTERFACE_INCLUDE_DIRECTORIES>
374
${J9VM_OMR_DIR}/gc/include
375
${J9VM_OMR_DIR}/gc/base
376
${J9VM_OMR_DIR}/gc/stats
377
${J9VM_OMR_DIR}/gc/structs
378
${j9vm_SOURCE_DIR}/gc_glue_java
379
${j9vm_SOURCE_DIR}/gc_stats
380
${j9vm_SOURCE_DIR}/gc_base
381
${j9vm_SOURCE_DIR}/gc_include
382
${CMAKE_CURRENT_BINARY_DIR}/omr/gc
383
${CMAKE_CURRENT_BINARY_DIR}/omr
384
)
385
386
# Specify the directories which shouldn't be searched for debug info.
387
# Currently this is only used on zos, and has no effect elsewhere.
388
# Note: omr/ is excluded since omrddr is responsible for gathering all the
389
# omr related binaries, which we get by adding omrddr to j9ddr.
390
set_property(TARGET j9ddr PROPERTY DDR_OBJECT_EXCLUDES
391
bcutil/test/
392
compiler/
393
gc_tests/
394
jilgen/
395
omr/
396
runtimetools/
397
tests/
398
)
399
400
endif()
401
402
# Due to CMake technical limitations we can't properly propagate dependencies
403
# to omrutil via the glue.
404
add_dependencies(omrutil_obj j9vm_nlsgen run_cptool)
405
406
###
407
### Shared library version suffixing
408
###
409
# The string we append to the name of select shared libraries.
410
set(J9VM_VERSION_SUFFIX "29")
411
412
###
413
### Begin the definitions of our modules
414
###
415
# TODO: a few subdirectories still need to be implemented (currently commented out)
416
# TODO: most libraries still need to be gated with if() statements
417
418
if(J9VM_MODULE_BCUTIL)
419
add_subdirectory(bcutil)
420
endif()
421
if(J9VM_MODULE_BCVERIFY)
422
add_subdirectory(bcverify)
423
endif()
424
if(J9VM_MODULE_CASSUME)
425
add_subdirectory(cassume)
426
endif()
427
if(J9VM_MODULE_CFDUMPER)
428
add_subdirectory(cfdumper)
429
endif()
430
if(J9VM_MODULE_CODERT_VM)
431
add_subdirectory(codert_vm)
432
endif()
433
if(J9VM_OPT_CRIU_SUPPORT)
434
add_subdirectory(criusupport)
435
endif()
436
add_subdirectory(cuda)
437
if(J9VM_MODULE_DBGEXT)
438
add_subdirectory(dbgext)
439
endif()
440
if(OMR_DDR)
441
add_subdirectory(ddr)
442
endif()
443
if(OMR_OS_WINDOWS)
444
# TODO: need to add windows support
445
# add_subdirectory(dfix)
446
endif()
447
if(J9VM_MODULE_EXELIB)
448
add_subdirectory(exelib)
449
endif()
450
if(J9VM_MODULE_FLSANITY)
451
add_subdirectory(flsanity)
452
endif()
453
if(J9VM_MODULE_GC)
454
add_subdirectory(gc)
455
endif()
456
if(J9VM_MODULE_GC_API)
457
add_subdirectory(gc_api)
458
endif()
459
if(J9VM_MODULE_GC_BASE)
460
add_subdirectory(gc_base)
461
endif()
462
if(J9VM_MODULE_GC_CHECK)
463
add_subdirectory(gc_check)
464
endif()
465
if(J9VM_MODULE_GC_MODRON_STANDARD)
466
add_subdirectory(gc_modron_standard)
467
endif()
468
if(J9VM_MODULE_GC_MODRON_STARTUP)
469
add_subdirectory(gc_modron_startup)
470
endif()
471
if(J9VM_MODULE_GC_REALTIME)
472
add_subdirectory(gc_realtime)
473
endif()
474
if(J9VM_MODULE_GC_STATS)
475
add_subdirectory(gc_stats)
476
endif()
477
if(J9VM_MODULE_GC_STRUCTS)
478
add_subdirectory(gc_structs)
479
endif()
480
# NOTE this is not conditional in the UMA module.xml
481
add_subdirectory(gc_tests)
482
if(J9VM_MODULE_GC_TRACE)
483
add_subdirectory(gc_trace)
484
if(J9VM_MODULE_GC_MODRON_STANDARD)
485
add_subdirectory(gc_trace_standard)
486
endif()
487
if(J9VM_GC_VLHGC)
488
add_subdirectory(gc_trace_vlhgc)
489
endif()
490
endif()
491
if(J9VM_GC_REALTIME)
492
add_subdirectory(gc_verbose_handler_realtime)
493
endif()
494
if(J9VM_GC_MODRON_STANDARD)
495
add_subdirectory(gc_verbose_handler_standard_java)
496
endif()
497
if(J9VM_GC_VLHGC)
498
add_subdirectory(gc_verbose_handler_vlhgc)
499
endif()
500
# NOTE this is not conditional in the UMA module.xml
501
add_subdirectory(gc_verbose_java)
502
add_subdirectory(gc_verbose_old)
503
add_subdirectory(gc_verbose_old_events)
504
if(J9VM_GC_VLHGC)
505
add_subdirectory(gc_vlhgc)
506
endif()
507
if(J9VM_MODULE_GCCHK)
508
add_subdirectory(gcchk)
509
endif()
510
if(J9VM_MODULE_HOOKABLE)
511
add_subdirectory(hookable)
512
endif()
513
if(J9VM_MODULE_J9VM)
514
add_subdirectory(j9vm)
515
endif()
516
if(J9VM_ZOS_3164_INTEROPERABILITY)
517
add_subdirectory(j9vm31)
518
endif()
519
# NOTE this is not conditional in the UMA module.xml
520
add_subdirectory(jcl)
521
if(J9VM_MODULE_JEXTRACTNATIVES)
522
add_subdirectory(jextractnatives)
523
endif()
524
# NOTE this is not conditional in the UMA module.xml
525
add_subdirectory(jilgen)
526
if(J9VM_MODULE_J9JIT_VM)
527
add_subdirectory(jit_vm)
528
endif()
529
if(J9VM_MODULE_JNICHK)
530
add_subdirectory(jnichk)
531
endif()
532
if(J9VM_MODULE_JNIINV)
533
add_subdirectory(jniinv)
534
endif()
535
add_subdirectory(jsigWrapper)
536
if(J9VM_MODULE_JVMTI)
537
add_subdirectory(jvmti)
538
endif()
539
# NOTE this is not conditional in the UMA module.xml
540
add_subdirectory(libffi)
541
add_subdirectory(mgmt)
542
if(J9VM_MODULE_PORT)
543
add_subdirectory(port)
544
endif()
545
if(J9VM_MODULE_RASDUMP)
546
add_subdirectory(rasdump)
547
endif()
548
if(J9VM_MODULE_RASTRACE)
549
add_subdirectory(rastrace)
550
endif()
551
if(J9VM_MODULE_J9VM)
552
add_subdirectory(redirector)
553
endif()
554
add_subdirectory(runtimetools)
555
if(J9VM_MODULE_SHARED)
556
add_subdirectory(shared)
557
endif()
558
if(J9VM_MODULE_SHARED_COMMON)
559
add_subdirectory(shared_common)
560
endif()
561
if(J9VM_MODULE_SHARED_UTIL)
562
add_subdirectory(shared_util)
563
endif()
564
if(J9VM_MODULE_SIMPLEPOOL)
565
add_subdirectory(simplepool)
566
endif()
567
if(J9VM_MODULE_STACKMAP)
568
add_subdirectory(stackmap)
569
endif()
570
if(J9VM_OPT_SIDECAR)
571
add_subdirectory(sunvmi)
572
endif()
573
if(J9VM_MODULE_THREAD)
574
add_subdirectory(thread)
575
endif()
576
if(J9VM_INTERP_NATIVE_SUPPORT AND NOT OMR_ARCH_RISCV)
577
add_subdirectory(compiler)
578
endif()
579
if(J9VM_MODULE_UTIL)
580
add_subdirectory(util)
581
endif()
582
# NOTE this is not conditional in the UMA module.xml
583
add_subdirectory(util_core)
584
if(J9VM_MODULE_VERBOSE)
585
add_subdirectory(verbose)
586
endif()
587
if(J9VM_MODULE_VERUTIL)
588
add_subdirectory(verutil)
589
endif()
590
if(J9VM_MODULE_VM)
591
add_subdirectory(vm)
592
endif()
593
add_subdirectory(vmchk)
594
# TODO: need to add windows support
595
if(J9VM_MODULE_ZIP)
596
add_subdirectory(zip)
597
endif()
598
if(J9VM_MODULE_ZLIB)
599
add_subdirectory(zlib)
600
endif()
601
602
add_subdirectory(tests)
603
604
if (J9VM_OPT_JITSERVER)
605
add_subdirectory(jitserver_launcher)
606
endif()
607
608
# This needs to stay at the end of this file to allow the vendor code to modify any of our targets
609
if(J9VM_VENDOR_DIR)
610
add_subdirectory("${J9VM_VENDOR_DIR}/runtime" vendor)
611
endif()
612
613