Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/jcl/CMakeLists.txt
5986 views
1
################################################################################
2
# Copyright (c) 2017, 2021 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
set(J9VM_JCL_BIN_DIR "${CMAKE_CURRENT_BINARY_DIR}")
24
25
add_tracegen(j9jcl.tdf)
26
27
j9vm_add_library(jclse SHARED
28
OUTPUT_NAME jclse${J9VM_VERSION_SUFFIX}
29
${CMAKE_CURRENT_BINARY_DIR}/ut_j9jcl.c
30
)
31
32
target_include_directories(jclse
33
PRIVATE
34
${CMAKE_CURRENT_SOURCE_DIR}
35
${CMAKE_CURRENT_SOURCE_DIR}/common
36
${j9vm_SOURCE_DIR}/shared_common/include
37
${CMAKE_CURRENT_BINARY_DIR}
38
)
39
40
if(OMR_OS_WINDOWS)
41
target_include_directories(jclse INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/win32)
42
else()
43
target_include_directories(jclse INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/unix)
44
endif()
45
46
# Generate constant pool files
47
set(CONST_POOL_OUT_DIR "${j9vm_BINARY_DIR}")
48
49
# List of files generated by J9VMCPTool
50
set(gen_constpool_files "${CONST_POOL_OUT_DIR}/j9vmconstantpool.c")
51
if(OMR_OS_WINDOWS)
52
set(JAVA_PATH_SEP ";")
53
else()
54
set(JAVA_PATH_SEP ":")
55
endif()
56
57
# Dump the current cmake cache to text file
58
# We could just use CMakeCache.txt, but this way filters out advanced/internal variables and comments
59
add_custom_command(
60
OUTPUT parsed_cache.txt
61
COMMAND "${CMAKE_COMMAND}" -N -L > "${CMAKE_CURRENT_BINARY_DIR}/parsed_cache.txt"
62
VERBATIM
63
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
64
)
65
add_custom_command(
66
OUTPUT
67
${gen_constpool_files}
68
COMMAND "${Java_JAVA_EXECUTABLE}"
69
-cp "$<TARGET_PROPERTY:j9vmcp,JAR_FILE>${JAVA_PATH_SEP}$<TARGET_PROPERTY:objectmodel,JAR_FILE>"
70
com.ibm.oti.VMCPTool.Main
71
-rootDir "${j9vm_SOURCE_DIR}"
72
-outputDir "${CONST_POOL_OUT_DIR}"
73
-cmakeCache "${CMAKE_CURRENT_BINARY_DIR}/parsed_cache.txt"
74
-version ${JAVA_SPEC_VERSION}
75
VERBATIM
76
DEPENDS
77
${j9vm_SOURCE_DIR}/oti/vmconstantpool.xml
78
"${CMAKE_CURRENT_BINARY_DIR}/parsed_cache.txt"
79
j9vmcp
80
objectmodel
81
)
82
add_custom_target(run_cptool
83
DEPENDS ${gen_constpool_files}
84
)
85
add_dependencies(j9vm_interface run_cptool)
86
set(cp_file_name ${CONST_POOL_OUT_DIR}/j9vmconstantpool.c)
87
set_source_files_properties(${cp_file_name} PROPERTIES GENERATED TRUE)
88
target_sources(jclse PRIVATE ${cp_file_name})
89
90
target_link_libraries(jclse
91
PRIVATE
92
j9vm_interface
93
j9vm_gc_includes
94
95
omrsig
96
j9hookable
97
j9zlib
98
j9util
99
j9utilcore
100
j9avl
101
j9hashtable
102
j9pool
103
j9thr
104
sunvmi
105
)
106
107
target_sources(jclse
108
PRIVATE
109
${CMAKE_CURRENT_SOURCE_DIR}/common/acccont.c
110
${CMAKE_CURRENT_SOURCE_DIR}/common/annparser.c
111
${CMAKE_CURRENT_SOURCE_DIR}/common/attach.c
112
${CMAKE_CURRENT_SOURCE_DIR}/common/bootstrp.c
113
${CMAKE_CURRENT_SOURCE_DIR}/common/bpinit.c
114
${CMAKE_CURRENT_SOURCE_DIR}/common/clsldr.cpp
115
${CMAKE_CURRENT_SOURCE_DIR}/common/com_ibm_jvm_Stats.c
116
${CMAKE_CURRENT_SOURCE_DIR}/common/com_ibm_oti_vm_VM.c
117
${CMAKE_CURRENT_SOURCE_DIR}/common/compiler.c
118
${CMAKE_CURRENT_SOURCE_DIR}/common/dump.c
119
${CMAKE_CURRENT_SOURCE_DIR}/common/exhelp
120
${CMAKE_CURRENT_SOURCE_DIR}/common/extendedosmbean.c
121
${CMAKE_CURRENT_SOURCE_DIR}/common/getstacktrace
122
${CMAKE_CURRENT_SOURCE_DIR}/common/gpu.c
123
${CMAKE_CURRENT_SOURCE_DIR}/common/iohelp.c
124
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_Access.c
125
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_Class.cpp
126
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_J9VMInternals.cpp
127
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_ref_Finalizer.c
128
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_ref_Reference.cpp
129
${CMAKE_CURRENT_SOURCE_DIR}/common/jclcinit.c
130
${CMAKE_CURRENT_SOURCE_DIR}/common/jcldefine.c
131
${CMAKE_CURRENT_SOURCE_DIR}/common/jclexception.cpp
132
${CMAKE_CURRENT_SOURCE_DIR}/common/jclglob.c
133
${CMAKE_CURRENT_SOURCE_DIR}/common/jclreflect.c
134
${CMAKE_CURRENT_SOURCE_DIR}/common/jcltrace.c
135
${CMAKE_CURRENT_SOURCE_DIR}/common/jclvm.c
136
${CMAKE_CURRENT_SOURCE_DIR}/common/jithelpers.c
137
${CMAKE_CURRENT_SOURCE_DIR}/common/jniidcacheinit.c
138
${CMAKE_CURRENT_SOURCE_DIR}/common/log.c
139
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtclassloading.c
140
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtcompilation.c
141
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtgc.c
142
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmthypervisor.c
143
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtinit.c
144
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtmemmgr.c
145
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtmemory.c
146
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtmempool.c
147
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtos.c
148
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtosext.c
149
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtruntime.c
150
${CMAKE_CURRENT_SOURCE_DIR}/common/mgmtthread.c
151
${CMAKE_CURRENT_SOURCE_DIR}/common/orbvmhelpers.c
152
${CMAKE_CURRENT_SOURCE_DIR}/common/proxy.c
153
${CMAKE_CURRENT_SOURCE_DIR}/common/reflecthelp.c
154
${CMAKE_CURRENT_SOURCE_DIR}/common/shared.c
155
${CMAKE_CURRENT_SOURCE_DIR}/common/sigquit.c
156
${CMAKE_CURRENT_SOURCE_DIR}/common/stdinit
157
${CMAKE_CURRENT_SOURCE_DIR}/common/sun_misc_Perf.c
158
${CMAKE_CURRENT_SOURCE_DIR}/common/sun_misc_Unsafe.cpp
159
${CMAKE_CURRENT_SOURCE_DIR}/common/sun_reflect_ConstantPool.c
160
${CMAKE_CURRENT_SOURCE_DIR}/common/system.c
161
${CMAKE_CURRENT_SOURCE_DIR}/common/thread.cpp
162
${CMAKE_CURRENT_SOURCE_DIR}/common/unsafe_mem.c
163
${CMAKE_CURRENT_SOURCE_DIR}/common/vminternals.c
164
${CMAKE_CURRENT_SOURCE_DIR}/common/vm_scar.c
165
${CMAKE_CURRENT_SOURCE_DIR}/filesys/vmfilesys.c
166
)
167
168
if(OMR_OS_WINDOWS)
169
target_sources(jclse PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/win32/syshelp.c)
170
else()
171
target_sources(jclse PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/unix/syshelp.c)
172
endif()
173
174
if(J9VM_OPT_METHOD_HANDLE)
175
target_sources(jclse
176
PRIVATE
177
${CMAKE_CURRENT_SOURCE_DIR}/common/java_dyn_methodhandle.c
178
${CMAKE_CURRENT_SOURCE_DIR}/common/java_dyn_methodtype.c
179
)
180
endif()
181
182
if(J9VM_OPT_OPENJDK_METHODHANDLE OR J9VM_OPT_METHOD_HANDLE)
183
target_sources(jclse
184
PRIVATE
185
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_invoke_MethodHandleNatives.cpp
186
)
187
endif()
188
189
if(JAVA_SPEC_VERSION EQUAL 8)
190
# sources for Java 8 only
191
target_sources(jclse
192
PRIVATE
193
${CMAKE_CURRENT_SOURCE_DIR}/common/sun_misc_URLClassPath.c
194
)
195
endif()
196
197
# We'd like to use GREATER_EQUAL here (and below), but that operator requires
198
# cmake version 3.7 or better; the minimum version we require is 3.4.
199
if(NOT JAVA_SPEC_VERSION LESS 9)
200
# sources for Java 9+
201
target_sources(jclse
202
PRIVATE
203
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_invoke_VarHandle.c
204
${CMAKE_CURRENT_SOURCE_DIR}/common/java_lang_StackWalker.cpp
205
)
206
endif()
207
208
# We'd like to use GREATER_EQUAL here (and below), but that operator requires
209
# cmake version 3.7 or better; the minimum version we require is 3.4.
210
if(NOT JAVA_SPEC_VERSION LESS 16)
211
# sources for Java 16+
212
target_sources(jclse
213
PRIVATE
214
${CMAKE_CURRENT_SOURCE_DIR}/common/jdk_internal_misc_ScopedMemoryAccess.cpp
215
${CMAKE_CURRENT_SOURCE_DIR}/common/vectornatives.cpp
216
)
217
endif()
218
219
include(exports.cmake)
220
221
target_enable_ddr(jclse)
222
ddr_set_add_targets(j9ddr jclse)
223
224
install(
225
TARGETS jclse
226
LIBRARY DESTINATION ${j9vm_SOURCE_DIR}
227
RUNTIME DESTINATION ${j9vm_SOURCE_DIR}
228
)
229
230