|
|
|
@ -26,7 +26,7 @@ option(Plugin.SymbolResolver "Enable symbol resolver" ON)
|
|
|
|
|
|
|
|
|
|
option(Plugin.ImportTableReplace "Enable import table replace " OFF)
|
|
|
|
|
|
|
|
|
|
option(Plugin.Android.BionicLinkerUtil "Enable android bionic linker util" OFF)
|
|
|
|
|
option(Plugin.Android.BionicLinkerUtil "Enable android bionic linker util" ON)
|
|
|
|
|
|
|
|
|
|
option(DOBBY_BUILD_EXAMPLE "Build example" OFF)
|
|
|
|
|
|
|
|
|
@ -38,7 +38,7 @@ option(DOBBY_BUILD_KERNEL_MODE "Build xnu kernel mode" OFF)
|
|
|
|
|
option(Private.Obfuscation "Enable llvm obfuscation" OFF)
|
|
|
|
|
|
|
|
|
|
if ((NOT DEFINED CMAKE_BUILD_TYPE) OR (CMAKE_BUILD_TYPE STREQUAL "Debug"))
|
|
|
|
|
set(DOBBY_DEBUG ON)
|
|
|
|
|
set(DOBBY_DEBUG ON)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -46,17 +46,17 @@ set(compile_definitions "")
|
|
|
|
|
|
|
|
|
|
# for arm64, allow access q8 - q31
|
|
|
|
|
if (FullFloatingPointRegisterPack)
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DFULL_FLOATING_POINT_REGISTER_PACK")
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DFULL_FLOATING_POINT_REGISTER_PACK")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
if (DOBBY_BUILD_KERNEL_MODE)
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DBUILDING_KERNEL")
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DBUILDING_KERNEL")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
if (DOBBY_DEBUG)
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DDOBBY_DEBUG")
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DDOBBY_DEBUG")
|
|
|
|
|
else ()
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DDOBBY_LOGGING_DISABLE")
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DDOBBY_LOGGING_DISABLE")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
if (CMAKE_GENERATOR STREQUAL Xcode)
|
|
|
|
@ -79,166 +79,166 @@ message(STATUS "[Dobby] Private.Obfuscation: ${Private.Obfuscation}")
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
include_directories(
|
|
|
|
|
.
|
|
|
|
|
./include
|
|
|
|
|
./source
|
|
|
|
|
source/dobby
|
|
|
|
|
.
|
|
|
|
|
./include
|
|
|
|
|
./source
|
|
|
|
|
source/dobby
|
|
|
|
|
|
|
|
|
|
./external
|
|
|
|
|
./external/logging
|
|
|
|
|
./external
|
|
|
|
|
./external/logging
|
|
|
|
|
|
|
|
|
|
./builtin-plugin
|
|
|
|
|
./builtin-plugin
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if (SYSTEM.Darwin AND (NOT DOBBY_BUILD_KERNEL_MODE))
|
|
|
|
|
include_directories(
|
|
|
|
|
source/Backend/UserMode
|
|
|
|
|
)
|
|
|
|
|
include_directories(
|
|
|
|
|
source/Backend/UserMode
|
|
|
|
|
)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
set(DOBBY_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
# cpu
|
|
|
|
|
source/core/arch/CpuFeature.cc
|
|
|
|
|
source/core/arch/CpuRegister.cc
|
|
|
|
|
# cpu
|
|
|
|
|
source/core/arch/CpuFeature.cc
|
|
|
|
|
source/core/arch/CpuRegister.cc
|
|
|
|
|
|
|
|
|
|
# assembler
|
|
|
|
|
source/core/assembler/assembler.cc
|
|
|
|
|
source/core/assembler/assembler-arm.cc
|
|
|
|
|
source/core/assembler/assembler-arm64.cc
|
|
|
|
|
source/core/assembler/assembler-ia32.cc
|
|
|
|
|
source/core/assembler/assembler-x64.cc
|
|
|
|
|
# assembler
|
|
|
|
|
source/core/assembler/assembler.cc
|
|
|
|
|
source/core/assembler/assembler-arm.cc
|
|
|
|
|
source/core/assembler/assembler-arm64.cc
|
|
|
|
|
source/core/assembler/assembler-ia32.cc
|
|
|
|
|
source/core/assembler/assembler-x64.cc
|
|
|
|
|
|
|
|
|
|
# codegen
|
|
|
|
|
source/core/codegen/codegen-arm.cc
|
|
|
|
|
source/core/codegen/codegen-arm64.cc
|
|
|
|
|
source/core/codegen/codegen-ia32.cc
|
|
|
|
|
source/core/codegen/codegen-x64.cc
|
|
|
|
|
# codegen
|
|
|
|
|
source/core/codegen/codegen-arm.cc
|
|
|
|
|
source/core/codegen/codegen-arm64.cc
|
|
|
|
|
source/core/codegen/codegen-ia32.cc
|
|
|
|
|
source/core/codegen/codegen-x64.cc
|
|
|
|
|
|
|
|
|
|
# memory kit
|
|
|
|
|
source/MemoryAllocator/CodeBuffer/CodeBufferBase.cc
|
|
|
|
|
source/MemoryAllocator/AssemblyCodeBuilder.cc
|
|
|
|
|
source/MemoryAllocator/MemoryAllocator.cc
|
|
|
|
|
# memory kit
|
|
|
|
|
source/MemoryAllocator/CodeBuffer/CodeBufferBase.cc
|
|
|
|
|
source/MemoryAllocator/AssemblyCodeBuilder.cc
|
|
|
|
|
source/MemoryAllocator/MemoryAllocator.cc
|
|
|
|
|
|
|
|
|
|
# instruction relocation
|
|
|
|
|
source/InstructionRelocation/arm/InstructionRelocationARM.cc
|
|
|
|
|
source/InstructionRelocation/arm64/InstructionRelocationARM64.cc
|
|
|
|
|
source/InstructionRelocation/x86/InstructionRelocationX86.cc
|
|
|
|
|
source/InstructionRelocation/x86/InstructionRelocationX86Shared.cc
|
|
|
|
|
source/InstructionRelocation/x64/InstructionRelocationX64.cc
|
|
|
|
|
source/InstructionRelocation/x86/x86_insn_decode/x86_insn_decode.c
|
|
|
|
|
# instruction relocation
|
|
|
|
|
source/InstructionRelocation/arm/InstructionRelocationARM.cc
|
|
|
|
|
source/InstructionRelocation/arm64/InstructionRelocationARM64.cc
|
|
|
|
|
source/InstructionRelocation/x86/InstructionRelocationX86.cc
|
|
|
|
|
source/InstructionRelocation/x86/InstructionRelocationX86Shared.cc
|
|
|
|
|
source/InstructionRelocation/x64/InstructionRelocationX64.cc
|
|
|
|
|
source/InstructionRelocation/x86/x86_insn_decode/x86_insn_decode.c
|
|
|
|
|
|
|
|
|
|
# intercept routing
|
|
|
|
|
source/InterceptRouting/InterceptRouting.cpp
|
|
|
|
|
# intercept routing
|
|
|
|
|
source/InterceptRouting/InterceptRouting.cpp
|
|
|
|
|
|
|
|
|
|
# intercept routing trampoline
|
|
|
|
|
source/TrampolineBridge/Trampoline/arm/trampoline_arm.cc
|
|
|
|
|
source/TrampolineBridge/Trampoline/arm64/trampoline_arm64.cc
|
|
|
|
|
source/TrampolineBridge/Trampoline/x86/trampoline_x86.cc
|
|
|
|
|
source/TrampolineBridge/Trampoline/x64/trampoline_x64.cc
|
|
|
|
|
# intercept routing trampoline
|
|
|
|
|
source/TrampolineBridge/Trampoline/arm/trampoline_arm.cc
|
|
|
|
|
source/TrampolineBridge/Trampoline/arm64/trampoline_arm64.cc
|
|
|
|
|
source/TrampolineBridge/Trampoline/x86/trampoline_x86.cc
|
|
|
|
|
source/TrampolineBridge/Trampoline/x64/trampoline_x64.cc
|
|
|
|
|
|
|
|
|
|
# closure trampoline bridge - arm
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/common_bridge_handler.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm/helper_arm.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm/closure_bridge_arm.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm/ClosureTrampolineARM.cc
|
|
|
|
|
# closure trampoline bridge - arm64
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm64/helper_arm64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm64/closure_bridge_arm64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm64/ClosureTrampolineARM64.cc
|
|
|
|
|
# closure trampoline bridge - x86
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x86/helper_x86.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x86/closure_bridge_x86.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x86/ClosureTrampolineX86.cc
|
|
|
|
|
# closure trampoline bridge - x64
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x64/helper_x64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x64/closure_bridge_x64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x64/ClosureTrampolineX64.cc
|
|
|
|
|
# closure trampoline bridge - arm
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/common_bridge_handler.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm/helper_arm.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm/closure_bridge_arm.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm/ClosureTrampolineARM.cc
|
|
|
|
|
# closure trampoline bridge - arm64
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm64/helper_arm64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm64/closure_bridge_arm64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/arm64/ClosureTrampolineARM64.cc
|
|
|
|
|
# closure trampoline bridge - x86
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x86/helper_x86.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x86/closure_bridge_x86.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x86/ClosureTrampolineX86.cc
|
|
|
|
|
# closure trampoline bridge - x64
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x64/helper_x64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x64/closure_bridge_x64.cc
|
|
|
|
|
source/TrampolineBridge/ClosureTrampolineBridge/x64/ClosureTrampolineX64.cc
|
|
|
|
|
|
|
|
|
|
source/InterceptRouting/Routing/InstructionInstrument/InstructionInstrument.cc
|
|
|
|
|
source/InterceptRouting/Routing/InstructionInstrument/RoutingImpl.cc
|
|
|
|
|
source/InterceptRouting/Routing/InstructionInstrument/instrument_routing_handler.cc
|
|
|
|
|
source/InterceptRouting/Routing/InstructionInstrument/InstructionInstrument.cc
|
|
|
|
|
source/InterceptRouting/Routing/InstructionInstrument/RoutingImpl.cc
|
|
|
|
|
source/InterceptRouting/Routing/InstructionInstrument/instrument_routing_handler.cc
|
|
|
|
|
|
|
|
|
|
source/InterceptRouting/Routing/FunctionInlineHook/FunctionInlineHook.cc
|
|
|
|
|
source/InterceptRouting/Routing/FunctionInlineHook/RoutingImpl.cc
|
|
|
|
|
source/InterceptRouting/Routing/FunctionInlineHook/FunctionInlineHook.cc
|
|
|
|
|
source/InterceptRouting/Routing/FunctionInlineHook/RoutingImpl.cc
|
|
|
|
|
|
|
|
|
|
# plugin register
|
|
|
|
|
source/InterceptRouting/RoutingPlugin/RoutingPlugin.cc
|
|
|
|
|
# plugin register
|
|
|
|
|
source/InterceptRouting/RoutingPlugin/RoutingPlugin.cc
|
|
|
|
|
|
|
|
|
|
# main
|
|
|
|
|
source/dobby.cpp
|
|
|
|
|
source/Interceptor.cpp
|
|
|
|
|
source/InterceptEntry.cpp
|
|
|
|
|
)
|
|
|
|
|
# main
|
|
|
|
|
source/dobby.cpp
|
|
|
|
|
source/Interceptor.cpp
|
|
|
|
|
source/InterceptEntry.cpp
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (SYSTEM.Darwin AND NOT DOBBY_BUILD_KERNEL_MODE)
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/PlatformUtil/Darwin/ProcessRuntimeUtility.cc
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/PlatformUtil/Darwin/ProcessRuntimeUtility.cc
|
|
|
|
|
|
|
|
|
|
source/Backend/UserMode/UnifiedInterface/platform-posix.cc
|
|
|
|
|
source/Backend/UserMode/UnifiedInterface/platform-posix.cc
|
|
|
|
|
|
|
|
|
|
source/Backend/UserMode/ExecMemory/code-patch-tool-darwin.cc
|
|
|
|
|
source/Backend/UserMode/ExecMemory/clear-cache-tool-all.c
|
|
|
|
|
)
|
|
|
|
|
source/Backend/UserMode/ExecMemory/code-patch-tool-darwin.cc
|
|
|
|
|
source/Backend/UserMode/ExecMemory/clear-cache-tool-all.c
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
elseif (SYSTEM.Linux OR SYSTEM.Android)
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/PlatformUtil/Linux/ProcessRuntimeUtility.cc
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/PlatformUtil/Linux/ProcessRuntimeUtility.cc
|
|
|
|
|
|
|
|
|
|
source/Backend/UserMode/UnifiedInterface/platform-posix.cc
|
|
|
|
|
source/Backend/UserMode/UnifiedInterface/platform-posix.cc
|
|
|
|
|
|
|
|
|
|
source/Backend/UserMode/ExecMemory/code-patch-tool-posix.cc
|
|
|
|
|
source/Backend/UserMode/ExecMemory/clear-cache-tool-all.c
|
|
|
|
|
)
|
|
|
|
|
source/Backend/UserMode/ExecMemory/code-patch-tool-posix.cc
|
|
|
|
|
source/Backend/UserMode/ExecMemory/clear-cache-tool-all.c
|
|
|
|
|
)
|
|
|
|
|
elseif (SYSTEM.Windows)
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/PlatformUtil/Windows/ProcessRuntimeUtility.cc
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/PlatformUtil/Windows/ProcessRuntimeUtility.cc
|
|
|
|
|
|
|
|
|
|
source/Backend/UserMode/UnifiedInterface/platform-windows.cc
|
|
|
|
|
source/Backend/UserMode/UnifiedInterface/platform-windows.cc
|
|
|
|
|
|
|
|
|
|
source/Backend/UserMode/ExecMemory/code-patch-tool-windows.cc
|
|
|
|
|
source/Backend/UserMode/ExecMemory/clear-cache-tool-all.c
|
|
|
|
|
)
|
|
|
|
|
source/Backend/UserMode/ExecMemory/code-patch-tool-windows.cc
|
|
|
|
|
source/Backend/UserMode/ExecMemory/clear-cache-tool-all.c
|
|
|
|
|
)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
if (PROCESSOR.X86_64 OR PROCESSOR.X86)
|
|
|
|
|
set(NearBranch ON)
|
|
|
|
|
set(NearBranch ON)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (0 AND SYSTEM.iOS AND (NOT DOBBY_BUILD_KERNEL_MODE))
|
|
|
|
|
include_directories(
|
|
|
|
|
source/Backend/UserMode/ExecMemory/substrated
|
|
|
|
|
)
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DCODE_PATCH_WITH_SUBSTRATED")
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/ExecMemory/substrated/mach_interface_support
|
|
|
|
|
include_directories(
|
|
|
|
|
source/Backend/UserMode/ExecMemory/substrated
|
|
|
|
|
)
|
|
|
|
|
set(compile_definitions "${compile_definitions} -DCODE_PATCH_WITH_SUBSTRATED")
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/Backend/UserMode/ExecMemory/substrated/mach_interface_support
|
|
|
|
|
)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ----- instrument -----
|
|
|
|
|
|
|
|
|
|
if (FunctionWrapper)
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
# user mode - multi thread support
|
|
|
|
|
# source/UserMode/MultiThreadSupport/ThreadSupport.cpp
|
|
|
|
|
# source/UserMode/Thread/PlatformThread.cc
|
|
|
|
|
# source/UserMode/Thread/platform-thread-${platform1}.cc
|
|
|
|
|
)
|
|
|
|
|
message(FATAL_ERROR "[!] FunctionWrapper plugin is not supported")
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
# user mode - multi thread support
|
|
|
|
|
# source/UserMode/MultiThreadSupport/ThreadSupport.cpp
|
|
|
|
|
# source/UserMode/Thread/PlatformThread.cc
|
|
|
|
|
# source/UserMode/Thread/platform-thread-${platform1}.cc
|
|
|
|
|
)
|
|
|
|
|
message(FATAL_ERROR "[!] FunctionWrapper plugin is not supported")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (NearBranch)
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/InterceptRouting/RoutingPlugin/NearBranchTrampoline/near_trampoline_arm64.cc
|
|
|
|
|
source/InterceptRouting/RoutingPlugin/NearBranchTrampoline/NearBranchTrampoline.cc
|
|
|
|
|
source/MemoryAllocator/NearMemoryAllocator.cc)
|
|
|
|
|
set(dobby.SOURCE_FILE_LIST ${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
source/InterceptRouting/RoutingPlugin/NearBranchTrampoline/near_trampoline_arm64.cc
|
|
|
|
|
source/InterceptRouting/RoutingPlugin/NearBranchTrampoline/NearBranchTrampoline.cc
|
|
|
|
|
source/MemoryAllocator/NearMemoryAllocator.cc)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
@ -253,19 +253,19 @@ add_subdirectory(external/osbase)
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (Plugin.SymbolResolver)
|
|
|
|
|
include_directories(builtin-plugin/SymbolResolver)
|
|
|
|
|
add_subdirectory(builtin-plugin/SymbolResolver)
|
|
|
|
|
get_target_property(symbol_resolver.SOURCE_FILE_LIST dobby_symbol_resolver SOURCES)
|
|
|
|
|
set(dobby.plugin.SOURCE_FILE_LIST ${dobby.plugin.SOURCE_FILE_LIST}
|
|
|
|
|
${symbol_resolver.SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
include_directories(builtin-plugin/SymbolResolver)
|
|
|
|
|
add_subdirectory(builtin-plugin/SymbolResolver)
|
|
|
|
|
get_target_property(symbol_resolver.SOURCE_FILE_LIST dobby_symbol_resolver SOURCES)
|
|
|
|
|
set(dobby.plugin.SOURCE_FILE_LIST ${dobby.plugin.SOURCE_FILE_LIST}
|
|
|
|
|
${symbol_resolver.SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
set(dobby.HEADER_FILE_LIST
|
|
|
|
|
include/dobby.h
|
|
|
|
|
)
|
|
|
|
|
include/dobby.h
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
@ -273,15 +273,15 @@ set(dobby.HEADER_FILE_LIST
|
|
|
|
|
string(TIMESTAMP TODAY "%Y%m%d")
|
|
|
|
|
set(VERSION_REVISION "-${TODAY}")
|
|
|
|
|
if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
|
|
|
|
execute_process(
|
|
|
|
|
COMMAND git rev-parse --short --verify HEAD
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
|
|
|
OUTPUT_VARIABLE VERSION_COMMIT_HASH
|
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
|
)
|
|
|
|
|
if (VERSION_COMMIT_HASH)
|
|
|
|
|
set(VERSION_REVISION "${VERSION_REVISION}-${VERSION_COMMIT_HASH}")
|
|
|
|
|
endif ()
|
|
|
|
|
execute_process(
|
|
|
|
|
COMMAND git rev-parse --short --verify HEAD
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
|
|
|
OUTPUT_VARIABLE VERSION_COMMIT_HASH
|
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
|
)
|
|
|
|
|
if (VERSION_COMMIT_HASH)
|
|
|
|
|
set(VERSION_REVISION "${VERSION_REVISION}-${VERSION_COMMIT_HASH}")
|
|
|
|
|
endif ()
|
|
|
|
|
endif ()
|
|
|
|
|
set(DOBBY_BUILD_VERSION "Dobby${VERSION_REVISION}")
|
|
|
|
|
set(compile_definitions "${compile_definitions} -D__DOBBY_BUILD_VERSION__=\"${DOBBY_BUILD_VERSION}\"")
|
|
|
|
@ -290,95 +290,95 @@ message(STATUS "[Dobby] ${DOBBY_BUILD_VERSION}")
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
set(SOURCE_FILE_LIST
|
|
|
|
|
${dobby.HEADER_FILE_LIST}
|
|
|
|
|
${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
${logging.SOURCE_FILE_LIST}
|
|
|
|
|
${dobby.plugin.SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
${dobby.HEADER_FILE_LIST}
|
|
|
|
|
${dobby.SOURCE_FILE_LIST}
|
|
|
|
|
${logging.SOURCE_FILE_LIST}
|
|
|
|
|
${dobby.plugin.SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
get_absolute_path_list(SOURCE_FILE_LIST SOURCE_FILE_LIST_)
|
|
|
|
|
set(SOURCE_FILE_LIST ${SOURCE_FILE_LIST_})
|
|
|
|
|
|
|
|
|
|
add_library(dobby SHARED
|
|
|
|
|
${SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
${SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_include_directories(dobby PUBLIC
|
|
|
|
|
include
|
|
|
|
|
)
|
|
|
|
|
include
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
add_library(dobby_static STATIC
|
|
|
|
|
${SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
${SOURCE_FILE_LIST}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_include_directories(dobby_static PUBLIC
|
|
|
|
|
include
|
|
|
|
|
)
|
|
|
|
|
include
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set_target_properties(dobby_static
|
|
|
|
|
PROPERTIES OUTPUT_NAME "dobby"
|
|
|
|
|
)
|
|
|
|
|
PROPERTIES OUTPUT_NAME "dobby"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
set_target_properties(dobby
|
|
|
|
|
PROPERTIES
|
|
|
|
|
LINK_FLAGS "${linker_flags}"
|
|
|
|
|
COMPILE_FLAGS "${compiler_flags}"
|
|
|
|
|
)
|
|
|
|
|
PROPERTIES
|
|
|
|
|
LINK_FLAGS "${linker_flags}"
|
|
|
|
|
COMPILE_FLAGS "${compiler_flags}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set_target_properties(dobby_static
|
|
|
|
|
PROPERTIES
|
|
|
|
|
COMPILE_FLAGS "${compiler_flags}"
|
|
|
|
|
)
|
|
|
|
|
PROPERTIES
|
|
|
|
|
COMPILE_FLAGS "${compiler_flags}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_compile_definitions(dobby PRIVATE
|
|
|
|
|
"COMPILE_DEFINITIONS ${compile_definitions}"
|
|
|
|
|
)
|
|
|
|
|
"COMPILE_DEFINITIONS ${compile_definitions}"
|
|
|
|
|
)
|
|
|
|
|
target_compile_definitions(dobby_static PRIVATE
|
|
|
|
|
"COMPILE_DEFINITIONS ${compile_definitions}"
|
|
|
|
|
)
|
|
|
|
|
"COMPILE_DEFINITIONS ${compile_definitions}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (Private.Obfuscation)
|
|
|
|
|
set(linker_flags "${linker_flags} -Wl,-mllvm -Wl,-obfuscator-conf=all")
|
|
|
|
|
set(linker_flags "${linker_flags} -Wl,-mllvm -Wl,-obfuscator-conf=all")
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (SYSTEM.Android)
|
|
|
|
|
target_link_libraries(dobby log)
|
|
|
|
|
if (PROCESSOR.ARM)
|
|
|
|
|
set_target_properties(dobby
|
|
|
|
|
PROPERTIES
|
|
|
|
|
ANDROID_ARM_MODE arm
|
|
|
|
|
)
|
|
|
|
|
set_target_properties(dobby_static
|
|
|
|
|
PROPERTIES
|
|
|
|
|
ANDROID_ARM_MODE arm
|
|
|
|
|
)
|
|
|
|
|
endif ()
|
|
|
|
|
target_link_libraries(dobby log)
|
|
|
|
|
if (PROCESSOR.ARM)
|
|
|
|
|
set_target_properties(dobby
|
|
|
|
|
PROPERTIES
|
|
|
|
|
ANDROID_ARM_MODE arm
|
|
|
|
|
)
|
|
|
|
|
set_target_properties(dobby_static
|
|
|
|
|
PROPERTIES
|
|
|
|
|
ANDROID_ARM_MODE arm
|
|
|
|
|
)
|
|
|
|
|
endif ()
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
if (SYSTEM.Linux)
|
|
|
|
|
target_link_libraries(dobby dl)
|
|
|
|
|
target_link_libraries(dobby dl)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (DOBBY_BUILD_EXAMPLE AND (NOT DOBBY_BUILD_KERNEL_MODE))
|
|
|
|
|
add_subdirectory(examples)
|
|
|
|
|
add_subdirectory(examples)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
if (DOBBY_BUILD_TEST AND (NOT DOBBY_BUILD_KERNEL_MODE))
|
|
|
|
|
add_subdirectory(tests)
|
|
|
|
|
add_subdirectory(tests)
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
|
|
if (SYSTEM.Darwin AND (NOT DOBBY_BUILD_KERNEL_MODE))
|
|
|
|
|
include(cmake/platform/platform-darwin.cmake)
|
|
|
|
|
include(cmake/platform/platform-darwin.cmake)
|
|
|
|
|
endif ()
|