Skip to content

Commit

Permalink
[ADD] : add Android case
Browse files Browse the repository at this point in the history
  • Loading branch information
aiekick committed Feb 21, 2024
1 parent 531b2b1 commit a9e1463
Show file tree
Hide file tree
Showing 17 changed files with 1,811 additions and 1,174 deletions.
104 changes: 76 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,18 @@ option(USE_TEST "Enable tests" ON)
option(USE_STD_FILESYSTEM "Enable std::filesystem use for path and ImGuiFileDialog" OFF)
option(USE_BOOST_DEMO_FILESYSTEM "Enable the demo of custom filesystem here with boost" OFF)

if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")

endif()

if (UNIX)
option(USE_LEAK_SANITIZER "Enable the Leak Sanitizer" OFF)
endif()

include(cmake/3rdparty.cmake)

if (USE_BOOST_DEMO_FILESYSTEM)
add_definitions(-DCUSTOM_FILESYSTEM_INCLUDE="${CMAKE_SOURCE_DIR}/FileSystemBoost.hpp")
add_definitions(-DCUSTOM_FILESYSTEM_INCLUDE="${CMAKE_CURRENT_SOURCE_DIR}/FileSystemBoost.hpp")
endif()

if(MSVC)
Expand All @@ -39,40 +43,56 @@ endif ()

add_definitions(${GLFW_DEFINITIONS})
add_definitions(-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS)
add_definitions(-DCUSTOM_IMGUIFILEDIALOG_CONFIG="${CMAKE_SOURCE_DIR}/CustomImGuiFileDialogConfig.h")
add_definitions(-DCUSTOM_IMWIDGETS_CONFIG="${CMAKE_SOURCE_DIR}/CustomImWidgetsConfig.h")
add_definitions(-DCUSTOM_IMGUIFILEDIALOG_CONFIG="${CMAKE_CURRENT_SOURCE_DIR}/CustomImGuiFileDialogConfig.h")
add_definitions(-DCUSTOM_IMWIDGETS_CONFIG="${CMAKE_CURRENT_SOURCE_DIR}/CustomImWidgetsConfig.h")
add_definitions(-D_CRT_SECURE_NO_WARNINGS)

if (USE_NEW_IMGUI_KEY_SYSTEM)
add_definitions(-DIMGUI_DISABLE_OBSOLETE_KEYIO)
endif()

file(GLOB MAIN_SOURCES ${CMAKE_SOURCE_DIR}/main.cpp)
file(GLOB CUSTOM_SOURCES
${CMAKE_SOURCE_DIR}/CustomImGuiFileDialogConfig.h
${CMAKE_SOURCE_DIR}/CustomImWidgetsConfig.h)
${CMAKE_CURRENT_SOURCE_DIR}/CustomImGuiFileDialogConfig.h
${CMAKE_CURRENT_SOURCE_DIR}/CustomImWidgetsConfig.h)

if (USE_BOOST_DEMO_FILESYSTEM)
file(GLOB BOOST_SOURCES ${CMAKE_SOURCE_DIR}/FileSystemBoost.hpp)
file(GLOB BOOST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/FileSystemBoost.hpp)
source_group(src\\Boost FILES ${BOOST_SOURCES})
elseif (USE_STD_FILESYSTEM)
add_definitions(-DUSE_STD_FILESYSTEM)
endif()

file(GLOB RES_SOURCES
${CMAKE_SOURCE_DIR}/CustomFont.cpp
${CMAKE_SOURCE_DIR}/CustomFont.h
${CMAKE_SOURCE_DIR}/Roboto_Medium.cpp
${CMAKE_SOURCE_DIR}/Roboto_Medium.h)
${CMAKE_CURRENT_SOURCE_DIR}/CustomFont.cpp
${CMAKE_CURRENT_SOURCE_DIR}/CustomFont.h
${CMAKE_CURRENT_SOURCE_DIR}/Roboto_Medium.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Roboto_Medium.h)
file(GLOB RES_WIDGETS
${CMAKE_SOURCE_DIR}/ImWidgets.cpp
${CMAKE_SOURCE_DIR}/ImWidgets.h)
${CMAKE_CURRENT_SOURCE_DIR}/ImWidgets.cpp
${CMAKE_CURRENT_SOURCE_DIR}/ImWidgets.h)
file(GLOB RES_DEMO_DIALOG
${CMAKE_CURRENT_SOURCE_DIR}/DemoDialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/DemoDialog.h)

if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
file(GLOB MAIN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/mainAndroid.cpp)
file(GLOB IMGUIIMPL_SOURCES
${CMAKE_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_glfw.cpp
${CMAKE_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_glfw.h
${CMAKE_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_opengl3.cpp
${CMAKE_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_opengl3.h)
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_android.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_android.h
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_opengl3.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_opengl3.h
${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
else()
file(GLOB MAIN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/mainWinLinuxMacos.cpp)
file(GLOB IMGUIIMPL_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_glfw.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_glfw.h
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_opengl3.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/imgui/backends/imgui_impl_opengl3.h)
endif()

source_group(main FILES ${MAIN_SOURCES})
source_group(src\\DemoDialog FILES ${RES_DEMO_DIALOG})
source_group(src\\Custom FILES ${CUSTOM_SOURCES})
source_group(src\\ImGuiImpl FILES ${IMGUIIMPL_SOURCES})
source_group(src\\Res FILES ${RES_SOURCES})
Expand All @@ -88,7 +108,7 @@ include_directories(
${PLOG_INCLUDE_DIR}
${GLFW_INCLUDE_DIR}
${GLAD_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${IMGUI_INCLUDE_DIR}
${IMWIDGETS_INCLUDE_DIR}
${OPENGL_INCLUDE_DIR}
Expand All @@ -104,26 +124,38 @@ if (USE_LEAK_SANITIZER)
add_link_options(-fexceptions -pthread -ldl -lGL -Wall -g -fsanitize=undefined -fno-sanitize-recover -fsanitize=float-cast-overflow -fsanitize=leak -fsanitize=address -fsanitize-address-use-after-scope -fstack-protector -fstack-protector-all)
endif()

add_subdirectory(${CMAKE_SOURCE_DIR}/ImGuiFileDialog)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ImGuiFileDialog)

target_link_libraries(ImGuiFileDialog PRIVATE
${IMGUI_LIBRARIES}
${IMWIDGETS_LIBRARIES}
${BOOST_FILESYSTEM_LIBRARIES}
)

if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
add_library(${PROJECT} SHARED
${RES_SOURCES}
${RES_WIDGETS}
${MAIN_SOURCES}
${BOOST_SOURCES}
${CUSTOM_SOURCES}
${RES_DEMO_DIALOG}
${IMGUIIMPL_SOURCES})
else()
add_executable(${PROJECT}
MACOSX_BUNDLE
${RES_SOURCES}
${RES_WIDGETS}
${MAIN_SOURCES}
${BOOST_SOURCES}
${CUSTOM_SOURCES}
${IMGUIIMPL_SOURCES}
)
${RES_DEMO_DIALOG}
${IMGUIIMPL_SOURCES})
endif()


if(UNIX)
target_compile_options(${PROJECT} PUBLIC "-Wno-unknown-pragmas")
target_compile_options(${PROJECT} PUBLIC -Wno-unknown-pragmas)
endif()

if (APPLE)
Expand All @@ -137,9 +169,11 @@ if (APPLE)
MACOSX_BUNDLE_SHORT_VERSION_STRING ""
MACOSX_BUNDLE_LONG_VERSION_STRING ""
##MACOSX_BUNDLE_ICON_FILE icon.icns
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/MacOSXBundleInfo.plist.in")
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/MacOSXBundleInfo.plist.in")
elseif(WIN32)
set_target_properties(${PROJECT} PROPERTIES OUTPUT_NAME "${PROJECT}_Win32")
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Android")

elseif(UNIX)
set_target_properties(${PROJECT} PROPERTIES OUTPUT_NAME "${PROJECT}_Unix")
endif()
Expand All @@ -164,25 +198,39 @@ endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}")
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}")
install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_PREFIX})

if(${CMAKE_SYSTEM_NAME} STREQUAL "Android")
target_link_libraries(${PROJECT} PRIVATE
${IMGUI_LIBRARIES}
${IMWIDGETS_LIBRARIES}
${BOOST_FILESYSTEM_LIBRARIES}
ImGuiFileDialog
android
EGL
GLESv3
log)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../..
${ANDROID_NDK}/sources/android/native_app_glue)
else()
target_link_libraries(${PROJECT} PRIVATE
${OPENGL_LIBRARIES}
${GLFW_LIBRARIES}
${GLAD_LIBRARIES}
${IMGUI_LIBRARIES}
${IMWIDGETS_LIBRARIES}
ImGuiFileDialog
)
ImGuiFileDialog)
endif()

set_target_properties(ImGuiFileDialog PROPERTIES FOLDER Lib)

target_include_directories(ImGuiFileDialog PRIVATE
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)

if (USE_TEST)
enable_testing()
add_subdirectory(${CMAKE_SOURCE_DIR}/tests)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests)
endif()
Loading

0 comments on commit a9e1463

Please sign in to comment.