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$<$: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()