-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCMakeLists.txt
38 lines (32 loc) · 2.11 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
cmake_minimum_required(VERSION 3.30)
project(jvmcc)
set(CMAKE_CXX_FLAGS "-std=c++23 -m64 -pedantic -Wfatal-errors\
-Wall -Wextra -Wcomment -Wshadow -Wwrite-strings -Wpointer-arith \
-Wunreachable-code -Wreturn-type -Wcast-qual \
-Wswitch-default -Wswitch-enum -Wuninitialized -Winit-self \
-Wparentheses -Wunused-macros")
set (SOURCE_FILES src/init.cpp src/jvm.cpp src/jni.cpp src/native/init_native.cpp src/native/unsafe.cpp
src/jmm.cpp src/interpreter.cpp src/classfile/descriptor.cpp src/classfile/module.cpp
src/encoding.cpp src/classfile/poly.cpp src/reference.cpp
src/runtime/thread.cpp src/runtime/heap.cpp src/dll.cpp src/classfile/method.cpp
src/classfile/field.cpp src/classfile/constant_pool.cpp
src/classfile/class_loader.cpp src/primitive.cpp
src/object/object.cpp src/object/array.cpp src/object/string.cpp src/object/box.cpp
src/object/reflect.cpp src/classfile/class.cpp src/classfile/array_class.cpp src/exception.cpp
src/classfile/invoke.cpp src/convert.cpp
src/os/windows.cpp src/os/linux.cpp src/native/method_handle_natives.cpp
src/native/scoped_memory_access.cpp src/native/var_handle.cpp src/native/method_handle.cpp
src/slot.cpp src/object/allocator.cpp)
# 这里生成 jvm.dll
# jdk/bin/zip.dll 和 jdk/bin/java.dll 均依赖此dll
# 如果加载以上两个dll失败,可以用‘Dependency Walker’之类的工具查看下这两个dll所依赖的函数在jvm.dll中是否实现。
# 如果有函数没有实现,可以在jvm.cpp中实现之。
# 如果有Debug加载zip.dll和java.dll成功,而Release版失败的情况,可以考虑下是不是Release版是不是把jvm.cpp中没有使用的函数优化掉了。
# 总之一句话,无论Debug版还是Release版jvm.dll中导出所有zip.dll和java.dll中所依赖的函数。
add_library(jvm SHARED ${SOURCE_FILES})
SET_TARGET_PROPERTIES(jvm PROPERTIES OUTPUT_NAME "jvm" PREFIX "")
# 生成可运行的虚拟机
add_executable(jvmcc src/vm_client.cpp)
target_link_libraries(jvmcc jvm)
add_executable(test test.cpp)
target_link_libraries(test jvm)