Files
LookingGlass/repos/gui/CMakeLists.txt
Geoffrey McRae 57f18d7e80 [client] windows: add native clang-cl build
Build the Windows client against the MSVC ABI while retaining clang
language support. Use vcpkg for ANGLE and libsamplerate, and build
MsQuic with its bundled static OpenSSL.
2026-11-06 14:40:25 +11:00

80 lines
2.1 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(lg_gui LANGUAGES CXX)
add_library(lg_gui STATIC
cimgui/cimgui.cpp
cimgui/imgui/imgui.cpp
cimgui/imgui/imgui_draw.cpp
cimgui/imgui/imgui_tables.cpp
cimgui/imgui/imgui_widgets.cpp
cimplot/cimplot.cpp
cimplot/implot/implot.cpp
cimplot/implot/implot_items.cpp
)
if(MSVC)
target_compile_options(lg_gui PRIVATE /fp:precise)
set_source_files_properties(cimgui/cimgui.cpp PROPERTIES
COMPILE_OPTIONS "/clang:-Wno-error=unused-function"
)
set_source_files_properties(cimplot/cimplot.cpp PROPERTIES
COMPILE_OPTIONS
"/clang:-Wno-error=array-bounds;/clang:-Wno-error=unused-function"
)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(lg_gui PRIVATE "-fno-fast-math")
set_source_files_properties(cimgui/cimgui.cpp PROPERTIES
COMPILE_OPTIONS "-Wno-error=unused-function"
)
set_source_files_properties(cimplot/cimplot.cpp PROPERTIES
COMPILE_OPTIONS
"-Wno-error=array-bounds;-Wno-error=unused-function"
)
endif()
target_compile_definitions(lg_gui PUBLIC
IMGUI_DISABLE_OBSOLETE_FUNCTIONS=1
IMGUI_USE_WCHAR32
IMGUI_USER_CONFIG="../cimconfig.h"
)
if(ENABLE_OPENGL)
target_sources(lg_gui PRIVATE
cimgui/imgui/backends/imgui_impl_opengl2.cpp
)
target_compile_definitions(lg_gui PUBLIC CIMGUI_USE_OPENGL2=1)
endif()
if(ENABLE_EGL)
set(IMGUI_OPENGL3_BACKEND
cimgui/imgui/backends/imgui_impl_opengl3.cpp
)
target_sources(lg_gui PRIVATE ${IMGUI_OPENGL3_BACKEND})
set_source_files_properties(${IMGUI_OPENGL3_BACKEND} PROPERTIES
COMPILE_DEFINITIONS IMGUI_IMPL_OPENGL_ES3
)
target_compile_definitions(lg_gui PUBLIC CIMGUI_USE_OPENGL3=1)
endif()
if(WIN32)
target_compile_definitions(lg_gui PUBLIC
IMGUI_IMPL_API=extern\t"C"\t__declspec\(dllexport\)
)
else()
target_compile_definitions(lg_gui PUBLIC IMGUI_IMPL_API=extern\t"C"\t)
endif()
target_include_directories(lg_gui PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/cimgui"
"${CMAKE_CURRENT_SOURCE_DIR}/cimgui/imgui"
"${CMAKE_CURRENT_SOURCE_DIR}/cimplot"
"${CMAKE_CURRENT_SOURCE_DIR}/cimplot/implot"
)
set_target_properties(lg_gui PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)