-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
80 lines (63 loc) · 1.82 KB
/
CMakeLists.txt
File metadata and controls
80 lines (63 loc) · 1.82 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
cmake_minimum_required(VERSION 3.16)
project(zyrox DESCRIPTION "Zyrox llvm pass")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(LLVM 18.1.3 CONFIG REQUIRED)
add_library(zyrox SHARED
src/ZyroxPlugin.cpp
src/core/ZyroxCore.cpp
src/core/ZyroxPassOptions.cpp
src/core/ZyroxMetaData.cpp
src/quickjs/QuickRt.cpp
src/quickjs/QuickConfig.cpp
src/util/BasicBlockUtils.cpp
src/util/FunctionUtils.cpp
src/util/OpaqueTransformer.cpp
src/util/ModuleUtils.cpp
src/util/HashUtils.cpp
src/util/CryptoUtils.cpp
src/util/Random.cpp
src/passes/BasicBlockSplitter.cpp
src/passes/MBASub.cpp
src/passes/IndirectBranch.cpp
src/passes/ControlFlowFlattening.cpp
src/passes/SimpleIndirectBranch.cpp
src/passes/StringEncryption.cpp
)
target_include_directories(zyrox PRIVATE
${LLVM_INCLUDE_DIRS}
include
)
target_compile_options(zyrox PRIVATE
-iquote ${CMAKE_CURRENT_LIST_DIR}/deps/quickjs
)
if(APPLE)
llvm_map_components_to_libnames(LLVM_LIBS
Core
Support
Analysis
TransformUtils
IRReader
Linker
)
set_target_properties(zyrox PROPERTIES
MACOSX_RPATH ON
INSTALL_NAME_DIR "@rpath"
)
endif()
set(ZYROX_ROOT ${CMAKE_CURRENT_LIST_DIR})
set(QUICKJS_SRC_DIR ${ZYROX_ROOT}/deps/quickjs)
set(QUICKJS_CMAKE_SRC ${ZYROX_ROOT}/cmake/quickjs.cmake)
set(QUICKJS_CMAKE_DST ${QUICKJS_SRC_DIR}/CMakeLists.txt)
if(NOT EXISTS ${QUICKJS_CMAKE_DST})
file(COPY ${QUICKJS_CMAKE_SRC}
DESTINATION ${QUICKJS_SRC_DIR})
file(RENAME
${QUICKJS_SRC_DIR}/quickjs.cmake
${QUICKJS_CMAKE_DST})
endif()
add_subdirectory(deps/quickjs)
target_link_libraries(zyrox PRIVATE
quickjs
${LLVM_LIBS}
)