diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 296 |
1 files changed, 12 insertions, 284 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 794bb0c..afad967 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,299 +1,27 @@ cmake_minimum_required( VERSION - 3.20 + 3.19 ) + +# Project: project( dux - VERSION - 29 - DESCRIPTION - "General purpose library." - HOMEPAGE_URL - "https://mandelbrot.dk/delta/dux" - LANGUAGES - CXX -) -set( - CMAKE_CXX_STANDARD - 23 -) - -# Options: -option( - DUX_ENABLE_DEMO - "Build the demo program." -) -option( - DUX_ENABLE_SYS - "Enable the system extensions." -) -option( - DUX_GFXPROTO - "Set the graphics protocol: \"windx\" (WinAPI/DirectX), \"wlgl\" (Wayland/OpenGL), \"wlvk\" (Wayland/Vulkan), \"xgl\" (X/OpenGL), \"xvk\" (X/Vulkan)" -) -option( - DUX_SFXPROTO - "Set the sound protocol: \"dx\" (DirectX), \"pa\" (PulseAudio), \"pw\" (PipeWire)" -) - -# Disable in-souce builds: -if( - "${PROJECT_BINARY_DIR}" - STREQUAL - "${PROJECT_SOURCE_DIR}" -) - message( - FATAL_ERROR - "In-source building is not allowed." - ) -endif() - -# Compiler Settings: -message( - STATUS - "Enabling colour output for Clang or GCC..." -) -if( - "${CMAKE_CXX_COMPILER_ID}" - STREQUAL - "Clang" -) - add_compile_options( - "-fcolor-diagnostics" - ) -elseif( - "${CMAKE_CXX_COMPILER_ID}" - STREQUAL - "GNU" -) - add_compile_options ( - "-fdiagnostics-color=always" - ) -endif() -message( - STATUS - "Enabling compile warnings..." -) -if( - MSVC -) - add_compile_options( - "/W4" - "/WX" - ) -else() - add_compile_options( - "-pedantic-errors" - "-Wfatal-errors" - "-Wall" - "-Wconversion" - "-Werror" - "-Wextra" - "-Wunreachable-code" - "-Wunused" - ) - if( - "${CMAKE_CXX_COMPILER_ID}" - STREQUAL - "Clang" - ) - add_compile_options( - "-Wnewline-eof" - ) - endif() -endif() -if( - CMAKE_BUILD_TYPE - MATCHES - Release ) - message( - STATUS - "Setting optimisation level..." - ) - if( - MSVC - ) - add_compile_options( - "/Os" - ) - else() - add_compile_options( - "-Os" - ) - endif() -endif() -# Include directories: -include_directories( - "${PROJECT_SOURCE_DIR}/include" +# Constants: +set( + DUX_VERSION + 30.0 ) -# dux settings: -add_library( - dux - SHARED - "src/dux/_setsiginthandl.cc" - "src/dux/_siginthandl.cc" - "src/dux/_sigtocsig.cc" - "src/dux/abrt.cc" - "src/dux/endgfx.cc" - "src/dux/exit.cc" - "src/dux/getenv.cc" - "src/dux/goatmaster.cc" - "src/dux/initgfx.cc" - "src/dux/qexit.cc" - "src/dux/raise.cc" - "src/dux/sighandl.cc" - "src/dux/sleep.cc" - "src/dux/trap.cc" - "src/dux/unreach.cc" - "src/dux/win.cc" -) -if( - UNIX -) - set_property( - TARGET - dux - APPEND - PROPERTY - SOURCES - "src/dux/_freepthrdhandl.cc" - "src/dux/_getpthrdhandl.cc" - "src/dux/_pthrdcrt.cc" - "src/dux/_pthrdjoin.cc" - ) -endif() -target_compile_definitions( - dux - PRIVATE - _XOPEN_SOURCE=700 -) -if( - DUX_GFXPROTO - STREQUAL - "wlgl" -) - message( - STATUS - "Using Wayland/OpenGL for graphics." - ) - target_compile_definitions( - dux - PRIVATE - dux_gfxproto_wlgl - ) -elseif( - DUX_GFXPROTO - STREQUAL - "wlvk" -) - message( - STATUS - "Using Wayland/Vulkan for graphics." - ) - target_compile_definitions( - dux - PRIVATE - dux_gfxproto_wlvk - ) -elseif( - DUX_GFXPROTO - STREQUAL - "xgl" -) - message( - STATUS - "Using X/OpenGL for graphics." - ) - target_compile_definitions( - dux - PRIVATE - dux_gfxproto_xgl - ) -elseif( - DUX_GFXPROTO - STREQUAL - "xvk" +# Subdirectories +add_subdirectory( + "dux" ) - message( - STATUS - "Using X/Vulkan for graphics." - ) - target_compile_definitions( - dux - PRIVATE - dux_gfxproto_xvk - ) -else() - message( - FATAL_ERROR - "Graphics system undefined (or invalid)! Set option \"DUX_GFXPROTO\" to: \"wlgl\" (Wayland/OpenGL), \"wlvk\" (Wayland/Vulkan), \"xgl\" (X/OpenGL), or \"xvk\" (X/Vulkan)!" - ) -endif() -if( - DUX_GFXPROTO - STREQUAL - "wlgl" - OR - DUX_GFXPROTO - STREQUAL - "wlvk" -) - target_link_libraries( - dux - wayland-client - ) -elseif( - DUX_GFXPROTO - STREQUAL - "xgl" - OR - DUX_GFXPROTO - STREQUAL - "xvk" -) - target_link_libraries( - dux - xcb - ) - if( - DUX_GFXPROTO - STREQUAL - "xgl" - ) - target_link_libraries( - dux - X11-xcb - ) - endif() -endif() -if( - NOT - WIN32 -) - target_link_libraries( - dux - dl - pthread - ) -endif() - -# Demo settings: if( DUX_ENABLE_DEMO ) - add_executable( - demo - "dux-demo/main.cc" - ) - add_dependencies( - demo - dux - ) - target_link_libraries( - demo - dux + add_subdirectory( + "dux-demo" ) endif() |