Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ project(SHADERed)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -ggdb")

# source code
set(SOURCES
main.cpp
Expand Down Expand Up @@ -109,7 +111,6 @@ set(SOURCES
libs/pugixml/src/pugixml.cpp
libs/ShaderExpressionParser/Parser.cpp
libs/ShaderExpressionParser/Tokenizer.cpp
libs/misc/ImFileDialog.cpp
libs/misc/dds.c
)

Expand Down Expand Up @@ -161,6 +162,9 @@ find_package(GLEW REQUIRED)
# glm
find_package(GLM REQUIRED)

# ImFileDialog
add_subdirectory(libs/ImFileDialog)

# SpvGenTwo
add_subdirectory(libs/SpvGenTwo)

Expand Down Expand Up @@ -205,24 +209,25 @@ set_target_properties(SHADERed PROPERTIES

# include directories
target_include_directories(SHADERed PRIVATE ${SDL2_INCLUDE_DIRS} ${GLM_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS} ${ASSIMP_INCLUDE_DIR})
target_include_directories(SHADERed PRIVATE src libs libs/glslang libs/SPIRV-VM/inc)
target_include_directories(SHADERed PRIVATE src libs libs/glslang libs/SPIRV-VM/inc libs/ImFileDialog)
target_include_directories(SHADERed PUBLIC libs/ImFileDialog/libs)
if (NOT WIN32)
target_include_directories(SHADERed PRIVATE ${GTK_INCLUDE_DIRS})
endif()

# link libraries
target_link_libraries(SHADERed ${OPENGL_LIBRARIES} ${GLM_LIBRARY_DIRS} glslang SPIRV SPIRVVM assimp::assimp SpvGenTwoLib SpvGenTwoCommon cppdap)
target_link_libraries(SHADERed ${OPENGL_LIBRARIES} ${GLM_LIBRARY_DIRS} glslang SPIRV SPIRVVM assimp::assimp SpvGenTwoLib SpvGenTwoCommon cppdap ImFileDialog)

if(WIN32)
# link specific win32 libraries
target_link_libraries(SHADERed GLEW::GLEW SDL2::SDL2 SDL2::SDL2main)

elseif(UNIX AND NOT APPLE)
# link linux libraries
target_link_libraries(SHADERed ${GLEW_LIBRARIES} ${SDL2_LIBRARIES} ${GTK_LIBRARIES} ${CMAKE_DL_LIBS})
target_link_libraries(SHADERed ${GLEW_LIBRARIES} ${GTK_LIBRARIES} ${CMAKE_DL_LIBS})

if (NOT DONT_LINK_FILESYSTEM)
target_link_libraries(SHADERed stdc++fs pthread m dl)
target_link_libraries(SHADERed pthread m dl)
endif()
elseif(APPLE)
target_link_libraries(SHADERed GLEW::GLEW ${SDL2_LIBRARIES} ${GTK_LIBRARIES} ${CMAKE_DL_LIBS})
Expand Down
40 changes: 40 additions & 0 deletions libs/ImFileDialog/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

# ImFileDialog
*.cmake
Makefile
imgui.ini
ImFileDialogExample
CMakeCache.txt
CMakeFiles
74 changes: 74 additions & 0 deletions libs/ImFileDialog/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 17)
project(ImFileDialog)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIFD_USE_OPENGL -g -ggdb")

# cmake toolchain
if(CMAKE_TOOLCHAIN_FILE)
include(${CMAKE_TOOLCHAIN_FILE})
endif(CMAKE_TOOLCHAIN_FILE)

# pkg
if (UNIX)
find_package(PkgConfig REQUIRED)
endif()

# sdl2
if(WIN32 OR APPLE)
find_package(SDL2 REQUIRED)
endif()

# opengl
set(OpenGL_GL_PREFERENCE GLVND CACHE STRING "Linux only: if GLVND, use the vendor-neutral GL libraries (default). If LEGACY, use the legacy ones (might be necessary to have working optirun/primusrun)")
set_property(CACHE OpenGL_GL_PREFERENCE PROPERTY STRINGS GLVND LEGACY)
find_package(OpenGL REQUIRED)

# glew
find_package(GLEW REQUIRED)

add_library(ImFileDialog SHARED
ImFileDialog.cpp
libs/imgui/imgui.cpp
libs/imgui/imgui_widgets.cpp
libs/imgui/imgui_draw.cpp
libs/imgui/imgui_tables.cpp
libs/imgui/backends/imgui_impl_opengl3.cpp
libs/imgui/backends/imgui_impl_sdl2.cpp
libs/apifilesystem/filesystem.cpp
)

# properties
set_target_properties(ImFileDialog PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES
)

# include directories
target_include_directories(ImFileDialog PRIVATE ${SDL2_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS})
target_include_directories(ImFileDialog PRIVATE libs libs/imgui)

# link libraries
target_link_libraries(ImFileDialog ${OPENGL_LIBRARIES})

if(WIN32)
# link specific win32 libraries
target_link_libraries(ImFileDialog GLEW::GLEW SDL2::SDL2 SDL2::SDL2main shell32)

elseif(UNIX AND NOT APPLE)
# link non-apple unix libraries
add_subdirectory(libs/lunasvg)
include_directories(libs/lunasvg/include /usr/include/SDL2 /usr/local/include/SDL2)
find_package(PkgConfig REQUIRED)
pkg_search_module(PKG_SDL2 REQUIRED IMPORTED_TARGET sdl2)
pkg_search_module(PKG_GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_search_module(PKG_GIO2 REQUIRED IMPORTED_TARGET gio-2.0)
pkg_search_module(PKG_GLIB2 REQUIRED IMPORTED_TARGET glib-2.0)
if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
target_link_libraries(ImFileDialog lunasvg PkgConfig::PKG_SDL2 PkgConfig::PKG_GTK3 PkgConfig::PKG_GIO2 PkgConfig::PKG_GLIB2 ${GLEW_LIBRARIES} ${CMAKE_DL_LIBS} kvm pthread)
else()
target_link_libraries(ImFileDialog lunasvg PkgConfig::PKG_SDL2 PkgConfig::PKG_GTK3 PkgConfig::PKG_GIO2 PkgConfig::PKG_GLIB2 ${GLEW_LIBRARIES} ${CMAKE_DL_LIBS} pthread)
endif()
elseif(APPLE)
target_link_libraries(ImFileDialog GLEW::GLEW ${SDL2_LIBRARIES} ${CMAKE_DL_LIBS})
endif()
Loading