-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
65 lines (57 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
cmake_minimum_required(VERSION 3.13)
project(jvm)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (MSVC)
add_compile_options(/utf-8)
if (VCPKG_TARGET_TRIPLET STREQUAL "x64-windows-static")
set(CMAKE_CXX_FLAGS_DEBUG /MTd)
set(CMAKE_CXX_FLAGS_MINSIZEREL /MT)
set(CMAKE_CXX_FLAGS_RELEASE /MT)
set(CMAKE_CXX_FLAGS_RELWITHDEBUGINFO /MT)
endif ()
endif ()
include_directories(src)
add_library(jvm)
target_sources(jvm PRIVATE
src/jvm/AccessFlags.h
src/jvm/Class.h
src/jvm/Class.cc
src/jvm/Class_Conv.cc
src/jvm/Class_Parse.cc
src/jvm/ClassLoader.h
src/jvm/ClassLoader.cc
src/jvm/Opcode.h
src/jvm/Runtime.h
src/jvm/Runtime.cc
src/jvm/Type.h
src/jvm/Type.cc
)
find_package(Sese CONFIG REQUIRED)
target_link_libraries(jvm PUBLIC Sese::Core)
add_executable(runner)
target_sources(runner PRIVATE
src/runner/Entry.cpp
)
target_link_libraries(runner PUBLIC jvm)
add_executable(test)
target_sources(test PRIVATE
src/test/Main.cpp
src/test/TestClass.cpp
src/test/TestRuntime.cpp
)
target_link_libraries(test PUBLIC jvm)
find_package(GTest CONFIG REQUIRED)
target_link_libraries(test PRIVATE GTest::gtest)
add_custom_command(
TARGET test
POST_BUILD
COMMAND javac "${CMAKE_SOURCE_DIR}/src/test/resource/Hello.java"
COMMAND javac "${CMAKE_SOURCE_DIR}/src/test/resource/World.java"
COMMAND javac "${CMAKE_SOURCE_DIR}/src/test/resource/PrimeCalculator.java"
COMMAND javac "${CMAKE_SOURCE_DIR}/src/test/resource/PiCalculator.java"
)
target_compile_definitions(test PRIVATE "PATH_TO_HELLO_CLASS=\"${CMAKE_SOURCE_DIR}/src/test/resource/Hello.class\"")
target_compile_definitions(test PRIVATE "PATH_TO_WORLD_CLASS=\"${CMAKE_SOURCE_DIR}/src/test/resource/World.class\"")
target_compile_definitions(test PRIVATE "PATH_TO_PRIME_CALCULATOR_CLASS=\"${CMAKE_SOURCE_DIR}/src/test/resource/PrimeCalculator.class\"")
target_compile_definitions(test PRIVATE "PATH_TO_PI_CALCULATOR_CLASS=\"${CMAKE_SOURCE_DIR}/src/test/resource/PiCalculator.class\"")