summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorLevent Kaya <levent@dev>2025-11-06 01:53:28 +0300
committerLevent Kaya <levent@dev>2025-11-06 01:53:28 +0300
commitd2bb3c90b4e8dffaabb2315df13a2dbd362bb1b7 (patch)
tree7dbf1bf2302ce14de55b6545507274c12c3d7d3b /cmake
parent2140653c001a2ac415fb717d48ca2b55ff2aa037 (diff)
[feature] basic demo screen
Diffstat (limited to 'cmake')
-rw-r--r--cmake/BoltDBGConfig.cmake.in31
-rw-r--r--cmake/CompilerWarnings.cmake96
2 files changed, 127 insertions, 0 deletions
diff --git a/cmake/BoltDBGConfig.cmake.in b/cmake/BoltDBGConfig.cmake.in
new file mode 100644
index 0000000..db91ae1
--- /dev/null
+++ b/cmake/BoltDBGConfig.cmake.in
@@ -0,0 +1,31 @@
+# BoltDBGConfig.cmake.in
+# Package configuration file for BoltDBG
+
+@PACKAGE_INIT@
+
+# Provide package version
+set(BOLTDBG_VERSION @PROJECT_VERSION@)
+
+# Check if dependencies are available
+include(CMakeFindDependencyMacro)
+
+# Find required dependencies
+find_dependency(OpenGL REQUIRED)
+
+# Optional: Find GLFW if needed
+# find_dependency(glfw3 3.3)
+
+# Include the targets file
+include("${CMAKE_CURRENT_LIST_DIR}/BoltDBGTargets.cmake")
+
+# Provide variables for users
+set(BoltDBG_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
+set(BoltDBG_LIBRARIES BoltDBG::Core)
+
+# Check all required components are available
+check_required_components(BoltDBG)
+
+# Print info message
+if(NOT BoltDBG_FIND_QUIETLY)
+ message(STATUS "Found BoltDBG ${BOLTDBG_VERSION}")
+endif() \ No newline at end of file
diff --git a/cmake/CompilerWarnings.cmake b/cmake/CompilerWarnings.cmake
new file mode 100644
index 0000000..662b142
--- /dev/null
+++ b/cmake/CompilerWarnings.cmake
@@ -0,0 +1,96 @@
+# cmake/CompilerWarnings.cmake
+# Comprehensive compiler warnings for C++
+
+function(set_project_warnings target_name)
+ set(MSVC_WARNINGS
+ /W4 # Baseline reasonable warnings
+ /w14242 # Conversion possible loss of data
+ /w14254 # Operator conversions
+ /w14263 # Member function does not override
+ /w14265 # Class has virtual functions but destructor is not virtual
+ /w14287 # Unsigned/negative constant mismatch
+ /we4289 # Loop variable used outside loop (error)
+ /w14296 # Expression is always true/false
+ /w14311 # Pointer truncation
+ /w14545 # Expression before comma evaluates to function
+ /w14546 # Function call before comma missing argument list
+ /w14547 # Operator before comma has no effect
+ /w14549 # Operator before comma has no effect
+ /w14555 # Expression has no effect
+ /w14619 # Unknown pragma warning
+ /w14640 # Thread-unsafe static member initialization
+ /w14826 # Conversion is sign-extended
+ /w14905 # Wide string literal cast
+ /w14906 # String literal cast
+ /w14928 # Illegal copy-initialization
+ /permissive- # Conformance mode
+ )
+
+ set(CLANG_WARNINGS
+ -Wall
+ -Wextra
+ -Wshadow
+ -Wnon-virtual-dtor
+ -Wold-style-cast
+ -Wcast-align
+ -Wunused
+ -Woverloaded-virtual
+ -Wpedantic
+ -Wconversion
+ -Wsign-conversion
+ -Wnull-dereference
+ -Wdouble-promotion
+ -Wformat=2
+ -Wimplicit-fallthrough
+ )
+
+ set(GCC_WARNINGS
+ ${CLANG_WARNINGS}
+ -Wmisleading-indentation
+ -Wduplicated-cond
+ -Wduplicated-branches
+ -Wlogical-op
+ -Wuseless-cast
+ )
+
+ if(MSVC)
+ set(PROJECT_WARNINGS_CXX ${MSVC_WARNINGS})
+ elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
+ set(PROJECT_WARNINGS_CXX ${CLANG_WARNINGS})
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ set(PROJECT_WARNINGS_CXX ${GCC_WARNINGS})
+ else()
+ message(WARNING "No compiler warnings set for CXX compiler: ${CMAKE_CXX_COMPILER_ID}")
+ endif()
+
+ # C warnings (similar but adapted)
+ set(CLANG_C_WARNINGS
+ -Wall
+ -Wextra
+ -Wshadow
+ -Wcast-align
+ -Wunused
+ -Wpedantic
+ -Wconversion
+ -Wsign-conversion
+ -Wnull-dereference
+ -Wdouble-promotion
+ -Wformat=2
+ -Wimplicit-fallthrough
+ )
+
+ set(GCC_C_WARNINGS ${CLANG_C_WARNINGS})
+
+ if(CMAKE_C_COMPILER_ID MATCHES ".*Clang")
+ set(PROJECT_WARNINGS_C ${CLANG_C_WARNINGS})
+ elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(PROJECT_WARNINGS_C ${GCC_C_WARNINGS})
+ endif()
+
+ target_compile_options(${target_name}
+ PRIVATE
+ $<$<COMPILE_LANGUAGE:CXX>:${PROJECT_WARNINGS_CXX}>
+ $<$<COMPILE_LANGUAGE:C>:${PROJECT_WARNINGS_C}>
+ )
+
+endfunction() \ No newline at end of file