Rename the injector and package it with an embedded payload for Windows, Linux, and macOS x64/ARM64. Add a core-only ImGui native build, multi-platform CI and release packaging, and shared per-user storage with legacy config migration.
59 lines
2.0 KiB
CMake
59 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(openprestige_imgui LANGUAGES CXX)
|
|
|
|
file(GLOB GENERATED CONFIGURE_DEPENDS "${CORE_JNI_DIR}/imgui_*.cpp")
|
|
add_library(imgui-java64 SHARED
|
|
${GENERATED}
|
|
"${CORE_JNI_DIR}/imgui.cpp"
|
|
"${CORE_JNI_DIR}/imgui_draw.cpp"
|
|
"${CORE_JNI_DIR}/imgui_tables.cpp"
|
|
"${CORE_JNI_DIR}/imgui_widgets.cpp"
|
|
"${CORE_JNI_DIR}/imgui_demo.cpp"
|
|
"${CORE_JNI_DIR}/jni_jvm.cpp"
|
|
"${CORE_JNI_DIR}/jni_common.cpp"
|
|
"${CORE_JNI_DIR}/jni_binding_struct.cpp"
|
|
"${CORE_JNI_DIR}/jni_callbacks.cpp"
|
|
"${CORE_JNI_DIR}/jni_assertion.cpp"
|
|
"${CORE_JNI_DIR}/jni_internal.cpp"
|
|
)
|
|
target_compile_features(imgui-java64 PRIVATE cxx_std_17)
|
|
if(WIN32)
|
|
set(JNI_OS win32)
|
|
elseif(APPLE)
|
|
set(JNI_OS mac)
|
|
else()
|
|
set(JNI_OS linux)
|
|
endif()
|
|
target_include_directories(imgui-java64 PRIVATE
|
|
"${CORE_JNI_DIR}"
|
|
"${CORE_JNI_DIR}/jni-headers"
|
|
"${CORE_JNI_DIR}/jni-headers/${JNI_OS}"
|
|
)
|
|
target_compile_definitions(imgui-java64 PRIVATE IMGUI_DISABLE_DEMO_WINDOWS)
|
|
set_target_properties(imgui-java64 PROPERTIES
|
|
CXX_VISIBILITY_PRESET hidden
|
|
VISIBILITY_INLINES_HIDDEN YES
|
|
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>"
|
|
LIBRARY_OUTPUT_DIRECTORY "${CORE_OUTPUT_DIR}"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CORE_OUTPUT_DIR}"
|
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CORE_OUTPUT_DIR}"
|
|
)
|
|
if(MSVC)
|
|
target_compile_options(imgui-java64 PRIVATE /O1 /Gy /GL /utf-8)
|
|
target_link_options(imgui-java64 PRIVATE /LTCG /OPT:REF /OPT:ICF)
|
|
else()
|
|
target_compile_options(imgui-java64 PRIVATE -Os -ffunction-sections -fdata-sections)
|
|
if(APPLE)
|
|
target_link_options(imgui-java64 PRIVATE -Wl,-dead_strip)
|
|
else()
|
|
target_link_options(imgui-java64 PRIVATE -Wl,--gc-sections -s)
|
|
endif()
|
|
if(MINGW)
|
|
target_link_options(imgui-java64 PRIVATE -static-libgcc -static-libstdc++)
|
|
endif()
|
|
endif()
|
|
if(WIN32)
|
|
set_target_properties(imgui-java64 PROPERTIES PREFIX "")
|
|
target_link_libraries(imgui-java64 PRIVATE imm32 user32)
|
|
endif()
|