From f97d16073a3dcefa549d1c581bb26e84fd2aac46 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sat, 21 Sep 2019 23:52:34 -0700 Subject: [PATCH] Add imgui build to cmake --- CMakeLists.txt | 1 + imgui/CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++++ imgui/CMakeLists.txt.in | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 imgui/CMakeLists.txt create mode 100644 imgui/CMakeLists.txt.in diff --git a/CMakeLists.txt b/CMakeLists.txt index c449a5912b..7a54492009 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,6 +128,7 @@ if (NOT WITHOUT_CSCORE) endif() if (WITH_SIMULATION_MODULES AND NOT USE_EXTERNAL_HAL) + add_subdirectory(imgui) add_subdirectory(simulation) endif() diff --git a/imgui/CMakeLists.txt b/imgui/CMakeLists.txt new file mode 100644 index 0000000000..795de3868b --- /dev/null +++ b/imgui/CMakeLists.txt @@ -0,0 +1,35 @@ +# Download and unpack imgui at configure time +configure_file(CMakeLists.txt.in imgui-download/CMakeLists.txt) + +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/imgui-download ) +if(result) + message(FATAL_ERROR "CMake step for imgui failed: ${result}") +endif() +execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/imgui-download ) +if(result) + message(FATAL_ERROR "Build step for imgui failed: ${result}") +endif() + +# Add imgui directly to our build. +set(SAVE_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) +set(BUILD_SHARED_LIBS OFF) +add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/glfw-src + ${CMAKE_CURRENT_BINARY_DIR}/glfw-build + EXCLUDE_FROM_ALL) +set_property(TARGET glfw PROPERTY POSITION_INDEPENDENT_CODE ON) +set(BUILD_SHARED_LIBS ${SAVE_BUILD_SHARED_LIBS}) +add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/gl3w-src + ${CMAKE_CURRENT_BINARY_DIR}/gl3w-build + EXCLUDE_FROM_ALL) + +set(imgui_srcdir ${CMAKE_CURRENT_BINARY_DIR}/imgui-src) +file(GLOB imgui_sources ${imgui_srcdir}/*.cpp) +add_library(imgui STATIC ${imgui_sources} ${imgui_srcdir}/examples/imgui_impl_glfw.cpp ${imgui_srcdir}/examples/imgui_impl_opengl3.cpp) +target_link_libraries(imgui PUBLIC gl3w glfw) +target_include_directories(imgui PUBLIC "$" "$") + +set_property(TARGET imgui PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/imgui/CMakeLists.txt.in b/imgui/CMakeLists.txt.in new file mode 100644 index 0000000000..c2ff9e2d46 --- /dev/null +++ b/imgui/CMakeLists.txt.in @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 2.8.2) + +project(imgui-download NONE) + +include(ExternalProject) +ExternalProject_Add(glfw3 + GIT_REPOSITORY https://github.com/glfw/glfw.git + GIT_TAG 7105ff2dfd004a46bd732c1d0c9f461bae6d51b3 + SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/glfw-src" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/glfw-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) +ExternalProject_Add(gl3w + GIT_REPOSITORY https://github.com/skaslev/gl3w + GIT_TAG 7729692af8a2322cddb636b90393a42c130b1c85 + SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/gl3w-src" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/gl3w-build" + INSTALL_COMMAND "" + TEST_COMMAND "" +) +ExternalProject_Add(imgui + GIT_REPOSITORY https://github.com/ocornut/imgui.git + GIT_TAG v1.72b + SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/imgui-src" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/imgui-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +)